/*
Theme Name: Traiteur Paris
Theme URI: https://www.traiteur-paris-75.fr/
Author: SEO Design
Author URI: https://seo-design.io/
Description: Thème sur mesure pour Traiteur Paris, le guide des traiteurs et des belles réceptions à Paris. Accueil éditable dans Apparence > Personnaliser > Accueil Traiteur Paris. Pages Elementor conservées et harmonisées, URL inchangées, compatible Yoast SEO, aucune publicité.
Version: 1.4.3
Requires at least: 6.3
Tested up to: 7.1
Requires PHP: 7.4
License: GNU General Public License v2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: traiteur-paris
Tags: blog, custom-menu, featured-images, translation-ready, accessibility-ready
*/

/* ==========================================================================
   Polices (auto-hébergées — URW Nimbus, licence dans assets/fonts)
   ========================================================================== */
@font-face {
	font-family: "TP Serif";
	font-style: normal;
	font-weight: 400;
	font-display: swap;
	src: url("assets/fonts/nimbus-roman-regular.woff2") format("woff2");
}
@font-face {
	font-family: "TP Serif";
	font-style: italic;
	font-weight: 400;
	font-display: swap;
	src: url("assets/fonts/nimbus-roman-italic.woff2") format("woff2");
}
@font-face {
	font-family: "TP Sans";
	font-style: normal;
	font-weight: 400;
	font-display: swap;
	src: url("assets/fonts/nimbus-sans-regular.woff2") format("woff2");
}

/* ==========================================================================
   Variables (charte Traiteur Paris)
   ========================================================================== */
:root {
	--tp-ivory: #f6f2eb;
	--tp-burgundy: #491d2b;
	--tp-burgundy-deep: #3a1622;
	--tp-ink: #272321;
	--tp-muted: #6d625b;
	--tp-sand: #e6ddd1;
	--tp-line: #d8cfc4;
	--tp-line-dark: #c7bdb0;
	--tp-white: #fffcf7;

	--tp-serif: "TP Serif", Georgia, "Times New Roman", serif;
	--tp-sans: "TP Sans", "Helvetica Neue", Arial, sans-serif;

	--tp-max: 1280px;
	--tp-gutter: 64px;
	--tp-reading: 720px;
	--tp-section: 104px;
	--tp-ease: 180ms ease;
	--tp-arch-over: 112px; /* débord de l'arc des en-têtes de page */
}

/* ==========================================================================
   Base
   ========================================================================== */
*,
*::before,
*::after {
	box-sizing: border-box;
}

html {
	-webkit-text-size-adjust: 100%;
	text-size-adjust: 100%;
	scroll-behavior: smooth;
}

body.tp-body {
	position: relative; /* l'en-tête superposé de l'accueil se cale sous la barre d'administration */
	margin: 0;
	background: var(--tp-ivory);
	color: var(--tp-ink);
	font-family: var(--tp-sans);
	font-size: 17px;
	line-height: 1.65;
	letter-spacing: 0;
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
}

img,
svg,
video {
	max-width: 100%;
	height: auto;
}

img {
	display: block;
}

.tp-body a {
	color: var(--tp-burgundy);
	text-decoration: none;
	transition: color var(--tp-ease), border-color var(--tp-ease), background-color var(--tp-ease), text-decoration-color var(--tp-ease);
}

.tp-body a:hover {
	color: var(--tp-ink);
}

.tp-body :focus-visible {
	outline: 2px solid var(--tp-burgundy);
	outline-offset: 4px;
}

:where(.tp-body) :where(h1, h2, h3, h4, h5, h6) {
	font-family: var(--tp-serif);
	font-weight: 400;
	letter-spacing: -0.01em;
	line-height: 1.12;
	color: var(--tp-ink);
	margin: 0;
}

:where(.tp-body) :where(p) {
	margin: 0;
}

:where(.tp-body) :where(em) {
	font-style: italic;
}

:where(.tp-body) :where(strong, b) {
	font-weight: 700;
}

:where(.tp-body) :where(sup) {
	font-size: 0.5em;
	vertical-align: super;
	line-height: 0;
	margin-left: 0.04em;
}

.screen-reader-text {
	border: 0;
	clip: rect(1px, 1px, 1px, 1px);
	clip-path: inset(50%);
	height: 1px;
	margin: -1px;
	overflow: hidden;
	padding: 0;
	position: absolute !important;
	width: 1px;
	word-wrap: normal !important;
}

.tp-body .tp-skip:focus {
	clip: auto;
	clip-path: none;
	height: auto;
	width: auto;
	margin: 0;
	top: 12px;
	left: 12px;
	z-index: 1000;
	padding: 12px 18px;
	background: var(--tp-white);
	color: var(--tp-burgundy);
	font-size: 15px;
}

.tp-main:focus {
	outline: 0;
}

.tp-container {
	width: min(calc(100% - var(--tp-gutter) * 2), var(--tp-max));
	margin-left: auto;
	margin-right: auto;
}

/* Petits éléments récurrents */
.tp-eyebrow {
	font-family: var(--tp-sans);
	font-size: 11px;
	line-height: 1.4;
	letter-spacing: 0.15em;
	text-transform: uppercase;
	color: var(--tp-muted);
	margin: 0 0 18px;
}

.tp-body .tp-eyebrow--link a {
	color: var(--tp-muted);
}

.tp-body .tp-eyebrow--link a:hover {
	color: var(--tp-burgundy);
}

.tp-h2 {
	font-size: clamp(36px, 4.2vw, 56px);
	line-height: 1.08;
}

.tp-h3 {
	font-size: clamp(26px, 2.4vw, 31px);
	line-height: 1.15;
}

.tp-arrow {
	width: 0.95em;
	height: 0.95em;
	display: inline-block;
	vertical-align: -0.1em;
	flex: none;
}

.tp-body .tp-link {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	font-size: 14px;
	line-height: 1.4;
	color: var(--tp-ink);
	padding-bottom: 4px;
	border-bottom: 1px solid currentColor;
}

.tp-body .tp-link:hover {
	color: var(--tp-burgundy);
}

.tp-body .tp-button {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 10px;
	min-height: 48px;
	padding: 12px 26px;
	border: 1px solid var(--tp-burgundy);
	border-radius: 2px;
	background: var(--tp-burgundy);
	color: var(--tp-white);
	font-family: var(--tp-sans);
	font-size: 14px;
	line-height: 1.3;
	letter-spacing: 0.01em;
	text-align: center;
}

.tp-body .tp-button:hover {
	background: var(--tp-burgundy-deep);
	border-color: var(--tp-burgundy-deep);
	color: var(--tp-white);
}

.tp-body .tp-button--light {
	background: var(--tp-white);
	border-color: var(--tp-white);
	color: var(--tp-burgundy);
}

.tp-body .tp-button--light:hover {
	background: var(--tp-ivory);
	border-color: var(--tp-ivory);
	color: var(--tp-burgundy-deep);
}

.tp-actions {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 18px 32px;
}

.tp-meta {
	font-size: 13px;
	line-height: 1.5;
	color: var(--tp-muted);
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0 8px;
	margin: 0;
}

.tp-body .tp-meta a {
	color: var(--tp-muted);
}

.tp-body .tp-meta a:hover {
	color: var(--tp-burgundy);
}

.tp-dot {
	color: var(--tp-line-dark);
}

.tp-lead {
	font-size: 19px;
	line-height: 1.6;
	color: var(--tp-muted);
	max-width: 640px;
}

.tp-lead p {
	margin: 0;
}

.tp-spacer {
	height: var(--tp-section);
}

.tp-empty {
	padding: 40px 0;
	color: var(--tp-muted);
}

/* ==========================================================================
   En-tête
   ========================================================================== */
.tp-header {
	position: relative;
	z-index: 20;
	background: var(--tp-ivory);
	border-bottom: 1px solid var(--tp-line);
}

.tp-header__inner {
	min-height: 104px;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 32px;
}

.tp-body .tp-brand {
	display: block;
	flex: none;
	line-height: 0;
}

.tp-logo {
	width: 178px;
	height: auto;
}

.tp-nav {
	display: flex;
	align-items: center;
	gap: 36px;
}

.tp-nav__list {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	align-items: center;
	gap: 34px;
}

.tp-body .tp-nav__list a {
	font-size: 14px;
	line-height: 1.4;
	color: var(--tp-ink);
	padding: 6px 0;
	border-bottom: 1px solid transparent;
}

.tp-body .tp-nav__list a:hover,
.tp-body .tp-nav__list .current-menu-item > a,
.tp-body .tp-nav__list .current-menu-ancestor > a,
.tp-body .tp-nav__list .current_page_item > a {
	color: var(--tp-burgundy);
	border-bottom-color: currentColor;
}

.tp-body .tp-nav__cta {
	display: inline-flex;
	align-items: center;
	min-height: 42px;
	padding: 10px 22px;
	border: 1px solid var(--tp-burgundy);
	border-radius: 2px;
	font-size: 14px;
	line-height: 1.3;
	color: var(--tp-burgundy);
}

