/* themes/bootswatch_simplex/css/style.css — "less is more".
   Simplex = ultra-minimalist : beaucoup de blanc, traits fins, un seul accent
   rouge (var(--bs-primary)). Pas de dégradés, pas de décoration superflue.
   Construit sur les variables --bs-* du skin Bootswatch Simplex. */

/* ------------------------------------------------------------------ *
 * Rythme général : sections aérées, séparées par un filet très fin.
 * ------------------------------------------------------------------ */
main > section {
    padding-block: clamp(4rem, 9vw, 7.5rem);
    scroll-margin-top: 5rem;
    border-top: 1px solid var(--bs-border-color);
}
main > section:first-child { border-top: 0; }

/* ------------------------------------------------------------------ *
 * Hero — RADICAL MINIMAL LEFT : retenue suisse / éditoriale.
 * Aligné à gauche, blanc à profusion, aucun fond, aucune pilule.
 * Un point rouge + 1 mot rouge, un titre moyen, une ligne, un lien
 * rouge souligné. Filet pleine largeur sous le tout. Aucun bouton.
 * ------------------------------------------------------------------ */
.bsw-hero {
    padding-block: clamp(6rem, 22vw, 14rem);   /* énorme respiration */
    background: transparent;                    /* aucun remplissage */
    border-top: 0;
    border-bottom: 1px solid var(--bs-border-color);  /* filet pleine largeur */
    text-align: left;
}

/* Étiquette : un petit point rouge + un mot rouge. Pas de pilule. */
.bsw-hero__label {
    display: flex;
    align-items: center;
    gap: .65rem;
    margin: 0 0 clamp(1.5rem, 4vw, 2.5rem);
    font-size: .78rem;
    font-weight: 600;
    letter-spacing: .22em;
    text-transform: uppercase;
    color: var(--bs-primary);
}
.bsw-hero__dot {
    width: .5rem;
    height: .5rem;
    border-radius: 50%;
    background: var(--bs-primary);
    flex: 0 0 auto;
}

/* Titre moyen (pas démesuré), propre, fin. */
.bsw-hero__title {
    margin: 0;
    max-width: 18ch;
    font-size: clamp(2.25rem, 5.5vw, 3.75rem);
    font-weight: 400;
    line-height: 1.08;
    letter-spacing: -.015em;
    color: var(--bs-body-color);
}

/* Une seule ligne de lead. */
.bsw-hero__lead {
    margin: clamp(1.25rem, 3vw, 1.75rem) 0 0;
    max-width: 52ch;
    font-size: clamp(1rem, 1.6vw, 1.2rem);
    font-weight: 300;
    line-height: 1.6;
    color: var(--bs-secondary-color, var(--bs-body-color));
}

/* UN seul lien texte rouge souligné. Aucun bouton. */
.bsw-hero__cta {
    margin: clamp(2rem, 5vw, 3rem) 0 0;
}
.bsw-hero__link {
    font-weight: 500;
    color: var(--bs-primary);
    text-decoration: underline;
    text-decoration-thickness: 1px;
    text-underline-offset: .28em;
    transition: text-underline-offset .18s ease, opacity .18s ease;
}
.bsw-hero__link:hover,
.bsw-hero__link:focus-visible {
    color: var(--bs-primary);
    text-underline-offset: .4em;
    opacity: .8;
}

@media (prefers-reduced-motion: reduce) {
    .bsw-hero__link { transition: none; }
}

/* ------------------------------------------------------------------ *
 * Titres de section — sobres, accent sur un mince trait sous le titre.
 * ------------------------------------------------------------------ */
.section-title,
main > section > .container > h2:first-child {
    margin-bottom: clamp(2rem, 5vw, 3.5rem);
}
.section-title h2,
main > section h2 {
    font-weight: 300;
    letter-spacing: -.01em;
}
.section-title h2 { position: relative; display: inline-block; padding-bottom: .65rem; }
.section-title h2::after {
    content: "";
    position: absolute;
    left: 0; bottom: 0;
    width: 2.5rem; height: 2px;
    background: var(--bs-primary);
}
.section-title p { color: var(--bs-secondary-color, var(--bs-body-color)); font-weight: 300; }

/* ------------------------------------------------------------------ *
 * Cartes — pas d'ombre, pas de remplissage coloré. Juste un filet.
 * ------------------------------------------------------------------ */
.card {
    border: 1px solid var(--bs-border-color);
    border-radius: 0;
    background: var(--bs-body-bg);
    box-shadow: none;
    transition: border-color .18s ease, transform .18s ease;
}
.card:hover {
    border-color: var(--bs-primary);
    transform: translateY(-2px);
}
.card .card-body { padding: clamp(1.5rem, 3vw, 2rem); }
.card .card-title { font-weight: 400; }
.card .card-title a { color: var(--bs-body-color); }
.card .card-title a:hover { color: var(--bs-primary); }

