/* Frise « Quand partir » : tableau HTML sémantique (données tabulaires, accessibilité screen-reader
   via th scope="row"/"col") — 24 colonnes (quinzaines) × 6 lignes (synthèse + 5 axes).
   Scrollable horizontalement sur mobile, colonne de labels + coin sticky.
   Tooltips (cellules frise) réutilisent le pattern de page.bagages.css adapté au namespace tdm-qp.
   Sources : disclosure natif <details>/<summary> avec liens réels (crawlables), pas un tooltip.
   Widget verdict : 2 inputs date + zone résultat.
   .tdm-ip-item (disclosure « infos pratiques » de functions.destinations.php) est stylé ici : au
   #118, ce module est le seul consommateur du point d'extension `tdm_destination_infos_pratiques`.
   @see #117 #118 */

:root {
	/* Tokens mobiles : couleurs scores (0=idéale → 3=déconseillée) */
	--tdm-qp-score-0-bg: #4CAF50;
	--tdm-qp-score-0-fg: #FFF;
	--tdm-qp-score-1-bg: #A5D6A7;
	--tdm-qp-score-1-fg: #222;
	--tdm-qp-score-2-bg: #FFA726;
	--tdm-qp-score-2-fg: #222;
	--tdm-qp-score-3-bg: #EF5350;
	--tdm-qp-score-3-fg: #FFF;

	/* Palette neutre du module */
	--tdm-qp-bg: #FFF;
	--tdm-qp-header-bg: #F9F9F9;
	--tdm-qp-border-color: #DDD;
	--tdm-qp-border-color-light: #EEE;
	--tdm-qp-text: #222;
	--tdm-qp-text-muted: #555;
	--tdm-qp-text-updated: #777;

	/* Dimensions tableau */
	--tdm-qp-cell-size: 24px;
	--tdm-qp-cell-height: 30px;
	--tdm-qp-cell-font-size: 11px;
	--tdm-qp-label-width: 100px;
	--tdm-qp-header-height: 50px;

	/* Espacement & typographie */
	--tdm-qp-padding: 8px;
	--tdm-qp-header-gap: 12px;
	--tdm-qp-section-gap: 20px;
	--tdm-qp-tooltip-max-width: 220px;
	--tdm-qp-tooltip-font-size: 12px;
	--tdm-qp-tooltip-bg: #222;
	--tdm-qp-tooltip-fg: #FFF;

	/* Widget */
	--tdm-qp-widget-gap: 12px;
	--tdm-qp-widget-padding: 16px;
	--tdm-qp-widget-bg: #F5F5F5;
	--tdm-qp-widget-border-radius: 4px;
	--tdm-qp-widget-input-border: #CCC;
	--tdm-qp-widget-focus-color: #4CAF50;
	--tdm-qp-verdict-min-height: 40px;

	/* Disclosure « infos pratiques » (.tdm-ip-item) */
	--tdm-ip-summary-font-size: 14px;
	--tdm-ip-item-padding-block: 14px;
	--tdm-ip-summary-gap: 10px;
	--tdm-ip-chevron: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 320 512'%3E%3Cpath d='M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z'/%3E%3C/svg%3E");
}

@media (min-width: 800px) {
	:root {
		--tdm-qp-cell-size: 32px;
		--tdm-qp-cell-height: 38px;
		--tdm-qp-cell-font-size: 12px;
		--tdm-qp-label-width: 140px;
		--tdm-qp-header-height: 60px;
		--tdm-qp-padding: 12px;
		--tdm-qp-section-gap: 28px;

		--tdm-ip-summary-font-size: 16px;
		--tdm-ip-item-padding-block: 18px;
	}
}

/* ─────────────────────────────────────
   Panneau « infos pratiques » (disclosure par item)
   Disclosures autonomes du thème (le composant details/summary du planificateur est
   désormais scopé à son propre rendu et ne s'applique plus ici) : rendu liste sobre,
   items séparés par un filet, chevron ::before animé (--tdm-ip-chevron), marker natif
   masqué. Couvre aussi le <details> « Sources » de quand-partir (.tdm-qp-sources).
   ───────────────────────────────────── */

.tdm-ip-item {
	border-bottom: 1px solid var(--tdm-qp-border-color-light);

	&:last-child {
		border-bottom: none;
	}

	> summary {
		font-family: var(--tdm-ff-s);

		small {
			font-family: var(--tdm-ff-ss);
			font-size: var(--tdm-qp-tooltip-font-size);
			color: var(--tdm-qp-text-updated);
			font-weight: 400;
		}
	}

	> summary + div {
		font-size: 14px;
		line-height: 1.5em;
	}
}

.tdm-ip-item > summary,
.tdm-qp-sources > summary {
	display: flex;
	align-items: center;
	gap: var(--tdm-ip-summary-gap);
	padding: var(--tdm-ip-item-padding-block) 0;
	font-size: var(--tdm-ip-summary-font-size);
	line-height: 1;
	color: var(--tdm-qp-text);
	cursor: pointer;
	list-style: none;
	user-select: none;

	&::-webkit-details-marker {
		display: none;
	}

	&::before {
		content: '';
		width: 0.75em;
		height: 0.75em;
		background-color: currentColor;
		-webkit-mask: var(--tdm-ip-chevron) center / contain no-repeat;
		mask: var(--tdm-ip-chevron) center / contain no-repeat;
		transition: transform 0.2s ease;
		order: 99;
		margin-left: auto;
		flex-shrink: 0;
	}
}

