/*
 * Laura Laune — feuille de styles.
 * Écrite à la main (pas de framework utilitaire) : la fidélité pixel exigée
 * par le handoff — clamp(), cubic-bezier, opacités rgba précises — est plus
 * fiable en CSS direct qu'en classes utilitaires arbitraires.
 */

/* ---------- Police — Plus Jakarta Sans variable, self-hostée (reprise du prototype Next.js) ---------- */
@font-face {
	font-family: 'Plus Jakarta Sans';
	src: url('../fonts/plus-jakarta-sans/plus-jakarta-sans-variable.woff2') format('woff2-variations'),
	     url('../fonts/plus-jakarta-sans/plus-jakarta-sans-variable.woff2') format('woff2');
	font-weight: 200 800;
	font-style: normal;
	font-display: swap;
}

/* ---------- Tokens ---------- */
:root {
	--ll-pink: #f9bdd6;
	--ll-pink-pale: #fce4ee;
	--ll-pink-vpale: #fdf3f7;
	--ll-magenta: #c65370;
	--ll-magenta-press: #96294a; /* dérivé de --ll-magenta comme --ll-magenta-press/--ll-magenta l'étaient (assombri, non fourni par la demande) */
	--ll-ink: #6e1117;
	--ll-ink-bg: #940913; /* fonds pleins (ticker, footer, boutons actifs…) — --ll-ink et ses variantes d'opacité ci-dessous sont réservés au texte/contours */
	--ll-white: #ffffff;

	--ll-ink-70: rgba(110, 17, 23, .7);
	--ll-ink-55: rgba(110, 17, 23, .55);
	--ll-ink-50: rgba(110, 17, 23, .5);
	--ll-ink-42: rgba(110, 17, 23, .42);
	--ll-ink-40: rgba(110, 17, 23, .4);
	--ll-ink-35: rgba(110, 17, 23, .35);
	--ll-ink-22: rgba(110, 17, 23, .22);
	--ll-ink-20: rgba(110, 17, 23, .2);
	--ll-ink-12: rgba(110, 17, 23, .12);
	--ll-ink-09: rgba(110, 17, 23, .09);
	--ll-ink-05: rgba(110, 17, 23, .05);

	--ll-pale-14: rgba(252, 228, 238, .14);
}
:root {
	--ll-pale-22: rgba(252, 228, 238, .22);
	--ll-pale-30: rgba(252, 228, 238, .3);
	--ll-pale-50: rgba(252, 228, 238, .5);
	--ll-pale-70: rgba(252, 228, 238, .7);
	--ll-pale-80: rgba(252, 228, 238, .8);
	--ll-pale-92: rgba(253, 243, 247, .92);

	--ll-ease: cubic-bezier(.2, .8, .2, 1);
	--ll-container: 1180px;
	--ll-pad-x: 32px;
	--ll-section-pad: 104px 0 112px;
}

@media (max-width: 880px) {
	:root {
		--ll-pad-x: 20px;
		--ll-section-pad: 64px 0 72px;
	}
}

/* ---------- Reset minimal ---------- */
html {
	scroll-behavior: smooth;
	/* Le rebond de scroll (iOS/trackpad) révèle le fond de <html>, pas celui
	   de <body>, sans quoi on voit un flash blanc en haut/bas de page. */
	background: var(--ll-pink-vpale);
	overscroll-behavior-y: none;
}
body {
	margin: 0;
	background: var(--ll-pink-vpale);
	color: var(--ll-ink);
	font-family: 'Plus Jakarta Sans', system-ui, sans-serif;
	-webkit-font-smoothing: antialiased;
	overflow-x: hidden;
	overscroll-behavior-y: none;
}
*, *::before, *::after { box-sizing: border-box; }
img { max-width: 100%; display: block; }
a { color: var(--ll-magenta); text-decoration: none; }
a:hover { color: var(--ll-magenta-press); }
input, select, textarea, button { font: inherit; color: inherit; }
::selection { background: var(--ll-pink); color: var(--ll-ink); }
:focus-visible { outline: 2px solid var(--ll-magenta); outline-offset: 3px; }
/* Les styles WooCommerce par défaut sont déqueue (voir inc/woocommerce.php) —
   cette classe utilitaire standard doit être redéfinie à la main, sinon le
   texte "lecteur d'écran seul" que WooCommerce génère (ex. libellé de select)
   s'affiche en clair au lieu d'être masqué visuellement. */
.screen-reader-text {
	position: absolute !important;
	width: 1px; height: 1px;
	overflow: hidden;
	clip: rect(1px, 1px, 1px, 1px);
	white-space: nowrap;
}

/* Footer collé en bas du viewport sur les pages courtes (connexion, 404…) —
   sans effet sur les pages déjà plus hautes que l'écran. */
.ll-page { display: flex; flex-direction: column; min-height: 100vh; }

/* width:100% nécessaire : un enfant direct de .ll-page (flex column, ex. le
   <main> d'index.php) part en shrink-to-fit au lieu de s'étirer jusqu'à
   max-width avant que margin:auto ne le centre — même piège que
   .ll-product__tabs. */
.ll-container { width: 100%; max-width: var(--ll-container); margin: 0 auto; padding: 0 var(--ll-pad-x); }

.ll-fallback-page { padding-top: 100px; padding-bottom: 100px; min-height: 50vh; }
@media (max-width: 700px) {
	.ll-fallback-page { padding-top: 40px; padding-bottom: 40px; }
}

/*
 * Notices WooCommerce classiques (wc_print_notices()) — messages d'ajout au
 * panier, erreurs de stock, etc. Style de base générique : les feuilles de
 * style WooCommerce natives sont désactivées (cf. inc/woocommerce.php), donc
 * sans ça ces notices s'affichent en texte brut non formaté partout où
 * WooCommerce les imprime (fiche produit, panier…), pas seulement dans Mon
 * compte qui a déjà ses propres réglages ci-dessous.
 */
/* Hors de .ll-container dans le DOM (fiche produit, cf. woocommerce_before_single_product) :
   sans ça la notice s'étale en pleine largeur au lieu de suivre la colonne de lecture du site. */
.woocommerce-notices-wrapper {
	max-width: var(--ll-container);
	margin: 24px auto 0;
	padding: 0 var(--ll-pad-x);
}
.woocommerce-message,
.woocommerce-error,
.woocommerce-info {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 12px 16px;
	list-style: none;
	margin: 0 0 24px;
	padding: 14px 18px;
	background: var(--ll-pink-vpale);
	border: none;
	color: var(--ll-magenta-press);
	font-size: 13px;
	font-weight: 600;
}
/* WooCommerce donne le focus programmatique à la notice pour l'accessibilité
   (lecteurs d'écran) — pas une navigation clavier réelle, donc pas besoin de
   l'anneau de focus visible que ça déclenche sinon au clic. */
.woocommerce-message:focus,
.woocommerce-error:focus,
.woocommerce-info:focus { outline: none; }
.woocommerce-info { color: var(--ll-ink-70); font-weight: 400; }
.woocommerce-message li + li,
.woocommerce-error li + li { margin-top: 6px; }
.woocommerce-message .button,
.woocommerce-info .button {
	flex: none;
	order: 2;
	display: inline-flex;
	align-items: center;
	gap: 12px;
	font-size: 11px;
	letter-spacing: .2em;
	text-transform: uppercase;
	font-weight: 500;
	padding: 10px 20px;
	border: none;
	background: var(--ll-magenta);
	color: var(--ll-white);
	text-decoration: none;
	cursor: pointer;
	transition: background .3s;
}
.woocommerce-message .button:hover,
.woocommerce-info .button:hover { background: var(--ll-magenta-press); }

/* Compense le header fixe pour que les ancres n'atterrissent pas dessous. */
#top, #tournee, #musique, #rienaf, #boutique, #contact { scroll-margin-top: 84px; }

@keyframes ll-marquee { from { transform: translateX(0); } to { transform: translateX(-50%); } }
@keyframes ll-bob { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(7px); } }

@media (prefers-reduced-motion: reduce) {
	*, *::before, *::after { animation-duration: .001ms !important; animation-iteration-count: 1 !important; transition-duration: .001ms !important; }
}

/* ---------- Typo partagée ---------- */
.ll-h2 {
	margin: 0;
	font-weight: 700;
	font-size: clamp(34px, 4.4vw, 56px);
	line-height: 1;
	letter-spacing: -.035em;
	text-transform: uppercase;
}
.ll-h2--rienaf { letter-spacing: -.02em; }
.ll-h3 {
	margin: 0;
	font-weight: 500;
	font-size: clamp(24px, 2.8vw, 34px);
	line-height: 1.1;
	letter-spacing: -.015em;
}
.ll-kicker {
	margin: 0;
	font-size: 11px;
	letter-spacing: .34em;
	text-transform: uppercase;
	font-weight: 600;
	color: var(--ll-ink-50);
}
.ll-kicker--footer { color: var(--ll-pale-50); letter-spacing: .4em; font-size: 10.5px; }
.ll-body {
	margin: 0;
	font-size: 15px;
	line-height: 1.75;
	color: var(--ll-ink-70);
	text-wrap: pretty;
}
.ll-section__head { display: flex; flex-direction: column; gap: 10px; padding-bottom: 4px; }
.ll-section { padding: var(--ll-section-pad); }

/* ---------- Reveal (IntersectionObserver cible ces classes) ---------- */
[data-reveal] { transition: opacity .85s var(--ll-ease), transform .85s var(--ll-ease); }
[data-reveal].ll-reveal-hidden { opacity: 0; transform: translateY(22px); }