/* ------------------------------------------------------------------ *
 * Contact — centré, généreux, un seul accent sur l'email.
 * ------------------------------------------------------------------ */
#contact .lead a { color: var(--bs-primary); text-decoration: none; }
#contact .lead a:hover { text-decoration: underline; }

/* ------------------------------------------------------------------ *
 * Footer.
 * ------------------------------------------------------------------ */
.bsw-footer a { text-decoration: none; }
.bsw-footer a:hover { color: var(--bs-primary) !important; }

/* ------------------------------------------------------------------ *
 * Boutons — coins droits, traits fins, cohérent avec l'esprit minimal.
 * ------------------------------------------------------------------ */
.btn { border-radius: 0; font-weight: 500; letter-spacing: .01em; }
.btn-lg { padding-inline: clamp(1.5rem, 4vw, 2.25rem); }

/* ------------------------------------------------------------------ *
 * Petits écrans.
 * ------------------------------------------------------------------ */
@media (prefers-reduced-motion: reduce) {
    .card { transition: none; }
}

/* ================================================================== *
 * Phase 3 — sections sur-mesure (projects / team / testimonials / faq)
 * Esprit Simplex : pas d'ombre, filets très fins, accent rouge rare.
 * ================================================================== */

/* --- Petits éléments réutilisés -------------------------------------- */
.bsw-tag {
    align-self: flex-start;
    margin: 0 0 .75rem;
    padding: .15rem .55rem;
    font-size: .68rem;
    font-weight: 600;
    letter-spacing: .14em;
    text-transform: uppercase;
    border: 1px solid var(--bs-border-color);
    color: var(--bs-secondary-color, var(--bs-body-color));
}
.bsw-tag--accent {
    border-color: var(--bs-primary);
    color: var(--bs-primary);
}

/* Lien-flèche minimal : un seul accent au survol. */
.bsw-arrow-link {
    display: inline-flex;
    align-items: baseline;
    gap: .4rem;
    font-weight: 500;
    text-decoration: none;
    color: var(--bs-body-color);
    transition: color .18s ease;
}
.bsw-arrow-link span {
    color: var(--bs-primary);
    display: inline-block;
    transition: transform .18s ease;
}
.bsw-arrow-link:hover,
.bsw-arrow-link:focus-visible { color: var(--bs-primary); }
.bsw-arrow-link:hover span,
.bsw-arrow-link:focus-visible span { transform: translateX(3px); }
.bsw-arrow-link--strong {
    padding-bottom: 3px;
    border-bottom: 1px solid var(--bs-border-color);
}
.bsw-arrow-link--strong:hover,
.bsw-arrow-link--strong:focus-visible { border-color: var(--bs-primary); }

.bsw-section-foot {
    margin-top: clamp(2.5rem, 5vw, 3.5rem);
    text-align: center;
}

/* --- Grille à filets partagés : pas de cartes flottantes ------------- */
/* Les cellules se touchent ; les filets fins font office de séparation. */
.bsw-grid { border-top: 1px solid var(--bs-border-color); }
.bsw-grid__cell {
    border-bottom: 1px solid var(--bs-border-color);
}
@media (min-width: 768px) {
    .bsw-grid__cell { border-right: 1px solid var(--bs-border-color); }
    .bsw-grid > .col-md-6:nth-child(2n) { border-right: 0; }
}
@media (min-width: 992px) {
    .bsw-grid > .col-lg-4 { border-right: 1px solid var(--bs-border-color); }
    .bsw-grid > .col-lg-4:nth-child(3n) { border-right: 0; }
    .bsw-grid > .col-lg-3 { border-right: 1px solid var(--bs-border-color); }
    .bsw-grid > .col-lg-3:nth-child(4n) { border-right: 0; }
    .bsw-grid > .col-lg-6:nth-child(2n) { border-right: 0; }
}

/* --- Projects ------------------------------------------------------- */
.bsw-project { padding: clamp(1.5rem, 3vw, 2rem); }
.bsw-project__media {
    display: block;
    margin: 0 0 1.25rem;
    overflow: hidden;
}
.bsw-project__media img {
    width: 100%;
    height: 200px;
    object-fit: cover;
    display: block;
    filter: grayscale(100%);
    transition: filter .25s ease, transform .25s ease;
}
.bsw-project:hover .bsw-project__media img { filter: grayscale(0); transform: scale(1.02); }
.bsw-project__cat {
    margin: 0 0 .35rem;
    font-size: .72rem;
    font-weight: 600;
    letter-spacing: .14em;
    text-transform: uppercase;
    color: var(--bs-primary);
}
.bsw-project__title { margin: 0 0 .6rem; font-weight: 400; }
.bsw-project__title a {
    color: var(--bs-body-color);
    text-decoration: none;
    transition: color .18s ease;
}
.bsw-project__title a:hover,
.bsw-project__title a:focus-visible { color: var(--bs-primary); }
.bsw-project__desc {
    margin: 0 0 1.25rem;
    font-size: .92rem;
    line-height: 1.6;
    color: var(--bs-secondary-color, var(--bs-body-color));
}

