/*
 * Prépa PostBac : styles du thème.
 * Tout est scopé par .ppb (classe de body posée uniquement sur nos gabarits),
 * pour ne pas polluer les pages encore rendues par Astra.
 *
 * ÉCHELLE D'AFFICHAGE
 * Les maquettes assemblées sont rendues dans un conteneur à 16 px à 1440 et à
 * 10 px à 380. Les grandes tailles y sont exprimées en em, le corps de texte en
 * pixels absolus. On reproduit ça avec --e, interpolé linéairement entre les
 * deux largeurs de référence : les titres respirent, le texte reste lisible.
 */

/* -------------------------------------------------------------------------
 * 1. Base
 * ---------------------------------------------------------------------- */

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

.ppb {
	--e: clamp(10px, calc(10px + 6 * ((100vw - 380px) / 1060)), 16px);

	margin: 0;
	background: var(--ppb-blanc);
	color: var(--ppb-encre);
	font-family: var(--ppb-sans);
	font-size: var(--ppb-corps);
	line-height: 1.6;
	overflow-x: clip;
	-webkit-font-smoothing: antialiased;
}

/*
 * Nos sections sont pleine largeur. Astra publie bien la règle qui neutralise
 * son conteneur en gabarit page builder, mais elle vit dans le CSS dynamique
 * que l'on supprime pour la performance : on la réécrit ici, scopée à .ppb.
 */
.ppb .site-content > .ast-container,
.ppb #content > .ast-container {
	max-width: none;
	padding: 0;
}

.ppb .site .site-content #primary {
	margin: 0;
	padding: 0;
}

.ppb-page {
	overflow-x: clip;
}

/*
 * Les règles de base passent par :where() pour rester à une seule classe de
 * spécificité. Elles battent ainsi les sélecteurs d'élément d'Astra, qui code
 * en dur a{color:#4169e1} et h1{color:#808285} dans sa feuille principale,
 * sans jamais écraser nos propres composants déclarés plus bas.
 */
.ppb :where(a) {
	color: var(--ppb-accent);
	text-decoration: none;
	transition: color var(--ppb-transition);
}

.ppb :where(a):hover {
	color: var(--ppb-accent-hover);
}

/* Astra grise tous les titres. On rétablit l'héritage, pour que les sections
   sur fond encre passent leurs titres en blanc sans règle supplémentaire. */
.ppb :where(h1, h2, h3, h4, h5, h6) {
	color: inherit;
}

.ppb img,
.ppb svg {
	max-width: 100%;
}

.ppb h1,
.ppb h2,
.ppb h3,
.ppb h4,
.ppb p,
.ppb ul,
.ppb ol,
.ppb figure,
.ppb figcaption,
.ppb blockquote {
	margin: 0;
}

.ppb h1 {
	max-width: 20ch;
	font-size: calc(3.5 * var(--e));
	font-weight: 700;
	letter-spacing: -.03em;
	line-height: 1.03;
	text-wrap: balance;
}

.ppb h2 {
	font-size: calc(2.1 * var(--e));
	font-weight: 700;
	letter-spacing: -.025em;
	line-height: 1.1;
	text-wrap: balance;
}

.ppb h3 {
	font-size: 18px;
	font-weight: 500;
	letter-spacing: -.01em;
	line-height: 1.3;
}

.ppb :where(p) {
	color: var(--ppb-texte);
	text-wrap: pretty;
}

/* Sur fond encre, les paragraphes suivent la couleur de la section. */
.ppb-section--encre :where(p),
.ppb-cta :where(p) {
	color: inherit;
}

.ppb :focus-visible {
	outline: 2px solid rgba(11, 95, 255, .28);
	outline-offset: 1px;
}

/* -------------------------------------------------------------------------
 * 2. Sections
 * ---------------------------------------------------------------------- */

.ppb-section {
	padding: 3.9% var(--ppb-gouttiere);
	border-bottom: 1px solid var(--ppb-bordure);
	background: var(--ppb-blanc);
}

.ppb-section--clair {
	background: var(--ppb-fond-clair);
}

.ppb-section--encre {
	background: var(--ppb-encre);
	color: var(--ppb-blanc);
}

.ppb-section__head {
	display: flex;
	flex-direction: column;
	gap: 10px;
	margin-bottom: calc(2 * var(--e));
}

.ppb-section__head--mesure {
	max-width: 60ch;
}

.ppb-mesure {
	max-width: 60ch;
}

.ppb-mesure--courte {
	max-width: 40ch;
}

/* -------------------------------------------------------------------------
 * 3. Typographie utilitaire
 * ---------------------------------------------------------------------- */

.ppb-mono {
	font-family: var(--ppb-mono);
}

.ppb-eyebrow {
	color: var(--ppb-accent);
	font-family: var(--ppb-mono);
	font-size: 12px;
	letter-spacing: .16em;
	text-transform: uppercase;
}

.ppb-section--encre .ppb-eyebrow {
	color: #7FA9FF;
}

.ppb-label {
	color: var(--ppb-attenue);
	font-family: var(--ppb-mono);
	font-size: 11px;
	letter-spacing: .14em;
	text-transform: uppercase;
}

.ppb-hr {
	height: 1px;
	margin: 0;
	border: 0;
	background: var(--ppb-bordure);
}

/* -------------------------------------------------------------------------
 * 4. Bulle de QCM, élément signature
 * ---------------------------------------------------------------------- */

.ppb-bulle {
	display: block;
	flex: none;
	width: var(--bulle, 16px);
	height: var(--bulle, 16px);
	border: 1.5px solid var(--ppb-bordure-forte);
	border-radius: 50%;
	transition: background var(--ppb-transition), border-color var(--ppb-transition);
}

.ppb-bulle--actif {
	border-color: var(--ppb-accent);
}

.ppb-bulle--noirci {
	border-color: var(--ppb-accent);
	background: var(--ppb-accent);
}

.ppb-bulle--signal {
	border-color: var(--ppb-signal);
	box-shadow: inset 0 0 0 3px var(--ppb-blanc), inset 0 0 0 9px var(--ppb-signal);
}

.ppb-liste-bulles {
	display: flex;
	flex-direction: column;
	gap: 10px;
	padding: 0;
	list-style: none;
}

.ppb-liste-bulles li {
	display: flex;
	align-items: flex-start;
	gap: 10px;
	color: var(--ppb-texte);
}

.ppb-liste-bulles .ppb-bulle {
	margin-top: 6px;
}