/* ---------- Boutons ---------- */
.ll-btn {
	display: inline-flex;
	align-items: center;
	gap: 12px;
	font-size: 11.5px;
	letter-spacing: .26em;
	text-transform: uppercase;
	font-weight: 500;
	padding: 15px 34px;
	border: none;
	cursor: pointer;
	transition: background .3s, color .3s, transform .3s, gap .3s;
}
.ll-btn--accent { background: var(--ll-magenta); color: var(--ll-white); }
.ll-btn--accent:hover { background: var(--ll-magenta-press); color: var(--ll-white); transform: translateY(-2px); }
.ll-btn--ghost { border: 1px solid var(--ll-magenta); color: var(--ll-magenta); padding: 14px 26px; }
.ll-btn--ghost:hover { background: var(--ll-magenta); color: var(--ll-white); gap: 20px; }

/* ================= Header ================= */
.ll-nav {
	position: fixed;
	top: -160px; left: 0; right: 0;
	z-index: 60;
	opacity: 0;
	pointer-events: none;
	background: var(--ll-pale-92);
	-webkit-backdrop-filter: saturate(140%) blur(12px);
	backdrop-filter: saturate(140%) blur(12px);
	box-shadow: 0 1px 0 var(--ll-ink-09);
	transition: top .5s var(--ll-ease), opacity .35s ease;
}
/*
 * Volontairement top plutôt que transform:translateY — un transform actif
 * sur cet ancêtre (même translateY(0)) ferait de lui le référentiel de
 * positionnement de ses descendants fixed, et casserait le panneau mobile
 * plein écran (.ll-nav__links), qui deviendrait confiné à la hauteur de
 * cette barre au lieu de couvrir tout le viewport. Piège vécu, ne pas
 * réintroduire de transform ici.
 */
.ll-nav.is-visible { top: 0; opacity: 1; pointer-events: auto; }
.ll-nav__row {
	max-width: var(--ll-container);
	margin: 0 auto;
	padding: 18px var(--ll-pad-x);
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 24px;
}
.ll-nav__logo { display: flex; align-items: center; }
.ll-nav__logo img { width: 104px; height: auto; }
.ll-nav__links { display: flex; gap: 30px; align-items: center; }
.ll-nav__links a {
	font-size: 11.5px;
	letter-spacing: .22em;
	text-transform: uppercase;
	color: var(--ll-ink);
	font-weight: 500;
	padding-bottom: 3px;
	border-bottom: 1px solid transparent;
	transition: border-color .3s, color .3s;
}
.ll-nav__links a:hover { border-bottom-color: var(--ll-magenta); color: var(--ll-magenta); }
.ll-nav__progress-track { height: 2px; background: rgba(178, 27, 94, .12); }
.ll-nav__progress-fill { height: 100%; width: 0%; background: var(--ll-magenta); transition: width .12s linear; }

.ll-nav__burger {
	display: none;
	width: 32px; height: 32px;
	flex-direction: column;
	align-items: flex-end;
	justify-content: center;
	gap: 6px;
	background: none;
	border: none;
	padding: 0;
	cursor: pointer;
}
.ll-nav__burger span { display: block; height: 1px; width: 100%; background: var(--ll-ink-bg); transition: transform .3s, opacity .3s, width .3s; }
.ll-nav__burger span:nth-child(2) { width: 70%; }

/* ================= Hero ================= */
.ll-hero {
	position: relative;
	min-height: 100vh;
	min-height: 100dvh;
	background: var(--ll-pink);
	display: flex;
	align-items: flex-end;
	overflow: hidden;
}
.ll-hero__media { position: absolute; inset: 0; overflow: hidden; }
.ll-hero__img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.ll-hero__gradient {
	position: absolute; inset: 0;
	background: linear-gradient(180deg, rgba(249, 189, 214, .55) 0%, rgba(249, 189, 214, 0) 26%, rgba(249, 189, 214, 0) 52%, rgba(249, 189, 214, .9) 88%);
	pointer-events: none;
}
.ll-hero__content {
	position: relative;
	z-index: 2;
	width: 100%;
	max-width: var(--ll-container);
	margin: 0 auto;
	padding: 0 var(--ll-pad-x) 92px;
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 26px;
	pointer-events: none;
}
.ll-hero__content .ll-btn { pointer-events: auto; }
.ll-hero__logo { margin: 0; width: min(58vw, 620px); min-width: 220px; line-height: 0; }
.ll-hero__logo img { width: 100%; height: auto; filter: drop-shadow(0 2px 34px rgba(148, 20, 74, .22)); }
.ll-hero__scrollmark {
	margin-top: 8px;
	width: 1px; height: 44px;
	background: linear-gradient(180deg, rgba(46, 13, 30, .4), transparent);
	animation: ll-bob 2.6s ease-in-out infinite;
}

/* ================= Bandeau villes ================= */
.ll-ticker { background: var(--ll-ink-bg); color: var(--ll-pink-pale); padding: 15px 0; overflow: hidden; white-space: nowrap; }
.ll-ticker__track { display: inline-flex; gap: 44px; animation: ll-marquee 48s linear infinite; padding-right: 44px; }
.ll-ticker__item { font-size: 11.5px; letter-spacing: .34em; text-transform: uppercase; opacity: .82; }
.ll-ticker__sep { opacity: .5; }
.ll-ticker__sep:last-child { display: none; }

/* ================= Tournée ================= */
.ll-section--tournee { background: var(--ll-pink-vpale); }

.ll-tour-filters { display: flex; gap: 18px; flex-wrap: wrap; align-items: center; justify-content: space-between; margin: 32px 0 48px; }
.ll-tour-search { position: relative; flex: 1 1 280px; max-width: 380px; }
.ll-tour-search input {
	width: 100%;
	background: var(--ll-white);
	border: 1px solid var(--ll-ink-12);
	border-radius: 999px;
	padding: 13px 20px;
	font-size: 14px;
	letter-spacing: .01em;
	transition: border-color .3s, box-shadow .3s;
}
.ll-tour-search input::placeholder { color: rgba(46, 13, 30, .32); }
.ll-tour-search input:focus { border-color: var(--ll-magenta); box-shadow: 0 0 0 3px rgba(178, 27, 94, .08); outline: none; }

.ll-tour-pills { display: flex; gap: 8px; flex-wrap: wrap; }
.ll-pill {
	border: 1px solid var(--ll-ink-20);
	background: transparent;
	color: var(--ll-ink-55);
	border-radius: 999px;
	padding: 11px 20px;
	font-size: 10.5px;
	letter-spacing: .22em;
	text-transform: uppercase;
	font-weight: 500;
	cursor: pointer;
	transition: all .3s;
}
.ll-pill.is-active { border-color: var(--ll-magenta); background: var(--ll-magenta); color: var(--ll-white); }

.ll-tour-month { margin-bottom: 52px; }
.ll-tour-month__label { margin: 0 0 10px; font-size: 11.5px; letter-spacing: .34em; text-transform: uppercase; font-weight: 700; color: var(--ll-ink); }

.ll-tour-row {
	display: flex;
	align-items: center;
	gap: 28px;
	flex-wrap: wrap;
	padding: 22px 0;
	border-top: 1px solid var(--ll-ink-09);
	transition: background .35s, padding .35s;
	color: var(--ll-ink); /* neutralise la couleur de lien par défaut quand la ligne est un <a> (date réservable) */
}
.ll-tour-row[hidden] { display: none; } /* display:flex ci-dessus gagne sinon contre [hidden] (même spécificité, JS filtre tournée cassé sans ça) */
.ll-tour-row:hover { background: var(--ll-pink-pale); padding-left: 16px; padding-right: 16px; }
.ll-tour-row--clickable { cursor: pointer; }
.ll-tour-row__date { width: 82px; flex: none; }
.ll-tour-row__dow { margin: 0; font-size: 10.5px; letter-spacing: .2em; text-transform: uppercase; color: var(--ll-ink-42); }
/* Jour + mois sur une seule ligne, même graisse — ratio repris du Next.js (dow/heure 11px tertiaire, jour+mois 14px gras primaire), pas un gros chiffre isolé. */
.ll-tour-row__day { margin: 2px 0 0; font-size: 14px; font-weight: 700; line-height: 1.2; letter-spacing: -.01em; white-space: nowrap; }
.ll-tour-row__month { font-size: 14px; font-weight: 700; letter-spacing: -.01em; color: inherit; }
.ll-tour-row__time { margin: 3px 0 0; font-size: 11px; color: var(--ll-ink-42); letter-spacing: .08em; }
.ll-tour-row__place { flex: 1 1 auto; min-width: 180px; }
.ll-tour-row__city { margin: 0; font-size: 16px; font-weight: 500; letter-spacing: .14em; text-transform: uppercase; }
.ll-tour-row__venue { margin: 4px 0 0; font-size: 13px; color: var(--ll-ink-55); }
.ll-tour-row__status { flex: none; }

.ll-chip {
	display: inline-block;
	border-radius: 0;
	padding: 10px 20px;
	font-size: 10.5px;
	letter-spacing: .22em;
	text-transform: uppercase;
	font-weight: 500;
	white-space: nowrap;
}
.ll-chip--go { background: var(--ll-magenta); color: var(--ll-white); }
/* Sans ça, la règle globale a:hover (magenta pressé) s'applique et donne un texte quasi illisible sur le fond magenta du chip. */
.ll-chip--go:hover { color: var(--ll-ink); }
.ll-chip--warn { background: var(--ll-ink-bg); color: var(--ll-white); }
.ll-chip--soon { border-radius: 999px; color: var(--ll-ink-50); font-weight: 400; }
.ll-chip--off { background: var(--ll-ink-05); color: var(--ll-ink-35); font-weight: 400; text-decoration: line-through; }

.ll-tour-empty { margin: 40px 0; text-align: center; font-size: 14px; color: rgba(46, 13, 30, .45); font-weight: 300; }

/* Tournée masquée (switch admin) — invite newsletter à la place du tableau.
   Réutilise le formulaire du footer (mêmes classes, même comportement JS),
   mais celui-ci est pensé pour un fond sombre : on repasse en couleurs
   sombres pour le fond clair de cette section. */