/* --- Team ----------------------------------------------------------- */
.bsw-member { padding: clamp(1.5rem, 3vw, 2rem); text-align: left; }
.bsw-member__media {
    width: 64px; height: 64px;
    margin: 0 0 1rem;
    overflow: hidden;
    border-radius: 50%;
}
.bsw-member__media img {
    width: 100%; height: 100%;
    object-fit: cover; display: block;
    filter: grayscale(100%);
    transition: filter .25s ease;
}
.bsw-member:hover .bsw-member__media img { filter: grayscale(0); }
.bsw-member__media--empty {
    display: flex;
    align-items: center;
    justify-content: center;
    border: 1px solid var(--bs-border-color);
    border-radius: 50%;
}
.bsw-member__media--empty i { font-size: 1.5rem; color: var(--bs-secondary-color, var(--bs-body-color)); }
.bsw-member__name { margin: 0 0 .2rem; font-weight: 500; }
.bsw-member__role {
    margin: 0 0 .6rem;
    font-size: .78rem;
    letter-spacing: .1em;
    text-transform: uppercase;
    color: var(--bs-primary);
}
.bsw-member__bio {
    margin: 0 0 1rem;
    font-size: .9rem;
    line-height: 1.6;
    color: var(--bs-secondary-color, var(--bs-body-color));
}
.bsw-member__links { display: flex; gap: .9rem; }
.bsw-member__links a {
    color: var(--bs-secondary-color, var(--bs-body-color));
    font-size: 1.05rem;
    text-decoration: none;
    transition: color .18s ease;
}
.bsw-member__links a:hover,
.bsw-member__links a:focus-visible { color: var(--bs-primary); }

/* --- Testimonials --------------------------------------------------- */
.bsw-quote {
    display: flex;
    flex-direction: column;
    padding: clamp(1.75rem, 3.5vw, 2.5rem);
}
.bsw-quote__mark {
    font-family: Georgia, "Times New Roman", serif;
    font-size: 3rem;
    line-height: .6;
    color: var(--bs-primary);
    margin-bottom: .75rem;
}
.bsw-quote__text {
    margin: 0 0 1.5rem;
    font-size: 1.05rem;
    font-weight: 300;
    line-height: 1.65;
    color: var(--bs-body-color);
}
.bsw-quote__cite {
    display: flex;
    align-items: center;
    gap: .9rem;
    margin-top: auto;
}
.bsw-quote__avatar {
    width: 44px; height: 44px;
    border-radius: 50%;
    object-fit: cover;
    filter: grayscale(100%);
}
.bsw-quote__meta { display: flex; flex-direction: column; line-height: 1.3; }
.bsw-quote__name { font-weight: 500; color: var(--bs-body-color); }
.bsw-quote__org { color: var(--bs-secondary-color, var(--bs-body-color)); }

/* --- FAQ ------------------------------------------------------------ */
.bsw-accordion .bsw-accordion__item {
    border: 0;
    border-top: 1px solid var(--bs-border-color);
    background: transparent;
}
.bsw-accordion .bsw-accordion__item:last-child {
    border-bottom: 1px solid var(--bs-border-color);
}
.bsw-accordion .accordion-button {
    padding: 1.25rem .25rem;
    font-weight: 400;
    background: transparent;
    color: var(--bs-body-color);
    box-shadow: none;
}
.bsw-accordion .accordion-button:not(.collapsed) {
    color: var(--bs-primary);
    background: transparent;
    box-shadow: none;
}
.bsw-accordion .accordion-button:focus {
    box-shadow: none;
    border-color: transparent;
}
.bsw-accordion .accordion-button::after {
    width: 1rem; height: 1rem;
    background-size: 1rem;
}
.bsw-accordion .accordion-body {
    padding: 0 .25rem 1.5rem;
    font-weight: 300;
    line-height: 1.7;
    color: var(--bs-secondary-color, var(--bs-body-color));
}

@media (prefers-reduced-motion: reduce) {
    .bsw-project__media img,
    .bsw-member__media img,
    .bsw-arrow-link span { transition: none; }
}

/* ================================================================== *
 * Phase 5 — sections home sur-mesure
 * (about / skills / stats / resume / services)
 * Même esprit : filets fins, beaucoup de blanc, accent rouge rare.
 * ================================================================== */

