/*
Theme Name: Photographe Stratège
Theme URI: https://photographe-stratege.com
Author: Fred Marie
Author URI: https://photographe-stratege.com
Description: Thème blocs autonome du site Photographe Stratège. Fond blanc, cartes blanches à bord fin et coins arrondis, un accent orange brûlé pour les repères et les boutons, typographie système, grandes photos.
Requires at least: 6.6
Tested up to: 7.0
Requires PHP: 8.1
Version: 1.2.12
License: GNU General Public License v2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: photographe-stratege
Tags: block-patterns, full-site-editing, one-column, wide-blocks, custom-colors, editor-style, translation-ready
*/

/*
 * Direction « Boutique chaleureuse, en fond blanc » (piste M de la maquette).
 * Palette, typographie, boutons et rayons viennent de theme.json. Cette feuille
 * ne contient que ce que theme.json ne sait pas exprimer : le composant carte
 * (.ps-carte), les badges, le hero en deux colonnes, le bloc produit, les filtres,
 * la pagination, et l'habillage des gabarits WooCommerce (boutique, fiche, Mon espace).
 */

* {
	box-sizing: border-box;
}

body {
	-webkit-font-smoothing: antialiased;
}

h1,
h2,
h3,
h4,
.wp-block-post-title {
	text-wrap: balance;
}

a:focus-visible,
.wp-element-button:focus-visible,
button:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible {
	outline: 2px solid var(--wp--preset--color--contrast);
	outline-offset: 2px;
}

/* En-tête collant (uniquement sur le site, pas dans l'éditeur). */
.wp-site-blocks > header.wp-block-template-part {
	position: sticky;
	top: 0;
	z-index: 5;
	background: var(--wp--preset--color--base);
}

/* ------------------------------------------------------------------------
 * Repères : surtitre, badge orange à pastille, pastilles de statut.
 * --------------------------------------------------------------------- */

.ps-surtitre,
.ps-surtitre a {
	letter-spacing: 0.02em;
	text-decoration: none;
}

/* Badge : « Qualiopi », « Le livre », « Épisode 70 · 1 h 09 », rubrique d'un guide. */
.ps-badge,
.ps-badge a {
	color: var(--wp--preset--color--accent);
	text-decoration: none;
}

.ps-badge {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	font-size: 12px;
	font-weight: 600;
	letter-spacing: 0.02em;
	line-height: 1.3;
}

.ps-badge::before {
	content: "";
	width: 7px;
	height: 7px;
	border-radius: 50%;
	background: currentColor;
	flex: none;
}

.ps-badge a:hover {
	text-decoration: underline;
	text-underline-offset: 3px;
}

.ps-badge .wp-block-post-terms__separator {
	color: var(--wp--preset--color--muted);
}

/* Pastilles de statut : vert, orange foncé, rouge, réservées aux états. */
.ps-statut {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	font-weight: 600;
}

.ps-statut::before {
	content: "";
	width: 8px;
	height: 8px;
	border-radius: 50%;
	background: currentColor;
	flex: none;
}

.ps-statut-ok {
	color: var(--wp--preset--color--ok);
}

.ps-statut-attention {
	color: var(--wp--preset--color--attention);
}

.ps-statut-erreur {
	color: var(--wp--preset--color--erreur);
}

.ps-chiffre,
.ps-prix,
.ps-carte-prix,
.price,
.woocommerce-Price-amount {
	font-variant-numeric: tabular-nums;
}

/* ------------------------------------------------------------------------
 * En-tête de page : fil d'Ariane, titre, chapeau.
 * --------------------------------------------------------------------- */

.ps-fil-ariane {
	display: flex;
	flex-wrap: wrap;
	gap: 6px;
	color: var(--wp--preset--color--muted);
	font-size: var(--wp--preset--font-size--small);
}

.ps-fil-ariane a {
	text-decoration: none;
}

.ps-fil-ariane a:hover {
	text-decoration: underline;
	text-underline-offset: 3px;
}

.ps-fil-sep {
	color: var(--wp--preset--color--line);
}

.ps-fil-courant {
	color: var(--wp--preset--color--contrast);
}

.ps-chapeau {
	max-width: 60ch;
}

.ps-ligne-meta {
	color: var(--wp--preset--color--muted);
	font-size: var(--wp--preset--font-size--small);
}

/* ------------------------------------------------------------------------
 * Hero de l'accueil : texte à gauche, photo arrondie à droite.
 * --------------------------------------------------------------------- */

.ps-hero-texte h1 {
	font-size: clamp(30px, 3.4vw, 40px);
}

.ps-hero-texte p {
	max-width: 48ch;
}

.ps-hero-image img {
	aspect-ratio: 4 / 3;
	object-fit: cover;
	width: 100%;
	height: auto;
	border-radius: var(--wp--custom--radius);
}

.ps-hero-image figcaption {
	text-align: left;
	margin-top: 8px;
}

/* ------------------------------------------------------------------------
 * Cartes : fond blanc, bord fin, coins arrondis, image 16/10 en haut.
 * Même composant pour les guides, les épisodes, les formations, les produits
 * et les quatre entrées de l'accueil.
 * --------------------------------------------------------------------- */

.ps-grille .wp-block-post {
	display: flex;
}

.ps-carte {
	display: flex;
	flex-direction: column;
	width: 100%;
	background: var(--wp--preset--color--base);
	border: 1px solid var(--wp--preset--color--line);
	border-radius: var(--wp--custom--radius);
	overflow: hidden;
	transition: border-color 0.2s ease;
}

.ps-carte:hover,
.ps-carte:focus-within {
	border-color: var(--wp--preset--color--muted);
}

/* Variante sombre : les cartes prennent le fond doux. */
.ps-carte,
.ps-produit {
	background: var(--wp--preset--color--base);
}

.ps-carte-image,
.ps-carte > .wp-block-post-featured-image,
.ps-carte > .wp-block-image,
.ps-carte > .wp-block-woocommerce-product-image {
	display: block;
	margin: 0;
	aspect-ratio: 16 / 10;
	overflow: hidden;
	background: var(--wp--preset--color--soft);
}

.ps-carte-image img,
.ps-carte > .wp-block-post-featured-image img,
.ps-carte > .wp-block-image img,
.ps-carte > .wp-block-woocommerce-product-image img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	border-radius: 0;
	transition: transform 0.5s ease;
}

.ps-carte-image a,
.ps-image-produit-bloc a,
.ps-carte-produit-image {
	display: block;
	height: 100%;
	text-decoration: none;
	color: inherit;
}

.ps-carte:hover .ps-carte-image img {
	transform: scale(1.03);
}

/* Cartes de produits : le lien du visuel garde la hauteur du visuel, le corps prend le reste (pas d'espace entre visuel et titre). */
.ps-carte > .ps-carte-produit-image {
	height: auto;
	flex: none;
}

/* Épisodes : pochette carrée. */
.ps-carte-episode .ps-carte-image,
.ps-carte-episode > .wp-block-post-featured-image,
.ps-carte .ps-pochette-episode {
	aspect-ratio: 1 / 1;
}

/* En-tête typographique quand il n'y a pas d'image : fond doux, surtitre orange. */
.ps-carte-entete {
	display: grid;
	place-items: center;
	align-content: center;
	padding: 16px;
	text-align: center;
	background: var(--wp--preset--color--soft);
}

.ps-carte-entete a {
	display: grid;
	place-items: center;
	width: 100%;
	height: 100%;
	text-decoration: none;
}

.ps-carte-entete-texte {
	color: var(--wp--preset--color--accent);
	font-weight: 700;
	font-size: 22px;
	letter-spacing: -0.02em;
	line-height: 1.15;
	text-wrap: balance;
}

.ps-carte-entete-sous {
	display: block;
	margin-top: 6px;
	color: var(--wp--preset--color--muted);
	font-size: var(--wp--preset--font-size--small);
	font-weight: 500;
	letter-spacing: 0;
}

.ps-carte-entete .ps-chiffre {
	color: var(--wp--preset--color--accent);
	font-size: clamp(44px, 5vw, 60px);
	font-weight: 700;
	letter-spacing: -0.04em;
	line-height: 1;
}

/* Corps de carte. */
.ps-carte-corps {
	display: flex;
	flex-direction: column;
	flex: 1;
	gap: 6px;
	padding: 14px 16px 16px;
}

.ps-carte-corps > * {
	margin: 0;
}

.ps-carte .wp-block-post-title,
.ps-carte-titre {
	font-size: 16px;
	line-height: 1.3;
	font-weight: 650;
	letter-spacing: -0.02em;
}

.ps-carte .wp-block-post-title a,
.ps-carte-titre a,
.ps-carte h3 a {
	text-decoration: none;
}

.ps-carte .wp-block-post-title a:hover,
.ps-carte-titre a:hover,
.ps-carte h3 a:hover {
	text-decoration: underline;
	text-underline-offset: 3px;
}

.ps-carte .wp-block-post-excerpt,
.ps-carte-texte,
.ps-carte-meta {
	color: var(--wp--preset--color--muted);
	font-size: 14px;
	line-height: 1.5;
}

.ps-carte .wp-block-post-excerpt p {
	margin: 0;
}

.ps-carte .wp-block-post-date,
.ps-carte-pied {
	margin-top: auto;
	padding-top: 8px;
}

/* Pied de carte : prix à gauche, bouton à droite. */
.ps-carte-pied {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	flex-wrap: wrap;
}

.ps-carte-prix,
.ps-carte .wp-block-woocommerce-product-price,
.ps-carte .wp-block-woocommerce-product-price .price {
	font-weight: 700;
	font-size: var(--wp--preset--font-size--medium);
	color: var(--wp--preset--color--contrast);
	margin: 0;
}

.ps-carte .wp-block-woocommerce-product-price del,
.ps-carte .wp-block-woocommerce-product-price del .woocommerce-Price-amount {
	color: var(--wp--preset--color--muted);
	font-weight: 500;
}

.ps-carte-pied .wp-element-button,
.ps-carte .wp-block-woocommerce-product-button .wp-element-button,
.ps-bouton-petit .wp-element-button,
.ps-bouton-petit.wp-element-button {
	min-height: 32px;
	padding: 6px 14px;
	font-size: var(--wp--preset--font-size--small);
	line-height: 1.2;
}

.ps-carte .wp-block-woocommerce-product-button {
	margin: 0;
	width: auto;
}

.ps-carte-actions {
	display: flex;
	gap: 8px;
	flex-wrap: wrap;
	justify-content: flex-end;
	margin-left: auto;
}

.ps-couverture-courte .ps-couverture-titre {
	color: var(--wp--preset--color--accent);
}

/* Bouton en contour (variante outline du bloc Bouton et liens PHP). */
.is-style-outline > .wp-block-button__link,
.wp-block-button__link.is-style-outline,
.ps-bouton-contour {
	background: transparent;
	color: var(--wp--preset--color--contrast);
	border: 1px solid var(--wp--preset--color--contrast);
}

.is-style-outline > .wp-block-button__link:hover,
.wp-block-button__link.is-style-outline:hover,
.ps-bouton-contour:hover {
	background: var(--wp--preset--color--soft);
	color: var(--wp--preset--color--contrast);
	border-color: var(--wp--preset--color--contrast);
}

/* Lien « Voir » en pied de carte, quand il n'y a pas de bouton. */
.ps-aller a {
	text-decoration: underline;
	text-underline-offset: 3px;
}

.ps-aller a:hover {
	color: var(--wp--preset--color--accent);
}

/* ------------------------------------------------------------------------
 * Filtres (rubriques, catégories de produits) et pagination.
 * --------------------------------------------------------------------- */

.ps-filtres {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
}

.ps-filtres a {
	display: inline-flex;
	align-items: center;
	min-height: 32px;
	padding: 4px 12px;
	border: 1px solid var(--wp--preset--color--line);
	border-radius: 999px;
	font-size: var(--wp--preset--font-size--small);
	font-weight: 600;
	color: var(--wp--preset--color--muted);
	text-decoration: none;
	background: var(--wp--preset--color--base);
}