.ll-instagram-grid {
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	gap: 4px;
	max-width: 640px;
	margin: 24px auto 0;
}
.ll-instagram-grid__item { display: block; position: relative; aspect-ratio: 4 / 5; overflow: hidden; background: var(--ll-pink-pale); } /* format portrait actuel d'Instagram, plus le carré historique */
.ll-instagram-grid__item img { width: 100%; height: 100%; object-fit: cover; transition: transform .4s var(--ll-ease); }
.ll-instagram-grid__item:hover img { transform: scale(1.06); }

.ll-tour-soon { text-align: center; max-width: 480px; margin: 48px auto 0; }
.ll-tour-soon__form.ll-footer__newsletter-form { margin-top: 20px; }
.ll-tour-soon__form .ll-footer__newsletter-input { color: var(--ll-ink); border-bottom-color: var(--ll-ink-22); }
.ll-tour-soon__form .ll-footer__newsletter-input::placeholder { color: var(--ll-ink-42); }
.ll-tour-soon__form .ll-footer__newsletter-input:focus { border-bottom-color: var(--ll-magenta); }

/* ================= Musique ================= */
.ll-section--musique { background: var(--ll-pink); }
.ll-music-grid { display: grid; grid-template-columns: minmax(260px, 380px) 1fr; gap: 56px; align-items: center; padding-top: 56px; }

.ll-music-cover-wrap { position: relative; }
.ll-music-cover-frame { position: absolute; inset: 14px -14px -14px 14px; background: var(--ll-ink-12); }
.ll-music-cover { position: relative; width: 100%; aspect-ratio: 1; overflow: hidden; transition: transform .5s var(--ll-ease); }
.ll-music-cover-wrap:hover .ll-music-cover { transform: translate(-6px, -6px); }
.ll-music-cover img { width: 100%; height: 100%; object-fit: cover; }

.ll-music-info { display: flex; flex-direction: column; gap: 26px; }
.ll-music-info__head { display: flex; flex-direction: column; gap: 8px; align-items: flex-start; }
.ll-music-info__desc { max-width: 440px; }

.ll-platforms { display: flex; flex-direction: column; max-width: 420px; }
.ll-platform-row {
	display: flex; align-items: center; gap: 14px;
	padding: 14px 4px;
	border-top: 1px solid var(--ll-ink-12);
	color: var(--ll-ink);
	transition: padding .3s, color .3s;
}
.ll-platform-row--last { border-bottom: 1px solid var(--ll-ink-12); }
.ll-platform-row:hover { padding-left: 14px; color: var(--ll-magenta-press); }
.ll-platform-row__logo { width: 17px; height: 17px; flex: none; }
.ll-platform-row__name { flex: 1; font-size: 12px; letter-spacing: .24em; text-transform: uppercase; font-weight: 500; }
.ll-platform-row__arrow { font-size: 15px; font-weight: 300; }

/* ================= Rienaf ================= */
.ll-rienaf { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); background: var(--ll-pink-pale); min-height: 560px; }
.ll-rienaf__media { position: relative; min-height: 420px; overflow: hidden; }
.ll-rienaf__media img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.ll-rienaf__content { display: flex; flex-direction: column; justify-content: center; gap: 22px; padding: 88px 64px; }
.ll-rienaf__content .ll-body { max-width: 420px; }
.ll-rienaf__content .ll-btn { align-self: flex-start; }

/* ================= Boutique ================= */
.ll-section--boutique { background: var(--ll-pink); }
.ll-shop-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 32px; padding-top: 52px; }
.ll-shop-card {
	display: flex; flex-direction: column;
	background: var(--ll-pink-vpale);
	color: var(--ll-ink);
	transition: transform .45s var(--ll-ease), box-shadow .45s;
}
.ll-shop-card:hover { transform: translateY(-8px); box-shadow: 0 22px 46px rgba(148, 20, 74, .16); color: var(--ll-ink); }
.ll-shop-card__media { position: relative; width: 100%; aspect-ratio: 4 / 3; overflow: hidden; background: var(--ll-ink-05); }
.ll-shop-card__media img { width: 100%; height: 100%; object-fit: cover; }
.ll-shop-card__placeholder { width: 100%; height: 100%; background: var(--ll-ink-05); }
.ll-shop-card__body { padding: 26px 28px 30px; display: flex; flex-direction: column; gap: 8px; }
.ll-shop-card__title { margin: 0; font-size: 13px; letter-spacing: .22em; text-transform: uppercase; font-weight: 500; }
.ll-shop-card__desc { margin: 0; font-size: 14px; color: var(--ll-ink-55); }
.ll-shop-card__cta { margin-top: 8px; font-size: 11px; letter-spacing: .26em; text-transform: uppercase; color: var(--ll-magenta); }

/* ================= Contact ================= */
.ll-section--contact { background: var(--ll-pink-vpale); }
.ll-contact-grid { display: grid; grid-template-columns: minmax(240px, 1fr) minmax(320px, 1.4fr); gap: 72px; }
.ll-contact-intro { display: flex; flex-direction: column; gap: 14px; }
.ll-contact-intro .ll-body { margin-top: 8px; max-width: 300px; }

.ll-contact-form { display: flex; flex-direction: column; gap: 26px; }
.ll-field { display: flex; flex-direction: column; gap: 9px; }
.ll-field-row { display: grid; grid-template-columns: 1fr 1fr; gap: 26px; }
.ll-field input,
.ll-field select,
.ll-field textarea {
	appearance: none;
	width: 100%;
	background: transparent;
	border: none;
	border-bottom: 1px solid var(--ll-ink-22);
	padding: 11px 0;
	font-size: 15px;
	transition: border-color .3s;
}
.ll-field textarea { resize: vertical; }
.ll-field input::placeholder, .ll-field textarea::placeholder { color: rgba(46, 13, 30, .32); }
.ll-field input:focus, .ll-field select:focus, .ll-field textarea:focus { border-bottom-color: var(--ll-magenta); outline: none; }
.ll-field-honeypot { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }

/* Flèche du <select> — reprise du prototype Next.js (ContactSection.tsx) : un simple glyphe positionné en absolu, non cliquable. */
.ll-select-wrap { position: relative; }
.ll-select-wrap select { padding-right: 24px; cursor: pointer; }
.ll-select-arrow {
	position: absolute;
	right: 0;
	top: 50%;
	transform: translateY(-50%);
	pointer-events: none;
	color: var(--ll-ink-42);
	font-size: 14px;
}

.ll-contact-submit { align-self: flex-start; }
.ll-contact-submit:disabled { opacity: .6; cursor: default; }
.ll-contact-error { margin: 0; color: var(--ll-magenta-press); font-size: 13px; }

/* ================= Footer ================= */
/*
 * Disposition reprise du prototype Next.js (Footer.tsx) : une seule colonne
 * centrée, max-width 768px, plutôt que la grille 2 colonnes + barre du bas
 * séparée qu'on avait — sur desktop comme sur mobile désormais.
 */
.ll-footer { background: var(--ll-ink-bg); color: var(--ll-pink-pale); padding: 76px 0; margin-top: auto; }
.ll-footer__grid {
	max-width: 768px;
	margin: 0 auto;
	display: flex;
	flex-direction: column;
	align-items: center;
	text-align: center;
	gap: 40px;
}
.ll-footer__brand { display: flex; flex-direction: column; align-items: center; gap: 20px; }
.ll-footer__name { margin: 0; font-size: 20px; font-weight: 700; letter-spacing: .18em; text-transform: uppercase; line-height: 1; }
.ll-footer__socials { display: flex; gap: 18px; flex-wrap: wrap; justify-content: center; }
.ll-footer__social-btn {
	display: flex; align-items: center; justify-content: center;
	width: 38px; height: 38px;
	color: var(--ll-pale-70);
	transition: color .3s, background .3s;
}
.ll-footer__social-btn:hover { color: var(--ll-ink); background: var(--ll-pink-pale); }

.ll-footer__newsletter { display: flex; flex-direction: column; align-items: center; text-align: center; gap: 14px; }
.ll-footer__newsletter-text { margin: 0; font-size: 14px; line-height: 1.7; color: var(--ll-pale-80); max-width: 360px; }
.ll-footer__newsletter-form { display: flex; gap: 0; width: 100%; max-width: 360px; margin: 6px auto 0; }
.ll-footer__newsletter-input {
	flex: 1;
	background: transparent;
	border: none;
	border-bottom: 1px solid var(--ll-pale-30);
	padding: 12px 0;
	font-size: 14px;
	color: var(--ll-pink-pale);
	transition: border-color .3s;
}
.ll-footer__newsletter-input::placeholder { color: rgba(252, 228, 238, .4); }
.ll-footer__newsletter-input:focus { border-bottom-color: var(--ll-pink); outline: none; }
.ll-footer__newsletter-btn {
	background: var(--ll-magenta); color: var(--ll-white); border: none;
	padding: 12px 24px; font-size: 11px; letter-spacing: .24em; text-transform: uppercase;
	cursor: pointer; transition: background .3s, color .3s; flex: none;
}
.ll-footer__newsletter-btn:hover { background: var(--ll-pink); color: var(--ll-ink); }

.ll-footer__bottom {
	max-width: 768px; margin: 40px auto 0;
	display: flex; flex-direction: column; align-items: center; text-align: center; gap: 14px;
}
.ll-footer__copy { font-size: 11px; letter-spacing: .14em; color: rgba(252, 228, 238, .4); }
.ll-footer__legal { display: flex; gap: 26px; flex-wrap: wrap; justify-content: center; }
.ll-footer__legal a { font-size: 11px; letter-spacing: .14em; color: rgba(252, 228, 238, .4); }
.ll-footer__legal a:hover { color: var(--ll-pink-pale); }