/* --- About ---------------------------------------------------------- */
.bsw-about__img {
    width: 100%;
    display: block;
    border-radius: 0;                /* coins droits */
    filter: grayscale(100%);
    transition: filter .25s ease;
}
.bsw-about__img:hover { filter: grayscale(0); }
.bsw-about__title {
    margin: 0 0 1.25rem;
    font-weight: 300;
    letter-spacing: -.01em;
}
.bsw-about__lead {
    font-weight: 300;
    font-size: 1.05rem;
    line-height: 1.7;
    color: var(--bs-secondary-color, var(--bs-body-color));
}
.bsw-about__lead p:last-child { margin-bottom: 0; }

.bsw-about__facts {
    margin: clamp(1.75rem, 4vw, 2.5rem) 0 0;
    border-top: 1px solid var(--bs-border-color);
}
.bsw-about__fact {
    display: flex;
    gap: 1.5rem;
    padding: .85rem 0;
    border-bottom: 1px solid var(--bs-border-color);
}
.bsw-about__fact dt {
    flex: 0 0 8rem;
    margin: 0;
    font-size: .72rem;
    font-weight: 600;
    letter-spacing: .14em;
    text-transform: uppercase;
    color: var(--bs-primary);
}
.bsw-about__fact dd {
    margin: 0;
    color: var(--bs-body-color);
}
.bsw-about__fact dd a { color: var(--bs-body-color); text-decoration: none; }
.bsw-about__fact dd a:hover,
.bsw-about__fact dd a:focus-visible { color: var(--bs-primary); }
@media (max-width: 575.98px) {
    .bsw-about__fact { flex-direction: column; gap: .2rem; }
    .bsw-about__fact dt { flex-basis: auto; }
}

/* --- Skills --------------------------------------------------------- */
.bsw-skill { padding: clamp(1.5rem, 3vw, 2rem); }
.bsw-skill__head {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 1rem;
    margin-bottom: .85rem;
}
.bsw-skill__name {
    margin: 0;
    font-weight: 400;
    display: inline-flex;
    align-items: center;
    gap: .55rem;
}
.bsw-skill__name i { color: var(--bs-primary); font-size: 1rem; }
.bsw-skill__pct {
    font-size: .8rem;
    font-variant-numeric: tabular-nums;
    color: var(--bs-secondary-color, var(--bs-body-color));
}
.bsw-skill__track {
    height: 2px;                     /* filet, pas une barre épaisse */
    background: var(--bs-border-color);
    overflow: hidden;
}
.bsw-skill__bar {
    display: block;
    height: 100%;
    background: var(--bs-primary);
}

/* --- Stats ---------------------------------------------------------- */
.bsw-stat {
    padding: clamp(1.75rem, 4vw, 2.5rem) clamp(1rem, 3vw, 2rem);
    text-align: center;
}
.bsw-stat__icon {
    display: block;
    margin-bottom: .75rem;
    font-size: 1.5rem;
    color: var(--bs-primary);
}
.bsw-stat__value {
    margin: 0 0 .35rem;
    font-size: clamp(2.25rem, 6vw, 3.25rem);
    font-weight: 300;
    line-height: 1;
    letter-spacing: -.02em;
    color: var(--bs-body-color);
    font-variant-numeric: tabular-nums;
}
.bsw-stat__unit {
    font-size: .4em;
    font-weight: 400;
    color: var(--bs-primary);
    margin-left: .15em;
}
.bsw-stat__label {
    margin: 0;
    font-size: .78rem;
    letter-spacing: .12em;
    text-transform: uppercase;
    color: var(--bs-secondary-color, var(--bs-body-color));
}

/* --- Resume --------------------------------------------------------- */
.bsw-resume__heading {
    margin: 0 0 clamp(1.5rem, 3vw, 2rem);
    font-weight: 400;
    padding-bottom: .65rem;
    border-bottom: 1px solid var(--bs-border-color);
}
.bsw-timeline {
    list-style: none;
    margin: 0;
    padding: 0;
    border-left: 1px solid var(--bs-border-color);
}
.bsw-timeline__item {
    position: relative;
    padding: 0 0 clamp(1.5rem, 3vw, 2rem) 1.5rem;
}
.bsw-timeline__item:last-child { padding-bottom: 0; }
.bsw-timeline__item::before {
    content: "";
    position: absolute;
    left: -4px;
    top: .4rem;
    width: 7px;
    height: 7px;
    border-radius: 50%;
    background: var(--bs-primary);
}
.bsw-timeline__title { margin: 0 0 .25rem; font-weight: 500; }
.bsw-timeline__meta {
    margin: 0 0 .4rem;
    font-size: .82rem;
    color: var(--bs-secondary-color, var(--bs-body-color));
}
.bsw-timeline__desc {
    margin: 0;
    font-size: .9rem;
    font-weight: 300;
    line-height: 1.6;
    color: var(--bs-secondary-color, var(--bs-body-color));
}

