/**
 * Écrans de conversion : paiement et connexion/inscription.
 *
 * Ces écrans sont rendus par Tutor LMS. L'essentiel de leur couleur est déjà
 * corrigé en amont par tutor-theme-vars.css (jetons du plugin remappés sur notre
 * palette). Ce fichier ne traite que ce qu'un jeton ne peut pas corriger :
 * les dimensions de cible tactile, les fuites de couleur peintes en dur par le
 * plugin, et les blocs ajoutés par le thème.
 *
 * Référence : docs/DESIGN-REVIEW.md §6.4 et §6.5.
 */

/* ═══════════════════════════════════════════════════════════════════════════
 * 1. FUITES DE MODE CLAIR — la vraie cause, mesurée
 *
 * Le checkout charge DEUX feuilles du plugin :
 *   • tutor-core.min.css — le design system v4, entièrement piloté par variables.
 *     C'est celle que tutor-theme-vars.css remappe, et elle est corrigée.
 *   • tutor.min.css — une feuille plus ancienne qui peint des couleurs
 *     LITTÉRALES (#fff, #fafafa, #f5f5f6…). Aucune variable, donc aucun
 *     remappage possible : c'est le seul cas où il faut surcharger la classe.
 *
 * C'est ce qui explique que le checkout soit resté en mode clair alors que le
 * dashboard et la zone d'apprentissage, eux, étaient corrects : ces derniers
 * n'utilisent que le design system v4.
 *
 * Chaque sélecteur ci-dessous correspond à un élément relevé par le détecteur de
 * fuites (fond dont la moyenne RVB dépasse 200) sur /paiement/ en visiteur
 * anonyme. C'est le cas n°3 de la hiérarchie de DESIGN-REVIEW §3.9 : `!important`
 * en dernier recours, groupé et commenté, parce que la variable n'existe pas.
 * ═══════════════════════════════════════════════════════════════════════════ */

/* Couleurs de TEXTE littérales — « Détails de la commande », « Moyen de
   paiement » s'affichaient en quasi-noir sur fond noir : 1,02:1. */
.tutor-checkout-page .tutor-color-black,
.tutor-checkout-page .tutor-color-secondary,
.tutor-login-wrap .tutor-color-black {
	color: var(--dsa-text) !important;
}

/*
 * `.tutor-color-subdued` vaut #5B616F en dur dans les deux feuilles héritées, soit
 * 3,11:1 sur nos fonds — échec AA. C'est la classe qui porte le texte de
 * consentement « J'accepte les conditions générales de vente » : une mention
 * juridiquement requise ne peut pas être sous le seuil de lisibilité.
 * Le jeton de texte secondaire est à 6,94:1.
 */
.tutor-color-subdued {
	color: var(--dsa-text-muted) !important;
}

/*
 * Nom du moyen de paiement (« Stripe ») : couleur littérale rgb(33, 37, 41)
 * posée par tutor-front.min.css, soit 1,15:1. Aucune variable en jeu, donc
 * surcharge de classe obligatoire.
 */
.tutor-checkout-payment-options .tutor-payment-item-content,
.tutor-checkout-payment-options .tutor-checkout-payment-item-content {
	color: var(--dsa-text) !important;
}

/* Surfaces claires du récapitulatif et des moyens de paiement. */
.tutor-checkout-page .tutor-checkout-details-inner,
.tutor-checkout-page .tutor-checkout-payment-options,
.tutor-checkout-page .tutor-payment-instructions,
.tutor-checkout-page .tutor-apply-coupon-form,
.tutor-checkout-page .tutor-modal-content-white,
.tutor-modal-content.tutor-modal-content-white {
	background-color: var(--dsa-surface) !important;
	color: var(--dsa-text-body) !important;
	border-color: var(--dsa-border) !important;
}

.tutor-checkout-page .tutor-checkout-coupon-badge {
	background-color: var(--dsa-lime-a14) !important;
	color: var(--dsa-lime) !important;
}

/* Moyen de paiement sélectionné : le bleu pâle par défaut du plugin (#E9EDFB)
   devient un panneau teinté lime, cohérent avec l'état actif du reste du site. */
.tutor-checkout-page .tutor-checkout-payment-item {
	background-color: var(--dsa-surface-raised) !important;
	border: 1px solid var(--dsa-border-input) !important;
	color: var(--dsa-text-body) !important;
}