/* ================= Header — variante boutique (sticky, toujours visible) ================= */
.ll-nav--sticky {
	position: sticky;
	top: 0;
	opacity: 1;
	pointer-events: auto;
}
.ll-nav__links a.is-active {
	color: var(--ll-magenta);
	border-bottom-color: var(--ll-magenta);
}
.ll-nav__actions { display: flex; align-items: center; gap: 20px; margin-left: 20px; }
.ll-nav__icon-btn {
	display: flex;
	align-items: center;
	gap: 9px;
	background: none;
	border: none;
	cursor: pointer;
	padding: 0;
	color: var(--ll-ink);
	transition: color .3s;
}
.ll-nav__icon-btn:hover { color: var(--ll-magenta); }
.ll-nav__icon-btn.is-active { color: var(--ll-magenta); }

.ll-nav__cart { position: relative; }
.ll-cart-count {
	position: absolute;
	top: -7px;
	right: -8px;
	min-width: 16px;
	height: 16px;
	padding: 0 3px;
	border-radius: 999px;
	background: var(--ll-magenta);
	color: var(--ll-white);
	font-size: 10px;
	font-weight: 600;
	line-height: 16px;
	text-align: center;
}
.ll-cart-count[hidden] { display: none; }

/* Bouton flottant compte+panier — mobile uniquement, voir media query. */
.ll-mobile-fab { display: none; }

/* Bouton retour en haut — desktop uniquement, voir media query. */
.ll-scroll-top {
	position: fixed;
	bottom: 24px;
	right: 24px;
	z-index: 40;
	width: 40px;
	height: 40px;
	display: flex;
	align-items: center;
	justify-content: center;
	background: var(--ll-ink-bg);
	color: var(--ll-pink-pale);
	border: none;
	cursor: pointer;
	opacity: 0;
	pointer-events: none;
	transition: opacity .3s;
}
.ll-scroll-top.is-visible { opacity: 1; pointer-events: auto; }

/* ================= Fil d'Ariane ================= */
.ll-breadcrumb {
	max-width: var(--ll-container);
	margin: 0 auto;
	padding: 26px var(--ll-pad-x) 0;
	display: flex;
	gap: 10px;
	align-items: center;
	font-size: 11px;
	letter-spacing: .18em;
	text-transform: uppercase;
	color: var(--ll-ink-42);
}
.ll-breadcrumb a { color: var(--ll-ink-42); }
.ll-breadcrumb a:hover { color: var(--ll-magenta); }
.ll-breadcrumb__current { color: var(--ll-ink); font-weight: 600; }

/* ================= Bloc produit ================= */
.ll-product {
	display: grid;
	grid-template-columns: minmax(0, 1.05fr) minmax(340px, .95fr);
	gap: 72px;
	align-items: start;
	padding: 40px var(--ll-pad-x) 56px;
}

.ll-product__tabs { width: 100%; padding: 0 var(--ll-pad-x) 96px; } /* sans width:100%, un enfant direct de .ll-page (flex column) part en shrink-to-fit au lieu de s'étirer avant que max-width/margin:auto ne le centre */
.ll-product__tabs .ll-accordion { margin-top: 0; }
.ll-product__tabs .ll-accordion__panel { max-width: none; }

.ll-gallery { display: flex; flex-direction: column; gap: 14px; position: sticky; top: 110px; }
.ll-gallery__frame { position: relative; width: 100%; aspect-ratio: 4 / 3; background: var(--ll-pink); overflow: hidden; }
.ll-gallery__view { position: absolute; inset: 0; opacity: 0; transition: opacity .3s; pointer-events: none; }
.ll-gallery__view.is-active { opacity: 1; pointer-events: auto; }
.ll-gallery__view img { width: 100%; height: 100%; object-fit: cover; }
.ll-gallery__placeholder { width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; }
.ll-gallery__placeholder span { font-size: 10.5px; letter-spacing: .22em; text-transform: uppercase; color: var(--ll-ink-42); }
.ll-product__summary { display: flex; flex-direction: column; }
.ll-product__summary h1 {
	margin: 0;
	font-weight: 700;
	font-size: clamp(22px, 2.6vw, 34px);
	line-height: 1.08;
	letter-spacing: -.035em;
	text-transform: uppercase;
}

.ll-price-line { display: flex; align-items: baseline; gap: 14px; margin-top: 22px; }
.ll-price-line__current { font-size: 24px; font-weight: 400; letter-spacing: -.02em; }
.ll-price-line__regular { font-size: 16px; font-weight: 400; color: var(--ll-ink-35); text-decoration: line-through; }
.ll-price-line__badge { font-size: 10.5px; letter-spacing: .22em; text-transform: uppercase; font-weight: 500; color: var(--ll-white); background: var(--ll-magenta); padding: 6px 12px; }

.ll-product__tva { margin: 8px 0 0; font-size: 12px; color: var(--ll-ink-42); }

.ll-product__summary .woocommerce-product-details__short-description { margin: 26px 0 0; font-size: 15px; line-height: 1.75; color: var(--ll-ink-70); max-width: 460px; }
.ll-product__summary .woocommerce-product-details__short-description p { margin: 0; }

.ll-stock-indicator { display: flex; align-items: center; gap: 10px; margin-top: 24px; }
.ll-stock-indicator__dot { width: 7px; height: 7px; border-radius: 999px; background: var(--ll-ink-55); flex: none; }
.ll-stock-indicator__label { font-size: 11px; letter-spacing: .22em; text-transform: uppercase; font-weight: 600; color: var(--ll-ink-55); }
.ll-stock-indicator--low .ll-stock-indicator__dot { background: var(--ll-magenta); }
.ll-stock-indicator--low .ll-stock-indicator__label { color: var(--ll-magenta); }

.ll-divider { height: 1px; background: var(--ll-ink-12); margin: 32px 0; }

.ll-edition-label { margin: 0 0 12px; }
.ll-edition-buttons { display: flex; gap: 10px; flex-wrap: wrap; }
.ll-edition-btn {
	display: flex;
	flex-direction: column;
	gap: 5px;
	align-items: flex-start;
	padding: 15px 22px;
	cursor: pointer;
	background: transparent;
	color: var(--ll-ink);
	border: 1px solid var(--ll-ink-20);
	transition: border-color .3s, background .3s, color .3s;
}
.ll-edition-btn:hover { border-color: var(--ll-magenta); }
.ll-edition-btn__name { font-size: 12px; letter-spacing: .16em; text-transform: uppercase; font-weight: 600; }
.ll-edition-btn__price { font-size: 11px; color: var(--ll-ink-45, rgba(46, 13, 30, .45)); }
.ll-edition-btn.is-active { background: var(--ll-ink-bg); color: var(--ll-white); border-color: var(--ll-ink-bg); }
.ll-edition-btn.is-active .ll-edition-btn__price { color: rgba(255, 255, 255, .72); }

.ll-out-of-stock {
	display: inline-flex; align-items: center;
	margin-top: 34px; padding: 0 26px; height: 54px;
	border: 1px solid var(--ll-ink-20);
	font-size: 13px; font-weight: 600; letter-spacing: .04em; text-transform: uppercase;
	color: var(--ll-ink-55);
}

.ll-qty-add { display: flex; gap: 14px; flex-wrap: wrap; align-items: stretch; margin-top: 34px; }
.ll-qty-stepper { display: flex; align-items: center; border: 1px solid var(--ll-ink-20); }
.ll-qty-stepper button {
	width: 46px; height: 54px;
	background: none; border: none; cursor: pointer;
	font-size: 18px; font-weight: 400; color: var(--ll-ink);
	transition: background .3s;
}
.ll-qty-stepper button:hover { background: var(--ll-pink-pale); }
.ll-qty-stepper__value { width: 44px; text-align: center; font-size: 16px; font-weight: 600; }
.ll-add-to-cart-btn { flex: 1 1 240px; height: 54px; padding: 0 34px; justify-content: center; }

.ll-accordion { margin-top: 34px; border-top: 1px solid var(--ll-ink-12); }
.ll-accordion__item { border-bottom: 1px solid var(--ll-ink-12); }
.ll-accordion__trigger {
	width: 100%; display: flex; align-items: center; justify-content: space-between; gap: 16px;
	background: none; border: none; cursor: pointer; padding: 20px 2px; text-align: left;
	color: var(--ll-ink); transition: color .3s;
}
.ll-accordion__trigger:hover { color: var(--ll-magenta-press); }
.ll-accordion__title { font-size: 12px; letter-spacing: .24em; text-transform: uppercase; font-weight: 600; }
.ll-accordion__sign { font-size: 18px; font-weight: 300; line-height: 1; }
.ll-accordion__panel { padding: 0 2px 24px; font-size: 14px; line-height: 1.8; color: var(--ll-ink-68, rgba(46, 13, 30, .68)); max-width: 520px; }
.ll-accordion__panel p { margin: 0 0 1em; }
.ll-accordion__panel p:last-child { margin-bottom: 0; }

.ll-product__meta { margin: 26px 0 0; font-size: 11px; letter-spacing: .14em; text-transform: uppercase; color: var(--ll-ink-38, rgba(46, 13, 30, .38)); }
.ll-product__meta a { color: var(--ll-ink-38, rgba(46, 13, 30, .38)); }
.ll-product__meta a:hover { color: var(--ll-magenta); }

/* ================= Compléter la commande (upsells) ================= */
.ll-upsells { background: var(--ll-pink); padding: 96px 0 104px; }
.ll-upsells .ll-h2 { margin: 0 0 48px; font-size: clamp(28px, 3.2vw, 42px); }
.ll-shop-card__price { margin-top: 6px; font-size: 14px; font-weight: 600; }

/* ================= Tiroir panier ================= */
.ll-cart-drawer { position: fixed; inset: 0; z-index: 80; visibility: hidden; }
.ll-cart-drawer.is-open { visibility: visible; }
.ll-cart-drawer__overlay {
	position: absolute; inset: 0;
	background: rgba(46, 13, 30, .42);
	opacity: 0;
	transition: opacity .3s;
}
.ll-cart-drawer.is-open .ll-cart-drawer__overlay { opacity: 1; }
.ll-cart-drawer__panel {
	position: absolute; top: 0; right: 0; bottom: 0;
	width: min(440px, 100%);
	background: var(--ll-white);
	display: flex;
	flex-direction: column;
	box-shadow: -22px 0 46px rgba(46, 13, 30, .18);
	transform: translateX(100%);
	transition: transform .4s var(--ll-ease);
}
.ll-cart-drawer.is-open .ll-cart-drawer__panel { transform: translateX(0); }

