/*
 * Cabinet Institut Marili : tokens + chrome partagé (en-tête, méga-menu,
 * menu mobile, pied de page, bouton flottant, tiroir de rendez-vous, fenêtre
 * de démo) + composants communs. Les CSS de modèle lisent var(--im-*).
 */

:root {
	/* Couleurs */
	--im-bg: #fbf8f8;
	--im-white: #fff;
	--im-ink: #2a1f25;
	--im-ink-2: #4a3e44;
	--im-ink-3: #5e5258;
	--im-muted: #6e6268;
	--im-faint: #8c7f86;
	--im-plum: #7f1146;
	--im-plum-dark: #650c37;
	--im-wine: #3a0a21;
	--im-rose: #9c3d66;
	--im-pink: #d99bb4;
	--im-pink-soft: #f3c9d9;
	--im-pink-text: #f1dfe7;
	--im-blush: #f5ecef;
	--im-blush-2: #f7f0f2;
	--im-blush-3: #f3dfe7;
	--im-sand: #e9d5d1;
	--im-cream: #eed7da;
	--im-line: rgba(42, 31, 37, .1);
	--im-line-2: rgba(42, 31, 37, .14);
	--im-line-light: rgba(247, 242, 234, .18);

	/* Typo */
	--im-serif: 'Marcellus', Georgia, 'Times New Roman', serif;
	--im-sans: 'Albert Sans', system-ui, -apple-system, 'Segoe UI', sans-serif;
	--im-h1: clamp(38px, 5vw, 74px);
	--im-h2: clamp(38px, 4.8vw, 62px);
	--im-h2-md: clamp(38px, 4.6vw, 58px);
	--im-h2-sm: clamp(30px, 3.4vw, 44px);

	/* Espacements & chrome */
	--im-max: 1320px;
	--im-gutter: clamp(18px, 4vw, 48px);
	--im-section: clamp(72px, 10vw, 130px);
	--im-header-h: 76px;
	--im-leaf: 2px 26px 2px 26px;
	--im-leaf-sm: 2px 18px 2px 18px;
	--im-leaf-lg: 2px 44px 2px 44px;
	--im-radius: 2px;
	--im-ease: cubic-bezier(.2, .7, .2, 1);
	--im-shadow-card: 0 30px 60px -30px rgba(42, 31, 37, .45);
	--im-shadow-btn: 0 14px 30px -14px rgba(101, 12, 55, .45);
}

/* ==========================================================================
   Base
   ========================================================================== */

*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; scroll-padding-top: var(--im-header-h); }
body {
	margin: 0;
	background: var(--im-bg);
	color: var(--im-ink);
	font-family: var(--im-sans);
	font-size: 16px;
	line-height: 1.6;
	-webkit-font-smoothing: antialiased;
}
img { max-width: 100%; height: auto; display: block; }
a { color: var(--im-plum); text-decoration: none; }
a:hover { color: var(--im-rose); }
button { font-family: inherit; }
h1, h2, h3 { font-family: var(--im-serif); font-weight: 400; margin: 0; }
p { margin: 0; }
em { font-style: normal; }
:focus-visible { outline: 2px solid var(--im-rose); outline-offset: 3px; }

.im-wrap { max-width: var(--im-max); margin-inline: auto; padding-inline: var(--im-gutter); }
.im-sr {
	position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px;
	overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0;
}
.im-nowrap { white-space: nowrap; }
.im-break { word-break: break-all; }
.im-skip-link {
	position: fixed; left: 12px; top: -60px; z-index: 200;
	background: var(--im-plum); color: var(--im-bg); padding: 10px 16px; border-radius: var(--im-radius);
}
.im-skip-link:focus { top: 12px; color: var(--im-bg); }

