@import url('https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght@9..144,500;9..144,600;9..144,700&family=Inter:wght@400;500;600;700&display=swap');

body.to-core {
	margin: 0;
	background: #fafaf9;
	color: #1c1917;
	font-family: 'Inter', -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
	-webkit-font-smoothing: antialiased;
}
.to-core h1, .to-core h2, .to-core h3 {
	font-family: 'Fraunces', Georgia, "Times New Roman", serif;
	font-weight: 600;
	letter-spacing: -0.01em;
	margin: 0 0 8px;
}

/* Nav publique */
.to-nav {
	display: flex;
	align-items: center;
	justify-content: flex-start;
	padding: 4px 40px;
	background: rgba(255,255,255,0.92);
	backdrop-filter: saturate(180%) blur(10px);
	box-shadow: 0 1px 0 rgba(0,0,0,0.02);
	position: sticky;
	top: 0;
	z-index: 10;
}
.to-nav::after {
	content: '';
	position: absolute;
	left: 0;
	right: 0;
	bottom: -3px;
	height: 3px;
	background: linear-gradient(90deg, transparent 0%, #065f46 20%, #0a6b4d 50%, #065f46 80%, transparent 100%);
}
.to-nav-logo { display: flex; align-items: center; text-decoration: none; }
.to-nav-logo img { height: 136px; width: auto; max-width: 100%; display: block; }

.to-nav-quote { text-align: center; margin-left: 28px; margin-right: auto; }
.to-nav-quote-stars { color: #f59e0b; font-size: 12px; letter-spacing: 2px; display: block; }
.to-nav-quote-text {
	font-family: 'Fraunces', Georgia, serif;
	font-style: italic;
	font-size: 13px;
	line-height: 1.35;
	color: #064e3b;
	margin: 2px 0 0;
}

.to-nav-links { display: flex; align-items: center; gap: 22px; font-size: 13px; margin-left: auto; }
.to-nav-links .to-btn { display: inline-flex; align-items: center; gap: 6px; }
.to-nav-links .to-btn .to-nav-icon { color: currentColor; }
.to-nav-links > a:not(.to-btn):not(.to-nav-booking-btn):not(.to-nav-space-btn) {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	color: #44403c;
	text-decoration: none;
	font-weight: 600;
	letter-spacing: 0.03em;
	text-transform: uppercase;
	font-size: 12.5px;
	padding: 6px 4px;
	position: relative;
	transition: color .15s ease;
}
.to-nav-links > a:not(.to-btn):not(.to-nav-booking-btn):not(.to-nav-space-btn)::after {
	content: '';
	position: absolute;
	left: 4px;
	right: 4px;
	bottom: -2px;
	height: 2px;
	background: #065f46;
	transform: scaleX(0);
	transform-origin: left;
	transition: transform .18s ease;
}
.to-nav-links > a:not(.to-btn):not(.to-nav-booking-btn):not(.to-nav-space-btn):hover { color: #065f46; }
.to-nav-links > a:not(.to-btn):not(.to-nav-booking-btn):not(.to-nav-space-btn):hover::after { transform: scaleX(1); }
.to-nav-icon { flex: 0 0 auto; color: #059669; }

.to-nav-space-btn {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	background: #065f46;
	color: #fff !important;
	text-decoration: none;
	font-weight: 700;
	font-size: 12.5px;
	letter-spacing: 0.03em;
	text-transform: uppercase;
	padding: 9px 18px;
	border-radius: 8px;
	border: 1px solid transparent;
	transition: background .15s ease, color .15s ease, border-color .15s ease;
}
.to-nav-space-btn .to-nav-icon { color: #fff; }
.to-nav-space-btn:hover { background: #fff; color: #065f46 !important; border: 1px solid #065f46; }
.to-nav-space-btn:hover .to-nav-icon { color: #065f46; }

.to-nav-logout {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 34px;
	height: 34px;
	border-radius: 10px;
	background: transparent;
	transition: opacity .15s ease;
}
.to-nav-logout svg { width: 19px; height: 19px; stroke: #065f46; }
.to-nav-logout:hover { opacity: 0.7; }

.to-nav-booking-btn {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	background: #003580;
	color: #ffd400 !important;
	text-decoration: none;
	font-weight: 700;
	font-size: 12.5px;
	padding: 9px 16px;
	border-radius: 8px;
	transition: background .15s ease, color .15s ease;
}
.to-nav-booking-btn:hover { background: #ffd400; color: #003580 !important; }

.to-nav-links .to-btn--primary { border-radius: 8px; }

@media (max-width: 1100px) {
	.to-nav-quote { display: none; }
}

/* Boutons partagés */
.to-btn {
	display: inline-block;
	text-align: center;
	border-radius: 999px;
	padding: 11px 22px;
	font-size: 14px;
	font-weight: 600;
	text-decoration: none;
	cursor: pointer;
	border: 1px solid transparent;
	transition: transform .15s ease, box-shadow .15s ease, background .15s ease;
}
.to-btn--primary {
	background: linear-gradient(180deg, #0a7355 0%, #065f46 100%);
	color: #fff;
	box-shadow: 0 2px 8px rgba(6,95,70,0.28), inset 0 1px 0 rgba(255,255,255,0.12);
}
.to-btn--primary:hover { transform: translateY(-1px); box-shadow: 0 6px 16px rgba(6,95,70,0.34); color: #fff; }
.to-btn--outline-invert { background: transparent; color: #fff; border-color: rgba(255,255,255,0.6); }
.to-btn--outline-invert:hover { background: rgba(255,255,255,0.12); }
.to-btn--outline { background: #fff; color: #065f46; border-color: #065f46; }
.to-btn--outline:hover { background: #ecfdf5; }
.to-btn--danger { background: #fef2f2; color: #b91c1c; border-color: #fecaca; }
.to-btn--danger:hover { background: #fee2e2; }
.to-btn--ghost { background: transparent; color: #064e3b; border-color: #d1e7dc; }
.to-btn--ghost:hover { background: #ecfdf5; color: #064e3b; }
.to-btn--soft { background: #ecfdf5; color: #065f46; border-color: #ecfdf5; }
.to-btn--soft:hover { background: #d7f2e4; color: #065f46; }
.to-btn--small { padding: 6px 16px; font-size: 12.5px; }
.to-btn--lg { padding: 15px 30px; font-size: 15px; }
.to-btn--full { display: block; width: 100%; box-sizing: border-box; }

/* Hero */
.to-hero {
	position: relative;
	text-align: center;
	padding: 110px 24px 72px;
	background:
		radial-gradient(60% 80% at 50% -10%, rgba(6,95,70,0.14), transparent 60%),
		linear-gradient(180deg, #ecfdf5 0%, #fafaf9 100%);
	overflow: hidden;
}
.to-hero h1 { font-size: 44px; line-height: 1.12; max-width: 760px; margin: 0 auto 18px; color: #0b3d2e; }
.to-hero p { max-width: 560px; margin: 0 auto 32px; color: #57534e; font-size: 17px; }

.to-hero--split { padding: 0; }
.to-hero-inner {
	display: grid;
	grid-template-columns: 1.1fr 0.9fr;
	align-items: center;
	gap: 48px;
	text-align: left;
	max-width: 1200px;
	margin: 0 auto;
	padding: 72px 24px;
}
.to-hero--split h1 { text-align: left; margin: 0 0 16px; max-width: none; }
.to-hero--split p { text-align: left; margin: 0 0 28px; max-width: none; }
.to-hero-actions { display: flex; gap: 14px; flex-wrap: wrap; }
.to-hero-photos { position: relative; min-height: 360px; }
.to-hero-photo {
	position: absolute;
	border-radius: 18px;
	object-fit: cover;
	box-shadow: 0 24px 48px -16px rgba(6,32,24,0.35);
	cursor: pointer;
	transition: top .25s ease, left .25s ease, right .25s ease, bottom .25s ease, opacity .25s ease, box-shadow .25s ease;
}
.to-hero-photo--back { top: 0; left: 40px; width: 78%; height: 260px; opacity: 0.9; z-index: 1; }
.to-hero-photo--front { bottom: 0; right: 0; width: 78%; height: 280px; border: 4px solid #fff; z-index: 2; box-shadow: 0 30px 60px -16px rgba(6,32,24,0.45); }

@media (max-width: 900px) {
	.to-hero-inner { grid-template-columns: 1fr; padding: 48px 20px; }
	.to-hero-photos { min-height: 300px; margin-top: 24px; }
}

/* Césure entre le hero et "Comment ça marche" — même largeur/alignement
   que .to-hero-inner (démarre au "V" du H1, finit au bord droit des
   photos), même effet de fondu que la césure menu/hero (.to-nav::after),
   cercle logo premium au centre (repris du pattern .to-choice-divider). */
.to-section-divider {
	position: relative;
	max-width: 1200px;
	margin: 0 auto;
	padding: 0 24px;
	height: 64px;
}
.to-section-divider-line {
	position: absolute;
	top: 50%;
	left: 24px;
	right: 24px;
	height: 2px;
	transform: translateY(-50%);
	background: linear-gradient(90deg, transparent 0%, #065f46 15%, #0a6b4d 50%, #065f46 85%, transparent 100%);
}
.to-section-divider-circle {
	position: absolute;
	top: 50%;
	left: 50%;
	transform: translate(-50%, -50%);
	width: 64px;
	height: 64px;
	border-radius: 999px;
	background: #fff;
	box-shadow: 0 10px 26px -8px rgba(6,32,24,0.28), 0 2px 8px rgba(0,0,0,0.06);
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 12px;
}
.to-section-divider-circle img { width: 100%; height: auto; display: block; }

@media (max-width: 640px) {
	.to-section-divider { padding: 0 20px; height: 48px; }
	.to-section-divider-line { left: 20px; right: 20px; }
	.to-section-divider-circle { width: 48px; height: 48px; padding: 9px; }
}

/* Sections publiques */
.to-section { max-width: 1120px; margin: 0 auto; padding: 56px 24px; }
.to-section--compact { padding: 32px 24px; }
.to-section--muted { background: #f5f5f4; max-width: none; }
.to-section--muted > * { max-width: 1120px; margin-left: auto; margin-right: auto; }
.to-section h2 { font-size: 24px; margin-bottom: 24px; }

.to-section-title-premium {
	display: flex;
	align-items: center;
	gap: 14px;
	white-space: normal;
}
.to-section-title-ornament {
	font-size: 19px;
	color: #b45309;
	flex-shrink: 0;
	line-height: 1;
}
.to-section-title-premium span:not(.to-section-title-ornament):not(.to-section-title-rule) {
	white-space: nowrap;
	color: #064e3b;
}
.to-section-title-rule {
	flex: 1 1 auto;
	height: 1px;
	background: #d6d3d1;
	min-width: 24px;
}
.to-section-title-premium--centered {
	justify-content: center;
	gap: 10px;
}
.to-section-title-premium--centered .to-section-title-ornament { font-size: 17px; }
@media (max-width: 640px) {
	.to-section-title-premium span:not(.to-section-title-ornament):not(.to-section-title-rule) {
		white-space: normal;
	}
}

/* Grille annonces */
.to-listing-grid {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
	gap: 24px;
}
.to-listing-grid--catalog { grid-template-columns: repeat(4, 1fr); }
@media (max-width: 1100px) { .to-listing-grid--catalog { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 780px)  { .to-listing-grid--catalog { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 520px)  { .to-listing-grid--catalog { grid-template-columns: 1fr; } }

/* Page Hébergements */
.to-catalog-hero {
	background-size: 100% 100%;
	background-repeat: no-repeat;
	background-position: center;
	width: 100%;
	min-height: calc(100vh - 140px);
	display: flex;
	align-items: flex-start;
	justify-content: center;
	padding: 56px 24px 32px;
}
.to-catalog-hero-content { width: 100%; max-width: 1000px; text-align: center; }
.to-catalog-hero-title {
	font-family: 'Fraunces', Georgia, serif;
	color: #fff;
	font-size: 32px;
	margin: 0 0 8px;
	text-shadow: 0 2px 10px rgba(0,0,0,0.35);
}
.to-catalog-hero-subtitle {
	color: #fff;
	font-size: 15px;
	margin: 0 0 26px;
	text-shadow: 0 1px 6px rgba(0,0,0,0.35);
}
.to-catalog-search {
	background: rgba(255,255,255,0.97);
	backdrop-filter: blur(4px);
	border-radius: 18px;
	border: 3px solid #fbbf24;
	padding: 24px 28px;
	display: flex;
	flex-wrap: wrap;
	align-items: flex-end;
	gap: 16px;
	box-shadow: 0 24px 60px -20px rgba(0,0,0,0.45), 0 0 0 6px rgba(251,191,36,0.15);
}
.to-catalog-search label {
	font-size: 12px;
	font-weight: 600;
	color: #57534e;
	display: flex;
	flex-direction: column;
	gap: 6px;
	flex: 1 1 120px;
	min-width: 0;
}
.to-catalog-search select {
	padding: 9px 10px;
	border: 1px solid #e7e5e4;
	border-radius: 8px;
	font-size: 13.5px;
	width: 100%;
	background: #fff;
}
.to-catalog-search .to-btn { align-self: flex-end; flex-shrink: 0; white-space: nowrap; }

.to-catalog-more-wrap { text-align: center; margin-top: 32px; }

.to-trust-bar {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: 28px;
	background: #ecfdf5;
	border-bottom: 1px solid #a7f3d0;
	padding: 14px 24px;
	font-size: 13px;
	color: #065f46;
	font-weight: 600;
}
.to-trust-bar span { display: inline-flex; align-items: center; gap: 7px; white-space: nowrap; }
.to-trust-icon { font-style: normal; color: #059669; }

/* Pages de destination (mer/montagne/campagne) */
.to-tag-hero {
	background: linear-gradient(180deg, #065f46 0%, #059669 60%, #ecfdf5 100%);
	padding: 40px 24px 50px;
	text-align: center;
}
.to-tag-hero--mer {
	background: linear-gradient(180deg, #f59e0b 0%, #38bdf8 55%, #ecfdf5 100%);
}
.to-tag-hero--montagne {
	background: linear-gradient(180deg, #334155 0%, #64748b 55%, #ecfdf5 100%);
}
.to-tag-hero--nature {
	background: linear-gradient(180deg, #065f46 0%, #059669 60%, #ecfdf5 100%);
}
.to-tag-hero h1 {
	font-family: 'Fraunces', Georgia, serif;
	color: #fff;
	font-size: 30px;
	margin: 0 0 8px;
	text-shadow: 0 1px 4px rgba(0,0,0,0.15);
}
.to-tag-hero .to-catalog-hero-subtitle { margin: 0 0 26px; }
.to-tag-hero .to-catalog-search { max-width: 900px; margin: 0 auto; }

.to-listing-card {
	display: flex;
	flex-direction: column;
	height: 100%;
	text-decoration: none;
	color: inherit;
	border: 1px solid #e7e5e4;
	border-radius: 16px;
	overflow: hidden;
	background: #fff;
	transition: transform 0.25s ease, box-shadow 0.25s ease, border-color 0.25s ease;
}
.to-listing-card:hover {
	transform: translateY(-6px);
	box-shadow: 0 20px 40px -12px rgba(6,95,70,0.28);
	border-color: #a7f3d0;
}
.to-listing-card-photo {
	position: relative;
	aspect-ratio: 4 / 3;
	background: linear-gradient(135deg, #064e3b, #059669);
	display: flex;
	align-items: flex-end;
	padding: 12px;
	overflow: hidden;
}
.to-listing-card-photo img {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform 0.5s ease;
}
.to-listing-card:hover .to-listing-card-photo img { transform: scale(1.09); }
.to-listing-card-photo::after {
	content: '';
	position: absolute;
	inset: 0;
	background: linear-gradient(180deg, rgba(0,0,0,0) 55%, rgba(0,0,0,0.32) 100%);
	opacity: 0;
	transition: opacity 0.3s ease;
}
.to-listing-card:hover .to-listing-card-photo::after { opacity: 1; }
.to-listing-card-photo span {
	position: relative;
	background: rgba(255,255,255,0.92);
	color: #065f46;
	font-size: 11px;
	font-weight: 600;
	padding: 4px 10px;
	border-radius: 999px;
}
.to-listing-card-badge {
	position: absolute;
	top: 10px;
	left: 10px;
	background: #065f46;
	color: #fff;
	font-size: 11px;
	font-weight: 600;
	padding: 4px 10px;
	border-radius: 999px;
}
.to-listing-card-body { display: flex; flex-direction: column; flex: 1 1 auto; padding: 16px; }
.to-listing-card-body h3 { font-size: 16px; margin: 0 0 4px; }
.to-listing-card-body p { font-size: 13px; color: #78716c; margin: 0 0 8px; }
.to-listing-card-meta { display: flex; align-items: center; gap: 12px; font-size: 12px; color: #57534e; }
.to-listing-card-capacity { display: inline-flex; align-items: center; gap: 4px; }
.to-listing-card-capacity svg { display: block; flex-shrink: 0; }

.to-listing-card-rating {
	display: flex;
	align-items: center;
	gap: 6px;
	margin: 0 0 8px;
}
.to-listing-card-rating-value {
	font-family: 'Fraunces', Georgia, serif;
	font-weight: 700;
	font-size: 18px;
	color: #1c1917;
}
.to-listing-card-stars { display: flex; gap: 1px; line-height: 1; }
.to-listing-card-stars .to-listing-card-star { font-size: 14px; color: #e7e5e4; }
.to-listing-card-stars .to-listing-card-star.is-filled { color: #fbbf24; }
.to-listing-card-google-g { display: inline-flex; margin-left: 2px; }
.to-listing-card-google-g svg { display: block; }

.to-listing-card-cta {
	display: block;
	text-align: center;
	margin-top: auto;
	padding: 8px 16px;
	border-radius: 999px;
	background: #065f46;
	color: #fff;
	border: 1px solid #065f46;
	font-size: 12.5px;
	font-weight: 600;
	transition: background .15s ease, color .15s ease;
}
.to-listing-card:hover .to-listing-card-cta { background: #fff; color: #065f46; }

/* Destinations */
.to-destination-grid {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
	gap: 16px;
}
/* Carrousel "à la une" */
.to-featured-carousel { display: flex; align-items: center; gap: 12px; }
.to-featured-track {
	display: flex;
	flex-wrap: nowrap;
	overflow-x: auto;
	scroll-snap-type: x mandatory;
	gap: 24px;
	scrollbar-width: none;
}
.to-featured-track::-webkit-scrollbar { display: none; }
.to-featured-track .to-listing-card {
	flex: 0 0 calc(25% - 18px);
	scroll-snap-align: start;
	min-width: 240px;
}
.to-carousel-arrow {
	flex: 0 0 auto;
	width: 40px;
	height: 40px;
	border-radius: 999px;
	border: 1px solid #e7e5e4;
	background: #fff;
	font-size: 20px;
	color: #065f46;
	cursor: pointer;
}
.to-carousel-arrow:hover { background: #ecfdf5; }
@media (max-width: 900px) { .to-featured-track .to-listing-card { flex-basis: calc(50% - 12px); } }
@media (max-width: 560px) { .to-featured-track .to-listing-card { flex-basis: 85%; } }

/* Destinations */
.to-section-title--centered { text-align: center; }
.to-destination-grid {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
	gap: 16px;
}
.to-destination-grid--categories {
	grid-template-columns: repeat(3, 1fr);
	max-width: 1120px;
	margin: 0 auto;
	gap: 24px;
}
.to-destination-cat {
	background-size: cover;
	background-position: center;
	border-radius: 18px;
	min-height: 220px;
	display: flex;
	align-items: flex-end;
	overflow: hidden;
	box-shadow: 0 12px 30px -12px rgba(0,0,0,0.25);
	transition: transform 0.3s ease, box-shadow 0.3s ease;
}
.to-destination-cat:hover {
	transform: scale(1.035);
	box-shadow: 0 24px 48px -16px rgba(6,95,70,0.4);
}
.to-destination-cat-inner {
	width: 100%;
	padding: 20px;
	background: linear-gradient(0deg, rgba(6,32,24,0.75) 0%, rgba(6,32,24,0.1) 80%);
	display: flex;
	align-items: center;
	justify-content: space-between;
}
.to-destination-cat-inner h3 { color: #fff; font-family: 'Fraunces', Georgia, serif; font-size: 22px; margin: 0; }
.to-destination-cat-inner .to-btn--primary:hover { background: #fff; color: #065f46; }
@media (max-width: 780px) { .to-destination-grid--categories { grid-template-columns: 1fr; } }

.to-destination-card {
	background: #fff;
	border: 1px solid #e7e5e4;
	border-radius: 12px;
	padding: 16px;
	text-align: center;
}
.to-destination-card h3 { font-size: 15px; margin: 0; }
.to-destination-card p { font-size: 12px; color: #78716c; margin: 2px 0 8px; }
.to-destination-card span { font-size: 11px; color: #059669; font-weight: 600; }

/* Newsletter (page d'accueil) */
.to-newsletter-section { text-align: center; }
.to-newsletter-section p { color: #57534e; margin: 0 0 20px; }
.to-newsletter-form-inline { display: flex; justify-content: center; gap: 10px; flex-wrap: wrap; max-width: 480px; margin: 0 auto; }
.to-newsletter-form-inline input {
	flex: 1 1 240px;
	padding: 11px 14px;
	border: 1px solid #e7e5e4;
	border-radius: 999px;
	font-size: 14px;
}
.to-newsletter-note { font-size: 11px; color: #a8a29e; margin-top: 10px !important; }
.to-cta-band--newsletter .to-newsletter-note { color: #d1fae5; }

/* Bandeau CTA hôte */
.to-cta-band {
	background: #064e3b;
	color: #fff;
	text-align: center;
	padding: 56px 24px;
}
.to-cta-band h2 { color: #fff; font-size: 24px; }
.to-cta-band p { color: #d1fae5; max-width: 480px; margin: 0 auto 24px; }

.to-empty-state { color: #78716c; font-size: 14px; }
.to-simple-divider { display: flex; justify-content: center; margin: 8px 0 40px; }
.to-simple-divider span {
	display: block;
	width: 64px;
	height: 3px;
	border-radius: 999px;
	background: linear-gradient(90deg, transparent, #065f46, transparent);
}
.to-section-see-all { text-align: center; margin: 18px 0 0; }
.to-section-see-all a { color: #047857; font-weight: 600; font-size: 14px; text-decoration: none; }
.to-section-see-all a:hover { text-decoration: underline; }
.to-preview-banner {
	max-width: 1200px;
	margin: 16px auto 0;
	padding: 10px 16px;
	background: #fffbeb;
	border: 1px solid #fde68a;
	color: #92400e;
	border-radius: 8px;
	font-size: 13px;
	text-align: center;
}

/* Auth (connexion / inscription) */
.to-auth-wrap {
	min-height: 70vh;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 48px 16px;
}
.to-auth-hero {
	min-height: calc(100vh - 68px);
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 48px 16px;
	background-size: cover;
	background-position: center;
}
.to-auth-card--floating {
	box-shadow: 0 1px 3px rgba(0,0,0,0.06), 0 30px 60px -20px rgba(6,32,24,0.35);
}
.to-auth-forgot { text-align: right; font-size: 12.5px; margin: -8px 0 16px; }
.to-auth-forgot a { color: #065f46; font-weight: 600; }
.to-auth-card {
	width: 100%;
	max-width: 380px;
	background: #fff;
	border: 1px solid #e7e5e4;
	border-radius: 16px;
	padding: 32px;
}
.to-auth-card h1 { font-size: 22px; text-align: center; margin-bottom: 20px; }
.to-auth-title--alert { color: #b91c1c; }
.to-auth-form label { display: block; font-size: 12px; color: #57534e; margin-bottom: 14px; }
.to-auth-form input {
	width: 100%;
	margin-top: 4px;
	padding: 10px 12px;
	border: 1px solid #e7e5e4;
	border-radius: 8px;
	font-size: 14px;
	box-sizing: border-box;
}
.to-captcha { max-width: 160px; }
.to-auth-switch { text-align: center; font-size: 13px; color: #78716c; margin-top: 16px; }
.to-auth-switch a { color: #065f46; }
.to-auth-help { font-size: 13px; color: #78716c; text-align: center; margin: 0 0 20px; line-height: 1.5; }
.to-auth-help a { color: #065f46; font-weight: 600; }

.to-role-toggle {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 8px;
	margin-bottom: 18px;
}
.to-role-toggle label {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 6px;
	border: 1px solid #e7e5e4;
	border-radius: 999px;
	padding: 8px 12px;
	font-size: 13px;
	cursor: pointer;
	margin: 0;
}
.to-role-toggle label.is-active { border-color: #065f46; color: #065f46; background: #ecfdf5; }
.to-role-toggle input { width: auto; margin: 0; }

.to-grid-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.to-optional { font-weight: 400; color: #a8a29e; font-size: 11px; }

.to-feedback { padding: 10px 14px; border-radius: 8px; font-size: 13px; margin-bottom: 16px; }
.to-feedback--success { background: #ecfdf5; color: #065f46; }
.to-feedback--error { background: #fef2f2; color: #991b1b; }

/* Footer public */
.to-footer { text-align: center; padding: 24px 0 40px; font-size: 12px; }
.to-footer a { color: #a8a29e; text-decoration: none; }
.to-footer a:hover { color: #065f46; }

/* Barre supérieure — césure visuelle avec le navigateur/l'OS */
.to-app-topbar {
	display: flex;
	align-items: center;
	justify-content: space-between;
	padding: 10px 24px;
	background: #03251c;
	color: #a7d9c8;
	font-size: 12px;
}
.to-app-topbar a { color: #fff; font-weight: 700; font-family: 'Fraunces', Georgia, serif; text-decoration: none; font-size: 14px; }
.to-app-topbar span { letter-spacing: 0.04em; text-transform: uppercase; font-size: 11px; }

/* Espace interne (sidebar app) */
.to-app { display: flex; min-height: calc(100vh - 37px); }
.to-app-sidebar {
	flex: 0 0 240px;
	background: linear-gradient(180deg, #0b3d2e 0%, #064e3b 100%);
	color: #d7ede4;
	padding: 24px 16px;
	display: flex;
	flex-direction: column;
}
.to-app-user {
	display: flex;
	align-items: center;
	gap: 10px;
	padding-bottom: 18px;
	margin-bottom: 14px;
	border-bottom: 1px solid rgba(255,255,255,0.12);
}
.to-app-user-avatar {
	flex: 0 0 40px;
	width: 40px;
	height: 40px;
	border-radius: 999px;
	overflow: hidden;
	display: flex;
	align-items: center;
	justify-content: center;
	background: rgba(255,255,255,0.12);
}
.to-app-user-avatar img { width: 100%; height: 100%; object-fit: cover; }
.to-app-user-avatar--fallback { font-family: 'Fraunces', serif; font-weight: 600; color: #fff; }
.to-app-user strong { display: block; font-size: 13px; color: #fff; line-height: 1.3; }
.to-app-user-role { font-size: 11px; color: #9fd6bf; }

.to-app-nav { display: flex; flex-direction: column; gap: 1px; flex: 1 1 auto; overflow-y: auto; }
.to-app-nav-group {
	display: block;
	font-size: 10px;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.06em;
	color: rgba(255,255,255,0.4);
	padding: 14px 12px 4px;
}
.to-app-nav a, .to-app-nav-soon {
	display: flex;
	align-items: center;
	gap: 10px;
	padding: 8px 12px;
	border-radius: 8px;
	font-size: 13.5px;
	text-decoration: none;
	color: #cfe8dd;
}
.to-app-nav-badge {
	margin-left: auto;
	background: #f97316;
	color: #fff;
	font-size: 10.5px;
	font-weight: 700;
	line-height: 1;
	padding: 3px 7px;
	border-radius: 999px;
	flex: 0 0 auto;
}
.to-app-nav a.is-active .to-app-nav-badge { background: #065f46; }
.to-app-nav-badge--online { background: #22c55e; }

.to-app-nav-subaction {
	display: block;
	margin: -2px 0 4px 40px;
	font-size: 12px;
	font-weight: 600;
	color: #6ee7b7;
	text-decoration: none;
}
.to-app-nav-subaction:hover { color: #fff; text-decoration: underline; }
.to-nav-icon { flex: 0 0 17px; opacity: 0.8; }
.to-app-nav a.is-active .to-nav-icon { opacity: 1; }
.to-app-nav a:hover { background: rgba(255,255,255,0.08); color: #fff; }
.to-app-nav a.is-active { background: #fff; color: #064e3b; font-weight: 600; }
.to-app-nav-soon { color: rgba(255,255,255,0.35); cursor: default; }
.to-app-logout { font-size: 13px; color: #9fd6bf; text-decoration: none; padding: 10px 12px; }
.to-app-logout:hover { color: #fecaca; }
.to-app-content { flex: 1 1 auto; padding: 32px; max-width: 1600px; }

/* Bandeau vert explicatif en tête de page (to_core_page_intro()) — présent
   sur toutes les pages admin/hôte/voyageur de l'application. */
.to-page-intro {
	background: #ecfdf5;
	border: 1px solid #a7f3d0;
	border-radius: 12px;
	padding: 14px 20px;
	margin: 0 0 22px;
}
.to-page-intro p {
	margin: 0;
	color: #053b28;
	font-weight: 600;
	font-size: 13.5px;
	line-height: 1.6;
}

.to-core-app--admin .to-app-sidebar { background: linear-gradient(180deg, #1a2e22 0%, #0d1f16 100%); }

@media (max-width: 760px) {
	.to-app { flex-direction: column; }
	.to-app-sidebar {
		flex-direction: row;
		flex-wrap: wrap;
		align-items: center;
	}
	.to-app-user { border-bottom: none; margin-bottom: 0; padding-bottom: 0; margin-right: auto; }
	.to-app-nav { flex-direction: row; flex: none; flex-wrap: wrap; }
	.to-app-content { padding: 20px; }
}

/* Tableau de bord voyageur */
.to-guest-dashboard h2 { font-size: 22px; }
.to-guest-intro { color: #57534e; font-size: 14px; margin: 0 0 20px; }
.to-guest-stats { display: flex; gap: 16px; margin-bottom: 28px; }
.to-guest-stat {
	background: #fff;
	border: 1px solid #e7e5e4;
	border-radius: 12px;
	padding: 16px 20px;
	min-width: 140px;
}
.to-guest-stat strong { display: block; font-size: 24px; font-family: Georgia, serif; color: #065f46; }
.to-guest-stat span { font-size: 12px; color: #78716c; }
.to-guest-empty { color: #78716c; font-size: 14px; }
.to-guest-bookings { display: flex; flex-direction: column; gap: 10px; }
.to-guest-booking {
	display: flex;
	justify-content: space-between;
	align-items: center;
	background: #fff;
	border: 1px solid #e7e5e4;
	border-radius: 12px;
	padding: 14px 16px;
}
.to-guest-booking p { margin: 4px 0 0; font-size: 13px; color: #78716c; }
.to-guest-booking-status {
	font-size: 11px;
	font-weight: 600;
	padding: 4px 10px;
	border-radius: 999px;
	background: #f5f5f4;
	color: #57534e;
	white-space: nowrap;
}
.to-guest-booking-status--pending { background: #fffbeb; color: #92400e; }
.to-guest-booking-status--confirmed { background: #ecfdf5; color: #065f46; }
.to-guest-booking-status--declined, .to-guest-booking-status--cancelled { background: #fef2f2; color: #991b1b; }

/* Blocs stat cliquables (Messages / Support / Trafic / Ajouter une annonce) */
a.to-guest-stat--link { text-decoration: none; display: block; transition: transform .15s ease, box-shadow .15s ease; }
a.to-guest-stat--link:hover { transform: translateY(-2px); box-shadow: 0 8px 20px -8px rgba(0,0,0,0.12); border-color: #a7f3d0; }

/* Carte "+ Ajouter une annonce" (vert clair, effet pulse) */
a.to-guest-stat--add {
	background: #ecfdf5;
	border-color: #a7f3d0;
	animation: to-host-add-listing-pulse 1.8s ease-in-out infinite;
}
a.to-guest-stat--add strong { color: #065f46; }
a.to-guest-stat--add span { color: #065f46; font-weight: 600; }
@keyframes to-host-add-listing-pulse {
	0%, 100% { box-shadow: 0 0 0 0 rgba(6,95,70,0.35); }
	50% { box-shadow: 0 0 0 8px rgba(6,95,70,0); }
}

/* Vignette photo + actions icônes sur le bloc "Mes annonces" */
.to-guest-booking--with-thumb { gap: 14px; }
.to-guest-booking-thumb {
	flex: 0 0 auto;
	width: 56px;
	height: 56px;
	border-radius: 10px;
	object-fit: cover;
	background: #f5f5f4;
}
.to-guest-booking-thumb--empty { display: inline-block; }
.to-guest-booking-main { flex: 1 1 auto; }
.to-guest-booking-icon-actions { display: flex; align-items: center; gap: 8px; flex: 0 0 auto; margin-left: 8px; }
.to-guest-booking-icon-actions form { margin: 0; }
.to-guest-row-icon-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 32px;
	height: 32px;
	border-radius: 8px;
	border: 1px solid #e7e5e4;
	background: #fff;
	color: #57534e;
	text-decoration: none;
}
.to-guest-row-icon-btn:hover { background: #f5f5f4; }
.to-guest-row-icon-btn--danger { color: #b91c1c; }
.to-guest-row-icon-btn--danger:hover { background: #fef2f2; border-color: #fca5a5; }

a.to-guest-booking--link { text-decoration: none; color: inherit; transition: transform .15s ease, box-shadow .15s ease; }
a.to-guest-booking--link:hover { transform: translateY(-2px); box-shadow: 0 8px 20px -8px rgba(0,0,0,0.12); border-color: #a7f3d0; }

/* Page Trafic — grille des établissements */
.to-traffic-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; }
@media (max-width: 900px) { .to-traffic-grid { grid-template-columns: repeat(2, 1fr); } }
.to-traffic-card {
	display: flex;
	flex-direction: column;
	background: #fff;
	border: 1px solid #e7e5e4;
	border-radius: 12px;
	overflow: hidden;
	text-decoration: none;
	color: inherit;
	transition: transform .15s ease, box-shadow .15s ease;
}
.to-traffic-card:hover { transform: translateY(-2px); box-shadow: 0 8px 20px -8px rgba(0,0,0,0.12); border-color: #a7f3d0; }
.to-traffic-card-photo { display: block; width: 100%; aspect-ratio: 4/3; background: #f5f5f4; }
.to-traffic-card-photo img { width: 100%; height: 100%; object-fit: cover; display: block; }
.to-traffic-card strong { font-family: 'Fraunces', Georgia, serif; font-size: 14px; padding: 10px 12px 2px; }
.to-traffic-card-count { font-size: 12px; color: #065f46; font-weight: 600; padding: 0 12px 12px; }

/* Page Trafic — retour / graphique jour par jour */
.to-traffic-back { display: inline-block; margin-bottom: 12px; font-size: 13px; color: #57534e; text-decoration: none; }
.to-traffic-back:hover { color: #065f46; }
.to-traffic-chart-wrap {
	display: flex;
	align-items: stretch;
	gap: 8px;
	margin: 12px 0 28px;
}
.to-traffic-yaxis-label {
	writing-mode: vertical-rl;
	transform: rotate(180deg);
	font-size: 11px;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: .05em;
	color: #78716c;
	display: flex;
	align-items: center;
	justify-content: center;
	flex: 0 0 auto;
	padding: 4px 0;
}
.to-traffic-chart {
	display: flex;
	align-items: flex-end;
	gap: 3px;
	height: 160px;
	background: #fff;
	border: 1px solid #e7e5e4;
	border-radius: 12px;
	padding: 24px 12px 8px;
	margin: 0;
	overflow-x: auto;
	flex: 1 1 auto;
}
.to-traffic-bar-col { flex: 1 1 0; min-width: 14px; display: flex; flex-direction: column; align-items: center; justify-content: flex-end; height: 100%; }
.to-traffic-bar { width: 100%; max-width: 14px; background: #6ee7b7; border-radius: 3px 3px 0 0; min-height: 2px; }
.to-traffic-bar-col:hover .to-traffic-bar { background: #065f46; }
.to-traffic-bar-value { font-size: 10px; font-weight: 700; color: #065f46; margin-bottom: 3px; white-space: nowrap; }
.to-traffic-bar-label { display: block; font-size: 9.5px; color: #a8a29e; margin-top: 4px; }

/* Page Trafic — classement année/mois (même habillage que l'archive Support) */
.to-traffic-archive-year {
	border: 1px solid #e7e5e4;
	border-radius: 12px;
	padding: 4px 14px;
	margin-bottom: 10px;
	background: #fff;
}
.to-traffic-archive-year summary {
	cursor: pointer;
	padding: 10px 0;
	font-family: 'Fraunces', Georgia, serif;
	font-size: 15px;
	color: #064e3b;
	font-weight: 600;
	list-style: none;
}
.to-traffic-archive-year summary::-webkit-details-marker { display: none; }
.to-traffic-archive-year summary::before { content: "▸"; display: inline-block; margin-right: 8px; transition: transform .15s; }
.to-traffic-archive-year[open] summary::before { transform: rotate(90deg); }
.to-traffic-archive-year table { margin-bottom: 14px; }


.to-guest-section-header { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
.to-guest-section-header h3 { margin: 0; }
.to-guest-see-all { font-size: 12.5px; font-weight: 600; color: #065f46; text-decoration: none; white-space: nowrap; }
.to-guest-see-all:hover { text-decoration: underline; }
.to-guest-see-all--block { display: inline-block; margin-top: 12px; }
.to-guest-reservations h2 { font-family: 'Fraunces', Georgia, serif; }

/* Mon compte */
.to-account { max-width: 1080px; }
.to-account h2 { font-family: 'Fraunces', Georgia, serif; font-size: 24px; color: #064e3b; margin: 0 0 20px; }

.to-account-grid {
	display: grid;
	grid-template-columns: 1.7fr 1fr;
	gap: 24px;
	align-items: start;
}
.to-account-side { display: flex; flex-direction: column; gap: 20px; }

.to-account-card {
	background: #fff;
	border: 1px solid #e7e5e4;
	border-radius: 16px;
	padding: 24px 28px;
	margin-bottom: 20px;
	box-shadow: 0 1px 2px rgba(28,25,23,0.03);
}
.to-account-side .to-account-card { margin-bottom: 0; }
.to-account-card-title {
	font-size: 15px;
	font-weight: 600;
	color: #1c1917;
	margin: 0 0 16px;
	display: flex;
	align-items: center;
	gap: 8px;
}
.to-account-card-title svg { flex: 0 0 auto; color: #059669; }
.to-account-card--danger .to-account-card-title svg { color: #b91c1c; }

.to-account-card--profile { display: flex; align-items: center; gap: 18px; }
.to-account-avatar { width: 72px; height: 72px; border-radius: 999px; object-fit: cover; flex: 0 0 auto; }
.to-account-avatar--fallback {
	display: flex; align-items: center; justify-content: center;
	background: #065f46; color: #fff; font-family: 'Fraunces', Georgia, serif; font-weight: 700; font-size: 26px;
}
.to-account-card--profile strong { display: block; font-size: 17px; color: #1c1917; }
.to-account-email { display: block; font-size: 13px; color: #78716c; margin: 2px 0 8px; }
.to-account-badges { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.to-account-badge { font-size: 11px; font-weight: 600; padding: 3px 12px; border-radius: 999px; background: #ecfdf5; color: #065f46; }
.to-account-badge-date { font-size: 12px; color: #a8a29e; }

.to-account-form { display: flex; flex-direction: column; gap: 14px; margin-top: 4px; }
.to-account-form label { font-size: 12px; font-weight: 600; color: #57534e; }
.to-account-form input, .to-account-form select, .to-account-form textarea {
	width: 100%;
	margin-top: 4px;
	padding: 9px 12px;
	border: 1px solid #e7e5e4;
	border-radius: 8px;
	font-size: 14px;
	box-sizing: border-box;
	font-family: inherit;
	font-weight: 400;
}
.to-account-form input:disabled { background: #f5f5f4; color: #a8a29e; }
.to-required-mark { color: #b91c1c; }

.to-account-feedback { padding: 10px 14px; border-radius: 8px; font-size: 13px; margin-bottom: 16px; }
.to-account-feedback--success { background: #ecfdf5; color: #065f46; }
.to-account-feedback--error { background: #fef2f2; color: #991b1b; }
.to-account-section-title { font-size: 13px; font-weight: 600; color: #065f46; margin: 8px 0 -4px; }

.to-account-row { display: flex; align-items: center; justify-content: space-between; gap: 16px; }
.to-account-row--stack { flex-direction: column; align-items: stretch; }
.to-account-row p { font-size: 12.5px; color: #78716c; margin: 2px 0 0; }
.to-account-row form { flex: 0 0 auto; }
.to-account-row--stack form { margin-top: 6px; }

.to-account-card--danger { background: #fffaf9; border-color: #fecaca; }
.to-account-card--danger .to-account-card-title { color: #b91c1c; }
.to-account-card--danger p { font-size: 13px; color: #7c2d12; line-height: 1.6; margin: 0 0 16px; }

@media (max-width: 860px) {
	.to-account-grid { grid-template-columns: 1fr; }
}

/* Auth card — polish général */
.to-auth-card {
	box-shadow: 0 1px 3px rgba(0,0,0,0.04), 0 20px 40px -20px rgba(6,95,70,0.15);
}
.to-auth-card--wide { max-width: 480px; }

/* Choix du profil (page /inscription/ sans intent) — 2 colonnes séparées
   par un trait vertical, cercle logo au centre, cadres photo avec ombre. */
.to-choice {
	min-height: calc(100vh - 68px);
	padding: 88px 24px 88px;
	background: #fafaf9;
}
.to-choice-title {
	text-align: center;
	font-family: 'Fraunces', Georgia, serif;
	font-size: 32px;
	color: #064e3b;
	margin: 0 0 88px;
}
.to-choice-row {
	display: grid;
	grid-template-columns: 1fr auto 1fr;
	align-items: stretch;
	gap: 40px;
	max-width: 1100px;
	margin: 0 auto;
}
.to-choice-col { display: flex; flex-direction: column; align-items: center; text-align: center; gap: 6px; }
.to-choice-frame {
	display: block;
	width: 100%;
	max-width: 380px;
	border-radius: 20px;
	overflow: hidden;
	box-shadow: 0 24px 48px -20px rgba(6,32,24,0.35), 0 4px 12px rgba(0,0,0,0.06);
	margin-bottom: 20px;
	transition: transform 0.15s ease;
}
.to-choice-frame:hover { transform: translateY(-3px); }
.to-choice-frame img { width: 100%; height: 260px; object-fit: cover; display: block; }
.to-choice-caption {
	font-family: 'Fraunces', Georgia, serif;
	font-weight: 700;
	font-size: 26px;
	color: #064e3b;
	margin: 0;
	text-shadow: 1px 1px 0 rgba(6,95,70,0.22), 2px 2px 0 rgba(6,95,70,0.14), 3px 3px 4px rgba(6,95,70,0.10);
}
.to-choice-sub { font-size: 14px; color: #78716c; margin: 2px 0 14px; }
.to-choice-col .to-btn { display: inline-block; }

.to-choice-divider {
	position: relative;
	width: 1px;
	background: linear-gradient(to bottom, transparent 0%, #e7e5e4 12%, #e7e5e4 88%, transparent 100%);
}
.to-choice-divider-circle {
	position: absolute;
	top: 50%;
	left: 50%;
	transform: translate(-50%, -50%);
	width: 120px;
	height: 120px;
	border-radius: 999px;
	background: #fff;
	box-shadow: 0 10px 30px rgba(6,32,24,0.18);
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 14px;
}
.to-choice-divider-circle img { width: 100%; height: auto; display: block; }

/* Inscription en écran partagé (panneau de marque photo à gauche, séparateur
   central avec logo, formulaire à droite) */
.to-split {
	display: grid;
	grid-template-columns: 1fr auto 1fr;
	align-items: start;
	min-height: calc(100vh - 68px);
}
.to-split-brand {
	position: sticky;
	top: 68px;
	height: calc(100vh - 68px);
	overflow: hidden;
	background-size: cover;
	background-position: center;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 40px;
}
.to-split-brand-inner {
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	text-align: center;
	gap: 22px;
	max-width: 400px;
}
.to-split-brand-title {
	font-family: 'Fraunces', Georgia, serif;
	font-size: 28px;
	color: #fff;
	margin: 0;
	line-height: 1.2;
}

.to-split-highlights { list-style: none; margin: 0; padding: 0; display: grid; gap: 14px; text-align: left; width: 100%; }
.to-split-highlights li { display: flex; align-items: flex-start; gap: 12px; font-size: 14px; color: #fff; line-height: 1.5; }
.to-split-highlight-icon {
	flex: 0 0 auto;
	width: 34px;
	height: 34px;
	border-radius: 10px;
	background: rgba(255,255,255,0.95);
	color: #059669;
	display: flex;
	align-items: center;
	justify-content: center;
	box-shadow: 0 1px 2px rgba(6,95,70,0.08);
}
.to-split-highlight-icon svg { width: 17px; height: 17px; }

.to-split-testimonial {
	background: #fff;
	border-radius: 16px;
	padding: 22px 24px;
	width: 100%;
	text-align: left;
	box-shadow: 0 1px 3px rgba(0,0,0,0.04), 0 20px 40px -24px rgba(0,0,0,0.4);
}
.to-split-testimonial-stars { color: #f59e0b; font-size: 14px; letter-spacing: 2px; }
.to-split-testimonial-text { font-family: 'Fraunces', Georgia, serif; font-style: italic; font-size: 15px; color: #292524; margin: 10px 0 16px; line-height: 1.5; }
.to-split-testimonial-author { display: flex; align-items: center; gap: 10px; font-size: 12.5px; color: #78716c; }
.to-split-testimonial-author strong { display: block; font-size: 13.5px; color: #1c1917; }
.to-split-testimonial-meta { display: block; }
.to-split-testimonial-avatar {
	flex: 0 0 auto;
	width: 48px;
	height: 48px;
	border-radius: 999px;
	background: #065f46;
	color: #fff;
	display: flex;
	align-items: center;
	justify-content: center;
	font-family: 'Fraunces', Georgia, serif;
	font-weight: 700;
	font-size: 16px;
	object-fit: cover;
}

/* Séparateur central (même traitement que le chooser) entre le panneau de
   marque et le formulaire. */
.to-split-divider {
	position: sticky;
	top: 68px;
	height: calc(100vh - 68px);
	width: 1px;
	background: linear-gradient(to bottom, transparent 0%, #e7e5e4 12%, #e7e5e4 88%, transparent 100%);
}
.to-split-divider-circle {
	position: absolute;
	top: 50%;
	left: 50%;
	transform: translate(-50%, -50%);
	width: 100px;
	height: 100px;
	border-radius: 999px;
	background: #fff;
	box-shadow: 0 10px 30px rgba(6,32,24,0.18);
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 12px;
	z-index: 2;
}
.to-split-divider-circle img { width: 100%; height: auto; display: block; }

.to-split-form {
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 48px 24px;
	background: #fafaf9;
}

.to-auth-switch-role { text-align: center; font-size: 13px; color: #78716c; margin: -8px 0 20px; }
.to-auth-switch-role a { color: #065f46; font-weight: 600; }

/* Upload photo de profil en avatar rond (au lieu du bouton "Parcourir" natif) */
.to-photo-field--round { text-align: center; }
.to-photo-field-label { display: block; font-size: 12px; color: #78716c; margin-top: 8px; }
.to-photo-circle {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 96px;
	height: 96px;
	margin: 0 auto;
	border-radius: 999px;
	background: #ecfdf5;
	border: 2px dashed #a7c4b6;
	cursor: pointer;
	overflow: hidden;
	position: relative;
}
.to-photo-circle:hover { background: #d1fae5; }
.to-photo-circle-icon {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 4px;
	color: #059669;
	font-size: 11px;
	font-weight: 600;
}
.to-photo-circle-preview {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.to-checkbox-field {
	display: flex;
	align-items: flex-start;
	gap: 8px;
	font-size: 12px;
	color: #57534e;
	line-height: 1.5;
}
.to-checkbox-field input { width: auto; margin: 3px 0 0; flex-shrink: 0; }
.to-checkbox-field a { color: #065f46; }

@media (max-width: 860px) {
	.to-split { grid-template-columns: 1fr; }
	.to-split-brand { position: static; height: auto; padding: 40px 28px; }
	.to-split-divider { display: none; }
	.to-choice-row { grid-template-columns: 1fr; gap: 56px; }
	.to-choice-divider { display: none; }
}

/* Bannière d'usurpation (super-admin dans l'espace d'un hôte/voyageur) */
.to-impersonate-banner {
	background: #92400e;
	color: #fff;
	text-align: center;
	font-size: 13px;
	padding: 8px 16px;
}
.to-impersonate-banner a { color: #fffbeb; font-weight: 600; text-decoration: underline; }

/* Composants partagés pour les pages admin pilotées depuis le site */
.to-admin-section {
	background: #fff;
	border: 1px solid #e7e5e4;
	border-radius: 14px;
	padding: 24px;
	margin-bottom: 24px;
}
.to-admin-section h2 { font-size: 18px; margin: 0 0 6px; color: #064e3b; }
.to-admin-section h3 { font-size: 14px; margin: 0 0 10px; }
.to-admin-help { font-size: 13px; color: #78716c; margin: 0 0 16px; }

.to-admin-table { width: 100%; border-collapse: collapse; font-size: 13px; }
.to-admin-thumb {
	display: block;
	width: 52px;
	height: 40px;
	object-fit: cover;
	border-radius: 6px;
	background: #f0efed;
}
.to-admin-thumb--empty { background: #f0efed; }
.to-admin-dot {
	display: inline-block;
	width: 11px;
	height: 11px;
	border-radius: 50%;
}
.to-admin-dot--green { background: #22c55e; }
.to-admin-dot--red { background: #ef4444; }
.to-admin-table th, .to-admin-table td {
	text-align: left;
	padding: 10px 8px;
	border-bottom: 1px solid #f0efed;
}
.to-admin-table th { color: #78716c; font-weight: 600; font-size: 12px; text-transform: uppercase; letter-spacing: 0.03em; }
.to-admin-table tr:hover td { background: #fafaf9; }

.to-admin-tabs { display: flex; gap: 6px; margin-bottom: 16px; flex-wrap: wrap; }
.to-admin-tabs a {
	font-size: 13px;
	padding: 7px 14px;
	border-radius: 999px;
	text-decoration: none;
	color: #57534e;
	background: #f5f5f4;
}
.to-admin-tabs a.is-current { background: #064e3b; color: #fff; font-weight: 600; }

.to-admin-notice { padding: 10px 14px; border-radius: 8px; font-size: 13px; margin-bottom: 18px; }
.to-admin-notice--success { background: #ecfdf5; color: #065f46; }
.to-admin-notice--error { background: #fef2f2; color: #991b1b; }

.to-admin-form { display: flex; flex-direction: column; gap: 14px; max-width: 520px; }
.to-admin-form label { font-size: 12px; color: #57534e; display: block; }
.to-admin-form input, .to-admin-form select, .to-admin-form textarea {
	width: 100%;
	margin-top: 4px;
	padding: 9px 12px;
	border: 1px solid #e7e5e4;
	border-radius: 8px;
	font-size: 14px;
	font-family: inherit;
	box-sizing: border-box;
}
.to-admin-form-row { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px,1fr)); gap: 12px; }

.to-admin-btn {
	display: inline-block;
	border-radius: 999px;
	padding: 8px 16px;
	font-size: 13px;
	font-weight: 600;
	text-decoration: none;
	cursor: pointer;
	border: 1px solid #e7e5e4;
	background: #fff;
	color: #57534e;
	white-space: nowrap;
}
.to-admin-btn:hover { background: #f5f5f4; }
.to-admin-btn--primary { background: #065f46; color: #fff; border-color: #065f46; }
.to-admin-btn--primary:hover { background: #064e3b; color: #fff; }
.to-admin-btn--outline { background: #fff; color: #065f46; border-color: #065f46; }
.to-admin-btn--outline:hover { background: #ecfdf5; }
.to-admin-btn--icon { display: inline-flex; align-items: center; justify-content: center; width: 32px; height: 32px; padding: 0; }
.to-admin-actions-cell { display: flex; gap: 6px; }
.to-admin-btn--danger { color: #b91c1c; border-color: #fca5a5; }
.to-admin-btn--danger:hover { background: #fef2f2; }
.to-admin-btn--warning { color: #9a3412; border-color: #fdba74; }
.to-admin-btn--warning:hover { background: #fff7ed; }
.to-admin-btn--small { padding: 5px 12px; font-size: 12px; }

.to-admin-badge { display: inline-block; font-size: 11px; font-weight: 600; padding: 3px 10px; border-radius: 999px; background: #f5f5f4; color: #57534e; white-space: nowrap; }
.to-admin-badge--published, .to-admin-badge--active, .to-admin-badge--success { background: #ecfdf5; color: #065f46; }
.to-admin-badge--pending_review, .to-admin-badge--open { background: #fffbeb; color: #92400e; }
.to-admin-badge--suspended { background: #fff7ed; color: #9a3412; }
.to-admin-badge--rejected, .to-admin-badge--danger { background: #fef2f2; color: #991b1b; }
.to-admin-badge--archived { background: #f5f5f4; color: #a8a29e; }

.to-admin-split { display: flex; gap: 24px; align-items: flex-start; }
.to-admin-split > .to-admin-split-list { flex: 0 0 320px; display: flex; flex-direction: column; gap: 8px; }
.to-admin-split > .to-admin-split-main { flex: 1 1 auto; min-width: 0; }
.to-admin-list-item {
	display: block;
	padding: 10px 12px;
	border: 1px solid #e7e5e4;
	border-radius: 10px;
	text-decoration: none;
	color: inherit;
	font-size: 13px;
}
.to-admin-list-item:hover { border-color: #065f46; }
.to-admin-list-item.is-read-ack { background: #ecfdf5; border-color: #a7f3d0; }
.to-admin-list-item strong { display: block; font-size: 13px; }
.to-admin-list-item span.to-admin-list-meta { color: #78716c; font-size: 12px; }

.to-admin-settings-stack .to-admin-section:last-child { margin-bottom: 0; }

/* Tableau de bord admin */
.to-admin-dash-header { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 12px; margin-bottom: 20px; }
.to-admin-preview-buttons { display: flex; gap: 8px; }

.to-admin-carousel-wrap { position: relative; display: flex; align-items: center; gap: 8px; }
.to-admin-carousel {
	display: flex;
	gap: 16px;
	overflow-x: auto;
	scroll-behavior: smooth;
	padding: 4px 2px;
	flex: 1 1 auto;
}
.to-admin-carousel-item {
	flex: 0 0 auto;
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 8px;
	text-decoration: none;
	width: 84px;
	text-align: center;
}
.to-admin-carousel-avatar {
	width: 64px;
	height: 64px;
	border-radius: 999px;
	background: #ecfdf5;
	color: #065f46;
	display: flex;
	align-items: center;
	justify-content: center;
	font-family: 'Fraunces', serif;
	font-weight: 600;
	font-size: 22px;
	overflow: hidden;
}
.to-admin-carousel-avatar img { width: 100%; height: 100%; object-fit: cover; }

/* Point vert "en ligne" — réutilisable partout où une photo de profil est affichée */
.to-online-avatar-wrap { position: relative; }
.to-online-dot {
	position: absolute;
	bottom: 1px;
	right: 1px;
	width: 13px;
	height: 13px;
	border-radius: 999px;
	background: #22c55e;
	border: 2px solid #fff;
}
.to-admin-carousel-name { font-size: 12px; color: #44403c; line-height: 1.3; }
.to-admin-carousel-arrow {
	flex: 0 0 auto;
	width: 32px;
	height: 32px;
	border-radius: 999px;
	border: 1px solid #e7e5e4;
	background: #fff;
	cursor: pointer;
	font-size: 18px;
	color: #57534e;
}
.to-admin-carousel-arrow:hover { background: #f5f5f4; }

.to-admin-cards {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
	gap: 16px;
	margin: 24px 0;
}
.to-admin-card {
	display: block;
	background: #fff;
	border: 1px solid #e7e5e4;
	border-radius: 14px;
	padding: 20px;
	text-decoration: none;
	color: inherit;
	transition: transform .15s ease, box-shadow .15s ease;
}
.to-admin-card--link:hover { transform: translateY(-2px); box-shadow: 0 8px 20px -8px rgba(0,0,0,0.12); border-color: #a7f3d0; }
.to-admin-card-label { display: block; font-size: 12px; color: #78716c; text-transform: uppercase; letter-spacing: 0.03em; margin-bottom: 6px; }

.to-admin-cards--green { margin-top: 4px; }
.to-admin-card--green {
	background: #ecfdf5;
	border-color: #a7f3d0;
}
.to-admin-card--green .to-admin-card-label { color: #065f46; }
.to-admin-card.to-admin-card--green strong { color: #064e3b; }

.to-admin-card--urgent {
	background: #fff1e8;
	border-color: #fb923c;
	animation: to-admin-card-pulse 1.8s ease-in-out infinite;
}
.to-admin-card--urgent .to-admin-card-label { color: #9a3412; }
.to-admin-card.to-admin-card--urgent strong { color: #c2410c; }
@keyframes to-admin-card-pulse {
	0%, 100% { box-shadow: 0 0 0 0 rgba(251,146,60,0.45); }
	50% { box-shadow: 0 0 0 8px rgba(251,146,60,0); }
}
.to-admin-card strong { display: block; font-family: 'Fraunces', Georgia, serif; font-size: 26px; color: #064e3b; }
.to-admin-card-sub { display: block; font-size: 12px; color: #78716c; margin-top: 4px; }

.to-admin-chart {
	display: flex;
	align-items: flex-end;
	gap: 6px;
	height: 120px;
	margin-top: 8px;
}
.to-admin-chart-bar-wrap {
	flex: 1 1 0;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: flex-end;
	height: 100%;
	gap: 6px;
}
.to-admin-chart-bar { width: 100%; max-width: 22px; background: linear-gradient(180deg, #059669, #065f46); border-radius: 4px 4px 0 0; }
.to-admin-chart-bar-wrap span { font-size: 10px; color: #a8a29e; }

.to-ca-actions { display: flex; gap: 8px; }

@media print {
	.to-app-topbar, .to-app-sidebar, .to-impersonate-banner, .to-ca-actions { display: none !important; }
	.to-app-content { padding: 0 !important; }
}

/* Comment ça marche (accueil) */
.to-how-grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
	gap: 24px;
}
.to-how-step { text-align: center; }
.to-how-number {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 40px;
	height: 40px;
	border-radius: 999px;
	background: #ecfdf5;
	color: #065f46;
	font-family: 'Fraunces', Georgia, serif;
	font-weight: 700;
	margin-bottom: 12px;
}
.to-how-step h3 { font-size: 16px; margin: 0 0 6px; }
.to-how-step p { font-size: 13px; color: #78716c; margin: 0; }

/* Recherche promos/catalogue */
.to-promo-search {
	display: flex;
	flex-wrap: wrap;
	gap: 12px;
	align-items: flex-end;
	background: #fff;
	border: 1px solid #e7e5e4;
	border-radius: 14px;
	padding: 18px;
}
.to-promo-search label { font-size: 12px; color: #57534e; display: flex; flex-direction: column; gap: 4px; }
.to-promo-search select {
	padding: 8px 10px;
	border: 1px solid #e7e5e4;
	border-radius: 8px;
	font-size: 14px;
	min-width: 140px;
}

.to-newsletter-box {
	display: flex;
	justify-content: space-between;
	align-items: center;
	flex-wrap: wrap;
	gap: 20px;
	max-width: 1120px;
	margin: 0 auto;
}
.to-newsletter-form { display: flex; gap: 8px; flex-wrap: wrap; }
.to-newsletter-form input {
	padding: 10px 14px;
	border: 1px solid #e7e5e4;
	border-radius: 999px;
	font-size: 14px;
	min-width: 220px;
}

/* ---- Modale générique admin (ex. confirmation de suppression) ---- */
.to-admin-modal-overlay {
	position: fixed;
	inset: 0;
	background: rgba(28,25,23,0.55);
	display: flex;
	align-items: center;
	justify-content: center;
	z-index: 10000;
	padding: 16px;
}
.to-admin-modal-overlay[hidden] { display: none; }
.to-admin-modal {
	background: #ffffff;
	border-radius: 16px;
	padding: 28px;
	max-width: 440px;
	width: 100%;
	box-shadow: 0 20px 60px rgba(0,0,0,0.25);
}
.to-admin-modal h2 {
	font-family: 'Fraunces', Georgia, serif;
	font-size: 19px;
	color: #1c1917;
	margin: 0 0 10px;
}
.to-admin-modal p { font-size: 13.5px; color: #57534e; line-height: 1.6; margin: 0 0 16px; }
.to-admin-modal label { display: block; font-size: 12.5px; font-weight: 600; color: #57534e; margin-bottom: 16px; }
.to-admin-modal textarea {
	width: 100%;
	margin-top: 6px;
	padding: 10px 12px;
	border: 1px solid #e7e5e4;
	border-radius: 10px;
	font-size: 14px;
	font-family: inherit;
	box-sizing: border-box;
}
.to-admin-modal-actions { display: flex; justify-content: flex-end; gap: 10px; }

/* Pages légales (politique de confidentialité, CGU, concours, mentions légales) */
.to-legal-page { max-width: 760px; margin: 0 auto; padding: 56px 24px 80px; }
.to-legal-card {
	background: #fff;
	border: 1px solid #e7e5e4;
	border-radius: 18px;
	padding: 40px 48px;
	box-shadow: 0 1px 3px rgba(0,0,0,0.04);
}
.to-legal-card h1 {
	font-family: 'Fraunces', Georgia, serif;
	font-size: 28px;
	color: #064e3b;
	margin: 0 0 24px;
}
.to-legal-content { color: #44403c; font-size: 14.5px; line-height: 1.7; }
.to-legal-content p { margin: 0 0 16px; }
@media (max-width: 640px) {
	.to-legal-card { padding: 28px 24px; }
	.to-nav-logo img { height: 72px; }
	.to-nav { padding: 4px 16px; flex-wrap: wrap; }
}

/* Spinner de chargement sur les boutons "Enregistrer" / "Envoyer" du site */
.to-btn--loading { opacity: 0.85; cursor: wait; pointer-events: none; display: inline-flex; align-items: center; justify-content: center; gap: 8px; }
.to-btn-spinner {
	display: inline-block;
	width: 13px;
	height: 13px;
	border: 2px solid rgba(0,0,0,0.15);
	border-top-color: currentColor;
	border-radius: 999px;
	animation: to-btn-spin .7s linear infinite;
	flex-shrink: 0;
}
@keyframes to-btn-spin { to { transform: rotate(360deg); } }
.to-btn-spinner {
	display: inline-block;
	width: 13px;
	height: 13px;
	border: 2px solid rgba(255,255,255,0.5);
	border-top-color: #fff;
	border-radius: 999px;
	vertical-align: -2px;
	animation: to-btn-spin 0.7s linear infinite;
}
.to-btn--outline .to-btn-spinner,
.to-btn--ghost .to-btn-spinner,
.to-admin-btn--outline .to-btn-spinner,
.to-admin-btn .to-btn-spinner {
	border-color: rgba(6,95,70,0.3);
	border-top-color: #065f46;
}
@keyframes to-btn-spin { to { transform: rotate(360deg); } }

/* ------------------------------------------------------------------
 * Page publique "Revendiquer"
 * ------------------------------------------------------------------ */
.to-claim-page { max-width: 780px; margin: 0 auto; padding: 56px 24px 80px; }
.to-claim-card {
	background: #fff;
	border: 1px solid #e7e5e4;
	border-radius: 20px;
	padding: 48px 52px;
	box-shadow: 0 1px 3px rgba(0,0,0,0.04);
}
.to-claim-eyebrow {
	display: inline-block;
	background: #ecfdf5;
	color: #065f46;
	font-size: 12px;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: .05em;
	border-radius: 999px;
	padding: 5px 14px;
	margin: 0 0 16px;
}
.to-claim-card h1 {
	font-family: 'Fraunces', Georgia, serif;
	font-size: 30px;
	line-height: 1.25;
	color: #1c1917;
	margin: 0 0 18px;
}
.to-claim-intro { font-size: 15px; color: #57534e; line-height: 1.7; margin: 0 0 28px; }

.to-claim-choices { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; margin: 0 0 32px; }
.to-claim-choice {
	display: flex;
	gap: 12px;
	background: #fafaf9;
	border: 1px solid #f0efed;
	border-radius: 14px;
	padding: 18px 20px;
}
.to-claim-choice-icon {
	flex-shrink: 0;
	width: 32px;
	height: 32px;
	border-radius: 50%;
	background: #065f46;
	color: #fff;
	display: flex;
	align-items: center;
	justify-content: center;
	font-size: 15px;
}
.to-claim-choice strong { display: block; font-size: 14.5px; margin-bottom: 4px; }
.to-claim-choice p { margin: 0; font-size: 13px; color: #78716c; line-height: 1.5; }

.to-claim-listing-recap {
	display: flex;
	align-items: center;
	gap: 14px;
	background: #ecfdf5;
	border: 1px solid #a7f3d0;
	border-radius: 14px;
	padding: 14px 18px;
	margin: 0 0 28px;
}
.to-claim-listing-recap img { width: 56px; height: 56px; border-radius: 10px; object-fit: cover; flex-shrink: 0; }
.to-claim-listing-recap strong { display: block; font-size: 15px; }
.to-claim-listing-recap p { margin: 2px 0 0; font-size: 13px; color: #57534e; }

.to-claim-step { display: flex; gap: 16px; padding-top: 24px; border-top: 1px solid #f0efed; }
.to-claim-step-num {
	flex-shrink: 0;
	width: 32px;
	height: 32px;
	border-radius: 50%;
	background: #065f46;
	color: #fff;
	font-weight: 700;
	font-family: 'Fraunces', Georgia, serif;
	display: flex;
	align-items: center;
	justify-content: center;
}
.to-claim-step h2 { font-size: 18px; margin: 2px 0 8px; }
.to-claim-actions { display: flex; gap: 12px; margin-top: 14px; flex-wrap: wrap; }

.to-claim-howto { padding: 24px 0; border-top: 1px solid #f0efed; border-bottom: 1px solid #f0efed; margin-bottom: 28px; }
.to-claim-howto h2 { font-size: 17px; margin: 0 0 18px; }
.to-claim-howto-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }
.to-claim-howto-step { display: flex; gap: 14px; }
.to-claim-howto-step strong { display: block; font-size: 14.5px; margin-bottom: 4px; }
.to-claim-howto-step p { margin: 0; font-size: 13px; color: #78716c; line-height: 1.55; }
@media (max-width: 640px) {
	.to-claim-howto-grid { grid-template-columns: 1fr; }
}

@media (max-width: 640px) {
	.to-claim-card { padding: 32px 24px; }
	.to-claim-choices { grid-template-columns: 1fr; }
}