.ps-filtres a:hover {
	color: var(--wp--preset--color--contrast);
	border-color: var(--wp--preset--color--contrast);
}

.ps-filtres a[aria-current="page"] {
	color: var(--wp--preset--color--base);
	background: var(--wp--preset--color--contrast);
	border-color: var(--wp--preset--color--contrast);
}

.ps-pagination {
	font-variant-numeric: tabular-nums;
}

.ps-pagination .wp-block-query-pagination-numbers .page-numbers {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 36px;
	min-height: 36px;
	padding: 0 8px;
	border-radius: 8px;
	text-decoration: none;
}

.ps-pagination .wp-block-query-pagination-numbers .page-numbers.current {
	background: var(--wp--preset--color--soft);
	color: var(--wp--preset--color--contrast);
}

.ps-pagination .wp-block-query-pagination-numbers a.page-numbers:hover {
	background: var(--wp--preset--color--soft);
}

/* ------------------------------------------------------------------------
 * Bloc produit (bandeau livre) : couverture 2/3, texte, prix et bouton à droite.
 * --------------------------------------------------------------------- */

.ps-produit {
	display: grid;
	grid-template-columns: 140px 1fr auto;
	gap: 24px;
	align-items: center;
	padding: 18px;
	border: 1px solid var(--wp--preset--color--line);
	border-radius: var(--wp--custom--radius);
}

.ps-produit > * {
	margin: 0;
}

.ps-produit > a {
	text-decoration: none;
	color: inherit;
}

.ps-produit-couverture img,
.ps-produit-couverture.ps-couverture {
	display: block;
	width: 100%;
	height: auto;
	aspect-ratio: 2 / 3;
	object-fit: cover;
	border-radius: 6px;
}

.ps-produit-couverture.ps-couverture {
	display: grid;
	padding: 12px;
}

.ps-produit-couverture .ps-couverture-titre {
	font-size: 17px;
}

.ps-fiche-livre-couverture.ps-couverture {
	aspect-ratio: 2 / 3;
	border-radius: var(--wp--custom--radius);
}

.ps-fiche-livre-couverture .ps-couverture-titre {
	font-size: var(--wp--preset--font-size--xx-large);
}

.ps-produit-texte h2,
.ps-produit-texte h3 {
	font-size: var(--wp--preset--font-size--x-large);
}

.ps-produit-texte p {
	max-width: 56ch;
}

.ps-produit-texte h2 a,
.ps-produit-texte h3 a {
	text-decoration: none;
}

.ps-produit-texte h2 a:hover,
.ps-produit-texte h3 a:hover {
	text-decoration: underline;
	text-underline-offset: 3px;
}

.ps-produit-achat {
	display: grid;
	gap: 8px;
	justify-items: end;
	text-align: right;
}

.ps-produit-achat p {
	margin: 0;
	font-weight: 700;
	white-space: nowrap;
}

/* ------------------------------------------------------------------------
 * Podcast : bandeau sur fond doux, pochette, plateformes d'écoute.
 * --------------------------------------------------------------------- */

.ps-pochette-podcast img,
.ps-pochette img,
.ps-pochette-episode img {
	border-radius: var(--wp--custom--radius);
}

.ps-bandeau-podcast-ligne {
	align-items: center;
}

.ps-plateformes .wp-block-button__link {
	min-height: 32px;
}

.ps-colonne-pochette .wp-block-post-featured-image {
	margin: 0;
}

/* Épisode sans pochette : en-tête typographique carré à la place de l'image. */
.ps-colonne-pochette .ps-carte-entete {
	aspect-ratio: 1 / 1;
	border-radius: var(--wp--custom--radius);
}

/* Vidéo YouTube et lecteur Spotify de la page Podcast : coins arrondis sur le cadre. */
.ps-video-podcast .wp-block-embed__wrapper,
.ps-video-podcast iframe {
	border-radius: var(--wp--custom--radius);
	overflow: hidden;
}

.ps-lecteur-spotify .wp-block-embed__wrapper,
.ps-lecteur-spotify iframe {
	border-radius: 12px;
	overflow: hidden;
}

.ps-section-spotify h2 a {
	text-decoration: underline;
	text-underline-offset: 4px;
}

/* ------------------------------------------------------------------------
 * Liste compacte des épisodes : une rangée par épisode dans une carte blanche,
 * pochette carrée 72 px à gauche, badge « Épisode N · durée », titre, date.
 * --------------------------------------------------------------------- */

.ps-liste-episodes-compacte .wp-block-post {
	display: flex;
}

.ps-liste-episodes-compacte .ps-episode-ligne {
	display: grid;
	grid-template-columns: 72px 1fr;
	align-items: center;
	gap: 16px;
	padding: 12px 16px 12px 12px;
}

/* La pochette : carrée, 72 px, coins 8 px, jamais le cadre 16/10 des cartes. */
.ps-liste-episodes-compacte .ps-episode-ligne > .wp-block-post-featured-image,
.ps-liste-episodes-compacte .ps-episode-ligne-pochette {
	width: 72px;
	height: 72px;
	aspect-ratio: 1 / 1;
	margin: 0;
	border-radius: 8px;
	overflow: hidden;
}

.ps-liste-episodes-compacte .ps-episode-ligne-pochette img {
	width: 72px;
	height: 72px;
	border-radius: 8px;
}

/* Sans pochette : l'en-tête typographique carré, réduit à la taille de la vignette. */
.ps-liste-episodes-compacte .ps-episode-ligne .ps-carte-entete {
	padding: 6px;
}

.ps-liste-episodes-compacte .ps-episode-ligne .ps-carte-entete-texte {
	font-size: 11px;
	letter-spacing: 0;
}

.ps-liste-episodes-compacte .ps-episode-ligne-corps {
	display: flex;
	flex-direction: column;
	gap: 4px;
	min-width: 0;
}

.ps-liste-episodes-compacte .ps-episode-ligne-corps > * {
	margin: 0;
}

.ps-liste-episodes-compacte .ps-episode-ligne .wp-block-post-title {
	font-size: 16px;
	font-weight: 600;
	line-height: 1.3;
	letter-spacing: -0.01em;
}

.ps-liste-episodes-compacte .ps-episode-ligne .wp-block-post-date {
	margin-top: 0;
	padding-top: 0;
	color: var(--wp--preset--color--muted);
	font-size: 13px;
	line-height: 1.4;
}

/* ------------------------------------------------------------------------
 * Article, épisode, page : image, contenu, navigation.
 * --------------------------------------------------------------------- */

.ps-image-article img,
.wp-block-post-featured-image.alignwide img {
	border-radius: var(--wp--custom--radius);
}

.ps-contenu-article > * {
	max-width: var(--wp--custom--reading-width, 65ch);
}

.ps-contenu-article > .alignwide,
.ps-contenu-article > .alignfull,
.ps-contenu-article > .wp-block-image.alignwide {
	max-width: none;
}

.ps-contenu-article img {
	border-radius: var(--wp--custom--radius);
}

.ps-nav-articles .wp-block-post-navigation-link {
	max-width: 48%;
}

.ps-nav-articles .post-navigation-link__label {
	display: block;
	color: var(--wp--preset--color--muted);
	font-size: var(--wp--preset--font-size--small);
	font-weight: 500;
	margin-bottom: 4px;
}

.ps-nav-articles a {
	text-decoration: none;
}

.ps-nav-articles a:hover {
	text-decoration: underline;
	text-underline-offset: 3px;
}

/* Formulaire de recherche. */
.wp-block-search__input {
	border: 1px solid var(--wp--preset--color--line);
	border-radius: 8px;
	padding: 10px 14px;
	font: inherit;
	background: var(--wp--preset--color--base);
	color: var(--wp--preset--color--contrast);
}

.wp-block-search__button {
	border-radius: 8px;
}

/* ------------------------------------------------------------------------
 * WooCommerce : boutons, prix, images, fiche produit, boutique, Mon espace.
 * --------------------------------------------------------------------- */

/* Boutons des gabarits classiques et des blocs : orange, texte blanc, 8 px. */
.woocommerce .button,
.woocommerce a.button,
.woocommerce button.button,
.woocommerce input.button,
.woocommerce #respond input#submit,
.woocommerce a.button.alt,
.woocommerce button.button.alt,
.woocommerce input.button.alt,
.woocommerce button.button:disabled,
.woocommerce button.button:disabled[disabled],
.wc-block-components-button,
.wc-block-components-checkout-place-order-button,
.pmpro_btn,
.pmpro_btn:link,
.pmpro .pmpro_btn {
	background: var(--wp--preset--color--accent);
	color: var(--wp--preset--color--on-accent);
	border: 1px solid var(--wp--preset--color--accent);
	border-radius: 8px;
	font-weight: 600;
	font-family: inherit;
	font-size: var(--wp--preset--font-size--medium);
	min-height: 44px;
	padding: 0 20px;
	line-height: 1.2;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	text-decoration: none;
	cursor: pointer;
}

.woocommerce .button:hover,
.woocommerce a.button:hover,
.woocommerce button.button:hover,
.woocommerce input.button:hover,
.woocommerce a.button.alt:hover,
.woocommerce button.button.alt:hover,
.woocommerce input.button.alt:hover,
.wc-block-components-button:hover,
.pmpro_btn:hover,
.pmpro .pmpro_btn:hover {
	background: #c84a17;
	color: var(--wp--preset--color--on-accent);
	border-color: #c84a17;
}

/* Boutons secondaires des gabarits classiques (voir le panier, retour) en contour noir. */
.woocommerce .wc-forward:not(.checkout-button),
.woocommerce a.button.wc-backward,
.woocommerce .return-to-shop .button,
.pmpro_btn-cancel,
.pmpro .pmpro_btn-cancel {
	background: transparent;
	color: var(--wp--preset--color--contrast);
	border-color: var(--wp--preset--color--contrast);
}

.woocommerce .wc-forward:not(.checkout-button):hover,
.woocommerce a.button.wc-backward:hover,
.woocommerce .return-to-shop .button:hover,
.pmpro_btn-cancel:hover {
	background: var(--wp--preset--color--soft);
	color: var(--wp--preset--color--contrast);
	border-color: var(--wp--preset--color--contrast);
}

/* Prix. */
.woocommerce div.product p.price,
.woocommerce div.product span.price,
.woocommerce ul.products li.product .price,
.ps-prix-produit .price {
	color: var(--wp--preset--color--contrast);
	font-size: var(--wp--preset--font-size--x-large);
	font-weight: 700;
	font-variant-numeric: tabular-nums;
}

.woocommerce ul.products li.product .price {
	font-size: var(--wp--preset--font-size--medium);
}

.woocommerce div.product p.price del,
.ps-prix-produit del {
	color: var(--wp--preset--color--muted);
	font-weight: 500;
	opacity: 1;
}

/* Titres. */
.woocommerce div.product .product_title {
	font-size: var(--wp--preset--font-size--xx-large);
	letter-spacing: -0.02em;
	font-weight: 650;
	line-height: 1.1;
}

/* Grille classique (code court [products]) : mêmes cartes blanches. */
.woocommerce ul.products {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(270px, 1fr));
	gap: 24px;
	margin: 0;
	padding: 0;
}

.woocommerce ul.products::before,
.woocommerce ul.products::after {
	display: none;
}

.woocommerce ul.products li.product,
.woocommerce-page ul.products li.product,
.woocommerce ul.products[class*="columns-"] li.product,
.woocommerce-page ul.products[class*="columns-"] li.product,
.woocommerce ul.products[class*="columns-"] li.product.first,
.woocommerce ul.products[class*="columns-"] li.product.last {
	float: none;
	clear: none;
	width: auto;
	margin: 0;
	display: flex;
	flex-direction: column;
	background: var(--wp--preset--color--base);
	border: 1px solid var(--wp--preset--color--line);
	border-radius: var(--wp--custom--radius);
	overflow: hidden;
}

.woocommerce ul.products li.product a img,
.woocommerce ul.products li.product img {
	aspect-ratio: 16 / 10;
	object-fit: cover;
	width: 100%;
	margin: 0;
	border-radius: 0;
}