/* -------------------------------------------------------------------------
 * 5. Boutons
 * ---------------------------------------------------------------------- */

.ppb-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 48px;
	padding: 14px 22px;
	border: 1px solid transparent;
	border-radius: var(--ppb-rayon);
	font-family: var(--ppb-sans);
	font-size: 16px;
	font-weight: 500;
	line-height: 1.2;
	cursor: pointer;
	transition: background var(--ppb-transition), border-color var(--ppb-transition), color var(--ppb-transition);
}

.ppb-btn--primaire {
	border-color: var(--ppb-accent);
	background: var(--ppb-accent);
	color: var(--ppb-blanc);
}

.ppb-btn--primaire:hover {
	border-color: var(--ppb-accent-hover);
	background: var(--ppb-accent-hover);
	color: var(--ppb-blanc);
}

.ppb-section--encre .ppb-btn--primaire:hover,
.ppb-cta .ppb-btn--primaire:hover {
	border-color: #3D82FF;
	background: #3D82FF;
}

.ppb-btn--secondaire {
	border-color: var(--ppb-encre);
	background: var(--ppb-blanc);
	color: var(--ppb-encre);
}

.ppb-btn--secondaire:hover {
	background: var(--ppb-fond-clair);
	color: var(--ppb-encre);
}

.ppb-btn[disabled],
.ppb-btn--desactive {
	border-color: var(--ppb-bordure);
	background: var(--ppb-fond-clair);
	color: var(--ppb-gris);
	cursor: not-allowed;
}

.ppb-lien-souligne {
	padding-bottom: 2px;
	border-bottom: 1px solid var(--ppb-bordure-forte);
	color: var(--ppb-encre);
	font-size: 16px;
}

.ppb-lien-mono {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	min-height: 44px;
	color: var(--ppb-accent);
	font-family: var(--ppb-mono);
	font-size: 15px;
}

/* En-tête : taille de bouton réduite, la barre fait 80 px de haut. */
.ppb-header .ppb-btn {
	min-height: 44px;
	padding: 11px 18px;
	font-size: 14px;
}

/* -------------------------------------------------------------------------
 * 6. En-tête
 * ---------------------------------------------------------------------- */

.ppb-header {
	background: var(--ppb-blanc);
	border-bottom: 1px solid var(--ppb-bordure);
}

.ppb-header__barre {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--ppb-gap-m);
	padding: 18px var(--ppb-gouttiere);
}

.ppb-header__gauche {
	display: flex;
	flex: 0 1 auto;
	align-items: center;
	gap: 36px;
	min-width: 0;
}

.ppb-logo {
	display: flex;
	align-items: center;
	gap: 10px;
	color: var(--ppb-encre);
	font-size: 19px;
	font-weight: 700;
	letter-spacing: -.02em;
}

.ppb-logo:hover {
	color: var(--ppb-encre);
}

.ppb-logo svg {
	flex: none;
}

.ppb-nav {
	display: flex;
	gap: 26px;
	font-size: 14px;
}

.ppb-nav a {
	padding-bottom: 3px;
	border-bottom: 1.5px solid transparent;
	color: var(--ppb-texte);
}

.ppb-nav a:hover {
	color: var(--ppb-accent);
}

.ppb-nav a[aria-current='page'] {
	border-bottom-color: var(--ppb-accent);
	color: var(--ppb-accent);
}

.ppb-nav span {
	padding-bottom: 3px;
	color: var(--ppb-gris);
}

.ppb-header__droite {
	display: flex;
	flex: none;
	align-items: center;
	gap: var(--ppb-gap-s);
}

.ppb-header__tel {
	font-family: var(--ppb-mono);
	font-size: 15px;
}

.ppb-header__mobile {
	display: none;
	align-items: center;
	justify-content: space-between;
	padding: 14px var(--ppb-gouttiere);
}

.ppb-header__actions {
	display: flex;
	align-items: center;
	gap: 10px;
}

.ppb-icone-btn {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 44px;
	height: 44px;
	border: 1px solid var(--ppb-accent);
	border-radius: var(--ppb-rayon);
	background: var(--ppb-blanc);
	cursor: pointer;
}

.ppb-burger {
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 4px;
	width: 44px;
	height: 44px;
	border: 1px solid var(--ppb-bordure-forte);
	border-radius: var(--ppb-rayon);
	background: var(--ppb-blanc);
	cursor: pointer;
}

.ppb-burger span {
	display: block;
	width: 18px;
	height: 1.5px;
	background: var(--ppb-encre);
}

.ppb-panneau {
	position: fixed;
	inset: 0;
	z-index: 999;
	display: none;
	flex-direction: column;
	gap: var(--ppb-gap-m);
	padding: 24px var(--ppb-gouttiere);
	background: var(--ppb-blanc);
	overflow-y: auto;
}

.ppb-panneau[data-ouvert='true'] {
	display: flex;
}

.ppb-panneau__liens {
	display: flex;
	flex-direction: column;
	gap: 2px;
}

.ppb-panneau__liens a,
.ppb-panneau__liens span {
	display: flex;
	align-items: center;
	min-height: 48px;
	border-bottom: 1px solid var(--ppb-bordure);
	color: var(--ppb-encre);
	font-size: 17px;
}

.ppb-panneau__liens span {
	color: var(--ppb-gris);
}

/* -------------------------------------------------------------------------
 * 7. Fil d'Ariane
 * ---------------------------------------------------------------------- */

.ppb-ariane {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 8px;
	padding: 11px var(--ppb-gouttiere);
	border-top: 1px solid var(--ppb-bordure);
	font-family: var(--ppb-mono);
	font-size: 12px;
}

.ppb-ariane a {
	color: var(--ppb-attenue);
}

.ppb-ariane a:hover {
	color: var(--ppb-accent);
}

.ppb-ariane__courant {
	color: var(--ppb-encre);
}

.ppb-ariane__sep {
	color: var(--ppb-bordure-forte);
}

/* -------------------------------------------------------------------------
 * 8. Hero
 * ---------------------------------------------------------------------- */

.ppb-hero {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
	gap: 4.5%;
	align-items: start;
	padding: 4.2% var(--ppb-gouttiere);
	border-bottom: 1px solid var(--ppb-bordure);
	background-color: var(--ppb-blanc);
	background-image: var(--ppb-trame-millimetree);
	background-size: 8px 8px, 8px 8px, 40px 40px, 40px 40px;
}

.ppb-hero__corps {
	display: flex;
	flex-direction: column;
	gap: calc(1.5 * var(--e));
}