@media (hover: hover) {
	.tdm-ip-item > summary:hover,
	.tdm-qp-sources > summary:hover {
		background: var(--tdm-qp-header-bg);
	}
}

.tdm-ip-item[open] > summary::before,
.tdm-qp-sources[open] > summary::before {
	transform: rotate(90deg);
}

/* ─────────────────────────────────────
   Corps du module : layout général
   ───────────────────────────────────── */

.tdm-qp {
	display: flex;
	flex-direction: column;
	gap: var(--tdm-qp-section-gap);
	margin-block: var(--tdm-qp-section-gap);
}

/* ─────────────────────────────────────
   Header du bloc « Quand partir » (rendu shortcode autonome uniquement)
   ───────────────────────────────────── */

.tdm-qp-header-block {
	display: flex;
	align-items: baseline;
	gap: var(--tdm-qp-header-gap);
	flex-wrap: wrap;
	margin-bottom: 1.5em;
}

.tdm-qp-title {
	margin: 0;
	flex-shrink: 0;
}

/* Date de dernière vérification */
.tdm-qp-updated {
	font-style: italic;
	font-size: 14px;
	color: var(--tdm-qp-text-updated);
	flex-shrink: 0;
}

/* Disclosure natif pour la liste des sources documentaires — sous le tableau, discret */
.tdm-qp-sources {
	flex-shrink: 0;
	font-size: var(--tdm-qp-tooltip-font-size);

	summary {
		color: var(--tdm-qp-text-muted);
		text-decoration: underline dotted;
		text-underline-offset: 2px;
		cursor: pointer;
	}

	ul {
		list-style: none;
		margin: 4px 0 0;
		padding: 0;
	}

	li {
		line-height: 1.6em;
	}

	a {
		color: var(--tdm-qp-text-muted);
		text-decoration: none;

		@media (hover: hover) {
			&:hover {
				text-decoration: underline;
			}
		}
	}
}

/* ─────────────────────────────────────
   Frise : conteneur scrollable + tableau
   ───────────────────────────────────── */

.tdm-qp-frise {
	overflow-x: auto;
	-webkit-overflow-scrolling: touch;
	border: 1px solid var(--tdm-qp-border-color);
	border-radius: 4px;
}

.tdm-qp-table {
	width: 100%;
	table-layout: fixed;
	border-collapse: separate;
	border-spacing: 0;
	min-width: calc(var(--tdm-qp-label-width) + (24 * var(--tdm-qp-cell-size)));
	background: var(--tdm-qp-bg);

	th, td {
		box-sizing: border-box;
	}
}

/* Coin (case vide au-dessus des labels) : sticky à gauche, au-dessus des cellules */
.tdm-qp-corner {
	position: sticky;
	left: 0;
	z-index: 2;
	width: var(--tdm-qp-label-width);
	background: var(--tdm-qp-bg);
	border-right: 1px solid var(--tdm-qp-border-color);
	border-bottom: 2px solid var(--tdm-qp-border-color);
}

/* En-tête mois : span de 2 quinzaines */
.tdm-qp-header-month {
	width: calc(var(--tdm-qp-cell-size) * 2);
	height: var(--tdm-qp-header-height);
	font-size: 11px;
	font-weight: 600;
	text-transform: uppercase;
	color: var(--tdm-qp-text);
	background: var(--tdm-qp-header-bg);
	padding-inline: 4px;
	border-bottom: 2px solid var(--tdm-qp-border-color);
	border-right: 1px solid var(--tdm-qp-border-color);
}

/* Label de ligne (Synthèse / nom d'axe) : sticky à gauche */
.tdm-qp-row-label {
	position: sticky;
	left: 0;
	z-index: 1;
	width: var(--tdm-qp-label-width);
	padding: var(--tdm-qp-padding);
	background: var(--tdm-qp-bg);
	border-right: 1px solid var(--tdm-qp-border-color);
	border-bottom: 1px solid var(--tdm-qp-border-color-light);
	font-size: var(--tdm-qp-tooltip-font-size);
	font-weight: 500;
	color: var(--tdm-qp-text);
	text-align: left;
}

.tdm-qp-row-synthese .tdm-qp-row-label {
	font-weight: 600;
	background: var(--tdm-qp-header-bg);
}

