/**
 * Deekay School — mise en page PAPIER du planning.
 *
 * Ce fichier est chargé de deux manières, sans qu'une seule règle soit écrite
 * deux fois :
 *   - media="print" : c'est la feuille de style de l'imprimante et du PDF.
 *   - media="all"   : sur l'aperçu (?dks_print=1), la page prend directement
 *                     l'allure du document, à l'écran, avant d'imprimer.
 *
 * Le bloc « @media screen » en fin de fichier n'habille QUE l'aperçu : il est
 * ignoré à l'impression, l'imprimante ne voit donc jamais la barre d'actions
 * ni le fond gris.
 *
 * A4 portrait, fond blanc, en-tête logo + titre + boutons, jours en pastilles,
 * cartes à bordure fine. Une salle par page.
 */


/* ---------------------------------------------------------------------
   Mise en page du PDF, calquée sur le planning officiel Deekay :
   A4 portrait, fond blanc, en-tête logo + titre + boutons, jours en
   pastilles, cartes à bordure fine. Une salle par page.
   --------------------------------------------------------------------- */
@page { size: A4 portrait; margin: 12mm 10mm; }

/* Le planning est sorti du flux : sans cette règle, le fond sombre de la page
   qui l'accueille s'imprime derrière lui et noircit le bas des feuilles. */
html, body {
	background: #fff !important;
	margin: 0 !important;
	padding: 0 !important;
}

body * { visibility: hidden; }
.dks-tt, .dks-tt * { visibility: visible; }

.dks-tt {
	position: absolute;
	left: 0;
	top: 0;
	width: 100%;
	background: #fff !important;
	color: #000 !important;
	padding: 0;
	border-radius: 0;
}