.tp-body .tp-nav__cta:hover {
	background: var(--tp-burgundy);
	color: var(--tp-white);
}

.tp-nav-toggle {
	display: none;
	align-items: center;
	min-height: 44px;
	padding: 8px 16px;
	border: 1px solid currentColor;
	border-radius: 2px;
	background: transparent;
	color: var(--tp-ink);
	font-family: var(--tp-sans);
	font-size: 14px;
	cursor: pointer;
}

/* Accueil : en-tête superposé à la photo */
.tp-header--overlay {
	position: absolute;
	top: 0;
	left: 0;
	right: 0;
	background: transparent;
	border-bottom: 0;
}

.tp-header--overlay .tp-header__inner {
	min-height: 116px;
}

.tp-body .tp-header--overlay .tp-nav__list a,
.tp-header--overlay .tp-nav-toggle {
	color: var(--tp-white);
}

.tp-body .tp-header--overlay .tp-nav__list a:hover,
.tp-body .tp-header--overlay .tp-nav__list .current-menu-item > a,
.tp-body .tp-header--overlay .tp-nav__list .current-menu-ancestor > a,
.tp-body .tp-header--overlay .tp-nav__list .current_page_item > a {
	color: var(--tp-white);
	border-bottom-color: var(--tp-white);
}

.tp-body .tp-header--overlay .tp-nav__cta {
	border-color: rgba(255, 252, 247, 0.65);
	color: var(--tp-white);
}

.tp-body .tp-header--overlay .tp-nav__cta:hover {
	background: var(--tp-white);
	border-color: var(--tp-white);
	color: var(--tp-burgundy);
}

.tp-header--overlay :focus-visible {
	outline-color: var(--tp-white);
}

/* ==========================================================================
   Accueil — bannière
   ========================================================================== */
.tp-hero {
	position: relative;
	min-height: 780px;
	display: flex;
	align-items: flex-end;
	background: #28201c;
	color: var(--tp-white);
	overflow: hidden;
}

.tp-hero__media,
.tp-hero__media picture {
	position: absolute;
	inset: 0;
}

.tp-hero__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: 66% center;
}

/* Voile de lisibilité, mesuré : il assombrit seulement la zone du texte. */
.tp-hero::after {
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient(90deg, rgba(23, 15, 17, 0.64) 0%, rgba(23, 15, 17, 0.36) 42%, rgba(23, 15, 17, 0.08) 72%);
	pointer-events: none;
}

.tp-hero__inner {
	position: relative;
	z-index: 1;
	padding: 220px 0 120px;
}

.tp-hero__content {
	max-width: 780px;
}

.tp-hero .tp-eyebrow {
	color: var(--tp-white);
	margin-bottom: 26px;
}

.tp-body .tp-hero__title {
	color: var(--tp-white);
	font-size: clamp(48px, 6.4vw, 88px);
	line-height: 1.02;
	letter-spacing: -0.03em;
	max-width: 760px;
	margin: 0 0 28px;
}

.tp-hero__text {
	font-size: 18px;
	line-height: 1.6;
	max-width: 470px;
	margin: 0 0 36px;
}

.tp-body .tp-hero .tp-link {
	color: var(--tp-white);
}

.tp-body .tp-hero .tp-link:hover {
	color: var(--tp-white);
	border-bottom-color: transparent;
}

.tp-hero :focus-visible {
	outline-color: var(--tp-white);
}

/* ==========================================================================
   Accueil — recherche guidée
   ========================================================================== */
.tp-finder {
	padding: 44px 0;
	border-bottom: 1px solid var(--tp-line);
	scroll-margin-top: 24px;
}

.tp-finder__inner {
	display: grid;
	grid-template-columns: minmax(220px, 1fr) 2.2fr;
	gap: 64px;
	align-items: center;
}

.tp-body .tp-finder__title {
	font-size: 30px;
	line-height: 1.2;
	max-width: 300px;
}

.tp-finder__options {
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	grid-template-columns: repeat(4, 1fr);
}

.tp-finder__options--3 {
	grid-template-columns: repeat(3, 1fr);
}

.tp-finder__options--2 {
	grid-template-columns: repeat(2, 1fr);
}

.tp-finder__options li {
	border-left: 1px solid var(--tp-line);
}

.tp-body .tp-finder__options a {
	display: block;
	padding: 8px 24px;
	color: var(--tp-ink);
}

.tp-finder__kicker {
	display: block;
	margin-bottom: 8px;
	font-size: 11px;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--tp-muted);
}

.tp-finder__label {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	font-family: var(--tp-serif);
	font-size: 22px;
	line-height: 1.3;
	border-bottom: 1px solid transparent;
	transition: border-color var(--tp-ease), color var(--tp-ease);
}

.tp-body .tp-finder__options a:hover .tp-finder__label {
	color: var(--tp-burgundy);
	border-bottom-color: currentColor;
}

/* ==========================================================================
   Sections
   ========================================================================== */
.tp-section {
	padding: var(--tp-section) 0;
}

.tp-section--ruled > .tp-container {
	border-top: 1px solid var(--tp-line);
	padding-top: var(--tp-section);
}

.tp-section--ruled {
	padding-top: 0;
}

.tp-section-head {
	display: flex;
	justify-content: space-between;
	align-items: flex-end;
	gap: 24px;
	margin-bottom: 40px;
}

.tp-section-head .tp-link {
	flex: none;
	margin-bottom: 8px;
}

/* Introduction */
.tp-intro {
	display: grid;
	grid-template-columns: 1fr 1.05fr;
	gap: 110px;
	align-items: center;
}

.tp-intro .tp-h2 {
	margin: 0 0 28px;
	max-width: 520px;
}

.tp-intro__text {
	color: var(--tp-muted);
	max-width: 440px;
	margin: 0 0 22px;
}

.tp-intro .tp-link {
	margin-top: 18px;
}

.tp-intro__media img {
	width: 100%;
	height: 560px;
	object-fit: cover;
	object-position: center 55%;
}

/* Réceptions */
.tp-occasions {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 28px;
}

.tp-body .tp-occasion {
	display: block;
	color: var(--tp-ink);
}

.tp-occasion__media {
	display: block;
	overflow: hidden;
	margin-bottom: 22px;
	background: var(--tp-sand);
}

.tp-occasion__media img {
	width: 100%;
	aspect-ratio: 4 / 3;
	object-fit: cover;
	transition: opacity var(--tp-ease);
}

.tp-occasion .tp-eyebrow {
	display: block;
	margin-bottom: 10px;
}

.tp-body .tp-occasion__title {
	font-size: clamp(26px, 2.3vw, 31px);
	line-height: 1.15;
	margin: 0 0 12px;
	transition: color var(--tp-ease);
}

.tp-occasion__text {
	display: block;
	font-size: 15px;
	line-height: 1.6;
	color: var(--tp-muted);
	max-width: 360px;
}

.tp-body a.tp-occasion:hover .tp-occasion__title {
	color: var(--tp-burgundy);
}

.tp-body a.tp-occasion:hover img {
	opacity: 0.92;
}

/* Arrondissements */
.tp-districts {
	background: var(--tp-sand);
	padding: 88px 0;
	scroll-margin-top: 24px;
}

.tp-districts__inner {
	display: grid;
	grid-template-columns: 0.9fr 1.3fr;
	gap: 90px;
	align-items: start;
}

.tp-districts .tp-h2 {
	margin: 0 0 24px;
}

.tp-districts__text {
	color: var(--tp-muted);
	max-width: 360px;
	margin: 0 0 26px;
}

.tp-districts__grid {
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	column-gap: 28px;
	align-self: center;
}

.tp-body .tp-districts__grid a {
	display: block;
	padding: 18px 0;
	border-bottom: 1px solid var(--tp-line-dark);
	font-family: var(--tp-serif);
	font-size: 26px;
	line-height: 1.2;
	color: var(--tp-ink);
}

.tp-body .tp-districts__grid a:hover {
	color: var(--tp-burgundy);
	border-bottom-color: var(--tp-burgundy);
}

/* Magazine */
.tp-mag {
	display: grid;
	grid-template-columns: 1.2fr 1fr;
	gap: 48px;
}

.tp-mag--single {
	grid-template-columns: minmax(0, 760px);
}

.tp-body .tp-mag__media {
	display: block;
	margin-bottom: 24px;
	background: var(--tp-sand);
}

.tp-mag__media img {
	width: 100%;
	aspect-ratio: 3 / 2;
	object-fit: cover;
}

.tp-body .tp-mag__title {
	font-size: clamp(30px, 2.8vw, 40px);
	line-height: 1.12;
	max-width: 580px;
}

.tp-body .tp-mag__title a,
.tp-body .tp-mag__story-title a {
	color: var(--tp-ink);
}

