/* ==========================================================================
   T2S Ibérica — Redesign (handoff Claude Design · T2Siberica.dc.html)
   Sistema de classes derivat del prototip. Tots els valors (colors, mides,
   espaiats, transicions) surten del handoff: no s'inventa res.
   Tipografia: Montserrat (regla fixa del projecte).
   ========================================================================== */

.t2s-rd {
    /* --- Color (del handoff) --- */
    --rd-ink: #15171C;          /* text principal / fons foscos */
    --rd-paper: #f7f7f7;        /* fons pàgina */
    --rd-white: #fff;
    --rd-brand: #b70e0c;        /* accent de marca */
    --rd-brand-hover: #8f0a09;
    --rd-card-dark: #1E2127;    /* card sobre fons fosc */
    --rd-card-darker: #0F1115;  /* mèdia de card fosca */
    --rd-txt-2: #4A4D54;        /* cos de text secundari */
    --rd-txt-3: #6B6E76;        /* text terciari */
    --rd-txt-4: #9A9DA4;        /* labels de columna */
    --rd-line: rgba(0, 0, 0, .07);
    --rd-line-2: rgba(0, 0, 0, .08);
    --rd-line-dark: rgba(255, 255, 255, .1);

    /* --- Hi-vis (swatches de producte) --- */
    --rd-hv-yellow: #E4E600;
    --rd-hv-orange: #FF5B00;
    --rd-hv-navy: #1C2433;
    --rd-hv-grey: #6B7280;

    /* --- Layout: ample ÚNIC de tota la web (regla fixa del projecte) --- */
    --rd-max: 1520px;
    --rd-gutter: 28px;
    --rd-section-y: 72px;
    /* Alçada de la capçalera fixa + aire: el que s'enganxa en fer scroll
       (índex de l'article, filtres, galeria) no ha de tocar el menú. */
    --rd-sticky-top: 166px;

    /* --- Escala tipogràfica (9 escalons; abans 34 mides soltes) --- */
    --fs-display: clamp(30px, 3.6vw, 46px); /* heros, cabeceres, títol de fitxa */
    --fs-hero: clamp(30px, 3.2vw, 42px);    /* titular de hero (3 línies) i el seu bessó */
    --fs-h1: 32px;      /* titulars de secció */
    --fs-h2: 24px;      /* subtítols, CTA del bloc SEO */
    --fs-h3: 19px;      /* cards de gama, text SEO, FAQ */
    --fs-lg: 16px;      /* entradetes, subtítol del hero */
    --fs-base: 15px;    /* cos de text */
    --fs-sm: 13.5px;    /* extractes, botons, microcopy */
    --fs-xs: 12px;      /* taglines, enllaços de menú */
    --fs-2xs: 10.5px;   /* etiquetes, menú principal */
    /* Xifres destacades (scores i mètriques): rol propi, pes 600 */
    --fs-metric: 36px;
    --fs-metric-xl: 56px;

    /* --- Tracking derivat de la mida: negatiu en display, creixent en
           versaletes com més petita és la lletra (abans 18 valors) --- */
    --tr-display: -.02em;   /* 30–46px */
    --tr-tight: -.01em;     /* 24–32px */
    --tr-snug: -.005em;     /* 19px i caixa baixa editorial */
    --tr-normal: 0;         /* cos de text */
    --tr-caps-h3: .035em;  /* versaletes 17–20px (titulars de card) */
    --tr-caps-lg: .04em;    /* versaletes 15–16px */
    --tr-caps: .07em;       /* versaletes 13–14px */
    --tr-caps-sm: .11em;    /* versaletes 12px */
    --tr-caps-wide: .14em;  /* accent volgudament airejat */

    /* --- Interlineat (7 escalons; abans 20) --- */
    --lh-display: 1;
    --lh-tight: 1.08;
    --lh-snug: 1.2;
    --lh-normal: 1.35;
    --lh-relaxed: 1.55;
    --lh-body: 1.65;
    --lh-loose: 1.85;

    font-family: 'Montserrat', system-ui, sans-serif;
    color: var(--rd-ink);
    background: var(--rd-paper);
    -webkit-font-smoothing: antialiased;
}

/* El <main> del rediseny va sobre paper, però el <body> és blanc: quedava una
 * franja blanca "solta" entre l'última secció i el peu. El fons del document
 * ha de ser el mateix paper a les vistes migrades. */