.ll-cart-drawer__head {
	flex: none;
	display: flex; align-items: center; justify-content: space-between;
	padding: 26px 28px;
	border-bottom: 1px solid var(--ll-ink-09);
}
.ll-cart-drawer__title { display: flex; align-items: center; gap: 10px; font-size: 19px; font-weight: 600; color: var(--ll-ink); }
.ll-cart-drawer__title .ll-cart-count {
	position: static;
	min-width: 22px; height: 22px;
	padding: 0 6px;
	border-radius: 999px;
	background: var(--ll-pink-pale);
	color: var(--ll-magenta);
	font-size: 12px;
	font-weight: 600;
	line-height: 22px;
}
/* Croix identique à .ll-mobile-nav__close (mêmes dimensions de bouton/barres
   et même couleur fixe) — cf. media query 880px plus bas. */
.ll-cart-drawer__close {
	position: relative;
	display: flex; align-items: center; justify-content: center;
	width: 32px; height: 32px;
	background: none;
	border: none;
	border-radius: 999px;
	cursor: pointer;
	transition: background .3s;
}
.ll-cart-drawer__close:hover { background: var(--ll-ink-09); }
.ll-cart-drawer__close span {
	position: absolute;
	width: 22px; height: 1px;
	background: var(--ll-ink-bg);
}
.ll-cart-drawer__close span:first-child { transform: rotate(45deg); }
.ll-cart-drawer__close span:last-child { transform: rotate(-45deg); }

.ll-cart-drawer__body { flex: 1; min-height: 0; display: flex; flex-direction: column; }

.ll-cart-empty {
	flex: 1;
	display: flex; flex-direction: column; align-items: center; justify-content: center;
	gap: 16px;
	padding: 40px 28px;
	text-align: center;
}
.ll-cart-empty__icon {
	display: flex; align-items: center; justify-content: center;
	width: 60px; height: 60px;
	border-radius: 999px;
	background: var(--ll-pink-pale);
	color: var(--ll-magenta);
}
.ll-cart-empty__text { margin: 0; font-size: 14px; color: var(--ll-ink-50); }

.ll-cart-drawer__scroll { flex: 1; min-height: 0; overflow-y: auto; padding: 24px 28px; }

.ll-cart-items { display: flex; flex-direction: column; gap: 14px; }
.ll-cart-item {
	display: flex; gap: 14px; align-items: flex-start;
	padding: 14px;
	border-radius: 16px;
	background: var(--ll-pink-vpale);
}
.ll-cart-item__thumb { width: 64px; height: 64px; border-radius: 10px; background: var(--ll-pink); flex: none; overflow: hidden; }
.ll-cart-item__thumb img { width: 100%; height: 100%; object-fit: cover; }
.ll-cart-item__info { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 6px; }
.ll-cart-item__head { display: flex; align-items: flex-start; justify-content: space-between; gap: 10px; }
.ll-cart-item__title { font-size: 13px; letter-spacing: .04em; font-weight: 600; color: var(--ll-ink); }
.ll-cart-item__meta { font-size: 12px; color: var(--ll-ink-50); }
.ll-cart-item__row { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-top: 2px; }
.ll-cart-item__price { font-size: 13.5px; font-weight: 600; color: var(--ll-ink); }

.ll-cart-item__remove {
	flex: none;
	display: flex; align-items: center; justify-content: center;
	width: 24px; height: 24px;
	margin: -4px -4px 0 0;
	background: none;
	border: none;
	border-radius: 999px;
	cursor: pointer;
	color: var(--ll-ink-40);
	transition: background .3s, color .3s;
}
.ll-cart-item__remove:hover { background: var(--ll-white); color: var(--ll-magenta); }

.ll-cart-item__qty {
	display: flex;
	align-items: center;
	gap: 2px;
	width: fit-content;
	border-radius: 999px;
	background: var(--ll-white);
}
.ll-cart-item__qty button {
	width: 24px; height: 24px;
	display: flex;
	align-items: center;
	justify-content: center;
	background: none;
	border: none;
	border-radius: 999px;
	cursor: pointer;
	font-size: 13px;
	color: var(--ll-ink);
	transition: background .3s, color .3s;
}
.ll-cart-item__qty button:hover:not(:disabled) { background: var(--ll-pink-pale); color: var(--ll-magenta); }
.ll-cart-item__qty button:disabled { opacity: .35; cursor: default; }
.ll-cart-item__qty span { min-width: 18px; text-align: center; font-size: 12.5px; font-weight: 600; }

.ll-cart-drawer__footer {
	flex: none;
	display: flex; flex-direction: column; gap: 16px;
	padding: 22px 28px 28px;
	border-top: 1px solid var(--ll-ink-09);
	background: var(--ll-white);
}
.ll-cart-subtotal { display: flex; justify-content: space-between; align-items: baseline; }
.ll-cart-subtotal__amount { font-size: 20px; font-weight: 600; }
.ll-cart-checkout-btn { width: 100%; text-align: center; padding: 17px 0; justify-content: center; }

/* ================= Mon compte ================= */
.ll-account { padding: 64px 0 96px; }

/* ---------- Connexion / mot de passe (déconnecté) — carte étroite centrée ---------- */
.ll-account__container { display: flex; justify-content: center; }
.ll-account__card { width: 100%; max-width: 460px; }
.ll-account__card--center { text-align: center; }
.ll-account__card--center .ll-kicker { text-align: center; }
.ll-account__head { margin-bottom: 32px; }
.ll-account__head .ll-h2 { margin: 0 0 8px; }
.ll-account__head .ll-body { margin: 0; }

.ll-account__columns { display: flex; }
.ll-account__columns--split { gap: 44px; }
.ll-account__columns--split .ll-account__column { flex: 1 1 0; min-width: 0; }
.ll-account__columns--split .ll-account__column:first-child { padding-right: 44px; border-right: 1px solid var(--ll-ink-09); }
.ll-account__column { flex: 1 1 auto; }
.ll-account__column .ll-h3 { margin: 0 0 20px; }

.ll-account-form { display: flex; flex-direction: column; gap: 20px; }
.ll-account-form .ll-field input { width: 100%; }
.ll-account-form .ll-field .password-input { display: block; width: 100%; } /* wrapper injecté en JS par WooCommerce autour du champ mot de passe */
.ll-account-form .ll-field input,
.ll-account-form .ll-field select {
	border: 1px solid var(--ll-ink-22);
	padding: 12px 16px;
}
.ll-account-form .ll-field input:focus,
.ll-account-form .ll-field select:focus { border-color: var(--ll-magenta); }
.ll-account-form .show-password-input { display: none; } /* injectée en JS par WooCommerce, non stylée côté front */
.ll-account-form__row { display: flex; align-items: center; justify-content: center; }
.ll-account-form__remember {
	display: flex;
	align-items: center;
	gap: 8px;
	font-size: 13px;
	color: var(--ll-ink-70);
	cursor: pointer;
}
.ll-account-form__remember input { cursor: pointer; }
.ll-account-form__submit { width: 100%; justify-content: center; }
.ll-account-form__lost { margin: 0; text-align: center; font-size: 13px; }
.ll-account-form__lost a { color: var(--ll-ink-55); text-decoration: underline; }
.ll-account-form__lost a:hover { color: var(--ll-magenta); }
.ll-account-form .woocommerce-error,
.ll-account-form ~ .woocommerce-error,
.ll-account__card .woocommerce-error {
	list-style: none;
	margin: 0 0 24px;
	padding: 14px 18px;
	background: var(--ll-pink-vpale);
	border: 1px solid var(--ll-pink);
	color: var(--ll-magenta-press);
	font-size: 13px;
}
.ll-account__card .woocommerce-error li + li { margin-top: 6px; }
.ll-account__card .woocommerce-info {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 12px 16px;
	list-style: none;
	margin: 0 0 16px;
	padding: 16px 18px;
	background: var(--ll-pink-vpale);
	border: 1px solid var(--ll-pink);
	color: var(--ll-ink-70);
	font-size: 13px;
}
.ll-account__card .woocommerce-info .button { flex: none; order: 2; }
.ll-account__card .woocommerce-message {
	list-style: none;
	margin: 0 0 20px;
	padding: 14px 18px;
	background: var(--ll-pink-vpale);
	border: 1px solid var(--ll-pink);
	color: var(--ll-magenta-press);
	font-size: 13px;
	font-weight: 600;
}
.ll-account__card .woocommerce-message:focus-visible { outline: none; } /* focus programmatique (a11y) de WooCommerce, pas de navigation clavier — pas besoin d'anneau visible */
.ll-account__card .woocommerce > p { font-size: 14px; line-height: 1.6; color: var(--ll-ink-70); margin: 0; }

/* ---------- Tableau de bord (connecté) — pleine largeur, nav latérale ---------- */
.ll-account__wide .woocommerce-notices-wrapper:empty { display: none; }

.ll-account__dashboard { display: grid; grid-template-columns: 240px minmax(0, 1fr); gap: 64px; align-items: start; padding-bottom: 24px; }

.ll-account-nav { position: sticky; top: 110px; }
.ll-account-nav ul { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; }
.ll-account-nav a {
	display: block;
	padding: 13px 4px 13px 16px;
	font-size: 11.5px;
	letter-spacing: .2em;
	text-transform: uppercase;
	font-weight: 500;
	color: var(--ll-ink-60);
	border-left: 2px solid transparent;
	transition: color .3s, border-color .3s;
}
.ll-account-nav a:hover { color: var(--ll-magenta); border-left-color: var(--ll-magenta); }
.ll-account-nav li.is-active a { color: var(--ll-magenta); font-weight: 600; border-left-color: var(--ll-magenta); }
.ll-account-nav__logout { margin-top: 16px; padding-top: 16px; border-top: 1px solid var(--ll-ink-09); }