.ppb-hero__texte {
	max-width: 54ch;
	font-size: 17px;
	line-height: 1.6;
}

.ppb-hero__actions {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 18px;
}

.ppb-hero__stats {
	display: flex;
	flex-wrap: wrap;
	gap: calc(2.6 * var(--e));
	padding-top: calc(1.4 * var(--e));
	border-top: 1px solid var(--ppb-bordure);
}

.ppb-stat {
	display: flex;
	flex-direction: column;
	gap: 4px;
}

.ppb-stat__valeur {
	font-family: var(--ppb-mono);
	font-size: calc(1.85 * var(--e));
	font-weight: 600;
	line-height: 1;
}

.ppb-stat__label {
	color: var(--ppb-attenue);
	font-size: 13px;
}

/* -------------------------------------------------------------------------
 * 9. Grilles de cartes
 * ---------------------------------------------------------------------- */

/* Grille jointive, séparée par des hairlines : bloc « pourquoi ». */
.ppb-grille-jointive {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
	gap: 1px;
	overflow: hidden;
	border: 1px solid var(--ppb-bordure);
	border-radius: var(--ppb-rayon);
	background: var(--ppb-bordure);
}

.ppb-grille-jointive > * {
	background: var(--ppb-blanc);
}

.ppb-grille {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(var(--min, 260px), 1fr));
	gap: 16px;
}

.ppb-item {
	display: flex;
	flex-direction: column;
	gap: 12px;
	padding: 26px 24px;
}

.ppb-item__num {
	display: flex;
	align-items: center;
	gap: 10px;
	color: var(--ppb-attenue);
	font-family: var(--ppb-mono);
	font-size: 12px;
}

.ppb-item__titre {
	font-size: 18px;
	font-weight: 500;
	letter-spacing: -.01em;
	line-height: 1.3;
}

.ppb-item__texte {
	color: var(--ppb-texte);
	font-size: 14px;
	line-height: 1.6;
	text-wrap: pretty;
}

/* Carte encadrée : valeurs ajoutées. */
.ppb-carte-simple {
	display: flex;
	flex-direction: column;
	gap: 10px;
	padding: 24px;
	border: 1px solid var(--ppb-bordure);
	border-radius: var(--ppb-rayon);
	background: var(--ppb-blanc);
	transition: border-color var(--ppb-transition);
}

.ppb-carte-simple:hover {
	border-color: var(--ppb-accent);
}

.ppb-carte-simple__idx {
	color: var(--ppb-accent);
	font-family: var(--ppb-mono);
	font-size: 12px;
}

/* Carte concours. */
.ppb-concours {
	display: flex;
	flex-direction: column;
	gap: 12px;
	min-height: 44px;
	padding: 24px;
	border: 1px solid var(--ppb-bordure);
	border-radius: var(--ppb-rayon);
	color: var(--ppb-encre);
	transition: border-color var(--ppb-transition), background var(--ppb-transition);
}

a.ppb-concours:hover {
	border-color: var(--ppb-accent);
	background: #F7F9FC;
	color: var(--ppb-encre);
}

.ppb-concours__meta {
	display: flex;
	align-items: center;
	justify-content: space-between;
	font-family: var(--ppb-mono);
	font-size: 12px;
}

.ppb-concours__idx {
	color: var(--ppb-accent);
}

.ppb-concours__duree {
	color: var(--ppb-attenue);
}

.ppb-concours__nom {
	font-size: 20px;
	font-weight: 500;
	letter-spacing: -.015em;
}

.ppb-concours__ecoles {
	color: var(--ppb-texte);
	font-size: 14px;
	line-height: 1.5;
}

.ppb-concours__epreuves {
	margin-top: auto;
	padding-top: 12px;
	border-top: 1px solid var(--ppb-bordure);
	color: var(--ppb-attenue);
	font-family: var(--ppb-mono);
	font-size: 12px;
}

.ppb-concours__cta {
	color: var(--ppb-accent);
	font-size: 14px;
	font-weight: 500;
}

/*
 * Cible pas encore publiée : la carte garde l'allure du design, seule la ligne
 * d'appel à l'action passe en gris et perd sa flèche. Rien ne laisse croire
 * qu'elle est cliquable, et aucun lien mort n'est émis.
 */
.ppb-concours--inerte .ppb-concours__cta {
	color: var(--ppb-gris);
}

/* Carte de maillage générique. */
.ppb-grille-cartes {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
	gap: 16px;
}

.ppb-carte {
	display: flex;
	flex-direction: column;
	gap: 8px;
	min-height: 96px;
	padding: 20px;
	border: 1px solid var(--ppb-bordure);
	border-radius: var(--ppb-rayon);
	background: var(--ppb-blanc);
	transition: border-color var(--ppb-transition), background var(--ppb-transition);
}

a.ppb-carte:hover {
	border-color: var(--ppb-accent);
	background: #F7F9FC;
}

.ppb-carte__titre {
	color: var(--ppb-encre);
	font-size: 18px;
	font-weight: 500;
}

.ppb-carte__desc {
	color: var(--ppb-attenue);
	font-family: var(--ppb-mono);
	font-size: 12px;
}

.ppb-carte__fleche {
	margin-top: auto;
	color: var(--ppb-accent);
	font-family: var(--ppb-mono);
	font-size: 14px;
}

/* Cible non publiée : la carte reste visible mais inerte, jamais de 404. */
.ppb-carte--inerte {
	background: var(--ppb-fond-clair);
	cursor: default;
}

.ppb-carte--inerte .ppb-carte__titre {
	color: var(--ppb-gris);
}

.ppb-lien-inerte {
	color: var(--ppb-gris);
}

/* -------------------------------------------------------------------------
 * 10. Résultats
 * ---------------------------------------------------------------------- */

.ppb-resultats {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
	gap: calc(3 * var(--e)) 4.5%;
	align-items: start;
}

.ppb-resultats__corps {
	display: flex;
	flex-direction: column;
	gap: 14px;
}

.ppb-resultats__pct {
	margin-top: calc(.2 * var(--e));
	color: var(--ppb-accent);
	font-family: var(--ppb-mono);
	font-size: calc(4.2 * var(--e));
	font-weight: 600;
	letter-spacing: -.03em;
	line-height: 1;
}

.ppb-resultats__texte {
	max-width: 40ch;
	font-size: 16px;
	line-height: 1.55;
}