.woocommerce ul.products li.product > a:first-child,
.woocommerce ul.products li.product .ps-carte-image {
	display: block;
	text-decoration: none;
}

.woocommerce ul.products li.product .ps-badge {
	padding: 12px 16px 0;
	margin: 0;
}

.woocommerce ul.products li.product .ps-badge + .woocommerce-loop-product__title {
	padding-top: 6px;
}

.woocommerce ul.products li.product .woocommerce-loop-product__title,
.woocommerce ul.products li.product .woocommerce-loop-category__title {
	font-size: 16px;
	letter-spacing: -0.02em;
	font-weight: 650;
	line-height: 1.3;
	padding: 12px 16px 0;
}

.woocommerce ul.products li.product .price {
	padding: 0 16px;
	margin: 6px 0 0;
}

.woocommerce ul.products li.product .button {
	margin: auto 16px 16px;
	align-self: flex-start;
	min-height: 32px;
	padding: 6px 14px;
	font-size: var(--wp--preset--font-size--small);
}

.woocommerce ul.products li.product .onsale,
.woocommerce span.onsale {
	background: var(--wp--preset--color--accent);
	color: var(--wp--preset--color--on-accent);
	border-radius: 999px;
	min-height: 0;
	min-width: 0;
	padding: 4px 10px;
	font-size: 12px;
	font-weight: 600;
	line-height: 1.3;
	left: 12px;
	top: 12px;
	right: auto;
	margin: 0;
}

/* Pas d'étoiles ni d'avis. */
.woocommerce .star-rating,
.woocommerce-product-rating,
.woocommerce #reviews,
.wp-block-woocommerce-product-rating,
.wc-block-components-product-rating,
.wp-block-woocommerce-product-reviews {
	display: none !important;
}

/* Images de produit (grilles en blocs) : cadre 16/10 ; les livres y sont centrés en 2/3. */
.ps-image-produit-bloc {
	aspect-ratio: 16 / 10;
	overflow: hidden;
	background: var(--wp--preset--color--soft);
	margin: 0;
}

.ps-image-produit-bloc a {
	display: block;
	width: 100%;
	height: 100%;
}

.ps-image-produit-bloc img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	border-radius: 0;
}

/* Les photos de livres fournies (boutique DR) sont des vues 4/3 du livre posé : elles remplissent le cadre 16/10. */
.ps-image-produit-bloc.ps-ratio-2-3 img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: center;
}

/* Couverture typographique d'un produit sans image : fond doux, famille en orange, titre noir. */
.ps-couverture {
	display: grid;
	align-content: center;
	justify-items: center;
	gap: 8px;
	width: 100%;
	height: 100%;
	padding: 16px;
	text-align: center;
	background: var(--wp--preset--color--soft);
	color: var(--wp--preset--color--contrast);
}

.ps-couverture-famille {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	color: var(--wp--preset--color--accent);
	font-size: 12px;
	font-weight: 600;
	letter-spacing: 0.02em;
}

.ps-couverture-famille::before {
	content: "";
	width: 7px;
	height: 7px;
	border-radius: 50%;
	background: currentColor;
}

.ps-couverture-titre {
	font-weight: 700;
	font-size: 22px;
	letter-spacing: -0.02em;
	line-height: 1.15;
	text-wrap: balance;
}

/* Fiche produit en blocs. */
.ps-galerie-produit {
	border-radius: var(--wp--custom--radius);
	overflow: hidden;
	background: var(--wp--preset--color--soft);
}

.ps-galerie-produit.ps-ratio-2-3 > .ps-couverture {
	aspect-ratio: 2 / 3;
}

.ps-galerie-produit.ps-ratio-3-2 > .ps-couverture {
	aspect-ratio: 3 / 2;
}

.ps-galerie-produit .ps-couverture-titre {
	font-size: var(--wp--preset--font-size--xx-large);
}

.ps-galerie-produit img,
.woocommerce div.product div.images img {
	border-radius: var(--wp--custom--radius);
}

.ps-galerie-produit.ps-ratio-2-3 img {
	aspect-ratio: auto;
	width: 100%;
	height: auto;
}

.ps-fiche-produit .ps-fil-ariane-woo,
.woocommerce .woocommerce-breadcrumb {
	color: var(--wp--preset--color--muted);
	font-size: var(--wp--preset--font-size--small);
	margin: 0;
}

.ps-fiche-produit .ps-fil-ariane-woo a {
	text-decoration: none;
}

.ps-fiche-produit .ps-fil-ariane-woo a:hover {
	text-decoration: underline;
	text-underline-offset: 3px;
}

.ps-prix-produit {
	margin: 0;
}

.ps-port {
	color: var(--wp--preset--color--muted);
	font-size: var(--wp--preset--font-size--small);
	margin: 6px 0 0;
}

.ps-formulaire-achat form.cart,
.woocommerce div.product form.cart {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
	align-items: center;
	margin: 0;
}

.ps-formulaire-achat .quantity .qty,
.woocommerce div.product form.cart .quantity .qty {
	border: 1px solid var(--wp--preset--color--line);
	border-radius: 8px;
	min-height: 44px;
	width: 72px;
	font: inherit;
	text-align: center;
	background: var(--wp--preset--color--base);
	color: var(--wp--preset--color--contrast);
}

.ps-formulaire-achat .single_add_to_cart_button,
.woocommerce div.product form.cart .button {
	min-height: 44px;
	padding: 0 24px;
}

.ps-meta-produit,
.woocommerce div.product .product_meta,
.woocommerce .woocommerce-result-count {
	color: var(--wp--preset--color--muted);
	font-size: var(--wp--preset--font-size--small);
}

.woocommerce .woocommerce-ordering select {
	border: 1px solid var(--wp--preset--color--line);
	border-radius: 8px;
	padding: 8px 12px;
	font: inherit;
	background: var(--wp--preset--color--base);
	color: var(--wp--preset--color--contrast);
}

/* Messages. */
.woocommerce-message,
.woocommerce-info,
.woocommerce-error,
.wc-block-components-notice-banner {
	border-radius: var(--wp--custom--radius);
	border: 1px solid var(--wp--preset--color--line);
	border-top: 3px solid var(--wp--preset--color--contrast);
	background: var(--wp--preset--color--soft);
	color: var(--wp--preset--color--contrast);
	font-size: var(--wp--preset--font-size--medium);
}

.woocommerce-message::before,
.woocommerce-info::before {
	color: var(--wp--preset--color--contrast);
}

.woocommerce-error {
	border-top-color: var(--wp--preset--color--erreur);
}

.woocommerce-error::before {
	color: var(--wp--preset--color--erreur);
}

/* Mon espace (WooCommerce Mon compte) : onglets en haut, contenu dessous. */
.woocommerce-account .woocommerce {
	display: block;
}

.woocommerce-account .woocommerce-MyAccount-navigation,
.woocommerce-account .woocommerce-MyAccount-content {
	float: none;
	width: 100%;
}

.woocommerce-MyAccount-navigation ul {
	display: flex;
	flex-wrap: wrap;
	gap: 0 14px;
	margin: 0 0 var(--wp--preset--spacing--50);
	padding: 0;
	list-style: none;
	border-bottom: 1px solid var(--wp--preset--color--line);
}

.woocommerce-MyAccount-navigation li a {
	white-space: nowrap;
}

.woocommerce-MyAccount-navigation li {
	margin: 0;
	padding: 0;
}

.woocommerce-MyAccount-navigation li a {
	display: inline-block;
	padding: 10px 0 12px;
	margin-bottom: -1px;
	border-bottom: 2px solid transparent;
	color: var(--wp--preset--color--muted);
	font-weight: 600;
	font-size: var(--wp--preset--font-size--small);
	text-decoration: none;
}

.woocommerce-MyAccount-navigation li a:hover {
	color: var(--wp--preset--color--contrast);
}

.woocommerce-MyAccount-navigation li.is-active a {
	color: var(--wp--preset--color--contrast);
	border-bottom-color: var(--wp--preset--color--accent);
}

.woocommerce-MyAccount-content > p:first-child {
	font-size: var(--wp--preset--font-size--large);
}

/* Tableaux : commandes, téléchargements, panier, récapitulatif de commande. */
.woocommerce table.shop_table,
.pmpro table {
	width: 100%;
	border-collapse: separate;
	border-spacing: 0;
	border: 1px solid var(--wp--preset--color--line);
	border-radius: var(--wp--custom--radius);
	overflow: hidden;
	font-size: var(--wp--preset--font-size--medium);
	margin-bottom: var(--wp--preset--spacing--40);
}

.woocommerce table.shop_table th,
.woocommerce table.shop_table td,
.pmpro table th,
.pmpro table td {
	padding: 12px 14px;
	border: 0;
	border-bottom: 1px solid var(--wp--preset--color--line);
	text-align: left;
	vertical-align: middle;
}

.woocommerce table.shop_table thead th,
.woocommerce table.shop_table tfoot th,
.pmpro table thead th {
	background: var(--wp--preset--color--soft);
	color: var(--wp--preset--color--muted);
	font-size: var(--wp--preset--font-size--small);
	font-weight: 600;
	letter-spacing: 0.02em;
}

.woocommerce table.shop_table tbody tr:last-child td,
.woocommerce table.shop_table tbody tr:last-child th {
	border-bottom: 0;
}

.woocommerce table.shop_table td .button {
	min-height: 32px;
	padding: 6px 14px;
	font-size: var(--wp--preset--font-size--small);
}

.woocommerce-orders-table__cell-order-actions .button + .button {
	margin-left: 6px;
}

.woocommerce table.shop_table td.product-thumbnail img {
	width: 56px;
	border-radius: 6px;
}

/* Formulaires : connexion, adresses, compte, paiement. */
.woocommerce form .form-row label,
.pmpro label {
	font-weight: 600;
	font-size: var(--wp--preset--font-size--small);
	color: var(--wp--preset--color--contrast);
	margin-bottom: 4px;
	display: block;
}

.woocommerce form .form-row .required {
	color: var(--wp--preset--color--erreur);
	text-decoration: none;
}

.woocommerce form .form-row .input-text,
.woocommerce form .form-row select,
.woocommerce form .form-row textarea,
.woocommerce-Input,
.woocommerce .input-text,
.woocommerce select,
.pmpro input[type="text"],
.pmpro input[type="email"],
.pmpro input[type="password"],
.pmpro select,
.pmpro textarea,
.select2-container--default .select2-selection--single {
	width: 100%;
	min-height: 44px;
	padding: 10px 14px;
	border: 1px solid var(--wp--preset--color--line);
	border-radius: 8px;
	font: inherit;
	background: var(--wp--preset--color--base);
	color: var(--wp--preset--color--contrast);
	box-shadow: none;
}

.woocommerce form .form-row .input-text:focus,
.woocommerce form .form-row select:focus,
.woocommerce form .form-row textarea:focus {
	border-color: var(--wp--preset--color--contrast);
	outline: none;
}

.woocommerce form .form-row {
	margin-bottom: var(--wp--preset--spacing--30);
}

.woocommerce form.login,
.woocommerce form.register,
.woocommerce form.checkout_coupon,
.woocommerce form.lost_reset_password,
.woocommerce-EditAccountForm,
.woocommerce-address-fields,
.pmpro_card {
	max-width: 560px;
	padding: var(--wp--preset--spacing--50);
	border: 1px solid var(--wp--preset--color--line);
	border-radius: var(--wp--custom--radius);
	background: var(--wp--preset--color--base);
	margin: 0 0 var(--wp--preset--spacing--50);
}

.woocommerce form.login .woocommerce-form-login__rememberme {
	display: flex;
	align-items: center;
	gap: 8px;
	font-weight: 500;
	margin: 0 0 var(--wp--preset--spacing--30);
}

.woocommerce form.login .woocommerce-form-login__submit {
	width: 100%;
}

.woocommerce-LostPassword,
.woocommerce-privacy-policy-text {
	color: var(--wp--preset--color--muted);
	font-size: var(--wp--preset--font-size--small);
}

.woocommerce-password-strength,
.woocommerce-password-hint {
	font-size: var(--wp--preset--font-size--small);
}