.tp-body .tp-mag__title a:hover,
.tp-body .tp-mag__story-title a:hover {
	color: var(--tp-burgundy);
}

.tp-mag__story {
	display: grid;
	grid-template-columns: 180px 1fr;
	gap: 26px;
	padding-bottom: 30px;
	margin-bottom: 30px;
	border-bottom: 1px solid var(--tp-line);
}

.tp-mag__story:last-child {
	margin-bottom: 0;
}

.tp-body .tp-mag__thumb {
	display: block;
	background: var(--tp-sand);
}

.tp-mag__thumb img {
	width: 180px;
	height: 176px;
	object-fit: cover;
}

.tp-body .tp-mag__story-title {
	font-size: clamp(24px, 2vw, 29px);
	line-height: 1.18;
}

/* Derniers articles : liste texte sur deux colonnes */
.tp-latest__list {
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	column-gap: 56px;
	border-top: 1px solid var(--tp-line);
}

.tp-latest__item {
	display: grid;
	grid-template-columns: 150px minmax(0, 1fr);
	gap: 20px;
	align-items: baseline;
	padding: 20px 0;
	border-bottom: 1px solid var(--tp-line);
}

.tp-latest__item .tp-meta {
	display: block;
	font-size: 12px;
	line-height: 1.5;
}

.tp-latest__item .tp-meta .tp-dot {
	display: none;
}

.tp-latest__item .tp-meta span:last-child {
	display: block;
	margin-top: 2px;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	font-size: 10px;
}

.tp-body .tp-latest__title {
	font-size: 21px;
	line-height: 1.3;
}

.tp-body .tp-latest__title a {
	color: var(--tp-ink);
}

.tp-body .tp-latest__title a:hover {
	color: var(--tp-burgundy);
	text-decoration: underline;
	text-decoration-thickness: 1px;
	text-underline-offset: 4px;
}

/* Bandeau final */
.tp-closing {
	background: var(--tp-burgundy);
	color: var(--tp-white);
	text-align: center;
	padding: 92px 0;
}

.tp-closing .tp-eyebrow {
	color: #d9c6cb;
}

.tp-body .tp-closing__title {
	color: var(--tp-white);
	font-size: clamp(36px, 4.2vw, 56px);
	line-height: 1.1;
	max-width: 760px;
	margin: 0 auto 34px;
}

.tp-closing :focus-visible {
	outline-color: var(--tp-white);
}

/* ==========================================================================
   Pied de page
   ========================================================================== */
.tp-footer {
	padding: 64px 0 28px;
	border-top: 1px solid var(--tp-line);
}

.tp-home .tp-footer {
	border-top: 0;
}

.tp-footer__top {
	display: grid;
	grid-template-columns: 1.6fr 1fr 1fr 1fr;
	gap: 64px;
}

.tp-footer__brand .tp-logo {
	width: 160px;
	margin-bottom: 22px;
}

.tp-footer__signature {
	font-family: var(--tp-serif);
	font-size: 20px;
	line-height: 1.35;
	max-width: 320px;
	margin: 0 0 12px;
}

.tp-footer__text {
	font-size: 14px;
	line-height: 1.6;
	color: var(--tp-muted);
	max-width: 340px;
}

.tp-footer__col ul,
.tp-footer__legal {
	list-style: none;
	margin: 0;
	padding: 0;
}

.tp-footer__col li {
	margin: 0 0 9px;
}

.tp-body .tp-footer__col a {
	font-size: 14px;
	color: var(--tp-ink);
}

.tp-body .tp-footer__col a:hover {
	color: var(--tp-burgundy);
	text-decoration: underline;
	text-underline-offset: 4px;
}

.tp-footer__bottom {
	margin-top: 52px;
	padding-top: 22px;
	border-top: 1px solid var(--tp-line);
	display: flex;
	flex-wrap: wrap;
	justify-content: space-between;
	gap: 12px 24px;
	font-size: 12px;
	color: var(--tp-muted);
}

.tp-footer__legal {
	display: flex;
	flex-wrap: wrap;
	gap: 6px 22px;
}

.tp-body .tp-footer__legal a {
	color: var(--tp-muted);
}

.tp-body .tp-footer__legal a:hover {
	color: var(--tp-burgundy);
}

/* ==========================================================================
   Fil d'Ariane
   ========================================================================== */
.tp-breadcrumb ol {
	list-style: none;
	margin: 0 0 28px;
	padding: 0;
	display: flex;
	flex-wrap: wrap;
	gap: 4px 0;
	font-size: 13px;
	line-height: 1.5;
	color: var(--tp-muted);
}

.tp-breadcrumb li:not(:last-child)::after {
	content: "/";
	margin: 0 10px;
	color: var(--tp-line-dark);
}

.tp-body .tp-breadcrumb a {
	color: var(--tp-muted);
}

.tp-body .tp-breadcrumb a:hover {
	color: var(--tp-burgundy);
}

.tp-crumbs {
	padding-top: 22px;
}

.tp-crumbs .tp-breadcrumb ol {
	margin-bottom: 18px;
}

/* ==========================================================================
   Listes d'articles
   ========================================================================== */
.tp-listing-head {
	padding: 56px 0 40px;
	max-width: 860px;
}

.tp-body .tp-listing-head__title {
	font-size: clamp(42px, 5.6vw, 76px);
	line-height: 1.04;
	letter-spacing: -0.02em;
}

.tp-page-count {
	display: block;
	margin-top: 10px;
	font-family: var(--tp-sans);
	font-size: 14px;
	letter-spacing: 0;
	color: var(--tp-muted);
}

.tp-listing-head__desc {
	margin-top: 22px;
	color: var(--tp-muted);
	max-width: 640px;
}

.tp-listing-head__desc p {
	margin: 0 0 12px;
}

.tp-tags ul {
	list-style: none;
	margin: 0 0 44px;
	padding: 18px 0;
	border-top: 1px solid var(--tp-line);
	border-bottom: 1px solid var(--tp-line);
	display: flex;
	flex-wrap: wrap;
	gap: 6px 0;
	font-size: 14px;
}

.tp-tags li:not(:last-child)::after {
	content: "·";
	margin: 0 14px;
	color: var(--tp-line-dark);
}

.tp-body .tp-tags a {
	color: var(--tp-ink);
}

.tp-body .tp-tags a:hover,
.tp-body .tp-tags a[aria-current] {
	color: var(--tp-burgundy);
	text-decoration: underline;
	text-underline-offset: 4px;
}

.tp-grid {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 56px 28px;
}

.tp-card {
	display: flex;
	flex-direction: column;
	min-width: 0;
}

.tp-body .tp-card__media {
	display: block;
	margin-bottom: 20px;
	background: var(--tp-sand);
	overflow: hidden;
}

.tp-card__media img {
	width: 100%;
	aspect-ratio: 3 / 2;
	object-fit: cover;
	transition: opacity var(--tp-ease);
}

.tp-card__placeholder {
	display: block;
	aspect-ratio: 3 / 2;
	background: var(--tp-sand);
}

.tp-card .tp-meta {
	margin-bottom: 10px;
}

.tp-body .tp-card__title {
	font-size: 25px;
	line-height: 1.2;
	margin: 0 0 10px;
}

.tp-body .tp-card__title a {
	color: var(--tp-ink);
}

.tp-body .tp-card__title a:hover {
	color: var(--tp-burgundy);
}

.tp-body .tp-card:hover .tp-card__media img {
	opacity: 0.92;
}

.tp-card__excerpt {
	font-size: 15px;
	line-height: 1.6;
	color: var(--tp-muted);
}

.tp-card__excerpt p {
	margin: 0;
}

/* Pagination */
.tp-pagination {
	margin: 64px 0 0;
	padding-top: 24px;
	border-top: 1px solid var(--tp-line);
}

.tp-pagination .nav-links {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 8px;
	font-size: 14px;
}

.tp-body .tp-pagination .page-numbers,
.tp-body .tp-pagination .post-page-numbers {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 44px;
	min-height: 44px;
	padding: 0 12px;
	border: 1px solid var(--tp-line);
	border-radius: 2px;
	color: var(--tp-ink);
}

.tp-body .tp-pagination .page-numbers.current,
.tp-body .tp-pagination .post-page-numbers.current {
	background: var(--tp-burgundy);
	border-color: var(--tp-burgundy);
	color: var(--tp-white);
}

.tp-body .tp-pagination .page-numbers.dots {
	border-color: transparent;
}

.tp-body .tp-pagination a.page-numbers:hover,
.tp-body .tp-pagination a.post-page-numbers:hover {
	border-color: var(--tp-burgundy);
	color: var(--tp-burgundy);
}

/* ==========================================================================
   Article et page
   ========================================================================== */
.tp-entry-head,
.tp-page-head {
	padding: 44px 0 40px;
}

.tp-entry-head__inner {
	max-width: 900px;
}

.tp-body .tp-entry-title,
.tp-body .tp-page-head__title {
	font-size: clamp(40px, 5vw, 68px);
	line-height: 1.05;
	letter-spacing: -0.02em;
	margin: 0 0 24px;
}