/* --- Services ------------------------------------------------------- */
.bsw-service { padding: clamp(1.5rem, 3vw, 2rem); }
.bsw-service__icon {
    margin: 0 0 1.1rem;
    font-size: 1.6rem;
    line-height: 1;
    color: var(--bs-primary);
}
.bsw-service__title { margin: 0 0 .6rem; font-weight: 400; }
.bsw-service__title a {
    color: var(--bs-body-color);
    text-decoration: none;
    transition: color .18s ease;
}
.bsw-service__title a:hover,
.bsw-service__title a:focus-visible { color: var(--bs-primary); }
.bsw-service__desc {
    margin: 0 0 1.25rem;
    font-size: .92rem;
    line-height: 1.6;
    color: var(--bs-secondary-color, var(--bs-body-color));
}

@media (prefers-reduced-motion: reduce) {
    .bsw-about__img { transition: none; }
}

/* ================================================================== *
 * Phase 5 — sections "liste" sur-mesure
 * (publications / events / resources / blog)
 * Même esprit Simplex : filets fins, beaucoup de blanc, accent rouge rare.
 * Réutilise .bsw-grid, .bsw-grid__cell, .bsw-tag, .bsw-arrow-link,
 * .bsw-section-foot déjà définis plus haut.
 * ================================================================== */

/* --- Publications : liste type citation, séparée par des filets ----- */
.bsw-pub-list { border-top: 1px solid var(--bs-border-color); }
.bsw-pub {
    padding: clamp(1.1rem, 2.5vw, 1.5rem) 0;
    border-bottom: 1px solid var(--bs-border-color);
}
.bsw-pub__row {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1.25rem;
    flex-wrap: wrap;
}
.bsw-pub__main { flex: 1 1 18rem; }
.bsw-pub__title {
    margin: 0 0 .35rem;
    font-weight: 400;
    display: flex;
    align-items: baseline;
    flex-wrap: wrap;
    gap: .5rem;
}
.bsw-pub__title a {
    color: var(--bs-body-color);
    text-decoration: none;
    transition: color .18s ease;
}
.bsw-pub__title a:hover,
.bsw-pub__title a:focus-visible { color: var(--bs-primary); }
.bsw-pub__title .bsw-tag { margin: 0; }
.bsw-pub__meta {
    margin: 0 0 .4rem;
    font-size: .85rem;
    color: var(--bs-secondary-color, var(--bs-body-color));
}
.bsw-pub__cat { color: var(--bs-primary); }
.bsw-pub__abstract {
    margin: 0;
    font-size: .92rem;
    line-height: 1.6;
    color: var(--bs-secondary-color, var(--bs-body-color));
}
/* Action externe : un carré à filet, accent au survol. */
.bsw-pub__ext {
    flex-shrink: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2.5rem; height: 2.5rem;
    color: var(--bs-body-color);
    border: 1px solid var(--bs-border-color);
    text-decoration: none;
    transition: color .18s ease, border-color .18s ease;
}
.bsw-pub__ext:hover,
.bsw-pub__ext:focus-visible {
    color: var(--bs-primary);
    border-color: var(--bs-primary);
}

/* --- Events --------------------------------------------------------- */
.bsw-event { padding: clamp(1.5rem, 3vw, 2rem); }
.bsw-event__media {
    display: block;
    margin: 0 0 1.25rem;
    overflow: hidden;
}
.bsw-event__media img {
    width: 100%;
    height: 180px;
    object-fit: cover;
    display: block;
    filter: grayscale(100%);
    transition: filter .25s ease, transform .25s ease;
}
.bsw-event:hover .bsw-event__media img { filter: grayscale(0); transform: scale(1.02); }
.bsw-event__date {
    margin: 0 0 .5rem;
    font-size: .78rem;
    font-weight: 600;
    letter-spacing: .08em;
    color: var(--bs-primary);
}
.bsw-event__date i { margin-right: .35rem; }
.bsw-event__title { margin: 0 0 .5rem; font-weight: 400; }
.bsw-event__loc {
    margin: 0 0 .6rem;
    font-size: .85rem;
    color: var(--bs-secondary-color, var(--bs-body-color));
}
.bsw-event__desc {
    margin: 0 0 1.25rem;
    font-size: .92rem;
    line-height: 1.6;
    color: var(--bs-secondary-color, var(--bs-body-color));
}

/* --- Resources ------------------------------------------------------ */
.bsw-resource { padding: clamp(1.5rem, 3vw, 2rem); }
.bsw-resource__title { margin: 0 0 .6rem; font-weight: 400; }
.bsw-resource__desc {
    margin: 0 0 .75rem;
    font-size: .92rem;
    line-height: 1.6;
    color: var(--bs-secondary-color, var(--bs-body-color));
}
.bsw-resource__size {
    margin: 0 0 1.25rem;
    font-size: .82rem;
    color: var(--bs-secondary-color, var(--bs-body-color));
}
.bsw-resource__size i { margin-right: .25rem; }