.woocommerce-password-strength.strong {
	border-color: var(--wp--preset--color--ok);
}

.woocommerce-password-strength.short,
.woocommerce-password-strength.bad {
	border-color: var(--wp--preset--color--erreur);
}

.woocommerce-password-strength.good {
	border-color: var(--wp--preset--color--attention);
}

/* Adresses et commandes : encadrés. */
.woocommerce-Addresses .woocommerce-Address,
.woocommerce-customer-details address,
.woocommerce-order-details,
.woocommerce-order-overview {
	border: 1px solid var(--wp--preset--color--line);
	border-radius: var(--wp--custom--radius);
	padding: var(--wp--preset--spacing--40);
}

.woocommerce-order-overview {
	display: flex;
	flex-wrap: wrap;
	gap: var(--wp--preset--spacing--40);
	list-style: none;
	margin: 0 0 var(--wp--preset--spacing--50);
	font-size: var(--wp--preset--font-size--small);
	color: var(--wp--preset--color--muted);
}

.woocommerce-order-overview strong {
	display: block;
	color: var(--wp--preset--color--contrast);
	font-size: var(--wp--preset--font-size--medium);
}

/* Statuts de commande : couleurs réservées aux états. */
.woocommerce-orders-table__cell-order-status {
	font-weight: 600;
}

/* Paid Memberships Pro (pages d'accès restreint encore en place). */
.pmpro_card {
	max-width: none;
}

.pmpro_card_title svg {
	display: none;
}

/* ------------------------------------------------------------------------
 * Pied de page, largeurs de lecture.
 * --------------------------------------------------------------------- */

.ps-liste-nue {
	list-style: none;
	margin: 0;
}

.ps-liste-nue a {
	text-decoration: none;
}

.ps-liste-nue a:hover {
	color: var(--wp--preset--color--contrast);
	text-decoration: underline;
	text-underline-offset: 3px;
}

.ps-entrees-intro {
	max-width: 52ch;
}

.ps-texte-56 {
	max-width: 56ch;
}

/* En-tête : titre et entrées du menu sur une seule ligne. */
.ps-entete .wp-block-site-title,
.ps-menu .wp-block-navigation-item__content {
	white-space: nowrap;
}

.ps-entete-action {
	flex-shrink: 0;
}

/* ------------------------------------------------------------------------
 * Réduction des mouvements, réactivité (768 px, 390 px).
 * --------------------------------------------------------------------- */

@media (prefers-reduced-motion: reduce) {
	.ps-carte-image img,
	.ps-carte {
		transition: none;
	}

	.ps-carte:hover .ps-carte-image img {
		transform: none;
	}
}

@media (max-width: 960px) {
	.ps-entete {
		flex-wrap: wrap;
	}

	.ps-entete .ps-menu {
		order: 3;
		flex-basis: 100%;
		justify-content: flex-start;
	}
}

@media (max-width: 599px) {
	/* En-tête : marque, bouton du menu et « Mon espace » sur une seule ligne (le menu est en surimpression). */
	.ps-entete {
		flex-wrap: nowrap;
		gap: 12px;
	}

	.ps-entete .ps-menu {
		order: 0;
		flex-basis: auto;
	}

	.ps-entete .wp-block-site-title {
		white-space: normal;
		font-size: var(--wp--preset--font-size--medium);
		line-height: 1.2;
	}
}

@media (max-width: 781px) {
	/* Bloc produit : couverture au-dessus, achat en dessous. */
	.ps-produit {
		grid-template-columns: 120px 1fr;
	}

	.ps-produit-achat {
		grid-column: 1 / -1;
		justify-items: start;
		text-align: left;
	}

	.ps-produit-achat p {
		white-space: normal;
	}

	/* Bandeau podcast : pochette au-dessus du texte. */
	.ps-bandeau-podcast-ligne {
		flex-wrap: wrap;
	}

	.ps-bandeau-podcast-ligne .ps-pochette-podcast img {
		width: 160px !important;
	}

	.ps-nav-articles .wp-block-post-navigation-link {
		max-width: 100%;
	}

	.woocommerce table.shop_table_responsive tr td {
		border-bottom: 0;
		padding: 8px 14px;
	}

	.woocommerce table.shop_table_responsive tr td::before {
		color: var(--wp--preset--color--muted);
		font-weight: 600;
	}

	.woocommerce table.shop_table_responsive tr {
		display: block;
		border-bottom: 1px solid var(--wp--preset--color--line);
		padding: 6px 0;
	}
}

@media (max-width: 480px) {
	.ps-produit {
		grid-template-columns: 1fr;
	}

	/* Liste compacte des épisodes (390 px) : pochette 56 px, marges resserrées, titre 15 px. */
	.ps-liste-episodes-compacte .ps-episode-ligne {
		grid-template-columns: 56px 1fr;
		gap: 12px;
		padding: 10px 12px 10px 10px;
	}

	.ps-liste-episodes-compacte .ps-episode-ligne > .wp-block-post-featured-image,
	.ps-liste-episodes-compacte .ps-episode-ligne-pochette,
	.ps-liste-episodes-compacte .ps-episode-ligne-pochette img {
		width: 56px;
		height: 56px;
	}

	.ps-liste-episodes-compacte .ps-episode-ligne .wp-block-post-title {
		font-size: 15px;
	}

	.ps-produit-couverture {
		max-width: 140px;
	}

	.ps-carte-pied {
		align-items: flex-start;
	}

	.ps-hero-texte h1 {
		font-size: 30px;
	}

	.woocommerce ul.products {
		grid-template-columns: 1fr;
	}

	.woocommerce form.login,
	.woocommerce form.register,
	.woocommerce-EditAccountForm,
	.woocommerce-address-fields,
	.pmpro_card {
		padding: var(--wp--preset--spacing--40);
	}
}

/* Pochette d'épisode en tête d'article : carrée, jamais recadrée en 16/10. */
.ps-colonne-pochette .wp-block-post-featured-image.ps-carte-image,
.ps-colonne-pochette .wp-block-post-featured-image.ps-carte-image img {
	aspect-ratio: 1 / 1;
	height: auto;
}

/* ------------------------------------------------------------------------
 * Mon espace : tableau de bord en panneaux (crédits IPTC, formations, livres, commandes).
 * ---------------------------------------------------------------------- */
.ps-tableau-bord-bonjour {
	margin-bottom: var(--wp--preset--spacing--40);
}

.ps-tableau-bord {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 18px;
}

.ps-panneau {
	border: 1px solid var(--wp--preset--color--line);
	border-radius: var(--wp--custom--radius);
	padding: 22px 24px 24px;
	display: flex;
	flex-direction: column;
	gap: 10px;
}

.ps-panneau-titre {
	font-size: var(--wp--preset--font-size--large);
	margin: 0;
}

.ps-panneau-intro,
.ps-panneau-texte {
	color: var(--wp--preset--color--muted);
	font-size: var(--wp--preset--font-size--medium);
	margin: 0;
}

.ps-panneau-chiffre {
	font-size: var(--wp--preset--font-size--x-large);
	line-height: 1.1;
	margin: 0;
}

.ps-panneau-chiffre strong {
	color: var(--wp--preset--color--accent);
}

.ps-panneau-liste {
	list-style: none;
	margin: 4px 0 0;
	padding: 0;
	font-size: var(--wp--preset--font-size--medium);
}

.ps-panneau-liste li {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	gap: 4px 12px;
	padding: 9px 0;
	border-top: 1px solid var(--wp--preset--color--line);
}

.ps-panneau-liste li > span:first-child {
	flex: 1 1 200px;
	font-weight: 600;
}

.ps-panneau-liste li a {
	font-weight: 600;
}

.ps-panneau-meta {
	color: var(--wp--preset--color--muted);
	font-size: var(--wp--preset--font-size--small);
}

.ps-delta-plus {
	color: var(--wp--preset--color--ok);
}

.ps-delta-moins {
	color: var(--wp--preset--color--muted);
}

.ps-panneau-actions {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
	margin: auto 0 0;
	padding-top: 8px;
}

.ps-panneau-actions .wp-element-button {
	padding: 9px 16px;
	font-size: var(--wp--preset--font-size--small);
}

.ps-panneau-actions .wp-element-button.is-style-outline {
	background: transparent;
	color: var(--wp--preset--color--contrast);
	border: 1px solid var(--wp--preset--color--contrast);
}

.ps-panneau-actions .wp-element-button.is-style-outline:hover {
	background: var(--wp--preset--color--contrast);
	color: var(--wp--preset--color--base);
}

/* Page Collectif DR : repères dans l'encadré doux, cartes de texte seul. */
.ps-reperes .ps-chiffre {
	line-height: 1.1;
}

.ps-carte-texte-seule {
	height: 100%;
}

.ps-carte-texte-seule .ps-aller {
	margin-top: auto;
}

@media (max-width: 768px) {
	.ps-tableau-bord {
		grid-template-columns: 1fr;
	}
}

/* Lecteur audio d'un épisode (fiche créée depuis le flux Ausha). */
.ps-lecteur-episode {
	margin: 0 0 var(--wp--preset--spacing--40);
}

.ps-lecteur-episode audio {
	width: 100%;
	display: block;
}

/* ------------------------------------------------------------------------
 * Collectif DR : profils des photographes, reportages, carte des membres.
 * ---------------------------------------------------------------------- */
.ps-carte-membres {
	width: 100%;
	aspect-ratio: 16 / 9;
	height: auto;
	border-radius: var(--wp--custom--radius);
	border: 1px solid var(--wp--preset--color--line);
	overflow: hidden;
	background: var(--wp--preset--color--soft);
}

.ps-carte-profil {
	height: 220px;
	margin-top: var(--wp--preset--spacing--30);
}

.ps-marqueur span {
	display: block;
	width: 18px;
	height: 18px;
	border-radius: 50%;
	background: var(--wp--preset--color--accent);
	border: 3px solid #fff;
	box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2);
}

.ps-popup {
	font-size: 14px;
	line-height: 1.4;
}

.ps-popup img {
	display: block;
	width: 48px;
	height: 48px;
	border-radius: 50%;
	object-fit: cover;
	margin-bottom: 6px;
}

.ps-popup span {
	color: var(--wp--preset--color--muted);
}

.ps-popup a {
	color: var(--wp--preset--color--accent);
	font-weight: 600;
}

.leaflet-container {
	font-family: inherit;
}

.ps-fiche-photographe {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
	gap: 10px 24px;
	margin: var(--wp--preset--spacing--30) 0 0;
	padding: var(--wp--preset--spacing--30) 0 0;
	border-top: 1px solid var(--wp--preset--color--line);
	font-size: var(--wp--preset--font-size--medium);
}

.ps-fiche-photographe div {
	margin: 0;
}

.ps-fiche-photographe dt {
	color: var(--wp--preset--color--muted);
	font-size: var(--wp--preset--font-size--small);
}

.ps-fiche-photographe dd {
	margin: 0;
	font-weight: 600;
}

.ps-portrait img {
	object-fit: cover;
}

.ps-carte-photographe .ps-carte-image-portrait {
	display: block;
	overflow: hidden;
	aspect-ratio: 1 / 1;
	height: auto;
}

.ps-carte-photographe .ps-carte-image-portrait img {
	display: block;
	width: 100%;
	height: 100%;
	aspect-ratio: 1 / 1;
	object-fit: cover;
	transition: transform 0.4s ease;
}

.ps-carte-photographe:hover .ps-carte-image-portrait img,
.ps-carte-photographe:focus-within .ps-carte-image-portrait img {
	transform: scale(1.04);
}

@media (prefers-reduced-motion: reduce) {
	.ps-carte-image-portrait img {
		transition: none;
	}

	.ps-carte-photographe:hover .ps-carte-image-portrait img {
		transform: none;
	}
}

.ps-grille-reportages:not(.wp-block-query),
.ps-grille-photographes {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
	gap: 18px;
}

.ps-grille-photographes {
	grid-template-columns: repeat(4, 1fr);
}

@media (max-width: 900px) {
	.ps-grille-photographes {
		grid-template-columns: repeat(3, 1fr);
	}
}