.ppb-resultats__kpis {
	display: flex;
	flex-wrap: wrap;
	gap: calc(2 * var(--e));
	padding-top: calc(1.2 * var(--e));
	border-top: 1px solid var(--ppb-bordure);
}

.ppb-kpi__valeur {
	font-family: var(--ppb-mono);
	font-size: calc(1.6 * var(--e));
	font-weight: 600;
	line-height: 1;
}

.ppb-kpi__label {
	max-width: 22ch;
	margin-top: 4px;
	color: var(--ppb-attenue);
	font-size: 13px;
}

.ppb-barres {
	display: flex;
	flex-direction: column;
	gap: 20px;
	padding: 26px;
	border: 1px solid var(--ppb-bordure);
	border-radius: var(--ppb-rayon);
	background: var(--ppb-fond-clair);
}

.ppb-barres__head {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: 12px;
}

.ppb-barres__periode {
	color: var(--ppb-attenue);
	font-family: var(--ppb-mono);
	font-size: 11px;
	white-space: nowrap;
}

.ppb-barre {
	display: flex;
	flex-direction: column;
	gap: 8px;
}

.ppb-barre__ligne {
	display: flex;
	justify-content: space-between;
	gap: 12px;
}

.ppb-barre__nom {
	font-size: 15px;
}

.ppb-barre__valeur {
	font-family: var(--ppb-mono);
	font-size: 13px;
	white-space: nowrap;
}

.ppb-barre__piste {
	height: 8px;
	overflow: hidden;
	border-radius: 2px;
	background: var(--ppb-canvas);
}

/* display:block indispensable : c'est un span, et width ne s'applique pas
   à une boîte en ligne. */
.ppb-barre__remplissage {
	display: block;
	width: 0;
	height: 100%;
	border-radius: 2px;
	background: var(--ppb-accent);
	transition: width 900ms cubic-bezier(.2, .8, .2, 1);
}

.ppb-barres__note {
	color: var(--ppb-attenue);
	font-family: var(--ppb-mono);
	font-size: 11px;
	line-height: 1.6;
}

/* -------------------------------------------------------------------------
 * 11. Témoignages, sur fond encre
 * ---------------------------------------------------------------------- */

.ppb-temoignage {
	display: flex;
	flex-direction: column;
	gap: 16px;
	padding: 22px;
	border: 1px solid #343941;
	border-radius: var(--ppb-rayon);
}

.ppb-temoignage__citation {
	font-size: 16px;
	line-height: 1.55;
	text-wrap: pretty;
}

.ppb-temoignage__pied {
	margin-top: auto;
	padding-top: 14px;
	border-top: 1px solid #343941;
}

.ppb-temoignage__nom {
	font-size: 14px;
}

.ppb-temoignage__ecole {
	color: #9BA3AC;
	font-family: var(--ppb-mono);
	font-size: 12px;
}

/* -------------------------------------------------------------------------
 * 12. FAQ
 * ---------------------------------------------------------------------- */

.ppb-faq {
	display: flex;
	flex-wrap: wrap;
	gap: calc(3 * var(--e)) 4.5%;
	align-items: flex-start;
}

.ppb-faq__intro {
	display: flex;
	flex: 1 1 260px;
	flex-direction: column;
	gap: 12px;
	min-width: 0;
}

.ppb-faq__intro p {
	max-width: 40ch;
	font-size: 16px;
}

.ppb-faq__liste {
	display: flex;
	flex: 2.2 1 420px;
	flex-direction: column;
	min-width: 0;
	border-top: 1px solid var(--ppb-bordure);
}

.ppb-faq__item {
	border-bottom: 1px solid var(--ppb-bordure);
}

.ppb-faq__item summary {
	display: grid;
	grid-template-columns: auto 1fr auto;
	gap: 14px;
	align-items: center;
	min-height: 48px;
	padding: 18px 0;
	cursor: pointer;
	list-style: none;
}

.ppb-faq__item summary::-webkit-details-marker {
	display: none;
}

.ppb-faq__question {
	font-size: 17px;
	font-weight: 500;
	line-height: 1.3;
}

.ppb-faq__idx {
	color: var(--ppb-attenue);
	font-family: var(--ppb-mono);
	font-size: 12px;
}

.ppb-faq__item[open] .ppb-bulle {
	border-color: var(--ppb-accent);
	background: var(--ppb-accent);
}

.ppb-faq__reponse {
	max-width: 78ch;
	padding: 0 0 20px 30px;
	color: var(--ppb-texte);
	font-size: 15px;
	line-height: 1.6;
}

/* -------------------------------------------------------------------------
 * 13. Bandeau CTA
 * ---------------------------------------------------------------------- */

.ppb-cta {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: calc(2 * var(--e));
	padding: 3.2% var(--ppb-gouttiere);
	background: var(--ppb-encre);
	color: var(--ppb-blanc);
}

.ppb-cta__corps {
	display: flex;
	flex-direction: column;
	gap: 8px;
	min-width: 0;
}

.ppb-cta__titre {
	color: var(--ppb-blanc);
	font-size: calc(1.7 * var(--e));
	font-weight: 700;
	letter-spacing: -.025em;
	line-height: 1.15;
	text-wrap: balance;
}

.ppb-cta__sous-titre {
	color: #C6CCD3;
	font-size: 15px;
	line-height: 1.5;
}

.ppb-cta__actions {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 16px;
}

.ppb-cta__tel {
	padding-bottom: 2px;
	border-bottom: 1px solid rgba(255, 255, 255, .4);
	color: var(--ppb-blanc);
	font-family: var(--ppb-mono);
	font-size: calc(1.25 * var(--e));
}

.ppb-cta__tel:hover {
	color: var(--ppb-blanc);
}

/* -------------------------------------------------------------------------
 * 14. Journée type
 * ---------------------------------------------------------------------- */

.ppb-journee {
	--journee-colonne-jour: 220px;

	overflow: hidden;
	border: 1px solid var(--ppb-bordure);
	border-radius: var(--ppb-rayon);
}

.ppb-journee__heures {
	display: grid;
	grid-template-columns: repeat(9, 1fr);
	margin-left: var(--journee-colonne-jour);
	padding: 10px 14px;
	border-bottom: 1px solid var(--ppb-bordure);
	background: var(--ppb-fond-clair);
	color: var(--ppb-attenue);
	font-family: var(--ppb-mono);
	font-size: 11px;
}

.ppb-journee__ligne {
	display: grid;
	grid-template-columns: var(--journee-colonne-jour) 1fr;
	border-bottom: 1px solid var(--ppb-bordure);
}