.tutor-checkout-page .tutor-checkout-payment-item.active {
	background-color: var(--dsa-lime-a14) !important;
	border-color: var(--dsa-lime) !important;
}

/*
 * L'ENCRE DU BOUTON PRIMAIRE — le dernier maillon du CTA.
 *
 * `tutor.min.css` pose `.tutor-btn-primary { color: #fff }` en dur, sans passer
 * par --tutor-text-primary-inverse. Le fond est désormais lime (via l'échelle de
 * marque), mais du blanc sur notre lime donne 1,24:1 : le libellé « Payer
 * maintenant » serait resté illisible sur un bouton pourtant corrigé.
 * Avec notre encre sombre : 14,68:1.
 */
.tutor-btn-primary,
.tutor-btn.tutor-btn-primary,
#tutor-checkout-pay-now-button {
	color: var(--dsa-lime-ink) !important;
	background-color: var(--dsa-lime) !important;
}

.tutor-btn-primary:hover,
#tutor-checkout-pay-now-button:hover {
	background-color: var(--dsa-lime-hover) !important;
	color: var(--dsa-lime-ink) !important;
}

/* ═══════════════════════════════════════════════════════════════════════════
 * 2. CIBLES TACTILES ET CHAMPS — WCAG 2.2 SC 2.5.8
 *
 * Relevé : champs à 38-40px de haut, case de consentement à 24px (le strict
 * minimum de la norme, sans marge), boutons de tunnel sous 44px.
 *
 * `font-size: 1rem` sur les champs n'est pas cosmétique : sous 16px, iOS zoome
 * automatiquement au focus et casse la mise en page du tunnel sur mobile.
 * ═══════════════════════════════════════════════════════════════════════════ */

/*
 * `!important` nécessaire ici : `tutor.min.css` cible ces champs par CLASSE
 * (.tutor-form-control { background: #F5F5F6 }), ce qui l'emporte sur un
 * sélecteur d'élément. Sans lui, les champs restaient en mode clair.
 */
/*
 * Non restreint à un conteneur : le formulaire de connexion est aussi rendu dans
 * une MODALE, en dehors de .tutor-checkout-page. Des sélecteurs scopés laissaient
 * donc quatre champs en mode clair, invisibles tant que la modale n'est pas
 * ouverte — exactement le genre de fuite que personne ne voit en recette.
 * Le thème est dark-only : il n'y a aucun contexte où un champ clair serait juste.
 */
.tutor-form-control,
.tutor-checkout-page input:not([type="checkbox"]):not([type="radio"]),
.tutor-checkout-page select,
.tutor-login-wrap input:not([type="checkbox"]):not([type="radio"]),
.tutor-login-wrap select,
.tutor-modal input:not([type="checkbox"]):not([type="radio"]),
.tutor-modal select {
	min-height: var(--dsa-field-h);
	/* En rem : sous 16px, iOS zoome automatiquement au focus et casse la mise
	   en page du tunnel sur mobile. */
	font-size: 1rem !important;
	background-color: var(--dsa-surface-raised) !important;
	color: var(--dsa-text) !important;
	/* Jeton INTERACTIF, pas le décoratif : un contour de champ doit atteindre
	   3:1 (SC 1.4.11). Le jeton de carte est à 1,80:1. */
	border: 1px solid var(--dsa-border-input) !important;
	border-radius: var(--dsa-radius-md);
}

.tutor-checkout-page input::placeholder,
.tutor-login-wrap input::placeholder {
	color: var(--dsa-text-faint) !important;
}

/* ═══════════════════════════════════════════════════════════════════════════
 * ADRESSE DE FACTURATION — défaire la « pile jointe » du plugin
 *
 * `tutor-front.min.css` transforme volontairement ce bloc en une pile de champs
 * soudés, à la manière de l'Address Element de Stripe :
 *     .tutor-checkout-billing .tutor-billing-fields .tutor-form-label  → display: none
 *     .tutor-checkout-billing .tutor-billing-fields .tutor-mb-16       → margin-bottom: 0
 *     .tutor-checkout-billing .tutor-billing-fields .tutor-form-control→ border-radius: 0
 *     + `tutor-g-0` sur la grille, donc aucune gouttière
 *
 * Ce parti pris ne tient que si les champs n'ont PAS de contour individuel : chez
 * Stripe, seul le bloc entier est encadré. Avec nos bordures à 3:1 (obligatoires,
 * SC 1.4.11), chaque champ redessine son cadre et les bordures se doublent entre
 * voisins — d'où l'impression de champs tassés et d'angles incohérents.
 *
 * On revient donc à un formulaire à champs distincts : labels visibles, gouttières
 * réelles, rayon homogène. Les sélecteurs reprennent la même profondeur que ceux
 * du plugin (trois classes) pour l'emporter sans surenchère.
 * ═══════════════════════════════════════════════════════════════════════════ */