.tp-entry-head .tp-lead {
	margin: 0 0 24px;
}

.tp-entry-figure {
	width: min(calc(100% - var(--tp-gutter) * 2), 1040px);
	margin: 0 auto 56px;
}

.tp-entry-figure img {
	width: 100%;
	max-height: 620px;
	object-fit: cover;
}

.tp-entry-figure figcaption {
	margin-top: 10px;
	font-size: 13px;
	color: var(--tp-muted);
}

.tp-entry {
	width: min(calc(100% - var(--tp-gutter) * 2), var(--tp-reading));
	margin: 0 auto;
	padding-bottom: var(--tp-section);
}

.tp-content {
	font-size: 18px;
	line-height: 1.7;
	overflow-wrap: break-word;
}

.tp-content > *:first-child {
	margin-top: 0;
}

.tp-body .tp-content h2 {
	font-size: clamp(30px, 3vw, 38px);
	line-height: 1.15;
	margin: 2em 0 0.65em;
	scroll-margin-top: 24px;
}

.tp-body .tp-content h3 {
	font-size: clamp(24px, 2.2vw, 28px);
	line-height: 1.2;
	margin: 1.8em 0 0.55em;
	scroll-margin-top: 24px;
}

.tp-body .tp-content h4,
.tp-body .tp-content h5,
.tp-body .tp-content h6 {
	font-size: 21px;
	margin: 1.6em 0 0.5em;
}

.tp-content p {
	margin: 0 0 1.3em;
}

.tp-body .tp-content a {
	color: var(--tp-burgundy);
	text-decoration: underline;
	text-decoration-thickness: 1px;
	text-underline-offset: 3px;
}

.tp-body .tp-content a:hover {
	color: var(--tp-ink);
}

.tp-content ul,
.tp-content ol {
	margin: 0 0 1.4em;
	padding-left: 1.3em;
}

.tp-content li {
	margin-bottom: 0.45em;
}

.tp-content ul li::marker {
	color: var(--tp-burgundy);
}

.tp-content blockquote {
	margin: 2em 0;
	padding: 0.2em 0 0.2em 1.5em;
	border-left: 1px solid var(--tp-burgundy);
	font-family: var(--tp-serif);
	font-size: 24px;
	line-height: 1.45;
}

.tp-content blockquote p:last-child {
	margin-bottom: 0;
}

.tp-content table {
	width: 100%;
	border-collapse: collapse;
	margin: 2em 0;
	font-size: 16px;
	display: block;
	overflow-x: auto;
}

.tp-content th,
.tp-content td {
	padding: 0.7em 0.9em;
	border-bottom: 1px solid var(--tp-line);
	text-align: left;
	vertical-align: top;
}

.tp-content th {
	font-weight: 700;
	border-bottom-color: var(--tp-line-dark);
}

.tp-content img,
.tp-content .wp-caption {
	max-width: 100%;
	height: auto;
}

.tp-content figure,
.tp-content .wp-caption {
	margin: 2em 0;
}

.tp-content figcaption,
.tp-content .wp-caption-text {
	font-size: 13px;
	color: var(--tp-muted);
	margin-top: 0.6em;
}

.tp-content .alignleft {
	float: left;
	margin: 0.4em 1.6em 1em 0;
	max-width: 50%;
}

.tp-content .alignright {
	float: right;
	margin: 0.4em 0 1em 1.6em;
	max-width: 50%;
}

.tp-content .aligncenter {
	display: block;
	margin-left: auto;
	margin-right: auto;
}

.tp-content iframe,
.tp-content video,
.tp-content embed {
	max-width: 100%;
}

.tp-content hr {
	border: 0;
	border-top: 1px solid var(--tp-line);
	margin: 2.5em 0;
}

.tp-content::after {
	content: "";
	display: table;
	clear: both;
}

/* Sommaire (thème) et Easy Table of Contents */
.tp-toc,
.tp-body .tp-content #ez-toc-container {
	margin: 2em 0 2.4em;
	padding: 24px 28px;
	background: var(--tp-white);
	border: 1px solid var(--tp-line);
	border-radius: 0;
	box-shadow: none;
	width: auto;
	display: block;
	font-family: var(--tp-sans);
}

.tp-toc__title,
.tp-body .tp-content #ez-toc-container .ez-toc-title {
	font-family: var(--tp-sans);
	font-size: 11px;
	letter-spacing: 0.15em;
	text-transform: uppercase;
	color: var(--tp-muted);
	margin: 0 0 12px;
	font-weight: 400;
}

.tp-toc ol {
	margin: 0;
	padding-left: 1.3em;
	font-size: 16px;
}

.tp-toc li {
	margin: 0 0 6px;
}

.tp-body .tp-toc a,
.tp-body .tp-content #ez-toc-container a {
	color: var(--tp-ink);
	text-decoration: none;
}

.tp-body .tp-toc a:hover,
.tp-body .tp-content #ez-toc-container a:hover {
	color: var(--tp-burgundy);
	text-decoration: underline;
}

.tp-related .tp-h3 {
	margin: 0 0 36px;
}

/* Formulaire de recherche */
.tp-search-form {
	display: flex;
	gap: 8px;
	max-width: 520px;
	margin-top: 20px;
}

.tp-search-form input[type="search"] {
	flex: 1;
	min-width: 0;
	min-height: 48px;
	padding: 10px 14px;
	border: 1px solid var(--tp-line-dark);
	border-radius: 2px;
	background: var(--tp-white);
	color: var(--tp-ink);
	font: inherit;
	font-size: 16px;
}

.tp-search-form button {
	min-height: 48px;
	padding: 10px 22px;
	border: 1px solid var(--tp-burgundy);
	border-radius: 2px;
	background: var(--tp-burgundy);
	color: var(--tp-white);
	font-family: var(--tp-sans);
	font-size: 14px;
	cursor: pointer;
}

.tp-search-form button:hover {
	background: var(--tp-burgundy-deep);
}

.tp-404 {
	padding: 80px 0 var(--tp-section);
	max-width: 760px;
}

.tp-404 .tp-lead {
	margin: 24px 0 32px;
}

/* Commentaires */
.tp-comments {
	width: min(calc(100% - var(--tp-gutter) * 2), var(--tp-reading));
	margin: 0 auto var(--tp-section);
}

.tp-comments .comment-list {
	list-style: none;
	padding: 0;
}

.tp-comments input:not([type="submit"]):not([type="checkbox"]),
.tp-comments textarea {
	width: 100%;
	padding: 10px 12px;
	border: 1px solid var(--tp-line-dark);
	border-radius: 2px;
	background: var(--tp-white);
	font: inherit;
}

.tp-comments input[type="submit"] {
	min-height: 48px;
	padding: 10px 22px;
	border: 0;
	border-radius: 2px;
	background: var(--tp-burgundy);
	color: var(--tp-white);
	font: inherit;
	font-size: 14px;
	cursor: pointer;
}

/* ==========================================================================
   Pages construites avec Elementor : harmonisation avec la charte.
   Le contenu et les réglages Elementor ne sont pas modifiés ; seules les
   couleurs, typographies, filets et boutons sont alignés sur l'identité.
   ========================================================================== */
.tp-body .elementor-section.elementor-section-boxed > .elementor-container {
	max-width: var(--tp-max);
}

/* Bandeau photo d'origine en tête de page → en-tête éditorial sur sable. */
.tp-elementor .elementor-top-section[data-settings*="background_motion_fx"],
.tp-elementor [data-elementor-type="wp-page"] .elementor-top-section:first-child[data-settings*="background_background"] {
	background-image: none !important;
	background-color: var(--tp-sand) !important;
}

.tp-elementor .elementor-top-section[data-settings*="background_motion_fx"] > .elementor-motion-effects-container,
.tp-elementor .elementor-top-section[data-settings*="background_motion_fx"] > .elementor-background-overlay,
.tp-elementor [data-elementor-type="wp-page"] .elementor-top-section:first-child[data-settings*="background_background"] > .elementor-background-overlay {
	display: none !important;
}

.tp-elementor .elementor-top-section[data-settings*="background_motion_fx"] .elementor-motion-effects-layer {
	background-image: none !important;
}

.tp-elementor .elementor-top-section[data-settings*="background_motion_fx"] .elementor-widget-spacer .elementor-spacer-inner {
	height: 64px !important;
}

/* Titres */
.tp-body .elementor-widget-heading .elementor-heading-title,
.tp-body .elementor-widget-theme-post-title .elementor-heading-title {
	font-family: var(--tp-serif) !important;
	font-weight: 400 !important;
	font-style: normal !important;
	letter-spacing: -0.01em !important;
	text-transform: none !important;
	color: var(--tp-ink) !important;
	line-height: 1.12 !important;
}