.ppb-journee__ligne:last-child {
	border-bottom: 0;
}

.ppb-journee__ligne--concours {
	background: #F7F9FC;
}

.ppb-journee__jour {
	display: flex;
	flex-direction: column;
	gap: 4px;
	justify-content: center;
	padding: 16px 14px;
	border-right: 1px solid var(--ppb-bordure);
}

.ppb-journee__jour-nom {
	font-size: 14px;
	font-weight: 500;
}

.ppb-journee__jour-sous {
	color: var(--ppb-attenue);
	font-family: var(--ppb-mono);
	font-size: 11px;
}

.ppb-journee__frise {
	display: grid;
	grid-template-columns: repeat(17, 1fr);
	gap: 4px;
	padding: 14px;
}

.ppb-journee__seg {
	display: flex;
	flex-direction: column;
	gap: 3px;
	justify-content: center;
	min-height: 62px;
	padding: 10px 12px;
	border: 1px solid var(--ppb-accent);
	border-radius: var(--ppb-rayon);
	background: var(--ppb-accent);
	color: var(--ppb-blanc);
}

.ppb-journee__seg-titre {
	font-size: 13px;
	font-weight: 500;
	line-height: 1.25;
}

.ppb-journee__seg-horaire {
	font-family: var(--ppb-mono);
	font-size: 10px;
	opacity: .85;
}

.ppb-journee__seg--estompe {
	border-style: dashed;
	border-color: var(--ppb-gris);
	background: var(--ppb-blanc);
	color: var(--ppb-attenue);
}

.ppb-journee__seg--pause {
	border-color: var(--ppb-fond-clair);
	background: var(--ppb-fond-clair);
	color: var(--ppb-gris);
}

.ppb-journee__seg--signal {
	border-color: var(--ppb-signal);
	background: var(--ppb-signal);
}

.ppb-journee__seg--encre {
	border-color: var(--ppb-encre);
	background: var(--ppb-encre);
}

.ppb-journee__note {
	margin-top: 20px;
	color: var(--ppb-attenue);
	font-size: 14px;
}

/* -------------------------------------------------------------------------
 * 15. Jauge de places
 * ---------------------------------------------------------------------- */

.ppb-jauge {
	display: flex;
	flex-direction: column;
	gap: 8px;
}

.ppb-jauge__ligne {
	display: flex;
	justify-content: space-between;
	font-family: var(--ppb-mono);
	font-size: 12px;
}

.ppb-jauge__reste {
	color: var(--ppb-attenue);
}

.ppb-jauge--tension .ppb-jauge__reste {
	color: var(--ppb-signal);
}

.ppb-jauge__piste {
	height: 6px;
	overflow: hidden;
	border-radius: 2px;
	background: var(--ppb-canvas);
}

.ppb-jauge__barre {
	display: block;
	width: 0;
	height: 100%;
	border-radius: 2px;
	background: var(--ppb-accent);
	transition: width 800ms cubic-bezier(.2, .8, .2, 1);
}

.ppb-jauge--tension .ppb-jauge__barre {
	background: var(--ppb-signal);
}

/* -------------------------------------------------------------------------
 * 16. Pied de page
 * ---------------------------------------------------------------------- */

.ppb-footer {
	background: var(--ppb-fond-clair);
	border-top: 1px solid var(--ppb-bordure);
}

.ppb-footer__colonnes {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(170px, 1fr));
	gap: calc(2.2 * var(--e)) calc(1.5 * var(--e));
	padding: 3.9% var(--ppb-gouttiere) 3.2%;
}

.ppb-footer__colonne {
	display: flex;
	flex-direction: column;
	gap: 9px;
	font-size: 14px;
}

.ppb-footer__titre {
	color: var(--ppb-encre);
	font-family: var(--ppb-mono);
	font-size: 11px;
	font-weight: 600;
	letter-spacing: .12em;
	text-transform: uppercase;
}

.ppb-footer__colonne a {
	color: var(--ppb-texte);
}

.ppb-footer__colonne a:hover {
	color: var(--ppb-accent);
}

.ppb-footer__colonne span {
	color: var(--ppb-gris);
}

.ppb-footer__tel {
	font-family: var(--ppb-mono);
	font-size: 15px;
}

.ppb-footer__email {
	font-family: var(--ppb-mono);
	font-size: 13px;
}

.ppb-footer__barre {
	display: flex;
	flex-wrap: wrap;
	justify-content: space-between;
	gap: 16px;
	padding: 16px var(--ppb-gouttiere);
	border-top: 1px solid var(--ppb-bordure);
	color: var(--ppb-attenue);
	font-family: var(--ppb-mono);
	font-size: 11px;
}

.ppb-footer__marque {
	display: flex;
	align-items: center;
	gap: 8px;
}

.ppb-footer__legal {
	display: flex;
	gap: 18px;
}

.ppb-footer__legal a,
.ppb-footer__legal span {
	color: var(--ppb-attenue);
}

/* -------------------------------------------------------------------------
 * 17. Responsive
 * ---------------------------------------------------------------------- */

/*
 * L'en-tête est dimensionné pour 1440. En dessous, on resserre par paliers
 * plutôt que de laisser la barre déborder : aucun débordement horizontal.
 */
@media (max-width: 1400px) {
	.ppb-header__gauche {
		gap: 24px;
	}

	/* La taille de la nav ne bouge pas : 14 px, comme au design.
	   On gagne la place sur les gouttières, pas sur la lisibilité. */
	.ppb-nav {
		gap: 18px;
	}

	.ppb-header__droite {
		gap: 14px;
	}
}

@media (max-width: 1240px) {
	.ppb-header__barre {
		padding-inline: 3%;
	}

	.ppb-header__gauche {
		gap: 18px;
	}

	.ppb-nav {
		gap: 14px;
	}

	.ppb-logo {
		font-size: 17px;
	}
}

@media (max-width: 1024px) {
	.ppb-journee {
		--journee-colonne-jour: 160px;
	}
}

@media (max-width: 1080px) {
	.ppb-header__barre {
		display: none;
	}

	.ppb-header__mobile {
		display: flex;
	}

	.ppb-logo {
		gap: 8px;
		font-size: 17px;
	}
}