.ll-account-nav__mobile { display: none; }

.ll-account-h1 { margin: 0; font-weight: 700; font-size: clamp(28px, 3.2vw, 40px); text-transform: uppercase; letter-spacing: -.01em; color: var(--ll-ink); }
.ll-account-intro { margin: 14px 0 0; font-size: 15px; color: var(--ll-ink-68, var(--ll-ink-70)); max-width: 560px; }

.ll-account-cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 20px; margin-top: 32px; }
.ll-account-card { display: flex; flex-direction: column; gap: 10px; background: var(--ll-white); border: 1px solid var(--ll-ink-09); padding: 26px 24px; }
.ll-account-card__kicker { font-size: 10.5px; letter-spacing: .28em; text-transform: uppercase; font-weight: 600; color: var(--ll-ink-50); }
.ll-account-card__value { font-size: 22px; font-weight: 600; color: var(--ll-ink); }
.ll-account-card__link { font-size: 12px; letter-spacing: .04em; color: var(--ll-magenta); align-self: flex-start; }
.ll-account-card__link:hover { color: var(--ll-magenta-press); }

.ll-order-badge { display: inline-flex; padding: 5px 12px; font-size: 10.5px; letter-spacing: .12em; text-transform: uppercase; font-weight: 600; align-self: flex-start; }
.ll-order-badge--done { background: var(--ll-ink-bg); color: var(--ll-white); }
.ll-order-badge--progress { background: transparent; border: 1px solid var(--ll-magenta); color: var(--ll-magenta); }
.ll-order-badge--off { background: transparent; color: var(--ll-ink-50); }

.ll-account__wide .woocommerce-MyAccount-content { font-size: 15px; line-height: 1.6; color: var(--ll-ink-70); }
.ll-account__wide .woocommerce-MyAccount-content a { color: var(--ll-magenta); text-decoration: underline; }
.ll-account__wide .woocommerce-MyAccount-content .button {
	display: inline-flex;
	align-items: center;
	gap: 12px;
	font-size: 11px;
	letter-spacing: .2em;
	text-transform: uppercase;
	font-weight: 500;
	padding: 10px 20px;
	border: none;
	background: var(--ll-magenta);
	color: var(--ll-white);
	text-decoration: none;
	cursor: pointer;
	transition: background .3s;
}
.ll-account__wide .woocommerce-MyAccount-content .button:hover { background: var(--ll-magenta-press); }

/* ---------- Commandes — tableau sémantique restylé (pas de <table> natif dans le handoff, mais requis pour l'accessibilité) ---------- */
.ll-account__wide table.woocommerce-orders-table { width: 100%; border-collapse: collapse; margin: 8px 0 0; }
.ll-account__wide .woocommerce-orders-table__header {
	padding: 0 10px 12px;
	border-bottom: 1px solid var(--ll-ink-16, var(--ll-ink-09));
	font-size: 10.5px;
	letter-spacing: .22em;
	text-transform: uppercase;
	font-weight: 600;
	color: var(--ll-ink-50);
	text-align: left;
}
.ll-account__wide .woocommerce-orders-table__row { transition: background .25s; }
.ll-account__wide .woocommerce-orders-table__row:hover { background: var(--ll-pink-pale); }
.ll-account__wide .woocommerce-orders-table__cell { padding: 18px 10px; border-bottom: 1px solid var(--ll-ink-09); font-size: 14px; }
.ll-account__wide .woocommerce-orders-table__cell-order-number { font-weight: 600; }
.ll-account__wide .woocommerce-orders-table__cell-order-number a { color: var(--ll-ink); text-decoration: none; }
.ll-account__wide .woocommerce-orders-table__cell-order-date { color: var(--ll-ink-60); }
.ll-account__wide .woocommerce-orders-table__cell-order-total { font-weight: 600; }
.ll-account__wide .woocommerce-orders-table__cell-order-actions { text-align: right; }
.ll-account__wide .woocommerce-orders-table__cell-order-actions .button {
	font-size: 10.5px;
	letter-spacing: .12em;
	padding: 8px 16px;
	background: transparent;
	border: 1px solid var(--ll-magenta);
	color: var(--ll-magenta);
}
.ll-account__wide .woocommerce-orders-table__cell-order-actions .button:hover { background: var(--ll-magenta); color: var(--ll-white); }

/* ---------- Adresses — deux cartes Facturation / Livraison ---------- */
.ll-account__wide .woocommerce-Addresses {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
	gap: 24px;
	margin-top: 24px;
}
.ll-account__wide .woocommerce-Address { background: var(--ll-white); border: 1px solid var(--ll-ink-09); padding: 28px 26px; }
.ll-account__wide .woocommerce-Address-title { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; margin-bottom: 14px; }
.ll-account__wide .woocommerce-Address-title h2 { margin: 0; font-size: 10.5px; letter-spacing: .28em; text-transform: uppercase; font-weight: 600; color: var(--ll-ink-50); }
.ll-account__wide .woocommerce-Address-title .edit { font-size: 12px; letter-spacing: .04em; color: var(--ll-magenta); }
.ll-account__wide .woocommerce-Address-title .edit:hover { color: var(--ll-magenta-press); }
.ll-account__wide .woocommerce-Address address { font-style: normal; font-size: 14px; line-height: 1.7; color: var(--ll-ink-75, var(--ll-ink-70)); }

/* ---------- Formulaires (édition compte, adresses) ---------- */
.ll-account-form-edit,
.ll-account__wide .woocommerce-address-fields__field-wrapper { max-width: 460px; }
.ll-account-form-edit,
.ll-account__wide .woocommerce-address-fields__field-wrapper {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 0 22px;
	margin-top: 24px;
}
.ll-account-form-edit > p,
.ll-account__wide .woocommerce-address-fields__field-wrapper > p,
.ll-account-form-edit > .clear,
.ll-account-form-edit > .ll-account-pwd-toggle,
.ll-account-form-edit > fieldset,
.ll-account-form-edit > .ll-account-form-edit__submit,
.ll-account__wide .woocommerce-address-fields__field-wrapper > .clear { grid-column: 1 / -1; }
.ll-account-form-edit > p.form-row-first,
.ll-account__wide .woocommerce-address-fields__field-wrapper > p.form-row-first,
.ll-account-form-edit > p.form-row-last,
.ll-account__wide .woocommerce-address-fields__field-wrapper > p.form-row-last { grid-column: auto; }
.ll-account__wide .clear { display: none; }

.ll-account-pwd-toggle {
	justify-self: start;
	margin: 8px 0 0;
	padding: 0;
	background: none;
	border: none;
	font-size: 11px;
	letter-spacing: .2em;
	text-transform: uppercase;
	font-weight: 500;
	color: var(--ll-magenta);
	cursor: pointer;
}
.ll-account-pwd-toggle:hover { color: var(--ll-magenta-press); }
.ll-account-pwd-fields { border: none; padding: 0; margin: 20px 0 0; grid-column: 1 / -1; gap: 16px; }
.ll-account-pwd-fields:not([hidden]) { display: grid; } /* [hidden] doit garder la main sur display:none — spécificité égale, sinon la règle ci-dessus gagnerait toujours */
.ll-account-form-edit__submit { margin: 24px 0 0; }
.ll-account-form-edit__submit .ll-btn { padding: 15px 32px; }

.ll-account__wide .form-row { margin: 0 0 16px; }
.ll-account__wide .form-row label { display: block; margin-bottom: 9px; font-size: 11.5px; letter-spacing: .1em; text-transform: uppercase; color: var(--ll-ink-42); }
.ll-account__wide .form-row input,
.ll-account__wide .form-row select,
.ll-account__wide .form-row textarea {
	width: 100%;
	border: none;
	border-bottom: 1px solid var(--ll-ink-22);
	padding: 10px 0;
	font-size: 15px;
	color: var(--ll-ink);
	background: transparent;
}
.ll-account__wide .form-row input:focus,
.ll-account__wide .form-row select:focus,
.ll-account__wide .form-row textarea:focus { outline: none; border-bottom-color: var(--ll-magenta); }
.ll-account__wide .form-row .password-input { display: block; width: 100%; }
.ll-account__wide .form-row .password-input input { width: 100%; }
.ll-account__wide .show-password-input { display: none; } /* injecté en JS par WooCommerce, non stylé côté front */
.ll-account__wide .form-row span[id$="_description"] { display: block; margin-top: 6px; font-size: 12px; font-style: normal; color: var(--ll-ink-50); }

/* ---------- Notices (erreur / succès / info) ---------- */
.ll-account__wide .woocommerce-error,
.ll-account__wide .woocommerce-message,
.ll-account__wide .woocommerce-info {
	list-style: none;
	margin: 0 0 20px;
	padding: 14px 18px;
	background: var(--ll-pink-vpale);
	border: 1px solid var(--ll-pink);
	font-size: 13px;
}
.ll-account__wide .woocommerce-error,
.ll-account__wide .woocommerce-message { color: var(--ll-magenta-press); font-weight: 600; }
.ll-account__wide .woocommerce-info { display: flex; flex-wrap: wrap; align-items: center; gap: 12px 16px; color: var(--ll-ink-70); font-weight: 400; }
.ll-account__wide .woocommerce-info .button { flex: none; order: 2; }
.ll-account__wide .woocommerce-error li + li { margin-top: 6px; }
.ll-account__wide .woocommerce-message:focus-visible { outline: none; }

/* Sélecteur pays/région : WooCommerce l'améliore en JS avec Select2, dont on
   a déqueue le CSS (voir inc/woocommerce.php) — sans lui, le <select> natif
   caché par Select2 restait visible en double sous le faux menu. On ne
   réimporte pas tout select2.css, juste sa règle de masquage + un habillage
   minimal cohérent avec nos autres champs. */