/* Cellule de score */
.tdm-qp-cell {
	width: var(--tdm-qp-cell-size);
	height: var(--tdm-qp-cell-height);
	border-bottom: 1px solid var(--tdm-qp-border-color-light);
	border-right: 1px solid var(--tdm-qp-border-color-light);
	font-size: var(--tdm-qp-cell-font-size);
	font-weight: 600;
	text-align: center;

	&.tdm-qp-score-0 {
		background: var(--tdm-qp-score-0-bg);
		color: var(--tdm-qp-score-0-fg);
	}

	&.tdm-qp-score-1 {
		background: var(--tdm-qp-score-1-bg);
		color: var(--tdm-qp-score-1-fg);
	}

	&.tdm-qp-score-2 {
		background: var(--tdm-qp-score-2-bg);
		color: var(--tdm-qp-score-2-fg);
	}

	&.tdm-qp-score-3 {
		background: var(--tdm-qp-score-3-bg);
		color: var(--tdm-qp-score-3-fg);
	}

	/* Cellule avec tooltip (label explicatif de la quinzaine) */
	&[data-tooltip] {
		cursor: help;
		text-decoration: underline dotted;
		text-underline-offset: 2px;
	}
}

@media (min-width: 800px) {
	.tdm-qp-cell[data-tooltip] {
		position: relative;
	}
}

/* Tooltip : règles scopées aux cellules de la frise (seul usage restant de data-tooltip) */
.tdm-qp-cell[data-tooltip]::after {
	content: attr(data-tooltip);
	visibility: hidden;
	position: absolute;
	top: 100%;
	left: 50%;
	transform: translateX(-50%);
	z-index: 5;
	width: max-content;
	max-width: var(--tdm-qp-tooltip-max-width);
	background: var(--tdm-qp-tooltip-bg);
	color: var(--tdm-qp-tooltip-fg);
	font-size: var(--tdm-qp-tooltip-font-size);
	font-weight: normal;
	line-height: 1.4em;
	text-align: left;
	text-transform: none;
	text-decoration: none;
	white-space: normal;
	padding: 8px 10px;
	border-radius: 4px;
	box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
}

.tdm-qp-cell[data-tooltip]:focus {
	outline: none;
}

.tdm-qp-cell[data-tooltip]:focus::after {
	visibility: visible;
}

@media (hover: hover) {
	.tdm-qp-cell[data-tooltip]:hover::after {
		visibility: visible;
	}
}

/* ─────────────────────────────────────
   Résumé textuel et dates à connaître
   ───────────────────────────────────── */

.tdm-qp-summary-best,
.tdm-qp-summary-avoid {
	margin: 0;
	padding-block: 2px;
	padding-left: 12px;
	border-left: 4px solid;
	font-size: 14px;
	line-height: 1.5em;
	color: var(--tdm-qp-text);
}

.tdm-qp-summary-best {
	border-left-color: var(--tdm-qp-score-0-bg);
}

.tdm-qp-summary-avoid {
	border-left-color: var(--tdm-qp-score-3-bg);
}

.tdm-qp-events {
	h3 {
		font-size: 16px;
		margin-bottom: 0.5em;
	}

	ul {
		display: flex;
		flex-direction: column;
		gap: 0.5em;
		list-style: disc;
		padding-left: 1.25em;
		margin: 0;
	}

	li {
		font-size: 14px;
		line-height: 1.5em;
	}
}

/* Lien source pour événement */
.tdm-qp-event-source {
	font-size: var(--tdm-qp-tooltip-font-size);
	color: var(--tdm-qp-text-muted);
	text-decoration: none;

	&:visited {
		color: var(--tdm-qp-text-muted);
	}

	@media (hover: hover) {
		&:hover {
			text-decoration: underline;
		}
	}
}

/* ─────────────────────────────────────
   Widget verdict : inputs + résultat
   ───────────────────────────────────── */

.tdm-qp-widget {
	display: flex;
	flex-direction: column;
	gap: var(--tdm-qp-widget-gap);
	padding: var(--tdm-qp-widget-padding);
	background: var(--tdm-qp-widget-bg);
	border-radius: var(--tdm-qp-widget-border-radius);
}

.tdm-qp-widget-inputs {
	display: flex;
	flex-direction: column;
	gap: var(--tdm-qp-widget-gap);
}

@media (min-width: 800px) {
	.tdm-qp-widget-inputs {
		flex-direction: row;
		align-items: flex-end;
	}
}

.tdm-qp-widget-input-group {
	display: flex;
	flex-direction: column;
	gap: 4px;

	label {
		font-size: 13px;
		font-weight: 500;
		color: var(--tdm-qp-text);
	}

	input[type="date"] {
		padding: 8px 10px;
		border: 1px solid var(--tdm-qp-widget-input-border);
		border-radius: 3px;
		font-size: 14px;
		background: var(--tdm-qp-bg);
		color: var(--tdm-qp-text);

		&:focus {
			outline: none;
			border-color: var(--tdm-qp-widget-focus-color);
			box-shadow: 0 0 0 2px rgba(76, 175, 80, 0.1);
		}
	}
}

.tdm-qp-verdict {
	display: flex;
	flex-direction: column;
	gap: 8px;
	min-height: var(--tdm-qp-verdict-min-height);
	padding-block: 2px;
	font-size: 13px;
	color: var(--tdm-qp-text-muted);
	line-height: 1.5em;

	h3 {
		font-size: 15px;
		font-weight: 600;
		color: var(--tdm-qp-text);
	}

	ul {
		list-style: disc;
		padding-left: 1.25em;
		margin: 0;
	}
}

.tdm-qp-verdict:empty {
	display: none;
}
