/* Apidae Sync — affichage public. Couleurs héritées du thème, surchargeables via les variables. */

.apidae {
	--apidae-accent: var(--wp--preset--color--primary, var(--wp--preset--color--contrast, #1d4ed8));
	--apidae-border: color-mix(in srgb, currentColor 14%, transparent);
	--apidae-soft: color-mix(in srgb, currentColor 5%, transparent);
	--apidae-muted: color-mix(in srgb, currentColor 65%, transparent);
	--apidae-radius: 12px;
	box-sizing: border-box;
}
.apidae *,
.apidae *::before,
.apidae *::after { box-sizing: inherit; }
.apidae-empty { color: var(--apidae-muted); }

/* Liste ---------------------------------------------------------------- */
.apidae-grid {
	display: grid;
	gap: 24px;
	grid-template-columns: repeat(var(--apidae-cols, 3), minmax(0, 1fr));
}
.apidae-grid--1 { --apidae-cols: 1; }
.apidae-grid--2 { --apidae-cols: 2; }
.apidae-grid--3 { --apidae-cols: 3; }
.apidae-grid--4 { --apidae-cols: 4; }
@media (max-width: 900px) { .apidae-grid--3, .apidae-grid--4 { --apidae-cols: 2; } }
@media (max-width: 600px) { .apidae-grid { --apidae-cols: 1; } }

.apidae-card {
	display: flex;
	flex-direction: column;
	overflow: hidden;
	border: 1px solid var(--apidae-border);
	border-radius: var(--apidae-radius);
	transition: box-shadow .2s ease, transform .2s ease;
}
.apidae-card:hover { box-shadow: 0 10px 30px rgba(0, 0, 0, .08); transform: translateY(-2px); }
.apidae-card__media { display: block; aspect-ratio: 4 / 3; overflow: hidden; background: var(--apidae-soft); }
.apidae-card__media img { display: block; width: 100%; height: 100%; object-fit: cover; transition: transform .4s ease; }
.apidae-card:hover .apidae-card__media img { transform: scale(1.04); }
.apidae-card__placeholder { display: block; width: 100%; height: 100%; background: linear-gradient(135deg, var(--apidae-soft), transparent); }
.apidae-card__body { display: flex; flex-direction: column; gap: 6px; padding: 16px 18px 20px; }
.apidae-card__body p { margin: 0; }
.apidae-card__tags { display: flex; flex-wrap: wrap; gap: 6px; }
.apidae-card__title { margin: 2px 0 0; font-size: 1.1em; line-height: 1.3; }
.apidae-card__title a { color: inherit; text-decoration: none; }
.apidae-card__title a:hover { text-decoration: underline; }
.apidae-card__date { font-weight: 600; color: var(--apidae-accent); font-size: .92em; }
.apidae-card__place { color: var(--apidae-muted); font-size: .9em; }
.apidae-card__place::before { content: "📍 "; }
.apidae-card__excerpt { color: var(--apidae-muted); font-size: .92em; line-height: 1.5; }

.apidae-tag {
	display: inline-block;
	padding: 2px 10px;
	border-radius: 999px;
	background: var(--apidae-soft);
	border: 1px solid var(--apidae-border);
	font-size: .78em;
	line-height: 1.6;
}

/* Filtres -------------------------------------------------------------- */
.apidae-filters {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 8px 12px;
	margin-bottom: 24px;
	padding: 14px 16px;
	border: 1px solid var(--apidae-border);
	border-radius: var(--apidae-radius);
	background: var(--apidae-soft);
}
.apidae-filters label { font-weight: 600; font-size: .9em; }
.apidae-filters select { min-height: 38px; padding: 0 8px; border-radius: 8px; max-width: 100%; }
.apidae-filters button { min-height: 38px; padding: 0 18px; border-radius: 8px; cursor: pointer; }
.apidae-filters__reset { font-size: .9em; }

.apidae-pagination { margin-top: 28px; display: flex; flex-wrap: wrap; gap: 6px; justify-content: center; }
.apidae-pagination .page-numbers { padding: 6px 12px; border: 1px solid var(--apidae-border); border-radius: 8px; text-decoration: none; }
.apidae-pagination .current { font-weight: 700; background: var(--apidae-soft); }

/* Agenda --------------------------------------------------------------- */
.apidae-agenda__month { margin: 28px 0 12px; font-size: 1.15em; text-transform: capitalize; }
.apidae-agenda__month:first-child { margin-top: 0; }
.apidae-agenda__list { margin: 0; padding: 0; list-style: none; display: grid; gap: 10px; }
.apidae-agenda__item {
	display: flex;
	align-items: center;
	gap: 16px;
	padding: 12px 14px;
	border: 1px solid var(--apidae-border);
	border-radius: var(--apidae-radius);
}
.apidae-agenda__day {
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	flex: 0 0 58px;
	height: 58px;
	border-radius: 10px;
	background: var(--apidae-accent);
	color: #fff;
	line-height: 1;
}
.apidae-agenda__num { font-size: 1.45em; font-weight: 700; }
.apidae-agenda__mon { font-size: .72em; text-transform: uppercase; letter-spacing: .04em; margin-top: 3px; }
.apidae-agenda__body { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.apidae-agenda__title { font-weight: 600; color: inherit; text-decoration: none; }
.apidae-agenda__title:hover { text-decoration: underline; }
.apidae-agenda__meta { color: var(--apidae-muted); font-size: .9em; }

/* Carte ---------------------------------------------------------------- */
.apidae-map {
	position: relative;
	z-index: 0;
	width: 100%;
	border-radius: var(--apidae-radius);
	overflow: hidden;
	border: 1px solid var(--apidae-border);
	background: var(--apidae-soft);
}
.apidae-map__loading { margin: 0; padding: 20px; color: var(--apidae-muted); }
.apidae-map__popup { display: flex; flex-direction: column; gap: 2px; min-width: 160px; }
.apidae-map__popup a { font-weight: 600; font-size: 1.05em; }
.apidae-map__type { text-transform: uppercase; font-size: .72em; letter-spacing: .04em; opacity: .7; }
.apidae-map__place { opacity: .75; }

/* Explorateur : vignettes + carte fixe --------------------------------- */
.apidae-explorer {
	--apidae-sticky-top: calc(var(--wp-admin--admin-bar--height, 0px) + 16px);
}
.apidae-explorer__layout {
	display: grid;
	grid-template-columns: minmax(300px, 5fr) minmax(0, 7fr);
	gap: 24px;
	align-items: start;
}
.apidae-explorer__count { margin: 0 0 12px; color: var(--apidae-muted); font-size: .9em; }
.apidae-explorer__items { margin: 0; padding: 0; list-style: none; display: grid; gap: 10px; }
.apidae-explorer__map {
	position: sticky;
	top: var(--apidae-sticky-top);
}
.apidae-explorer__map .apidae-map { height: calc(100vh - var(--apidae-sticky-top) - 16px); min-height: 320px; }

.apidae-mini {
	display: flex;
	align-items: center;
	gap: 14px;
	padding: 10px;
	border: 1px solid var(--apidae-border);
	border-radius: var(--apidae-radius);
	transition: border-color .15s ease, box-shadow .15s ease, background-color .15s ease;
	scroll-margin: 24px;
}
.apidae-mini.is-active {
	border-color: var(--apidae-accent);
	background: var(--apidae-soft);
	box-shadow: 0 0 0 2px var(--apidae-accent);
}
.apidae-mini.is-unlocated .apidae-mini__place::after { content: " · hors carte"; opacity: .7; }
.apidae-mini__media {
	flex: 0 0 104px;
	height: 78px;
	overflow: hidden;
	border-radius: 8px;
	background: var(--apidae-soft);
}
.apidae-mini__media img { display: block; width: 100%; height: 100%; object-fit: cover; }
.apidae-mini__media .apidae-card__placeholder { height: 100%; }
.apidae-mini__body { display: flex; flex-direction: column; gap: 5px; min-width: 0; }
.apidae-mini__body p { margin: 0; }
.apidae-mini__title { margin: 0; font-size: 1em; line-height: 1.3; }
.apidae-mini__title a { color: inherit; text-decoration: none; }
.apidae-mini__title a:hover { text-decoration: underline; }
.apidae-mini__tags { display: flex; flex-wrap: wrap; gap: 4px; }
.apidae-mini__tags .apidae-tag { font-size: .72em; padding: 0 8px; }
.apidae-tag--more { cursor: help; }
.apidae-mini__place { color: var(--apidae-muted); font-size: .85em; }
.apidae-mini__place::before { content: "📍 "; }

@media (max-width: 780px) {
	/* Sur mobile : carte fixée en haut de l'écran, vignettes dessous. */
	.apidae-explorer__layout { grid-template-columns: 1fr; gap: 16px; }
	.apidae-explorer__map {
		order: -1;
		z-index: 2;
		/* Fond opaque : les vignettes ne doivent pas apparaître au-dessus de la carte en défilant. */
		top: var(--wp-admin--admin-bar--height, 0px);
		padding: 8px 0;
		background: var(--wp--preset--color--base, Canvas);
	}
	.apidae-explorer__map .apidae-map { height: 40vh; min-height: 220px; }
	.apidae-mini { scroll-margin-top: calc(40vh + var(--apidae-sticky-top) + 16px); }
}

/* Fiche détaillée ------------------------------------------------------ */
.apidae-fiche { margin-top: 2em; display: grid; gap: 28px; }
.apidae-icon { width: 1.15em; height: 1.15em; flex: none; }
/* Colonnes (effet mosaïque) : les blocs de hauteurs différentes se tassent sans trous. */
.apidae-fiche__grid { columns: 3 300px; column-gap: 18px; }
.apidae-fiche__box {
	break-inside: avoid;
	margin-bottom: 18px;
	padding: 20px 22px 22px;
	border: 1px solid var(--apidae-border);
	border-radius: var(--apidae-radius);
	background: #fff;
	box-shadow: 0 6px 18px -12px rgba(15, 23, 42, .3);
	overflow-wrap: anywhere;
}
.apidae-fiche__box--features { column-span: all; margin-top: 0; }
.apidae-fiche__box :is(h2, h3, h4) {
	display: flex; align-items: center; gap: 10px;
	margin: 0 0 14px; padding-bottom: 12px;
	border-bottom: 1px solid var(--apidae-border);
	font-size: 1.05em; letter-spacing: .02em;
}
.apidae-fiche__icon {
	display: grid; place-items: center; flex: none;
	width: 36px; height: 36px; border-radius: 10px;
	background: color-mix(in srgb, var(--apidae-accent) 12%, #fff); color: var(--apidae-accent);
}
.apidae-fiche__box p { margin: 0 0 8px; }
.apidae-fiche__box p:last-child { margin-bottom: 0; }
.apidae-fiche__box--dates ul { margin: 0; padding-left: 18px; }

/* Coordonnées */
.apidae-fiche__contact { list-style: none; margin: 0; padding: 0; display: grid; gap: 10px; }
.apidae-fiche__contact li { display: flex; gap: 10px; align-items: flex-start; line-height: 1.45; }
.apidae-fiche__contact .apidae-icon { margin-top: .15em; color: var(--apidae-accent); }
.apidae-fiche__contact a { color: inherit; text-decoration: underline; text-decoration-color: var(--apidae-border); text-underline-offset: 3px; }
.apidae-fiche__contact a:hover { color: var(--apidae-accent); text-decoration-color: currentColor; }
.apidae-fiche__route {
	display: inline-flex; align-items: center; gap: 8px; margin-top: 16px;
	padding: 8px 16px; border-radius: 999px;
	background: var(--apidae-accent); color: #fff; font-weight: 700; text-decoration: none;
}
.apidae-fiche__route:hover { filter: brightness(.9); color: #fff; }

/* En bref : libellé au-dessus de la valeur */
.apidae-fiche__facts { margin: 0; display: grid; }
.apidae-fiche__facts > div { padding: 10px 0; border-top: 1px dashed var(--apidae-border); }
.apidae-fiche__facts > div:first-child { padding-top: 0; border-top: 0; }
.apidae-fiche__facts > div:last-child { padding-bottom: 0; }
.apidae-fiche__facts dt { margin-bottom: 2px; color: var(--apidae-muted); font-size: .78em; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; }
.apidae-fiche__facts dd { margin: 0; font-weight: 600; }

/* Équipements */
.apidae-fiche__box--features .apidae-chips { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 220px), 1fr)); gap: 8px 16px; }
.apidae-fiche .apidae-fiche__box--features .apidae-tag { display: flex; align-items: flex-start; gap: 8px; padding: 0; border: 0; background: none; border-radius: 0; font-size: .95em; }
.apidae-fiche__box--features .apidae-icon { margin-top: .2em; color: var(--apidae-accent); }

.apidae-fiche__intro p { margin: 0 0 .8em; }
.apidae-fiche__intro p:last-child { margin-bottom: 0; }
.apidae-fiche__source { margin: 0; color: var(--apidae-muted); font-size: .85em; }
.apidae-chips { display: flex; flex-wrap: wrap; gap: 6px; }

/* Galerie : première vignette en grand, « +N photos » sur la dernière */
.apidae-gallery { display: grid; gap: 10px; grid-template-columns: repeat(4, 1fr); grid-auto-rows: 150px; }
.apidae-gallery a { position: relative; display: block; overflow: hidden; border-radius: 12px; cursor: zoom-in; }
.apidae-gallery a[hidden] { display: none; }
.apidae-gallery a:not([hidden]):first-of-type,
.apidae-gallery a[hidden] + a:not([hidden]) { grid-column: span 2; grid-row: span 2; }
.apidae-gallery img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform .3s ease; }
.apidae-gallery a:hover img { transform: scale(1.05); }
.apidae-gallery a::after { content: ""; position: absolute; inset: 0; background: rgba(0, 0, 0, 0); transition: background .2s; }
.apidae-gallery a:hover::after { background: rgba(0, 0, 0, .12); }
.apidae-gallery__more {
	position: absolute; inset: 0; z-index: 1;
	display: grid; place-items: center;
	background: rgba(15, 23, 42, .55); color: #fff;
	font-size: 1.3em; font-weight: 800;
}
@media (max-width: 640px) {
	.apidae-gallery { grid-template-columns: repeat(2, 1fr); grid-auto-rows: 120px; }
}

/* Visionneuse */
.apidae-lb-open { overflow: hidden; }
.apidae-lb {
	position: fixed; inset: 0; z-index: 100000;
	display: grid; grid-template-rows: auto 1fr auto;
	background: rgba(10, 14, 24, .94); color: #fff;
	animation: apidae-lb-in .2s ease;
}
.apidae-lb[hidden], .apidae-lb [hidden] { display: none !important; }
@keyframes apidae-lb-in { from { opacity: 0; } }
.apidae-lb__bar { display: flex; align-items: center; gap: 16px; padding: 12px 16px; }
.apidae-lb__count { margin: 0; min-width: 4em; font-weight: 700; font-variant-numeric: tabular-nums; }
.apidae-lb__title { flex: 1; margin: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; opacity: .85; }
.apidae-lb__btn {
	display: grid; place-items: center;
	width: 48px; height: 48px; padding: 0;
	border: 0; border-radius: 50%;
	background: rgba(255, 255, 255, .12); color: #fff; cursor: pointer;
	transition: background .2s;
}
.apidae-lb__btn:hover { background: rgba(255, 255, 255, .25); }
.apidae-lb__btn:focus-visible { outline: 3px solid #fff; outline-offset: 2px; }
.apidae-lb__btn svg { width: 24px; height: 24px; }
.apidae-lb__stage { position: relative; display: flex; align-items: center; justify-content: center; gap: 12px; min-height: 0; padding: 0 12px; touch-action: pan-y; }
.apidae-lb__figure { flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 10px; height: 100%; min-width: 0; margin: 0; }
.apidae-lb__img { max-width: 100%; max-height: calc(100% - 3em); object-fit: contain; border-radius: 6px; opacity: 0; transform: scale(.98); transition: opacity .25s, transform .25s; user-select: none; }
.apidae-lb__img.is-in { opacity: 1; transform: none; }
.apidae-lb__caption { min-height: 1.4em; max-width: 60ch; text-align: center; font-size: .92em; opacity: .85; }
.apidae-lb__thumbs { list-style: none; margin: 0; padding: 10px 16px 16px; display: flex; justify-content: safe center; gap: 8px; overflow-x: auto; scrollbar-width: thin; }
.apidae-lb__thumbs button { display: block; width: 72px; height: 54px; padding: 0; border: 2px solid transparent; border-radius: 8px; overflow: hidden; background: none; opacity: .55; cursor: pointer; transition: opacity .2s, border-color .2s; }
.apidae-lb__thumbs button:hover, .apidae-lb__thumbs .is-active { opacity: 1; }
.apidae-lb__thumbs .is-active { border-color: #fff; }
.apidae-lb__thumbs img { width: 100%; height: 100%; object-fit: cover; display: block; }
@media (max-width: 640px) {
	.apidae-lb__nav { position: absolute; top: 50%; z-index: 1; transform: translateY(-50%); width: 42px; height: 42px; }
	.apidae-lb__nav--prev { left: 8px; }
	.apidae-lb__nav--next { right: 8px; }
	.apidae-lb__stage { padding: 0; }
	.apidae-lb__title { display: none; }
	.apidae-lb__thumbs button { width: 56px; height: 42px; }
}

@media (prefers-reduced-motion: reduce) {
	.apidae-card,
	.apidae-card__media img,
	.apidae-gallery img,
	.apidae-lb,
	.apidae-lb__img { transition: none; animation: none; }
}

/* Filtres de carte ([apidae_carte filtres="oui"]) */
.apidae-mapfilter {
	--apidae-accent: #1d4ed8;
	display: grid;
	gap: 14px;
	margin: 0 0 16px;
	padding: 18px 20px;
	background: #fff;
	border: 1px solid #e5e7eb;
	border-radius: 14px;
	box-shadow: 0 6px 18px -10px rgba(15, 23, 42, .25);
}
.apidae-mapfilter fieldset { margin: 0; padding: 0; border: 0; display: flex; flex-wrap: wrap; gap: 8px; }
.apidae-mapfilter legend { float: left; margin: 0 6px 0 0; padding: 7px 0; font-weight: 700; }
.apidae-chip {
	position: relative;
	display: inline-flex; align-items: center; gap: 8px;
	padding: 6px 12px 6px 10px;
	border: 2px solid var(--apidae-dot, #334155);
	border-radius: 999px;
	background: #fff;
	cursor: pointer;
	user-select: none;
	font-size: .92rem; font-weight: 600;
	transition: background .15s, opacity .15s;
}
.apidae-chip input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.apidae-chip:has(input:focus-visible) { outline: 3px solid var(--apidae-accent); outline-offset: 2px; }
.apidae-chip__dot { width: 12px; height: 12px; border-radius: 50%; background: var(--apidae-dot, #334155); box-shadow: 0 0 0 2px #fff inset; }
.apidae-chip__count {
	min-width: 1.6em; padding: 1px 7px; border-radius: 999px;
	background: var(--apidae-dot, #334155); color: #fff;
	font-size: .78rem; text-align: center;
}
.apidae-chip.is-off { opacity: .55; border-style: dashed; }
.apidae-chip.is-off .apidae-chip__dot,
.apidae-chip.is-off .apidae-chip__count { background: #9ca3af; }
.apidae-mapfilter__row { display: flex; flex-wrap: wrap; align-items: end; gap: 12px 18px; }
.apidae-mapfilter__row label { display: grid; gap: 4px; font-size: .8rem; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; }
.apidae-mapfilter__row select { min-width: 210px; padding: 8px 12px; border: 2px solid #e5e7eb; border-radius: 999px; background: #fff; font: inherit; font-size: .95rem; text-transform: none; letter-spacing: 0; }
.apidae-mapfilter__status { margin: 0 auto 0 0; padding: 9px 0; font-weight: 700; }
.apidae-mapfilter__actions { display: flex; gap: 8px; }
.apidae-mapfilter__actions button { padding: 8px 16px; border-radius: 999px; border: 2px solid var(--apidae-accent); background: #fff; color: var(--apidae-accent); font: inherit; font-weight: 700; cursor: pointer; }
.apidae-mapfilter__actions .apidae-mapfilter__all { background: var(--apidae-accent); color: #fff; }
@media (max-width: 640px) {
	.apidae-mapfilter legend { float: none; width: 100%; padding: 0; }
	.apidae-mapfilter__row select { min-width: 0; width: 100%; }
	.apidae-mapfilter__row label { width: 100%; }
}

/* Filtres des listes et de l'explorateur : même présentation que les filtres de carte */
.apidae-filters.apidae-mapfilter { display: grid; align-items: initial; margin-bottom: 24px; }
.apidae-chip--plain { --apidae-dot: var(--apidae-accent); border-color: #e5e7eb; }
.apidae-chip--plain .apidae-chip__count { background: #eef2f7; color: #334155; }
.apidae-chip--plain:hover { border-color: var(--apidae-accent); }
.apidae-chip--plain:has(input:checked) { background: var(--apidae-accent); border-color: var(--apidae-accent); color: #fff; }
.apidae-chip--plain:has(input:checked) .apidae-chip__count { background: #fff; color: var(--apidae-accent); }
.apidae-mapfilter__actions a.apidae-mapfilter__reset {
	display: inline-flex; align-items: center;
	padding: 8px 16px; border-radius: 999px; border: 2px solid var(--apidae-accent);
	color: var(--apidae-accent); font-weight: 700; text-decoration: none;
}
.apidae-mapfilter__actions a.apidae-mapfilter__reset[hidden] { display: none; }
.apidae-filters.is-enhanced [data-apidae-filters-submit] { display: none; }
.apidae-mapfilter__status:empty { display: none; }
