/* Honora Design — « la page blanche ».
   Couche de finition posée sur les gabarits Elementor existants : elle ne change ni le
   contenu ni la structure, et disparaît entièrement si l'extension est désactivée.
   Les sélecteurs commencent par « html body » pour passer devant les styles en ligne
   des widgets, qui utilisent souvent !important. */

:root {
	--hd-ink: #0a1633;
	--hd-ink-soft: #45506a;
	--hd-mute: #646e82;
	--hd-line: #e6e8ee;
	--hd-line-strong: #cfd4de;
	--hd-paper: #ffffff;
	--hd-paper-2: #f6f7f9;
	--hd-accent: #0b5ed7;
	--hd-accent-soft: #a9cdf5;
	--hd-serif: "Cormorant Garamond", Georgia, "Times New Roman", serif;
	--hd-sans: "Jost", "Futura", "Trebuchet MS", sans-serif;
	--hd-ease: cubic-bezier(.22, .61, .36, 1);
	--hd-shadow-book: 0 1px 1px rgba(10, 22, 51, .06), 0 10px 18px -10px rgba(10, 22, 51, .28), 0 28px 48px -28px rgba(10, 22, 51, .35);
}

html { -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-rendering: optimizeLegibility; }
html body ::selection { background: var(--hd-ink); color: #fff; }
/* Le thème coupe les débordements avec overflow-x:hidden, ce qui empêche l'en-tête collant ;
   clip coupe pareil sans créer de conteneur de défilement. */
html body { overflow-x: clip !important; overflow-y: visible !important; }

/* ---------- Typographie ---------- */

html body :is(.hn-header, .hf-footer, .hon-home, .honora-news, .honora-authors, .honora-contact-page, .cam-books, .elementor:has(.honora-intro))
	:is(p, a, li, span, button, input, select, textarea, label, summary, em, small, div, .elementor-button-text):not(.ha-art span):not(.au-monogram span) {
	font-family: var(--hd-sans) !important;
}

/* :where() garde cette règle peu spécifique, pour que les titres sur fond sombre restent blancs. */
html body :where(.hon-home, .honora-news, .honora-authors, .honora-contact-page, .cam-books, .elementor:has(.honora-intro))
	:is(h1, h2, h3, .elementor-heading-title) {
	font-family: var(--hd-serif) !important;
	font-weight: 500 !important;
	color: var(--hd-ink) !important;
	letter-spacing: -.018em !important;
	font-feature-settings: "liga", "dlig";
}

html body :is(.hon-home h1, .honora-intro .elementor-heading-title, .au-title .elementor-heading-title, .ha-title .elementor-heading-title, .hc-title .elementor-heading-title, .cam-books h1) {
	line-height: .98 !important;
	letter-spacing: -.028em !important;
}

html body :is(.hon-home, .honora-news, .honora-authors, .honora-contact-page, .cam-books, .elementor:has(.honora-intro)) p {
	color: var(--hd-ink-soft);
	line-height: 1.75;
}

html body :is(.au-sub p, .ha-subtitle p, .hc-subtitle p, .honora-contact-page .hc-subtitle, .hon-home .hh-section-intro) {
	font-size: 19px !important;
	font-weight: 300;
	color: var(--hd-ink-soft) !important;
	line-height: 1.6 !important;
}

/* Sur-titres et métadonnées : petites capitales espacées. */
html body :is(.hh-kicker, .hh-author, .honora-author p, .au-genre p, .ha-meta p, .hc-label p) {
	font-family: var(--hd-sans) !important;
	font-size: 11px !important;
	font-weight: 500 !important;
	letter-spacing: .24em !important;
	text-transform: uppercase;
	color: var(--hd-accent) !important;
}

/* Fils d'Ariane (couleurs écrites en ligne dans les widgets). */
html body :is(.honora-breadcrumb p, .hc-breadcrumb p, p:has(> a[style*="8090ad"]), .cam-books nav[aria-label]) {
	font: 500 11px/1.6 var(--hd-sans) !important;
	letter-spacing: .2em;
	word-spacing: .1em;
	text-transform: uppercase;
	color: var(--hd-ink) !important;
}
html body :is(.honora-breadcrumb p, .hc-breadcrumb p, p:has(> a[style*="8090ad"]), .cam-books nav[aria-label]) a {
	color: var(--hd-mute) !important;
	background: none !important;
	text-decoration: none !important;
	transition: color .3s var(--hd-ease);
}
html body :is(.honora-breadcrumb p, .hc-breadcrumb p, p:has(> a[style*="8090ad"]), .cam-books nav[aria-label]) a:hover { color: var(--hd-ink) !important; }
html body :is(.honora-breadcrumb p, .hc-breadcrumb p, p:has(> a[style*="8090ad"])) span { color: var(--hd-ink) !important; }

/* Mentions de démonstration : présentes mais discrètes. */
html body :is(.hh-note, .honora-note, .au-demo p, .ha-demo p, .cam-note) {
	font-size: 11px !important;
	letter-spacing: .04em;
	color: var(--hd-mute) !important;
	font-style: italic;
}

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

html body.ehf-header #masthead { position: sticky; top: 0; z-index: 90; }
html body.ehf-header.admin-bar #masthead { top: 32px; }
@media (max-width: 782px) { html body.ehf-header.admin-bar #masthead { top: 46px; } }

html body .hn-header {
	background: rgba(255, 255, 255, .86);
	-webkit-backdrop-filter: saturate(160%) blur(14px);
	backdrop-filter: saturate(160%) blur(14px);
	border-bottom: 1px solid var(--hd-line);
	transition: box-shadow .4s var(--hd-ease);
}
html body.hd-scrolled .hn-header { box-shadow: 0 10px 30px -24px rgba(10, 22, 51, .45); }
html body .hn-inner { max-width: 1180px; padding-top: 16px; padding-bottom: 16px; }
html body .hn-brand img { width: 150px; mix-blend-mode: multiply; }

html body .hn-nav { gap: 34px; }
html body .hn-nav a {
	position: relative;
	font: 400 13px/1.5 var(--hd-sans) !important;
	letter-spacing: .12em;
	text-transform: uppercase;
	color: var(--hd-ink) !important;
	border-bottom: 0 !important;
	padding: 8px 0;
}
html body .hn-nav a:not(.hn-contact)::after {
	content: "";
	position: absolute;
	left: 0;
	right: 0;
	bottom: 2px;
	height: 1px;
	background: currentColor;
	transform: scaleX(0);
	transform-origin: right;
	transition: transform .45s var(--hd-ease);
}
html body .hn-nav a:not(.hn-contact):hover::after,
html body .hn-nav a[aria-current=page]:not(.hn-contact)::after { transform: scaleX(1); transform-origin: left; }
html body .hn-nav a[aria-current=page] { color: var(--hd-accent) !important; }

html body .hn-nav a.hn-contact {
	border: 1px solid var(--hd-ink) !important;
	border-radius: 999px;
	padding: 10px 22px !important;
	color: var(--hd-ink) !important;
	transition: background .3s var(--hd-ease), color .3s var(--hd-ease);
}
html body .hn-nav a.hn-contact:hover { background: var(--hd-ink); color: #fff !important; }

html body .hn-toggle {
	background: transparent !important;
	color: var(--hd-ink) !important;
	border: 1px solid var(--hd-line-strong) !important;
	border-radius: 999px !important;
	padding: 8px 16px !important;
	font: 400 12px var(--hd-sans) !important;
	letter-spacing: .14em;
	text-transform: uppercase;
}
@media (max-width: 767px) {
	html body .hn-nav { gap: 0; }
	html body .hn-nav a { padding: 16px 0 !important; border-bottom: 1px solid var(--hd-line) !important; }
	html body .hn-nav a:not(.hn-contact)::after { display: none; }
	html body .hn-nav a.hn-contact { margin-top: 18px; text-align: center; border-bottom: 1px solid var(--hd-ink) !important; }
}

/* ---------- Boutons et liens ---------- */

html body :is(.hon-home .hh-button, .hc-submit) {
	display: inline-flex !important;
	align-items: center;
	gap: 12px;
	background: var(--hd-ink) !important;
	color: #fff !important;
	border: 1px solid var(--hd-ink) !important;
	border-radius: 999px !important;
	padding: 16px 30px !important;
	font: 500 12px/1.2 var(--hd-sans) !important;
	letter-spacing: .16em;
	text-transform: uppercase;
	transition: background .35s var(--hd-ease), border-color .35s var(--hd-ease), transform .35s var(--hd-ease);
}
html body :is(.hon-home .hh-button, .hc-submit):hover { background: var(--hd-accent) !important; border-color: var(--hd-accent) !important; }
html body .hon-home .hh-button::after { content: "→"; transition: transform .35s var(--hd-ease); }
html body .hon-home .hh-button:hover::after { transform: translateX(4px); }

html body :is(.hh-link, .honora-contact a, .ha-bottom a, .hc-faq-strip a, .au-bottom a, .au-catalogue, .cam-back, .honora-discover .elementor-button, .ha-read summary, .au-more summary, .hh-life-card a, .hh-univers a) {
	color: var(--hd-ink) !important;
	background: none !important;
	border: 0 !important;
	border-radius: 0 !important;
	padding: 0 0 6px !important;
	font: 500 12px/1.4 var(--hd-sans) !important;
	letter-spacing: .16em;
	text-transform: uppercase;
	text-decoration: none !important;
	background-image: linear-gradient(currentColor, currentColor) !important;
	background-size: 100% 1px !important;
	background-position: 0 100% !important;
	background-repeat: no-repeat !important;
	transition: color .3s var(--hd-ease), background-size .45s var(--hd-ease);
}
html body :is(.hh-link, .honora-contact a, .ha-bottom a, .hc-faq-strip a, .au-bottom a, .au-catalogue, .cam-back, .honora-discover .elementor-button, .ha-read summary, .au-more summary, .hh-life-card a, .hh-univers a):hover {
	color: var(--hd-accent) !important;
	background-size: 40% 1px !important;
}

html body :is(.hon-home, .honora-news, .honora-authors, .honora-contact-page, .cam-books, .elementor:has(.honora-intro), .hn-header, .hf-footer) :is(a, button, input, select, textarea, summary):focus-visible {
	outline: 2px solid var(--hd-accent) !important;
	outline-offset: 4px !important;
	box-shadow: none !important;
}

/* ---------- Accueil ---------- */

html body .hon-home .hh-hero { background: var(--hd-paper); }
html body .hon-home .hh-copy > p:not(.hh-kicker) { font-size: 18px; font-weight: 300; line-height: 1.6; max-width: 400px; }
/* La colonne du hero fait ~435 px : bouton et lien doivent y tenir sur une ligne. */
html body .hon-home .hh-actions { gap: 20px; margin-top: 34px; }
html body .hon-home .hh-actions .hh-button { padding: 15px 22px !important; letter-spacing: .12em; }
html body .hon-home .hh-actions .hh-link { letter-spacing: .12em; }
html body .hon-home .hh-heading h2 { font-size: clamp(40px, 4.4vw, 58px) !important; }
html body .hon-home .hh-heading::after { background: var(--hd-line) !important; }
html body .hon-home :is(.hh-books, .hh-univers, .hh-life) { padding-top: clamp(56px, 7vw, 96px) !important; padding-bottom: clamp(56px, 7vw, 96px) !important; }
html body .hon-home .hh-univers { border-top: 1px solid var(--hd-line) !important; }
html body .hon-home .hh-grid { gap: clamp(28px, 5vw, 72px) !important; }
html body .hon-home .hh-book h3 { font-size: 26px !important; margin-top: 10px; }
html body .hon-home .hh-house { background: var(--hd-paper-2) !important; }
html body .hon-home .hh-genre { border-top: 1px solid var(--hd-ink) !important; padding-top: 22px !important; }
html body .hon-home .hh-genre h3 { font-size: 30px !important; }
html body .hon-home .hh-life-card,
html body .hon-home .hh-life-card:last-child {
	background: var(--hd-paper) !important;
	border: 1px solid var(--hd-line) !important;
	padding: clamp(28px, 3vw, 44px) !important;
	transition: border-color .4s var(--hd-ease);
}
html body .hon-home .hh-life-card:hover { border-color: var(--hd-ink) !important; }
html body .hon-home .hh-submit { background: var(--hd-ink) !important; padding-top: clamp(44px, 5vw, 72px) !important; padding-bottom: clamp(44px, 5vw, 72px) !important; }
html body .hon-home .hh-submit h2 { color: #fff !important; font-size: clamp(36px, 4vw, 54px) !important; }
html body .hon-home .hh-submit .hh-button { background: #fff !important; color: var(--hd-ink) !important; border-color: #fff !important; }
html body .hon-home .hh-submit .hh-button:hover { background: var(--hd-accent-soft) !important; border-color: var(--hd-accent-soft) !important; }

/* ---------- Couvertures : de vrais livres ---------- */

/* L'ombre se pose sur le cadre qui découpe la planche : un overflow:hidden ne rogne
   pas l'ombre de l'élément lui-même. */
html body :is(.hh-cover, .honora-cover, .cam-cover) {
	border-radius: 2px;
	box-shadow: var(--hd-shadow-book) !important;
	transition: translate .6s var(--hd-ease), box-shadow .6s var(--hd-ease);
}
@media (hover: hover) and (min-width: 1025px) {
	html body :is(.hh-book:hover .hh-cover, .e-con:has(> .honora-cover):hover .honora-cover) {
		translate: 0 -6px;
		box-shadow: 0 1px 1px rgba(10, 22, 51, .06), 0 18px 28px -14px rgba(10, 22, 51, .32), 0 44px 70px -36px rgba(10, 22, 51, .42) !important;
	}
}

/* ---------- Catalogue ---------- */

html body .honora-search input {
	height: 56px !important;
	border: 0 !important;
	border-bottom: 1px solid var(--hd-line-strong) !important;
	border-radius: 0 !important;
	padding: 12px 48px 12px 0 !important;
	font: 300 18px var(--hd-sans) !important;
	background: transparent !important;
	transition: border-color .3s var(--hd-ease);
}
html body .honora-search input:focus { border-bottom-color: var(--hd-ink) !important; }
html body .honora-search svg { right: 0 !important; stroke: var(--hd-ink) !important; stroke-width: 1.5; }
html body :is(.honora-filters, .ha-filters) { gap: 6px 26px !important; }
html body :is(.honora-filters button, .ha-filters button) {
	font: 400 12px/1.4 var(--hd-sans) !important;
	letter-spacing: .14em !important;
	text-transform: uppercase;
	color: var(--hd-mute) !important;
	padding: 10px 0 !important;
	background: none !important;
	box-shadow: none !important;
	border-bottom: 1px solid transparent !important;
	transition: color .3s var(--hd-ease), border-color .3s var(--hd-ease);
}
html body :is(.honora-filters button, .ha-filters button):hover { color: var(--hd-ink) !important; }
html body :is(.honora-filters button, .ha-filters button)[aria-pressed=true] { color: var(--hd-ink) !important; border-bottom-color: var(--hd-ink) !important; }
html body .e-con:has(> .honora-cover) .elementor-heading-title { font-size: 25px !important; margin-top: 8px; }
html body :is(.honora-contact, .au-bottom, .ha-bottom, .hc-faq-strip, .cam-book) { border-top-color: var(--hd-line) !important; }

/* ---------- Auteurs ---------- */

html body .au-monogram,
html body .au-card:nth-child(2n) .au-monogram { background: var(--hd-paper-2) !important; border: 0 !important; }
html body .au-monogram::before { border-color: var(--hd-line-strong) !important; }
html body .au-monogram span { font-family: var(--hd-serif) !important; color: var(--hd-ink) !important; font-weight: 500; }
html body .au-card:nth-child(3n) .au-monogram { background: var(--hd-ink) !important; }
html body .au-card:nth-child(3n) .au-monogram::before { border-color: rgba(255, 255, 255, .22) !important; }
html body .au-card:nth-child(3n) .au-monogram span { color: #fff !important; }
html body .honora-authors .au-name .elementor-heading-title { font-size: 32px !important; margin-top: 6px; }

/* ---------- Actualités ---------- */

html body .ha-feature { background: var(--hd-paper) !important; border: 1px solid var(--hd-line) !important; border-radius: 0 !important; }
html body .ha-card { border-top: 1px solid var(--hd-ink) !important; padding-top: 24px !important; }
html body :is(.ha-art, .ha-art-2) { background: var(--hd-paper-2) !important; }
html body :is(.ha-art, .ha-art-2) span { color: var(--hd-ink) !important; }
html body :is(.ha-art, .ha-art-2)::before,
html body :is(.ha-art, .ha-art-2)::after { border-color: var(--hd-line-strong) !important; background: none !important; }
html body .ha-art-3 { background: var(--hd-ink) !important; }
html body .ha-art-3::before, html body .ha-art-3::after { border-color: rgba(255, 255, 255, .2) !important; }
html body .ha-art-3 span { color: #fff !important; }
html body .honora-news .ha-article-body { font: 400 15px/1.8 var(--hd-sans) !important; color: var(--hd-ink-soft) !important; }

/* ---------- Contact ---------- */

html body .hc-divider { border-top-color: var(--hd-ink) !important; width: 32px !important; }
html body .hc-value p { color: var(--hd-ink) !important; font-weight: 300; }
html body .hc-form-shell { background: var(--hd-paper) !important; border: 1px solid var(--hd-line) !important; border-radius: 0 !important; padding: clamp(24px, 4vw, 48px) !important; }
html body .hc-field label { font: 500 11px/1.4 var(--hd-sans) !important; letter-spacing: .16em; text-transform: uppercase; color: var(--hd-ink) !important; }
html body :is(.hc-field input, .hc-field select, .hc-field textarea) {
	border: 0 !important;
	border-bottom: 1px solid var(--hd-line-strong) !important;
	border-radius: 0 !important;
	padding: 12px 0 !important;
	background: transparent !important;
	font: 300 16px/1.5 var(--hd-sans) !important;
	color: var(--hd-ink) !important;
	transition: border-color .3s var(--hd-ease);
}
html body :is(.hc-field input, .hc-field select, .hc-field textarea):focus { outline: none !important; border-bottom-color: var(--hd-ink) !important; box-shadow: 0 1px 0 0 var(--hd-ink) !important; }
html body :is(.hc-field input, .hc-field select, .hc-field textarea):focus-visible { outline: none !important; }
html body .hc-field textarea { min-height: 140px !important; }
html body .honora-contact-page .hc-field select {
	padding: 12px 28px 12px 0 !important;
	height: auto !important;
	-webkit-appearance: none;
	appearance: none;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5l5 5 5-5' fill='none' stroke='%230a1633' stroke-width='1.3'/%3E%3C/svg%3E") !important;
	background-repeat: no-repeat !important;
	background-position: right 2px center !important;
	background-size: 12px 8px !important;
	cursor: pointer;
}
html body .honora-contact-page .hc-field :is(input, textarea)::placeholder { color: #8b93a5 !important; font-weight: 300; }
html body .hc-field [aria-invalid="true"] { border-bottom-color: #b42318 !important; }
html body .hc-consent, html body .hc-consent span { font: 300 12px/1.6 var(--hd-sans) !important; color: var(--hd-ink-soft) !important; }
html body .hc-consent input { accent-color: var(--hd-ink); }
html body .hc-submit { margin-top: 4px; }
html body .hc-status--ok { border-left-color: var(--hd-ink) !important; background: var(--hd-paper-2) !important; color: var(--hd-ink) !important; }

/* ---------- Fiches « Les livres de… » ---------- */

html body .cam-books { padding-top: clamp(48px, 6vw, 88px) !important; padding-bottom: clamp(64px, 8vw, 112px) !important; }
html body .cam-books h2 { font-size: 34px !important; }
html body .cam-book { border-top: 1px solid var(--hd-line) !important; padding-top: clamp(32px, 4vw, 56px) !important; gap: clamp(32px, 5vw, 72px) !important; }
html body .cam-book a {
	display: inline-block;
	margin-top: 8px;
	color: var(--hd-ink) !important;
	padding: 0 0 6px !important;
	font: 500 12px/1.4 var(--hd-sans) !important;
	letter-spacing: .16em;
	text-transform: uppercase;
	text-decoration: none !important;
	background-image: linear-gradient(currentColor, currentColor) !important;
	background-size: 100% 1px !important;
	background-position: 0 100% !important;
	background-repeat: no-repeat !important;
	transition: color .3s var(--hd-ease), background-size .45s var(--hd-ease);
}
html body .cam-book a:hover { color: var(--hd-accent) !important; background-size: 40% 1px !important; }

/* ---------- Pied de page ---------- */

html body .hf-footer { background: var(--hd-paper-2) !important; border-top: 0 !important; }
html body .hf-wrap { max-width: 1180px; padding-top: clamp(48px, 6vw, 80px) !important; padding-bottom: 28px !important; }
html body .hf-brand img { width: 140px; mix-blend-mode: multiply; }
html body .hf-brand p {
	font: italic 400 22px/1.35 var(--hd-serif) !important;
	color: var(--hd-ink) !important;
	border-left-color: var(--hd-line-strong) !important;
	max-width: 260px;
}
html body .hf-links { gap: 14px 30px !important; }
html body .hf-links a { font: 400 12px/1.6 var(--hd-sans) !important; letter-spacing: .14em; text-transform: uppercase; color: var(--hd-ink) !important; text-decoration: none !important; }
html body .hf-links a:hover { color: var(--hd-accent) !important; }
html body .hf-bottom { border-top: 1px solid var(--hd-line-strong) !important; margin-top: clamp(36px, 5vw, 56px) !important; font: 400 11px/1.7 var(--hd-sans) !important; letter-spacing: .06em; color: var(--hd-mute) !important; }

/* Bouton « retour en haut » du thème. */
html body #ast-scroll-top {
	background: var(--hd-ink) !important;
	color: #fff !important;
	border-radius: 999px !important;
	width: 44px;
	height: 44px;
	display: flex;
	align-items: center;
	justify-content: center;
	box-shadow: 0 10px 24px -12px rgba(10, 22, 51, .5);
	transition: background .3s var(--hd-ease);
}
html body #ast-scroll-top:hover { background: var(--hd-accent) !important; }
html body #ast-scroll-top .ast-arrow-svg { fill: currentColor; width: 14px; }

/* ---------- Apparition au défilement ---------- */

@media (prefers-reduced-motion: no-preference) {
	html.hd-js .hd-reveal { opacity: 0; transform: translateY(18px); transition: opacity 1s var(--hd-ease), transform 1s var(--hd-ease); }
	html.hd-js .hd-reveal.hd-in { opacity: 1; transform: none; }
}