/* Typo commune */
.im-eyebrow {
	font-size: 12px; letter-spacing: .22em; text-transform: uppercase;
	color: var(--im-rose); font-weight: 500;
}
.im-eyebrow--sm { letter-spacing: .16em; font-weight: 400; }
.im-eyebrow--strong { font-size: 11px; letter-spacing: .2em; font-weight: 600; }
.im-eyebrow--light { font-size: 11px; color: #f3d3e0; }
.im-eyebrow--plum { color: var(--im-plum); }
.im-h2 { font-size: var(--im-h2); line-height: 1.04; margin-top: 14px; text-wrap: balance; }
.im-h2 em, .im-h2--about em { color: var(--im-plum); }
.im-h2--about { font-size: var(--im-h2-md); line-height: 1.05; }
.im-h2--sm { font-size: var(--im-h2-sm); line-height: 1.1; margin: 0 0 10px; }
.im-h3 { font-size: 30px; line-height: 1.05; }
.im-arrow { font-family: var(--im-sans); }
.im-more { font-size: 13.5px; font-weight: 500; color: var(--im-plum); }

/* Boutons */
.im-btn {
	display: inline-flex; align-items: center; justify-content: center; gap: 8px;
	border: 0; border-radius: var(--im-radius); padding: 16px 28px;
	font-size: 15px; font-weight: 500; line-height: 1.2; cursor: pointer; white-space: nowrap;
	transition: background .35s var(--im-ease), color .35s var(--im-ease), border-color .35s var(--im-ease), transform .35s var(--im-ease), box-shadow .35s var(--im-ease);
}
.im-btn:hover { transform: translateY(-2px); }
.im-btn--sm { padding: 12px 22px; font-size: 14px; }
.im-btn--sm:hover { transform: translateY(-1px); }
.im-btn--lg { padding: 18px 30px; }
.im-btn--caps { font-size: 14px; letter-spacing: .08em; text-transform: uppercase; font-weight: 600; }
.im-btn--block { width: 100%; }
.im-btn--plum { background: var(--im-plum); color: var(--im-bg); }
.im-btn--plum:hover { background: var(--im-plum-dark); color: var(--im-bg); box-shadow: var(--im-shadow-btn); }
.im-btn--white { background: var(--im-white); color: var(--im-plum); }
.im-btn--white:hover { background: var(--im-pink-soft); color: var(--im-plum); }
.im-btn--ghost { background: transparent; color: var(--im-white); border: 1px solid rgba(255, 255, 255, .55); font-weight: 500; }
.im-btn--ghost:hover { background: rgba(255, 255, 255, .12); border-color: var(--im-white); color: var(--im-white); }
.im-btn--cream { background: var(--im-bg); color: var(--im-ink); }
.im-btn--cream:hover { background: var(--im-cream); color: var(--im-ink); }
.im-btn:disabled { background: #c9a7b7; cursor: not-allowed; transform: none; box-shadow: none; }

.im-icon-btn {
	width: 40px; height: 40px; flex-shrink: 0; border: 1px solid rgba(42, 31, 37, .18); border-radius: var(--im-radius);
	background: transparent; font-size: 18px; color: var(--im-ink); cursor: pointer;
}
.im-icon-btn:hover { border-color: var(--im-plum); color: var(--im-plum); }

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

.im-header {
	position: fixed; inset: 0 0 auto; z-index: 50;
	background: rgba(251, 248, 248, .82);
	backdrop-filter: blur(18px) saturate(140%); -webkit-backdrop-filter: blur(18px) saturate(140%);
	border-bottom: 1px solid rgba(42, 31, 37, .08);
	color: var(--im-ink);
	transition: box-shadow .4s ease, background .45s ease, color .45s ease, border-color .45s ease;
}
.admin-bar .im-header { top: var(--wp-admin--admin-bar--height, 32px); }
@media (max-width: 600px) { .admin-bar.is-scrolled .im-header { top: 0; } }
/* Au-dessus du hero photo : barre translucide claire, texte blanc. */
.im-over-hero:not(.is-scrolled):not(.is-menu-open) .im-header {
	background: rgba(255, 255, 255, .10);
	border-bottom-color: rgba(255, 255, 255, .22);
	color: var(--im-white);
}
.is-scrolled .im-header { box-shadow: 0 12px 32px -22px rgba(42, 31, 37, .4); }
.im-solid-header .im-main { padding-top: var(--im-header-h); }

.im-header-bar {
	max-width: var(--im-max); margin: 0 auto; padding: 0 var(--im-gutter); height: var(--im-header-h);
	display: flex; align-items: center; justify-content: space-between; gap: 20px;
}
.im-logo { display: inline-flex; flex-direction: column; align-items: stretch; line-height: 1; color: inherit; flex-shrink: 0; }
.im-logo:hover { color: inherit; }
.im-logo-name { font-family: var(--im-serif); font-size: 25px; letter-spacing: .32em; margin-right: -.32em; }
.im-logo-sub {
	display: flex; align-items: center; gap: 8px; margin-top: 6px;
	font-size: 8.5px; letter-spacing: .3em; text-transform: uppercase; font-weight: 500; opacity: .85;
}
.im-logo-sub span { flex: 1; height: 1px; background: currentColor; opacity: .45; }

.im-nav { display: none; align-items: center; gap: 4px; height: 100%; }
.im-nav-btn {
	position: relative; height: 100%; background: none; border: 0; padding: 10px 14px;
	display: inline-flex; align-items: center; gap: 6px; font-size: 14.5px; color: inherit; cursor: pointer;
}
.im-nav-btn svg { opacity: .7; transition: transform .35s var(--im-ease); }
.im-nav-btn::after {
	content: ''; position: absolute; left: 14px; right: 14px; bottom: 22px; height: 1px; background: var(--im-rose);
	transform: scaleX(0); transform-origin: left; transition: transform .4s var(--im-ease);
}
.im-nav-btn[aria-expanded="true"] svg { transform: rotate(180deg); }
.im-nav-btn[aria-expanded="true"]::after { transform: scaleX(1); }

.im-header-actions { display: flex; align-items: center; gap: 10px; }
.im-burger {
	width: 44px; height: 44px; border-radius: var(--im-radius); border: 1px solid currentColor; background: transparent;
	color: inherit; cursor: pointer; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 5px;
}
.im-burger span { width: 16px; height: 1.5px; background: currentColor; transition: transform .3s ease; }
.im-burger[aria-expanded="true"] span:first-child { transform: translateY(3.25px) rotate(45deg); }
.im-burger[aria-expanded="true"] span:last-child { transform: translateY(-3.25px) rotate(-45deg); }

@media (max-width: 479px) {
	.im-header-actions .im-btn { display: none; }
}

/* Méga-menu (desktop) */
.im-mega {
	display: none; position: absolute; top: 100%; left: 0; right: 0;
	background: var(--im-bg); color: var(--im-ink); border-top: 1px solid rgba(42, 31, 37, .08);
	box-shadow: 0 30px 60px -30px rgba(42, 31, 37, .35);
	opacity: 0; transform: translateY(-10px); pointer-events: none;
	transition: opacity .35s ease, transform .45s var(--im-ease);
}
.is-menu-open .im-mega { opacity: 1; transform: none; pointer-events: auto; }
.im-mega-inner { position: relative; max-width: var(--im-max); margin: 0 auto; height: 420px; padding: 0 48px; }
.im-mega-panel {
	position: absolute; inset: 0 48px; display: grid; grid-template-columns: 220px 1fr 1.4fr; gap: 48px; padding: 36px 0;
	opacity: 0; pointer-events: none; transition: opacity .35s ease;
}
.im-mega-panel.is-active { opacity: 1; pointer-events: auto; }
.im-mega-img { position: relative; height: 100%; border-radius: var(--im-radius); overflow: hidden; background: var(--im-blush); }
.im-mega-img img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.im-mega-intro { display: flex; flex-direction: column; justify-content: center; }
.im-mega-intro .im-eyebrow { font-size: 11px; }
.im-mega-intro p { color: var(--im-muted); font-size: 15px; line-height: 1.6; max-width: 300px; }
.im-mega-intro .im-mega-title { font-family: var(--im-serif); font-size: 36px; line-height: 1.08; margin: 10px 0 14px; color: var(--im-ink); max-width: none; }
.im-mega-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; justify-content: center; }
.im-mega-list a {
	display: flex; justify-content: space-between; align-items: center; gap: 16px; padding: 11px 0;
	border-bottom: 1px solid var(--im-line); font-family: var(--im-serif); font-size: 19px; color: var(--im-ink);
	transition: padding .3s ease, color .3s ease;
}
.im-mega-list li:last-child a { border-bottom: 0; }
.im-mega-list.is-dense a { padding: 9px 0; font-size: 18px; }
.im-mega-list a:hover { padding-left: 10px; color: var(--im-rose); }
.im-mega-list .im-arrow { font-size: 14px; }
.im-tag {
	font-family: var(--im-sans); font-size: 12px; letter-spacing: .08em; color: var(--im-plum);
	border: 1px solid rgba(127, 17, 70, .3); border-radius: var(--im-radius); padding: 4px 10px; white-space: nowrap;
}

/* Menu mobile */
.im-mobile {
	position: fixed; top: var(--im-header-h); left: 0; right: 0; bottom: 0; z-index: 49;
	background: var(--im-bg); overflow-y: auto; padding: 12px 20px 40px;
	opacity: 0; visibility: hidden; transform: translateY(-8px);
	transition: opacity .3s ease, transform .4s var(--im-ease), visibility 0s linear .4s;
}
.admin-bar .im-mobile { top: calc(var(--im-header-h) + var(--wp-admin--admin-bar--height, 46px)); }
.is-mobile-open .im-mobile { opacity: 1; visibility: visible; transform: none; transition-delay: 0s; }
.im-acc { border-bottom: 1px solid var(--im-line-2); }
.im-acc-btn {
	width: 100%; display: flex; justify-content: space-between; align-items: center; gap: 16px; background: none; border: 0;
	padding: 20px 0; font-family: var(--im-serif); font-size: 28px; line-height: 1.15; color: var(--im-ink); text-align: left; cursor: pointer;
}
.im-acc-sign::before { content: '+'; font-family: var(--im-sans); font-size: 20px; color: var(--im-rose); }
.im-acc-btn[aria-expanded="true"] .im-acc-sign::before { content: '−'; }
.im-acc-panel { display: flex; flex-direction: column; padding: 0 0 16px; }
.im-acc-panel[hidden] { display: none; }
.im-acc-panel a { padding: 11px 0 11px 14px; font-size: 16px; color: var(--im-ink-2); border-left: 1px solid rgba(156, 61, 102, .35); }
.im-mobile-contact { margin-top: 28px; font-size: 14px; color: var(--im-muted); line-height: 1.9; }
.im-mobile-contact a { color: var(--im-muted); }

.im-nav-btn { white-space: nowrap; }
/* 1080 à 1240 px : on resserre pour garder chaque libellé sur une ligne. */
@media (min-width: 1080px) and (max-width: 1239px) {
	.im-header-bar { gap: 12px; padding-inline: 24px; }
	.im-nav { gap: 0; }
	.im-nav-btn { padding-inline: 8px; font-size: 13.5px; gap: 4px; }
	.im-nav-btn::after { left: 8px; right: 8px; }
	.im-header-actions .im-btn--sm { padding-inline: 16px; font-size: 13.5px; }
}

@media (min-width: 1080px) {
	.im-nav { display: flex; }
	.im-mega { display: block; }
	.im-burger, .im-mobile { display: none; }
}

/* ==========================================================================
   Pied de page
   ========================================================================== */

.im-footer { background: var(--im-wine); color: var(--im-pink-text); padding: clamp(56px, 8vw, 96px) 0 32px; }
.im-footer a { color: var(--im-bg); }
.im-footer a:hover { color: var(--im-pink-soft); }
.im-footer-grid {
	display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 220px), 1fr)); gap: 40px;
	padding-bottom: 48px; border-bottom: 1px solid rgba(247, 242, 234, .14);
}
.im-footer-logo { display: flex; flex-direction: column; line-height: 1; }
.im-footer-logo .im-logo-name { font-size: 34px; margin-right: 0; }
.im-footer-logo-sub { margin-top: 8px; font-size: 9.5px; letter-spacing: .3em; text-transform: uppercase; font-weight: 500; color: #dcc2ce; }
.im-footer-tagline { margin-top: 18px; font-size: 14.5px; line-height: 1.65; color: #dcc2ce; max-width: 260px; }
.im-footer-col { display: flex; flex-direction: column; gap: 10px; font-size: 15px; line-height: 1.5; }
.im-footer-title {
	font-family: var(--im-sans); font-size: 12px; letter-spacing: .2em; text-transform: uppercase;
	color: #ebc4d6; margin-bottom: 6px; font-weight: 400;
}
.im-footer-bottom {
	display: flex; flex-wrap: wrap; justify-content: space-between; gap: 16px; padding-top: 24px;
	font-size: 13px; color: #c9a7b7;
}
.im-footer-legal { display: flex; flex-wrap: wrap; gap: 20px; }
.im-footer .im-footer-legal a { color: #c9a7b7; }
.im-footer-credits { margin-top: 22px; font-size: 12px; color: #b48597; }

/* Bouton flottant RDV */
.im-fab {
	position: fixed; right: clamp(14px, 2.5vw, 28px); bottom: clamp(14px, 2.5vw, 28px); z-index: 60;
	display: flex; align-items: center; gap: 10px; background: var(--im-plum); color: var(--im-bg);
	border-radius: var(--im-radius); padding: 15px 20px 15px 16px;
	font-size: 13px; letter-spacing: .1em; text-transform: uppercase; font-weight: 600;
	box-shadow: 0 18px 40px -16px rgba(58, 10, 33, .6);
	transition: opacity .4s ease, transform .5s var(--im-ease), background .3s ease;
}
.im-fab:hover { background: var(--im-plum-dark); color: var(--im-bg); }
.is-book-open .im-fab, .is-modal-open .im-fab,
.is-book-open .im-contact, .is-modal-open .im-contact { opacity: 0; transform: translateY(20px); pointer-events: none; }

/* Bouton flottant Contact (à gauche) : ouvre deux bulles, téléphone et e-mail */
.im-contact {
	position: fixed; left: clamp(14px, 2.5vw, 28px); bottom: clamp(14px, 2.5vw, 28px); z-index: 60;
	display: flex; flex-direction: column; align-items: flex-start; gap: 8px;
	transition: opacity .4s ease, transform .5s var(--im-ease);
}
.im-contact .im-fab { position: static; background: var(--im-white); color: var(--im-plum); border: 0; cursor: pointer; font-family: inherit; }
.im-contact .im-fab:hover, .im-contact .im-fab[aria-expanded="true"] { background: var(--im-blush-3); color: var(--im-plum); }
.im-contact-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; align-items: flex-start; gap: 8px; }
.im-contact-list[hidden] { display: none; }
.im-contact-list a {
	display: flex; align-items: center; gap: 10px; padding: 12px 16px; border-radius: var(--im-radius);
	background: var(--im-white); color: var(--im-ink); font-size: 14.5px; white-space: nowrap;
	box-shadow: 0 14px 34px -14px rgba(58, 10, 33, .5);
	animation: im-bubble .35s var(--im-ease) both;
}
.im-contact-list li:first-child a { animation-delay: .06s; }
.im-contact-list a:hover { color: var(--im-plum); }
.im-contact-list svg { flex: none; color: var(--im-plum); }
@keyframes im-bubble { from { opacity: 0; transform: translateY(10px) scale(.96); } to { opacity: 1; transform: none; } }

/* ==========================================================================
   Tiroir de rendez-vous
   ========================================================================== */

.im-book { position: fixed; inset: 0; z-index: 90; pointer-events: none; }
.is-book-open .im-book { pointer-events: auto; }
.im-book-backdrop {
	position: absolute; inset: 0; background: rgba(42, 16, 28, .35);
	backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px);
	opacity: 0; transition: opacity .4s ease;
}
.is-book-open .im-book-backdrop { opacity: 1; }
.im-book-panel {
	position: absolute; top: 0; right: 0; bottom: 0; width: min(480px, 100%);
	background: var(--im-bg); box-shadow: -30px 0 80px -40px rgba(42, 16, 28, .6);
	display: flex; flex-direction: column;
	transform: translateX(105%); transition: transform .55s var(--im-ease);
}
.is-book-open .im-book-panel { transform: none; }
.im-book-head {
	display: flex; justify-content: space-between; align-items: center; gap: 16px;
	padding: 22px 28px; border-bottom: 1px solid var(--im-line);
}
.im-book-title { font-size: 26px; margin-top: 4px; }
.im-book-form { flex: 1; display: flex; flex-direction: column; min-height: 0; }
.im-book-body { flex: 1; overflow-y: auto; padding: 26px 28px 32px; display: flex; flex-direction: column; gap: 28px; }
.im-book-step { border: 0; margin: 0; padding: 0; min-width: 0; }
.im-book-step legend, .im-book-label { display: block; padding: 0; margin-bottom: 12px; }
.im-book-hint { text-transform: none; letter-spacing: 0; font-weight: 400; color: var(--im-faint); }

.im-cal { background: var(--im-white); border: 1px solid var(--im-line); border-radius: var(--im-radius); padding: 16px; }
.im-cal-head { display: flex; justify-content: space-between; align-items: center; margin-bottom: 12px; }
.im-cal-month { font-family: var(--im-serif); font-size: 19px; text-transform: capitalize; }
.im-cal-nav { width: 34px; height: 34px; border: 0; background: transparent; font-size: 16px; color: var(--im-ink); cursor: pointer; }
.im-cal-nav:disabled { opacity: .3; cursor: default; }
.im-cal-week, .im-cal-days { display: grid; grid-template-columns: repeat(7, 1fr); gap: 4px; }
.im-cal-week { text-align: center; font-size: 11px; letter-spacing: .08em; color: var(--im-faint); margin-bottom: 6px; }
.im-cal-day {
	position: relative; aspect-ratio: 1; border: 0; border-radius: var(--im-radius);
	background: var(--im-blush-2); color: var(--im-ink); font-size: 14px; cursor: pointer; transition: background .2s ease;
}
.im-cal-day:hover:not(:disabled) { background: var(--im-blush-3); }
.im-cal-day:disabled { background: transparent; color: #c9bdc3; cursor: default; }
.im-cal-day.is-selected { background: var(--im-plum); color: var(--im-bg); }
.im-cal-day.has-pick::after {
	content: ''; position: absolute; left: 50%; bottom: 5px; width: 4px; height: 4px; margin-left: -2px;
	border-radius: 50%; background: var(--im-plum);
}
.im-cal-day.is-selected.has-pick::after { background: var(--im-bg); }

.im-slots { margin-top: 14px; }
.im-slots-day { font-size: 14px; color: var(--im-ink-2); margin-bottom: 10px; }
.im-slots-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 6px; }
.im-slot {
	padding: 10px 0; border-radius: var(--im-radius); border: 1px solid rgba(42, 31, 37, .16);
	background: var(--im-white); color: var(--im-ink); font-size: 14px; cursor: pointer; transition: all .2s ease;
}
.im-slot[aria-pressed="true"] { background: var(--im-plum); border-color: var(--im-plum); color: var(--im-bg); }
.im-picked { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 14px; }
.im-picked:empty { display: none; }
.im-picked button {
	display: flex; align-items: center; gap: 8px; padding: 8px 12px; border-radius: var(--im-radius); border: 0;
	background: var(--im-blush-3); color: var(--im-plum); font-size: 13px; cursor: pointer;
}

.im-fields { display: grid; gap: 10px; }
.im-fields-row { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 10px; }
.im-input {
	width: 100%; padding: 13px 14px; border: 1px solid rgba(42, 31, 37, .18); border-radius: var(--im-radius);
	background: var(--im-white); font: inherit; font-size: 15px; color: var(--im-ink); resize: vertical;
}
.im-input:focus { outline: none; border-color: var(--im-plum); box-shadow: 0 0 0 3px rgba(127, 17, 70, .12); }
.im-check { display: flex; align-items: center; gap: 10px; font-size: 14px; color: var(--im-ink-2); }
.im-check input { accent-color: var(--im-plum); width: 16px; height: 16px; }
.im-book-foot { padding: 18px 28px 24px; border-top: 1px solid var(--im-line); background: var(--im-white); }
.im-book-foot .im-btn { font-size: 13.5px; letter-spacing: .1em; padding: 17px 24px; }
.im-book-foot .im-btn:hover { transform: none; }
.im-book-note { margin-top: 10px; font-size: 12.5px; line-height: 1.5; color: var(--im-faint); text-align: center; }

.im-book-sent {
	flex: 1; display: flex; flex-direction: column; justify-content: center; align-items: center;
	padding: 40px 32px; text-align: center;
}
.im-book-sent[hidden] { display: none; }
.im-book-check {
	width: 64px; height: 64px; border-radius: 50%; background: var(--im-blush-3);
	display: flex; align-items: center; justify-content: center; color: var(--im-plum); font-size: 26px;
}
.im-book-sent h3 { font-size: 32px; margin: 22px 0 12px; }
.im-book-sent p { font-size: 15.5px; line-height: 1.65; color: var(--im-ink-2); max-width: 340px; margin-bottom: 8px; }
.im-book-sent .im-book-sub { font-size: 15px; color: var(--im-muted); margin-bottom: 28px; }
.im-book-sent strong { font-weight: 600; }

/* ==========================================================================
   Fenêtre de démo
   ========================================================================== */

.im-modal {
	position: fixed; inset: 0; z-index: 100; display: flex; align-items: center; justify-content: center; padding: 20px;
	opacity: 0; pointer-events: none; transition: opacity .45s ease;
}
.is-modal-open .im-modal { opacity: 1; pointer-events: auto; }
.im-modal-backdrop {
	position: absolute; inset: 0; background: rgba(58, 10, 33, .3);
	backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px);
}
.im-modal-box {
	position: relative; max-width: 540px; width: 100%; max-height: calc(100vh - 40px); overflow-y: auto;
	background: var(--im-bg); border-radius: 6px; padding: clamp(32px, 5vw, 52px); text-align: center;
	box-shadow: 0 40px 90px -30px rgba(30, 34, 28, .55);
	transform: translateY(18px) scale(.97); transition: transform .55s var(--im-ease);
}
.is-modal-open .im-modal-box { transform: none; }
.im-modal-dots { display: flex; justify-content: center; gap: 6px; margin-bottom: 22px; }
.im-modal-dots span { width: 8px; height: 8px; border-radius: 50%; background: var(--im-pink); }
.im-modal-dots span:nth-child(2) { background: #b48597; }
.im-modal-dots span:nth-child(3) { background: var(--im-plum); }
.im-modal-box h2 { font-size: clamp(30px, 4vw, 40px); line-height: 1.1; margin-bottom: 18px; text-wrap: balance; }
.im-modal-box p { font-size: 16px; line-height: 1.65; color: var(--im-ink-2); margin-bottom: 14px; text-wrap: pretty; }
.im-modal-box .im-modal-sub { font-size: 15px; color: var(--im-muted); margin-bottom: 30px; }
.im-modal-box .im-btn { padding: 16px 32px; }
.im-modal-foot { margin-top: 30px; padding-top: 18px; border-top: 1px solid var(--im-line); font-size: 12px; letter-spacing: .06em; color: var(--im-faint); }

/* ==========================================================================
   Apparitions au défilement (pilotées par main.js)
   ========================================================================== */

.js [data-reveal] {
	opacity: 0; transform: translateY(28px);
	transition: opacity 1s var(--im-ease), transform 1.4s var(--im-ease);
	transition-delay: var(--im-delay, 0ms);
}
.js [data-reveal="left"] { transform: translateX(-48px); }
.js [data-reveal="right"] { transform: translateX(64px); }
.js [data-reveal="scale"] { transform: scale(.94); }
.js [data-reveal="clip"] { opacity: 1; transform: scale(1.04); }
.js [data-reveal="clip"] > * { clip-path: inset(100% 0 0 0); transition: clip-path 1.3s cubic-bezier(.7, 0, .2, 1) var(--im-delay, 0ms); }
.js [data-reveal].is-in { opacity: 1; transform: none; }
.js [data-reveal="clip"].is-in > * { clip-path: inset(0 0 0 0); }

@media (prefers-reduced-motion: reduce) {
	html { scroll-behavior: auto; }
	*, *::before, *::after { animation: none !important; transition-duration: .01ms !important; transition-delay: 0s !important; }
	.js [data-reveal], .js [data-reveal] > * { opacity: 1 !important; transform: none !important; clip-path: none !important; }
}

/* ==========================================================================
   Pages génériques
   ========================================================================== */

.im-section { padding-block: var(--im-section); }
.im-generic { max-width: 860px; }
.im-generic > * + * { margin-top: 24px; }
.im-prose { font-size: 17px; line-height: 1.75; color: var(--im-ink-2); }
.im-prose > * + * { margin-top: 1em; }
.im-prose h2, .im-prose h3 { color: var(--im-ink); line-height: 1.15; margin-top: 1.6em; }
.im-prose h2 { font-size: 34px; }
.im-prose h3 { font-size: 26px; }
.im-prose a { text-decoration: underline; text-underline-offset: 3px; }
.im-prose img { border-radius: var(--im-radius); }
