/**
 * Bloc [plato_connexion] — maquette « Page Connexion & Inscription ».
 *
 * Toutes les règles partent de :is(#plato-auth, [data-plato-auth]) : l'attribut
 * correspond, mais :is() prend la spécificité de son argument le plus fort,
 * l'identifiant. Assez pour passer devant les styles de formulaires de Divi et
 * de WooCommerce sans !important, même dans une fenêtre modale Divi.
 *
 * Tailles de texte alignées sur l'espace compte (corps 16px).
 */

:is(#plato-auth, [data-plato-auth]) {
	--plato-auth-pad: clamp(20px, 4vw, 34px);

	box-sizing: border-box;
	width: 100%;
	/* Réglable par l'attribut largeur du shortcode ; « auto » = pas de limite. */
	max-width: var(--plato-auth-max, 560px);
	margin: 0 auto;
	color: var(--plato-text-primary);
	font-family: var(--plato-font-body);
	font-size: 16px;
	line-height: 1.5;
	text-align: left;
	-webkit-font-smoothing: antialiased;
}

:is(#plato-auth, [data-plato-auth]) *,
:is(#plato-auth, [data-plato-auth]) *::before,
:is(#plato-auth, [data-plato-auth]) *::after {
	box-sizing: border-box;
}

:is(#plato-auth, [data-plato-auth]) [hidden] {
	display: none !important;
}

:is(#plato-auth, [data-plato-auth]) p {
	margin: 0;
	padding: 0;
	font-size: inherit;
	line-height: inherit;
}

:is(#plato-auth, [data-plato-auth]) a {
	color: var(--plato-action);
	font-weight: 600;
	text-decoration: underline;
	text-decoration-thickness: 1px;
	text-underline-offset: 3px;
}

:is(#plato-auth, [data-plato-auth]) a:hover {
	color: var(--plato-action-hover);
}

:is(#plato-auth, [data-plato-auth]) :focus-visible {
	outline: 3px solid var(--plato-action);
	outline-offset: 2px;
}

/* ---- En-tête ---- */

:is(#plato-auth, [data-plato-auth]) .plato-auth__header {
	margin-bottom: var(--plato-space-6);
}

:is(#plato-auth, [data-plato-auth]) .plato-auth__title {
	margin: 0 0 var(--plato-space-2);
	padding: 0;
	color: var(--plato-text-primary);
	font-family: var(--plato-font-display);
	font-size: clamp(30px, 4.4vw, 40px);
	font-weight: 600;
	line-height: 1.05;
	letter-spacing: var(--plato-tracking-tight);
	text-transform: none;
}

:is(#plato-auth, [data-plato-auth]) .plato-auth__dot {
	color: var(--plato-framboise-500);
}

:is(#plato-auth, [data-plato-auth]) .plato-auth__intro {
	max-width: 460px;
	color: var(--plato-text-secondary);
	font-size: 17px;
	line-height: 1.5;
}

/* ---- Bascule Se connecter / Créer un compte ---- */

:is(#plato-auth, [data-plato-auth]) .plato-auth__switch {
	display: inline-flex;
	gap: 4px;
	max-width: 100%;
	margin-bottom: var(--plato-space-5);
	padding: 5px;
	border: 1.5px solid var(--plato-border-default);
	border-radius: var(--plato-radius-pill);
	background: var(--plato-color-chip);
}

:is(#plato-auth, [data-plato-auth]) .plato-auth__switch-button {
	min-height: 0;
	margin: 0;
	padding: 11px 22px;
	border: 0;
	border-radius: var(--plato-radius-pill);
	background: transparent;
	box-shadow: none;
	color: var(--plato-text-meta);
	font-family: var(--plato-font-display);
	font-size: 16px;
	font-weight: 600;
	line-height: 1.2;
	letter-spacing: 0;
	text-transform: none;
	white-space: nowrap;
	cursor: pointer;
	transition: background-color 0.18s ease, color 0.18s ease, box-shadow 0.18s ease;
}

:is(#plato-auth, [data-plato-auth]) .plato-auth__switch-button:hover {
	background: transparent;
	color: var(--plato-text-primary);
}

:is(#plato-auth, [data-plato-auth]) .plato-auth__switch-button[aria-pressed='true'] {
	background: var(--plato-surface-card);
	box-shadow: 0 2px 8px rgba(42, 37, 54, 0.1);
	color: var(--plato-text-primary);
}

/* ---- Carte du formulaire ---- */

:is(#plato-auth, [data-plato-auth]) .plato-auth__card {
	padding: var(--plato-auth-pad);
	border: 1.5px solid var(--plato-border-default);
	border-radius: 28px;
	background: var(--plato-surface-card);
}

:is(#plato-auth, [data-plato-auth]) .plato-auth__form {
	display: flex;
	flex-direction: column;
	gap: 18px;
	margin: 0;
	padding: 0;
}

:is(#plato-auth, [data-plato-auth]) .plato-auth__row {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
	gap: 16px;
}

:is(#plato-auth, [data-plato-auth]) .plato-auth__field {
	margin: 0;
	padding: 0;
}

:is(#plato-auth, [data-plato-auth]) .plato-auth__label-row {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	justify-content: space-between;
	gap: 4px 12px;
	margin-bottom: 6px;
}

:is(#plato-auth, [data-plato-auth]) .plato-auth__label {
	display: block;
	margin: 0 0 6px;
	padding: 0;
	color: var(--plato-text-secondary);
	font-family: var(--plato-font-body);
	font-size: 14px;
	font-weight: 600;
	line-height: 1.3;
}

:is(#plato-auth, [data-plato-auth]) .plato-auth__label-row .plato-auth__label {
	margin: 0;
}

:is(#plato-auth, [data-plato-auth]) .plato-auth__required {
	color: var(--plato-action);
}

:is(#plato-auth, [data-plato-auth]) .plato-auth__input {
	display: block;
	width: 100%;
	height: auto;
	min-height: 48px;
	margin: 0;
	padding: 13px 16px;
	border: 1.5px solid var(--plato-border-input);
	border-radius: 12px;
	background: var(--plato-surface-page);
	box-shadow: none;
	color: var(--plato-text-primary);
	font-family: var(--plato-font-body);
	font-size: 16px;
	line-height: 1.3;
	outline: none;
	transition: border-color 0.18s ease, background-color 0.18s ease, box-shadow 0.18s ease;
}

:is(#plato-auth, [data-plato-auth]) .plato-auth__input::placeholder {
	color: var(--plato-text-placeholder);
	opacity: 1;
}

:is(#plato-auth, [data-plato-auth]) .plato-auth__input:hover {
	border-color: var(--plato-neutral-400);
}

/* Focus : bordure framboise et halo, comme les champs du tunnel de commande. */
:is(#plato-auth, [data-plato-auth]) .plato-auth__input:focus,
:is(#plato-auth, [data-plato-auth]) .plato-auth__input:focus-visible {
	border-color: var(--plato-framboise-500);
	background: var(--plato-surface-card);
	box-shadow: 0 0 0 4px rgba(230, 49, 127, 0.16);
	outline: none;
}

:is(#plato-auth, [data-plato-auth]) .plato-auth__input[aria-invalid='true'] {
	border-color: var(--plato-framboise-700);
	box-shadow: 0 0 0 4px rgba(158, 24, 84, 0.12);
}

/* Mot de passe : bouton Afficher / Masquer dans le champ. */
:is(#plato-auth, [data-plato-auth]) .plato-auth__password {
	position: relative;
}

:is(#plato-auth, [data-plato-auth]) .plato-auth__password .plato-auth__input {
	padding-right: 104px;
}

:is(#plato-auth, [data-plato-auth]) .plato-auth__reveal {
	position: absolute;
	top: 50%;
	right: 8px;
	min-height: 0;
	margin: 0;
	padding: 8px 12px;
	border: 0;
	border-radius: 9px;
	background: var(--plato-color-chip);
	box-shadow: none;
	color: var(--plato-text-secondary);
	font-family: var(--plato-font-body);
	font-size: 13px;
	font-weight: 600;
	line-height: 1.2;
	letter-spacing: 0;
	text-transform: none;
	cursor: pointer;
	transform: translateY(-50%);
}

:is(#plato-auth, [data-plato-auth]) .plato-auth__reveal:hover {
	background: var(--plato-neutral-200);
	color: var(--plato-text-primary);
}

/*
 * Robustesse du mot de passe : trois barres, comme la maquette.
 * Chaque barre a sa classe (pas de :nth-child, qu'un élément glissé par le
 * thème décalerait) et toutes ses propriétés sont posées, pour ne rien
 * hériter des styles de Divi.
 */
:is(#plato-auth, [data-plato-auth]) .plato-auth__strength {
	display: flex;
	align-items: center;
	gap: 12px;
	margin: 10px 0 0;
	padding: 0;
}

:is(#plato-auth, [data-plato-auth]) .plato-auth__meter {
	display: flex;
	flex: 1 1 auto;
	gap: 5px;
	min-width: 0;
	margin: 0;
	padding: 0;
	line-height: 0;
}

:is(#plato-auth, [data-plato-auth]) .plato-auth__bar {
	display: block;
	flex: 1 1 0;
	width: auto;
	height: 6px;
	margin: 0;
	padding: 0;
	border: 0;
	border-radius: var(--plato-radius-pill);
	background: var(--plato-border-default);
	font-size: 0;
	transition: background-color 0.2s ease;
}

:is(#plato-auth, [data-plato-auth]) .plato-auth__strength-label {
	flex: none;
	min-width: 118px;
	margin: 0;
	padding: 0;
	color: var(--plato-text-tertiary);
	font-family: var(--plato-font-display);
	font-size: 13px;
	font-weight: 600;
	line-height: 1.2;
	text-align: right;
	white-space: nowrap;
}

:is(#plato-auth, [data-plato-auth]) .plato-auth__strength[data-score='1'] .plato-auth__bar--1 {
	background: var(--plato-framboise-500);
}

:is(#plato-auth, [data-plato-auth]) .plato-auth__strength[data-score='1'] .plato-auth__strength-label {
	color: var(--plato-framboise-700);
}

:is(#plato-auth, [data-plato-auth]) .plato-auth__strength[data-score='2'] .plato-auth__bar--1,
:is(#plato-auth, [data-plato-auth]) .plato-auth__strength[data-score='2'] .plato-auth__bar--2 {
	background: var(--plato-soleil-500);
}

:is(#plato-auth, [data-plato-auth]) .plato-auth__strength[data-score='2'] .plato-auth__strength-label {
	color: var(--plato-soleil-800);
}

:is(#plato-auth, [data-plato-auth]) .plato-auth__strength[data-score='3'] .plato-auth__bar {
	background: var(--plato-lagon-500);
}

:is(#plato-auth, [data-plato-auth]) .plato-auth__strength[data-score='3'] .plato-auth__strength-label {
	color: var(--plato-lagon-700);
}

/* Cases à cocher : case native redessinée, toujours cliquable au clavier. */
:is(#plato-auth, [data-plato-auth]) .plato-auth__check {
	display: flex;
	align-items: flex-start;
	gap: 11px;
	margin: 0;
	padding: 0;
	color: var(--plato-text-secondary);
	font-size: 15px;
	font-weight: 400;
	line-height: 1.45;
	cursor: pointer;
}

:is(#plato-auth, [data-plato-auth]) .plato-auth__check input {
	appearance: none;
	-webkit-appearance: none;
	position: static;
	display: block;
	flex: none;
	width: 22px;
	height: 22px;
	min-width: 22px;
	margin: 1px 0 0;
	padding: 0;
	border: 2px solid var(--plato-border-input);
	border-radius: 7px;
	background: var(--plato-surface-card) no-repeat center / 14px 14px;
	box-shadow: none;
	cursor: pointer;
	opacity: 1;
	transition: background-color 0.15s ease, border-color 0.15s ease, box-shadow 0.15s ease;
}

/* Le thème ajoute parfois sa propre coche : on la retire. */
:is(#plato-auth, [data-plato-auth]) .plato-auth__check input::before,
:is(#plato-auth, [data-plato-auth]) .plato-auth__check input::after {
	content: none;
	display: none;
}

:is(#plato-auth, [data-plato-auth]) .plato-auth__check input:hover {
	border-color: var(--plato-framboise-300);
}

:is(#plato-auth, [data-plato-auth]) .plato-auth__check input:focus-visible {
	outline: none;
	box-shadow: 0 0 0 4px rgba(230, 49, 127, 0.16);
}

:is(#plato-auth, [data-plato-auth]) .plato-auth__check input:checked {
	border-color: var(--plato-framboise-500);
	background-color: var(--plato-framboise-500);
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 14 14'%3E%3Cpath d='M2.5 7.4 5.6 10.3 11.5 3.9' fill='none' stroke='%23fff' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
}

:is(#plato-auth, [data-plato-auth]) .plato-auth__check input[aria-invalid='true'] {
	border-color: var(--plato-framboise-700);
}

/* ---- Boutons ---- */

:is(#plato-auth, [data-plato-auth]) .plato-auth__submit {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: var(--plato-space-2);
	min-height: 52px;
	margin: 4px 0 0;
	padding: 15px 34px;
	border: 0;
	border-radius: var(--plato-radius-pill);
	background: var(--plato-action);
	box-shadow: 0 8px 20px rgba(230, 49, 127, 0.3);
	color: #fff;
	font-family: var(--plato-font-body);
	font-size: 18px;
	font-weight: 600;
	line-height: 1.2;
	letter-spacing: 0;
	text-align: center;
	text-decoration: none;
	text-transform: none;
	cursor: pointer;
	transition: background-color 0.18s ease, transform 0.12s ease;
}

/* Divi ajoute une flèche en ::after sur ses boutons. */
:is(#plato-auth, [data-plato-auth]) .plato-auth__submit::after,
:is(#plato-auth, [data-plato-auth]) .plato-auth__secondary::after {
	content: none;
	display: none;
}

:is(#plato-auth, [data-plato-auth]) .plato-auth__submit:hover {
	background: var(--plato-action-hover);
	color: #fff;
	transform: translateY(-2px);
}

:is(#plato-auth, [data-plato-auth]) .plato-auth__submit:active {
	background: var(--plato-action-active);
	transform: translateY(0);
}

:is(#plato-auth, [data-plato-auth]) .plato-auth__submit[aria-busy='true'] {
	cursor: progress;
	opacity: 0.8;
	transform: none;
}

:is(#plato-auth, [data-plato-auth]) .plato-auth__submit[aria-busy='true']::before {
	content: '';
	width: 0.9em;
	height: 0.9em;
	border: 2px solid currentColor;
	border-right-color: transparent;
	border-radius: 50%;
	animation: plato-auth-spin 0.8s linear infinite;
}

@keyframes plato-auth-spin {
	to {
		transform: rotate(360deg);
	}
}

:is(#plato-auth, [data-plato-auth]) .plato-auth__secondary {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 48px;
	margin: 0;
	padding: 13px 24px;
	border: 1.5px solid var(--plato-border-input);
	border-radius: var(--plato-radius-pill);
	background: var(--plato-surface-card);
	box-shadow: none;
	color: var(--plato-text-secondary);
	font-family: var(--plato-font-body);
	font-size: 16px;
	font-weight: 600;
	line-height: 1.2;
	letter-spacing: 0;
	text-decoration: none;
	text-transform: none;
	cursor: pointer;
	transition: border-color 0.18s ease, color 0.18s ease;
}

:is(#plato-auth, [data-plato-auth]) .plato-auth__secondary:hover {
	border-color: var(--plato-action);
	background: var(--plato-surface-card);
	color: var(--plato-action);
}

/* Lien d'action (Mot de passe oublié, Créer un compte) : un bouton qui a l'air d'un lien. */
:is(#plato-auth, [data-plato-auth]) .plato-auth__link {
	display: inline;
	min-height: 0;
	margin: 0;
	padding: 0;
	border: 0;
	background: none;
	box-shadow: none;
	color: var(--plato-action);
	font-family: inherit;
	font-size: 14px;
	font-weight: 600;
	line-height: inherit;
	letter-spacing: 0;
	text-align: left;
	text-decoration: underline;
	text-decoration-thickness: 1px;
	text-underline-offset: 3px;
	text-transform: none;
	cursor: pointer;
}

:is(#plato-auth, [data-plato-auth]) .plato-auth__link:hover {
	background: none;
	color: var(--plato-action-hover);
}

:is(#plato-auth, [data-plato-auth]) .plato-auth__note .plato-auth__link {
	font-size: inherit;
}

:is(#plato-auth, [data-plato-auth]) .plato-auth__actions {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 12px;
}

:is(#plato-auth, [data-plato-auth]) .plato-auth__actions .plato-auth__submit {
	margin: 0;
}

:is(#plato-auth, [data-plato-auth]) .plato-auth__inline-form {
	margin: 0;
	padding: 0;
}

/* ---- Textes d'accompagnement ---- */

:is(#plato-auth, [data-plato-auth]) .plato-auth__note,
:is(#plato-auth, [data-plato-auth]) .plato-auth__hint {
	color: var(--plato-text-secondary);
	font-size: 15px;
	line-height: 1.55;
}

:is(#plato-auth, [data-plato-auth]) .plato-auth__message {
	margin: 0 0 var(--plato-space-5);
	padding: 14px 18px;
	border-radius: 16px;
	background: var(--plato-framboise-50);
	color: var(--plato-framboise-800);
	font-size: 15px;
	font-weight: 500;
	line-height: 1.5;
}

:is(#plato-auth, [data-plato-auth]) .plato-auth__message-actions {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
	margin-top: 10px;
}

:is(#plato-auth, [data-plato-auth]) .plato-auth__message-action {
	min-height: 0;
	margin: 0;
	padding: 8px 16px;
	border: 1.5px solid var(--plato-framboise-200);
	border-radius: var(--plato-radius-pill);
	background: var(--plato-surface-card);
	box-shadow: none;
	color: var(--plato-action);
	font-family: var(--plato-font-body);
	font-size: 15px;
	font-weight: 600;
	line-height: 1.2;
	text-transform: none;
	cursor: pointer;
	transition: border-color 0.18s ease, background-color 0.18s ease;
}

:is(#plato-auth, [data-plato-auth]) .plato-auth__message-action:hover {
	border-color: var(--plato-action);
	background: var(--plato-surface-card);
	color: var(--plato-action-hover);
}

:is(#plato-auth, [data-plato-auth]) .plato-auth__message.is-success {
	background: var(--plato-lagon-50);
	color: var(--plato-lagon-800);
}

:is(#plato-auth, [data-plato-auth]) .plato-auth__welcome-text {
	padding: 16px 18px;
	border-radius: 16px;
	background: var(--plato-lagon-50);
	color: var(--plato-lagon-800);
	font-size: 16px;
	font-weight: 500;
	line-height: 1.5;
}

:is(#plato-auth, [data-plato-auth]) .plato-auth__help {
	margin-top: var(--plato-space-5);
	padding: 16px 20px;
	border: 1.5px solid var(--plato-framboise-100);
	border-radius: 20px;
	background: var(--plato-framboise-50);
	color: var(--plato-framboise-700);
	font-size: 15px;
	line-height: 1.5;
}

/* Champ piège : hors de l'écran plutôt que display:none, que certains robots repèrent. */
:is(#plato-auth, [data-plato-auth]) .plato-auth__trap {
	position: absolute;
	left: -9999px;
	width: 1px;
	height: 1px;
	overflow: hidden;
}

/* =========================================================================
 * Fenêtre modale Divi (attributs posés par auth.js à l'ouverture)
 *
 * Le fond grisé (section fixe) défile lui-même ; la ligne blanche garde sa
 * hauteur au lieu d'être comprimée et rognée. !important : il faut passer
 * devant les réglages de la section et de la ligne dans Divi.
 * ====================================================================== */

[data-plato-auth-overlay] {
	height: 100vh !important;
	height: 100dvh !important;
	max-height: 100vh !important;
	max-height: 100dvh !important;
	overflow-x: hidden !important;
	overflow-y: auto !important;
	overscroll-behavior: contain;
	-webkit-overflow-scrolling: touch;
	scrollbar-width: thin;
}

/* Centrée quand elle tient, collée en haut (et donc lisible) quand elle dépasse. */
[data-plato-auth-overlay] > [data-plato-auth-sheet] {
	flex-shrink: 0 !important;
	max-height: none !important;
	margin-top: auto !important;
	margin-bottom: auto !important;
}

/* Page figée derrière la fenêtre, sans saut quand sa barre de défilement disparaît. */
html.plato-modal-open,
html.plato-modal-open body {
	overflow: hidden !important;
}

html.plato-modal-open body {
	padding-right: var(--plato-scrollbar, 0px) !important;
}

@media (max-width: 480px) {
	/* Dans la fenêtre, la ligne blanche fait déjà office de carte : pas de carte dans la carte. */
	[data-plato-auth-overlay] :is(#plato-auth, [data-plato-auth]) .plato-auth__card {
		padding: 0;
		border: 0;
		border-radius: 0;
	}

	:is(#plato-auth, [data-plato-auth]) .plato-auth__switch {
		display: flex;
	}

	:is(#plato-auth, [data-plato-auth]) .plato-auth__switch-button {
		flex: 1;
		padding-inline: 10px;
		font-size: 15px;
	}

	:is(#plato-auth, [data-plato-auth]) .plato-auth__submit,
	:is(#plato-auth, [data-plato-auth]) .plato-auth__secondary {
		width: 100%;
	}
}

@media (prefers-reduced-motion: reduce) {
	:is(#plato-auth, [data-plato-auth]) *,
	:is(#plato-auth, [data-plato-auth]) *::before,
	:is(#plato-auth, [data-plato-auth]) *::after {
		transition: none !important;
		animation: none !important;
	}
}