/* --- En-tête --- */
.dks-print-head {
	display: flex !important;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
	margin: 0 0 16px;
}
.dks-print-brand { display: flex; align-items: center; gap: 14px; }
.dks-print-logo { width: 62px; height: 62px; object-fit: contain; }
.dks-print-titles { display: flex; flex-direction: column; line-height: 1.1; }
.dks-print-title {
	font-size: 25px;
	font-weight: 800;
	text-transform: uppercase;
	letter-spacing: -.01em;
	color: #000;
}
.dks-print-sub { font-size: 13px; color: #000; margin-top: 3px; }

.dks-print-btns { display: flex; flex-direction: column; gap: 7px; }
.dks-print-btn {
	background: var(--dk-ink, #1C1816) !important;
	color: #fff !important;
	text-decoration: none;
	font-size: 11px;
	font-weight: 700;
	letter-spacing: .06em;
	text-align: center;
	padding: 8px 20px;
	border-radius: 999px;
	-webkit-print-color-adjust: exact;
	print-color-adjust: exact;
}

/* --- Ce qui n'a pas sa place sur le papier ---
   La barre de commandes en fait partie : ni sur la feuille imprimée, ni dans
   l'aperçu, qui doit montrer le document et rien d'autre. */
.dks-hero-actions,
.dks-toolbar,
.dks-heading,
.dks-ev-actions,
.dks-toolbar-end,
.dks-filter-toggle,
.dks-bar,
.dks-room-tabs,
.dks-empty { display: none !important; }

/* --- Laisser le planning déborder sur la page suivante ---
   Le thème enferme le contenu dans un conteneur en « overflow: clip ».
   À l'écran ça ne se voit pas, mais à l'impression un conteneur qui rogne
   ne se coupe pas entre deux pages : la grille de la 2ᵉ salle passait à la
   trappe et le PDF sortait avec une page blanche à la place de Tivoli.
   On libère donc toute la chaîne des parents du planning — sur du papier,
   rien ne défile, aucun rognage n'a de raison d'être. */
html, body { overflow: visible !important; }
body :has( .dks-tt ) { overflow: visible !important; }

/* --- Une salle par page, avec son nom en tête ---
   « position: relative » et la hauteur d'une feuille : ce sont eux qui donnent
   au pied de page, posé en absolu, un bas de feuille où s'accrocher. Sans la
   hauteur, il remonterait juste sous le dernier cours. */
.dks-room-panel {
	display: block !important;
	margin: 0 !important;
	position: relative;
	min-height: 262mm;
}
.dks-room-panel + .dks-room-panel { break-before: page; page-break-before: always; }
.dks-room-panel-title {
	display: block !important;
	margin: 0;
	padding: 0;
	border: 0;
	font-size: 20px;
	font-weight: 800;
	text-transform: uppercase;
	letter-spacing: .04em;
	color: #000 !important;
}
.dks-room-panel-addr {
	display: block !important;
	margin: 2px 0 12px;
	padding: 0 0 8px;
	border-bottom: 1px solid #000;
	font-size: 11.5px;
	color: #000 !important;
}

/* --- Grille ---
   Interlignes resserrés : une grille CSS ne se coupe pas entre deux pages
   (Chrome la repousse entière sur la suivante et laisse une page à moitié
   vide). Chaque salle doit donc tenir sur SA page — la ligne « axes de
   travail » ajoutée à chaque carte a fait déborder Tivoli, d'où ce
   resserrage. Marge actuelle : environ un créneau horaire de plus par salle. */
.dks-grid-view { display: grid !important; gap: 6px; }
.dks-list-view { display: none !important; }

.dks-day-head {
	background: #fff !important;
	border: 1px solid #000 !important;
	border-radius: 999px;
	color: #000 !important;
	font-size: 12px;
	font-weight: 800;
	padding: 7px 8px;
}

/* --- Cartes --- */
.dks-cell { gap: 6px; }
.dks-event {
	background: #fff !important;
	border: 1px solid #999 !important;
	border-radius: 8px;
	box-shadow: none !important;
	backdrop-filter: none !important;
	padding: 7px;
	line-height: 1.3;
	break-inside: avoid;
	page-break-inside: avoid;
}
.dks-title { color: #000 !important; font-size: 11px; }
.dks-time { color: #000 !important; font-size: 10.5px; font-weight: 700; margin-top: 3px; }
.dks-room {
	display: block !important;
	border: 0 !important;
	padding: 0;
	margin-top: 4px;
	color: #000 !important;
	font-size: 10px;
	text-decoration: underline;
}
/* La salle reste indiquée sur chaque carte, même quand la page ne contient
   qu'une salle : une carte lue ou photographiée isolément garde son lieu.
   (Choix de Jessica — la répétition est assumée.) */
.dks-room-panel .dks-room { display: block !important; }
.dks-info,
.dks-levelprof,
.dks-focus,
.dks-age { color: #000 !important; font-size: 10px; margin-top: 3px; opacity: 1; }
.dks-focus { font-style: italic; }

/* Chaque salle porte désormais son propre pied, à l'intérieur de sa feuille :
   plus besoin de le fixer au bas de la fenêtre — cette position le rendait
   invisible dans l'aperçu, qui n'imprime rien. */
.dks-print-foot {
	display: block !important;
	position: absolute;
	bottom: 12mm;
	left: 10mm;
	right: 10mm;
	margin: 0;
	padding: 6px 0 2px;
	border-top: 1px solid #999;
	text-align: center;
	font-size: 9.5px;
	color: #000 !important;
	background: #fff;
}

/* De la place sous le planning pour que rien ne passe sous le pied de page. */
.dks-room-panel:last-child,
.dks-grid-view { padding-bottom: 10mm; }
.dks-cat {
	color: #000 !important;
	border-top: 0;
	margin-top: 4px;
	padding-top: 2px;
	font-size: 9px;
}
/* Cours complet : le grisé de l'écran ne survit pas à l'impression, mais la
   pastille si — un planning affiché en salle doit dire ce qui est plein. */
.dks-event.is-full { opacity: 1; padding-top: 26px; }
.dks-badge {
	top: 6px;
	font-size: 8.5px;
	padding: 2px 8px;
	background: var(--dk-danger, #E11D2E) !important;
	color: #fff !important;
}

.dks-print-head + * { margin-top: 0; }


/* =====================================================================
   APERÇU À L'ÉCRAN — n'existe que quand ce fichier est chargé en media="all".
   Le document est posé sur un fond gris, à sa largeur réelle, pour qu'on voie
   ce qui sortira de l'imprimante avant de lancer quoi que ce soit.
   ===================================================================== */
@media screen {
	html, body { background: #8f8f8f !important; }

	/* À l'impression, masquer le site suffit avec « visibility: hidden » : la
	   place qu'il occupe n'a pas d'importance, les pages sont recalculées.
	   À l'écran si : en-tête, pied et conteneurs du thème restaient invisibles
	   MAIS encombrants, et repoussaient le document loin sous la barre.
	   On les retire donc vraiment, en épargnant la chaîne qui porte le planning. */
	body > *:not(:has(.dks-tt)):not(.dks-paperbar),
	body > * > *:not(:has(.dks-tt)):not(.dks-tt),
	body > * > * > *:not(:has(.dks-tt)):not(.dks-tt),
	body > * > * > * > *:not(:has(.dks-tt)):not(.dks-tt) { display: none !important; }

	/* Les conteneurs conservés gardaient leurs marges de page. */
	body :has( .dks-tt ) { margin: 0 !important; padding: 0 !important; min-height: 0 !important; }

	/* Le planning est en position absolue pour l'impression : on lui redonne
	   un flux normal. Il ne porte plus le fond blanc — ce sont les feuilles,
	   à l'intérieur, qui le portent. */
	.dks-tt {
		position: relative !important;
		width: auto;
		max-width: none;
		margin: 0;
		/* La barre d'actions est en position fixe : sans ce dégagement, le haut
		   de la première feuille passerait dessous. */
		padding: 116px 16px 60px !important;
		background: transparent !important;
		box-shadow: none;
		display: flex;
		flex-direction: column;
		align-items: center;
		gap: 34px;
	}

	/* CHAQUE SALLE EST UNE FEUILLE A4 : mêmes dimensions et mêmes marges que la
	   page imprimée, pour qu'on voie vraiment ce qui sortira — page 1 Gare,
	   page 2 Tivoli. La hauteur est imposée : une feuille à moitié remplie doit
	   se voir à moitié remplie. */
	.dks-room-panel {
		box-sizing: border-box;
		width: 210mm;
		min-height: 297mm;
		max-width: 100%;
		margin: 0 !important;
		padding: 12mm 10mm;
		background: #fff !important;
		box-shadow: 0 10px 40px rgba(0, 0, 0, .35);
		position: relative;
	}
	.dks-room-panel + .dks-room-panel { border-top: 0; }

	/* Numéro de page, dans la marge : le repère qu'on cherche quand on veut
	   n'imprimer qu'une salle. */
	.dks-room-panel::after {
		counter-increment: dks-sheet;
		content: "Page " counter(dks-sheet);
		position: absolute;
		top: -26px;
		left: 0;
		font-size: 12px;
		font-weight: 700;
		color: #fff;
		letter-spacing: .04em;
	}
	.dks-tt { counter-reset: dks-sheet; }

	/* Un seul planning (pas de découpage par salle) : la grille elle-même
	   devient la feuille. */
	.dks-tt > .dks-grid-view,
	.dks-tt > .dks-list-view {
		box-sizing: border-box;
		width: 210mm;
		max-width: 100%;
		padding: 12mm 10mm;
		background: #fff !important;
		box-shadow: 0 10px 40px rgba(0, 0, 0, .35);
	}

	/* Le pied de page est fixé en bas de FEUILLE à l'impression ; à l'écran il
	   se remettrait par-dessus le contenu. */
	/* Un pied par feuille, posé au bas de sa feuille. */
	.dks-print-foot {
		position: absolute !important;
		left: 10mm;
		right: 10mm;
		bottom: 10mm;
		margin: 0 !important;
	}

	/* --- Barre d'actions de l'aperçu --- */
	.dks-paperbar {
		display: flex !important;
		visibility: visible !important;
		position: fixed;
		top: 0;
		left: 0;
		right: 0;
		z-index: 99999;
		align-items: center;
		justify-content: center;
		gap: 12px;
		padding: 12px 16px;
		background: var(--dk-ink, #1c1816);
		color: #fff;
		font-size: 13px;
		box-shadow: 0 2px 14px rgba(0, 0, 0, .3);
	}
	.dks-paperbar * { visibility: visible !important; }
	.dks-paperbar-label { margin-right: auto; opacity: .8; }
	.dks-paperbar-btn {
		appearance: none;
		border: 0;
		border-radius: 999px;
		padding: 8px 20px;
		font: inherit;
		font-size: 11px;
		font-weight: 700;
		cursor: pointer;
		background: var(--dk-yellow, #FFE62B);
		color: var(--dk-ink, #1c1816);
		text-decoration: none;
	}
	/* Le « !important » sur la couleur n'est pas superflu : sans lui, le style
	   de lien du thème repeint le texte en sombre, invisible sur la barre. */
	.dks-paperbar-btn.is-ghost {
		background: transparent;
		color: #fff !important;
		border: 1px solid rgba(255, 255, 255, .35);
		font-weight: 400;
	}
	.dks-paperbar-btn:hover { opacity: .9; }

	/* Sur petit écran, la feuille A4 ne rentre pas : on la laisse respirer. */
	@media (max-width: 820px) {
		.dks-tt { padding: 104px 8px 40px !important; gap: 22px; }
		.dks-room-panel { min-height: 0; padding: 16px 12px; }
		.dks-tt > .dks-grid-view,
		.dks-tt > .dks-list-view { padding: 16px 12px; }
	}
}

/* La barre n'a rien à faire sur le papier. Cette règle est portée par un
   « @media print » et non écrite en clair : placée après le bloc « @media
   screen », une règle nue de même poids l'emportait dans la cascade et
   masquait la barre jusque dans l'aperçu. */
@media print {
	.dks-paperbar { display: none !important; }
}