/* --- Blog ----------------------------------------------------------- */
.bsw-post { padding: clamp(1.5rem, 3vw, 2rem); }
.bsw-post__media {
    display: block;
    margin: 0 0 1.25rem;
    overflow: hidden;
}
.bsw-post__media img {
    width: 100%;
    height: 200px;
    object-fit: cover;
    display: block;
    filter: grayscale(100%);
    transition: filter .25s ease, transform .25s ease;
}
.bsw-post:hover .bsw-post__media img { filter: grayscale(0); transform: scale(1.02); }
.bsw-post__head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    margin-bottom: .85rem;
    min-height: 1.5rem;
}
.bsw-post__head .bsw-tag { margin: 0; }
.bsw-post__date {
    font-size: .78rem;
    letter-spacing: .04em;
    color: var(--bs-secondary-color, var(--bs-body-color));
}
.bsw-post__title { margin: 0 0 .5rem; font-weight: 400; }
.bsw-post__title a {
    color: var(--bs-body-color);
    text-decoration: none;
    transition: color .18s ease;
}
.bsw-post__title a:hover,
.bsw-post__title a:focus-visible { color: var(--bs-primary); }
.bsw-post__cat {
    margin: 0 0 .6rem;
    font-size: .72rem;
    font-weight: 600;
    letter-spacing: .14em;
    text-transform: uppercase;
    color: var(--bs-primary);
}
.bsw-post__excerpt {
    margin: 0 0 1.25rem;
    font-size: .92rem;
    line-height: 1.6;
    color: var(--bs-secondary-color, var(--bs-body-color));
}

@media (prefers-reduced-motion: reduce) {
    .bsw-event__media img,
    .bsw-post__media img { transition: none; }
}

/* ================================================================== *
 * Phase 6 — pages sur-mesure (blog list/detail, projects list/detail)
 * Même esprit Simplex : filets fins, blanc, un seul accent rouge.
 * Réutilise .bsw-grid, .bsw-post*, .bsw-project*, .bsw-stat*,
 * .bsw-timeline*, .bsw-tag, .bsw-arrow-link, .bsw-section-foot.
 * ================================================================== */

/* --- Filtres de catégorie : texte + filet, accent rouge si actif --- */
.bsw-filters {
    display: flex;
    flex-wrap: wrap;
    gap: .25rem 1.5rem;
    justify-content: center;
    padding-bottom: 1rem;
    border-bottom: 1px solid var(--bs-border-color);
}
.bsw-filter {
    position: relative;
    padding-bottom: .35rem;
    font-size: .8rem;
    font-weight: 500;
    letter-spacing: .06em;
    text-transform: uppercase;
    text-decoration: none;
    color: var(--bs-secondary-color, var(--bs-body-color));
    transition: color .18s ease;
}
.bsw-filter:hover,
.bsw-filter:focus-visible { color: var(--bs-primary); }
.bsw-filter.is-active { color: var(--bs-body-color); }
.bsw-filter.is-active::after {
    content: "";
    position: absolute;
    left: 0; bottom: 0;
    width: 100%; height: 2px;
    background: var(--bs-primary);
}

/* --- État vide : un trait fin, pas d'alerte colorée ----------------- */
.bsw-empty {
    margin: 0;
    padding: clamp(2rem, 5vw, 3rem) 0;
    text-align: center;
    font-weight: 300;
    color: var(--bs-secondary-color, var(--bs-body-color));
    border-top: 1px solid var(--bs-border-color);
    border-bottom: 1px solid var(--bs-border-color);
}

/* --- Pagination : chiffres nus, accent rouge sur la page courante --- */
.bsw-pagination {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: .35rem;
    margin-top: clamp(2.5rem, 5vw, 3.5rem);
}
.bsw-page {
    min-width: 2.25rem;
    padding: .4rem .55rem;
    text-align: center;
    font-size: .85rem;
    font-variant-numeric: tabular-nums;
    text-decoration: none;
    color: var(--bs-body-color);
    border: 1px solid transparent;
    transition: color .18s ease, border-color .18s ease;
}
.bsw-page:hover,
.bsw-page:focus-visible { color: var(--bs-primary); border-color: var(--bs-border-color); }
.bsw-page.is-active {
    color: var(--bs-primary);
    border-color: var(--bs-primary);
}

/* --- Fil d'Ariane : sobre, séparateur fin -------------------------- */
.bsw-crumb { margin-bottom: clamp(1.5rem, 3vw, 2rem); }
.bsw-crumb .breadcrumb { margin: 0; font-size: .8rem; letter-spacing: .04em; }
.bsw-crumb .breadcrumb-item + .breadcrumb-item::before { color: var(--bs-border-color); }
.bsw-crumb a { color: var(--bs-secondary-color, var(--bs-body-color)); text-decoration: none; }
.bsw-crumb a:hover,
.bsw-crumb a:focus-visible { color: var(--bs-primary); }
.bsw-crumb .breadcrumb-item.active { color: var(--bs-body-color); }