.select2-hidden-accessible {
	border: 0 !important;
	clip: rect(0 0 0 0) !important;
	height: 1px !important;
	margin: -1px !important;
	overflow: hidden !important;
	padding: 0 !important;
	position: absolute !important;
	width: 1px !important;
	white-space: nowrap !important;
}
.ll-account__wide .select2-container { width: 100% !important; }
.ll-account__wide .select2-selection--single {
	height: auto;
	border: none;
	border-bottom: 1px solid var(--ll-ink-22);
	border-radius: 0;
	padding: 10px 0;
	background: transparent;
}
.ll-account__wide .select2-selection__rendered { padding: 0; line-height: normal; font-size: 15px; color: var(--ll-ink); }
.ll-account__wide .select2-selection__arrow { height: 100%; top: 0; right: 0; }
.ll-account__wide .select2-container--open .select2-selection--single { border-bottom-color: var(--ll-magenta); }
.ll-account__wide .select2-dropdown { border-color: var(--ll-ink-22); font-size: 14px; }

/* ================= 404 ================= */
.ll-404__code {
	margin: 0 0 8px;
	font-size: clamp(64px, 9vw, 108px);
	font-weight: 700;
	line-height: 1;
	letter-spacing: -.02em;
	color: var(--ll-pink);
}
.ll-404 .ll-h2 { margin: 0 0 12px; }
.ll-404 .ll-body { margin: 0 0 32px; }
.ll-404__btn { display: inline-flex; }

/* ================= Pages légales ================= */
.ll-legal { padding: 40px 0 120px; }
.ll-legal__container { max-width: 760px; }
.ll-legal .ll-h2 { margin: 0 0 32px; font-size: clamp(26px, 3vw, 34px); }

.ll-legal__content { font-size: 15px; line-height: 1.75; color: var(--ll-ink-70); }
.ll-legal__content h2 {
	margin: 40px 0 14px;
	font-size: 18px;
	font-weight: 700;
	color: var(--ll-ink);
}
.ll-legal__content h2:first-child { margin-top: 0; }
.ll-legal__content h3 { margin: 24px 0 10px; font-size: 15px; font-weight: 700; color: var(--ll-ink); }
.ll-legal__content p { margin: 0 0 16px; }
.ll-legal__content ul,
.ll-legal__content ol { margin: 0 0 16px; padding-left: 22px; }
.ll-legal__content li { margin-bottom: 6px; }
.ll-legal__content a { color: var(--ll-magenta); text-decoration: underline; }
.ll-legal__content a:hover { color: var(--ll-magenta-press); }
.ll-legal__content strong { color: var(--ll-ink); font-weight: 700; }
.ll-legal__content hr { border: none; border-top: 1px solid var(--ll-ink-09); margin: 32px 0; }
.ll-legal__content mark { background: var(--ll-pink-vpale); color: var(--ll-magenta-press); padding: 1px 4px; font-style: normal; }

/* ================= Responsive ================= */
.ll-mobile-nav { display: none; }

@media (max-width: 880px) {
	.ll-nav__burger { display: flex; }
	.ll-nav__links { display: none; }
	.ll-nav__actions { display: none; }
	.ll-scroll-top { display: none; } /* le bouton flottant mobile occupe déjà ce coin */

	.ll-mobile-fab {
		display: flex;
		align-items: center;
		gap: 14px;
		position: fixed;
		right: 20px;
		bottom: 20px;
		z-index: 55;
		padding: 12px 16px;
		border-radius: 999px;
		background: var(--ll-pink-vpale);
		box-shadow: 0 8px 24px rgba(46, 13, 30, .18);
		opacity: 1;
		transition: opacity .3s, transform .3s;
	}
	/* Masqué au-dessus du hero (accueil) et au-dessus du footer — voir assets/js/shop.js */
	.ll-mobile-fab--hidden { opacity: 0; pointer-events: none; transform: translateY(10px); }

	.ll-mobile-nav {
		display: flex;
		position: fixed;
		inset: 0;
		z-index: 65;
		flex-direction: column;
		align-items: center;
		justify-content: center;
		gap: 30px;
		background: var(--ll-pink-vpale);
		transform: translateX(100%);
		transition: transform .4s var(--ll-ease);
		pointer-events: none;
	}
	.ll-mobile-nav.is-open { transform: translateX(0); pointer-events: auto; }
	.ll-mobile-nav a { font-size: 16px; letter-spacing: .22em; text-transform: uppercase; font-weight: 500; color: var(--ll-ink); }
	.ll-mobile-nav a:hover { color: var(--ll-magenta); }

	/* Même emplacement que le bouton hamburger qu'elle remplace visuellement une fois le menu ouvert. */
	.ll-mobile-nav__close {
		position: absolute;
		top: 31px; /* centre vertical réel du bouton hamburger dans .ll-nav__row (95px de haut, logo compris), pas son padding-top */
		right: var(--ll-pad-x);
		width: 32px; height: 32px;
		display: flex;
		align-items: center;
		justify-content: center;
		background: none;
		border: none;
		cursor: pointer;
	}
	.ll-mobile-nav__close span {
		position: absolute;
		width: 22px; height: 1px;
		background: var(--ll-ink-bg);
	}
	.ll-mobile-nav__close span:first-child { transform: rotate(45deg); }
	.ll-mobile-nav__close span:last-child { transform: rotate(-45deg); }

	.ll-mobile-nav__socials {
		position: absolute;
		bottom: 40px;
		left: 0; right: 0;
		display: flex;
		justify-content: center;
		gap: 18px;
	}
	.ll-mobile-nav__social-btn {
		display: flex;
		align-items: center;
		justify-content: center;
		width: 38px; height: 38px;
		color: var(--ll-ink);
		transition: color .3s, background .3s;
	}
	.ll-mobile-nav__social-btn:hover { color: var(--ll-white); background: var(--ll-pink); }

	.ll-music-grid { grid-template-columns: 1fr; gap: 40px; }
	.ll-music-cover-wrap { max-width: 320px; }

	.ll-rienaf { grid-template-columns: 1fr; min-height: 0; }
	.ll-rienaf__media { min-height: 320px; }
	.ll-rienaf__content { padding: 56px var(--ll-pad-x); }

	.ll-tour-pills { justify-content: center; width: 100%; }

	.ll-contact-grid { grid-template-columns: 1fr; gap: 40px; }
	.ll-contact-intro { align-items: center; text-align: center; }
	.ll-contact-intro .ll-body { margin-left: auto; margin-right: auto; }
	.ll-contact-submit { align-self: stretch; justify-content: center; }

	/* Footer déjà centré en base (desktop compris) — rien à surcharger ici. */

	.ll-product { grid-template-columns: 1fr; gap: 40px; padding: 32px var(--ll-pad-x) 64px; }
	.ll-gallery { position: static; }

	.ll-upsells { padding: 64px 0 72px; }

	.ll-hero__content { padding-bottom: 62px; } /* 92px - 30px */

	.ll-section__head { align-items: center; text-align: center; }

	.ll-account { padding: 40px 0 80px; }
	.ll-account__columns--split { flex-direction: column; gap: 32px; }
	.ll-account__columns--split .ll-account__column:first-child { padding-right: 0; padding-bottom: 32px; border-right: none; border-bottom: 1px solid var(--ll-ink-09); }

	/* Nav latérale sticky → sélecteur déroulant + bouton icône déconnexion, colonne unique. */
	.ll-account__dashboard { grid-template-columns: minmax(0, 1fr); gap: 28px; } /* minmax(0,…), pas 1fr seul : sinon la piste grandit pour loger le contenu (cartes, nav) au lieu de se réduire au conteneur */
	.ll-account-nav { position: static; }
	.ll-account-nav .ll-account-nav__list,
	.ll-account-nav .ll-account-nav__logout { display: none; }

	.ll-account-nav__mobile { display: flex; align-items: center; gap: 10px; }
	.ll-account-nav__select {
		flex: 1;
		min-width: 0;
		height: 46px;
		padding: 0 30px 0 16px;
		border: 1px solid var(--ll-ink-20);
		background: var(--ll-white);
		color: var(--ll-ink);
		font-size: 12.5px;
		letter-spacing: .1em;
		text-transform: uppercase;
		font-weight: 500;
		appearance: none;
		background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20width%3D%2214%22%20height%3D%2214%22%20viewBox%3D%220%200%2020%2020%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M5%208l5%205%205-5%22%20fill%3D%22none%22%20stroke%3D%22%236e1117%22%20stroke-width%3D%221.6%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%2F%3E%3C%2Fsvg%3E');
		background-repeat: no-repeat;
		background-position: right 12px center;
	}
	.ll-account-nav__select:focus { outline: none; border-color: var(--ll-magenta); }
	/* .ll-account-nav .ll-account-nav__logout-btn (2 classes), pas juste
	   .ll-account-nav__logout-btn : ce bouton est un <a>, et .ll-account-nav a
	   (classe+tag) a une spécificité plus forte — son border-left:transparent
	   écrasait sinon le bord gauche de la bordure ci-dessous, et son padding
	   asymétrique (pensé pour les onglets desktop) décentrait l'icône. */
	.ll-account-nav .ll-account-nav__logout-btn {
		flex: none;
		display: flex; align-items: center; justify-content: center;
		width: 46px; height: 46px;
		padding: 0;
		border: 1px solid var(--ll-ink-20);
		color: var(--ll-ink);
		transition: color .3s, border-color .3s;
	}
	.ll-account-nav .ll-account-nav__logout-btn:hover { color: var(--ll-magenta); border-color: var(--ll-magenta); }

	.ll-account-form-edit,
	.ll-account__wide .woocommerce-address-fields__field-wrapper { grid-template-columns: 1fr; }
	.ll-account-form-edit > p.form-row-first,
	.ll-account__wide .woocommerce-address-fields__field-wrapper > p.form-row-first,
	.ll-account-form-edit > p.form-row-last,
	.ll-account__wide .woocommerce-address-fields__field-wrapper > p.form-row-last { grid-column: 1 / -1; }
}