/*
 * Réafficher les labels. Un formulaire d'adresse en placeholders seuls perd son
 * étiquetage dès la première frappe : impossible de relire ce qu'attend un champ
 * au moment de vérifier sa commande.
 */
.tutor-checkout-billing .tutor-billing-fields .tutor-form-label {
	display: block !important;
	margin-bottom: var(--dsa-space-3xs) !important;
	font-size: var(--dsa-step--1);
	font-weight: 500;
	color: var(--dsa-text-muted) !important;
}

/* Espacement vertical entre les rangées de champs. */
.tutor-checkout-billing .tutor-billing-fields .tutor-mb-16 {
	margin-bottom: var(--dsa-space-s) !important;
}

/* Gouttière horizontale entre deux champs côte à côte (motif de grille standard :
   marge négative sur la rangée, padding sur les colonnes). */
.tutor-checkout-billing .tutor-billing-fields .tutor-row {
	margin-inline: calc(var(--dsa-space-2xs) * -1) !important;
}

.tutor-checkout-billing .tutor-billing-fields [class*="tutor-col-"] {
	padding-inline: var(--dsa-space-2xs) !important;
}

/* Rayon homogène sur tous les champs — le plugin les mettait à 0 au milieu de la
   pile et n'arrondissait que les extrémités. */
.tutor-checkout-billing .tutor-billing-fields .tutor-form-control {
	border-radius: var(--dsa-radius-md) !important;
	/* Le padding du plugin (0 10px) colle le texte au bord. */
	padding: 0 var(--dsa-space-xs) !important;
}

/* Les <select> gardent la place de leur chevron natif. */
.tutor-checkout-billing .tutor-billing-fields select.tutor-form-control {
	padding-right: var(--dsa-space-l) !important;
}

.tutor-checkout-billing .tutor-checkout-billing-inner > h5,
.tutor-checkout-billing .tutor-checkout-billing-inner > h4 {
	margin-bottom: var(--dsa-space-s) !important;
}

.tutor-checkout-page .tutor-form-control:focus,
.tutor-login-wrap .tutor-form-control:focus {
	border-color: var(--dsa-lime) !important;
}

/* Cases à cocher et boutons radio : le fond blanc du plugin trahit le mode clair
   même quand tout le reste est corrigé. `accent-color` colore la coche native
   sans avoir à reconstruire le contrôle. */
.tutor-form-check-input,
.tutor-checkout-page input[type="checkbox"],
.tutor-checkout-page input[type="radio"],
.tutor-login-wrap input[type="checkbox"],
.tutor-modal input[type="checkbox"],
.tutor-modal input[type="radio"] {
	width: 24px;
	height: 24px;
	accent-color: var(--dsa-lime);
	background-color: var(--dsa-surface-raised) !important;
	border: 1px solid var(--dsa-border-input) !important;
}

/* La case fait 24px, mais sa CIBLE doit faire 44px : on étend la zone cliquable
   par le label sans grossir la case elle-même. */
.tutor-checkout-page label:has(input[type="checkbox"]),
.tutor-login-wrap label:has(input[type="checkbox"]) {
	display: flex;
	align-items: center;
	gap: var(--dsa-space-2xs);
	min-height: var(--dsa-target-min);
	cursor: pointer;
}

/*
 * Cible tactile de 44px sur les boutons d'action de ces écrans.
 *
 * Non restreint à .tutor-login-wrap : le bouton « Se connecter » est rendu hors
 * de ce conteneur, et restait donc à 38px. On vise les variantes d'action et les
 * soumissions de formulaire plutôt que `.tutor-btn` en général, pour ne pas
 * étirer les petits boutons d'icône des tableaux du dashboard.
 */