/* --- Article (blog detail + project detail body) ------------------- */
.bsw-article__head {
    margin-bottom: clamp(1.75rem, 4vw, 2.5rem);
    padding-bottom: 1.25rem;
    border-bottom: 1px solid var(--bs-border-color);
}
.bsw-article__title {
    margin: 0 0 .9rem;
    font-weight: 300;
    letter-spacing: -.015em;
    line-height: 1.12;
}
.bsw-article__meta {
    display: flex;
    flex-wrap: wrap;
    gap: .35rem 1.25rem;
    font-size: .82rem;
    color: var(--bs-secondary-color, var(--bs-body-color));
}
.bsw-article__meta-cat { color: var(--bs-primary); }
.bsw-article__media {
    width: 100%;
    display: block;
    margin: 0 0 clamp(1.75rem, 4vw, 2.5rem);
    filter: grayscale(100%);
    transition: filter .25s ease;
}
.bsw-article__media:hover { filter: grayscale(0); }
.bsw-article__lead {
    margin: 0 0 1.5rem;
    font-size: 1.15rem;
    font-weight: 300;
    line-height: 1.6;
    color: var(--bs-body-color);
}
.bsw-article__body {
    font-weight: 300;
    line-height: 1.75;
    color: var(--bs-body-color);
}
.bsw-article__body a { color: var(--bs-primary); }
.bsw-article__tags {
    display: flex;
    flex-wrap: wrap;
    gap: .5rem;
    margin-top: clamp(1.75rem, 4vw, 2.5rem);
}
.bsw-tag--link { text-decoration: none; transition: color .18s ease, border-color .18s ease; }
.bsw-tag--link:hover,
.bsw-tag--link:focus-visible { color: var(--bs-primary); border-color: var(--bs-primary); }
.bsw-article__nav {
    margin-top: clamp(1.75rem, 4vw, 2.5rem);
    padding-top: 1.25rem;
    border-top: 1px solid var(--bs-border-color);
}
.bsw-arrow-link--back span { transition: transform .18s ease; }
.bsw-arrow-link--back:hover span,
.bsw-arrow-link--back:focus-visible span { transform: translateX(-3px); }

/* --- Titres de section internes (detail) --------------------------- */
.bsw-detail__h {
    margin: clamp(2rem, 4vw, 2.5rem) 0 1rem;
    font-weight: 400;
    padding-bottom: .55rem;
    border-bottom: 1px solid var(--bs-border-color);
}

/* --- Aside (détails article / infos projet) ------------------------ */
.bsw-aside {
    margin-bottom: clamp(1.5rem, 3vw, 2rem);
    padding: clamp(1.25rem, 3vw, 1.75rem);
    border: 1px solid var(--bs-border-color);
}
.bsw-aside__title {
    margin: 0 0 1rem;
    font-size: .78rem;
    font-weight: 600;
    letter-spacing: .14em;
    text-transform: uppercase;
    color: var(--bs-primary);
}
.bsw-aside__facts { margin: 0; }
.bsw-aside__fact {
    display: flex;
    gap: 1rem;
    padding: .55rem 0;
    border-top: 1px solid var(--bs-border-color);
}
.bsw-aside__fact:first-child { border-top: 0; padding-top: 0; }
.bsw-aside__fact dt {
    flex: 0 0 6.5rem;
    margin: 0;
    font-size: .7rem;
    font-weight: 600;
    letter-spacing: .1em;
    text-transform: uppercase;
    color: var(--bs-secondary-color, var(--bs-body-color));
}
.bsw-aside__fact dd { margin: 0; font-size: .9rem; color: var(--bs-body-color); }
.bsw-aside__tags { display: flex; flex-wrap: wrap; gap: .5rem; }
.bsw-aside__links { display: flex; flex-direction: column; gap: .85rem; }
@media (max-width: 575.98px) {
    .bsw-aside__fact { flex-direction: column; gap: .15rem; }
    .bsw-aside__fact dt { flex-basis: auto; }
}

/* --- Timeline : marqueur "fait" en accent rouge -------------------- */
.bsw-timeline__title .bsw-done { color: var(--bs-primary); margin-right: .4rem; }

/* --- Galerie : coins droits, niveaux de gris ----------------------- */
.bsw-figure { margin: 0; }
.bsw-figure__img {
    width: 100%;
    display: block;
    filter: grayscale(100%);
    transition: filter .25s ease;
}
.bsw-figure__img:hover { filter: grayscale(0); }
.bsw-figure__cap {
    margin-top: .5rem;
    font-size: .8rem;
    color: var(--bs-secondary-color, var(--bs-body-color));
}