@media (max-width: 640px) {
	.ppb-section,
	.ppb-hero {
		padding-block: 40px;
	}

	.ppb-hero__actions .ppb-btn,
	.ppb-cta__actions .ppb-btn {
		width: 100%;
	}

	.ppb-grille,
	.ppb-grille-cartes,
	.ppb-grille-jointive {
		grid-template-columns: 1fr;
	}

	.ppb-hero__stats {
		gap: 1.6em;
	}

	/* La journée type passe en liste par jour : la frise horaire s'empile. */
	.ppb-journee__heures {
		display: none;
	}

	.ppb-journee__ligne {
		grid-template-columns: 1fr;
	}

	.ppb-journee__jour {
		border-right: 0;
		border-bottom: 1px solid var(--ppb-bordure);
		background: var(--ppb-fond-clair);
	}

	.ppb-journee__frise {
		display: flex;
		flex-direction: column;
		gap: 8px;
	}

	.ppb-journee__seg {
		grid-column: auto !important;
		min-height: 48px;
	}

	.ppb-footer__colonnes {
		grid-template-columns: 1fr 1fr;
	}
}

@media (prefers-reduced-motion: reduce) {
	.ppb * {
		transition-duration: 1ms !important;
	}
}

/* -------------------------------------------------------------------------
 * 18. Chiffres clés
 * ---------------------------------------------------------------------- */

.ppb-chiffre {
	display: flex;
	flex-direction: column;
	gap: 8px;
	padding: 22px 24px;
}

.ppb-chiffre__label {
	color: var(--ppb-attenue);
	font-family: var(--ppb-mono);
	font-size: 11px;
	letter-spacing: .12em;
	text-transform: uppercase;
}

.ppb-chiffre__valeur {
	font-family: var(--ppb-mono);
	font-size: calc(2.2 * var(--e));
	font-weight: 600;
	letter-spacing: -.02em;
	line-height: 1;
}

.ppb-chiffre__texte {
	color: var(--ppb-texte);
	font-size: 13px;
	line-height: 1.5;
}

/* Méthode jour par jour (BlocMethode). */
.ppb-methode {
	margin: 0;
	padding: 0;
	list-style: none;
}

.ppb-methode__etape {
	display: flex;
	flex-direction: column;
	gap: 14px;
	padding: 26px 24px;
}

.ppb-methode__repere {
	display: flex;
	align-items: center;
	gap: 10px;
}

.ppb-methode__point {
	flex: none;
	width: 18px;
	height: 18px;
	border: 1.5px solid var(--ppb-accent);
	border-radius: 50%;
	background: var(--ppb-accent);
}

.ppb-methode__point--signal {
	border-color: var(--ppb-signal);
	background: var(--ppb-signal);
}

.ppb-methode__point--vide {
	border-color: var(--ppb-encre);
	background: transparent;
}

.ppb-methode__jour {
	color: var(--ppb-attenue);
	font-family: var(--ppb-mono);
	font-size: 12px;
	text-transform: uppercase;
}

.ppb-methode__titre {
	margin: 0;
	font-size: 18px;
	font-weight: 500;
	letter-spacing: -.01em;
	line-height: 1.3;
}

.ppb-methode__texte {
	margin: 0;
	color: var(--ppb-texte);
	font-size: 14px;
	line-height: 1.6;
	text-wrap: pretty;
}

.ppb-methode__duree {
	margin-top: auto;
	color: var(--ppb-accent);
	font-family: var(--ppb-mono);
	font-size: 13px;
}

/* -------------------------------------------------------------------------
 * 19. Contenu rédactionnel
 * ---------------------------------------------------------------------- */

.ppb-contenu {
	display: flex;
	flex-wrap: wrap;
	gap: calc(2.5 * var(--e)) 4.5%;
	align-items: flex-start;
}

.ppb-contenu__intro {
	display: flex;
	flex: 1 1 260px;
	flex-direction: column;
	gap: 14px;
	min-width: 0;
}

.ppb-contenu__titre {
	max-width: 22ch;
}

.ppb-contenu__points {
	display: flex;
	flex-direction: column;
	gap: 9px;
	margin-top: 6px;
	padding: 16px 0 0;
	border-top: 1px solid var(--ppb-bordure);
	list-style: none;
}

.ppb-contenu__points li {
	display: flex;
	align-items: center;
	gap: 12px;
	font-size: 15px;
}

.ppb-contenu__idx {
	flex: none;
	width: 2ch;
	color: var(--ppb-accent);
	font-family: var(--ppb-mono);
	font-size: 11px;
}

.ppb-contenu__corps {
	display: flex;
	flex: 2.2 1 420px;
	flex-direction: column;
	gap: calc(1.2 * var(--e));
	max-width: 78ch;
	min-width: 0;
	font-size: 16px;
	line-height: 1.65;
}

/* -------------------------------------------------------------------------
 * 20. Tarifs
 * ---------------------------------------------------------------------- */

.ppb-tarifs__head {
	display: flex;
	flex-wrap: wrap;
	align-items: flex-end;
	justify-content: space-between;
	gap: 24px;
	margin-bottom: calc(2 * var(--e));
}

.ppb-tarifs__head .ppb-section__head {
	max-width: 60ch;
	margin-bottom: 0;
}

.ppb-tarifs__repere {
	padding: 10px 14px;
	border: 1px solid var(--ppb-bordure);
	border-radius: var(--ppb-rayon);
	color: var(--ppb-attenue);
	font-family: var(--ppb-mono);
	font-size: 12px;
}

.ppb-tarifs__note {
	margin-top: 18px;
	color: var(--ppb-attenue);
	font-family: var(--ppb-mono);
	font-size: 12px;
	line-height: 1.7;
}

.ppb-offre {
	display: flex;
	flex-direction: column;
	border: 1px solid var(--ppb-bordure);
	border-radius: var(--ppb-rayon);
	background: var(--ppb-blanc);
	transition: border-color var(--ppb-transition);
}

.ppb-offre:hover {
	border-color: var(--ppb-accent);
}

.ppb-offre--avant {
	border-color: var(--ppb-encre);
	background: #F7F9FC;
}

.ppb-offre__head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 10px;
	padding: 16px 22px;
	border-bottom: 1px solid var(--ppb-bordure);
}

.ppb-offre__badge {
	color: var(--ppb-accent);
	font-family: var(--ppb-mono);
	font-size: 11px;
	letter-spacing: .08em;
	text-transform: uppercase;
}

.ppb-offre__corps {
	display: flex;
	flex: 1;
	flex-direction: column;
	gap: 18px;
	padding: 24px 22px;
}

.ppb-offre__prix {
	display: flex;
	align-items: baseline;
	gap: 10px;
}

