/* Feuille de style de Tandem — pensée pour des utilisateurs et utilisatrices malvoyantes :
   contrastes élevés, texte large par défaut, cibles cliquables généreuses, focus très visible. */

:root {
	--font-scale: 1;
	--color-bg: #ffffff;
	--color-text: #111111;
	--color-text-muted: #3a3a3a;
	--color-primary: #0b4f8a;
	--color-primary-dark: #063a63;
	--color-primary-contrast: #ffffff;
	--color-border: #444444;
	--color-surface: #f4f6f8;
	--color-danger: #8a0000;
	--color-success: #045b2f;
	--color-avertissement: #7a4b00;
	--focus-color: #ffb400;
}

html[data-contrast="high"] {
	--color-bg: #000000;
	--color-text: #ffffff;
	--color-text-muted: #ffffff;
	--color-primary: #ffd400;
	--color-primary-dark: #ffd400;
	--color-primary-contrast: #000000;
	--color-border: #ffffff;
	--color-surface: #000000;
	--color-danger: #ff6b6b;
	--color-success: #7CFC9A;
	--color-avertissement: #ffcf40;
	--focus-color: #00e5ff;
}

* { box-sizing: border-box; }

html {
	font-size: calc(18px * var(--font-scale));
}

body {
	margin: 0;
	font-family: "Segoe UI", Arial, sans-serif;
	font-size: 1rem;
	line-height: 1.6;
	background: var(--color-bg);
	color: var(--color-text);
}

a {
	color: var(--color-primary);
	text-decoration: underline;
}

a:hover, a:active {
	color: var(--color-primary-dark);
}

img { max-width: 100%; }

.skip-link {
	position: absolute;
	left: -9999px;
	top: 0;
	background: var(--color-primary);
	color: var(--color-primary-contrast);
	padding: 1rem 1.5rem;
	font-size: 1.1rem;
	font-weight: 700;
	z-index: 1000;
	border-radius: 0 0 .5rem 0;
}

.skip-link:focus {
	left: 0;
}

.sr-only {
	position: absolute;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: -1px;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	white-space: nowrap;
	border: 0;
}

/* Focus très visible partout dans le site (indispensable pour la navigation au clavier). */
a:focus, button:focus, input:focus, select:focus, textarea:focus, [tabindex]:focus {
	outline: 4px solid var(--focus-color);
	outline-offset: 2px;
}

.barre-outils {
	background: var(--color-text);
	color: var(--color-bg);
	padding: .5rem 1rem;
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: .75rem;
	font-size: .95rem;
}

.barre-outils button {
	background: var(--color-bg);
	color: var(--color-text);
	border: 2px solid var(--color-bg);
	border-radius: .4rem;
	padding: .35rem .75rem;
	font-size: 1rem;
	font-weight: 700;
	cursor: pointer;
}

.barre-outils span.groupe-label {
	font-weight: 700;
}

header.site {
	background: var(--color-primary);
	color: var(--color-primary-contrast);
	padding: 1.25rem 1.5rem;
}

header.site .conteneur {
	max-width: 68rem;
	margin: 0 auto;
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
}

header.site .logo {
	font-size: 1.8rem;
	font-weight: 800;
	color: var(--color-primary-contrast);
	text-decoration: none;
}

nav.principale ul {
	list-style: none;
	display: flex;
	flex-wrap: wrap;
	gap: .25rem;
	margin: 0;
	padding: 0;
}

nav.principale a {
	display: inline-block;
	color: var(--color-primary-contrast);
	text-decoration: none;
	font-size: 1.1rem;
	font-weight: 700;
	padding: .6rem 1rem;
	border-radius: .4rem;
	border: 2px solid transparent;
}

nav.principale a:hover, nav.principale a:focus {
	border-color: var(--color-primary-contrast);
}

main {
	max-width: 68rem;
	margin: 0 auto;
	padding: 2rem 1.5rem 4rem;
}

h1 { font-size: 2.1rem; margin: 0 0 1rem; }
h2 { font-size: 1.6rem; margin: 2rem 0 .75rem; }
h3 { font-size: 1.3rem; margin: 1.25rem 0 .5rem; }

p { margin: 0 0 1rem; }

.carte {
	background: var(--color-surface);
	border: 2px solid var(--color-border);
	border-radius: .75rem;
	padding: 1.5rem;
	margin-bottom: 1.5rem;
}