.tp-body .elementor-widget-heading h1.elementor-heading-title,
.tp-body .elementor-widget-theme-post-title h1.elementor-heading-title {
	font-size: clamp(42px, 6vw, 80px) !important;
	line-height: 1.03 !important;
	letter-spacing: -0.025em !important;
}

.tp-body .elementor-widget-heading h2.elementor-heading-title {
	font-size: clamp(30px, 3.4vw, 44px) !important;
}

.tp-body .elementor-widget-heading h3.elementor-heading-title {
	font-size: clamp(23px, 2.2vw, 28px) !important;
	color: var(--tp-burgundy) !important;
}

.tp-body .elementor-widget-heading h4.elementor-heading-title,
.tp-body .elementor-widget-heading h5.elementor-heading-title,
.tp-body .elementor-widget-heading h6.elementor-heading-title {
	font-size: 21px !important;
}

/* Textes */
.tp-body .elementor-widget-text-editor,
.tp-body .elementor-widget-text-editor p,
.tp-body .elementor-widget-text-editor li {
	font-family: var(--tp-sans) !important;
	font-weight: 400 !important;
	letter-spacing: 0 !important;
	color: var(--tp-ink) !important;
	font-size: 17px !important;
	line-height: 1.7 !important;
	text-align: left !important;
}

.tp-body .elementor-widget-text-editor p:not(:last-child) {
	margin: 0 0 1em !important;
}

.tp-body .elementor-widget-text-editor h2,
.tp-body .elementor-widget-text-editor h3,
.tp-body .elementor-widget-text-editor h4 {
	font-family: var(--tp-serif) !important;
	font-weight: 400 !important;
	color: var(--tp-ink) !important;
	letter-spacing: -0.01em !important;
}

.tp-body .elementor-widget-text-editor a {
	color: var(--tp-burgundy) !important;
	text-decoration: underline;
	text-underline-offset: 3px;
}

/* Filets décoratifs (motifs « ××× ») → retirés ; filets simples → pierre. */
.tp-body .elementor-widget-divider--separator-type-pattern {
	display: none !important;
}

.tp-body .elementor-widget-divider {
	--divider-color: var(--tp-line) !important;
}

/* Boutons */
.tp-body .elementor-button,
.tp-body .elementor-button-link {
	background: var(--tp-burgundy) !important;
	color: var(--tp-white) !important;
	border: 1px solid var(--tp-burgundy) !important;
	border-radius: 2px !important;
	box-shadow: none !important;
	font-family: var(--tp-sans) !important;
	font-size: 14px !important;
	font-weight: 400 !important;
	letter-spacing: 0.01em !important;
	text-transform: none !important;
	padding: 15px 26px !important;
	min-height: 48px;
	transition: background-color var(--tp-ease) !important;
}

.tp-body .elementor-button:hover,
.tp-body .elementor-button-link:hover {
	background: var(--tp-burgundy-deep) !important;
	border-color: var(--tp-burgundy-deep) !important;
}

.tp-body .elementor-button .elementor-button-text,
.tp-body .elementor-button .elementor-button-icon {
	color: var(--tp-white) !important;
}

/* Listes de liens (icon list) */
.tp-body .elementor-icon-list-text,
.tp-body .elementor-icon-list-item > a {
	font-family: var(--tp-sans) !important;
	font-weight: 400 !important;
	letter-spacing: 0 !important;
	color: var(--tp-ink) !important;
}

.tp-body .elementor-icon-list-item > a:hover .elementor-icon-list-text {
	color: var(--tp-burgundy) !important;
}

.tp-body .elementor-icon-list-icon i,
.tp-body .elementor-icon-list-icon svg {
	color: var(--tp-burgundy) !important;
	fill: var(--tp-burgundy) !important;
}

/* Colonnes et images */
.tp-body .elementor-widget-image img {
	border-radius: 0 !important;
	box-shadow: none !important;
}

.tp-body .elementor-element-populated {
	border-radius: 0 !important;
	box-shadow: none !important;
}

/* Liste d'articles (widget Articles) */
.tp-body .elementor-posts .elementor-post__card {
	background: var(--tp-white) !important;
	border: 1px solid var(--tp-line) !important;
	border-radius: 0 !important;
	box-shadow: none !important;
}

.tp-body .elementor-post__title,
.tp-body .elementor-post__title a {
	font-family: var(--tp-serif) !important;
	font-weight: 400 !important;
	letter-spacing: 0 !important;
	color: var(--tp-ink) !important;
	line-height: 1.2 !important;
}

.tp-body .elementor-post__title a:hover {
	color: var(--tp-burgundy) !important;
}

.tp-body .elementor-post__excerpt p,
.tp-body .elementor-post__meta-data {
	font-family: var(--tp-sans) !important;
	color: var(--tp-muted) !important;
	letter-spacing: 0 !important;
}

.tp-body .elementor-post__badge {
	background: var(--tp-burgundy) !important;
	color: var(--tp-white) !important;
	border-radius: 0 !important;
	font-family: var(--tp-sans) !important;
	font-weight: 400 !important;
	letter-spacing: 0.1em !important;
	text-transform: uppercase;
	font-size: 10px !important;
}

.tp-body .elementor-post__read-more {
	color: var(--tp-burgundy) !important;
	font-family: var(--tp-sans) !important;
	letter-spacing: 0 !important;
}

.tp-body .elementor-pagination .page-numbers {
	color: var(--tp-ink) !important;
}

.tp-body .elementor-pagination .page-numbers.current {
	color: var(--tp-burgundy) !important;
}

/* Formulaires */
.tp-body .elementor-field-group .elementor-field-label {
	font-family: var(--tp-sans) !important;
	font-weight: 400 !important;
	color: var(--tp-ink) !important;
	letter-spacing: 0 !important;
}

.tp-body .elementor-field-group .elementor-field:not(.elementor-select-wrapper),
.tp-body .elementor-field-group .elementor-select-wrapper select,
.tp-body .elementor-field-group textarea.elementor-field {
	background-color: var(--tp-white) !important;
	border: 1px solid var(--tp-line-dark) !important;
	border-radius: 2px !important;
	color: var(--tp-ink) !important;
	font-family: var(--tp-sans) !important;
	letter-spacing: 0 !important;
}

.tp-body .elementor-field-group .elementor-field:focus {
	border-color: var(--tp-burgundy) !important;
	box-shadow: none !important;
}

.tp-body .elementor-field-option label {
	font-family: var(--tp-sans) !important;
	color: var(--tp-ink) !important;
}

/* Étoiles de notation (extension) : sobres, sans couleur vive. */
.tp-body .kk-star-ratings {
	font-family: var(--tp-sans);
	color: var(--tp-muted);
}

/* ==========================================================================
   Pages du guide (rubriques et sous-pages)
   ========================================================================== */
/* En-tête des pages : bandeau bordeaux sous l'en-tête superposé, titre ivoire,
   photo d'ambiance dans une fenêtre en arc qui déborde sur la page. */
.tp-guide-head {
	--tp-head-ink: var(--tp-white);
	--tp-head-soft: rgba(255, 252, 247, 0.76);
	--tp-head-faint: rgba(255, 252, 247, 0.56);
	--tp-head-pad: 88px;
	--tp-arch-w: clamp(220px, 30vw, 420px);
	position: relative;
	background: var(--tp-burgundy-deep);
	color: var(--tp-head-ink);
	padding: 164px 0 var(--tp-head-pad);
}

.tp-guide-head__inner {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	gap: 64px;
}

.tp-guide-head--media .tp-guide-head__inner {
	grid-template-columns: minmax(0, 1fr) var(--tp-arch-w);
}

.tp-guide-head__text {
	display: flex;
	flex-direction: column;
	justify-content: space-between;
	gap: 56px;
	min-width: 0;
}

.tp-guide-head .tp-breadcrumb ol {
	margin: 0;
	color: var(--tp-head-faint);
}

.tp-guide-head .tp-breadcrumb li:not(:last-child)::after {
	color: rgba(255, 252, 247, 0.3);
}

.tp-body .tp-guide-head .tp-breadcrumb a {
	color: var(--tp-head-soft);
}

.tp-body .tp-guide-head .tp-breadcrumb a:hover {
	color: var(--tp-head-ink);
}

.tp-guide-head__kicker {
	font-family: var(--tp-serif);
	font-style: italic;
	font-size: clamp(19px, 1.7vw, 24px);
	line-height: 1.3;
	color: var(--tp-head-soft);
	margin: 0 0 18px;
}

.tp-body .tp-guide-head__title {
	color: var(--tp-head-ink);
	font-size: clamp(46px, 6.8vw, 108px);
	line-height: 0.98;
	letter-spacing: -0.035em;
	max-width: 13ch;
	margin: 0;
	text-wrap: balance;
}

.tp-guide-head__lead {
	font-size: 18px;
	line-height: 1.6;
	color: var(--tp-head-soft);
	max-width: 580px;
	margin-top: 30px;
}

.tp-guide-head__lead p {
	margin: 0;
}