/* --- Projets liés -------------------------------------------------- */
.bsw-related {
    margin-top: clamp(3rem, 6vw, 4.5rem);
    padding-top: clamp(2rem, 4vw, 3rem);
    border-top: 1px solid var(--bs-border-color);
}

@media (prefers-reduced-motion: reduce) {
    .bsw-article__media,
    .bsw-figure__img,
    .bsw-arrow-link--back span { transition: none; }
}

/* ================================================================== *
 * Phase 7 — content pages
 * (events/jobs/publications/resources/services/team list+detail, faq)
 * Même esprit Simplex : filets fins, blanc, un seul accent rouge.
 * Réutilise très largement l'existant : .bsw-grid, .bsw-grid__cell,
 * .bsw-event*, .bsw-resource*, .bsw-pub*, .bsw-service*, .bsw-member*,
 * .bsw-aside*, .bsw-article*, .bsw-detail__h, .bsw-tag, .bsw-filters,
 * .bsw-empty, .bsw-crumb, .bsw-arrow-link, .bsw-about__facts.
 * Ci-dessous : seulement les classes nouvelles.
 * ================================================================== */

/* --- Lien titre nu (events list) : hérite de la palette des titres -- */
.bsw-link-plain {
    color: var(--bs-body-color);
    text-decoration: none;
    transition: color .18s ease;
}
.bsw-link-plain:hover,
.bsw-link-plain:focus-visible { color: var(--bs-primary); }

/* --- Jobs ----------------------------------------------------------- */
.bsw-job { padding: clamp(1.5rem, 3vw, 2rem); }
.bsw-job__head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    margin-bottom: .85rem;
    min-height: 1.5rem;
}
.bsw-job__head .bsw-tag { margin: 0; }
.bsw-job__deadline {
    font-size: .78rem;
    letter-spacing: .04em;
    color: var(--bs-secondary-color, var(--bs-body-color));
}
.bsw-job__deadline i { margin-right: .25rem; }
.bsw-job__title { margin: 0 0 .5rem; font-weight: 400; }
.bsw-job__cat {
    margin: 0 0 .85rem;
    font-size: .72rem;
    font-weight: 600;
    letter-spacing: .14em;
    text-transform: uppercase;
    color: var(--bs-primary);
}
.bsw-job__cat i { margin-right: .25rem; }
.bsw-job__facts {
    list-style: none;
    margin: 0 0 1rem;
    padding: 0;
    font-size: .85rem;
    color: var(--bs-secondary-color, var(--bs-body-color));
}
.bsw-job__facts li { margin-bottom: .25rem; }
.bsw-job__facts i { margin-right: .4rem; color: var(--bs-primary); }
.bsw-job__desc {
    margin: 0 0 1.25rem;
    font-size: .92rem;
    line-height: 1.6;
    color: var(--bs-secondary-color, var(--bs-body-color));
}

/* --- Service detail : liste "What's included" — filets fins --------- */
.bsw-incl {
    list-style: none;
    margin: 0 0 1rem;
    padding: 0;
    border-top: 1px solid var(--bs-border-color);
}
.bsw-incl__item {
    display: flex;
    align-items: flex-start;
    gap: .9rem;
    padding: .85rem 0;
    border-bottom: 1px solid var(--bs-border-color);
}
.bsw-incl__icon { color: var(--bs-primary); margin-top: .15rem; line-height: 1.4; }
.bsw-incl__desc {
    margin-top: .15rem;
    font-size: .9rem;
    font-weight: 300;
    line-height: 1.6;
    color: var(--bs-secondary-color, var(--bs-body-color));
}

/* --- Service detail : formulaire contact dans l'aside -------------- */
.bsw-form .form-control {
    border-radius: 0;
    border-color: var(--bs-border-color);
}
.bsw-form .form-control:focus {
    border-color: var(--bs-primary);
    box-shadow: none;
}

/* --- Team member detail : photo manquante + liens sociaux ---------- */
.bsw-profile__empty {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    aspect-ratio: 1 / 1;
    border: 1px solid var(--bs-border-color);
}
.bsw-profile__empty i {
    font-size: 2.5rem;
    color: var(--bs-secondary-color, var(--bs-body-color));
}
.bsw-profile__links {
    display: flex;
    gap: 1.1rem;
    margin-top: 1.25rem;
}
.bsw-profile__links a {
    font-size: 1.15rem;
    color: var(--bs-secondary-color, var(--bs-body-color));
    text-decoration: none;
    transition: color .18s ease;
}
.bsw-profile__links a:hover,
.bsw-profile__links a:focus-visible { color: var(--bs-primary); }

/* --- Resources : meta téléchargement en liste sans puces ----------- */
ul.bsw-resource__size {
    list-style: none;
    padding: 0;
}
ul.bsw-resource__size li { margin-bottom: .2rem; }
ul.bsw-resource__size i { margin-right: .35rem; color: var(--bs-primary); }