@media (max-width: 600px) {
	.ps-grille-photographes {
		grid-template-columns: repeat(2, 1fr);
		gap: 12px;
	}
}

.ps-grille-reportages .ps-carte-image img {
	aspect-ratio: 3 / 2;
	object-fit: cover;
}

.ps-auteur-reportage {
	display: flex;
	align-items: center;
	gap: 14px;
	margin-top: var(--wp--preset--spacing--30);
}

.ps-auteur-portrait {
	width: 56px;
	height: 56px;
	border-radius: 50%;
	object-fit: cover;
}

.ps-auteur-reportage p {
	margin: 0;
}

.ps-auteur-nom {
	font-weight: 600;
}

.ps-contenu-reportage .wp-block-gallery {
	margin-top: var(--wp--preset--spacing--40);
}

@media (max-width: 768px) {
	.ps-carte-membres {
		aspect-ratio: 4 / 3;
	}
}

/* ------------------------------------------------------------------------
 * Espace du membre du Collectif DR (Mon profil, Mes séries) : formulaires lisibles, messages clairs.
 * ---------------------------------------------------------------------- */
.ps-espace-entete {
	display: flex;
	justify-content: space-between;
	align-items: flex-start;
	gap: 16px;
	flex-wrap: wrap;
	margin-bottom: var(--wp--preset--spacing--40);
}

.ps-espace-entete h2 {
	margin: 4px 0 6px;
}

.ps-espace-intro {
	color: var(--wp--preset--color--muted);
	margin: 0;
	max-width: 56ch;
}

.ps-message {
	border: 1px solid var(--wp--preset--color--line);
	border-left: 4px solid var(--wp--preset--color--ok);
	border-radius: var(--wp--custom--radius);
	padding: 12px 16px;
	margin: 0 0 var(--wp--preset--spacing--40);
}

.ps-message p,
.ps-message ul {
	margin: 0;
}

.ps-message ul {
	padding-left: 18px;
	margin-top: 6px;
}

.ps-message-erreur {
	border-left-color: var(--wp--preset--color--erreur);
}

.ps-formulaire fieldset {
	border: 1px solid var(--wp--preset--color--line);
	border-radius: var(--wp--custom--radius);
	padding: 18px 20px 8px;
	margin: 0 0 18px;
}

.ps-formulaire legend {
	font-weight: 600;
	padding: 0 6px;
}

.ps-formulaire p {
	margin: 0 0 14px;
}

.ps-formulaire label {
	display: block;
	font-weight: 600;
	font-size: var(--wp--preset--font-size--small);
	margin-bottom: 4px;
}

.ps-formulaire input[type=text],
.ps-formulaire input[type=tel],
.ps-formulaire input[type=email],
.ps-formulaire input[type=url],
.ps-formulaire textarea {
	width: 100%;
	padding: 9px 12px;
	border: 1px solid var(--wp--preset--color--line);
	border-radius: 8px;
	font: inherit;
	background: var(--wp--preset--color--base);
}

.ps-formulaire textarea {
	line-height: 1.5;
}

.ps-formulaire .ps-aide {
	display: block;
	font-weight: 400;
	color: var(--wp--preset--color--muted);
	font-size: var(--wp--preset--font-size--small);
	margin-top: 4px;
}

.ps-deux-colonnes {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
	gap: 0 18px;
}

.ps-cases {
	display: flex;
	flex-wrap: wrap;
	gap: 8px 18px;
	margin-bottom: 14px;
}

.ps-cases label {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	font-weight: 500;
	font-size: var(--wp--preset--font-size--medium);
}

.ps-portrait-champ {
	display: flex;
	gap: 18px;
	align-items: center;
	margin-bottom: 14px;
}

.ps-portrait-apercu {
	width: 120px;
	height: 120px;
	border-radius: 50%;
	background: var(--wp--preset--color--soft);
	overflow: hidden;
	display: grid;
	place-items: center;
	flex-shrink: 0;
	text-align: center;
	font-size: var(--wp--preset--font-size--small);
	color: var(--wp--preset--color--muted);
	padding: 8px;
}

.ps-portrait-apercu img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.ps-bouton-fichier {
	display: inline-block;
	cursor: pointer;
	padding: 9px 16px;
	font-size: var(--wp--preset--font-size--small);
	background: transparent;
	color: var(--wp--preset--color--contrast);
	border: 1px solid var(--wp--preset--color--contrast);
	border-radius: var(--wp--custom--radius);
	font-weight: 600;
}

.ps-bouton-fichier input {
	display: none;
}

.ps-carte-recherche {
	display: flex;
	gap: 8px;
	margin-bottom: 10px;
}

.ps-carte-recherche input {
	flex: 1;
	padding: 9px 12px;
	border: 1px solid var(--wp--preset--color--line);
	border-radius: 8px;
	font: inherit;
}

.ps-carte-edition {
	height: 320px;
}

.ps-formulaire-actions {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
	align-items: center;
	justify-content: flex-end;
}

.ps-formulaire-actions .wp-element-button {
	padding: 10px 18px;
	font-size: var(--wp--preset--font-size--small);
}

.ps-formulaire-actions .wp-element-button.is-style-outline,
.ps-espace .wp-element-button.is-style-outline {
	background: transparent;
	color: var(--wp--preset--color--contrast);
	border: 1px solid var(--wp--preset--color--contrast);
}

.ps-espace .wp-element-button {
	text-decoration: none;
	padding: 10px 18px;
	font-size: var(--wp--preset--font-size--small);
}

.ps-lien-discret {
	background: none;
	border: 0;
	padding: 0;
	font: inherit;
	color: var(--wp--preset--color--muted);
	text-decoration: underline;
	cursor: pointer;
	margin-right: auto;
}

.ps-lien-danger {
	color: var(--wp--preset--color--erreur);
}

.ps-formulaire-envoi {
	opacity: 0.6;
	pointer-events: none;
}

.ps-liste-series {
	list-style: none;
	margin: 0;
	padding: 0;
}

.ps-serie-ligne {
	display: grid;
	grid-template-columns: 120px 1fr auto;
	gap: 16px;
	align-items: center;
	padding: 14px 0;
	border-top: 1px solid var(--wp--preset--color--line);
}

.ps-serie-vignette {
	display: block;
	aspect-ratio: 3 / 2;
	background: var(--wp--preset--color--soft);
	border-radius: 8px;
	overflow: hidden;
}

.ps-serie-vignette img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.ps-serie-corps h3 {
	margin: 2px 0 4px;
	font-size: var(--wp--preset--font-size--medium);
}

.ps-serie-corps h3 a {
	text-decoration: none;
	color: inherit;
}

.ps-serie-actions {
	display: flex;
	gap: 12px;
	align-items: center;
}

.ps-photos {
	list-style: none;
	margin: 0 0 16px;
	padding: 0;
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
	gap: 12px;
}

.ps-photo {
	border: 1px solid var(--wp--preset--color--line);
	border-radius: 8px;
	overflow: hidden;
	background: var(--wp--preset--color--base);
	cursor: grab;
}

.ps-photo img {
	width: 100%;
	aspect-ratio: 1 / 1;
	object-fit: cover;
	display: block;
}

.ps-photo-glissee {
	opacity: 0.4;
}

.ps-photo-actions {
	padding: 6px 8px;
	display: flex;
	justify-content: space-between;
	gap: 6px;
	font-size: 12px;
}

.ps-photo-actions label {
	display: inline-flex;
	align-items: center;
	gap: 4px;
	font-weight: 500;
	margin: 0;
	font-size: 12px;
}

.ps-photo-retirer {
	color: var(--wp--preset--color--muted);
}

.ps-depot {
	border: 2px dashed var(--wp--preset--color--line);
	border-radius: var(--wp--custom--radius);
	padding: 18px;
	text-align: center;
	margin-bottom: 14px;
}

.ps-depot-survol {
	border-color: var(--wp--preset--color--accent);
	background: var(--wp--preset--color--soft);
}

.ps-depot-liste {
	list-style: none;
	margin: 10px 0 0;
	padding: 0;
	text-align: left;
	font-size: var(--wp--preset--font-size--small);
}

.ps-depot-liste .ps-erreur {
	color: var(--wp--preset--color--erreur);
}

.ps-depot-liste .ps-ok {
	color: var(--wp--preset--color--ok);
}

.ps-depot-total {
	font-weight: 600;
	margin-top: 6px;
}

@media (max-width: 768px) {
	.ps-serie-ligne {
		grid-template-columns: 90px 1fr;
	}

	.ps-serie-actions {
		grid-column: 1 / -1;
	}
}

.ps-photo-actions {
	flex-wrap: wrap;
}

/* ------------------------------------------------------------------------
 * Carnet des rédactions (membres du Collectif DR) : recherche, filtres, fiches, contacts au clic.
 * ---------------------------------------------------------------------- */
.ps-carnet-barre {
	display: flex;
	gap: 8px;
	margin-bottom: 10px;
}

.ps-carnet-barre input {
	flex: 1;
	padding: 11px 14px;
	border: 1px solid var(--wp--preset--color--line);
	border-radius: 8px;
	font: inherit;
	font-size: var(--wp--preset--font-size--medium);
}

.ps-carnet-barre .wp-element-button {
	padding: 10px 18px;
	font-size: var(--wp--preset--font-size--small);
}

.ps-carnet-filtres {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
	align-items: center;
	margin-bottom: var(--wp--preset--spacing--40);
}

.ps-carnet-filtres select {
	padding: 8px 10px;
	border: 1px solid var(--wp--preset--color--line);
	border-radius: 8px;
	font: inherit;
	font-size: var(--wp--preset--font-size--small);
	background: var(--wp--preset--color--base);
}

.ps-carnet-compte {
	margin: 0 0 8px;
}

.ps-carnet-liste {
	list-style: none;
	margin: 0;
	padding: 0;
}

.ps-carnet-fiche {
	border: 1px solid var(--wp--preset--color--line);
	border-radius: var(--wp--custom--radius);
	padding: 16px 18px;
	margin-bottom: 12px;
}

.ps-carnet-fiche-entete {
	display: flex;
	justify-content: space-between;
	gap: 12px;
	align-items: flex-start;
}

.ps-carnet-fiche h3 {
	margin: 2px 0 4px;
	font-size: var(--wp--preset--font-size--large);
}

.ps-carnet-meta {
	color: var(--wp--preset--color--muted);
	font-size: var(--wp--preset--font-size--small);
	margin: 0;
}

.ps-carnet-fiche-corps {
	margin-top: 10px;
	font-size: var(--wp--preset--font-size--medium);
}

.ps-carnet-fiche-corps p {
	margin: 0 0 6px;
}

.ps-carnet-libelle {
	color: var(--wp--preset--color--muted);
	font-weight: 600;
	font-size: var(--wp--preset--font-size--small);
}

.ps-carnet-afficher {
	flex-shrink: 0;
	padding: 8px 14px;
	font-size: var(--wp--preset--font-size--small);
	background: transparent;
	color: var(--wp--preset--color--contrast);
	border: 1px solid var(--wp--preset--color--contrast);
	cursor: pointer;
}

.ps-carnet-contacts {
	list-style: none;
	margin: 12px 0 0;
	padding: 12px 0 0;
	border-top: 1px solid var(--wp--preset--color--line);
	font-size: var(--wp--preset--font-size--medium);
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
	gap: 10px 18px;
}

.ps-carnet-fonction,
.ps-carnet-note {
	color: var(--wp--preset--color--muted);
	font-size: var(--wp--preset--font-size--small);
}

.ps-carnet-erreur {
	color: var(--wp--preset--color--erreur);
}