.tp-guide-head__date {
	font-size: 13px;
	line-height: 1.5;
	color: var(--tp-head-faint);
	margin: 30px 0 0;
}

/* La fenêtre en arc : photo d'ambiance, moulure fine, débord sur la page. */
.tp-guide-head__arch {
	position: relative;
	z-index: 2;
	align-self: end;
	width: var(--tp-arch-w);
	aspect-ratio: 3 / 4;
	margin: 0 0 calc(-1 * (var(--tp-head-pad) + var(--tp-arch-over)));
}

.tp-guide-head__arch::before {
	content: "";
	position: absolute;
	inset: -16px -16px 0;
	border: 1px solid rgba(214, 196, 178, 0.45);
	border-bottom: 0;
	border-radius: 999px 999px 0 0;
	pointer-events: none;
}

.tp-guide-head__arch picture {
	display: block;
	width: 100%;
	height: 100%;
	overflow: hidden;
	border-radius: 999px 999px 0 0;
	background: var(--tp-burgundy);
}

.tp-guide-head__arch img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

@media (prefers-reduced-motion: no-preference) {
	.tp-guide-head__arch img {
		animation: tp-arch-settle 1600ms cubic-bezier(0.2, 0.7, 0.2, 1) both;
	}
}

@keyframes tp-arch-settle {
	from {
		transform: scale(1.08);
	}
	to {
		transform: none;
	}
}

/* Le contenu qui suit laisse la place au débord de l'arc. */
.tp-body .tp-guide-head--media + .tp-guide-body {
	padding-top: calc(var(--tp-arch-over) + 40px);
}

.tp-body .tp-guide-head--media + .tp-subnav--top {
	padding-top: 64px;
}

/* Calculateurs : titre plus sobre, l'outil chevauche le bandeau. */
.tp-guide-head--calc {
	--tp-head-pad: 168px;
}

.tp-body .tp-guide-head--calc .tp-guide-head__title {
	font-size: clamp(42px, 5.4vw, 84px);
	max-width: 17ch;
}

.tp-body .tp-guide-head--calc + .tp-calc {
	position: relative;
	z-index: 2;
	margin-top: -112px;
	padding-top: 0;
}

.tp-guide-head--calc + .tp-calc .tp-calc__panel {
	box-shadow: 0 36px 70px -40px rgba(58, 22, 34, 0.5);
}

/* Articles : catégorie en italique, auteur et dates, image qui chevauche le bandeau. */
.tp-body .tp-guide-head--post .tp-guide-head__title {
	font-size: clamp(40px, 5.4vw, 80px);
	max-width: 19ch;
}

.tp-body .tp-guide-head__kicker a {
	color: var(--tp-head-soft);
}

.tp-body .tp-guide-head__kicker a:hover {
	color: var(--tp-head-ink);
}

.tp-guide-head__meta {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0 8px;
}

.tp-guide-head__meta .tp-dot {
	color: rgba(255, 252, 247, 0.32);
}

.tp-guide-head--figure {
	--tp-head-pad: 196px;
}

.tp-guide-head--figure + .tp-entry-figure {
	position: relative;
	z-index: 2;
	margin-top: -140px;
}

.tp-guide-head--post + .tp-entry {
	padding-top: 64px;
}

/* Blog, rubriques du blog, recherche, 404 : bandeau sans photo. */
.tp-guide-head--listing {
	--tp-head-pad: 72px;
}

.tp-body .tp-guide-head--listing .tp-guide-head__title {
	font-size: clamp(44px, 6vw, 92px);
	max-width: 16ch;
}

.tp-guide-head .tp-page-count {
	color: var(--tp-head-faint);
}

.tp-listing-body {
	padding-top: 48px;
}

.tp-listing-search {
	max-width: 640px;
	margin-bottom: 44px;
}

.tp-guide-head--listing + .tp-container .tp-404 {
	padding-top: 56px;
}

/* Pages simples (mentions, contact) : bandeau compact. */
.tp-guide-head--plain {
	--tp-head-pad: 64px;
	padding-top: 156px;
}

.tp-body .tp-guide-head--plain .tp-guide-head__title {
	font-size: clamp(40px, 5vw, 72px);
	max-width: 18ch;
}

.tp-guide-head--plain .tp-guide-head__text {
	gap: 40px;
}

.tp-guide-body {
	padding: 72px 0 var(--tp-section);
}

.tp-guide-body__main {
	max-width: var(--tp-reading);
	margin: 0 auto;
}

.tp-guide-body--aside {
	display: grid;
	grid-template-columns: 260px minmax(0, var(--tp-reading));
	gap: 72px;
	justify-content: start;
}

.tp-guide-body--aside .tp-guide-body__main {
	margin: 0;
}

.tp-guide-body__aside {
	position: relative;
}

.tp-onpage {
	position: sticky;
	top: 32px;
}

.admin-bar .tp-onpage {
	top: 64px;
}

.tp-onpage ol {
	list-style: none;
	margin: 0;
	padding: 0;
	border-top: 1px solid var(--tp-line);
}

.tp-body .tp-onpage a {
	display: grid;
	grid-template-columns: 30px 1fr;
	gap: 6px;
	padding: 12px 0;
	border-bottom: 1px solid var(--tp-line);
	font-size: 14px;
	line-height: 1.45;
	color: var(--tp-ink);
}

.tp-body .tp-onpage a:hover {
	color: var(--tp-burgundy);
}

.tp-onpage__num {
	font-size: 11px;
	letter-spacing: 0.1em;
	color: var(--tp-burgundy);
	padding-top: 2px;
}

/* Sections numérotées : 01, 02… au-dessus de chaque intertitre */
.tp-content--sections {
	counter-reset: tp-section;
}

.tp-body .tp-content--sections > h2 {
	counter-increment: tp-section;
	margin-top: 2.2em;
	padding-top: 1.4em;
	border-top: 1px solid var(--tp-line);
}

.tp-body .tp-content--sections > h2:first-child {
	margin-top: 0;
	padding-top: 0;
	border-top: 0;
}

.tp-content--sections > h2::before {
	content: counter(tp-section, decimal-leading-zero);
	display: block;
	margin-bottom: 14px;
	font-family: var(--tp-sans);
	font-size: 12px;
	letter-spacing: 0.15em;
	color: var(--tp-burgundy);
}

/* Questions fréquentes */
.tp-content details {
	border-bottom: 1px solid var(--tp-line);
	padding: 18px 0;
}

.tp-content details:first-of-type {
	border-top: 1px solid var(--tp-line);
}

.tp-content summary {
	cursor: pointer;
	font-family: var(--tp-serif);
	font-size: 22px;
	line-height: 1.3;
	list-style: none;
	display: flex;
	justify-content: space-between;
	gap: 16px;
}

.tp-content summary::-webkit-details-marker {
	display: none;
}

.tp-content summary::after {
	content: "+";
	font-family: var(--tp-sans);
	color: var(--tp-burgundy);
}

.tp-content details[open] summary::after {
	content: "–";
}

.tp-content details > p {
	margin: 12px 0 0;
}

/* Navigation de rubrique : liste de liens éditoriale */
.tp-subnav {
	padding: 64px 0;
}

.tp-subnav--top {
	border-bottom: 1px solid var(--tp-line);
	padding: 56px 0;
}

.tp-subnav--bottom {
	padding-top: 0;
}

.tp-subnav--bottom > .tp-container {
	border-top: 1px solid var(--tp-line);
	padding-top: 64px;
}

.tp-subnav__head {
	margin-bottom: 28px;
}

.tp-body .tp-subnav__title {
	font-size: clamp(28px, 2.8vw, 38px);
	line-height: 1.12;
}

.tp-subnav__list {
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	column-gap: 32px;
}

.tp-body .tp-subnav__list a {
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: 12px;
	padding: 16px 0;
	border-bottom: 1px solid var(--tp-line-dark);
	font-family: var(--tp-serif);
	font-size: 21px;
	line-height: 1.25;
	color: var(--tp-ink);
}

.tp-body .tp-subnav__list a .tp-arrow {
	color: var(--tp-muted);
	transition: color var(--tp-ease);
}

.tp-body .tp-subnav__list a:hover {
	color: var(--tp-burgundy);
	border-bottom-color: var(--tp-burgundy);
}

.tp-body .tp-subnav__list a:hover .tp-arrow {
	color: var(--tp-burgundy);
}

/* Bandeau « Explorer le guide » en bas des pages */
.tp-finder--band {
	background: var(--tp-sand);
	border-bottom: 0;
	padding: 56px 0;
}

.tp-finder--band .tp-finder__options li {
	border-left-color: var(--tp-line-dark);
}

/* Plan du guide */
.tp-guide-map {
	padding: 24px 0 var(--tp-section);
}

.tp-guide-map > .tp-container {
	border-top: 1px solid var(--tp-line);
	padding-top: 64px;
}

.tp-guide-map__grid {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: 40px 32px;
}