.tutor-btn-primary,
.tutor-btn-secondary,
.tutor-checkout-page .tutor-btn,
.tutor-login-wrap .tutor-btn,
.tutor-modal button[type="submit"],
form button[type="submit"].tutor-btn {
	min-height: var(--dsa-target-min);
}

#tutor-checkout-pay-now-button {
	min-height: 52px;
	font-size: var(--dsa-step-0);
	font-weight: 600;
}

/* ═══════════════════════════════════════════════════════════════════════════
 * 3. LE LIEN CGV — obligation juridique, et il était invisible
 *
 * Mesuré à 1,31:1 : le lien de consentement aux conditions générales de vente
 * s'affichait dans le vert de marque hérité, sur fond noir. Un consentement
 * juridiquement requis doit se voir : couleur d'accent ET soulignement, parce
 * que la couleur seule ne suffit jamais à signaler un lien (WCAG 1.4.1).
 * ═══════════════════════════════════════════════════════════════════════════ */

.tutor-checkout-page a[href*="conditions"],
.tutor-checkout-page a[href*="terms"],
.tutor-checkout-page a[href*="privacy"],
.tutor-checkout-page a[href*="confidentialite"],
.tutor-checkout-page .tutor-checkout-agreement a {
	color: var(--dsa-lime);
	text-decoration: underline;
	text-underline-offset: 2px;
}

/* ═══════════════════════════════════════════════════════════════════════════
 * 4. EN-TÊTE DE PAGE AJOUTÉ PAR LE THÈME (inc/tutor/checkout.php)
 * ═══════════════════════════════════════════════════════════════════════════ */

.dsa-checkout-head {
	max-width: 1200px;
	margin: 0 auto;
	padding: var(--dsa-space-l) clamp(20px, 4vw, 48px) 0;
}

.dsa-checkout-head__steps {
	font-family: var(--dsa-font-mono);
	font-size: var(--dsa-step--2);
	letter-spacing: 0.06em;
	text-transform: uppercase;
	color: var(--dsa-text-muted);
	margin: 0 0 var(--dsa-space-2xs);
}

.dsa-checkout-head__title {
	font-size: var(--dsa-step-3);
	margin: 0;
}

/* ═══════════════════════════════════════════════════════════════════════════
 * 5. BLOC DE RÉASSURANCE
 * ═══════════════════════════════════════════════════════════════════════════ */

.dsa-checkout-trust {
	list-style: none;
	margin: var(--dsa-space-s) 0 0;
	padding: var(--dsa-space-xs) var(--dsa-space-s);
	display: grid;
	gap: var(--dsa-space-2xs);
	background: var(--dsa-lime-a08);
	border: 1px solid var(--dsa-lime-a25);
	border-radius: var(--dsa-radius-md);
}

.dsa-checkout-trust__item {
	display: flex;
	align-items: center;
	gap: var(--dsa-space-2xs);
	font-size: var(--dsa-step--1);
	color: var(--dsa-text-body);
	margin: 0;
}

/* Coche dessinée en CSS : pas de requête réseau, pas de dépendance à une
   police d'icônes, et invisible pour les lecteurs d'écran (décorative). */
.dsa-checkout-trust__mark {
	flex: none;
	width: 14px;
	height: 8px;
	border-left: 2px solid var(--dsa-lime);
	border-bottom: 2px solid var(--dsa-lime);
	rotate: -45deg;
	translate: 0 -2px;
}

/* ═══════════════════════════════════════════════════════════════════════════
 * 6. ÉCRAN DE CONNEXION (inc/tutor/checkout.php)
 * ═══════════════════════════════════════════════════════════════════════════ */

.dsa-login-head {
	margin-bottom: var(--dsa-space-m);
	text-align: center;
}

.dsa-login-head__title {
	font-size: var(--dsa-step-3);
	margin: 0 0 var(--dsa-space-3xs);
}

.dsa-login-head__sub {
	color: var(--dsa-text-muted);
	font-size: var(--dsa-step-0);
	margin: 0;
	max-width: none;
}

/*
 * « Mot de passe oublié ? » était à 4,25:1 — échec AA pour du texte de cette
 * taille. Le jeton de texte secondaire est à 6,94:1.
 */
.tutor-login-wrap a:not(.tutor-btn) {
	color: var(--dsa-text-muted);
}

.tutor-login-wrap a:not(.tutor-btn):hover {
	color: var(--dsa-lime);
}