@media (max-width: 700px) {
	/* date + ville/salle restent sur la même ligne (flex-wrap déjà présent en base) ; seul le statut passe en pleine largeur en dessous. */
	.ll-tour-row { align-items: center; gap: 10px 28px; transition: background .35s, padding .35s, margin .35s; }
	.ll-tour-row__date { width: 64px; } /* mesuré : "18 SEPT." (le plus large) demande 60px à 14px gras */
	.ll-tour-row__status { width: 100%; }
	.ll-tour-row__status .ll-chip { display: block; text-align: center; }
	.ll-tour-row:hover {
		margin-left: calc(-1 * var(--ll-pad-x));
		margin-right: calc(-1 * var(--ll-pad-x));
		padding-left: var(--ll-pad-x);
		padding-right: var(--ll-pad-x);
	}

	.ll-field-row { grid-template-columns: 1fr; gap: 20px; }

	/* Tableau Commandes → une carte par commande (technique classique
	   WooCommerce shop_table_responsive : chaque cellule affiche son
	   data-title en ::before, le tableau perd sa sémantique visuelle). */
	.ll-account__wide table.woocommerce-orders-table thead { display: none; }
	.ll-account__wide table.woocommerce-orders-table,
	.ll-account__wide table.woocommerce-orders-table tbody,
	.ll-account__wide .woocommerce-orders-table__row,
	.ll-account__wide .woocommerce-orders-table__cell { display: block; width: 100%; }
	.ll-account__wide .woocommerce-orders-table__row { margin-bottom: 16px; border: 1px solid var(--ll-ink-09); padding: 4px 16px; }
	.ll-account__wide .woocommerce-orders-table__cell {
		display: flex;
		align-items: center;
		justify-content: space-between;
		gap: 16px;
		padding: 12px 0;
		border-bottom: 1px solid var(--ll-ink-09);
	}
	.ll-account__wide .woocommerce-orders-table__cell:last-child { border-bottom: none; }
	.ll-account__wide .woocommerce-orders-table__cell::before {
		content: attr(data-title);
		font-size: 10.5px;
		letter-spacing: .16em;
		text-transform: uppercase;
		font-weight: 600;
		color: var(--ll-ink-50);
	}
	.ll-account__wide .woocommerce-orders-table__cell-order-actions { justify-content: flex-end; }
	.ll-account__wide .woocommerce-orders-table__cell-order-actions::before { display: none; }
}

@media (max-width: 480px) {
	.ll-hero__logo { width: min(78vw, 620px); }

	.ll-cart-drawer__panel { width: 100%; }
}

@media (max-width: 360px) {
	.ll-qty-add { flex-direction: column; }
	.ll-qty-stepper { justify-content: center; }
}

/*
 * Commande (WooCommerce Blocks) sur mobile : dès que le bloc checkout se
 * détecte étroit (.is-mobile, ajouté par son propre JS via ResizeObserver —
 * pas une media query), il duplique le résumé de commande : une version
 * accordéon repliée tout en haut ET la version complète (articles + code
 * promo + totaux) plus bas avant le bouton Commander. On ne garde que la
 * seconde — .checkout-order-summary-block-fill-wrapper la distingue de
 * l'accordéon du haut, qui lui n'a pas cette classe. En desktop (pas de
 * .is-mobile), il n'existe qu'une seule instance de ce bloc (la colonne de
 * droite) : le sélecteur scoping à .is-mobile ne doit pas la toucher.
 */
.wc-block-checkout.is-mobile .wp-block-woocommerce-checkout-order-summary-block:not(.checkout-order-summary-block-fill-wrapper) {
	display: none;
}

/* ================= Linktree ================= */
.ll-links-page { background: var(--ll-pink-vpale); }
.ll-links {
	min-height: 100vh;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 48px 20px;
}
.ll-links__card {
	width: 100%;
	max-width: 420px;
	display: flex;
	flex-direction: column;
	align-items: center;
	text-align: center;
	gap: 6px;
}
.ll-links__avatar {
	width: 120px; height: 120px;
	border-radius: 999px;
	object-fit: cover;
	box-shadow: 0 8px 24px rgba(110, 17, 23, .18);
	margin-bottom: 18px;
}
.ll-links__name {
	margin: 0;
	display: inline-flex;
	align-items: center;
	gap: 6px;
	font-size: 22px;
	font-weight: 700;
	letter-spacing: -.01em;
	color: var(--ll-ink);
}
.ll-links__badge { flex: none; position: relative; top: 3px; }
.ll-links__bio { margin: 8px 0 28px; font-size: 14px; line-height: 1.6; color: var(--ll-ink-60); max-width: 340px; }

/* Pochette+titre sur une ligne, plateformes sur une seconde ligne pleine
   largeur et centrée — plutôt que sur la même ligne : avec un titre court
   ("Cordialement") et des icônes reléguées à droite, le flex:1 de la colonne
   info laissait un vide disgracieux entre le texte et les icônes (et sous le
   texte, la ligne prenant toute la hauteur de la pochette). Deux lignes
   pleinement occupées équilibrent mieux la carte. */
.ll-links__album {
	width: 100%;
	display: flex;
	flex-direction: column;
	gap: 16px;
	padding: 16px;
	margin-bottom: 20px;
	border-radius: 16px;
	background: var(--ll-white);
	box-shadow: 0 1px 2px rgba(110, 17, 23, .08);
	text-align: left;
}
.ll-links__album-head { display: flex; align-items: center; gap: 14px; }
.ll-links__album-cover { width: 52px; height: 52px; border-radius: 10px; object-fit: cover; flex: none; }
.ll-links__album-info { flex: 1; min-width: 0; }
.ll-links__album-kicker { margin: 0; font-size: 10px; letter-spacing: .18em; text-transform: uppercase; font-weight: 600; color: var(--ll-ink-50); }
.ll-links__album-title { margin: 3px 0 0; font-size: 15px; font-weight: 700; color: var(--ll-ink); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ll-links__platforms { display: flex; justify-content: center; gap: 18px; padding-top: 14px; border-top: 1px solid var(--ll-ink-09); }
.ll-links__platform-btn {
	display: flex; align-items: center; justify-content: center;
	width: 34px; height: 34px;
	border-radius: 999px;
	color: var(--ll-ink-55);
	transition: color .3s, background .3s;
}
.ll-links__platform-btn svg { width: 18px; height: 18px; }
.ll-links__platform-btn:hover { color: var(--ll-magenta); background: var(--ll-pink-pale); }

.ll-links__list { width: 100%; display: flex; flex-direction: column; gap: 12px; }
.ll-links__item {
	display: block;
	width: 100%;
	padding: 16px 24px;
	border-radius: 999px;
	background: var(--ll-white);
	color: var(--ll-ink);
	font-size: 14px;
	font-weight: 600;
	letter-spacing: .02em;
	box-shadow: 0 1px 2px rgba(110, 17, 23, .08);
	transition: background .3s, color .3s, transform .3s;
}
.ll-links__item:hover { background: var(--ll-magenta); color: var(--ll-white); transform: translateY(-2px); }

.ll-links__newsletter {
	width: 100%;
	margin-top: 12px;
	padding: 24px 20px;
	border-radius: 16px;
	background: var(--ll-white);
	box-shadow: 0 1px 2px rgba(110, 17, 23, .08);
}
.ll-links__newsletter-title { margin: 0; font-size: 11px; letter-spacing: .22em; text-transform: uppercase; font-weight: 600; color: var(--ll-magenta); }
.ll-links__newsletter-text { margin: 6px 0 0; font-size: 13.5px; color: var(--ll-ink-60); }
/* Le formulaire hérite de .ll-footer__newsletter-form (pensé pour le footer
   sombre : champ souligné, bouton anguleux tout-caps) — sur cette page,
   tout le reste est en pastilles arrondies (.ll-links__item, plateformes,
   avatar…), donc on réhabille input/bouton dans le même langage plutôt que
   de garder le style footer en incrustation. */
.ll-links__newsletter-form.ll-footer__newsletter-form { gap: 8px; margin: 16px auto 0; max-width: 100%; }
.ll-links__newsletter-form .ll-footer__newsletter-input {
	border: 1px solid var(--ll-ink-20);
	border-radius: 999px;
	background: var(--ll-pink-vpale);
	padding: 12px 18px;
	color: var(--ll-ink);
}
.ll-links__newsletter-form .ll-footer__newsletter-input::placeholder { color: var(--ll-ink-42); }
.ll-links__newsletter-form .ll-footer__newsletter-input:focus { border-color: var(--ll-magenta); outline: none; }
.ll-links__newsletter-form .ll-footer__newsletter-btn {
	border-radius: 999px;
	padding: 12px 22px;
	font-size: 12px;
	letter-spacing: .04em;
	text-transform: none;
	font-weight: 600;
}
.ll-links__newsletter-form .ll-footer__newsletter-btn:hover { background: var(--ll-magenta-press); color: var(--ll-white); }

.ll-links__socials { display: flex; gap: 14px; margin-top: 32px; }
.ll-links__social-btn {
	display: flex; align-items: center; justify-content: center;
	width: 40px; height: 40px;
	border-radius: 999px;
	color: var(--ll-ink-60);
	transition: color .3s, background .3s;
}
.ll-links__social-btn:hover { color: var(--ll-magenta); background: var(--ll-pink-pale); }

.ll-links__copy { margin-top: 28px; font-size: 12px; color: var(--ll-ink-40); }

@media (max-width: 480px) {
	/* Champ + bouton sur une ligne (hérité de .ll-footer__newsletter-form)
	   dépassent de la carte sur mobile — empilés, bouton pleine largeur comme
	   le champ. Ce bloc doit rester APRÈS les règles de base ci-dessus : à
	   spécificité égale, c'est l'ordre dans le fichier qui tranche. */
	.ll-links__newsletter-form.ll-footer__newsletter-form { flex-direction: column; }
	.ll-links__newsletter-form .ll-footer__newsletter-btn { width: 100%; justify-content: center; }
}