.tp-body .tp-guide-map__hub {
	font-size: 24px;
	line-height: 1.2;
	margin: 0 0 16px;
}

.tp-body .tp-guide-map__hub a {
	color: var(--tp-ink);
}

.tp-guide-map ul {
	list-style: none;
	margin: 0;
	padding: 0;
}

.tp-guide-map li {
	margin: 0 0 8px;
	font-size: 15px;
	line-height: 1.45;
}

.tp-body .tp-guide-map li a,
.tp-body .tp-guide-map__hub a:hover {
	color: var(--tp-ink);
}

.tp-body .tp-guide-map li a:hover,
.tp-body .tp-guide-map__hub a:hover {
	color: var(--tp-burgundy);
	text-decoration: underline;
	text-underline-offset: 4px;
}

/* ==========================================================================
   Responsive
   ========================================================================== */
@media (max-width: 1100px) {
	:root {
		--tp-gutter: 32px;
		--tp-section: 88px;
	}

	.tp-nav,
	.tp-nav__list {
		gap: 22px;
	}

	.tp-intro {
		gap: 56px;
	}

	.tp-districts__inner {
		gap: 48px;
	}

	.tp-mag {
		gap: 32px;
	}

	.tp-mag__story {
		grid-template-columns: 130px 1fr;
		gap: 18px;
	}

	.tp-mag__thumb img {
		width: 130px;
		height: 150px;
	}

	.tp-finder__inner {
		grid-template-columns: 1fr;
		gap: 20px;
	}

	.tp-finder__options li:first-child {
		border-left: 0;
	}

	.tp-body .tp-finder__options li:first-child a {
		padding-left: 0;
	}

	.tp-grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.tp-subnav__list {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.tp-guide-map__grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.tp-guide-body--aside {
		display: block;
	}

	.tp-guide-body__aside {
		display: none;
	}

	.tp-guide-body--aside .tp-guide-body__main {
		margin: 0 auto;
	}
}

@media (max-width: 860px) {
	.tp-nav-toggle {
		display: inline-flex;
	}

	.js .tp-nav {
		display: none;
		position: absolute;
		top: 100%;
		left: 0;
		right: 0;
		flex-direction: column;
		align-items: stretch;
		gap: 0;
		padding: 12px var(--tp-gutter) 28px;
		background: var(--tp-burgundy);
		border-top: 1px solid rgba(255, 252, 247, 0.2);
	}

	.js .tp-nav.is-open {
		display: flex;
	}

	.tp-nav {
		flex-wrap: wrap;
	}

	.js .tp-nav__list {
		flex-direction: column;
		align-items: stretch;
		gap: 0;
	}

	.js .tp-body .tp-header .tp-nav__list a {
		display: block;
		padding: 14px 0;
		font-size: 17px;
		color: var(--tp-white);
		border-bottom: 1px solid rgba(255, 252, 247, 0.18);
	}

	.js .tp-body .tp-header .tp-nav__cta {
		margin-top: 22px;
		justify-content: center;
		min-height: 48px;
		border-color: var(--tp-white);
		color: var(--tp-white);
	}

	.tp-header.is-menu-open:not(.tp-header--overlay) .tp-nav-toggle {
		color: var(--tp-burgundy);
	}
}

@media (max-width: 760px) {
	:root {
		--tp-gutter: 20px;
		--tp-section: 64px;
	}

	body.tp-body {
		font-size: 16px;
	}

	.tp-header__inner,
	.tp-header--overlay .tp-header__inner {
		min-height: 88px;
	}

	.tp-logo {
		width: 138px;
	}

	.tp-hero {
		min-height: 720px;
	}

	.tp-hero__media img {
		object-position: 62% center;
	}

	.tp-hero::after {
		background: rgba(20, 12, 14, 0.5);
	}

	.tp-hero__inner {
		padding: 150px 0 72px;
	}

	.tp-body .tp-hero__title {
		font-size: clamp(42px, 12vw, 52px);
		line-height: 1.05;
		margin-bottom: 22px;
	}

	.tp-hero__text {
		font-size: 16px;
		max-width: 320px;
		margin-bottom: 30px;
	}

	.tp-actions {
		gap: 18px 24px;
	}

	.tp-finder {
		padding: 36px 0;
	}

	.tp-finder__options,
	.tp-finder__options--3 {
		grid-template-columns: repeat(2, 1fr);
		row-gap: 18px;
	}

	.tp-finder__options li:nth-child(odd) {
		border-left: 0;
	}

	.tp-body .tp-finder__options li:nth-child(odd) a {
		padding-left: 0;
	}

	.tp-body .tp-finder__options a {
		padding: 4px 16px;
	}

	.tp-finder__kicker {
		font-size: 10px;
		letter-spacing: 0.08em;
	}

	.tp-finder__label {
		font-size: 20px;
	}

	.tp-section-head {
		display: block;
		margin-bottom: 28px;
	}

	.tp-section-head .tp-link {
		margin-top: 18px;
	}

	.tp-intro {
		grid-template-columns: 1fr;
		gap: 36px;
	}

	.tp-intro__media img {
		height: 420px;
	}

	.tp-occasions {
		grid-template-columns: 1fr;
		gap: 44px;
	}

	.tp-districts {
		padding: 60px 0;
	}

	.tp-districts__inner {
		grid-template-columns: 1fr;
		gap: 28px;
	}

	.tp-districts__grid {
		grid-template-columns: repeat(4, 1fr);
		column-gap: 16px;
	}

	.tp-body .tp-districts__grid a {
		font-size: 22px;
		padding: 14px 0;
	}

	.tp-mag {
		grid-template-columns: 1fr;
		gap: 40px;
	}

	.tp-mag__story {
		grid-template-columns: 112px 1fr;
		gap: 18px;
	}

	.tp-mag__thumb img {
		width: 112px;
		height: 132px;
	}

	.tp-closing {
		padding: 64px 0;
	}

	.tp-latest__list {
		grid-template-columns: 1fr;
	}

	.tp-guide-body {
		padding-top: 48px;
	}

	.tp-subnav,
	.tp-subnav--top {
		padding: 44px 0;
	}

	.tp-subnav--bottom {
		padding-top: 0;
	}

	.tp-subnav--bottom > .tp-container {
		padding-top: 44px;
	}

	.tp-subnav__list {
		grid-template-columns: 1fr;
	}

	.tp-body .tp-subnav__list a {
		font-size: 19px;
		padding: 14px 0;
	}

	.tp-finder--band {
		padding: 40px 0;
	}

	.tp-guide-map__grid {
		grid-template-columns: 1fr;
	}

	.tp-latest__item {
		grid-template-columns: 1fr;
		gap: 6px;
		padding: 18px 0;
	}

	.tp-latest__item .tp-meta .tp-dot {
		display: inline;
	}

	.tp-latest__item .tp-meta span:last-child {
		display: inline;
		margin-top: 0;
	}

	.tp-body .tp-latest__title {
		font-size: 20px;
	}

	.tp-footer__top {
		grid-template-columns: 1fr 1fr;
		gap: 36px 24px;
	}

	.tp-footer__brand {
		grid-column: 1 / -1;
	}

	.tp-footer__bottom {
		flex-direction: column;
	}

	.tp-grid {
		grid-template-columns: 1fr;
		gap: 44px;
	}

	.tp-listing-head {
		padding: 36px 0 28px;
	}

	.tp-entry-head,
	.tp-page-head {
		padding: 28px 0 28px;
	}

	.tp-entry-figure {
		width: 100%;
		margin-bottom: 36px;
	}

	.tp-content {
		font-size: 17px;
	}

	.tp-content .alignleft,
	.tp-content .alignright {
		float: none;
		margin: 1.5em 0;
		max-width: 100%;
	}

	.tp-search-form {
		flex-direction: column;
	}

	.tp-body .elementor-widget-text-editor,
	.tp-body .elementor-widget-text-editor p,
	.tp-body .elementor-widget-text-editor li {
		font-size: 16px !important;
	}
}

@media (max-width: 380px) {
	.tp-districts__grid {
		grid-template-columns: repeat(3, 1fr);
	}
}

/* En-tête des pages : tablette et mobile */
@media (max-width: 860px) {
	:root {
		--tp-arch-over: 72px;
	}

	.tp-guide-head {
		padding-top: 148px;
	}

	.tp-guide-head__inner,
	.tp-guide-head--media .tp-guide-head__inner {
		gap: 40px;
	}

	.tp-guide-head__arch::before {
		inset: -10px -10px 0;
	}
}

@media (max-width: 760px) {
	.tp-guide-head {
		padding-top: 120px;
		--tp-head-pad: 56px;
	}

	.tp-guide-head__text {
		gap: 40px;
	}

	.tp-guide-head__lead {
		font-size: 17px;
		margin-top: 22px;
	}

	.tp-guide-head__date {
		margin-top: 22px;
	}

	.tp-guide-head--calc {
		--tp-head-pad: 96px;
	}

	.tp-body .tp-guide-head--calc + .tp-calc {
		margin-top: -56px;
	}

	.tp-guide-head--plain {
		padding-top: 120px;
		--tp-head-pad: 44px;
	}

	.tp-guide-head--figure {
		--tp-head-pad: 88px;
	}

	.tp-guide-head--listing {
		--tp-head-pad: 48px;
	}

	.tp-listing-body {
		padding-top: 32px;
	}

	.tp-guide-head--figure + .tp-entry-figure {
		margin-top: -48px;
	}
}

@media (max-width: 639px) {
	.tp-guide-head--media .tp-guide-head__inner {
		grid-template-columns: minmax(0, 1fr);
	}

	.tp-guide-head__arch {
		display: none;
	}

	.tp-body .tp-guide-head--media + .tp-guide-body {
		padding-top: 48px;
	}

	.tp-body .tp-guide-head--media + .tp-subnav--top {
		padding-top: 44px;
	}
}

@media (prefers-reduced-motion: reduce) {
	html {
		scroll-behavior: auto;
	}

	*,
	*::before,
	*::after {
		transition: none !important;
		animation: none !important;
	}
}

/* ==========================================================================
   Calculateurs « quantités par personne »
   ========================================================================== */
.tp-calc {
	padding: 56px 0 0;
	scroll-margin-top: 24px;
}

.tp-calc__panel {
	display: grid;
	grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr);
	background: var(--tp-white);
	border: 1px solid var(--tp-line);
}