/* Carnet : mosaïque de logos, fiche ouverte, logo dans la fiche. */
.ps-carnet-mosaique { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 10px; margin: 0 0 var(--wp--preset--spacing--50); }
.ps-carnet-tuile { display: flex; flex-direction: column; align-items: center; gap: 8px; padding: 14px 10px 12px; border: 1px solid var(--wp--preset--color--line); border-radius: var(--wp--custom--radius, 6px); background: #fff; text-decoration: none; color: inherit; transition: border-color .15s ease, transform .15s ease; }
.ps-carnet-tuile:hover, .ps-carnet-tuile:focus-visible { border-color: var(--wp--preset--color--accent); transform: translateY(-2px); }
.ps-carnet-tuile.est-ouverte { border-color: var(--wp--preset--color--accent); box-shadow: 0 0 0 2px var(--wp--preset--color--accent); }
.ps-carnet-tuile-logo { display: flex; align-items: center; justify-content: center; width: 100%; height: 56px; }
.ps-carnet-tuile-logo img { max-width: 100%; max-height: 56px; object-fit: contain; }
.ps-carnet-tuile-texte { font-weight: 700; font-size: 15px; text-align: center; line-height: 1.15; color: var(--wp--preset--color--contrast); }
.ps-carnet-tuile-nom { font-size: 12px; text-align: center; color: var(--wp--preset--color--muted); line-height: 1.25; }
.ps-carnet-tuile-nom small { display: block; font-size: 11px; }
.ps-carnet-fiche-logo { flex: 0 0 110px; display: flex; align-items: center; justify-content: center; height: 70px; margin-right: 14px; }
.ps-carnet-fiche-logo img { max-width: 110px; max-height: 70px; object-fit: contain; }
.ps-carnet-fiche-complete { border-color: var(--wp--preset--color--accent); }
.ps-carnet-themes { display: flex; flex-wrap: wrap; gap: 6px; margin: 6px 0 0; }
.ps-carnet-themes a { display: inline-block; padding: 2px 10px; border: 1px solid var(--wp--preset--color--line); border-radius: 20px; font-size: 12px; text-decoration: none; background: var(--wp--preset--color--soft); color: inherit; }
.ps-carnet-themes a:hover { border-color: var(--wp--preset--color--accent); }
.ps-carnet-vue { margin-left: auto; }
.ps-carnet-vignettes { display: flex; flex-wrap: wrap; gap: 6px; margin: 10px 0 2px; }
.ps-vignette { display: inline-flex; align-items: center; gap: 6px; padding: 4px 10px; border-radius: 20px; font-size: 13px; font-weight: 600; line-height: 1.2; border: 1px solid transparent; }
.ps-vignette svg { flex: 0 0 auto; }
.ps-vignette-gris { background: var(--wp--preset--color--soft); color: var(--wp--preset--color--muted); border-color: var(--wp--preset--color--line); }
.ps-vignette-bleu { background: #e8f0fb; color: #1f4e96; }
.ps-vignette-vert { background: #e6f4ea; color: #1e6b3a; }
.ps-vignette-orange { background: #fdeee4; color: #a8420f; }
.ps-vignette-rouge { background: #fbe9e7; color: #9b2c1f; }
.ps-vignette-niveau { display: inline-flex; gap: 3px; margin-left: 2px; }
.ps-vignette-niveau i { display: inline-block; width: 7px; height: 7px; border-radius: 50%; background: currentColor; opacity: .25; }
.ps-vignette-niveau i.plein { opacity: 1; }
.ps-carnet-pages {
	display: flex;
	justify-content: space-between;
	gap: 10px;
	margin-top: var(--wp--preset--spacing--40);
}

.ps-carnet-pied {
	color: var(--wp--preset--color--muted);
	font-size: var(--wp--preset--font-size--small);
	margin-top: var(--wp--preset--spacing--50);
}

/* À l'impression, le nom du membre apparaît sur chaque page et les boutons disparaissent. */
@media print {
	.ps-carnet::before {
		content: "Carnet des rédactions du Collectif DR, confidentiel. Consulté par " attr(data-membre) ".";
		display: block;
		position: fixed;
		top: 0;
		left: 0;
		right: 0;
		font-size: 10px;
		color: #777;
	}

	.ps-carnet-recherche,
	.ps-carnet-afficher,
	.ps-carnet-pages {
		display: none;
	}
}

/* Vitrine du Collectif DR : filtres de reportages, signature des cartes, galerie des parutions, liste Mes parutions. */
.ps-filtres-reportages {
	display: flex;
	flex-wrap: wrap;
	gap: 6px 8px;
	margin-bottom: var(--wp--preset--spacing--40);
}

.ps-filtres-reportages a {
	display: inline-block;
	padding: 6px 12px;
	border: 1px solid var(--wp--preset--color--line);
	border-radius: 999px;
	font-size: var(--wp--preset--font-size--small);
	font-weight: 600;
	text-decoration: none;
	color: var(--wp--preset--color--contrast);
}

.ps-filtres-reportages a span {
	color: var(--wp--preset--color--muted);
	font-weight: 400;
	margin-left: 4px;
}

.ps-filtres-reportages a[aria-current="page"] {
	background: var(--wp--preset--color--contrast);
	color: var(--wp--preset--color--base);
	border-color: var(--wp--preset--color--contrast);
}

.ps-filtres-reportages a[aria-current="page"] span {
	color: var(--wp--preset--color--base);
}

.ps-carte-signature {
	color: var(--wp--preset--color--muted);
}

.ps-carte-signature .wp-block-post-author-name {
	font-weight: 600;
	color: var(--wp--preset--color--contrast);
}

.ps-parutions .wp-block-image img {
	aspect-ratio: 3 / 4;
	object-fit: cover;
	border-radius: 8px;
	background: var(--wp--preset--color--soft);
}

.ps-parutions .wp-block-image figcaption {
	font-size: var(--wp--preset--font-size--small);
	color: var(--wp--preset--color--muted);
}

.ps-parutions-liste {
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
	gap: 14px;
}

.ps-parutions-liste img {
	width: 100%;
	aspect-ratio: 3 / 4;
	object-fit: cover;
	border-radius: 8px;
}

.ps-parutions-liste p {
	font-size: var(--wp--preset--font-size--small);
	margin: 6px 0;
}

.ps-formulaire-inline {
	display: inline;
}

.ps-cases-themes {
	max-height: 180px;
	overflow: auto;
	border: 1px solid var(--wp--preset--color--line);
	border-radius: 8px;
	padding: 10px 12px;
}

.ps-manifeste h2 {
	margin-top: var(--wp--preset--spacing--40);
}

/* Galerie des parutions : légende sous l'image, pas en surimpression. */
.ps-parutions .wp-block-image figcaption {
	position: static;
	background: none;
	color: var(--wp--preset--color--muted);
	padding: 6px 0 0;
	text-align: left;
	text-shadow: none;
}

/* Envoi PixPalace : réglages repliables, grille des photos avec état, saisie IPTC, progression. */
.ps-pixpalace-reglages {
	border: 1px solid var(--wp--preset--color--line);
	border-radius: var(--wp--custom--radius);
	padding: 12px 18px;
	margin-bottom: var(--wp--preset--spacing--40);
}

.ps-pixpalace-reglages summary {
	cursor: pointer;
	font-weight: 600;
}

.ps-pixpalace-reglages .ps-formulaire {
	margin-top: 14px;
}

.ps-case-ligne {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	font-weight: 500;
}

.ps-pixpalace-choix {
	display: flex;
	gap: 10px;
	align-items: center;
	margin-bottom: var(--wp--preset--spacing--40);
}

.ps-pixpalace-choix label {
	font-weight: 600;
	font-size: var(--wp--preset--font-size--small);
}

.ps-pixpalace-choix select {
	padding: 8px 10px;
	border: 1px solid var(--wp--preset--color--line);
	border-radius: 8px;
	font: inherit;
}

.ps-pixpalace-actions {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
	margin: 10px 0;
}

.ps-pixpalace-actions .wp-element-button {
	padding: 9px 14px;
	font-size: var(--wp--preset--font-size--small);
}

.ps-pixpalace-progression {
	margin: 10px 0;
}

.ps-pixpalace-barre {
	height: 8px;
	border-radius: 4px;
	background: var(--wp--preset--color--soft);
	overflow: hidden;
}

.ps-pixpalace-barre span {
	display: block;
	height: 100%;
	width: 0;
	background: var(--wp--preset--color--accent);
	transition: width 0.3s;
}

.ps-pixpalace-progression p {
	margin: 6px 0 0;
	font-size: var(--wp--preset--font-size--small);
	color: var(--wp--preset--color--muted);
}

.ps-pixpalace-photos {
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
	gap: 12px;
}

.ps-pixpalace-photo {
	border: 1px solid var(--wp--preset--color--line);
	border-left: 4px solid var(--wp--preset--color--attention);
	border-radius: 8px;
	padding: 10px;
	background: var(--wp--preset--color--base);
}

.ps-pixpalace-photo.est-conforme {
	border-left-color: var(--wp--preset--color--ok);
}

.ps-pixpalace-photo.en-erreur {
	border-left-color: var(--wp--preset--color--erreur);
}

.ps-pixpalace-selection {
	display: flex;
	align-items: center;
	gap: 6px;
	font-size: var(--wp--preset--font-size--small);
	font-weight: 600;
	margin-bottom: 6px;
}

.ps-pixpalace-photo img {
	width: 100%;
	aspect-ratio: 1 / 1;
	object-fit: cover;
	border-radius: 6px;
	cursor: pointer;
}

.ps-pixpalace-nom {
	font-size: 12px;
	margin: 6px 0 2px;
	word-break: break-all;
	cursor: pointer;
}

.ps-pixpalace-nom span {
	color: var(--wp--preset--color--muted);
}

.ps-pixpalace-manque {
	font-size: 12px;
	color: var(--wp--preset--color--muted);
	margin: 0;
}

.ps-pixpalace-saisie {
	margin-top: 8px;
	font-size: var(--wp--preset--font-size--small);
}

.ps-pixpalace-saisie label {
	display: block;
	font-weight: 600;
	margin-bottom: 6px;
}

.ps-pixpalace-saisie textarea,
.ps-pixpalace-saisie input[type=text] {
	width: 100%;
	font: inherit;
	font-size: 13px;
	padding: 6px 8px;
	border: 1px solid var(--wp--preset--color--line);
	border-radius: 6px;
	margin-top: 2px;
}

.ps-pixpalace-saisie-actions {
	display: flex;
	flex-wrap: wrap;
	gap: 6px;
	margin-top: 6px;
}

.ps-pixpalace-saisie-actions .wp-element-button {
	padding: 6px 10px;
	font-size: 12px;
}

.ps-pixpalace-retour {
	font-size: 12px;
	margin: 6px 0 0;
}

.ps-ok {
	color: var(--wp--preset--color--ok);
}

.ps-erreur {
	color: var(--wp--preset--color--erreur);
}

/* Page d'entrée de l'espace des membres : contenus en transparence, connexion. */
.ps-entree-cartes { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 16px; margin: 24px 0; }
.ps-entree-carte { position: relative; overflow: hidden; padding: 20px; border: 1px solid var(--wp--preset--color--line); border-radius: var(--wp--custom--radius, 4px); }
.ps-entree-carte h3 { margin: 6px 0 2px; font-size: 18px; }
.ps-entree-chiffre { color: var(--wp--preset--color--accent); font-weight: 600; margin: 0 0 6px; }
.ps-entree-texte { color: var(--wp--preset--color--muted); font-size: 14px; margin: 0; }
.ps-entree-voile { margin-top: 14px; display: flex; flex-direction: column; gap: 8px; filter: blur(3px); opacity: .55; }
.ps-entree-voile span { display: block; height: 10px; border-radius: 5px; background: var(--wp--preset--color--line); }
.ps-entree-voile span:nth-child(2) { width: 70%; } .ps-entree-voile span:nth-child(3) { width: 85%; }
.ps-entree-connexion { max-width: 420px; border: 1px solid var(--wp--preset--color--line); border-radius: var(--wp--custom--radius, 4px); padding: 20px 24px; margin: 24px 0; }
.ps-entree-connexion h3 { margin: 0 0 12px; font-size: 18px; }
.ps-entree-connexion label { display: block; font-weight: 600; font-size: 14px; margin: 10px 0 2px; }
.ps-entree-connexion input[type="text"], .ps-entree-connexion input[type="password"] { width: 100%; border: 1px solid var(--wp--preset--color--line); border-radius: 4px; padding: 9px 10px; font: inherit; }
.ps-entree-connexion .login-remember label { font-weight: 400; }
.ps-entree-connexion input[type="submit"] { background: var(--wp--preset--color--accent); color: #fff; border: 0; border-radius: 4px; padding: 10px 18px; font: inherit; font-weight: 600; cursor: pointer; margin-top: 8px; }

/* ------------------------------------------------------------------------
 * Visuels graphiques (sans photo) : hero, en-têtes de cartes, pochette, signature, tuiles.
 * ---------------------------------------------------------------------- */
.ps-visuel {
	position: relative;
	display: flex;
	flex-direction: column;
	justify-content: flex-end;
	overflow: hidden;
	text-decoration: none;
	color: var(--wp--preset--color--on-ink);
	background: var(--wp--preset--color--ink);
	border-radius: 10px;
	isolation: isolate;
}
.ps-visuel-hero {
	aspect-ratio: 4 / 3;
	padding: 32px 34px;
	gap: 10px;
}
.ps-visuel-forme { position: absolute; z-index: 0; pointer-events: none; }
.ps-visuel-forme-cercle { width: 46%; aspect-ratio: 1; border-radius: 50%; background: var(--wp--preset--color--accent); top: -14%; right: -10%; opacity: .95; }
.ps-visuel-forme-trait { left: 34px; right: 34px; top: 50%; height: 1px; background: var(--wp--preset--color--on-ink-muted); opacity: .35; }
.ps-visuel-sur { position: relative; z-index: 1; font-size: 12px; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; color: var(--wp--preset--color--on-ink-muted); }
.ps-visuel-titre { position: relative; z-index: 1; font-size: clamp(32px, 4.2vw, 54px); font-weight: 700; line-height: 1.02; letter-spacing: -0.02em; }
.ps-visuel-liste { position: relative; z-index: 1; display: flex; flex-wrap: wrap; gap: 6px 22px; margin-top: 8px; font-size: 16px; font-weight: 600; }
.ps-visuel-liste em { font-style: normal; color: var(--wp--preset--color--accent); margin-right: 8px; font-variant-numeric: tabular-nums; }
.ps-visuel-pied { position: relative; z-index: 1; font-size: 13px; color: var(--wp--preset--color--on-ink-muted); margin-top: 6px; }
a.ps-visuel-hero:hover .ps-visuel-titre, a.ps-visuel:focus-visible .ps-visuel-titre { color: var(--wp--preset--color--accent); }

/* En-têtes graphiques des cartes d'entrée (même emplacement que l'ancienne image 16/10). */
.ps-visuel-carte { aspect-ratio: 16 / 10; padding: 18px 20px; gap: 2px; border-radius: 0; justify-content: flex-end; }
.ps-visuel-grand { position: relative; z-index: 1; font-size: 26px; font-weight: 700; line-height: 1.05; letter-spacing: -0.015em; }
.ps-visuel-petit { position: relative; z-index: 1; font-size: 13px; color: var(--wp--preset--color--on-ink-muted); }
.ps-visuel-barre { position: absolute; top: 18px; left: 20px; width: 44px; height: 4px; background: var(--wp--preset--color--accent); }
.ps-visuel-formations { background: var(--wp--preset--color--ink); }
.ps-visuel-ressources { background: var(--wp--preset--color--soft); color: var(--wp--preset--color--contrast); justify-content: center; padding: 16px; }
.ps-visuel-tuiles { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; width: 100%; }
.ps-visuel-tuiles span { display: flex; align-items: center; justify-content: center; min-height: 44px; border: 1px solid var(--wp--preset--color--line); background: #fff; border-radius: 6px; font-size: 14px; font-weight: 600; }
.ps-visuel-tuiles span:last-child { background: var(--wp--preset--color--accent); color: var(--wp--preset--color--on-accent); border-color: transparent; }
.ps-visuel-podcast { background: var(--wp--preset--color--ink); }
.ps-visuel-onde { position: absolute; z-index: 0; left: 20px; right: 20px; top: 22px; height: 46px; display: flex; align-items: center; gap: 5px; }
.ps-visuel-onde i { flex: 1; display: block; background: var(--wp--preset--color--accent); border-radius: 2px; opacity: .9; }
.ps-visuel-onde i:nth-child(1) { height: 30%; } .ps-visuel-onde i:nth-child(2) { height: 60%; } .ps-visuel-onde i:nth-child(3) { height: 100%; } .ps-visuel-onde i:nth-child(4) { height: 45%; } .ps-visuel-onde i:nth-child(5) { height: 75%; } .ps-visuel-onde i:nth-child(6) { height: 35%; } .ps-visuel-onde i:nth-child(7) { height: 90%; } .ps-visuel-onde i:nth-child(8) { height: 55%; } .ps-visuel-onde i:nth-child(9) { height: 25%; } .ps-visuel-onde i:nth-child(10) { height: 70%; } .ps-visuel-onde i:nth-child(11) { height: 100%; } .ps-visuel-onde i:nth-child(12) { height: 40%; } .ps-visuel-onde i:nth-child(13) { height: 65%; } .ps-visuel-onde i:nth-child(14) { height: 30%; } .ps-visuel-onde i:nth-child(15) { height: 80%; } .ps-visuel-onde i:nth-child(16) { height: 50%; }

/* Pochette du podcast (section noire de l'accueil) : carré, bord fin clair. */
.ps-visuel-pochette { aspect-ratio: 1; padding: 28px; gap: 6px; border: 1px solid rgba(255, 255, 255, .14); background: #1a1a1a; }
.ps-visuel-pochette .ps-visuel-onde { top: 28px; left: 28px; right: 28px; height: 90px; }
.ps-visuel-pochette .ps-visuel-grand { font-size: clamp(28px, 3vw, 40px); }
.ps-badge-sur-ink { color: var(--wp--preset--color--accent); }
.ps-section-podcast-accueil .wp-block-button__link { background: var(--wp--preset--color--accent); color: var(--wp--preset--color--on-accent); }

/* Carte-signature de l'auteur. */
.ps-visuel-signature { aspect-ratio: 4 / 5; padding: 28px; gap: 8px; background: var(--wp--preset--color--soft); color: var(--wp--preset--color--contrast); border: 1px solid var(--wp--preset--color--line); }
.ps-visuel-signature .ps-visuel-sur { color: var(--wp--preset--color--muted); }
.ps-visuel-signature .ps-visuel-forme-cercle { width: 56%; top: -18%; right: -16%; }
.ps-visuel-signature .ps-visuel-liste { flex-direction: column; gap: 4px; font-size: 15px; }
.ps-visuel-signature .ps-visuel-liste span::before { content: ""; display: inline-block; width: 8px; height: 8px; border-radius: 50%; background: var(--wp--preset--color--accent); margin-right: 10px; vertical-align: 1px; }
.ps-visuel-signature .ps-visuel-pied { color: var(--wp--preset--color--muted); }

/* Tuiles de la boîte à outils. */
.ps-tuiles-outils { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.ps-tuile { display: flex; flex-direction: column; gap: 6px; padding: 20px 20px 22px; border-radius: 10px; text-decoration: none; min-height: 150px; border: 1px solid var(--wp--preset--color--line); transition: transform .15s ease; }
.ps-tuile:hover, .ps-tuile:focus-visible { transform: translateY(-2px); }
.ps-tuile-num { font-size: 12px; font-weight: 600; letter-spacing: .08em; color: var(--wp--preset--color--accent); font-variant-numeric: tabular-nums; }
.ps-tuile-titre { font-size: 19px; font-weight: 700; line-height: 1.15; letter-spacing: -0.01em; }
.ps-tuile-texte { font-size: 14px; line-height: 1.45; }
.ps-tuile-soft { background: var(--wp--preset--color--soft); color: var(--wp--preset--color--contrast); }
.ps-tuile-soft .ps-tuile-texte { color: var(--wp--preset--color--muted); }
.ps-tuile-ink { background: var(--wp--preset--color--ink); color: var(--wp--preset--color--on-ink); border-color: transparent; }
.ps-tuile-ink .ps-tuile-texte { color: var(--wp--preset--color--on-ink-muted); }
.ps-tuile-accent { background: var(--wp--preset--color--accent); color: var(--wp--preset--color--on-accent); border-color: transparent; }
.ps-tuile-accent .ps-tuile-num, .ps-tuile-accent .ps-tuile-texte { color: rgba(255, 255, 255, .85); }
@media (max-width: 781px) {
	.ps-visuel-hero { aspect-ratio: 5 / 4; padding: 24px; }
	.ps-tuiles-outils { grid-template-columns: 1fr 1fr; gap: 10px; }
	.ps-tuile { min-height: 0; padding: 16px; }
	.ps-visuel-signature { aspect-ratio: 16 / 10; max-width: 420px; }
}
@media (max-width: 480px) {
	.ps-tuiles-outils { grid-template-columns: 1fr; }
}

/* Visuel de la boîte à outils (illustration fournie), à droite de la section. */
.ps-visuel-outils { display: block; max-width: 520px; margin: 0 auto; }
.ps-visuel-outils img { display: block; width: 100%; height: auto; }

/* Portrait de l'auteur sur l'accueil. */
.ps-portrait-auteur { margin: 0; max-width: 440px; }
.ps-portrait-auteur img { display: block; width: 100%; height: auto; }

/* Pochette du podcast (visuel fourni) : section de l'accueil et carte d'entrée. */
.ps-pochette-podcast { margin: 0; max-width: 420px; }
.ps-pochette-podcast img { display: block; width: 100%; height: auto; }
.ps-carte-pochette { display: flex; align-items: center; justify-content: center; aspect-ratio: 16 / 10; overflow: hidden; background: #e0231a; }
.ps-carte-pochette img { width: 100%; height: 100%; object-fit: cover; object-position: center; }

/* Page Ressources : les livres avec leurs formats. */
.ps-livres-formats { display: grid; grid-template-columns: repeat(auto-fill, minmax(420px, 1fr)); gap: 20px; margin: 8px 0 24px; }
.ps-livre-carte { display: grid; grid-template-columns: 180px minmax(0, 1fr); gap: 18px; border: 1px solid var(--wp--preset--color--line); border-radius: var(--wp--custom--radius, 4px); padding: 16px; background: #fff; }
.ps-livre-couv { display: block; aspect-ratio: 4 / 3; overflow: hidden; border-radius: 6px; background: var(--wp--preset--color--soft); }
.ps-livre-couv img { width: 100%; height: 100%; object-fit: cover; display: block; }
.ps-livre-couv-vide { display: flex; align-items: center; justify-content: center; height: 100%; padding: 12px; text-align: center; font-weight: 700; color: var(--wp--preset--color--accent); }
.ps-livre-corps { display: flex; flex-direction: column; gap: 6px; min-width: 0; }
.ps-livre-titre { margin: 0; font-size: 19px; line-height: 1.2; }
.ps-livre-titre a { text-decoration: none; }
.ps-livre-texte { margin: 0; color: var(--wp--preset--color--muted); font-size: 14px; }
.ps-livre-formats { margin-top: auto; display: flex; flex-direction: column; gap: 8px; padding-top: 10px; }
.ps-livre-format { display: grid; grid-template-columns: 1fr auto auto; align-items: center; gap: 12px; border-top: 1px solid var(--wp--preset--color--line); padding-top: 8px; font-size: 15px; }
.ps-livre-format-nom { font-weight: 600; }
.ps-livre-format-prix { font-weight: 600; }
.ps-livre-format-bouton.wp-element-button { padding: 6px 14px; font-size: 14px; }
@media (max-width: 600px) {
	.ps-livres-formats { grid-template-columns: 1fr; }
	.ps-livre-carte { grid-template-columns: 1fr; }
	.ps-livre-couv { max-width: 240px; }
}

/* ------------------------------------------------------------------------
 * « Créer une série » : parcours en quatre étapes (Mon espace membre).
 * ---------------------------------------------------------------------- */
.ps-parcours-etapes {
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	gap: 10px;
	margin: 0 0 var(--wp--preset--spacing--50);
	padding: 0;
	list-style: none;
}

.ps-parcours-etapes li > a,
.ps-parcours-etapes li > span {
	display: flex;
	gap: 12px;
	align-items: center;
	padding: 12px 14px;
	border: 1px solid var(--wp--preset--color--line);
	border-radius: var(--wp--custom--radius);
	color: inherit;
	text-decoration: none;
	background: var(--wp--preset--color--base);
}

.ps-parcours-etapes li.ps-etape-active > span,
.ps-parcours-etapes li.ps-etape-active > a {
	border-color: var(--wp--preset--color--contrast);
}

.ps-etape-num {
	flex: none;
	width: 30px;
	height: 30px;
	border-radius: 50%;
	display: grid;
	place-items: center;
	font-weight: 700;
	font-size: 13px;
	background: var(--wp--preset--color--soft);
}

.ps-etape-active .ps-etape-num {
	background: var(--wp--preset--color--contrast);
	color: var(--wp--preset--color--base);
}

.ps-etape-faite .ps-etape-num {
	background: var(--wp--preset--color--ok);
	color: #fff;
}

.ps-etape-texte b {
	display: block;
	font-size: 14px;
}

.ps-etape-texte small {
	display: block;
	color: var(--wp--preset--color--muted);
	font-size: 12px;
}

.ps-parcours-grille {
	display: grid;
	grid-template-columns: minmax(0, 1fr) 300px;
	gap: 24px;
	align-items: start;
}

.ps-parcours-carte,
.ps-parcours-recap {
	border: 1px solid var(--wp--preset--color--line);
	border-radius: var(--wp--custom--radius);
	background: var(--wp--preset--color--base);
	padding: 22px;
}

.ps-parcours-carte h3 {
	margin: 0 0 6px;
	font-size: 20px;
}

.ps-parcours-carte h3 + .ps-aide {
	display: block;
	margin-bottom: 16px;
}

.ps-parcours-recap {
	position: sticky;
	top: 20px;
}

.ps-parcours-recap h3 {
	margin: 4px 0 12px;
	font-size: 18px;
}

.ps-parcours-recap dl {
	display: grid;
	grid-template-columns: 1fr auto;
	gap: 6px 12px;
	margin: 0 0 16px;
	font-size: 14px;
}

.ps-parcours-recap dt {
	color: var(--wp--preset--color--muted);
}

.ps-parcours-recap dd {
	margin: 0;
	text-align: right;
	font-weight: 600;
	font-variant-numeric: tabular-nums;
}

.ps-parcours-options {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 14px;
	margin: 16px 0;
}

.ps-parcours-option {
	border: 1px solid var(--wp--preset--color--line);
	border-radius: var(--wp--custom--radius);
	padding: 16px;
	margin-top: 16px;
}

.ps-parcours-options .ps-parcours-option {
	margin-top: 0;
}

.ps-parcours-option p {
	margin: 0 0 10px;
}

.ps-parcours-pied {
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: 12px;
	flex-wrap: wrap;
	margin-top: 22px;
	padding-top: 16px;
	border-top: 1px solid var(--wp--preset--color--line);
}

.ps-parcours-boutons {
	display: flex;
	gap: 8px;
	flex-wrap: wrap;
}

.ps-parcours-photos {
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	gap: 12px;
}

.ps-parcours-photo {
	display: grid;
	grid-template-columns: 160px minmax(0, 1fr);
	gap: 14px;
	align-items: start;
	padding: 12px;
	border: 1px solid var(--wp--preset--color--line);
	border-radius: var(--wp--custom--radius);
}

.ps-parcours-photo img {
	display: block;
	width: 100%;
	height: auto;
	border-radius: 6px;
}

.ps-parcours-photo-nom {
	margin: 0 0 4px;
	font-weight: 600;
	font-size: 14px;
	overflow-wrap: anywhere;
}

.ps-parcours-legende textarea {
	width: 100%;
	margin: 6px 0;
}

.ps-parcours-legende .ps-bouton-petit {
	padding: 6px 12px;
	font-size: 13px;
	margin-top: 6px;
}

.ps-parcours-retirer {
	margin-top: 8px;
}

.ps-compte-titre {
	margin: var(--wp--preset--spacing--60) 0 var(--wp--preset--spacing--30);
}

.ps-panneau-actions-haut {
	margin: 0 0 12px;
}

/* Spécialités en étiquettes. */
.ps-etiquettes {
	display: flex;
	flex-wrap: wrap;
	gap: 6px;
	margin: 0 0 8px;
}

.ps-etiquette {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	padding: 4px 8px 4px 12px;
	border-radius: 999px;
	background: var(--wp--preset--color--contrast);
	color: var(--wp--preset--color--base);
	font-size: 13px;
	font-weight: 600;
}

.ps-etiquette-x {
	border: 0;
	background: transparent;
	color: inherit;
	font-size: 15px;
	line-height: 1;
	padding: 0 2px;
	cursor: pointer;
}

@media (max-width: 900px) {
	.ps-parcours-etapes,
	.ps-parcours-grille,
	.ps-parcours-options {
		grid-template-columns: 1fr;
	}

	.ps-parcours-etapes {
		grid-template-columns: 1fr 1fr;
	}

	.ps-parcours-recap {
		position: static;
	}

	.ps-parcours-photos .ps-parcours-photo {
		grid-template-columns: 1fr;
	}
}

/* ------------------------------------------------------------------------
 * Animations courtes et subtiles (demande du 13 oct. 2026) : boutons et cartes au survol,
 * apparition douce au défilement (classe ps-reveal posée par assets/anim.js).
 * ---------------------------------------------------------------------- */
.wp-element-button,
.wp-block-button__link,
.ps-bouton-contour,
.ps-livre-format-bouton,
.ps-filtres a,
.woocommerce-MyAccount-navigation li a {
	transition: transform 0.18s ease, box-shadow 0.18s ease, background-color 0.18s ease, border-color 0.18s ease, color 0.18s ease;
	will-change: transform;
}

.wp-element-button:hover,
.wp-block-button__link:hover,
.ps-bouton-contour:hover,
.ps-livre-format-bouton:hover,
.wp-element-button:focus-visible,
.wp-block-button__link:focus-visible {
	transform: translateY(-2px);
	box-shadow: 0 6px 16px rgba(17, 17, 17, 0.12);
}

.wp-element-button:active,
.wp-block-button__link:active {
	transform: translateY(0);
	box-shadow: none;
	transition-duration: 0.08s;
}

.ps-carte,
.ps-livre-carte,
.ps-carte-produit {
	transition: transform 0.22s ease, box-shadow 0.22s ease, border-color 0.2s ease;
}

.ps-carte:hover,
.ps-livre-carte:hover,
.ps-carte-produit:hover {
	transform: translateY(-3px);
	box-shadow: 0 10px 24px rgba(17, 17, 17, 0.08);
}

.ps-reveal {
	opacity: 0;
	transform: translateY(14px);
	transition: opacity 0.5s ease var(--ps-delai, 0ms), transform 0.5s ease var(--ps-delai, 0ms);
}

.ps-reveal.is-visible {
	opacity: 1;
	transform: none;
}

@media (prefers-reduced-motion: reduce) {
	.wp-element-button,
	.wp-block-button__link,
	.ps-bouton-contour,
	.ps-carte,
	.ps-livre-carte,
	.ps-carte-produit,
	.ps-reveal {
		transition: none;
		transform: none;
	}

	.ps-reveal {
		opacity: 1;
	}
}

/* Espace membre : champs obligatoires, fenêtre de relecture, destinations de diffusion. */
.ps-obligatoire {
	color: var(--wp--preset--color--accent, #d9541e);
	font-weight: 600;
}

.ps-formulaire .ps-manque {
	outline: 2px solid var(--wp--preset--color--accent, #d9541e);
	outline-offset: 2px;
	border-radius: 6px;
}

.ps-modale-fond {
	position: fixed;
	inset: 0;
	z-index: 100000;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 24px;
	background: rgba(17, 17, 17, 0.55);
}

.ps-modale {
	max-width: 480px;
	width: 100%;
	background: #fff;
	border-radius: 12px;
	padding: 28px 28px 24px;
	box-shadow: 0 24px 60px rgba(0, 0, 0, 0.3);
}

.ps-modale-texte {
	margin: 0 0 20px;
	font-size: 17px;
	line-height: 1.5;
}

.ps-modale-actions {
	display: flex;
	gap: 10px;
	justify-content: flex-end;
	flex-wrap: wrap;
}

.ps-parcours-destinations {
	grid-template-columns: 1fr;
}

.ps-parcours-destination {
	display: flex;
	gap: 14px;
	align-items: flex-start;
	cursor: pointer;
}

.ps-parcours-destination input[type=checkbox] {
	margin-top: 4px;
	width: 20px;
	height: 20px;
	flex: none;
}

.ps-parcours-destination > span,
.ps-parcours-destination strong,
.ps-parcours-destination .ps-aide {
	display: block;
}

.ps-parcours-destination strong {
	margin-bottom: 4px;
}

.ps-parcours-destination .ps-erreur {
	color: #8a1f1f;
}

/* Envoi PixPalace : champs du template, constats. */
.ps-pixpalace-template {
	margin: 0 0 6px;
	font-size: 14px;
}

.ps-pixpalace-template.est-conforme .ps-pixpalace-template-resume {
	color: #1e6b32;
	font-weight: 600;
}

.ps-pixpalace-template.a-completer .ps-pixpalace-template-resume {
	color: #8a4b00;
	font-weight: 600;
}

.ps-pixpalace-constats {
	margin: 0 0 12px;
	padding: 0 0 0 18px;
	font-size: 13px;
	line-height: 1.45;
	max-height: 200px;
	overflow: auto;
}

.ps-pixpalace-constats li.erreur {
	color: #8a1f1f;
}

.ps-pixpalace-constats li.attention {
	color: #8a4b00;
}

.ps-pixpalace-constats em {
	color: #646970;
	font-style: normal;
}

.ps-pixpalace-champs {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 8px 14px;
	margin-bottom: 10px;
}

.ps-pixpalace-champs label {
	display: block;
	font-size: 12px;
	color: #50575e;
}

.ps-pixpalace-champs label.ps-large {
	grid-column: 1 / -1;
}

.ps-pixpalace-champs input,
.ps-pixpalace-champs select,
.ps-pixpalace-champs textarea {
	display: block;
	width: 100%;
	margin-top: 3px;
	font-size: 14px;
	color: #111;
}

@media (max-width: 640px) {
	.ps-pixpalace-champs {
		grid-template-columns: 1fr;
	}
}

/* Photo ouverte sur la page PixPalace : la carte prend toute la largeur, vignette à gauche, champs à droite. */
.ps-pixpalace-photo.est-ouverte {
	grid-column: 1 / -1;
	display: grid;
	grid-template-columns: 220px minmax(0, 1fr);
	gap: 8px 20px;
	align-items: start;
}

.ps-pixpalace-photo.est-ouverte .ps-pixpalace-saisie {
	grid-column: 2;
	grid-row: 1 / span 4;
}

@media (max-width: 720px) {
	.ps-pixpalace-photo.est-ouverte {
		grid-template-columns: 1fr;
	}

	.ps-pixpalace-photo.est-ouverte .ps-pixpalace-saisie {
		grid-column: 1;
		grid-row: auto;
	}
}

/* Fenêtre de contexte avant la mise aux normes par l'IA. */
.ps-modale-contexte {
	max-width: 640px;
	max-height: 90vh;
	overflow: auto;
}

.ps-modale-contexte h3 {
	margin: 0 0 6px;
	font-size: 20px;
}

.ps-modale-contexte label {
	display: block;
	margin: 10px 0 0;
	font-size: 13px;
	color: #50575e;
}

.ps-modale-contexte textarea {
	display: block;
	width: 100%;
	margin-top: 4px;
	font-size: 14px;
	color: #111;
}

.ps-modale-cout {
	margin: 14px 0 12px;
	font-size: 14px;
}

.ps-modale-cout .ps-erreur {
	color: #8a1f1f;
}