.ppb-offre__montant {
	color: var(--ppb-encre);
	font-family: var(--ppb-mono);
	font-size: calc(2.6 * var(--e));
	font-weight: 600;
	letter-spacing: -.03em;
	line-height: 1;
}

.ppb-offre__detail {
	color: var(--ppb-attenue);
	font-family: var(--ppb-mono);
	font-size: 13px;
}

.ppb-offre__specs {
	display: grid;
	grid-template-columns: auto 1fr;
	gap: 8px 16px;
	margin: 0;
	padding: 14px 0;
	border-top: 1px solid var(--ppb-bordure);
	border-bottom: 1px solid var(--ppb-bordure);
	font-family: var(--ppb-mono);
	font-size: 13px;
}

.ppb-offre__specs dt {
	color: var(--ppb-attenue);
}

.ppb-offre__specs dd {
	margin: 0;
}

.ppb-offre__cta {
	width: 100%;
	margin-top: auto;
}

/* -------------------------------------------------------------------------
 * 21. Professeurs
 * ---------------------------------------------------------------------- */

.ppb-prof {
	overflow: hidden;
	border: 1px solid var(--ppb-bordure);
	border-radius: var(--ppb-rayon);
	background: var(--ppb-blanc);
}

.ppb-prof__portrait {
	display: flex;
	align-items: center;
	justify-content: center;
	height: 170px;
	padding: 20px;
	border-bottom: 1px solid var(--ppb-bordure);
	background: var(--ppb-fond-clair);
}

.ppb-prof__matrice {
	display: grid;
	grid-template-columns: repeat(11, 1fr);
	gap: 5px;
	width: 100%;
	max-width: 170px;
}

.ppb-prof__point {
	aspect-ratio: 1;
	border: 1.5px solid #CDD4DB;
	border-radius: 50%;
}

.ppb-prof__point--on {
	border-color: var(--ppb-accent);
	background: var(--ppb-accent);
}

.ppb-prof__corps {
	display: flex;
	flex-direction: column;
	gap: 7px;
	padding: 18px;
}

.ppb-prof__tag {
	color: var(--ppb-accent);
	font-family: var(--ppb-mono);
	font-size: 11px;
	letter-spacing: .1em;
}

.ppb-prof__nom {
	font-size: 18px;
	font-weight: 500;
	letter-spacing: -.01em;
}

.ppb-prof__specialite {
	color: var(--ppb-texte);
	font-size: 14px;
	line-height: 1.5;
}

.ppb-prof__experience {
	color: var(--ppb-attenue);
	font-family: var(--ppb-mono);
	font-size: 12px;
}

/* -------------------------------------------------------------------------
 * 22. Encarts et page contact
 * ---------------------------------------------------------------------- */

.ppb-encart {
	display: flex;
	flex-direction: column;
	gap: 14px;
	padding: 26px;
	border: 1px solid var(--ppb-bordure);
	border-radius: var(--ppb-rayon);
	background: var(--ppb-blanc);
}

/*
 * L'encart du hero se cale sur la hauteur de la colonne de gauche, qui se
 * termine à la ligne des statistiques. On resserre donc les espacements
 * plutôt que de retirer un champ au formulaire.
 */
.ppb-hero .ppb-encart {
	width: 100%;
	max-width: 460px;
	padding: 22px;
	gap: 12px;
	justify-self: end;
	border-color: var(--ppb-encre);
}

.ppb-hero .ppb-encart .wpcf7-form {
	gap: 10px;
}

.ppb-hero .ppb-encart .wpcf7-form input {
	min-height: 44px;
	padding: 11px 13px;
}

.ppb-hero .ppb-encart .wpcf7-form .wpcf7-submit {
	min-height: 46px;
	padding: 12px 24px;
}

.ppb-hero .ppb-encart .ppb-form__champ {
	gap: 5px;
}

.ppb-hero .ppb-encart .ppb-form__mention {
	margin-top: -2px;
	font-size: 11px;
	line-height: 1.5;
}

.ppb-hero .ppb-encart__texte {
	font-size: 14px;
	line-height: 1.5;
}

.ppb-hero .ppb-encart__pied {
	gap: 4px;
	padding-top: 10px;
}

.ppb-encart--fort {
	gap: 12px;
	border-color: var(--ppb-encre);
}

.ppb-encart--clair {
	background: var(--ppb-fond-clair);
}

.ppb-encart__titre {
	color: var(--ppb-encre);
	font-size: calc(1.45 * var(--e));
	font-weight: 700;
	letter-spacing: -.02em;
	line-height: 1.2;
}

.ppb-encart__texte {
	font-size: 15px;
	line-height: 1.6;
}

.ppb-encart__numero {
	font-family: var(--ppb-mono);
	font-size: calc(1.8 * var(--e));
	font-weight: 600;
	line-height: 1;
}

.ppb-encart__pied {
	display: flex;
	flex-direction: column;
	gap: 6px;
	padding-top: 14px;
	border-top: 1px solid var(--ppb-bordure);
}

.ppb-encart__tel {
	font-family: var(--ppb-mono);
	font-size: 18px;
}

.ppb-encart__horaires {
	color: var(--ppb-attenue);
	font-family: var(--ppb-mono);
	font-size: 12px;
}

.ppb-contact {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
	gap: calc(2.5 * var(--e)) 4.5%;
	align-items: start;
}

.ppb-contact__principal {
	display: flex;
	flex-direction: column;
	gap: 22px;
}

.ppb-contact h1 {
	max-width: 22ch;
	font-size: calc(3 * var(--e));
	line-height: 1.05;
}

.ppb-contact__chapeau {
	max-width: 52ch;
	font-size: 16px;
}

.ppb-contact__aside {
	display: flex;
	flex-direction: column;
	gap: 16px;
	width: 100%;
	max-width: 460px;
	justify-self: end;
}

.ppb-avis {
	display: flex;
	flex-direction: column;
	gap: 10px;
}

.ppb-avis--suivant {
	padding-top: 16px;
	border-top: 1px solid var(--ppb-bordure);
}

.ppb-avis__citation {
	font-size: 15px;
	line-height: 1.55;
	text-wrap: pretty;
}

.ppb-avis__auteur {
	color: var(--ppb-attenue);
	font-family: var(--ppb-mono);
	font-size: 12px;
}

/* -------------------------------------------------------------------------
 * 23. Formulaires Contact Form 7, habillés aux tokens
 * ---------------------------------------------------------------------- */