.tp-calc__form {
	display: grid;
	gap: 22px;
	align-content: start;
	padding: 40px 44px;
	margin: 0;
}

.tp-body .tp-calc__title {
	font-size: 30px;
	line-height: 1.15;
}

.tp-calc__row {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 16px;
}

.tp-calc__field {
	display: grid;
	gap: 8px;
	font-size: 13px;
	line-height: 1.3;
	letter-spacing: 0.02em;
	color: var(--tp-muted);
}

.tp-calc__field[hidden] {
	display: none;
}

.tp-calc__field input,
.tp-calc__field select {
	width: 100%;
	min-height: 50px;
	padding: 10px 14px;
	border: 1px solid var(--tp-line-dark);
	border-radius: 2px;
	background: var(--tp-ivory);
	color: var(--tp-ink);
	font-family: var(--tp-sans);
	font-size: 17px;
	line-height: 1.3;
}

.tp-calc__field input:focus,
.tp-calc__field select:focus {
	border-color: var(--tp-burgundy);
	outline: none;
	box-shadow: 0 0 0 1px var(--tp-burgundy);
}

.tp-calc__appetite {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
	margin: 0;
	padding: 0;
	border: 0;
}

.tp-calc__appetite label {
	position: relative;
	cursor: pointer;
}

.tp-calc__appetite input {
	position: absolute;
	opacity: 0;
	width: 1px;
	height: 1px;
}

.tp-calc__appetite span {
	display: inline-block;
	padding: 9px 16px;
	border: 1px solid var(--tp-line-dark);
	border-radius: 999px;
	font-size: 14px;
	line-height: 1.3;
	color: var(--tp-ink);
	transition: background-color var(--tp-ease), border-color var(--tp-ease), color var(--tp-ease);
}

.tp-calc__appetite input:checked + span {
	background: var(--tp-burgundy);
	border-color: var(--tp-burgundy);
	color: var(--tp-white);
}

.tp-calc__appetite input:focus-visible + span {
	outline: 2px solid var(--tp-burgundy);
	outline-offset: 3px;
}

.tp-calc__result {
	display: flex;
	flex-direction: column;
	padding: 40px 44px;
	background: var(--tp-burgundy);
	color: var(--tp-white);
}

.tp-calc__for {
	font-size: 11px;
	line-height: 1.4;
	letter-spacing: 0.15em;
	text-transform: uppercase;
	color: rgba(255, 252, 247, 0.72);
}

.tp-calc__list {
	list-style: none;
	margin: 12px 0 0;
	padding: 0;
}

.tp-calc__list li {
	display: grid;
	gap: 4px;
	padding: 16px 0;
	border-bottom: 1px solid rgba(255, 252, 247, 0.18);
}

.tp-calc__label,
.tp-calc__sub {
	font-size: 14px;
	line-height: 1.45;
	color: rgba(255, 252, 247, 0.78);
}

.tp-body .tp-calc__value {
	font-family: var(--tp-serif);
	font-weight: 400;
	font-size: clamp(34px, 3.6vw, 48px);
	line-height: 1.05;
	letter-spacing: -0.01em;
	color: var(--tp-white);
}

.tp-calc__ref {
	margin-top: auto;
	padding-top: 22px;
	font-size: 13px;
	line-height: 1.5;
	color: rgba(255, 252, 247, 0.72);
}

.tp-calc__more {
	margin-top: 14px;
	font-size: 14px;
}

.tp-body .tp-calc__more a {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	color: var(--tp-white);
	border-bottom: 1px solid currentColor;
	padding-bottom: 3px;
}

.tp-calc__more a[hidden] {
	display: none;
}

.tp-calc__note {
	max-width: 760px;
	margin-top: 14px;
	font-size: 13px;
	line-height: 1.55;
	color: var(--tp-muted);
}

.tp-calc-table {
	margin: 2em 0;
	overflow-x: auto;
}

.tp-content .tp-calc-table table {
	display: table;
	width: 100%;
	margin: 0;
	overflow: visible;
}

.tp-calc-table caption {
	caption-side: top;
	text-align: left;
	padding: 0 0 10px;
	font-size: 13px;
	color: var(--tp-muted);
}

.tp-calc-table tbody th {
	font-weight: 400;
	white-space: nowrap;
}

.tp-calc-table td {
	font-variant-numeric: tabular-nums;
}

.tp-calc-links,
.tp-content .tp-calc-links {
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	column-gap: 32px;
}

.tp-content .tp-calc-links--inline {
	grid-template-columns: repeat(2, minmax(0, 1fr));
	margin: 2em 0;
}

.tp-content .tp-calc-links li {
	margin: 0;
	padding: 0;
}

.tp-content .tp-calc-links li::before {
	content: none;
}

.tp-body .tp-calc-links a {
	display: grid;
	gap: 6px;
	height: 100%;
	padding: 18px 0;
	border-bottom: 1px solid var(--tp-line-dark);
	color: var(--tp-ink);
	text-decoration: none;
}

.tp-calc-links__name {
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: 12px;
	font-family: var(--tp-serif);
	font-size: 21px;
	line-height: 1.25;
}

.tp-calc-links__recap {
	font-size: 13px;
	line-height: 1.5;
	color: var(--tp-muted);
}

.tp-body .tp-calc-links a:hover {
	border-bottom-color: var(--tp-burgundy);
}

.tp-body .tp-calc-links a:hover .tp-calc-links__name {
	color: var(--tp-burgundy);
}

.tp-quantites {
	padding: 88px 0 8px;
}

.tp-calc-sources {
	margin-top: 56px;
	padding-top: 24px;
	border-top: 1px solid var(--tp-line);
	font-size: 14px;
	line-height: 1.5;
}

.tp-calc-sources ul {
	list-style: none;
	margin: 0;
	padding: 0;
}

.tp-calc-sources li {
	margin: 0 0 8px;
}

.tp-body .tp-calc-sources a {
	color: var(--tp-muted);
	text-decoration: underline;
	text-decoration-color: var(--tp-line-dark);
	text-underline-offset: 3px;
}

.tp-body .tp-calc-sources a:hover {
	color: var(--tp-burgundy);
}

@media (max-width: 1100px) {
	.tp-calc-links,
	.tp-content .tp-calc-links {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

@media (max-width: 860px) {
	.tp-calc__panel {
		grid-template-columns: minmax(0, 1fr);
	}
}

@media (max-width: 760px) {
	.tp-calc {
		padding-top: 32px;
	}

	.tp-calc__form,
	.tp-calc__result {
		padding: 28px 22px;
	}

	.tp-body .tp-calc__title {
		font-size: 26px;
	}

	.tp-calc-links,
	.tp-content .tp-calc-links,
	.tp-content .tp-calc-links--inline {
		grid-template-columns: minmax(0, 1fr);
	}

	.tp-quantites {
		padding-top: 64px;
	}
}

/* Encart « Combien prévoir ? » sur les pages du guide */
.tp-calc-related {
	margin-top: 56px;
	padding: 32px 36px;
	background: var(--tp-white);
	border: 1px solid var(--tp-line);
}

.tp-calc-related .tp-calc-links {
	grid-template-columns: repeat(2, minmax(0, 1fr));
}

.tp-calc-related__all {
	margin-top: 22px;
}

@media (max-width: 760px) {
	.tp-calc-related {
		padding: 24px 20px;
	}

	.tp-calc-related .tp-calc-links {
		grid-template-columns: minmax(0, 1fr);
	}
}