body.t2s-rd-page { background: #f7f7f7; }

.t2s-rd *,
.t2s-rd *::before,
.t2s-rd *::after { box-sizing: border-box; }

.t2s-rd img { display: block; max-width: 100%; }
.t2s-rd a { color: var(--rd-brand); text-decoration: none; }
.t2s-rd a:hover { color: var(--rd-brand-hover); }
.t2s-rd button { font-family: 'Montserrat', system-ui, sans-serif; }

/* Els components amb color propi han de guanyar al color d'enllaç per defecte
 * (si no, un <a class="rd-btn…"> heretaria el vermell de marca i quedaria
 * text vermell sobre fons vermell). Especificitat: .t2s-rd + classe. */
.t2s-rd .rd-btn--white { color: var(--rd-ink); }
.t2s-rd .rd-btn--white:hover { color: var(--rd-ink); }
.t2s-rd .rd-btn--ghost,
.t2s-rd .rd-btn--ghost:hover { color: var(--rd-white); }
.t2s-rd .rd-btn-quote,
.t2s-rd .rd-btn-quote:hover { color: var(--rd-white); }
.t2s-rd .rd-cta__btn { color: var(--rd-ink); }
.t2s-rd .rd-cta__btn:hover { color: var(--rd-white); }
.t2s-rd .rd-cta__btn--ghost,
.t2s-rd .rd-cta__btn--ghost:hover { color: var(--rd-white); }
.t2s-rd .rd-viewall { color: var(--rd-ink); }
.t2s-rd .rd-viewall:hover { color: var(--rd-brand); }
.t2s-rd .rd-viewall--light { color: var(--rd-white); }
.t2s-rd .rd-viewall--light:hover { color: #ff6a5d; }
.t2s-rd .rd-cat-link { color: var(--rd-ink); }
.t2s-rd .rd-cat-link:hover { color: var(--rd-brand); }
.t2s-rd .rd-pcard__name { color: var(--rd-white); }
.t2s-rd .rd-pcard__name:hover { color: #ff6a5d; }
.t2s-rd .rd-icon { color: var(--rd-ink); }
.t2s-rd .rd-icon:hover { color: var(--rd-brand); }
.t2s-rd .rd-post { color: inherit; }
.t2s-rd .rd-gama,
.t2s-rd .rd-need,
.t2s-rd .rd-mega__feature,
.t2s-rd .rd-logo,
.t2s-rd .rd-footer__logo { color: var(--rd-white); }

/* Contenidor únic */
.rd-wrap {
    max-width: var(--rd-max);
    margin: 0 auto;
    padding-inline: var(--rd-gutter);
}

/* Display type: uppercase + tracking negatiu */
.rd-disp {
    text-transform: uppercase;
    letter-spacing: var(--tr-tight);
}

/* Eyebrow (kicker) */
.rd-eyebrow {
    font-size: var(--fs-xs);
    font-weight: 600;
    letter-spacing: var(--tr-caps-sm);
    text-transform: uppercase;
    color: var(--rd-brand);
    margin: 0 0 18px;
}
.rd-eyebrow--light { color: var(--rd-white); }

/* ==========================================================================
   TITULAR DE SECCIÓ — tractament ÚNIC a tota la web
   Versal, pes 800, tracking tancat. Sobre fons fosc o vermell passa a blanc
   (--light), però manté caixa i pes: només canvia el color, mai el tractament.
   Els heros i les cabeceres comparteixen aquest mateix llenguatge en mida
   display, que és un altre rol de la jerarquia.
   ========================================================================== */
.rd-h2,
.rd-seo h2,
.rd-faq__h,
.rd-related h2,
.rd-keep h2,
.rd-cta__title,
.rd-endcta h2,
.rd-about__title {
    margin: 0;
    font-size: var(--fs-h1);
    font-weight: 800;
    line-height: var(--lh-display);
    text-transform: uppercase;
    letter-spacing: var(--tr-tight);
    color: var(--rd-ink);
}
/* Titulars de secció llargs: es forcen a DUES línies (l'amplada de columna
 * els talla i text-wrap:balance reparteix les paraules per igual). L'interlineat
 * s'obre una mica: a lh 1 dues línies uppercase es toquen. */
.rd-h2--2l {
    max-width: 31ch;
    text-wrap: balance;
    line-height: var(--lh-tight);
}

/* Sobre fons fosc o vermell: blanc, mateix tractament. */
.rd-h2--light,
.rd-cta__title,
.rd-endcta h2 { color: var(--rd-white); }

/* Enllaç "Ver todo" subratllat */
/* "Ver todo": botó quadrat de contorn, sense fons. Hover → s'omple. */
.rd-viewall {
    background: none;
    cursor: pointer;
    font-weight: 700;
    font-size: var(--fs-sm);
    letter-spacing: var(--tr-caps-wide);
    text-transform: uppercase;
    color: var(--rd-ink);
    flex: none;
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    padding: 12px 25px;
    border: 1px solid currentColor;
    border-radius: 0;
    transition: background .2s ease, color .2s ease, border-color .2s ease;
}
.rd-viewall > span { display: inline-block; }
.t2s-rd .rd-viewall:hover {
    background: var(--rd-ink);
    border-color: var(--rd-ink);
    color: var(--rd-white);
}
.rd-viewall--light { color: var(--rd-white); }
.t2s-rd .rd-viewall--light:hover {
    background: var(--rd-white);
    border-color: var(--rd-white);
    color: var(--rd-ink);
}

/* Capçalera de secció (títol + acció) */
.rd-sechead {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 12px;
    flex-wrap: wrap;
    margin-bottom: 40px;
}

/* Hover lift compartit */
.rd-lift { transition: transform .25s ease, box-shadow .25s ease; }
.rd-lift:hover { transform: translateY(-4px); box-shadow: 0 18px 40px -18px rgba(0, 0, 0, .35); }

/* Placeholder de mèdia (quan encara no hi ha foto a la Media Library) */
.rd-ph {
    position: absolute;
    inset: 0;
    background: #e9e6df;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 12px;
    text-align: center;
    font-size: var(--fs-xs);
    font-weight: 500;
    color: #8a857c;
}
.rd-ph--dark { background: var(--rd-card-darker); color: #6B6E76; }
/* Al hero el retol del placeholder anava centrat i xocava amb el títol. */
.rd-cathero .rd-ph { align-items: flex-end; padding-bottom: 14px; }
/* Swatch de color (format del handoff): cercle amb color pla o amb la IMATGE
 * real del color — les fitxes migrades porten una imatge per color. */
.rd-sw {
    display: inline-block;
    flex: none;
    width: 15px;
    height: 15px;
    border-radius: 50%;
    background-size: cover;
    background-position: center;
    background-repeat: no-repeat;
    box-shadow: 0 0 0 1px rgba(0, 0, 0, .15) inset;
}
.rd-sw--lg { width: 44px; height: 44px; box-shadow: 0 0 0 1px rgba(0, 0, 0, .18) inset; }
/* Mostra amb IMATGE: la foto del color és el farciment, retallada per omplir
 * la caixa. Res de cercle: una combinació de dos colors no és un color pla. */
.rd-sw--img {
    background-size: cover;
    background-position: center;
    background-repeat: no-repeat;
    border-radius: 2px;
}
/* Seleccionable a la fitxa: botó amb estat, com les talles. */
.t2s-rd button.rd-sw {
    padding: 0;
    border: 1px solid var(--rd-line);
    cursor: pointer;
    transition: box-shadow .18s ease, border-color .18s ease;
}
.t2s-rd button.rd-sw:hover { border-color: var(--rd-ink); }
.t2s-rd button.rd-sw[aria-pressed="true"] {
    border-color: var(--rd-ink);
    box-shadow: 0 0 0 2px var(--rd-ink);
}

.rd-media { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }

/* ==========================================================================
   COM ES PARTEIX EL TEXT — REGLA ÚNICA DE TOTA LA WEB
   ==========================================================================
   1r  la paraula SALTA DE LÍNIA sencera;
   2n  només si tota sola no hi cap a la línia, es parteix.
   Res de guionets automàtics ni de guionets suaus posats des del PHP: tots dos
   parteixen abans d'hora ("SE-GURIDAD" al hero, "RETRORREFLECTANT-ES" a una
   card on la paraula hi cabia perfectament a la línia següent).
   'overflow-wrap: break-word' fa exactament les dues coses en aquest ordre. */
.t2s-rd,
.t2s-rd h1, .t2s-rd h2, .t2s-rd h3, .t2s-rd h4, .t2s-rd p, .t2s-rd li,
.t2s-rd a, .t2s-rd span, .t2s-rd td, .t2s-rd th, .t2s-rd summary {
    overflow-wrap: break-word;
    word-break: normal;
    hyphens: none;
}
.rd-media--contain { object-fit: contain; }

/* Portàtils i pantalles baixes: el hero es compacta perquè hi càpiga sencer
   (titular, CTA i la tira de logos) sense haver de fer scroll. */
@media (min-width: 1024px) and (max-height: 900px) {
    .rd-hero__inner { padding-block: 52px; }
    .rd-hero__title { font-size: clamp(26px, 2.5vw, 34px); }
    .rd-hero__sub { font-size: var(--fs-base); }
    .rd-hero__clients { padding-top: 40px; }
    .rd-hero__clients-label { margin-bottom: 16px; }
    .rd-hero__clients .rd-marquee__track { gap: 40px; }
    .rd-hero__clients .rd-marquee__track img { max-height: 30px; max-width: 140px; }
    .rd-hero__ctas { margin-top: 24px; }
}
@media (min-width: 1024px) and (max-height: 780px) {
    .rd-hero__inner { padding-block: 40px; }
    .rd-hero__clients { padding-top: 28px; }
    .rd-hero__clients .rd-marquee__track img { max-height: 26px; max-width: 124px; }
}

/* ==========================================================================
   HEADER
   ========================================================================== */

.rd-header {
    position: sticky;
    top: 0;
    z-index: 60;
    background: var(--rd-white);
    box-shadow: 0 1px 0 rgba(0, 0, 0, .08);
}

/* --- Topbar --- */
.rd-topbar { background: var(--rd-ink); color: var(--rd-white); }
.rd-topbar__in {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    padding-block: 9px;
    font-size: var(--fs-2xs);
    font-weight: 500;
}
.rd-topbar__promo {
    display: flex;
    align-items: center;
    gap: 10px;
    letter-spacing: var(--tr-caps-sm);
    text-transform: uppercase;
    font-weight: 400;
    min-width: 0;
}
.rd-topbar__promo > span { animation: rdPromoFade .5s ease; }
@keyframes rdPromoFade { from { opacity: 0 } to { opacity: 1 } }
.rd-topbar__nav { display: flex; align-items: center; flex: none; }
.rd-topbar__list {
    display: flex;
    align-items: center;
    gap: 22px;
    margin: 0;
    padding: 0;
    list-style: none;      /* sense vinyetes: el handoff no en té */
}
.rd-topbar__list li { list-style: none; margin: 0; padding: 0; }
.rd-topbar__list li::marker { content: none; }
.t2s-rd .rd-topbar__nav a,
.rd-topbar__nav a {
    font-size: var(--fs-2xs);
    font-weight: 600;
    color: rgba(255, 255, 255, .75);
    text-transform: uppercase;
    letter-spacing: var(--tr-caps-sm);
}
.t2s-rd .rd-topbar__nav a:hover,
.rd-topbar__nav a:hover { color: var(--rd-white); }

/* --- Fila logo + utility --- */
.rd-head__in {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 26px;
    padding-block: 14px;
}
.rd-logo { display: flex; align-items: center; flex: none; }
.rd-logo svg, .rd-logo img { display: block; }
.rd-util { display: flex; align-items: center; gap: 16px; flex: none; }
.rd-icon {
    background: none;
    border: 0;
    cursor: pointer;
    color: var(--rd-ink);
    display: flex;
    position: relative;
    padding: 0;
}
.rd-icon:hover { color: var(--rd-brand); }
.rd-cart-count {
    position: absolute;
    top: -7px;
    right: -8px;
    background: var(--rd-brand);
    color: var(--rd-white);
    font-size: var(--fs-2xs);
    font-weight: 700;
    min-width: 16px;
    height: 16px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 0 4px;
}

/* Selector d'idioma */
.rd-lang { position: relative; }
.rd-lang__btn {
    background: none;
    border: 0;
    cursor: pointer;
    font-size: var(--fs-xs);
    font-weight: 600;
    color: var(--rd-ink);
    display: flex;
    align-items: center;
    gap: 5px;
    padding: 0;
}
.rd-lang__btn:hover { color: var(--rd-brand); }
.rd-lang__btn svg { transition: transform .2s ease; }
.rd-lang.is-open .rd-lang__btn svg { transform: rotate(180deg); }
.rd-lang__menu {
    position: absolute;
    top: 130%;
    right: 0;
    background: var(--rd-white);
    border: 1px solid rgba(0, 0, 0, .1);
    box-shadow: 0 12px 30px -12px rgba(0, 0, 0, .3);
    overflow: hidden;
    min-width: 88px;
    z-index: 70;
    margin: 0;
    padding: 0;
    list-style: none;
}
.rd-lang__menu[hidden] { display: none; }
.rd-lang__menu a {
    display: block;
    width: 100%;
    text-align: left;
    padding: 9px 14px;
    font-size: var(--fs-sm);
    font-weight: 600;
    color: var(--rd-ink);
}
.rd-lang__menu a:hover { background: var(--rd-paper); color: var(--rd-ink); }

/* CTA presupuesto */
.rd-btn-quote {
    background: var(--rd-brand);
    color: var(--rd-white);
    border: 0;
    cursor: pointer;
    /* Mateixa mida que els ítems del menú principal (.rd-cat-link). */
    font-size: var(--fs-xs);
    font-weight: 700;
    letter-spacing: var(--tr-caps-sm);
    text-transform: uppercase;
    padding: 11px 18px;
    white-space: nowrap;
}
/* El CTA del desplegable només existeix quan el menú és desplegable (mòbil). */
.rd-btn-quote--panel { display: none; }
.rd-btn-quote:hover { background: var(--rd-brand-hover); color: var(--rd-white); }

/* --- Fila de categories --- */
/* Barra de cerca desplegable (lupa). */
.rd-search { background: var(--rd-white); border-top: 1px solid var(--rd-line-2); }
.rd-search[hidden] { display: none; }
.rd-search__form { display: flex; align-items: center; gap: 14px; padding-block: 18px; }
.rd-search__form > svg { width: 22px; height: 22px; color: var(--rd-txt-4); flex: none; }
.rd-search__input {
    flex: 1 1 auto;
    min-width: 0;
    border: 0;
    outline: 0;
    background: transparent;
    font-family: inherit;
    font-size: var(--fs-h3);
    color: var(--rd-ink);
}
/* Enviar: quadrat d'icona (sense text), a la dreta de la x. */
.t2s-rd .rd-search__submit {
    flex: none;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 42px;
    height: 42px;
    background: var(--rd-brand);
    color: #fff;
    border: 0;
    cursor: pointer;
}
.t2s-rd .rd-search__submit svg { display: block; }
.t2s-rd .rd-search__submit:hover { background: var(--rd-brand-hover); }
.rd-search__close {
    flex: none;
    background: none;
    border: 0;
    font-size: var(--fs-h2);
    line-height: var(--lh-display);
    color: var(--rd-txt-4);
    cursor: pointer;
    padding: 0 4px;
}
.rd-search__close:hover { color: var(--rd-ink); }

.rd-cats-row { border-top: 1px solid var(--rd-line-2); background: var(--rd-white); }
.rd-cats-nav {
    display: flex;
    flex-wrap: nowrap;
    align-items: stretch;
    justify-content: space-between;
    gap: 0 10px;
    /* padding COMPLET a 0 horitzontal: amb només padding-block, l'<ul>
     * conservava el seu padding-inline-start de 40px per defecte i el menú
     * quedava desplaçat a la dreta (espai esquerre que no és al handoff). */
    padding: 2px 0;
    margin: 0;
    list-style: none;
}
.rd-cats-nav > li { display: flex; min-width: 0; }
.rd-cat-link {
    display: flex;
    align-items: center;
    gap: 6px;
    background: none;
    border: 0;
    cursor: pointer;
    font-size: var(--fs-xs);
    font-weight: 700;
    /* Versaletes a 12px: el tracking que li toca a l'escala. Abans anava
     * artificialment tancat per encabir 8 apartats; ara en són 5. */
    letter-spacing: var(--tr-caps-sm);
    text-transform: uppercase;
    color: var(--rd-ink);
    padding: 14px 2px;
    line-height: var(--lh-snug);
    text-align: center;
    white-space: nowrap;
    border-bottom: 2px solid transparent;
    text-decoration: none;
}
.rd-cat-link:hover,
.rd-cats-nav > li.is-open .rd-cat-link,
.rd-cats-nav > li.is-current .rd-cat-link {
    color: var(--rd-brand);
    border-bottom-color: var(--rd-brand);
}

/* "Empresa": ítem corporatiu en segona posició del menú principal. Mateix
 * tractament que les categories (el gris el feia semblar desactivat); es
 * distingeix perquè no obre desplegable. */
/* 'T2S Ibérica' obre el menú: vermell de marca i un pas més de pes que les
 * categories, perquè es llegeixi com el que és —la marca— i no com una
 * categoria més. */
/* Chevron dels apartats amb desplegable: gira 180° quan s'obre. */
.rd-cat-link svg {
    flex: none;
    opacity: .55;
    transition: transform .22s ease, opacity .22s ease;
}
.rd-cat-link:hover svg { opacity: 1; }
.rd-cats-nav > li.is-open .rd-cat-link svg { transform: rotate(180deg); opacity: 1; }

/* Filet que separa 'T2S Ibérica' de les categories. És un ítem propi de la
 * fila —no una vora de l'enllaç— perquè el repartiment d'espai el compti com un
 * element més i totes les distàncies siguin iguals. L'alçada la marca el TEXT
 * (16px, l'alçada de línia de les versaletes de 12px), no el contenidor. */
.rd-cats-nav__sep {
    flex: none;
    align-self: center;
    width: 2px;
    height: 16px;
    background: var(--rd-line-2);
}
.t2s-rd .rd-cat-link--corp { color: var(--rd-brand); font-weight: 700; }
.t2s-rd .rd-cat-link--corp:hover { color: var(--rd-brand-hover); }

/* --- Mega menu --- */
.rd-mega {
    position: absolute;
    left: 50%;
    transform: translateX(-50%);
    top: 100%;
    width: 100%;
    max-width: var(--rd-max);
    background: var(--rd-white);
    border: 1px solid var(--rd-line-2);
    box-shadow: 0 22px 40px -20px rgba(0, 0, 0, .35);
    z-index: 55;
}
.rd-mega[hidden] { display: none; }
/* Flex: les columnes de text s'ajusten al contingut i la imatge destacada
 * queda SEMPRE a la dreta (margin-left:auto), independentment de quantes
 * columnes hi hagi. Abans era un grid de 4 columnes i, amb pocs apartats, la
 * imatge queia al mig. */
/* Graella de 4 columnes IGUALS a TOTS els desplegables: 3 de contingut + el
 * destacat, sempre a la quarta. Abans les columnes es dimensionaven pel
 * contingut i el destacat anava a 340px fixos, així que cada desplegable
 * tenia amplades diferents. */
/* Graella de QUATRE columnes iguals a tots els desplegables (decisió del
 * client). El destacat n'ocupa la quarta, així la seva amplada és la mateixa
 * que la d'una columna d'enllaços i no una mida pròpia. */
.rd-mega__in {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    align-items: stretch;
    gap: 48px;
    padding: var(--rd-gutter);  /* mateix padding als 4 costats */
    /* Alçada fixa: TOTS els desplegables igual d'alts. Ajustada al contingut
     * més alt (títol de columna + cinc enllaços = 238px amb el padding), sense
     * espai sobrant; el destacat s'hi adapta i queda horitzontal. */
    min-height: 260px;
}
/* Filet divisori entre columnes, dibuixat DINS del buit amb un pseudo-element.
 *
 * Abans era una vora amb padding i marge negatiu, i això inflava la caixa de
 * les columnes següents: mesurat, 454px contra 430px de la primera. Amb una
 * capa absoluta al buit, totes les pistes de la graella conserven la mateixa
 * amplada exacta. */
/* Entrada del desplegable: fos suau del panell i cascada curta de columnes,
 * d'esquerra a dreta. El panell només fon l'opacitat i les columnes hi sumen un
 * desplaçament petit, per no moure dues coses alhora. S'activa amb
 * :not([hidden]) —l'atribut que el JS treu en obrir— així que es reprodueix
 * cada vegada que s'obre, sense tocar el JS. */
@keyframes rdMegaFade { from { opacity: 0; } to { opacity: 1; } }
@keyframes rdMegaIn   { from { opacity: 0; transform: translateY(7px); } to { opacity: 1; transform: none; } }

[data-rd-mega]:not([hidden]) { animation: rdMegaFade .22s ease both; }
[data-rd-mega]:not([hidden]) .rd-mega__col,
[data-rd-mega]:not([hidden]) .rd-mega__feature {
    animation: rdMegaIn .34s cubic-bezier(.22, .61, .36, 1) both;
}
[data-rd-mega]:not([hidden]) .rd-mega__col:nth-child(1) { animation-delay: .04s; }
[data-rd-mega]:not([hidden]) .rd-mega__col:nth-child(2) { animation-delay: .09s; }
[data-rd-mega]:not([hidden]) .rd-mega__col:nth-child(3) { animation-delay: .14s; }
[data-rd-mega]:not([hidden]) .rd-mega__col:nth-child(4) { animation-delay: .19s; }
[data-rd-mega]:not([hidden]) .rd-mega__feature          { animation-delay: .14s; }

.rd-mega__col { min-width: 0; position: relative; }
.rd-mega__col + .rd-mega__col::before {
    content: "";
    position: absolute;
    left: -24px;          /* la meitat del gap de 48px */
    top: 0;
    bottom: 0;
    width: 1px;
    background: var(--rd-line);
}
/* Columna amb dos apartats apilats (grup d'obra vial): espai entre ells. */
.rd-mega__col--stack { display: flex; flex-direction: column; gap: 52px; }
/* Títol de columna: EL MATEIX tractament que els apartats del menú (cos, pes,
 * tracking, caixa i interlineat), només en gris per baixar-ne el nivell.
 * L'interlineat era 'normal' i per això, en partir-se en dues línies, es llegia
 * com un altre estil. El gris puja un pas: --rd-txt-4 dona 2,6:1 sobre blanc,
 * que no passa AA per a un enllaç; --rd-txt-3 en dona 4,90:1. */
.rd-mega__col-title {
    display: block;
    font-size: var(--fs-xs);
    font-weight: 700;
    letter-spacing: var(--tr-caps-sm);
    line-height: var(--lh-snug);
    text-transform: uppercase;
    color: var(--rd-txt-3);
    margin-bottom: 18px;
}
.t2s-rd a.rd-mega__col-title { color: var(--rd-txt-4); }
.t2s-rd a.rd-mega__col-title:hover { color: var(--rd-brand); }
.rd-mega__links { display: flex; flex-direction: column; gap: 15px; margin: 0; padding: 0; list-style: none; }
.rd-mega__links a {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-size: var(--fs-sm);
    font-weight: 500;
    line-height: var(--lh-normal);
    letter-spacing: .01em;
    color: var(--rd-ink);
}
/* Chevron d'orientació al hover. Dibuixat amb vores (no cal cap SVG) i sempre
 * present amb opacitat 0: la caixa no canvia de mida, així el text no salta. */
.rd-mega__links a::after {
    content: "";
    flex: none;
    width: 5px;
    height: 5px;
    border-right: 1.5px solid currentColor;
    border-bottom: 1.5px solid currentColor;
    transform: rotate(-45deg) translateX(-2px);
    opacity: 0;
    transition: opacity .18s ease, transform .18s ease;
}
.rd-mega__links a:hover { color: var(--rd-brand); }
.rd-mega__links a:hover::after,
.rd-mega__links a:focus-visible::after { opacity: 1; transform: rotate(-45deg) translateX(0); }
.rd-mega__links a.is-sale { color: var(--rd-brand); }
.rd-mega__feature {
    position: relative;
    display: block;
    overflow: hidden;
    background: var(--rd-ink);
    min-height: 0;   /* les mides les marca la graella, no el destacat */
    /* Ocupa la QUARTA columna: la seva amplada és la d'una columna. */
    grid-column: 4;
    grid-row: 1 / -1;
    align-self: stretch;
}
.rd-mega__feature-scrim {
    position: absolute;
    inset: 0;
    background: linear-gradient(180deg, rgba(21, 23, 28, 0) 40%, rgba(21, 23, 28, .82));
    pointer-events: none;
}
.rd-mega__feature-cap {
    position: absolute;
    left: 20px;
    bottom: 18px;
    pointer-events: none;
}
/* TOTES les fotos del destacat s'ancoren a baix dins del marc, perquè es vegi
 * la part de baix (el material/producte), que és on hi ha el contingut útil.
 * !important per guanyar a qualsevol regla heretada o CSS antic en caché. */
.rd-mega__feature .rd-media { object-position: center bottom !important; }
.rd-mega__feature-cap b {
    display: block;
    color: var(--rd-white);
    font-size: var(--fs-lg);
    font-weight: 700;
    line-height: var(--lh-tight);
    text-transform: uppercase;
    letter-spacing: var(--tr-caps);
}
/* "Descubra la colección": només al hover. COL·LAPSAT en repòs (max-height 0)
 * perquè no reservi espai i el títol quedi ancorat al fons; s'expandeix al
 * passar el rató. */
.rd-mega__feature-cap span {
    display: block;
    color: rgba(255, 255, 255, .85);
    font-size: var(--fs-2xs);
    /* A 10,5px en versaletes el tracking ha d'obrir-se més: l'escala diu que
     * com més petit el cos, més separació. */
    letter-spacing: var(--tr-caps-sm);
    text-transform: uppercase;
    max-height: 0;
    margin-top: 0;
    opacity: 0;
    overflow: hidden;
    transition: max-height .3s ease, margin-top .3s ease, opacity .3s ease;
}
.rd-mega__feature:hover .rd-mega__feature-cap span,
.rd-mega__feature:focus-visible .rd-mega__feature-cap span {
    max-height: 24px;
    margin-top: 6px;
    opacity: 1;
}

/* Burger (mòbil) */
.rd-burger { display: none; background: none; border: 0; cursor: pointer; color: var(--rd-ink); padding: 8px; }
.rd-burger span,
.rd-burger span::before,
.rd-burger span::after {
    content: "";
    display: block;
    width: 22px;
    height: 2px;
    background: currentColor;
    position: relative;
}
.rd-burger span::before { position: absolute; top: -7px; }
.rd-burger span::after { position: absolute; top: 7px; }

/* ==========================================================================
   HOME · HERO (variant B del handoff: full-bleed overlay)
   ========================================================================== */

/* ===== HERO (handoff "T2S Hero"): foto a sangre + tint blau-gris multiply,
 * text a l'esquerra, CTA ghost i 2 mètriques amb count-up ancorades a baix. */
.rd-hero {
    position: relative;
    /* Fallback radial darrere de la foto (handoff). */
    background: radial-gradient(120% 90% at 88% 42%, #26282c 0%, #17181b 42%, #0d0e10 100%);
    /*
     * PRIMER FOLD. Abans eren 720px fixos i en un portàtil (viewport de ~800px
     * amb 166px de capçalera enganxada) el hero es menjava el plec. Ara l'alçada
     * és la que queda de pantalla, amb terra i sostre: mai més curt de 560px ni
     * més alt de 780px. svh té en compte la barra del navegador al mòbil; vh
     * queda com a fallback.
     */
    min-height: 720px;
    min-height: clamp(560px, calc(100vh - var(--rd-sticky-top)), 780px);
    min-height: clamp(560px, calc(100svh - var(--rd-sticky-top)), 780px);
    overflow: hidden;
}

/* La foto/vídeo cobreix tota la secció; focus a la dreta (subjecte). */
.rd-hero > .rd-media { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: center right; z-index: 0; }
.rd-hero__video {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    z-index: 0;
    background: #000;   /* fons negre mentre el vídeo encara no ha carregat */
    pointer-events: none;
    /* El vídeo entra amb un fos quan ja pot reproduir-se (el script li posa la
     * font després del load): així el primer pintat és el titular, no el vídeo. */
    opacity: 0;
    transition: opacity .5s ease;
}
.rd-hero__video.is-on { opacity: 1; }
/* Dos tints multiply (handoff): l'horitzontal enfosqueix l'esquerra i el
 * vertical el baix, coloritzant el cel sense aixafar la foto. */
.rd-hero__tint {
    position: absolute;
    inset: 0;
    z-index: 1;
    opacity: .7;
    mix-blend-mode: multiply;
    pointer-events: none;
}
.rd-hero__tint--h { background: linear-gradient(90deg, #3a4a5e 0%, #566371 34%, #8a94a0 60%, #d3d8dd 88%, #ffffff 100%); }
.rd-hero__tint--v { background: linear-gradient(0deg, #4a5563 0%, #c9ced3 42%, #ffffff 70%); }
/* En DESKTOP no volem cap gradient sota la zona de textos: retirem el tint
 * vertical (el que enfosqueix la part baixa). A la resta de resolucions es manté. */
@media (min-width: 1024px) {
    .rd-hero__tint--v { display: none; }
}
.rd-hero__body {
    position: absolute;
    inset: 0;
    z-index: 2;
    display: flex;
    align-items: stretch;
    pointer-events: none;
}
/* Columna: grup de text a dalt, mètriques ancorades a baix (margin-top:auto). */
.rd-hero__inner {
    width: 100%;
    display: flex;
    flex-direction: column;
    /* Top i bottom IGUALS (abans 100/52, es notava la descompensació). */
    padding-block: 80px;
}
/* width:100% + max-width → min(100%, 700px): sense el width la caixa es
 * desbordava del contenidor per sota de 812px. */
.rd-hero__content { width: 100%; max-width: 700px; pointer-events: auto; }
.rd-hero__title {
    margin: 0;
    color: var(--rd-white);
    /* Un escaló per sota del display global (46px): amb 42px dins d'una columna
     * de 700px el titular cau en TRES línies en comptes de quatre, sense
     * menjar-se la meitat dreta on es veu el vídeo. Mesurat amb Chromium. */
    font-size: var(--fs-hero);
    font-weight: 800;
    line-height: var(--lh-tight);
    text-transform: uppercase;
    letter-spacing: var(--tr-display);
}
.rd-hero__sub {
    color: #e6e8ea;
    font-size: var(--fs-lg);
    font-weight: 400;
    line-height: var(--lh-body);
    max-width: none;   /* que càpiga en 1 línia (dins del contingut) */
    /* Va per damunt del titular: el marge ara és INFERIOR, i el grup es compacta. */
    margin: 0 0 12px;
}
.rd-hero__ctas { display: flex; gap: 12px; flex-wrap: wrap; margin-top: 20px; }
/* CTA ghost del handoff: contorn blanc, hover ple blanc. */
.t2s-rd .rd-hero__cta {
    display: inline-flex;
    align-items: center;
    padding: 12px 25px;
    background: transparent;
    color: var(--rd-white);
    font-size: var(--fs-sm);
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: var(--tr-caps);
    text-decoration: none;
    border: 1px solid rgba(255, 255, 255, .4);
    border-radius: 0;
    transition: background .2s, color .2s, border-color .2s;
}
.t2s-rd .rd-hero__cta:hover { background: var(--rd-white); color: #0b0c0e; border-color: var(--rd-white); }
/* Mètriques ancorades a baix-esquerra amb dada gran + etiqueta. */
.rd-hero__stats {
    margin-top: auto;
    padding-top: 72px;
    pointer-events: auto;
    display: grid;
    grid-template-columns: repeat(2, max-content);
    gap: 44px 88px;
}
.rd-hero__stat { display: flex; flex-direction: column; }
/* Prova social dins del hero: mateixa amplada que el titular (600px) perquè la
 * meitat dreta quedi lliure i el vídeo de fons es vegi. */
.rd-hero__clients {
    margin-top: auto;
    padding-top: 72px;
    pointer-events: auto;
    width: 100%;
    max-width: 570px;   /* 5% menys que els 600px del titular */
}
.rd-hero__clients-label {
    color: rgba(255, 255, 255, .55);
    font-size: var(--fs-2xs);
    font-weight: 600;
    letter-spacing: var(--tr-caps-wide);
    text-transform: uppercase;
    margin-bottom: 26px;
}
/* Degradat als DOS costats: a la dreta llarg, cap al vídeo; a l'esquerra curt,
 * només per suavitzar el tall sense desalinear visiblement el carrusel del
 * titular (un fade llarg a l'esquerra sí que el desalinearia). */
.rd-hero__clients .rd-marquee {
    -webkit-mask-image: linear-gradient(90deg, transparent 0, #000 7%, #000 74%, transparent 100%);
    mask-image: linear-gradient(90deg, transparent 0, #000 7%, #000 74%, transparent 100%);
}
.rd-hero__clients .rd-marquee__track { gap: 52px; }
.rd-hero__clients .rd-marquee__track img { max-height: 38px; max-width: 168px; }
.rd-hero__stat-t {
    color: var(--rd-white);
    font-size: var(--fs-metric);
    font-weight: 600;
    line-height: var(--lh-display);
    letter-spacing: var(--tr-display);
    white-space: nowrap;
}
.rd-hero__stat-s {
    color: #8f9298;
    font-weight: 500;
    font-size: var(--fs-sm);
    line-height: var(--lh-normal);
    letter-spacing: var(--tr-caps-lg);   /* una mica més de tracking */
    white-space: nowrap;     /* cada etiqueta en 1 línia */
    margin-top: 6px;
}

/* --- Entrada (handoff): fade-up del bloc de text i, amb .2s de retard, de les
       mètriques; lleu zoom del vídeo de fons. --- */
@keyframes t2sFadeUp { from { opacity: 0; transform: translateY(24px); } to { opacity: 1; transform: translateY(0); } }
.rd-hero__content { animation: t2sFadeUp .8s cubic-bezier(.22, .61, .36, 1) both; }
/* Les mètriques entren DESPRÉS que acabi el grup de text (seqüencial). */
.rd-hero__stats,
.rd-hero__clients { animation: t2sFadeUp .8s cubic-bezier(.22, .61, .36, 1) .9s both; }
@media (prefers-reduced-motion: reduce) {
    .rd-hero__content, .rd-hero__stats, .rd-hero__clients { animation: none; }
}

/* Botons */
/* Caixa ÚNICA de botó: mateixa mida, pes i tracking per a tots. L'única
 * diferència entre variants és el farciment (sòlid) o el contorn (ghost). */
.rd-btn {
    display: inline-flex;
    align-items: center;
    gap: 9px;
    cursor: pointer;
    font-weight: 700;
    font-size: var(--fs-sm);
    letter-spacing: var(--tr-caps);
    text-transform: uppercase;
    padding: 13px 26px;
    border: 0;
    border-radius: 0;
    text-decoration: none;
}
.rd-btn--white { background: var(--rd-white); color: var(--rd-ink); }
.rd-btn--white:hover { background: var(--rd-paper); color: var(--rd-ink); }
.rd-btn--ghost {
    background: rgba(255, 255, 255, .12);
    color: var(--rd-white);
    border: 1px solid rgba(255, 255, 255, .4);
    padding: 15px 24px;
}
.rd-btn--ghost:hover { background: rgba(255, 255, 255, .22); color: var(--rd-white); }

/* ==========================================================================
   TRUST BAR (value props)
   ========================================================================== */

.rd-trust { background: var(--rd-white); border-bottom: 1px solid var(--rd-line); }
.rd-trust__grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 20px;
    padding-block: 22px;
}
.rd-trust__item { display: flex; align-items: center; gap: 13px; }
.rd-trust__ico {
    width: 40px;
    height: 40px;
    border-radius: 50%;
    background: var(--rd-paper);
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--rd-brand);
    flex: none;
}
.rd-trust__t { font-size: var(--fs-sm); font-weight: 700; }
.rd-trust__s { font-size: var(--fs-xs); color: var(--rd-txt-3); }

/* ==========================================================================
   CATEGORIES (gama)
   ========================================================================== */

.rd-section { padding-block: var(--rd-section-y); }

.rd-cats-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 16px;
}
.rd-gama {
    position: relative;
    display: block;
    overflow: hidden;
    background: var(--rd-ink);
    aspect-ratio: 1 / 1.08;
}
/* Enquadre: ancorar la foto més avall (retalla més per dalt i menys per baix). */
.rd-gama .rd-media { object-position: center 72%; }
/* Cintas retrorreflectantes: la foto puja dins del mateix marc (l'alçada de la
 * card no canvia) per ensenyar més tros de producte i menys fons desenfocat. */
.rd-gama--cintas-retrorreflectantes .rd-media { object-position: center 40%; }
/* Vídeo de hover: cobreix la card i apareix en passar el ratolí (JS fa play/pause). */
.rd-gama__video {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    opacity: 0;
    transition: opacity .4s ease;
    pointer-events: none;
    z-index: 1;
}
.rd-gama.has-video:hover .rd-gama__video,
.rd-gama.has-video:focus-visible .rd-gama__video,
.rd-gama.has-video.is-playing .rd-gama__video { opacity: 1; }
/* L'scrim i el text sempre per damunt del vídeo. */
.rd-gama__scrim, .rd-gama__cap { z-index: 2; }
.rd-gama__scrim {
    position: absolute;
    inset: 0;
    /* El degradat puja més (comença abans) perquè el títol + descripció de
     * les cards de gama quedin sempre ben llegibles. */
    background: linear-gradient(180deg, rgba(21, 23, 28, 0) 22%, rgba(21, 23, 28, .55) 55%, rgba(21, 23, 28, .9) 100%);
    pointer-events: none;
    opacity: .85;
    transition: opacity .4s ease;
}
.rd-gama:hover .rd-gama__scrim { opacity: 1; }
.rd-gama__cap {
    position: absolute;
    left: 16px;
    right: 16px;
    bottom: 16px;
    pointer-events: none;
}
/* Blocificació: són <span> dins d'un <a>; sense display:block el "Más"
 * surt inline al costat del títol i el max-height del hover no actua. */
.rd-gama__body,
.rd-gama__name,
.rd-gama__desc,
.rd-gama__more { display: block; }
.rd-gama__body { transition: transform .4s ease; }
.rd-gama:hover .rd-gama__body { transform: translateY(-6px); }
.rd-gama__name {
    color: var(--rd-white);
    font-size: var(--fs-h3);
    font-weight: 700;
    line-height: var(--lh-display);
    text-transform: uppercase;
    letter-spacing: var(--tr-caps-h3);
    /* "RETRORREFLECTANTES" és més ample que la card en mòbil: que la paraula
     * es parteixi en lloc de sortir-se de la caixa (ja passava abans). */
    overflow-wrap: break-word;
}
.rd-gama__desc {
    color: rgba(255, 255, 255, .82);
    font-size: var(--fs-xs);
    line-height: var(--lh-normal);
    margin-top: 7px;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}
.rd-gama__more {
    opacity: 0;
    max-height: 0;
    overflow: hidden;
    margin-top: 0;
    transform: translateY(8px);
    transition: opacity .4s ease, max-height .4s ease, margin-top .4s ease, transform .4s ease;
    color: var(--rd-white);
    font-size: var(--fs-xs);
    font-weight: 500;
    letter-spacing: var(--tr-caps-wide);
    text-transform: uppercase;
}
.rd-gama:hover .rd-gama__more {
    opacity: 1;
    max-height: 44px;
    margin-top: 12px;
    transform: translateY(0);
}
.rd-gama__more span { display: inline-block; padding-bottom: 5px; border-bottom: 1.5px solid var(--rd-white); }

/* ==========================================================================
   BEST SELLERS (sobre fons fosc)
   ========================================================================== */

.rd-best { background: var(--rd-ink); }
.rd-best__grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 18px;
}
.rd-pcard {
    background: var(--rd-card-dark);
    border: 1px solid var(--rd-line-dark);
    overflow: hidden;
    display: flex;
    flex-direction: column;
}
.rd-pcard__media {
    position: relative;
    display: block;
    aspect-ratio: 1 / 1;
    overflow: hidden;
    /* Fons BLANC i foto que omple el quadrat: amb la foto continguda sobre fons
     * fosc, un packshot apaïsat (el chaleco) deixava una banda negra a sota i la
     * fila es veia desigual. */
    background: #fff;
    border-bottom: 1px solid rgba(255, 255, 255, .08);
}
.rd-pcard__media .rd-media { object-fit: cover; }
.rd-pcard__tag {
    position: absolute;
    top: 10px;
    left: 10px;
    z-index: 2;
    font-size: var(--fs-2xs);
    font-weight: 700;
    letter-spacing: var(--tr-caps);
    text-transform: uppercase;
    padding: 4px 8px;
}
.rd-pcard__body { padding: 14px 15px 16px; display: flex; flex-direction: column; gap: 8px; flex: 1; }
.rd-pcard__sw { display: flex; gap: 6px; margin-bottom: 6px; }
.rd-pcard__sw span {
    width: 15px;
    height: 15px;
    border-radius: 50%;
    box-shadow: 0 0 0 1px rgba(255, 255, 255, .25) inset;
}
.rd-pcard__name {
    font-size: var(--fs-lg);
    font-weight: 700;
    color: var(--rd-white);
    line-height: var(--lh-tight);
    text-transform: uppercase;
    letter-spacing: var(--tr-caps-h3);
}
.rd-pcard__name:hover { color: #ff6a5d; }
.rd-pcard__rating { display: flex; align-items: center; gap: 6px; font-size: var(--fs-xs); color: var(--rd-txt-4); }
.rd-pcard__rating i { color: #6B6E76; font-style: normal; }
.rd-pcard__foot {
    margin-top: auto;
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding-top: 6px;
}
.rd-pcard__price { font-size: var(--fs-h3); font-weight: 600; color: var(--rd-white); text-transform: uppercase; }
.rd-pcard__ask { font-size: var(--fs-sm); font-weight: 600; color: rgba(255, 255, 255, .7); }
.rd-pcard__add {
    background: var(--rd-white);
    color: var(--rd-ink);
    border: 0;
    cursor: pointer;
    width: 34px;
    height: 34px;
    display: flex;
    align-items: center;
    justify-content: center;
    flex: none;
}
.rd-pcard__add:hover { background: var(--rd-brand); color: var(--rd-white); }

/* ==========================================================================
   SHOP BY NEED
   ========================================================================== */

.rd-needs {
    display: grid;
    grid-template-columns: repeat(6, minmax(0, 1fr));
    gap: 12px;
}
.rd-need {
    position: relative;
    display: block;
    aspect-ratio: 1 / 1;
    background: var(--rd-ink);
    overflow: hidden;
}
.rd-need__scrim {
    position: absolute;
    inset: 0;
    background: linear-gradient(180deg, rgba(21, 23, 28, 0) 40%, rgba(21, 23, 28, .85));
    pointer-events: none;
}
.rd-need__cap {
    position: absolute;
    left: 16px;
    bottom: 15px;
    display: flex;
    align-items: center;
    gap: 9px;
    pointer-events: none;
}
.rd-need__cap b {
    color: var(--rd-white);
    font-size: var(--fs-lg);
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: var(--tr-caps-h3);   /* +2% de tracking (abans -.01em) */
}

/* ==========================================================================
   ABOUT / EDITORIAL
   ========================================================================== */

.rd-about {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    overflow: hidden;
    background: var(--rd-white);
    border: 1px solid var(--rd-line);
}
/* Variant sense imatge: títol gran a l'esquerra + cos a la dreta, sense caixa. */
.rd-about--split {
    background: transparent;
    border: 0;
    gap: 64px;
    align-items: start;
}
.rd-about--split .rd-about__head { padding: 8px 0; }
/* Titular del About: EXACTAMENT el tractament del titular de hero (mateix
 * token de cos, mateix tracking de display i mateix interlineat), però en
 * vermell de marca. Segueix sent un <h2> a l'HTML. */
.rd-about--split .rd-about__title,
.rd-about--split .rd-value__lead {
    font-size: var(--fs-hero);
    font-weight: 800;
    line-height: var(--lh-tight);
    letter-spacing: var(--tr-display);
    text-transform: uppercase;
    color: var(--rd-brand);
    margin: 0;
}
/* Efecte de màquina d'escriure: només l'opacitat es mou, i el retard de cada
 * lletra el posa el JS inline. 'is-armed' l'afegeix el script, així sense JS
 * (o amb reduced-motion) el titular es veu sencer des del principi. */
/* Serveix per a qualsevol titular armat pel script (About i proposta de valor). */
.is-armed .rd-type__c { opacity: 0; }
.is-typing .rd-type__c {
    opacity: 1;
    transition: opacity .05s linear;
    /* transition-delay: el posa el JS a cada lletra */
}
.rd-about--split .rd-about__body { padding: 0; }
/* Proposta de valor (sota el hero): text destacat en NEGRE, caixa baixa i sense
 * CTA. No comparteix tractament amb el titular d'About, que és versal i vermell. */
/*
 * El destacat de la proposta de valor porta EL MATEIX tractament que el titular
 * d'About (versal, 800, vermell, cos de hero): és la regla de dalt. Aquí només
 * el repartiment de línies, que aquest text és més llarg.
 */
.rd-value__lead { text-wrap: balance; }
.rd-about--value .rd-about__head { padding: 0; }
.rd-about--value .rd-about__body p:last-child { margin-bottom: 0; }
@media (max-width: 900px) {
}
/* El CTA acompanya el text: no s'allunya en un bloc a part. */
.rd-about--split .rd-about__body p:last-of-type { margin-bottom: 0; }
.rd-about--split .rd-about__cta-wrap { margin-top: 22px; }
/* En aquesta secció el CTA no és un botó ple: enllaç de línia, tipografia
 * negra i filet a sota. */
.t2s-rd .rd-about--split a.rd-about__cta {
    background: none;
    color: var(--rd-ink);
    padding: 12px 25px;
    border: 1px solid currentColor;
    letter-spacing: var(--tr-caps-wide);
    transition: background .2s ease, color .2s ease, border-color .2s ease;
}
.t2s-rd .rd-about--split a.rd-about__cta:hover {
    background: var(--rd-ink);
    border-color: var(--rd-ink);
    color: var(--rd-white);
}
.rd-about--split .rd-about__body .is-lead { font-weight: 600; color: var(--rd-ink); font-size: var(--fs-lg); }
.rd-about__cta-wrap { margin-top: 30px; }
.t2s-rd a.rd-about__cta {
    display: inline-flex;
    align-items: center;
    gap: 12px;
    background: var(--rd-brand);
    color: var(--rd-white);
    font-size: var(--fs-sm);
    font-weight: 700;
    letter-spacing: var(--tr-caps);
    text-transform: uppercase;
    padding: 13px 26px;
    transition: background .25s ease, gap .25s ease;
}
.t2s-rd a.rd-about__cta:hover { background: var(--rd-brand-hover); color: var(--rd-white); }

/* El bloc "Sobre T2S" és una SECCIÓ pròpia, no la continuació del bloc de
 * climatologies: banda blanca a tot l'ample amb filets, sobre el paper gris. */
.rd-band-white {
    background: var(--rd-white);
    border-block: 1px solid var(--rd-line);
}

.rd-about__media { position: relative; min-height: 420px; background: #222; overflow: hidden; }
/* La foto ha de COBRIR tota la cel·la (retallant), no mostrar-se a mida
 * natural amb franja negra a sota. */
.rd-about__media img,
.rd-about__media .rd-media {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
}
.rd-about__body { padding: 52px; display: flex; flex-direction: column; justify-content: center; }
.rd-about__title { margin: 0 0 18px; }
.rd-about__body p { color: var(--rd-txt-2); font-size: var(--fs-base); line-height: var(--lh-body); margin: 0 0 14px; }
/* Cos del About en tipografia regular (petició client): res de negretes. */
.rd-about__body p strong, .rd-about__body p b { font-weight: 400; }
.rd-about__body p:last-of-type { margin-bottom: 26px; }
.rd-metrics { display: flex; gap: 36px; flex-wrap: wrap; }
.rd-metric b {
    display: block;
    font-size: var(--fs-metric);
    font-weight: 800;
    color: var(--rd-brand);
    line-height: var(--lh-display);
    text-transform: uppercase;
}
.rd-metric span {
    display: block;
    font-size: var(--fs-2xs);
    color: var(--rd-brand);
    font-weight: 700;
    letter-spacing: var(--tr-caps);
    margin-top: 6px;
    text-transform: uppercase;
}

/* ==========================================================================
   CLIENTS (marquee) + REVIEWS
   ========================================================================== */

.rd-social-proof { background: var(--rd-ink); color: var(--rd-white); }
.rd-social-proof__in { padding-block: 44px; }
.rd-clients__label {
    text-align: center;
    color: rgba(255, 255, 255, .55);
    font-size: var(--fs-xs);
    font-weight: 600;
    letter-spacing: var(--tr-caps-wide);
    text-transform: uppercase;
    margin-bottom: 38px;
}
.rd-marquee {
    overflow: hidden;
    -webkit-mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent);
    mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent);
    opacity: .85;
}
.rd-marquee__track {
    display: flex;
    align-items: center;
    width: max-content;
    gap: 72px;
    animation: rdMarquee 32s linear infinite;
}
.rd-marquee:hover .rd-marquee__track { animation-play-state: paused; }
/* Al hero el carrusel NO es pausa: ocupa la meitat baixa d'una secció de 620px
 * i el ratolí hi passa per sobre sense voler, cosa que semblava que s'aturés
 * sol. La pausa al hover es reserva per a un carrusel dins d'una secció pròpia,
 * on l'usuari sí que hi va a llegir els logos. */
.rd-hero__clients .rd-marquee:hover .rd-marquee__track { animation-play-state: running; }
@keyframes rdMarquee { from { transform: translateX(0) } to { transform: translateX(-50%) } }
/* Slot placeholder de logo (fins que el client pugi els logos reals) */
.rd-logo-ph {
    flex: none;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 150px;
    height: 46px;
    border: 1px dashed rgba(0, 0, 0, .18);
    border-radius: 3px;
    font-size: var(--fs-2xs);
    font-weight: 600;
    letter-spacing: var(--tr-caps-lg);
    color: var(--rd-txt-4);
    background: #fff;
    text-transform: uppercase;
}
/* Logos: alineació ÒPTICA, no per caixa — es limiten alçada I amplada i es
 * centren, així els logos amples i els de dues línies queden equilibrats. */
.rd-marquee__track img {
    max-height: 30px;
    max-width: 150px;
    width: auto;
    height: auto;
    object-fit: contain;
    flex: none;
    opacity: .85;
}

.rd-rule { height: 1px; background: rgba(255, 255, 255, .12); margin: 36px 0; }

.rd-reviews {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    gap: 40px;
    align-items: center;
}
.rd-score { text-align: center; flex: none; }
.rd-score__n { font-size: var(--fs-metric-xl); font-weight: 700; line-height: var(--lh-display); color: var(--rd-white); text-transform: uppercase; }
.rd-score__stars { color: var(--rd-brand); font-size: var(--fs-h3); letter-spacing: 2px; }
.rd-score__src { color: rgba(255, 255, 255, .6); font-size: var(--fs-xs); margin-top: 4px; }
.rd-reviews__grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 20px; }
.rd-review {
    background: rgba(255, 255, 255, .05);
    border: 1px solid var(--rd-line-dark);
    padding: 18px 20px;
}
.rd-review__stars { color: var(--rd-brand); font-size: var(--fs-sm); letter-spacing: 1px; margin-bottom: 8px; }
.rd-review p { color: rgba(255, 255, 255, .85); font-size: var(--fs-sm); line-height: var(--lh-relaxed); margin: 0 0 12px; }
.rd-review__name { font-size: var(--fs-xs); font-weight: 700; color: var(--rd-white); }
.rd-review__role { font-size: var(--fs-2xs); color: rgba(255, 255, 255, .5); }

/* ==========================================================================
   BLOG (home)
   ========================================================================== */

.rd-blog-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 20px; }
.rd-post {
    display: block;
    background: var(--rd-white);
    border: 1px solid var(--rd-line);
    overflow: hidden;
    color: inherit;
}
/* Els contenidors de la targeta són <span> dins d'un <a display:block>: sense
 * display:block es queden INLINE, i llavors aspect-ratio no s'aplica, la caixa
 * de la foto no té alçada i la imatge sortia a mida natural per damunt del text. */
.rd-post__media {
    display: block;
    position: relative;
    aspect-ratio: 16 / 9;
    overflow: hidden;
    background: var(--rd-paper);
}
.rd-post__body { display: block; padding: 20px 22px 24px; }
.rd-post__meta {
    font-size: var(--fs-2xs);
    font-weight: 700;
    letter-spacing: var(--tr-caps);
    text-transform: uppercase;
    color: var(--rd-brand);
    margin-bottom: 9px;
}
.rd-post__title {
    margin: 0 0 9px;
    font-size: var(--fs-h3);
    font-weight: 700;
    line-height: var(--lh-tight);
    color: var(--rd-ink);
    text-transform: uppercase;
    letter-spacing: var(--tr-caps-h3);
}
.rd-post__excerpt { color: var(--rd-txt-3); font-size: var(--fs-sm); line-height: var(--lh-relaxed); margin: 0 0 14px; }
/* CTA de la card de blog: "MÁS" SEMPRE visible i ANCLAT a baix de la card
 * (margin-top:auto). En repòs sense subratllat; al hover de la card apareix
 * el subratllat. Sense fletxa. */
.rd-post,
.rd-bpost { display: flex; flex-direction: column; }
.rd-post__body,
.rd-bpost__body { flex: 1 1 auto; display: flex; flex-direction: column; }
.rd-post__more,
.rd-bpost__more {
    margin-top: auto;               /* empeny el CTA al fons de la card */
    display: inline-flex;
    align-items: center;
    font-size: var(--fs-xs);
    font-weight: 700;
    letter-spacing: var(--tr-caps-wide);
    text-transform: uppercase;
    color: var(--rd-brand);
}
.rd-post__more { padding-top: 6px; }
.rd-post__more .txt,
.rd-bpost__more .txt {
    display: inline-block;
    padding-bottom: 4px;
    border-bottom: 1.5px solid transparent;
    transition: border-color .3s ease;
}
.rd-post:hover .rd-post__more .txt,
.rd-post:focus-within .rd-post__more .txt,
.rd-bpost:hover .rd-bpost__more .txt,
.rd-bpost:focus-within .rd-bpost__more .txt { border-color: currentColor; }

.rd-post__media .rd-media,
.rd-bpost__media .rd-media { transition: transform .5s ease; }
.rd-post:hover .rd-post__media .rd-media,
.rd-bpost:hover .rd-bpost__media .rd-media { transform: scale(1.04); }
.rd-post:hover .rd-post__title,
.rd-bpost:hover .rd-bpost__t { color: var(--rd-brand); }
.rd-post__title,
.rd-bpost__t { transition: color .3s ease; }
.rd-bpost__more { margin-top: auto; padding-top: 16px; }

/* ==========================================================================
   CONTACT CTA
   ========================================================================== */

.rd-cta-wrap { padding-block: 24px; }
.rd-cta {
    position: relative;
    overflow: hidden;
    background: var(--rd-brand);
    padding: 64px 56px;
    display: grid;
    /* Segona columna AUTO: abans era 1fr i el botó s'estirava fins a ~500px,
     * que llegia com una barra blanca i no com una crida a l'acció.
     * align-items:end alinea les accions amb el peu del paràgraf, en lloc de
     * deixar-les surant al centre d'una columna més curta. */
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 40px 56px;
    align-items: end;
    min-height: 320px;
}
.rd-cta__deco {
    position: absolute;
    right: -30px;
    top: -30px;
    width: 220px;
    height: 220px;
    background: repeating-linear-gradient(45deg, rgba(255, 255, 255, .12) 0 16px, transparent 16px 32px);
}
/* Variant amb foto de fons. L'overlay és fosc i decreix cap a la dreta: fosc
 * a la columna del text i gairebé net al costat dels botons, que ja porten
 * fons propi. Amb un overlay VERMELL la foto desapareixia (és una peça
 * taronja sobre negre: el vermell l'aixafava del tot).
 * Contrast del text blanc mesurat sobre la foto composada, sense píxels de
 * text (veure el commit per la taula per amplades). Sense overlay era 2,3:1,
 * il·legible. Passa AA de cos a totes les amplades provades. */
.rd-cta--photo { background: var(--rd-ink); }
/* Enquadrament centrat: sense això la foto es llegia per una vora fosca. */
.rd-cta > .rd-media { object-position: center; }
.rd-cta__scrim {
    position: absolute;
    inset: 0;
    /* Més suau que abans (.80/.62/.20): amb la foto fosca del producte el text
     * segueix passant AA i ara la peça es veu. */
    background: linear-gradient(90deg,
        rgba(11, 12, 14, .66) 0%,
        rgba(11, 12, 14, .44) 45%,
        rgba(11, 12, 14, .10) 100%);
}
/* Mesura del text: sense límit el titular s'estirava en una sola línia de
 * gairebé 1100px. Amb 620px cau en dues i la composició es tanca. */
.rd-cta__body { position: relative; max-width: 620px; }
/* Tagline: la classe .rd-eyebrow del sistema, en variant clara. El vermell de
 * marca sobre aquest fons fosc dona 2,6:1 (il·legible a 12px); el blanc, 18:1.
 * Aquí només s'obre una mica la separació amb el titular. */
.rd-cta__eyebrow { margin: 0 0 26px; }
.rd-cta__title { margin: 0 0 22px; }
/* :not(.rd-eyebrow) — aquesta regla (0,1,1) guanyava a .rd-eyebrow (0,1,0) i
 * el tagline sortia a 15px, en gris i sense marge inferior. */
.rd-cta__body p:not(.rd-eyebrow) { color: rgba(255, 255, 255, .9); font-size: var(--fs-base); line-height: var(--lh-body); margin: 0; max-width: 460px; }
.rd-cta__actions {
    position: relative;
    display: flex;
    flex-direction: column;
    align-items: stretch;   /* els botons comparteixen amplada entre ells... */
    gap: 12px;
}
.rd-cta__actions > * { min-width: 260px; }   /* ...però no s'estiren a tota la columna */
.rd-cta__btn {
    background: var(--rd-white);
    /* Text en negre; en passar-hi el ratolí, fons vermell i text blanc. */
    color: var(--rd-ink);
    border: 0;
    cursor: pointer;
    font-weight: 700;
    font-size: var(--fs-sm);
    letter-spacing: var(--tr-caps);
    text-transform: uppercase;
    padding: 13px 26px;
    text-align: center;
    text-decoration: none;
    transition: background .25s ease, color .25s ease;
}
.rd-cta__btn:hover { background: var(--rd-brand); color: var(--rd-white); }
.rd-cta__btn--ghost {
    background: transparent;
    color: var(--rd-white);
    border: 1px solid rgba(255, 255, 255, .6);
    padding: 12px 25px;   /* descompta el border: mateixa caixa que la sòlida */
}
.rd-cta__btn--ghost:hover { border-color: var(--rd-white); background: transparent; color: var(--rd-white); }

/* ==========================================================================
   FOOTER
   ========================================================================== */

.rd-footer { background: var(--rd-ink); color: var(--rd-white); margin-top: 40px; }
.rd-footer__grid {
    display: grid;
    grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1.2fr);
    gap: 40px;
    padding: 56px var(--rd-gutter) 30px;
    max-width: var(--rd-max);
    margin: 0 auto;
}
.rd-footer__about p { color: rgba(255, 255, 255, .6); font-size: var(--fs-sm); line-height: var(--lh-body); margin: 0 0 16px; max-width: 280px; }
.rd-footer__logo { display: block; margin-bottom: 18px; }
.rd-socials { display: flex; gap: 10px; }
.rd-socials a {
    width: 34px;
    height: 34px;
    border: 1px solid rgba(255, 255, 255, .2);
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--rd-white);
}
.rd-socials a:hover { background: var(--rd-brand); border-color: var(--rd-brand); color: var(--rd-white); }
.rd-footer__title {
    font-size: var(--fs-sm);
    font-weight: 700;
    letter-spacing: var(--tr-caps);
    color: var(--rd-white);
    margin-bottom: 16px;
    text-transform: uppercase;
}
.rd-footer__title--brand { color: var(--rd-white); margin-bottom: 14px; }
.rd-footer__addr { color: rgba(255, 255, 255, .7); font-size: var(--fs-sm); line-height: var(--lh-loose); }
.rd-footer__addr strong { color: var(--rd-white); }
.rd-footer__addr a { color: rgba(255, 255, 255, .7); }
.rd-footer__addr a:hover { color: var(--rd-white); }
.rd-footer__list { display: flex; flex-direction: column; gap: 10px; margin: 0; padding: 0; list-style: none; }
.rd-footer__list a { color: rgba(255, 255, 255, .7); font-size: var(--fs-sm); }
.rd-footer__list a:hover { color: var(--rd-white); }
.rd-footer__list--legal { gap: 9px; }
.rd-footer__list--legal a { font-size: var(--fs-sm); }
.rd-footer__bar { border-top: 1px solid var(--rd-line-dark); }
.rd-footer__bar-in {
    max-width: var(--rd-max);
    margin: 0 auto;
    padding: 18px var(--rd-gutter);
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 10px;
}
.rd-footer__copy { color: rgba(255, 255, 255, .45); font-size: var(--fs-xs); }
.rd-footer__badges { display: flex; gap: 20px; align-items: center; flex-wrap: wrap; }
.rd-footer__badges span { color: rgba(255, 255, 255, .35); font-size: var(--fs-2xs); border: 1px solid rgba(255, 255, 255, .2); padding: 5px 9px; border-radius: 3px; }
.rd-footer__badges img { height: 40px; width: auto; opacity: .9; }

/* ==========================================================================
   RESPONSIVE
   ========================================================================== */

/* Franja de 4 columnes estretes (1201–1400px): amb el tracking obert, la
 * paraula "RETRORREFLECTANTES" no cap dins de la card a 19px. Un escaló de cos
 * ho resol sense tancar el tracking. Per sota de 1200px la graella passa a 3
 * columnes i la card torna a ser prou ampla. */
@media (min-width: 1201px) and (max-width: 1400px) {
    .rd-gama__name { font-size: var(--fs-lg); }
}

@media (max-width: 1200px) {
    /* El CTA baixa amb els ítems del menú: han de tenir la mateixa mida. */
    .rd-btn-quote { font-size: var(--fs-2xs); }

    /* Amb sis apartats el menú hi cap a 12px fins a 1200px exactes (mesurat
     * amb Chromium); per sota, un escaló de mida i tracking. */
    .rd-cat-link { font-size: var(--fs-2xs); letter-spacing: var(--tr-caps-lg); }
    .rd-cats-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
    .rd-best__grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
    .rd-needs { grid-template-columns: repeat(3, minmax(0, 1fr)); }
    .rd-mega__in { min-height: 0; grid-template-columns: repeat(3, minmax(0, 1fr)); }
    .rd-mega__feature { display: none; }
    .rd-footer__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 1023px) {
    .rd-burger { display: flex; }
    .rd-cats-row { display: none; }
    .rd-cats-row.is-open { display: block; }
    /* Menú desplegat: UNA sola columna. En fila embolicada, "T2S Ibérica" i la
     * primera categoria compartien línia i el menú es veia descuadrat. */
    .rd-cats-nav { flex-direction: column; align-items: stretch; flex-wrap: nowrap; gap: 0; }
    /* Cada apartat, un bloc: en flex, l'enllaç i el seu desplegable quedaven
     * l'un al costat de l'altre. */
    .rd-cats-nav > li { display: block; width: 100%; }
    .rd-cats-nav > li.rd-cats-nav__sep { display: none; }   /* filet vertical: no hi té sentit */
    .rd-cat-link {
        display: flex;
        align-items: center;
        justify-content: space-between;
        width: 100%;
        padding: 14px 0;
        border-bottom: 1px solid var(--rd-line);
    }
    /* El CTA de pressupost, a peu de panell i a tota l'amplada. */
    .rd-btn-quote--panel {
        display: flex;
        justify-content: center;
        margin: 16px 0 20px;
        width: 100%;
    }
    .rd-mega { position: static; transform: none; max-width: none; border: 0; box-shadow: none; }
    /* El desplegable és una GRAELLA: al mòbil ha de ser d'UNA columna. Amb
     * flex-direction no passava res (no és flex) i les quatre columnes es
     * quedaven a 34px d'ample, amb els títols tallats i scroll horitzontal. */
    .rd-mega__in {
        display: block;
        padding: 4px 0 16px;
        min-height: 0;
    }
    .rd-mega__in::before,
    .rd-mega__in::after { display: none; }        /* filets divisoris de columna */
    .rd-mega__col { min-width: 0; }
    .rd-mega__col + .rd-mega__col { margin-top: 18px; }
    .rd-mega__col + .rd-mega__col::before { display: none; }   /* filet de columna */
    .rd-mega__col--stack { gap: 18px; }
    .rd-mega__grp + .rd-mega__grp { margin-top: 18px; }
    .rd-mega__col-title { margin-bottom: 10px; }
    .rd-mega__links { gap: 10px; }
    /* El destacat amb foto no cap dins d'un desplegable de mòbil. */
    .rd-mega__feature { display: none; }
    .rd-trust__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .rd-hero__stats { gap: 36px 56px; padding-top: 48px; }
    .rd-hero__clients { padding-top: 48px; }
    .rd-about { grid-template-columns: minmax(0, 1fr); }
    .rd-about--split { gap: 28px; }
    .rd-about__body { padding: 32px 24px; }
    .rd-reviews { grid-template-columns: minmax(0, 1fr); }
    .rd-reviews__grid { grid-template-columns: minmax(0, 1fr); }
    .rd-blog-grid { grid-template-columns: minmax(0, 1fr); }
    .rd-cta { grid-template-columns: minmax(0, 1fr); padding: 36px 24px; min-height: 0; align-items: start; }
    /* En una sola columna el text creua tota la caixa i arriba a la banda
     * clara del degradat: allà el contrast queia a 3,8:1. Scrim PLA, que dona
     * 12,9:1 mesurats i encara deixa veure la foto. */
    .rd-cta__scrim { background: rgba(11, 12, 14, .78); }
    .rd-cta__actions > * { min-width: 0; }
    /* El cos del hero passa a anar EN FLUX i el hero es fa columna flex: el
     * contingut reparteix l'espai (titular a dalt, logos ancorats al peu) i el
     * hero creix amb el text en comptes de tallar-lo. */
    .rd-hero { display: flex; flex-direction: column; min-height: 620px; }
    .rd-hero__body { position: relative; flex: 1; }
    .rd-hero__inner { flex: 1; padding-block: 48px; }
    .rd-hero__content { display: flex; flex-direction: column; flex: 1; }
    /* Enquadre del vídeo: es veu més tros de la banda dreta (el subjecte). */
    .rd-hero__video { object-position: 68% center; }
}

@media (max-width: 700px) {
    /* Taula heretada de l'excerpt: la primera columna fixa de 180px es menjava
     * mitja pantalla al mòbil. */
    .rd-pdp__excerpt table td:first-child,
    .rd-pdp__excerpt table th:first-child { width: auto; }
    /* Ornament decoratiu del CTA: al mòbil només fa soroll. */
    .rd-cta__deco { display: none; }
    /* Els cossos GRANS es defineixen al token, no a cada classe: així tots els
     * H1 de la web (hub, subcategoria, fitxa, article, pàgina) hi caben sense
     * partir cap paraula. A 320px la caixa útil és de 284px i la paraula més
     * llarga del catàleg, "RETRORREFLECTÓMETROS", demana com a màxim 21px. */
    .t2s-rd {
        --rd-gutter: 18px;
        --rd-section-y: 48px;
        /* TOTA l'escala tipogràfica, no classe per classe: així el canvi val per
         * a la home, el catàleg, les fitxes, el blog i les pàgines. */
        --fs-display: clamp(21px, 6vw, 30px);
        --fs-hero: clamp(21px, 5.9vw, 28px);
        --fs-h1: clamp(20px, 5.6vw, 24px);
        --fs-h2: clamp(18px, 5vw, 21px);
        --fs-h3: 17px;
        --fs-metric: 30px;
        --fs-metric-xl: 42px;
    }
    /* Les cards de GAMA van d'una columna: en dues, la caixa fa 139px i cap nom
     * del catàleg ("CINTAS RETRORREFLECTANTES") hi cap sense partir-se. Les de
     * producte i de necessitat sí que van de dues: els noms hi caben. */
    .rd-cats-grid { grid-template-columns: minmax(0, 1fr); }
    .rd-best__grid,
    .rd-needs { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    /* 18 caràcters en versal ("RETRORREFLECTANTES") dins de 284px (320px menys
     * els marges) demanen com a màxim 24px de cos: és el sostre de --fs-h1. */

    .rd-hero__stat-t { font-size: var(--fs-h1); }
    .rd-hero__stats { gap: 28px 40px; }

    /* HERO al mòbil: 60% de l'alçada de la finestra (l'estructura flex ja ve del
     * bloc de tauleta). Si el text creix, el hero creix amb ell. */
    .rd-hero { min-height: 60vh; min-height: 60svh; }
    .rd-hero__inner { padding-block: 32px; }

    .rd-hero__sub { font-size: var(--fs-sm); }
    .rd-hero__ctas { margin-top: 20px; }
    .rd-hero__clients { max-width: none; padding-top: 44px; }
    .rd-hero__clients-label { margin-bottom: 12px; }
    /*
     * LLEGIBILITAT DEL HERO AL MÒBIL. Els dos tints són decoratius (multiply amb
     * un degradat que acaba en blanc): sobre les zones clares del vídeo —la peça
     * groga— el titular blanc quedava a 1,7:1 mesurats, il·legible. S'hi posa un
     * scrim fosc de debò, que és el que garanteix el contrast, i els tints
     * baixen d'opacitat per no enfangar el color.
     */
    .rd-hero__tint { opacity: .5; }
    .rd-hero::after {
        content: "";
        position: absolute;
        inset: 0;
        z-index: 1;
        pointer-events: none;
        background: linear-gradient(180deg,
            rgba(12, 14, 18, .72) 0%,
            rgba(12, 14, 18, .62) 55%,
            rgba(12, 14, 18, .78) 100%);
    }
    /* Sense degradat a la dreta: al mòbil tallava el logo pel mig. */
    .rd-hero__clients .rd-marquee {
        -webkit-mask-image: linear-gradient(90deg, transparent 0, #000 4%, #000 92%, transparent 100%);
        mask-image: linear-gradient(90deg, transparent 0, #000 4%, #000 92%, transparent 100%);
    }
    .rd-hero__clients .rd-marquee__track { gap: 26px; }
    .rd-hero__clients .rd-marquee__track img { max-height: 20px; max-width: 96px; }

    /* Cards de gama: el nom més curt de cos, i una mica més d'alçada de card
     * perquè el títol de tres línies no toqui la descripció. */
    /* Card ampla: en una columna, un quadrat de 354px d'ample feia 425px d'alt i
     * la graella s'eternitzava. En 16:9 fa 199px, un 53% menys. */
    .rd-gama { aspect-ratio: 16 / 9; }
    .rd-gama__name { letter-spacing: var(--tr-caps); }
    .rd-gama__cap { left: 14px; right: 14px; bottom: 14px; }

    /* Prova social i CTA: menys aire vertical, que al mòbil s'estiraven. */
    .rd-social-proof__in { padding-block: 28px; }
    .rd-cta { padding: 28px 20px; gap: 22px; }
    .rd-cta__actions { margin-top: 4px; }
    .rd-footer__grid { grid-template-columns: minmax(0, 1fr); gap: 28px; }
    .rd-topbar__nav { display: none; }
    .rd-util { gap: 10px; }
    .rd-btn-quote:not(.rd-btn-quote--panel) { display: none; }
}

@media (prefers-reduced-motion: reduce) {
    .rd-marquee__track { animation: none; }
    [data-rd-mega]:not([hidden]),
    [data-rd-mega]:not([hidden]) .rd-mega__col,
    [data-rd-mega]:not([hidden]) .rd-mega__feature { animation: none; }
    .rd-lift, .rd-gama__body, .rd-gama__more, .rd-gama__scrim { transition: none; }
    .rd-post__more, .rd-bpost__more, .rd-post__media .rd-media,
    .rd-bpost__media .rd-media, .rd-post__title, .rd-bpost__t { transition: none; }
}

/* ==========================================================================
   CATEGORIA (arxiu de producte)
   ========================================================================== */

/* Hero de categoria: 360px, scrim i títol centrat */
.rd-cathero { position: relative; overflow: hidden; background: var(--rd-ink); height: 360px; }
.rd-cathero__scrim {
    position: absolute;
    inset: 0;
    background: linear-gradient(rgba(21, 23, 28, .55), rgba(21, 23, 28, .45));
    pointer-events: none;
}
.rd-cathero__crumbs {
    position: absolute;
    top: 20px;
    left: 50%;
    transform: translateX(-50%);
    width: 100%;
    max-width: var(--rd-max);
    padding-inline: var(--rd-gutter);
    z-index: 2;
    font-size: var(--fs-xs);
    color: rgba(255, 255, 255, .8);
}
.t2s-rd .rd-cathero__crumbs a { color: rgba(255, 255, 255, .8); }
.t2s-rd .rd-cathero__crumbs a:hover { color: #fff; }
.rd-cathero__crumbs .sep { color: rgba(255, 255, 255, .45); }
.rd-cathero__crumbs .cur { color: #fff; font-weight: 600; }
.rd-cathero__body {
    position: absolute;
    inset: 0;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    text-align: center;
    padding: 0 24px;
    pointer-events: none;
}
.rd-cathero__title {
    margin: 0;
    color: #fff;
    font-size: var(--fs-display);
    font-weight: 800;
    line-height: var(--lh-display);
    text-transform: uppercase;
    letter-spacing: var(--tr-tight);
}
.rd-cathero__sub {
    color: #fff;
    font-size: var(--fs-lg);
    font-weight: 400;
    line-height: var(--lh-relaxed);
    margin: 18px 0 0;
    max-width: 580px;
}

/* Layout sidebar + graella */
.rd-shop {
    display: grid;
    grid-template-columns: 260px minmax(0, 1fr);
    gap: 36px;
    align-items: start;
    padding-block: 40px;
}

/* Filtres */
.rd-filters { position: sticky; top: var(--rd-sticky-top); }
.rd-filters__head {
    text-transform: uppercase;
    font-size: var(--fs-base);
    font-weight: 700;
    letter-spacing: var(--tr-caps-lg);
    margin-bottom: 16px;
    padding-bottom: 12px;
    border-bottom: 1px solid #d0d3d8;   /* línia divisòria grisa (no negra) */
}
.rd-fgroup { margin-bottom: 24px; }
.rd-fgroup__title {
    font-size: var(--fs-xs);
    font-weight: 700;
    letter-spacing: var(--tr-caps);
    text-transform: uppercase;
    color: var(--rd-txt-4);
    margin-bottom: 11px;
}
.rd-flist { display: flex; flex-direction: column; gap: 2px; margin: 0; padding: 0; list-style: none; }
.t2s-rd .rd-flist a {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 14px;
    padding: 7px 10px;
    border-radius: 3px;
    font-size: var(--fs-sm);
    font-weight: 500;
    line-height: var(--lh-normal);
    color: var(--rd-ink);
    background: transparent;
}
.rd-flist a > span:first-child { flex: 1; min-width: 0; }
.t2s-rd .rd-flist a:hover { background: var(--rd-paper); color: var(--rd-ink); }
.t2s-rd .rd-flist a.is-active { background: var(--rd-paper); font-weight: 700; color: var(--rd-brand); }
.rd-flist .count { flex: none; font-size: var(--fs-xs); color: var(--rd-txt-4); }

.rd-swatches { display: flex; flex-wrap: wrap; gap: 9px; margin: 0; padding: 0; list-style: none; }
.rd-swatches span,
.t2s-rd .rd-swatches a {
    display: block;
    width: 26px;
    height: 26px;
    border-radius: 50%;
    box-shadow: 0 0 0 1px rgba(0, 0, 0, .15) inset;
}
.t2s-rd .rd-swatches a:hover { box-shadow: 0 0 0 2px var(--rd-ink); }

.rd-sizes { display: flex; flex-wrap: wrap; gap: 7px; margin: 0; padding: 0; list-style: none; }
.t2s-rd .rd-sizes a,
.rd-sizes span {
    display: block;
    min-width: 34px;
    text-align: center;
    padding: 6px 8px;
    border: 1px solid rgba(0, 0, 0, .16);
    border-radius: 3px;
    font-size: var(--fs-xs);
    font-weight: 600;
    color: var(--rd-ink);
}
.t2s-rd .rd-sizes a:hover { border-color: var(--rd-ink); background: var(--rd-ink); color: #fff; }

.rd-checks { display: flex; flex-direction: column; gap: 9px; margin: 0; padding: 0; list-style: none; }
.t2s-rd .rd-checks a {
    display: flex;
    align-items: center;
    gap: 9px;
    font-size: var(--fs-sm);
    color: var(--rd-ink);
}
.rd-checks .box { width: 16px; height: 16px; border: 1px solid #c5c5c5; border-radius: 3px; flex: none; }
.t2s-rd .rd-checks a.is-active .box { background: var(--rd-ink); border-color: var(--rd-ink); }
.t2s-rd .rd-checks a.is-active { font-weight: 700; }
.rd-checks .count { margin-left: auto; font-size: var(--fs-xs); color: var(--rd-txt-4); }
.t2s-rd .rd-swatches a.is-active { box-shadow: 0 0 0 2px var(--rd-ink); }
.t2s-rd .rd-sizes a.is-active { border-color: var(--rd-ink); background: var(--rd-ink); color: #fff; }

/* Filtres actius (xips) — apareixen només quan hi ha alguna cosa marcada. */
.rd-fchips { display: flex; flex-wrap: wrap; gap: 7px; margin: 0 0 20px; }
.t2s-rd .rd-fchip {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    padding: 5px 9px;
    border: 1px solid rgba(0, 0, 0, .16);
    border-radius: 3px;
    background: #fff;
    font-size: var(--fs-xs);
    font-weight: 600;
    color: var(--rd-ink);
}
.t2s-rd .rd-fchip:hover { border-color: var(--rd-brand); color: var(--rd-brand); }
.rd-fchip i { font-style: normal; font-size: var(--fs-sm); line-height: var(--lh-display); color: var(--rd-txt-3); }
.t2s-rd .rd-fclear {
    align-self: center;
    font-size: var(--fs-xs);
    font-weight: 600;
    color: var(--rd-brand);
    text-decoration: underline;
    background: none;
    border: 0;
    padding: 0;
    cursor: pointer;
}

/* Barra de resultats */
.rd-results {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 20px;
    flex-wrap: wrap;
    gap: 12px;
}
.rd-results__count { font-size: var(--fs-sm); color: var(--rd-txt-3); }
.rd-results__count strong { color: var(--rd-ink); }
.rd-results__sort { display: flex; align-items: center; gap: 10px; font-size: var(--fs-sm); margin: 0; }
.rd-results__sort > span { color: var(--rd-txt-3); white-space: nowrap; }
/* Especificitat amb .t2s-rd: el CSS de WooCommerce també estilitza el
 * <select> d'ordenació i el feia gegant. appearance:none + fletxa pròpia
 * perquè es vegi igual que la "pastilla" del handoff. */
.t2s-rd .rd-results__sort select,
.t2s-rd .rd-results__sort .orderby {
    -webkit-appearance: none;
    appearance: none;
    border: 1px solid rgba(0, 0, 0, .16);
    border-radius: 3px;
    padding: 8px 32px 8px 12px;
    margin: 0;
    width: auto;
    max-width: 260px;
    height: auto;
    min-height: 0;
    line-height: var(--lh-snug);
    font-size: var(--fs-sm);
    font-weight: 600;
    background-color: #fff;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%2315171C' stroke-width='2.5'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 11px center;
    color: var(--rd-ink);
    cursor: pointer;
    box-shadow: none;
}
.t2s-rd .rd-results__sort form { margin: 0; }

/* Graella de productes (fons clar) */
.rd-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 18px; }
.rd-grid--4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }

/* Paginació del catàleg (estil redesign, icones Lucide chevron). */
.rd-pag {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
    margin-top: 36px;
}
.t2s-rd .rd-pag .page-numbers {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 42px;
    height: 42px;
    padding: 0 12px;
    border: 1px solid var(--rd-line);
    background: #fff;
    color: var(--rd-ink);
    font-size: var(--fs-sm);
    font-weight: 600;
    line-height: var(--lh-display);
    text-decoration: none;
    transition: background .18s, color .18s, border-color .18s;
}
.t2s-rd .rd-pag a.page-numbers:hover { border-color: var(--rd-ink); }
.t2s-rd .rd-pag .page-numbers.current {
    background: var(--rd-brand);
    border-color: var(--rd-brand);
    color: var(--rd-white);
}
.t2s-rd .rd-pag .page-numbers.dots {
    border-color: transparent;
    background: transparent;
    min-width: 24px;
    padding: 0;
}
.t2s-rd .rd-pag .page-numbers.prev,
.t2s-rd .rd-pag .page-numbers.next { padding: 0; width: 42px; }
.t2s-rd .rd-pag .page-numbers svg { width: 18px; height: 18px; display: block; }

.rd-lcard {
    background: #fff;
    border: 1px solid var(--rd-line);
    overflow: hidden;
    display: flex;
    flex-direction: column;
}
.rd-lcard__media {
    position: relative;
    display: block;
    aspect-ratio: 1 / 1;
    overflow: hidden;
    background: #fff;
    border-bottom: 1px solid rgba(0, 0, 0, .06);
}
/* Marc interior: amb la foto a sang, els packshots i les fotos d'ambient es
 * llegien com dues coses diferents dins de la mateixa graella. */
.rd-lcard__media .rd-media,
.rd-lcard__media .rd-ph { inset: 12px; }
.rd-lcard__tag {
    position: absolute;
    top: 10px;
    left: 10px;
    z-index: 2;
    font-size: var(--fs-2xs);
    font-weight: 700;
    letter-spacing: var(--tr-caps);
    text-transform: uppercase;
    padding: 4px 8px;
}
.rd-lcard__body { padding: 14px 15px 16px; display: flex; flex-direction: column; gap: 8px; flex: 1; }
.rd-lcard__sw { display: flex; gap: 6px; margin-bottom: 6px; }
.rd-lcard__sw span {
    width: 15px;
    height: 15px;
    border-radius: 50%;
    box-shadow: 0 0 0 1px rgba(0, 0, 0, .15) inset;
}
.t2s-rd .rd-lcard__name {
    font-size: var(--fs-lg);
    font-weight: 700;
    color: var(--rd-ink);
    line-height: var(--lh-tight);
    text-transform: uppercase;
    letter-spacing: var(--tr-caps-h3);
}
.t2s-rd .rd-lcard__name:hover { color: var(--rd-brand); }
.rd-lcard__rating { display: flex; align-items: center; gap: 6px; font-size: var(--fs-xs); color: var(--rd-txt-3); }
.rd-lcard__rating i { color: var(--rd-txt-4); font-style: normal; }
.rd-lcard__foot {
    margin-top: auto;
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding-top: 6px;
}
.rd-lcard__price { font-size: var(--fs-h3); font-weight: 600; text-transform: uppercase; color: var(--rd-ink); }
.rd-lcard__price del { opacity: .5; font-weight: 500; font-size: var(--fs-base); }
.rd-lcard__ask { font-size: var(--fs-sm); font-weight: 600; color: var(--rd-txt-3); }
.t2s-rd .rd-lcard__add {
    background: var(--rd-ink);
    color: #fff;
    width: 34px;
    height: 34px;
    display: flex;
    align-items: center;
    justify-content: center;
    flex: none;
    border: 0;
    cursor: pointer;
}
.t2s-rd .rd-lcard__add:hover { background: var(--rd-brand); color: #fff; }
/* Carret INACTIU (producte no comprable): visible però sense acció. */
.t2s-rd .rd-lcard__add.is-disabled {
    background: #e6e6e6;
    color: #9a9da4;
    cursor: default;
    pointer-events: none;
}

/* Bloc SEO */
.rd-seo {
    margin-top: 56px;
    background: #fff;
    border: 1px solid var(--rd-line);
    padding: 52px 56px;
}
.rd-seo h2 {
    margin: 0 0 22px;
    max-width: 760px;
}
.rd-seo h3 {
    margin: 40px 0 14px;
    font-size: var(--fs-h3);
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: var(--tr-caps-h3);
}
.rd-seo p, .rd-seo li { color: var(--rd-txt-2); font-size: var(--fs-base); line-height: var(--lh-body); }
.rd-seo p { margin: 0 0 14px; }
/* Rètols en negreta dins del cos (Camisetas:, Chalecos:…) → tinta, no vermell. */
.rd-seo strong, .rd-seo b { color: var(--rd-ink); font-weight: 700; }
/* Llista reformatada des de les fletxes (→) del contingut heretat. */
.rd-seo-list { list-style: none; margin: 0 0 20px; padding: 0; }
.rd-seo-list > li {
    position: relative;
    padding-left: 22px;
    margin-bottom: 14px;
    color: var(--rd-txt-2);
    font-size: var(--fs-base);
    line-height: var(--lh-body);
}
.rd-seo-list > li::before {
    content: "";
    position: absolute;
    left: 2px;
    top: 11px;
    width: 7px;
    height: 7px;
    border-radius: 50%;
    background: var(--rd-brand);
}
.rd-seo-list > li strong:first-child,
.rd-seo-list > li b:first-child { color: var(--rd-ink); }
.rd-seo__cta {
    background: var(--rd-ink);
    padding: 30px 40px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 24px;
    flex-wrap: wrap;
    margin-top: 36px;
}
.rd-seo__cta-t {
    color: #fff;
    font-size: var(--fs-h2);
    font-weight: 700;
    line-height: var(--lh-tight);
    text-transform: uppercase;
    letter-spacing: var(--tr-tight);
}
.t2s-rd .rd-seo__cta-b {
    background: var(--rd-brand);
    color: #fff;
    font-weight: 700;
    font-size: var(--fs-sm);
    padding: 13px 26px;
    border: 0;
    flex: none;
    text-transform: uppercase;
    letter-spacing: var(--tr-caps);
}
.t2s-rd .rd-seo__cta-b:hover { background: var(--rd-brand-hover); color: #fff; }

/* Bloc CTA amb foto de categoria de fons + scrim + botó blanc a pressupost. */
.rd-seo-cta {
    position: relative;
    overflow: hidden;
    /* Full-bleed DINS del bloc SEO (compensa el padding 52/56 de .rd-seo). */
    margin: 44px -56px -52px;
    padding: 56px;
    background: var(--rd-ink) center / cover no-repeat;
    color: var(--rd-white);
}
.rd-seo-cta__scrim {
    position: absolute;
    inset: 0;
    /* Ombra negra per a la llegibilitat del text sobre la foto. */
    background: linear-gradient(90deg, rgba(13, 14, 16, .9) 0%, rgba(13, 14, 16, .75) 50%, rgba(13, 14, 16, .55) 100%);
    pointer-events: none;
}
.rd-seo-cta__in { position: relative; z-index: 1; max-width: 780px; }
.rd-seo-cta__in > :first-child { margin-top: 0; }
.rd-seo-cta__in h3 { color: var(--rd-white); font-size: var(--fs-h2); line-height: var(--lh-tight); letter-spacing: var(--tr-caps-h3); }
.rd-seo-cta__in p { color: rgba(255, 255, 255, .88); }
.t2s-rd .rd-seo-cta__in a:not(.rd-seo-cta__btn) { color: #fff; text-decoration: underline; }
.rd-seo-cta__btn {
    display: inline-flex;
    align-items: center;
    margin-top: 22px;
    padding: 13px 26px;
    background: var(--rd-white);
    color: var(--rd-ink);
    font-size: var(--fs-sm);
    font-weight: 700;
    text-decoration: none;
    transition: background .2s, transform .2s;
    text-transform: uppercase;
    letter-spacing: var(--tr-caps);
}
.t2s-rd .rd-seo-cta__btn { color: var(--rd-ink); }
.t2s-rd .rd-seo-cta__btn:hover { background: var(--rd-brand); color: #fff; }

/* Cabecera de categoria: enquadre SEMPRE al centre vertical (reforç anti-caché). */
.rd-cathero .rd-media { object-position: center !important; }

/* FAQ */
.rd-faq {
    margin-top: 56px;
    /* Tanca la secció: al handoff el contenidor té 40px de padding inferior
     * després del bloc de FAQ. Sense això el card tocava el peu. */
    margin-bottom: 40px;
    background: #fff;
    border: 1px solid var(--rd-line);
    padding: 56px 48px;
    display: grid;
    /* Columnes 30 / 60: el titular té aire i les preguntes, amplada de sobres. */
    grid-template-columns: minmax(0, 3fr) minmax(0, 6fr);
    gap: 96px;
    align-items: start;
}
.rd-faq__kicker {
    color: var(--rd-txt-4);
    font-size: var(--fs-xs);
    font-weight: 500;
    letter-spacing: var(--tr-caps-wide);
    text-transform: uppercase;
    margin-bottom: 14px;
}
.rd-faq__h { margin: 0; }
.rd-faq__list { display: flex; flex-direction: column; }
.rd-faq__item { border-bottom: 1px solid rgba(0, 0, 0, .12); }
.rd-faq__q {
    width: 100%;
    background: none;
    border: 0;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 20px;
    text-align: left;
    padding: 22px 4px;
    font-size: var(--fs-h3);
    font-weight: 500;
    color: var(--rd-ink);
}
.rd-faq__q:hover { color: var(--rd-brand); }
.rd-faq__q[aria-expanded="true"] { font-weight: 700; }
.rd-faq__q svg { flex: none; transition: transform .3s ease; }
.rd-faq__q[aria-expanded="true"] svg { transform: rotate(180deg); }
.rd-faq__a {
    padding: 0 4px 24px;
    color: var(--rd-txt-2);
    font-size: var(--fs-base);
    line-height: var(--lh-body);
    max-width: 760px;
    animation: rdFaq .3s ease;
}
.rd-faq__a[hidden] { display: none; }
@keyframes rdFaq { from { opacity: 0; transform: translateY(-6px) } to { opacity: 1; transform: translateY(0) } }
.rd-faq__list > .rd-faq__item:first-child > .rd-faq__q { padding-top: 0; }

/* ==========================================================================
   PRODUCTE (fitxa)
   ========================================================================== */

/* El gutter és el del contenidor únic: sense això la fitxa anava 28px més
 * ampla que la resta de seccions i el CTA quedava desalineat. */
.rd-pdp { padding: 22px var(--rd-gutter) 40px; }
/* Les migues van a 12px: una mica de tracking o es llegeixen apretades. */
.rd-crumbs { font-size: var(--fs-xs); letter-spacing: .025em; color: var(--rd-txt-3); margin-bottom: 26px; }
.t2s-rd .rd-crumbs a { color: var(--rd-txt-3); }
.t2s-rd .rd-crumbs a:hover { color: var(--rd-ink); }
.rd-crumbs .sep { color: #c5c5c5; }
.rd-crumbs .cur { color: var(--rd-ink); font-weight: 600; }

.rd-pdp__top {
    display: grid;
    grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr);
    gap: 48px;
    align-items: start;
}

/* Galeria */
.rd-gal { position: sticky; top: var(--rd-sticky-top); }
.rd-gal__main {
    display: block;
    position: relative;
    background: #fff;
    border: 1px solid var(--rd-line);
    aspect-ratio: 1 / 1;
    overflow: hidden;
}
.rd-gal__badge {
    position: absolute;
    top: 14px;
    left: 14px;
    z-index: 2;
    background: #fff;
    color: var(--rd-ink);
    font-size: var(--fs-2xs);
    font-weight: 700;
    letter-spacing: var(--tr-caps);
    text-transform: uppercase;
    padding: 5px 10px;
}
.rd-gal__thumbs {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 10px;
    margin-top: 10px;
    padding: 0;
    list-style: none;
}
.rd-gal__thumbs li { position: relative; background: #fff; border: 1px solid rgba(0, 0, 0, .1); aspect-ratio: 1 / 1; overflow: hidden; }
.rd-gal__thumbs li.is-active { border: 2px solid var(--rd-ink); }

/* Info */
.rd-pdp__eyebrow {
    font-size: var(--fs-xs);
    font-weight: 700;
    letter-spacing: var(--tr-caps-sm);
    text-transform: uppercase;
    color: var(--rd-brand);
    margin: 0 0 8px;
}
.rd-pdp__title {
    margin: 0 0 10px;
    font-size: var(--fs-display);
    font-weight: 800;
    line-height: var(--lh-display);
    text-transform: uppercase;
    letter-spacing: var(--tr-tight);
}
.rd-pdp__rating { display: flex; align-items: center; gap: 10px; margin-bottom: 18px; }
.rd-pdp__rating .stars { color: var(--rd-brand); font-size: var(--fs-base); letter-spacing: 2px; line-height: var(--lh-display); }
.rd-pdp__rating .txt { font-size: var(--fs-sm); color: var(--rd-txt-3); line-height: var(--lh-display); }
.rd-pdp__price { display: flex; align-items: baseline; gap: 10px; margin-bottom: 26px; }
.rd-pdp__price .amount,
.rd-pdp__price .woocommerce-Price-amount { font-size: var(--fs-h1); font-weight: 700; text-transform: uppercase; }
.rd-pdp__price del { opacity: .5; font-size: var(--fs-h3); font-weight: 500; }
.rd-pdp__price .note { font-size: var(--fs-sm); color: var(--rd-txt-3); }
.rd-pdp__excerpt { color: var(--rd-txt-2); font-size: var(--fs-base); line-height: var(--lh-body); margin: 0 0 24px; }

/* Attribute display (color / talla) */
.rd-attr { margin-bottom: 28px; }
.rd-attr__label { display: flex; align-items: center; gap: 8px; margin-bottom: 10px; }
.rd-attr__label b { font-size: var(--fs-sm); font-weight: 700; }
.rd-attr__label span { font-size: var(--fs-sm); color: var(--rd-txt-3); }
.rd-attr__colors { display: flex; gap: 10px; flex-wrap: wrap; }
/* Certificacions: pictogrames que venien dins de "Características:". */
.rd-certs { margin: 0 0 28px; }
.rd-certs__k {
    font-size: var(--fs-2xs);
    font-weight: 700;
    letter-spacing: var(--tr-caps-sm);
    text-transform: uppercase;
    color: var(--rd-txt-3);
    margin-bottom: 10px;
}
.rd-certs__list { display: flex; gap: 14px; flex-wrap: wrap; margin: 0; padding: 0; list-style: none; }
.rd-certs__list li { margin: 0; }
.rd-certs__list img {
    /* Els pictogrames de norma són informació de compra: han de llegir-se
     * sense fer zoom. */
    height: 76px;
    width: auto;
    background: #fff;
    border: 1px solid var(--rd-line);
    padding: 6px;
}
@media (max-width: 600px) {
    .rd-certs__list img { height: 62px; }
}

.rd-attr__sizes { display: flex; gap: 8px; flex-wrap: wrap; }
/* Talles SELECCIONABLES (handoff): botó amb estat actiu. */
.t2s-rd .rd-size {
    /* Centrat per CAIXA, no per línia base: amb display de botó i el
     * line-height heretat, la lletra quedava descentrada dins del quadre. */
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 48px;
    height: 44px;
    padding: 0 12px;
    line-height: 1;
    text-align: center;
    border: 1px solid rgba(0, 0, 0, .18);
    background: #fff;
    color: var(--rd-ink);
    font-weight: 700;
    font-size: var(--fs-sm);
    cursor: pointer;
    transition: border-color .2s ease, background .2s ease, color .2s ease;
}
.t2s-rd .rd-size:hover { border-color: var(--rd-ink); }
.t2s-rd .rd-size.is-selected {
    background: var(--rd-ink);
    border-color: var(--rd-ink);
    color: #fff;
}

/* Buy box: estilem el formulari natiu de WooCommerce */
.rd-buy { margin-bottom: 22px; }
.rd-buy form.cart { display: flex; gap: 12px; flex-wrap: wrap; align-items: stretch; margin: 0 0 12px; }
.rd-buy .quantity {
    display: flex;
    align-items: center;
    border: 1px solid rgba(0, 0, 0, .16);
    overflow: hidden;
}
/* Un ÚNIC stroke a tot el component: el <input> de WooCommerce porta el seu
 * propi border/box-shadow (es veia un requadre doble al voltant del número).
 * Es força a 0 amb !important perquè el CSS del plugin no el torni a pintar. */
.rd-buy .quantity input {
    width: 44px;
    height: 52px;
    text-align: center;
    font-weight: 700;
    font-size: var(--fs-lg);
    border: 0 !important;
    outline: 0;
    padding: 0;
    margin: 0;
    background: #fff;
    color: var(--rd-ink);
    -moz-appearance: textfield;
    appearance: textfield;
    box-shadow: none !important;
    border-radius: 0;
}
.rd-buy .quantity input:focus { box-shadow: none !important; outline: 0; }
/* Fora el spinner natiu del number input: el handoff usa botons − / +. */
.rd-buy .quantity input::-webkit-outer-spin-button,
.rd-buy .quantity input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.t2s-rd .rd-qty-btn {
    width: 42px;
    height: 52px;
    background: #fff;
    border: 0;
    cursor: pointer;
    font-size: var(--fs-h3);
    line-height: var(--lh-display);
    color: var(--rd-ink);
    flex: none;
    padding: 0;
}
.t2s-rd .rd-qty-btn:hover { background: var(--rd-paper); }
.t2s-rd .rd-buy button.button,
.t2s-rd .rd-buy button[type="submit"],
.t2s-rd .rd-buy .single_add_to_cart_button {
    flex: 1;
    min-width: 220px;
    background: var(--rd-brand);
    color: #fff;
    border: 0;
    cursor: pointer;
    font-weight: 700;
    font-size: var(--fs-base);
    letter-spacing: var(--tr-caps);
    text-transform: uppercase;
    padding: 17px 22px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 9px;
}
.t2s-rd .rd-buy button.button:hover,
.t2s-rd .rd-buy .single_add_to_cart_button:hover { background: var(--rd-brand-hover); color: #fff; }
/* Selects de variacions */
.rd-buy table.variations { width: 100%; border-collapse: collapse; margin-bottom: 14px; }
.rd-buy table.variations th { text-align: left; font-size: var(--fs-sm); font-weight: 700; padding: 8px 12px 8px 0; }
.rd-buy table.variations td { padding: 8px 0; }
.rd-buy table.variations select {
    width: 100%;
    padding: 12px;
    border: 1px solid rgba(0, 0, 0, .18);
    background: #fff;
    font-weight: 600;
    color: var(--rd-ink);
}

/* Accions secundàries */
.rd-pdp__actions { display: flex; gap: 10px; margin-bottom: 26px; flex-wrap: wrap; }
.t2s-rd .rd-abtn {
    flex: 1;
    min-width: 150px;
    background: #fff;
    border: 1px solid var(--rd-ink);
    color: var(--rd-ink);
    cursor: pointer;
    font-weight: 700;
    font-size: var(--fs-sm);
    padding: 13px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    text-decoration: none;
}
.t2s-rd .rd-abtn:hover { background: var(--rd-ink); color: #fff; }
.t2s-rd .rd-abtn--soft { border-color: rgba(0, 0, 0, .16); }
.t2s-rd .rd-abtn--soft:hover { border-color: var(--rd-ink); background: #fff; color: var(--rd-ink); }
/* Botó INACTIU: es planteja al handoff però el producte no té la dada. */
.t2s-rd .rd-abtn.is-disabled {
    border-color: rgba(0, 0, 0, .12);
    color: var(--rd-txt-4);
    background: #fafafa;
    cursor: default;
    pointer-events: none;
    opacity: .7;
}
.t2s-rd .rd-abtn.is-disabled:hover { background: #fafafa; color: var(--rd-txt-4); }
.rd-pdp__actions { display: flex; flex-wrap: wrap; gap: 10px; margin-bottom: 26px; }

/* Specs ràpides */
.rd-specs {
    border-top: 1px solid rgba(0, 0, 0, .1);
    border-bottom: 1px solid rgba(0, 0, 0, .1);
    padding: 20px 0;
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 16px 24px;
    margin-bottom: 24px;
}
.rd-specs__k {
    font-size: var(--fs-2xs);
    font-weight: 700;
    letter-spacing: var(--tr-caps);
    text-transform: uppercase;
    color: var(--rd-txt-4);
    margin-bottom: 3px;
}
.rd-specs__v { font-size: var(--fs-sm); font-weight: 600; }
.rd-badges { display: flex; gap: 8px; flex-wrap: wrap; }
.rd-badges span { font-size: var(--fs-2xs); font-weight: 700; background: var(--rd-ink); color: #fff; padding: 5px 9px; }

/* Fila de confiança */
/* Una sola fila de 4, amb la icona a sobre del text. */
/* Al panell de documentació els botons s'ajusten al contingut. A la buy box
 * .rd-abtn porta flex:1 perquè una fila de tres es reparteixi l'ample, però
 * aquí sovint n'hi ha un de sol i quedava una barra de vora a vora. */
.rd-docbtns { display: flex; flex-wrap: wrap; gap: 12px; }
.t2s-rd .rd-docbtns .rd-abtn { flex: 0 0 auto; padding: 13px 26px; }
.rd-ptrust { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 18px 14px; }
.rd-ptrust > div { display: flex; flex-direction: column; align-items: flex-start; gap: 9px; }
.rd-ptrust i { color: var(--rd-brand); flex: none; display: flex; }
.rd-ptrust i svg { width: 22px; height: 22px; }
.rd-ptrust span { font-size: var(--fs-xs); font-weight: 600; line-height: var(--lh-normal); }

/* Tabs */
.rd-tabs {
    margin-top: 56px;
    display: grid;
    grid-template-columns: 220px minmax(0, 1fr);
    gap: 36px;
    align-items: start;
}
.rd-tabs__nav { display: flex; flex-direction: column; gap: 4px; position: sticky; top: var(--rd-sticky-top); }
.rd-tabs__btn {
    text-align: left;
    background: transparent;
    border: 0;
    border-left: 3px solid transparent;
    cursor: pointer;
    padding: 12px 16px;
    font-size: var(--fs-sm);
    font-weight: 600;
    letter-spacing: var(--tr-caps-lg);
    text-transform: uppercase;
    color: var(--rd-ink);
}
.rd-tabs__btn[aria-selected="true"] {
    background: var(--rd-paper);
    border-left-color: var(--rd-brand);
    color: var(--rd-brand);
}
.rd-tabs__panels { background: #fff; border: 1px solid var(--rd-line); padding: 40px 44px; }
.rd-tabs__panel[hidden] { display: none; }
/* Encapçalaments DEL CONTINGUT migrat: a escala de text, no de secció
 * (32px era la mida del títol de panell i el contingut l'heretava). */
.rd-tabs__panel h2 {
    margin: 26px 0 14px;
    font-size: var(--fs-h3);
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: var(--tr-caps-h3);
}
.rd-tabs__panel h3 {
    margin: 22px 0 12px;
    font-size: var(--fs-lg);
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: var(--tr-caps-h3);
}
.rd-tabs__panel h4 { margin: 18px 0 10px; font-size: var(--fs-base); font-weight: 700; }
.rd-tabs__panel h2:first-child,
.rd-tabs__panel h3:first-child { margin-top: 0; }
.rd-tabs__panel p, .rd-tabs__panel li { color: var(--rd-txt-2); font-size: var(--fs-base); line-height: var(--lh-loose); }
.rd-tabs__panel ul { margin: 0 0 28px; padding-left: 20px; }
.rd-tabs__panel table { width: 100%; border-collapse: collapse; font-size: var(--fs-base); }
.rd-tabs__panel table tr { border-bottom: 1px solid rgba(0, 0, 0, .08); }
.rd-tabs__panel table th {
    padding: 13px 0;
    font-weight: 700;
    width: 200px;
    color: var(--rd-ink);
    text-align: left;
}
.rd-tabs__panel table td { padding: 13px 0; color: var(--rd-txt-2); }
/* Llista de documents (fitxa tècnica, seguretat, instruccions…) */
.rd-doclist { margin: 0 0 24px; padding: 0; list-style: none; }
.rd-doclist li { border-bottom: 1px solid rgba(0, 0, 0, .08); }
.rd-doclist li:last-child { border-bottom: 0; }
.t2s-rd .rd-doclist a {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    padding: 13px 2px;
    font-size: var(--fs-base);
    font-weight: 600;
    color: var(--rd-ink);
}
.t2s-rd .rd-doclist a:hover { color: var(--rd-brand); }
.rd-doclist svg { flex: none; }

.rd-video { display: block; position: relative; width: 100%; aspect-ratio: 16 / 9; background: var(--rd-ink); overflow: hidden; }
.rd-video + .rd-video { margin-top: 18px; }
.rd-video video,
.rd-video iframe { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; border: 0; background: var(--rd-ink); }

/* Relacionats */
.rd-related { margin-top: 64px; }
.rd-related h2 { margin: 0 0 24px; }

/* Responsive categoria/producte */
@media (max-width: 1200px) {
    .rd-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .rd-grid--4 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (max-width: 1023px) {
    .rd-shop { grid-template-columns: minmax(0, 1fr); gap: 24px; }
    .rd-filters { position: static; }
    .rd-pdp__top { grid-template-columns: minmax(0, 1fr); gap: 28px; }
    .rd-gal { position: static; }
    .rd-tabs { grid-template-columns: minmax(0, 1fr); gap: 16px; }
    .rd-tabs__nav { position: static; flex-direction: row; flex-wrap: wrap; }
    .rd-tabs__panels { padding: 28px 22px; }
    .rd-faq { grid-template-columns: minmax(0, 1fr); gap: 24px; padding: 32px 22px; }
    .rd-seo { padding: 32px 22px; }
    .rd-seo-cta { margin: 28px -22px -32px; padding: 32px 24px; }
    .rd-grid--4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .rd-pdp__title { font-size: var(--fs-h1); }
}
@media (max-width: 700px) {
    .rd-cathero { height: 280px; }
    .rd-specs { grid-template-columns: minmax(0, 1fr); }
    .rd-ptrust { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .rd-seo__cta { padding: 22px; }
}

/* ==========================================================================
   FORMULARIS (pressupost i contacte)
   ========================================================================== */

.rd-two-col {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1.05fr);
    gap: 48px;
    align-items: start;
    padding: 48px 0 64px;
}
.rd-two-col--contact { grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr); }

/* Llista de beneficis amb icona quadrada */
.rd-benefits { display: flex; flex-direction: column; gap: 22px; margin: 0 0 36px; }
.rd-benefit { display: flex; gap: 16px; align-items: flex-start; }
.rd-benefit__ico {
    width: 44px;
    height: 44px;
    flex: none;
    background: #f2f2f2;
    color: var(--rd-ink);
    display: flex;
    align-items: center;
    justify-content: center;
}
.rd-benefit__t { font-size: var(--fs-lg); font-weight: 700; color: var(--rd-ink); margin-bottom: 2px; }
.rd-benefit__d { font-size: var(--fs-sm); color: var(--rd-txt-3); line-height: var(--lh-relaxed); }

/* Passos */
.rd-steps-wrap { border-top: 1px solid rgba(0, 0, 0, .1); padding-top: 28px; margin-bottom: 28px; }
.rd-steps-wrap__t {
    font-size: var(--fs-sm);
    font-weight: 700;
    letter-spacing: var(--tr-caps-sm);
    color: var(--rd-txt-4);
    margin-bottom: 22px;
    text-transform: uppercase;
}
.rd-steps { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 24px; }
.rd-step__n {
    display: inline-block;
    font-size: var(--fs-2xs);
    font-weight: 700;
    letter-spacing: var(--tr-caps);
    color: var(--rd-brand);
    background: rgba(183, 14, 12, .1);
    padding: 3px 8px;
    margin-bottom: 12px;
    text-transform: uppercase;
}
.rd-step__t { font-size: var(--fs-base); font-weight: 700; color: var(--rd-ink); margin-bottom: 5px; }
.rd-step__d { font-size: var(--fs-sm); color: var(--rd-txt-3); line-height: var(--lh-relaxed); }

/* Caixa de prova social */
.rd-proofbox {
    display: flex;
    flex-direction: column;
    gap: 14px;
    background: var(--rd-paper);
    border: 1px solid var(--rd-line-2);
    padding: 20px 22px;
}
.rd-proofbox__score { font-size: var(--fs-metric); font-weight: 700; color: var(--rd-ink); line-height: var(--lh-display); text-transform: uppercase; }
.rd-proofbox__score i { color: var(--rd-brand); font-size: var(--fs-h3); font-style: normal; }
.rd-proofbox__src { font-size: var(--fs-xs); color: var(--rd-txt-3); }
.rd-proofbox__rule { height: 1px; background: rgba(0, 0, 0, .12); }
.rd-proofbox__txt { font-size: var(--fs-sm); color: var(--rd-txt-2); line-height: var(--lh-relaxed); }

/* Card del formulari */
.rd-formcard {
    background: #fff;
    border: 1px solid var(--rd-line-2);
    padding: 36px 38px;
    box-shadow: 0 24px 60px -34px rgba(0, 0, 0, .45);
}
.rd-formcard--sticky { position: sticky; top: var(--rd-sticky-top); }
.rd-formcard__h { margin: 0 0 4px; font-size: var(--fs-h1); font-weight: 800; text-transform: uppercase; letter-spacing: var(--tr-tight); }
.rd-formcard__sub { color: var(--rd-txt-3); font-size: var(--fs-sm); font-weight: 400; margin: 0 0 24px; }

.rd-field { margin-bottom: 14px; }
.rd-row2 { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 14px; margin-bottom: 14px; }
.rd-label { display: block; font-size: var(--fs-xs); font-weight: 500; color: var(--rd-ink); margin-bottom: 7px; }
.t2s-rd input[type="text"],
.t2s-rd input[type="email"],
.t2s-rd input[type="tel"],
.t2s-rd input[type="number"],
.t2s-rd textarea,
.t2s-rd select {
    width: 100%;
    border: 1px solid rgba(0, 0, 0, .18);
    border-radius: 0;
    padding: 12px 14px;
    font-family: 'Montserrat', system-ui, sans-serif;
    font-size: var(--fs-sm);
    color: var(--rd-ink);
    background: #fff;
    outline: none;
}
.t2s-rd textarea { resize: vertical; }
/* Placeholder subtil (exemples tipus "Ej. Juan García"). */
.t2s-rd input::placeholder,
.t2s-rd textarea::placeholder { color: rgba(0, 0, 0, .32); opacity: 1; }
.t2s-rd input:focus-visible,
.t2s-rd textarea:focus-visible,
.t2s-rd select:focus-visible { border-color: var(--rd-ink); outline: 2px solid var(--rd-brand); outline-offset: 1px; }

/* Segmentat "Soy…" */
.rd-seg { display: flex; gap: 8px; margin-bottom: 18px; }
.rd-seg label {
    flex: 1;
    display: block;
    text-align: center;
    padding: 11px 6px;
    border: 1px solid rgba(0, 0, 0, .18);
    cursor: pointer;
    font-weight: 700;
    font-size: var(--fs-sm);
    background: #fff;
    color: var(--rd-ink);
}
.rd-seg input { position: absolute; opacity: 0; width: 0; height: 0; }
.rd-seg input:checked + span,
.rd-seg label:has(input:checked) { background: var(--rd-ink); border-color: var(--rd-ink); color: #fff; }
.rd-seg label:has(input:focus-visible) { outline: 2px solid var(--rd-brand); outline-offset: 2px; }

.rd-check {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    font-size: var(--fs-sm);
    color: var(--rd-txt-2);
    margin-bottom: 16px;
    cursor: pointer;
    line-height: var(--lh-relaxed);
}
.rd-check input { width: 18px; height: 18px; flex: none; margin: 1px 0 0; accent-color: var(--rd-brand); }

.t2s-rd .rd-submit {
    width: 100%;
    background: var(--rd-brand);
    color: #fff;
    border: 0;
    cursor: pointer;
    font-weight: 700;
    font-size: var(--fs-base);
    letter-spacing: var(--tr-caps);
    text-transform: uppercase;
    padding: 16px;
}
.t2s-rd .rd-submit:hover { background: var(--rd-brand-hover); color: #fff; }

.rd-formfoot {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 18px;
    margin-top: 16px;
    font-size: var(--fs-xs);
    color: var(--rd-txt-3);
    flex-wrap: wrap;
}
.rd-formfoot span { display: flex; align-items: center; gap: 6px; }
.rd-formfoot svg { color: var(--rd-txt-4); }

.rd-notice { padding: 14px 16px; margin-bottom: 18px; font-size: var(--fs-sm); border: 1px solid; }
.rd-notice--ok { background: #f2fbf4; border-color: #b7e4c2; color: #1b5e2a; }
.rd-notice--err { background: #fdf3f3; border-color: #f0c6c6; color: #8f0a09; }

/* Cards de contacte */
.rd-ccards { display: flex; flex-direction: column; gap: 14px; margin-bottom: 26px; }
.rd-ccard {
    display: flex;
    gap: 16px;
    align-items: flex-start;
    background: #fff;
    border: 1px solid var(--rd-line-2);
    padding: 18px 20px;
}
.rd-ccard__ico {
    width: 44px;
    height: 44px;
    flex: none;
    border-radius: 50%;
    background: var(--rd-paper);
    color: var(--rd-brand);
    display: flex;
    align-items: center;
    justify-content: center;
}
.rd-ccard__t {
    font-size: var(--fs-xs);
    font-weight: 700;
    letter-spacing: var(--tr-caps);
    text-transform: uppercase;
    color: var(--rd-txt-4);
    margin-bottom: 6px;
}
.rd-ccard__l { font-size: var(--fs-base); font-weight: 600; color: var(--rd-ink); line-height: var(--lh-normal); }
.t2s-rd .rd-ccard__l a { color: var(--rd-ink); }
.t2s-rd .rd-ccard__l a:hover { color: var(--rd-brand); }
.rd-map { position: relative; overflow: hidden; height: 260px; background: #e9e6df; }
.rd-map iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }

/* ==========================================================================
   BLOG (arxiu)
   ========================================================================== */

.rd-topics { display: flex; flex-wrap: wrap; gap: 10px; margin-bottom: 30px; padding: 0; list-style: none; }
.t2s-rd .rd-topics a {
    display: block;
    padding: 8px 16px;
    border: 1px solid rgba(0, 0, 0, .16);
    border-radius: 999px;
    font-size: var(--fs-sm);
    font-weight: 600;
    color: var(--rd-ink);
}
.t2s-rd .rd-topics a:hover,
.t2s-rd .rd-topics a.is-active { background: var(--rd-ink); color: #fff; border-color: var(--rd-ink); }

.rd-bloglayout { display: grid; grid-template-columns: minmax(0, 1fr) 320px; gap: 44px; align-items: start; }

.rd-feat {
    display: grid;
    grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr);
    border: 1px solid var(--rd-line-2);
    overflow: hidden;
    background: #fff;
    margin-bottom: 36px;
    color: inherit;
}
.rd-feat__media { position: relative; min-height: 300px; background: #222; }
.rd-feat__flag {
    position: absolute;
    top: 14px;
    left: 14px;
    background: var(--rd-brand);
    color: #fff;
    font-size: var(--fs-2xs);
    font-weight: 700;
    letter-spacing: var(--tr-caps);
    text-transform: uppercase;
    padding: 5px 10px;
    z-index: 2;
}
.rd-feat__body { padding: 34px; display: flex; flex-direction: column; justify-content: center; }
.rd-feat__cat {
    font-size: var(--fs-2xs);
    font-weight: 700;
    letter-spacing: var(--tr-caps);
    text-transform: uppercase;
    color: var(--rd-brand);
    margin-bottom: 12px;
}
.rd-feat__t {
    margin: 0 0 12px;
    font-size: var(--fs-h1);
    font-weight: 800;
    line-height: var(--lh-display);
    color: var(--rd-ink);
    text-transform: uppercase;
    letter-spacing: var(--tr-tight);
}
.rd-feat__x { color: var(--rd-txt-2); font-size: var(--fs-base); line-height: var(--lh-body); margin: 0 0 20px; }

.rd-author { display: flex; align-items: center; gap: 12px; }
.rd-avatar {
    width: 42px;
    height: 42px;
    border-radius: 50%;
    background: var(--rd-ink);
    color: #fff;
    display: flex;
    align-items: center;
    justify-content: center;
    font-weight: 700;
    font-size: var(--fs-sm);
    flex: none;
}
.rd-avatar--sm { width: 30px; height: 30px; font-size: var(--fs-2xs); background: var(--rd-paper); color: var(--rd-ink); }
.rd-author__n { font-weight: 700; color: var(--rd-ink); font-size: var(--fs-sm); }
.rd-author__r { color: var(--rd-txt-3); font-size: var(--fs-sm); }
.rd-meta-line {
    margin-top: 16px;
    padding-top: 16px;
    border-top: 1px solid var(--rd-line-2);
    font-size: var(--fs-xs);
    color: var(--rd-txt-3);
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
}

.rd-bloggrid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 22px; }
/* Card de columna sencera: el "Más" s'ancora al peu, així queda alineat a
 * totes les cards de la fila. */
.rd-bpost {
    display: flex;
    flex-direction: column;
    height: 100%;
    background: #fff;
    border: 1px solid var(--rd-line-2);
    overflow: hidden;
    color: inherit;
}
.rd-bpost__media { display: block; position: relative; aspect-ratio: 16 / 10; overflow: hidden; background: var(--rd-paper); }
.rd-bpost__cat {
    position: absolute;
    top: 12px;
    left: 12px;
    background: rgba(21, 23, 28, .85);
    color: #fff;
    font-size: var(--fs-2xs);
    font-weight: 700;
    letter-spacing: var(--tr-caps);
    text-transform: uppercase;
    padding: 4px 9px;
    z-index: 2;
}
.rd-bpost__body { padding: 20px 22px 22px; display: flex; flex-direction: column; flex: 1 1 auto; }
.rd-bpost__t {
    margin: 0 0 8px;
    font-size: var(--fs-h3);
    font-weight: 700;
    line-height: var(--lh-tight);
    color: var(--rd-ink);
    text-transform: uppercase;
    letter-spacing: var(--tr-caps-h3);
}
.rd-bpost__x { color: var(--rd-txt-3); font-size: var(--fs-sm); line-height: var(--lh-relaxed); margin: 0 0 16px; }
.rd-bpost__meta { display: flex; align-items: center; gap: 8px; font-size: var(--fs-xs); color: var(--rd-txt-3); flex-wrap: wrap; }
.rd-bpost__date { color: var(--rd-txt-2); font-weight: 600; }
.rd-bpost__read { color: var(--rd-txt-4); }
.rd-bpost__meta .sep { color: var(--rd-txt-4); }
.rd-bpost__meta b { font-weight: 600; color: var(--rd-ink); }

.rd-side { display: flex; flex-direction: column; gap: 24px; position: sticky; top: var(--rd-sticky-top); }
.rd-sidebox { background: #fff; border: 1px solid var(--rd-line-2); padding: 24px; }
.rd-sidebox--soft { background: var(--rd-paper); padding: 22px; }
.rd-sidebox__h {
    font-size: var(--fs-lg);
    font-weight: 700;
    letter-spacing: var(--tr-caps-lg);
    margin-bottom: 16px;
    text-transform: uppercase;
}
.rd-sideauthor { display: flex; gap: 12px; margin-bottom: 16px; }
.rd-sideauthor__n { font-size: var(--fs-sm); font-weight: 700; color: var(--rd-ink); }
.rd-sideauthor__r { font-size: var(--fs-xs); color: var(--rd-brand); font-weight: 600; margin-bottom: 4px; }
.rd-sideauthor__b { font-size: var(--fs-xs); color: var(--rd-txt-3); line-height: var(--lh-relaxed); }
.rd-poplist { display: flex; flex-direction: column; gap: 14px; margin: 0; padding: 0; list-style: none; }
.t2s-rd .rd-poplist a { display: flex; gap: 12px; align-items: flex-start; color: var(--rd-ink); }
.rd-poplist i { color: var(--rd-brand); font-weight: 700; font-size: var(--fs-h3); flex: none; line-height: var(--lh-display); font-style: normal; }
.rd-poplist span { font-size: var(--fs-sm); font-weight: 600; line-height: var(--lh-normal); }
.t2s-rd .rd-poplist a:hover span { color: var(--rd-brand); }

/* ==========================================================================
   ARTICLE
   ========================================================================== */

/* Com la resta de vistes: el gutter és el del contenidor únic (abans anava a 0
 * i l'article sortia més ample que la resta de pàgines). */
.rd-article { padding: 26px var(--rd-gutter) 64px; }
.rd-article__head { max-width: 760px; margin: 0 auto; }
.rd-article__cat {
    font-size: var(--fs-2xs);
    font-weight: 700;
    letter-spacing: var(--tr-caps);
    text-transform: uppercase;
    color: var(--rd-brand);
    margin-bottom: 14px;
}
.rd-article__t {
    margin: 0 0 22px;
    font-size: var(--fs-display);
    font-weight: 800;
    line-height: var(--lh-tight);
    text-transform: uppercase;
    letter-spacing: var(--tr-tight);
}
.rd-article__byline {
    display: flex;
    align-items: center;
    gap: 14px;
    flex-wrap: wrap;
    padding-bottom: 22px;
    border-bottom: 1px solid rgba(0, 0, 0, .1);
}
.rd-article__hero { position: relative; max-width: 980px; margin: 28px auto 0; overflow: hidden; height: 440px; background: #222; }
.rd-article__body {
    /* Abans 980px: dins del contenidor de 1520 quedava una columna estreta amb
     * molt marge buit als costats. Amb 1240 el cos puja a uns 940px i el text,
     * que ja va a 16px, manté una mesura llegible. */
    max-width: 1240px;
    margin: 36px auto 0;
    display: grid;
    grid-template-columns: 240px minmax(0, 1fr);
    gap: 56px;
    align-items: start;
}
.rd-article__aside { position: sticky; top: var(--rd-sticky-top); display: flex; flex-direction: column; gap: 24px; }
.rd-article__aside-h {
    font-size: var(--fs-2xs);
    font-weight: 700;
    letter-spacing: var(--tr-caps);
    text-transform: uppercase;
    color: var(--rd-txt-4);
    margin-bottom: 12px;
}
.rd-share { display: flex; gap: 8px; }
.t2s-rd .rd-share a {
    width: 34px;
    height: 34px;
    border-radius: 50%;
    background: var(--rd-paper);
    color: var(--rd-ink);
    display: flex;
    align-items: center;
    justify-content: center;
}
.t2s-rd .rd-share a:hover { background: var(--rd-brand); color: #fff; }

.rd-prose { font-size: var(--fs-lg); line-height: var(--lh-body); color: #2E3138; }
.rd-prose > *:first-child { margin-top: 0; }
.rd-prose p { margin: 0 0 18px; }
.rd-prose h2 {
    font-size: var(--fs-h1);
    font-weight: 800;
    margin: 34px 0 14px;
    line-height: var(--lh-tight);
    text-transform: uppercase;
    letter-spacing: var(--tr-tight);
}
.rd-prose h3 { font-size: var(--fs-h3); font-weight: 700; margin: 28px 0 12px; text-transform: uppercase; letter-spacing: var(--tr-caps-h3); }
.rd-prose ul, .rd-prose ol { margin: 0 0 18px; padding-left: 20px; line-height: var(--lh-loose); }
.rd-prose img { margin: 24px 0; }
.rd-prose blockquote {
    margin: 26px 0;
    padding: 16px 24px;
    border-left: 4px solid var(--rd-ink);
    font-size: var(--fs-h3);
    font-style: italic;
    color: var(--rd-ink);
    line-height: var(--lh-relaxed);
}
.rd-prose table { width: 100%; border-collapse: collapse; margin: 0 0 24px; font-size: var(--fs-base); }
.rd-prose th, .rd-prose td { padding: 12px 10px; border-bottom: 1px solid rgba(0, 0, 0, .08); text-align: left; }

.rd-authorbox {
    margin-top: 40px;
    background: #fff;
    border: 1px solid rgba(0, 0, 0, .1);
    padding: 24px;
    display: flex;
    gap: 16px;
    align-items: flex-start;
}
.rd-authorbox .rd-avatar { width: 52px; height: 52px; font-size: var(--fs-lg); }

.rd-keep { max-width: 980px; margin: 52px auto 0; }
.rd-keep h2 { margin: 0 0 20px; }
.rd-keep__grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 20px; }

/* ==========================================================================
   EMPRESA
   ========================================================================== */

/* Regla fixa del projecte: UN sol ample per a tota la web. .rd-narrow es
 * manté només com a àlies del contenidor únic (la pàgina d'empresa el feia
 * servir amb 1120px i quedava més estreta que la resta). */
.rd-narrow { max-width: var(--rd-max); margin: 0 auto; padding-inline: var(--rd-gutter); }
.rd-emp-intro {
    display: grid;
    grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr);
    gap: 48px;
    align-items: center;
    padding: 64px 0 20px;
}
.rd-emp-intro p { color: var(--rd-txt-2); font-size: var(--fs-base); line-height: var(--lh-body); margin: 0 0 14px; }
.rd-emp-intro__media { position: relative; overflow: hidden; height: 380px; background: #222; }

.rd-stats {
    background: var(--rd-ink);
    padding: 36px 28px;
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 20px;
    margin: 40px 0;
}
.rd-stat { text-align: center; }
.rd-stat b { display: block; font-size: var(--fs-display); font-weight: 700; color: #fff; line-height: var(--lh-display); text-transform: uppercase; }
.rd-stat span { display: block; color: rgba(255, 255, 255, .7); font-size: var(--fs-sm); font-weight: 600; margin-top: 6px; }

.rd-center { text-align: center; margin-bottom: 48px; }
.rd-timeline { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 20px; }
.rd-tl { border-top: 3px solid var(--rd-brand); padding-top: 16px; }
.rd-tl b { display: block; font-size: var(--fs-h1); font-weight: 700; color: var(--rd-ink); line-height: var(--lh-display); text-transform: uppercase; }
.rd-tl p { color: var(--rd-txt-2); font-size: var(--fs-sm); line-height: var(--lh-body); margin: 10px 0 0; }

.rd-vals-wrap { background: var(--rd-paper); margin-top: 20px; }
.rd-vals { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 18px; }
.rd-val { background: #fff; border: 1px solid var(--rd-line); padding: 26px 24px; }
.rd-val__ico {
    width: 46px;
    height: 46px;
    border-radius: 50%;
    background: var(--rd-paper);
    color: var(--rd-brand);
    display: flex;
    align-items: center;
    justify-content: center;
    margin-bottom: 16px;
}
.rd-val__t { font-size: var(--fs-h3); font-weight: 700; margin-bottom: 8px; text-transform: uppercase; letter-spacing: var(--tr-caps-h3); }
.rd-val p { color: var(--rd-txt-3); font-size: var(--fs-sm); line-height: var(--lh-body); margin: 0; }

.rd-partners { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 40px; align-items: center; padding: 56px 0; }
.rd-partners p { color: var(--rd-txt-2); font-size: var(--fs-base); line-height: var(--lh-body); margin: 0 0 22px; }
.rd-partner-tags { display: flex; gap: 14px; flex-wrap: wrap; }
.rd-partner-tags span {
    font-size: var(--fs-h2);
    font-weight: 700;
    color: var(--rd-ink);
    border: 1px solid rgba(0, 0, 0, .15);
    padding: 12px 22px;
    text-transform: uppercase;
    letter-spacing: var(--tr-tight);
}
.rd-logistics { background: var(--rd-ink); padding: 36px; color: #fff; }
.rd-logistics__t { font-size: var(--fs-h2); font-weight: 700; margin-bottom: 14px; text-transform: uppercase; letter-spacing: var(--tr-tight); }
.rd-logistics p { color: rgba(255, 255, 255, .75); font-size: var(--fs-base); line-height: var(--lh-body); margin: 0 0 20px; }
.rd-pills { display: flex; gap: 10px; flex-wrap: wrap; }
.rd-pills span {
    background: rgba(255, 255, 255, .1);
    border: 1px solid rgba(255, 255, 255, .2);
    border-radius: 999px;
    padding: 7px 14px;
    font-size: var(--fs-xs);
    font-weight: 600;
}

.rd-endcta { background: var(--rd-brand); padding: 44px; text-align: center; margin-bottom: 72px; }
.rd-endcta h2 { margin: 0 0 10px; }
.rd-endcta p { color: rgba(255, 255, 255, .9); font-size: var(--fs-base); margin: 0 0 22px; }
.rd-endcta__btns { display: flex; gap: 12px; justify-content: center; flex-wrap: wrap; }
.t2s-rd .rd-endcta__b {
    background: #fff;
    color: var(--rd-brand);
    border: 0;
    font-weight: 700;
    font-size: var(--fs-base);
    padding: 15px 28px;
    border-radius: 3px;
    text-decoration: none;
}
.t2s-rd .rd-endcta__b:hover { background: var(--rd-ink); color: #fff; }
.t2s-rd .rd-endcta__b--ghost { background: transparent; color: #fff; border: 1px solid rgba(255, 255, 255, .6); }
.t2s-rd .rd-endcta__b--ghost:hover { background: transparent; border-color: #fff; color: #fff; }

/* Responsive fase 3 */
@media (max-width: 1200px) {
    .rd-bloglayout { grid-template-columns: minmax(0, 1fr); }
    .rd-side { position: static; }
    .rd-vals, .rd-timeline, .rd-stats { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 1023px) {
    .rd-two-col, .rd-two-col--contact { grid-template-columns: minmax(0, 1fr); gap: 28px; padding: 28px 0 48px; }
    .rd-formcard--sticky { position: static; }
    .rd-formcard { padding: 26px 22px; }
    .rd-steps { grid-template-columns: minmax(0, 1fr); }
    .rd-feat { grid-template-columns: minmax(0, 1fr); }
    .rd-feat__body { padding: 24px 22px; }
    .rd-bloggrid { grid-template-columns: minmax(0, 1fr); }
    .rd-article__body { grid-template-columns: minmax(0, 1fr); gap: 24px; }
    .rd-article__aside { position: static; flex-direction: row; flex-wrap: wrap; gap: 32px; }
    .rd-article__hero { height: 280px; }
    .rd-emp-intro, .rd-partners { grid-template-columns: minmax(0, 1fr); gap: 28px; }
    .rd-keep__grid { grid-template-columns: minmax(0, 1fr); }
    .rd-row2 { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 700px) {
    .rd-stats, .rd-timeline, .rd-vals { grid-template-columns: minmax(0, 1fr); }
    .rd-feat__t, .rd-endcta h2 { font-size: var(--fs-h2); }
    .rd-prose h2 { font-size: var(--fs-h2); }
}

/* ==========================================================================
   FIX de blocificació: aquestes cards són <a> amb fills <span> (per no
   niar <a> dins d'<a>). Un <a display:block> NO blocifica els seus fills,
   així que cal declarar-ho o l'aspect-ratio i el flux es trenquen.
   (A .rd-feat no cal: és grid/flex i blocifica els fills automàticament.)
   ========================================================================== */
.rd-post__media,
.rd-post__meta,
.rd-post__title,
.rd-post__excerpt,
.rd-bpost__media,
.rd-bpost__t,
.rd-bpost__x { display: block; }
/* __body NO va aquí: és flex-column perquè el "MÁS" (margin-top:auto)
 * quedi ancorat a baix i alineat a totes les cards de la fila. */

.rd-post__more,
.rd-bpost__more,
.rd-bpost__meta { display: flex; }

/* ==========================================================================
   Contingut LLEGAT dins de la fitxa (l'excerpt migrat porta taules de specs
   i markup lliure). Se li dona l'estil del disseny perquè no surti "en cru".
   ========================================================================== */
.rd-pdp__excerpt p { margin: 0 0 12px; }
.rd-pdp__excerpt p:last-child { margin-bottom: 0; }
.rd-pdp__excerpt table {
    width: 100%;
    border-collapse: collapse;
    font-size: var(--fs-sm);
    margin: 16px 0 0;
}
.rd-pdp__excerpt table tr { border-bottom: 1px solid rgba(0, 0, 0, .08); }
.rd-pdp__excerpt table tr:last-child { border-bottom: 0; }
.rd-pdp__excerpt table td,
.rd-pdp__excerpt table th {
    padding: 10px 12px 10px 0;
    text-align: left;
    vertical-align: top;
    color: var(--rd-txt-2);
}
.rd-pdp__excerpt table td:first-child,
.rd-pdp__excerpt table th:first-child {
    font-weight: 700;
    color: var(--rd-ink);
    width: 180px;
    text-transform: uppercase;
    font-size: var(--fs-2xs);
    letter-spacing: var(--tr-caps);
    padding-top: 12px;
}
.rd-pdp__excerpt table img { display: inline-block; vertical-align: middle; max-height: 22px; width: auto; }
.rd-pdp__excerpt ul { margin: 12px 0 0; padding-left: 18px; line-height: var(--lh-body); color: var(--rd-txt-2); }
.t2s-rd .rd-pdp__excerpt a { color: var(--rd-brand); text-decoration: underline; text-underline-offset: 3px; }

/* El contingut de pàgines antigues embegut al bloc SEO de les verticals */
.rd-seo img { margin: 18px 0; }
.rd-seo ul, .rd-seo ol { margin: 0 0 18px; padding-left: 20px; color: var(--rd-txt-2); font-size: var(--fs-base); line-height: var(--lh-loose); }
.rd-seo h4 { margin: 28px 0 10px; font-size: var(--fs-lg); font-weight: 700; text-transform: uppercase; letter-spacing: var(--tr-caps-h3); }

/* ==========================================================================
   PÀGINA HUB (categoria mare) — blocs 01-08 de la diapo
   Hero partit (text + foto), USPs, graella de subcategories, contingut SEO
   estructurat, prova social, FAQs i CTA. El hub NO ensenya productes.
   ========================================================================== */

/* --- 02 Hero amb la foto de FONS ---------------------------------------- */
.rd-hubhero {
    position: relative;
    overflow: hidden;
    background: #fff;
    border-bottom: 1px solid var(--rd-line);
}
.rd-hubhero__in { position: relative; z-index: 2; padding-block: 30px 54px; }
.rd-hubhero .rd-crumbs { margin-bottom: 44px; }

/* Amb foto: fons fosc, text en blanc i degradat de lectura. */
.rd-hubhero--photo { background: var(--rd-ink); border-bottom: 0; }
.rd-hubhero--photo > .rd-media {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center;
    z-index: 0;
}
.rd-hubhero__scrim {
    position: absolute;
    inset: 0;
    z-index: 1;
    /* Més fosc a l'esquerra, on hi ha el text; la dreta deixa veure la foto. */
    background:
        linear-gradient(90deg, rgba(15, 17, 21, .88) 0%, rgba(15, 17, 21, .72) 42%, rgba(15, 17, 21, .28) 72%, rgba(15, 17, 21, .12) 100%),
        linear-gradient(180deg, rgba(15, 17, 21, .35) 0%, rgba(15, 17, 21, 0) 45%);
    pointer-events: none;
}
.rd-hubhero--photo .rd-hubhero__in { padding-block: 34px 69px; }
.rd-hubhero--photo .rd-hubhero__body { max-width: 720px; }
.t2s-rd .rd-hubhero--photo .rd-crumbs { color: rgba(255, 255, 255, .75); }
.t2s-rd .rd-hubhero--photo .rd-crumbs a { color: rgba(255, 255, 255, .75); }
.t2s-rd .rd-hubhero--photo .rd-crumbs a:hover { color: #fff; }
.rd-hubhero--photo .rd-crumbs .sep { color: rgba(255, 255, 255, .4); }
.rd-hubhero--photo .rd-crumbs .cur { color: #fff; }
.rd-hubhero--photo .rd-hubhero__title { color: var(--rd-white); }
.rd-hubhero--photo .rd-hubhero__eyebrow { color: var(--rd-txt-4); }
.rd-hubhero--photo .rd-hubhero__intro { color: rgba(255, 255, 255, .88); }

.rd-hubhero__title {
    margin: 0;
    font-size: var(--fs-display);
    font-weight: 800;
    line-height: var(--lh-tight);
    /* Versaletes llargues ("RETRORREFLECTÓMETRO") quedaven apretades amb el
     * tracking negatiu de display. */
    letter-spacing: var(--tr-snug);
    text-transform: uppercase;
    max-width: 22ch;
    text-wrap: balance;
}
/* Diferencial ("Distribuidor oficial T2S"): avantítol, damunt del titular. */
.rd-hubhero__eyebrow {
    /* Mateix tractament que .rd-eyebrow de secció: versaleta petita amb
     * tracking obert, en el gris de marca. No competeix amb el titular. */
    /* Mateix aire a banda i banda del titular: 18px amunt i 18px avall. */
    margin: 0 0 18px;
    color: var(--rd-txt-3);
    font-size: var(--fs-xs);
    font-weight: 600;
    line-height: var(--lh-snug);
    letter-spacing: var(--tr-caps-sm);
    text-transform: uppercase;
}
.rd-hubhero__intro {
    margin: 18px 0 0;
    max-width: 60ch;
    color: var(--rd-txt-2);
    font-size: var(--fs-lg);
    line-height: var(--lh-relaxed);
}
/* Senyals de confiança: llista en línia separada per punts. */
.rd-hubhero__ctas {
    display: flex;
    align-items: center;
    gap: 24px;
    flex-wrap: wrap;
    margin-top: 32px;
}
/* Els dos botons del hero comparteixen caixa i tipografia; el contorn del
 * secundari va PER DINS (box-shadow inset), així tenen la mateixa alçada. */
.t2s-rd .rd-hubhero__cta {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    box-sizing: border-box;
    min-height: 50px;
    background: var(--rd-brand);
    color: var(--rd-white);
    font-size: var(--fs-sm);
    font-weight: 700;
    letter-spacing: var(--tr-caps);
    text-transform: uppercase;
    line-height: 1;
    padding: 15px 30px;
    border: 0;
    transition: background .25s ease, box-shadow .25s ease, color .25s ease;
}
.t2s-rd .rd-hubhero__cta:hover { background: var(--rd-brand-hover); color: var(--rd-white); }
.t2s-rd .rd-hubhero__cta--ghost {
    background: transparent;
    color: var(--rd-ink);
    box-shadow: inset 0 0 0 1px var(--rd-line-strong, rgba(0, 0, 0, .3));
}
.t2s-rd .rd-hubhero__cta--ghost:hover {
    background: var(--rd-ink);
    color: var(--rd-white);
    box-shadow: inset 0 0 0 1px var(--rd-ink);
}
/* Sobre foto el CTA principal és BLANC (el vermell competia amb la foto) i en
 * passar-hi el ratolí s'omple de vermell. */
.t2s-rd .rd-hubhero--photo .rd-hubhero__cta:not(.rd-hubhero__cta--ghost) {
    background: var(--rd-white);
    color: var(--rd-ink);
}
.t2s-rd .rd-hubhero--photo .rd-hubhero__cta:not(.rd-hubhero__cta--ghost):hover {
    background: var(--rd-brand);
    color: var(--rd-white);
}

/* Sobre foto: el secundari és blanc. */
.t2s-rd .rd-hubhero--photo .rd-hubhero__cta--ghost {
    color: var(--rd-white);
    box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .7);
}
.t2s-rd .rd-hubhero--photo .rd-hubhero__cta--ghost:hover {
    background: var(--rd-white);
    color: var(--rd-ink);
    box-shadow: inset 0 0 0 1px var(--rd-white);
}

/* --- 03 USPs (dins del hero) -------------------------------------------- */
.rd-usps { padding-block: 32px 0; }
/* Al hero són icona + text, sense caixa, dins de la columna del titular. */
.rd-usps--hero { position: relative; z-index: 2; margin-top: 26px; }
/* Els quatre en una sola fila: caixa lliure (no graella) i un escaló de cos
 * menys, que és el que fa que hi càpiguen dins de la columna del titular. */
.rd-usps--hero .rd-usps__list {
    display: flex;
    flex-wrap: wrap;
    gap: 12px 26px;
}
.rd-usps--hero .rd-usp {
    background: none;
    border: 0;
    padding: 0;
    gap: 9px;
    white-space: nowrap;
    font-size: var(--fs-xs);
    letter-spacing: var(--tr-caps-sm);
}
.rd-usps--hero .rd-usp__i svg { width: 16px; height: 16px; }
.rd-hubhero--photo .rd-usps--hero .rd-usp { color: var(--rd-white); }
.rd-hubhero--photo .rd-usps--hero .rd-usp__i { color: var(--rd-white); }
@media (max-width: 599px) {
    .rd-usps--hero .rd-usps__list { gap: 10px 20px; }
}
.rd-usps__list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 16px;
}
.rd-usp {
    display: flex;
    align-items: center;
    gap: 12px;
    background: #fff;
    border: 1px solid var(--rd-line);
    border-left: 3px solid var(--rd-brand);
    padding: 18px 22px;
    font-size: var(--fs-sm);
    font-weight: 700;
    letter-spacing: var(--tr-caps-lg);
    text-transform: uppercase;
    color: var(--rd-ink);
}
.rd-usp__i { display: inline-flex; color: var(--rd-brand); flex: none; }

/* --- 04 Graella de subcategories ---------------------------------------- */
.rd-subcats__grid {
    display: grid;
    grid-template-columns: repeat(5, minmax(0, 1fr));
    gap: 16px;
}
.t2s-rd .rd-subcat {
    display: flex;
    flex-direction: column;
    background: #fff;
    border: 1px solid var(--rd-line);
    color: var(--rd-ink);
    overflow: hidden;
}
.t2s-rd .rd-subcat:hover { color: var(--rd-ink); border-color: rgba(0, 0, 0, .16); }
.rd-subcat__ph {
    display: block;
    position: relative;
    aspect-ratio: 1 / 1;
    overflow: hidden;
    background: #fff;
}
.rd-subcat__ph .rd-media,
.rd-subcat__ph .rd-ph {
    width: 100%;
    height: 100%;
    /* Packshot sobre blanc: es veu sencer, no retallat. */
    object-fit: contain;
    transition: transform .5s ease;
}
.rd-subcat:hover .rd-subcat__ph .rd-media { transform: scale(1.04); }
.rd-subcat__body {
    display: flex;
    flex-direction: column;
    gap: 8px;
    padding: 18px 18px 16px;
    flex: 1;
    border-top: 1px solid var(--rd-line);
}
.rd-subcat__name {
    display: block;
    color: var(--rd-ink);
    font-size: var(--fs-h3);
    font-weight: 700;
    line-height: var(--lh-snug);
    text-transform: uppercase;
    letter-spacing: var(--tr-caps-h3);
    /* Partició: la regla única de dalt (salta de línia i, si tota sola no hi
     * cap, es parteix). */
}
.rd-subcat__desc {
    display: block;
    color: var(--rd-txt-2);
    font-size: var(--fs-sm);
    line-height: var(--lh-relaxed);
}
.rd-subcat__meta {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    margin-top: auto;
    padding-top: 12px;
    border-top: 1px solid var(--rd-line);
    color: var(--rd-txt-3);
    font-size: var(--fs-xs);
    font-weight: 600;
    letter-spacing: var(--tr-caps-sm);
    text-transform: uppercase;
}
.rd-subcat__meta svg { color: var(--rd-brand); transition: transform .25s ease; }
.rd-subcat:hover .rd-subcat__meta svg { transform: translateX(4px); }

/* --- 05 Contingut SEO del hub ------------------------------------------- */
/* El gap ja el posa la secció de dalt: aquí no cal doble padding. */
.rd-hubseo { padding-block: 0; }
.rd-seo--hub { margin-top: 0; }
/* El titular del bloc SEO va en UNA línia: el límit de 760px el partia. */
.rd-seo--hub > h2 { max-width: none; }
/* Guia de selecció per entorn: graella de targetes amb foto, en comptes d'una
 * taula ampla que ocupava mitja pàgina. */
.rd-guide {
    display: grid;
    grid-template-columns: repeat(5, minmax(0, 1fr));
    gap: 14px;
    margin: 16px 0 4px;
}
.t2s-rd .rd-guide__card {
    display: flex;
    flex-direction: column;
    background: #fff;
    border: 1px solid var(--rd-line);
    color: var(--rd-ink);
    overflow: hidden;
}
.t2s-rd .rd-guide__card:hover { color: var(--rd-ink); border-color: rgba(0, 0, 0, .18); }
/* Icona en comptes de foto: aquest bloc no ven producte, orienta. */
.rd-guide__i {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 46px;
    height: 46px;
    margin: 18px 0 0 18px;
    color: var(--rd-brand);
    background: var(--rd-paper);
    border: 1px solid var(--rd-line);
}
.rd-guide__card:hover .rd-guide__i { background: var(--rd-brand); color: #fff; border-color: var(--rd-brand); }
.rd-guide__body { display: flex; flex-direction: column; gap: 7px; padding: 16px 16px 14px; flex: 1; }
.rd-guide__env {
    display: block;
    font-size: var(--fs-sm);
    font-weight: 700;
    line-height: var(--lh-snug);
    letter-spacing: var(--tr-caps-lg);
    text-transform: uppercase;
}
.rd-guide__rec { display: block; color: var(--rd-txt-2); font-size: var(--fs-sm); line-height: var(--lh-relaxed); }
.rd-guide__go {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    margin-top: auto;
    padding-top: 10px;
    border-top: 1px solid var(--rd-line);
    color: var(--rd-brand);
    font-size: var(--fs-2xs);
    font-weight: 700;
    letter-spacing: var(--tr-caps-sm);
    text-transform: uppercase;
}
.rd-guide__go svg { transition: transform .25s ease; }
.rd-guide__card:hover .rd-guide__go svg { transform: translateX(4px); }

@media (max-width: 1279px) { .rd-guide { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (max-width: 767px)  { .rd-guide { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 479px)  { .rd-guide { grid-template-columns: minmax(0, 1fr); } }

/* Text heretat de la web antiga: cada apartat seu és una secció plegada
 * (.rd-seo__fold), sense cap retolet al davant. */
.rd-seo__legacy { margin-top: 8px; }
.rd-seo__legacy .rd-seo__fold:first-of-type { margin-top: 0; }

/* Text heretat de la web antiga: es conserva, plegat. */
.rd-seo__more { margin-top: 36px; border-top: 1px solid var(--rd-line); padding-top: 20px; }
.rd-seo__more > summary {
    cursor: pointer;
    font-size: var(--fs-sm);
    font-weight: 700;
    letter-spacing: var(--tr-caps);
    text-transform: uppercase;
    color: var(--rd-brand);
    list-style: none;
}
.rd-seo__more > summary::-webkit-details-marker { display: none; }
.rd-seo__more > summary::after { content: " +"; }
.rd-seo__more[open] > summary::after { content: " –"; }
.rd-seo__more-in { padding-top: 18px; }

/* --- 06 Prova social ---------------------------------------------------- */
/* Secció clara; els logos venen en blanc, així que es passen a negre amb un
 * filtre (no cal demanar-los una segona versió). */
.rd-hubsocial {
    padding-block: var(--rd-section-y);
    text-align: center;
}
.rd-hubsocial__label {
    font-size: var(--fs-xs);
    font-weight: 600;
    letter-spacing: var(--tr-caps-sm);
    text-transform: uppercase;
    color: var(--rd-txt-3);
    margin-bottom: 46px;
}
.rd-hubsocial .rd-marquee { opacity: 1; }
.rd-hubsocial .rd-marquee__track img {
    filter: brightness(0);
    opacity: .48;
}
.rd-hubsocial .rd-marquee__track img { max-height: 46px; max-width: 190px; }
/* El card de FAQ ve just després amb margin-top propi: aquí el traiem perquè
 * l'espai de sobre i de sota de la banda de logos sigui el mateix. */
.rd-hubsocial + .rd-wrap > .rd-faq { margin-top: 0; }

/* --- Responsiu ---------------------------------------------------------- */
@media (max-width: 1279px) {
    .rd-subcats__grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}
@media (max-width: 1023px) {
    .rd-hubhero--photo .rd-hubhero__body { max-width: none; }
    .rd-hubhero__scrim { background: linear-gradient(180deg, rgba(15, 17, 21, .78) 0%, rgba(15, 17, 21, .86) 100%); }
    .rd-usps__list { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .rd-subcats__grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (max-width: 599px) {
    .rd-hubhero__in,
    .rd-hubhero--photo .rd-hubhero__in { padding-block: 22px 52px; }
    .rd-usps__list { grid-template-columns: minmax(0, 1fr); }
    .rd-subcats__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .rd-subcat__desc { display: none; }
}

/* ==========================================================================
   PÀGINA DE SUBCATEGORIA — blocs 01-09 de la diapo
   Hero compacte, pastilles de filtre, graella de 4 columnes amb distintius de
   classe, contingut SEO propi i categories germanes.
   ========================================================================== */

/* --- 02 Hero compacte ---------------------------------------------------- */
.rd-subhero {
    position: relative;
    overflow: hidden;
    background: #fff;
    border-bottom: 1px solid var(--rd-line);
}
.rd-subhero__in { position: relative; z-index: 2; padding-block: 30px 48px; }
.rd-subhero .rd-crumbs { margin-bottom: 26px; }
/* Amb foto de fons, el mateix tractament que el hero del hub. */
.rd-subhero--photo { background: var(--rd-ink); border-bottom: 0; }
.rd-subhero--photo > .rd-media {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center;
    z-index: 0;
}
.rd-subhero--photo .rd-subhero__in { padding-block: 34px 56px; }
.rd-subhero--photo .rd-subhero__title { color: var(--rd-white); }
.rd-subhero--photo .rd-subhero__intro { color: rgba(255, 255, 255, .88); }
.rd-subhero--photo .rd-subhero__meta { color: var(--rd-white); }
.rd-subhero--photo .rd-subhero__meta svg { color: var(--rd-white); }
.t2s-rd .rd-subhero--photo .rd-crumbs,
.t2s-rd .rd-subhero--photo .rd-crumbs a { color: rgba(255, 255, 255, .75); }
.t2s-rd .rd-subhero--photo .rd-crumbs a:hover { color: #fff; }
.rd-subhero--photo .rd-crumbs .sep { color: rgba(255, 255, 255, .4); }
.rd-subhero--photo .rd-crumbs .cur { color: #fff; }
.rd-subhero__title {
    margin: 0;
    font-size: var(--fs-display);
    font-weight: 800;
    line-height: var(--lh-tight);
    /* Versaletes llargues ("RETRORREFLECTÓMETRO") quedaven apretades amb el
     * tracking negatiu de display. */
    letter-spacing: var(--tr-snug);
    text-transform: uppercase;
    max-width: 26ch;
    text-wrap: balance;
}
.rd-subhero__intro {
    margin: 20px 0 0;
    max-width: 78ch;
    color: var(--rd-txt-2);
    font-size: var(--fs-lg);
    line-height: var(--lh-relaxed);
}
.rd-subhero__meta {
    list-style: none;
    margin: 24px 0 0;
    padding: 0;
    display: flex;
    flex-wrap: wrap;
    gap: 10px 22px;
    font-size: var(--fs-sm);
    font-weight: 600;
    letter-spacing: var(--tr-caps-lg);
    text-transform: uppercase;
    color: var(--rd-ink);
}
.rd-subhero__meta li { display: inline-flex; align-items: center; gap: 7px; }
.rd-subhero__meta svg { flex: none; color: var(--rd-brand); }

/* --- 03 Pastilles de filtre --------------------------------------------- */
/* Separació respecte del bloc SEO que ve a continuació. */
.rd-sublist { padding-top: 36px; padding-bottom: 72px; }
.rd-pills {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    margin-bottom: 26px;
}
.rd-pill {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: #fff;
    border: 1px solid rgba(0, 0, 0, .16);
    border-radius: 999px;
    padding: 10px 18px;
    cursor: pointer;
    color: var(--rd-ink);
    font-size: var(--fs-sm);
    font-weight: 700;
    letter-spacing: var(--tr-caps-lg);
    text-transform: uppercase;
    transition: background .2s ease, border-color .2s ease, color .2s ease;
}
.rd-pill:hover { border-color: var(--rd-ink); }
.rd-pill.is-on {
    background: var(--rd-brand);
    border-color: var(--rd-brand);
    color: var(--rd-white);
}
.rd-pill__n {
    font-size: var(--fs-2xs);
    font-weight: 600;
    color: var(--rd-txt-3);
    letter-spacing: 0;
}
.rd-pill.is-on .rd-pill__n { color: rgba(255, 255, 255, .8); }
/* Filtratge de pastilles: .rd-lcard té display:flex, i un display d'autor guanya
 * al [hidden] del navegador. Sense aquesta regla, filtrar no amagava res. */
.rd-lcard[hidden],
.rd-subcat[hidden],
.rd-sib[hidden] { display: none !important; }
.rd-grid__empty {
    margin: 8px 0 0;
    color: var(--rd-txt-2);
    font-size: var(--fs-base);
}

/* --- Distintius de la targeta (classe / LED) ---------------------------- */
.rd-lcard__badges {
    position: absolute;
    top: 10px;
    right: 10px;
    z-index: 2;
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: 6px;
}
.rd-lcard__badge {
    background: var(--rd-brand);
    color: var(--rd-white);
    font-size: var(--fs-2xs);
    font-weight: 700;
    letter-spacing: var(--tr-caps);
    text-transform: uppercase;
    padding: 4px 8px;
}
.rd-lcard__badge--led { background: var(--rd-ink); }

/* --- Taula comparativa dins del text SEO -------------------------------- */
.rd-tblwrap { overflow-x: auto; margin: 0 0 20px; }
.rd-seo-tbl {
    width: 100%;
    border-collapse: collapse;
    font-size: var(--fs-sm);
    min-width: 520px;
}
.rd-seo-tbl th,
.rd-seo-tbl td {
    text-align: left;
    padding: 12px 14px;
    border-bottom: 1px solid var(--rd-line);
    color: var(--rd-txt-2);
    line-height: var(--lh-relaxed);
    vertical-align: top;
}
.rd-seo-tbl thead th {
    color: var(--rd-ink);
    font-weight: 700;
    letter-spacing: var(--tr-caps-lg);
    text-transform: uppercase;
    border-bottom: 2px solid var(--rd-ink);
}
.rd-seo-tbl tbody td:first-child { color: var(--rd-ink); font-weight: 600; }

@media (max-width: 1023px) {
    .rd-grid--4 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (max-width: 599px) {
    .rd-subhero__in,
    .rd-subhero--photo .rd-subhero__in { padding-block: 22px 34px; }
    .rd-grid--4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .rd-pill { padding: 9px 14px; }
}

/* ==========================================================================
   FITXA DE PRODUCTE — blocs afegits de la diapo (badges, aplicacions)
   ========================================================================== */
/* Fila de categoria + distintius de la fitxa, tot en una línia. */
.rd-pdp__meta {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 10px 14px;
    margin-bottom: 14px;
}
.t2s-rd .rd-pdp__meta .rd-pdp__eyebrow { margin: 0; }
.rd-pdp__badges { display: flex; gap: 8px; margin-bottom: 14px; }
.rd-pdp__badge {
    display: inline-flex;
    align-items: center;
    background: var(--rd-brand);
    color: var(--rd-white);
    font-size: var(--fs-2xs);
    font-weight: 700;
    letter-spacing: var(--tr-caps);
    text-transform: uppercase;
    padding: 5px 12px;
}
.rd-pdp__badge--led { background: var(--rd-ink); }

.rd-papps {
    margin-top: 56px;
    background: #fff;
    border: 1px solid var(--rd-line);
    padding: 40px 44px;
}
.rd-papps h2 {
    margin: 0 0 24px;
    font-size: var(--fs-h1);
    font-weight: 800;
    line-height: var(--lh-tight);
    letter-spacing: var(--tr-tight);
    text-transform: uppercase;
}
/* Quatre quadrats: icona a dalt i text a baix, més gran. */
.rd-papps__list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 16px;
}
.rd-papp {
    display: flex;
    flex-direction: column;
    gap: 18px;
    /* Ni quadrat ni 4/3: la caixa només ha de donar aire a l'icona i al text. */
    min-height: 168px;
    justify-content: space-between;
    background: #fff;
    border: 1px solid var(--rd-line);
    padding: 20px;
}
.rd-papp__i { display: inline-flex; color: var(--rd-brand); }
.rd-papp__t {
    color: var(--rd-ink);
    font-size: var(--fs-h3);
    font-weight: 700;
    line-height: var(--lh-snug);
    letter-spacing: var(--tr-snug);
}

@media (max-width: 1023px) { .rd-papps__list { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 767px) {
    .rd-papps { padding: 28px 22px; }
    .rd-papps__list { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .rd-papp { aspect-ratio: auto; }
}

/* Selector d'idioma: entrada d'un idioma encara no traduït (informativa). */
.rd-lang__menu .rd-lang__soon {
    display: block;
    padding: 7px 14px;
    color: var(--rd-txt-4);
    font-size: var(--fs-2xs);
    font-weight: 600;
    letter-spacing: var(--tr-caps-sm);
    text-transform: uppercase;
    cursor: default;
}

/* ==========================================================================
   WOOCOMMERCE FUNCIONAL — carret, pagament i compte (.rd-woo)
   El marcatge és el de WooCommerce (no es reimplementa res): aquí només se li
   posa el llenguatge visual del rediseny.
   ========================================================================== */
.rd-woo { padding-block: 30px 80px; }
.rd-woo__title {
    margin: 0 0 28px;
    font-size: var(--fs-display);
    font-weight: 800;
    line-height: var(--lh-tight);
    /* Versaletes llargues ("RETRORREFLECTÓMETRO") quedaven apretades amb el
     * tracking negatiu de display. */
    letter-spacing: var(--tr-snug);
    text-transform: uppercase;
}

/* --- Avisos de Woo ------------------------------------------------------- */
.rd-woo .woocommerce-message,
.rd-woo .woocommerce-error,
.rd-woo .woocommerce-info,
.rd-woo .woocommerce-notice {
    list-style: none;
    margin: 0 0 24px;
    padding: 16px 20px;
    background: #fff;
    border: 1px solid var(--rd-line);
    border-left: 3px solid var(--rd-brand);
    color: var(--rd-ink);
    font-size: var(--fs-sm);
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    flex-wrap: wrap;
}
.rd-woo .woocommerce-error { border-left-color: #b70e0c; }
.rd-woo .woocommerce-error li { list-style: none; }

/* --- Camps i botons ----------------------------------------------------- */
.rd-woo input[type="text"],
.rd-woo input[type="email"],
.rd-woo input[type="password"],
.rd-woo input[type="tel"],
.rd-woo input[type="number"],
.rd-woo input[type="search"],
.rd-woo select,
.rd-woo textarea {
    width: 100%;
    background: #fff;
    border: 1px solid rgba(0, 0, 0, .16);
    border-radius: 0;
    padding: 12px 14px;
    font-family: 'Montserrat', system-ui, sans-serif;
    font-size: var(--fs-base);
    color: var(--rd-ink);
}
.rd-woo input:focus,
.rd-woo select:focus,
.rd-woo textarea:focus { outline: 2px solid var(--rd-brand); outline-offset: 1px; }
.rd-woo label {
    display: block;
    margin-bottom: 6px;
    font-size: var(--fs-xs);
    font-weight: 700;
    letter-spacing: var(--tr-caps-sm);
    text-transform: uppercase;
    color: var(--rd-txt-2);
}
.rd-woo .form-row,
.rd-woo p.form-row { margin: 0 0 18px; }
.rd-woo .woocommerce-form__label-for-checkbox,
.rd-woo label.checkbox { text-transform: none; letter-spacing: 0; font-weight: 500; font-size: var(--fs-sm); }

.t2s-rd .rd-woo .button,
.t2s-rd .rd-woo button[type="submit"],
.t2s-rd .rd-woo input[type="submit"] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: var(--rd-brand);
    color: var(--rd-white);
    border: 0;
    border-radius: 0;
    cursor: pointer;
    padding: 14px 28px;
    font-family: 'Montserrat', system-ui, sans-serif;
    font-size: var(--fs-sm);
    font-weight: 700;
    letter-spacing: var(--tr-caps);
    text-transform: uppercase;
    transition: background .25s ease;
    width: auto;
}
.t2s-rd .rd-woo .button:hover,
.t2s-rd .rd-woo button[type="submit"]:hover,
.t2s-rd .rd-woo input[type="submit"]:hover { background: var(--rd-brand-hover); color: var(--rd-white); }
/* Botó secundari: "Actualizar carrito" i "Aplicar cupón" no competeixen amb el
 * CTA de finalitzar la compra. */
.t2s-rd .rd-woo button[name="update_cart"],
.t2s-rd .rd-woo button[name="apply_coupon"],
.t2s-rd .rd-woo .button[name="apply_coupon"] {
    background: #fff;
    color: var(--rd-ink);
    border: 1px solid rgba(0, 0, 0, .2);
}
.t2s-rd .rd-woo button[name="update_cart"]:hover,
.t2s-rd .rd-woo button[name="apply_coupon"]:hover { background: var(--rd-ink); color: var(--rd-white); }
.t2s-rd .rd-woo button[disabled] { opacity: .45; cursor: not-allowed; }

/* --- Taules (carret, comandes, descàrregues) ---------------------------- */
.rd-woo table.shop_table {
    width: 100%;
    border-collapse: collapse;
    background: #fff;
    border: 1px solid var(--rd-line);
}
.rd-woo table.shop_table th,
.rd-woo table.shop_table td {
    padding: 16px 18px;
    text-align: left;
    border-bottom: 1px solid var(--rd-line);
    font-size: var(--fs-sm);
    color: var(--rd-txt-2);
    vertical-align: middle;
}
.rd-woo table.shop_table thead th {
    color: var(--rd-ink);
    font-weight: 700;
    letter-spacing: var(--tr-caps-sm);
    text-transform: uppercase;
    font-size: var(--fs-xs);
    border-bottom: 2px solid var(--rd-ink);
}
.rd-woo table.shop_table td.product-name a {
    color: var(--rd-ink);
    font-weight: 700;
    letter-spacing: var(--tr-snug);
}
.t2s-rd .rd-woo table.shop_table td.product-name a:hover { color: var(--rd-brand); }
.rd-woo table.shop_table td.product-thumbnail img { width: 72px; height: auto; }
.rd-woo table.shop_table td.product-subtotal,
.rd-woo table.shop_table td.product-price { color: var(--rd-ink); font-weight: 700; }
.t2s-rd .rd-woo a.remove {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 26px;
    height: 26px;
    border: 1px solid rgba(0, 0, 0, .16);
    color: var(--rd-txt-3);
    font-size: 16px;
    line-height: 1;
    text-decoration: none;
}
.t2s-rd .rd-woo a.remove:hover { background: var(--rd-brand); border-color: var(--rd-brand); color: #fff; }
.rd-woo .quantity input.qty { width: 78px; text-align: center; padding: 10px 6px; }
.rd-woo table.shop_table td.actions {
    padding: 20px 18px;
    background: var(--rd-paper);
    border-bottom: 0;
}
.rd-woo .coupon {
    display: flex;
    gap: 10px;
    flex-wrap: wrap;
    margin-bottom: 14px;
}
.rd-woo .coupon input#coupon_code { width: auto; min-width: 200px; }

/* --- Layout de carret: taula + totals ----------------------------------- */
body.woocommerce-cart .rd-woo__body {
    display: grid;
    grid-template-columns: minmax(0, 1.7fr) minmax(0, 1fr);
    gap: 32px;
    align-items: start;
}
/* El shortcode embolcalla tot dins de .woocommerce: es promou a graella i es
 * col·loca cada peça, perquè el contenidor d'avisos (sovint buit) no ocupi una
 * cel·la i desplaci la taula. */
body.woocommerce-cart .rd-woo__body > .woocommerce { display: contents; }
body.woocommerce-cart .rd-woo .woocommerce-notices-wrapper { grid-column: 1 / -1; }
body.woocommerce-cart .rd-woo .woocommerce-cart-form { grid-column: 1; grid-row: 2; }
body.woocommerce-cart .rd-woo .cart-collaterals { grid-column: 2; grid-row: 2; }
.rd-woo .cart-collaterals { width: 100%; }
.rd-woo .cart_totals {
    background: #fff;
    border: 1px solid var(--rd-line);
    padding: 26px 28px;
}
.rd-woo .cart_totals h2 {
    margin: 0 0 18px;
    font-size: var(--fs-h2);
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: var(--tr-tight);
}
.rd-woo .cart_totals table.shop_table { border: 0; }
.rd-woo .cart_totals table.shop_table th,
.rd-woo .cart_totals table.shop_table td { padding: 12px 0; }
.rd-woo .cart_totals tr.order-total td { color: var(--rd-ink); font-size: var(--fs-h3); font-weight: 800; }
.rd-woo .wc-proceed-to-checkout { margin-top: 18px; }
.t2s-rd .rd-woo .wc-proceed-to-checkout .button { width: 100%; }

/* --- Compte: navegació lateral + contingut ------------------------------ */
body.woocommerce-account .rd-woo__body {
    display: grid;
    grid-template-columns: 264px minmax(0, 1fr);
    gap: 32px;
    align-items: start;
}
body.woocommerce-account .rd-woo__body > .woocommerce { display: contents; }
body.woocommerce-account .rd-woo .woocommerce-notices-wrapper { grid-column: 1 / -1; }
body.woocommerce-account .rd-woo .woocommerce-MyAccount-navigation { grid-column: 1; grid-row: 2; }
body.woocommerce-account .rd-woo .woocommerce-MyAccount-content { grid-column: 2; grid-row: 2; }
/* Accés sense sessió: el bloc de formularis ocupa tot l'ample. */
body.woocommerce-account .rd-woo .u-columns,
body.woocommerce-account .rd-woo form.woocommerce-form-login,
body.woocommerce-account .rd-woo form.woocommerce-form-register { grid-column: 1 / -1; grid-row: 2; }
.rd-woo .woocommerce-MyAccount-navigation {
    background: #fff;
    border: 1px solid var(--rd-line);
}
.rd-woo .woocommerce-MyAccount-navigation ul { list-style: none; margin: 0; padding: 0; }
.rd-woo .woocommerce-MyAccount-navigation li + li { border-top: 1px solid var(--rd-line); }
.t2s-rd .rd-woo .woocommerce-MyAccount-navigation li a {
    display: block;
    padding: 14px 20px;
    color: var(--rd-ink);
    font-size: var(--fs-xs);
    font-weight: 700;
    letter-spacing: var(--tr-caps-sm);
    text-transform: uppercase;
}
.t2s-rd .rd-woo .woocommerce-MyAccount-navigation li a:hover { background: var(--rd-paper); color: var(--rd-brand); }
.rd-woo .woocommerce-MyAccount-navigation li.is-active a {
    background: var(--rd-brand);
    color: var(--rd-white);
}
.t2s-rd .rd-woo .woocommerce-MyAccount-navigation li.is-active a { color: var(--rd-white); }
.rd-woo .woocommerce-MyAccount-content {
    background: #fff;
    border: 1px solid var(--rd-line);
    padding: 32px 34px;
}
.rd-woo .woocommerce-MyAccount-content p,
.rd-woo .woocommerce-MyAccount-content li { color: var(--rd-txt-2); font-size: var(--fs-base); line-height: var(--lh-body); }

/* Accés / registre: dues columnes de formulari */
.rd-woo .u-columns {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 28px;
}
.rd-woo .u-column1,
.rd-woo .u-column2 {
    background: #fff;
    border: 1px solid var(--rd-line);
    padding: 30px 32px;
    width: auto;
    float: none;
}
.rd-woo .u-columns h2,
.rd-woo form.woocommerce-form > h2 {
    margin: 0 0 20px;
    font-size: var(--fs-h2);
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: var(--tr-tight);
}
.rd-woo .woocommerce-form-login__rememberme { text-transform: none; }
.rd-woo .lost_password { margin-top: 12px; font-size: var(--fs-sm); }

/* --- Pagament ----------------------------------------------------------- */
body.woocommerce-checkout .rd-woo .col2-set {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 28px;
}
body.woocommerce-checkout .rd-woo .col-1,
body.woocommerce-checkout .rd-woo .col-2 { width: auto; float: none; }
.rd-woo #order_review,
.rd-woo #customer_details {
    background: #fff;
    border: 1px solid var(--rd-line);
    padding: 28px 30px;
    margin-top: 24px;
}
.rd-woo h3#order_review_heading,
.rd-woo #customer_details h3 {
    margin: 0 0 18px;
    font-size: var(--fs-h2);
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: var(--tr-tight);
}

/* --- Carret buit -------------------------------------------------------- */
.rd-woo__empty {
    background: #fff;
    border: 1px solid var(--rd-line);
    padding: 40px 44px;
    text-align: center;
}
.rd-woo__empty p { margin: 0 0 22px; color: var(--rd-txt-2); font-size: var(--fs-lg); }
.rd-woo__empty-ctas { display: flex; gap: 20px; justify-content: center; flex-wrap: wrap; align-items: center; }
/* Woo pinta el seu propi missatge de carret buit: el nostre bloc ja el diu. */
body.woocommerce-cart .rd-woo .cart-empty { display: none; }
body.woocommerce-cart .rd-woo .return-to-shop { display: none; }

@media (max-width: 1023px) {
    body.woocommerce-cart .rd-woo__body,
    body.woocommerce-account .rd-woo__body { grid-template-columns: minmax(0, 1fr); }
    .rd-woo .u-columns,
    body.woocommerce-checkout .rd-woo .col2-set { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 767px) {
    .rd-woo table.shop_table td.product-thumbnail { display: none; }
    .rd-woo table.shop_table th,
    .rd-woo table.shop_table td { padding: 12px 10px; }
}

/* ==========================================================================
   PÀGINA GENÈRICA (legals, privacitat, cookies…) — mateix ample que la resta
   ========================================================================== */
.rd-page { padding-block: 30px 80px; }
.rd-page__title {
    margin: 0 0 32px;
    font-size: var(--fs-display);
    font-weight: 800;
    line-height: var(--lh-tight);
    /* Versaletes llargues ("RETRORREFLECTÓMETRO") quedaven apretades amb el
     * tracking negatiu de display. */
    letter-spacing: var(--tr-snug);
    text-transform: uppercase;
}
.rd-prose {
    background: #fff;
    border: 1px solid var(--rd-line);
    padding: 48px 52px;
    max-width: 92ch;
}
.rd-prose h2,
.rd-prose h3 {
    margin: 36px 0 14px;
    font-weight: 700;
    letter-spacing: var(--tr-caps-h3);
    text-transform: uppercase;
}
.rd-prose h2 { font-size: var(--fs-h2); }
.rd-prose h3 { font-size: var(--fs-h3); }
.rd-prose h2:first-child,
.rd-prose h3:first-child { margin-top: 0; }
.rd-prose p,
.rd-prose li {
    color: var(--rd-txt-2);
    font-size: var(--fs-base);
    line-height: var(--lh-body);
}
.rd-prose p { margin: 0 0 16px; }
.rd-prose ul,
.rd-prose ol { margin: 0 0 20px; padding-left: 22px; }
.rd-prose li { margin-bottom: 8px; }
.rd-prose strong { color: var(--rd-ink); }
.rd-prose img { height: auto; margin: 22px 0; }
.rd-prose table { width: 100%; border-collapse: collapse; margin: 0 0 22px; }
.rd-prose th,
.rd-prose td { padding: 12px 14px; border-bottom: 1px solid var(--rd-line); text-align: left; font-size: var(--fs-sm); }

@media (max-width: 767px) {
    .rd-prose { padding: 28px 22px; }
}

/* El llistat del hub ja va dins d'una secció amb padding: el .rd-shop no n'hi
 * ha d'afegir més. */
.rd-shop--hub { padding-block: 0; }
/* Sense filtres útils no es pinta la columna: la graella ocupa tot l'ample i
 * puja a quatre columnes en comptes de deixar un buit a l'esquerra. */
.rd-shop--nofilters { grid-template-columns: minmax(0, 1fr); }
.rd-shop--nofilters .rd-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
@media (max-width: 1023px) {
    .rd-shop--nofilters .rd-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

/* CTA amb el botó a l'ESQUERRA, just sota el paràgraf (hub, subcategoria i
 * fitxa). El CTA de la home manté el botó a la dreta. */
/* Text a dalt i botó al peu, amb el mateix padding per tots costats. */
.rd-cta--left {
    grid-template-columns: minmax(0, 1fr);
    grid-template-rows: auto 1fr;
    align-items: start;
    padding: 56px;
}
.rd-cta--left .rd-cta__actions { align-self: end; }
.rd-cta--left .rd-cta__actions {
    flex-direction: row;
    align-items: flex-start;
    justify-content: flex-start;
    margin-top: 26px;
}
.rd-cta--left .rd-cta__actions > * { min-width: 0; }
.rd-cta--left .rd-cta__body { max-width: 720px; }

/* Bloc SEO: seccions de consulta plegades, per no deixar un mur de text.
 * El <summary> porta el mateix H3 de sempre (el contingut segueix al HTML). */
.rd-seo__fold { border-top: 1px solid var(--rd-line); margin-top: 28px; }
.rd-seo__fold > summary {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    cursor: pointer;
    padding: 20px 0 18px;
    list-style: none;
}
.rd-seo__fold > summary::-webkit-details-marker { display: none; }
.rd-seo__fold > summary > h3 { margin: 0; }
.rd-seo__fold > summary::after {
    content: "+";
    flex: none;
    color: var(--rd-brand);
    font-size: 22px;
    font-weight: 700;
    line-height: 1;
}
.rd-seo__fold[open] > summary::after { content: "–"; }
.rd-seo__fold-in { padding-bottom: 8px; }
/* Línia de lectura còmoda al cos del bloc SEO. */
.rd-seo--hub > p,
.rd-seo--hub .rd-seo__fold-in p,
.rd-seo--hub .rd-seo-list > li { max-width: 88ch; }

/* Classes de norma (EN ISO 20471…): fitxa curta per classe en comptes d'una
 * llista de tres pics amb una línia i mitja de text cada un. */
.rd-clases {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 14px;
    margin: 22px 0 24px;
}
.rd-clase {
    display: flex;
    flex-direction: column;
    gap: 8px;
    padding: 22px 22px 24px;
    background: var(--rd-paper);
}
.rd-clase__n {
    font-size: var(--fs-h3);
    font-weight: 800;
    letter-spacing: var(--tr-caps-lg);
    text-transform: uppercase;
    color: var(--rd-ink);
}
.rd-clase__m {
    font-size: var(--fs-sm);
    font-weight: 600;
    line-height: var(--lh-snug);
    color: var(--rd-ink);
}
.rd-clase__use {
    font-size: var(--fs-sm);
    line-height: var(--lh-relaxed);
    color: var(--rd-txt-2);
}
@media (max-width: 767px) { .rd-clases { grid-template-columns: minmax(0, 1fr); } }

/* Facetes de client dins del panell lateral: botons amb el mateix aspecte que
 * els enllaços de filtre. */
.t2s-rd .rd-flist .rd-fbtn {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 14px;
    width: 100%;
    padding: 7px 10px;
    border: 0;
    border-radius: 3px;
    background: transparent;
    color: var(--rd-ink);
    cursor: pointer;
    text-align: left;
    font-size: var(--fs-sm);
    font-weight: 500;
    line-height: var(--lh-normal);
}
.t2s-rd .rd-flist .rd-fbtn > span:first-child { flex: 1; min-width: 0; }
.t2s-rd .rd-flist .rd-fbtn:hover { background: var(--rd-paper); }
.t2s-rd .rd-flist .rd-fbtn.is-on { background: var(--rd-paper); font-weight: 700; color: var(--rd-brand); }
.t2s-rd a.rd-pdp__eyebrow:hover { color: var(--rd-brand-hover); text-decoration: underline; }

/* Secció de vídeo de la fitxa. Només existeix si el producte té vídeo. */
.rd-pvideo {
    margin-top: 56px;
    background: #fff;
    border: 1px solid var(--rd-line);
    padding: 40px 44px;
}
.rd-pvideo h2 {
    margin: 0 0 24px;
    font-size: var(--fs-h1);
    font-weight: 800;
    line-height: var(--lh-tight);
    letter-spacing: var(--tr-tight);
    text-transform: uppercase;
}
.rd-pvideo__list { display: grid; gap: 18px; }
@media (max-width: 767px) { .rd-pvideo { padding: 28px 22px; } }

/* Vídeos i incrustacions dins de text: sempre a l'ample del bloc que els conté
 * (venien amb la mida intrínseca del fitxer i quedaven petits i descentrats). */
.rd-prose video,
.rd-prose iframe,
.rd-prose embed,
.rd-prose object,
.rd-seo video,
.rd-seo iframe,
.rd-tabs__panel video,
.rd-tabs__panel iframe,
.rd-seo__more-in video,
.rd-seo__more-in iframe {
    display: block;
    width: 100%;
    max-width: 100%;
    height: auto;
    aspect-ratio: 16 / 9;
    margin: 24px 0;
    border: 0;
    background: var(--rd-ink);
}
/* Àudio i incrustacions que no són de vídeo no han de portar proporció fixa. */
.rd-prose audio { display: block; width: 100%; margin: 20px 0; }

/* Selector d'idioma a la barra superior (fons fosc). */
.rd-topbar__promo { margin-right: auto; }
.rd-lang--top { margin-left: 4px; }
.t2s-rd .rd-lang--top .rd-lang__btn { color: rgba(255, 255, 255, .82); }
.t2s-rd .rd-lang--top .rd-lang__btn:hover { color: var(--rd-white); }
.rd-lang--top .rd-lang__menu { right: 0; left: auto; }

/* ==========================================================================
   PORTADA D'ARTICLE — mateixa gramàtica que el hero del hub
   ========================================================================== */
.rd-arthero {
    position: relative;
    overflow: hidden;
    background: #fff;
    border-bottom: 1px solid var(--rd-line);
}
.rd-arthero__in { position: relative; z-index: 2; padding-block: 30px 52px; }
.rd-arthero .rd-crumbs { margin-bottom: 40px; }
.rd-arthero__body { max-width: 900px; }
.rd-arthero__cat {
    margin: 0 0 14px;
    font-size: var(--fs-2xs);
    font-weight: 700;
    letter-spacing: var(--tr-caps);
    text-transform: uppercase;
    color: var(--rd-brand);
}
.rd-arthero__t {
    margin: 0;
    font-size: var(--fs-display);
    font-weight: 800;
    line-height: var(--lh-tight);
    letter-spacing: var(--tr-snug);
    text-transform: uppercase;
    text-wrap: balance;
}
.rd-arthero__meta {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 8px;
    margin: 22px 0 0;
    font-size: var(--fs-sm);
    color: var(--rd-txt-2);
}
.rd-arthero__author { font-weight: 700; color: var(--rd-ink); }
.rd-arthero__meta .sep { color: var(--rd-txt-4); }

/* Amb foto: fons fosc i text en blanc. */
.rd-arthero--photo { background: var(--rd-ink); border-bottom: 0; }
.rd-arthero--photo > .rd-media {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center;
    z-index: 0;
}
.rd-arthero--photo .rd-arthero__in { padding-block: 34px 64px; }
.rd-arthero--photo .rd-arthero__t { color: var(--rd-white); }
.rd-arthero--photo .rd-arthero__cat { color: #ff6a5d; }
.rd-arthero--photo .rd-arthero__meta { color: rgba(255, 255, 255, .82); }
.rd-arthero--photo .rd-arthero__author { color: var(--rd-white); }
.t2s-rd .rd-arthero--photo .rd-crumbs,
.t2s-rd .rd-arthero--photo .rd-crumbs a { color: rgba(255, 255, 255, .75); }
.t2s-rd .rd-arthero--photo .rd-crumbs a:hover { color: #fff; }
.rd-arthero--photo .rd-crumbs .sep { color: rgba(255, 255, 255, .4); }
.rd-arthero--photo .rd-crumbs .cur { color: #fff; }

/* El cos de l'article ja no necessita la capçalera clara de dalt. */
.rd-article { padding-top: 40px; }
@media (max-width: 599px) {
    .rd-arthero__in,
    .rd-arthero--photo .rd-arthero__in { padding-block: 22px 40px; }
}

/* ==========================================================================
   MÒBIL · ajustos que han d'anar al FINAL
   Els components definits més avall al full (.rd-cta--left) guanyarien per
   ordre de font, encara que l'altra regla vagi dins d'una media query.
   ========================================================================== */
@media (max-width: 700px) {
    .rd-cta,
    .rd-cta--left {
        padding: 26px 20px;
        gap: 18px;
        min-height: 0;
    }
    .rd-cta--left .rd-cta__actions { margin-top: 16px; }
    /* Prova social: menys aire entre la nota i les ressenyes. */
    .rd-reviews { gap: 22px; }
    .rd-reviews__grid { gap: 14px; }
}
/* ==========================================================================
   MÒBIL · farciments dels blocs de contingut
   A 320px la caixa útil fa 284px: un farciment lateral de 52px hi deixava
   180px de text. Aquests blocs surten a totes les pàgines (catàleg, fitxa,
   article, carret, legals), no només a la home.
   ========================================================================== */
@media (max-width: 700px) {
    .rd-about__body { padding: 26px 20px; }
    .rd-seo { padding: 26px 20px; }
    .rd-seo__cta { padding: 20px; }
    .rd-faq { padding: 26px 20px; }
    .rd-endcta { padding: 26px 20px; }
    .rd-papps { padding: 24px 20px; }
    .rd-pvideo { padding: 24px 20px; }
    .rd-prose { padding: 26px 20px; }
    .rd-woo .cart-empty,
    .rd-woo__empty { padding: 24px 20px; }
    /* Taules de dades (fitxa tècnica, article, carret): si no hi caben, scroll
     * pròpia, mai empenyent la pàgina. */
    .rd-tabs__panel table,
    .rd-pdp__excerpt table,
    .rd-prose table,
    .rd-woo table.shop_table,
    .rd-woo .cart_totals table { display: block; overflow-x: auto; max-width: 100%; }
}
/* ==========================================================================
   MÒBIL ESTRET (≤479px) · targeta de producte
   A dues columnes la targeta fa 133px: el preu i el botó d'afegir no hi caben
   a la mateixa línia i el botó quedava tallat per la vora de la card.
   ========================================================================== */
@media (max-width: 479px) {
    .rd-lcard__foot,
    .rd-pcard__foot {
        flex-wrap: wrap;
        gap: 8px;
    }
    .rd-lcard__price,
    .rd-pcard__price { font-size: var(--fs-base); }
}