.ppb .wpcf7-form {
	display: flex;
	flex-direction: column;
	gap: 12px;
}

.ppb-form__grille {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
	gap: 12px;
}

.ppb-form__champ {
	display: flex;
	flex-direction: column;
	gap: 7px;
	min-width: 0;
}

.ppb-form__label {
	color: var(--ppb-attenue);
	font-family: var(--ppb-mono);
	font-size: 11px;
	letter-spacing: .1em;
	text-transform: uppercase;
}

.ppb .wpcf7-form input[type='text'],
.ppb .wpcf7-form input[type='email'],
.ppb .wpcf7-form input[type='tel'],
.ppb .wpcf7-form select,
.ppb .wpcf7-form textarea {
	width: 100%;
	min-height: 48px;
	padding: 13px;
	border: 1px solid var(--ppb-bordure-forte);
	border-radius: var(--ppb-rayon);
	background: var(--ppb-blanc);
	color: var(--ppb-encre);
	font-family: var(--ppb-sans);
	font-size: 15px;
}

.ppb .wpcf7-form input[type='tel'] {
	font-family: var(--ppb-mono);
}

.ppb .wpcf7-form textarea {
	min-height: 110px;
	resize: vertical;
}

.ppb .wpcf7-form input:focus,
.ppb .wpcf7-form select:focus,
.ppb .wpcf7-form textarea:focus {
	border-color: var(--ppb-accent);
	outline: 2px solid rgba(11, 95, 255, .28);
	outline-offset: 1px;
}

.ppb .wpcf7-form .wpcf7-submit {
	width: 100%;
	min-height: 48px;
	padding: 14px 24px;
	border: 1px solid var(--ppb-accent);
	border-radius: var(--ppb-rayon);
	background: var(--ppb-accent);
	color: var(--ppb-blanc);
	font-family: var(--ppb-sans);
	font-size: 16px;
	font-weight: 500;
	cursor: pointer;
	transition: background var(--ppb-transition);
}

.ppb .wpcf7-form .wpcf7-submit:hover {
	background: var(--ppb-accent-hover);
}

.ppb .wpcf7-form .wpcf7-submit:disabled {
	border-color: var(--ppb-bordure);
	background: var(--ppb-fond-clair);
	color: var(--ppb-gris);
	cursor: not-allowed;
}

.ppb-form__consentement {
	display: flex;
	align-items: flex-start;
	gap: 10px;
	color: var(--ppb-attenue);
	font-size: 13px;
	line-height: 1.5;
}

.ppb-form__consentement .wpcf7-list-item {
	margin: 0;
}

.ppb-form__mention {
	color: var(--ppb-attenue);
	font-family: var(--ppb-mono);
	font-size: 12px;
}

/* Pot de miel : jamais visible, jamais lu par un lecteur d'écran. */
.ppb-form__piege {
	position: absolute !important;
	width: 1px;
	height: 1px;
	overflow: hidden;
	clip-path: inset(50%);
	white-space: nowrap;
}

.ppb .wpcf7-response-output {
	margin: 0;
	padding: 12px 14px;
	border: 1px solid var(--ppb-bordure-forte);
	border-radius: var(--ppb-rayon);
	font-size: 14px;
}

.ppb .wpcf7 form.sent .wpcf7-response-output {
	border-color: var(--ppb-accent);
	color: var(--ppb-encre);
}

.ppb .wpcf7-not-valid-tip {
	color: var(--ppb-signal);
	font-size: 13px;
}

.ppb-form__absent {
	padding: 12px 14px;
	border: 1px dashed var(--ppb-signal);
	border-radius: var(--ppb-rayon);
	font-size: 14px;
}

@media (max-width: 640px) {
	.ppb-contact__aside,
	.ppb-hero .ppb-encart {
		max-width: none;
	}

	.ppb-offre__specs {
		grid-template-columns: 1fr;
		gap: 2px 0;
	}

	.ppb-offre__specs dt {
		margin-top: 8px;
	}
}

/* -------------------------------------------------------------------------
 * Bloc tableau (0.12.0) : une épreuve décrite ligne par ligne.
 * Composé sur le modèle des lignes de BlocEpreuves : bordures 1 px,
 * libellé mono, valeur mono en accent, aucune ombre.
 * ---------------------------------------------------------------------- */

.ppb-visuellement-cache {
	position: absolute;
	width: 1px;
	height: 1px;
	overflow: hidden;
	clip: rect(0 0 0 0);
	white-space: nowrap;
}

.ppb-tableau {
	margin-top: 32px;
	border: 1px solid var(--ppb-bordure);
	border-radius: var(--ppb-rayon);
	overflow: hidden;
}

.ppb-tableau table {
	width: 100%;
	border-collapse: collapse;
}

.ppb-tableau tr + tr th,
.ppb-tableau tr + tr td {
	border-top: 1px solid var(--ppb-bordure);
}

.ppb-tableau th,
.ppb-tableau td {
	padding: 16px 24px;
	text-align: left;
	vertical-align: middle;
}

.ppb-tableau th {
	width: 180px;
	color: var(--ppb-attenue);
	font-family: var(--ppb-mono);
	font-size: 11px;
	font-weight: 500;
	letter-spacing: .1em;
	text-transform: uppercase;
}

.ppb-tableau__valeur {
	width: 220px;
	color: var(--ppb-accent);
	font-family: var(--ppb-mono);
	font-size: 18px;
	font-weight: 600;
	white-space: nowrap;
}

.ppb-tableau__detail {
	color: var(--ppb-texte);
	font-size: 14px;
	line-height: 1.55;
	text-wrap: pretty;
}

.ppb-tableau__note {
	margin-top: 14px;
	color: var(--ppb-attenue);
	font-family: var(--ppb-mono);
	font-size: 11px;
	line-height: 1.6;
}

@media (max-width: 640px) {
	.ppb-tableau tr {
		display: grid;
		grid-template-columns: 1fr auto;
		gap: 6px 16px;
		padding: 16px;
	}

	.ppb-tableau tr + tr {
		border-top: 1px solid var(--ppb-bordure);
	}

	.ppb-tableau tr + tr th,
	.ppb-tableau tr + tr td {
		border-top: 0;
	}

	.ppb-tableau th,
	.ppb-tableau td {
		width: auto;
		padding: 0;
	}

	.ppb-tableau__valeur {
		font-size: 16px;
		text-align: right;
	}

	.ppb-tableau__detail {
		grid-column: 1 / -1;
	}
}