.grille-sorties {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(20rem, 1fr));
	gap: 1.25rem;
}

.badge {
	display: inline-block;
	padding: .25rem .75rem;
	border-radius: .4rem;
	font-weight: 700;
	font-size: .95rem;
	border: 2px solid var(--color-border);
}

.badge-ok { border-color: var(--color-success); color: var(--color-success); }
.badge-complet { border-color: var(--color-danger); color: var(--color-danger); }

form .champ {
	margin-bottom: 1.25rem;
}

label {
	display: block;
	font-weight: 700;
	font-size: 1.05rem;
	margin-bottom: .35rem;
}

fieldset {
	border: 2px solid var(--color-border);
	border-radius: .5rem;
	padding: 1rem;
	margin: 0 0 1.25rem;
}

legend {
	font-weight: 700;
	font-size: 1.1rem;
	padding: 0 .5rem;
}

input[type="text"], input[type="email"], input[type="password"], input[type="tel"],
input[type="date"], input[type="time"], input[type="number"], textarea, select {
	width: 100%;
	max-width: 32rem;
	font-size: 1.1rem;
	padding: .6rem .75rem;
	border: 2px solid var(--color-border);
	border-radius: .4rem;
	background: var(--color-bg);
	color: var(--color-text);
	font-family: inherit;
}

.case-a-cocher {
	display: flex;
	align-items: center;
	gap: .6rem;
	font-weight: 400;
	font-size: 1.05rem;
	margin-bottom: .5rem;
}

.case-a-cocher input { width: 1.4rem; height: 1.4rem; }

.bouton, button, input[type="submit"] {
	display: inline-block;
	font-size: 1.1rem;
	font-weight: 700;
	padding: .75rem 1.5rem;
	border-radius: .5rem;
	border: 2px solid var(--color-primary);
	background: var(--color-primary);
	color: var(--color-primary-contrast);
	cursor: pointer;
	text-decoration: none;
	min-height: 2.75rem;
}

.bouton:hover, button:hover, input[type="submit"]:hover {
	background: var(--color-primary-dark);
	border-color: var(--color-primary-dark);
}

.bouton-secondaire {
	background: var(--color-bg);
	color: var(--color-primary);
}

.bouton-danger {
	background: var(--color-bg);
	color: var(--color-danger);
	border-color: var(--color-danger);
}

.message {
	padding: 1rem 1.25rem;
	border-radius: .5rem;
	border: 2px solid var(--color-border);
	margin-bottom: 1.5rem;
	font-weight: 700;
}

.message-succes { border-color: var(--color-success); color: var(--color-success); }
.message-erreur { border-color: var(--color-danger); color: var(--color-danger); }
.message-avertissement { border-color: var(--color-avertissement); color: var(--color-avertissement); }

table {
	width: 100%;
	border-collapse: collapse;
	font-size: 1.05rem;
}

table caption {
	text-align: left;
	font-weight: 700;
	margin-bottom: .5rem;
}

th, td {
	border: 2px solid var(--color-border);
	padding: .6rem .75rem;
	text-align: left;
}

th { background: var(--color-surface); }

.liste-participants {
	list-style: none;
	margin: 0;
	padding: 0;
}

.liste-participants li {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: .75rem;
	padding: .6rem 0;
	border-bottom: 1px solid var(--color-border);
}

.liste-participants li:last-child {
	border-bottom: none;
}

.liste-participants form {
	margin: 0;
}

.nom-membre {
	position: relative;
	border-bottom: 1px dotted var(--color-text);
	cursor: help;
}

.nom-membre .infobulle {
	display: none;
	position: absolute;
	left: 0;
	top: 100%;
	margin-top: .5rem;
	min-width: 14rem;
	max-width: 20rem;
	background: var(--color-bg);
	color: var(--color-text);
	border: 2px solid var(--color-border);
	border-radius: .5rem;
	padding: .75rem 1rem;
	font-size: .95rem;
	font-weight: 400;
	line-height: 1.5;
	white-space: normal;
	z-index: 10;
	box-shadow: 0 4px 10px rgba(0, 0, 0, .25);
}

.nom-membre:hover .infobulle,
.nom-membre:focus .infobulle {
	display: block;
}

footer.site {
	background: var(--color-surface);
	border-top: 2px solid var(--color-border);
	padding: 1.5rem;
	text-align: center;
	font-size: 1rem;
}
