/* ==========================================================================
   GSS — thème de l'application (clair / sombre)
   Bootstrap 5.3 fournit la base ; ce fichier définit l'identité :
   - encre graphite et bleu pétrole, ambre « signalisation » pour l'accent ;
   - Barlow (inspirée des panneaux routiers) pour le texte,
     Barlow Semi Condensed pour les titres, les chiffres et les plaques.
   ========================================================================== */

/* ---------- Polices (fichiers locaux, aucun CDN) ---------- */
@font-face { font-family: "Barlow"; font-style: normal; font-weight: 400; font-display: swap; src: url("../vendor/fonts/barlow-latin-400-normal.woff2") format("woff2"); }
@font-face { font-family: "Barlow"; font-style: normal; font-weight: 500; font-display: swap; src: url("../vendor/fonts/barlow-latin-500-normal.woff2") format("woff2"); }
@font-face { font-family: "Barlow"; font-style: normal; font-weight: 600; font-display: swap; src: url("../vendor/fonts/barlow-latin-600-normal.woff2") format("woff2"); }
@font-face { font-family: "Barlow"; font-style: normal; font-weight: 700; font-display: swap; src: url("../vendor/fonts/barlow-latin-700-normal.woff2") format("woff2"); }
@font-face { font-family: "Barlow Semi Condensed"; font-style: normal; font-weight: 500; font-display: swap; src: url("../vendor/fonts/barlow-semi-condensed-latin-500-normal.woff2") format("woff2"); }
@font-face { font-family: "Barlow Semi Condensed"; font-style: normal; font-weight: 600; font-display: swap; src: url("../vendor/fonts/barlow-semi-condensed-latin-600-normal.woff2") format("woff2"); }
@font-face { font-family: "Barlow Semi Condensed"; font-style: normal; font-weight: 700; font-display: swap; src: url("../vendor/fonts/barlow-semi-condensed-latin-700-normal.woff2") format("woff2"); }

/* ---------- Jetons de couleur ---------- */
:root,
[data-bs-theme="light"] {
	--gss-bg: #eef1f4;
	--gss-surface: #ffffff;
	--gss-surface-2: #f6f8fa;
	--gss-surface-3: #e9edf1;
	--gss-border: #d8dee5;
	--gss-border-strong: #b9c3cd;
	--gss-text: #16202a;
	--gss-muted: #58656f;
	--gss-faint: #8a96a1;

	--gss-primary: #0d6972;
	--gss-primary-hover: #0a555c;
	--gss-primary-soft: #e0eff0;
	--gss-on-primary: #ffffff;

	--gss-accent: #d48a00;
	--gss-accent-soft: #fff1d6;
	--gss-accent-ink: #6b4500;

	--gss-success: #1d7a4b;
	--gss-success-soft: #e2f3e9;
	--gss-warning: #9a5d00;
	--gss-warning-soft: #fdf0d7;
	--gss-danger: #b3261e;
	--gss-danger-soft: #fbe6e4;
	--gss-info: #2c5c98;
	--gss-info-soft: #e4ecf7;

	--gss-rail: #15202a;
	--gss-rail-2: #1c2a36;
	--gss-rail-text: #c3cdd6;
	--gss-rail-muted: #7f8e9b;

	--gss-plate: #fbfbf6;
	--gss-plate-ink: #111820;
	--gss-plate-band: #0d6972;

	--gss-shadow: 0 1px 2px rgba(16, 24, 32, .06), 0 1px 1px rgba(16, 24, 32, .04);
	--gss-shadow-pop: 0 8px 28px rgba(16, 24, 32, .18);
	--gss-radius: 8px;
	--gss-radius-sm: 5px;

	--gss-font: "Barlow", system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
	--gss-font-cond: "Barlow Semi Condensed", "Barlow", system-ui, sans-serif;
}

[data-bs-theme="dark"] {
	--gss-bg: #0e141a;
	--gss-surface: #151d25;
	--gss-surface-2: #19232d;
	--gss-surface-3: #202c38;
	--gss-border: #2a3642;
	--gss-border-strong: #3a4957;
	--gss-text: #e3e9ee;
	--gss-muted: #9aa8b4;
	--gss-faint: #6d7c89;

	--gss-primary: #43b3bd;
	--gss-primary-hover: #5cc3cc;
	--gss-primary-soft: rgba(67, 179, 189, .15);
	--gss-on-primary: #06181b;

	--gss-accent: #f0a73a;
	--gss-accent-soft: rgba(240, 167, 58, .14);
	--gss-accent-ink: #f6c47a;

	--gss-success: #4cc38a;
	--gss-success-soft: rgba(76, 195, 138, .14);
	--gss-warning: #e9aa4a;
	--gss-warning-soft: rgba(233, 170, 74, .14);
	--gss-danger: #f07167;
	--gss-danger-soft: rgba(240, 113, 103, .14);
	--gss-info: #79a7e6;
	--gss-info-soft: rgba(121, 167, 230, .14);

	--gss-rail: #0a0f14;
	--gss-rail-2: #121a22;
	--gss-rail-text: #b9c4ce;
	--gss-rail-muted: #6f7e8b;

	--gss-plate: #e9ebe4;
	--gss-plate-ink: #0c1117;
	--gss-plate-band: #2f8f98;

	--gss-shadow: 0 1px 2px rgba(0, 0, 0, .35);
	--gss-shadow-pop: 0 10px 30px rgba(0, 0, 0, .5);
}

/* Correspondance avec les variables de Bootstrap */
:root,
[data-bs-theme] {
	--bs-body-font-family: var(--gss-font);
	--bs-body-font-size: .9375rem;
	--bs-body-line-height: 1.45;
	--bs-body-bg: var(--gss-bg);
	--bs-body-color: var(--gss-text);
	--bs-secondary-color: var(--gss-muted);
	--bs-tertiary-bg: var(--gss-surface-2);
	--bs-secondary-bg: var(--gss-surface-3);
	--bs-border-color: var(--gss-border);
	--bs-border-radius: var(--gss-radius-sm);
	--bs-link-color: var(--gss-primary);
	--bs-link-hover-color: var(--gss-primary-hover);
	--bs-link-color-rgb: 13, 105, 114;
	--bs-emphasis-color: var(--gss-text);
	--bs-heading-color: var(--gss-text);
	--bs-focus-ring-color: rgba(13, 105, 114, .3);
}
[data-bs-theme="dark"] {
	--bs-link-color-rgb: 67, 179, 189;
	--bs-focus-ring-color: rgba(67, 179, 189, .35);
}

/* ---------- Base ---------- */
html { -webkit-text-size-adjust: 100%; }
body {
	background: var(--gss-bg);
	color: var(--gss-text);
	font-family: var(--gss-font);
	font-feature-settings: "tnum" 1;
	min-height: 100vh;
}
h1, h2, h3, h4, h5, h6 { font-family: var(--gss-font-cond); font-weight: 600; letter-spacing: .005em; color: var(--gss-text); }
a { text-decoration: none; }
a:hover { text-decoration: underline; }
:focus-visible { outline: 2px solid var(--gss-primary); outline-offset: 2px; }
::selection { background: var(--gss-accent-soft); color: var(--gss-text); }
.text-muted { color: var(--gss-muted) !important; }
.text-danger { color: var(--gss-danger) !important; }
.num, td.num, th.num { text-align: right; font-variant-numeric: tabular-nums; }
td.num, td.nowrap { white-space: nowrap; }
.visually-hidden-focusable:focus { position: fixed; top: .5rem; left: .5rem; z-index: 2000; background: var(--gss-surface); padding: .5rem 1rem; border-radius: var(--gss-radius-sm); }

@media (prefers-reduced-motion: reduce) {
	*, *::before, *::after { transition: none !important; animation: none !important; scroll-behavior: auto !important; }
}

/* ---------- Structure ---------- */
.gss-app {
	display: grid;
	grid-template-columns: 248px minmax(0, 1fr);
	min-height: 100vh;
}

/* Barre latérale */
.gss-rail {
	background: var(--gss-rail);
	color: var(--gss-rail-text);
	position: sticky;
	top: 0;
	height: 100vh;
	overflow-y: auto;
	display: flex;
	flex-direction: column;
	scrollbar-width: thin;
	scrollbar-color: var(--gss-rail-2) transparent;
}
.gss-brand {
	display: flex;
	align-items: baseline;
	gap: .6rem;
	padding: 1.15rem 1.25rem 1rem;
	color: #fff;
	text-decoration: none !important;
}
.gss-brand-mark {
	font-family: var(--gss-font-cond);
	font-weight: 700;
	font-size: 1.6rem;
	letter-spacing: .04em;
	line-height: 1;
	color: #fff;
}
.gss-brand-mark span { color: var(--gss-accent); }
.gss-brand-name { font-size: .78rem; color: var(--gss-rail-muted); line-height: 1.2; }

.gss-nav { list-style: none; margin: 0; padding: .25rem .6rem 1rem; }
.gss-nav a,
.gss-nav summary {
	display: flex;
	align-items: center;
	gap: .7rem;
	padding: .5rem .7rem;
	border-radius: var(--gss-radius-sm);
	color: var(--gss-rail-text);
	font-weight: 500;
	cursor: pointer;
	text-decoration: none;
	position: relative;
	list-style: none;
}
.gss-nav summary::-webkit-details-marker { display: none; }
.gss-nav summary::after {
	content: "\f282";
	font-family: "bootstrap-icons";
	margin-left: auto;
	font-size: .75rem;
	color: var(--gss-rail-muted);
	transition: transform .15s ease;
}
.gss-nav details[open] > summary::after { transform: rotate(180deg); }
.gss-nav a:hover,
.gss-nav summary:hover { background: var(--gss-rail-2); color: #fff; text-decoration: none; }
.gss-nav .bi { font-size: 1.05rem; color: var(--gss-rail-muted); width: 1.2rem; text-align: center; }
.gss-nav ul { list-style: none; margin: .1rem 0 .35rem; padding: 0 0 0 1.9rem; }
.gss-nav ul a { padding: .38rem .7rem; font-weight: 400; font-size: .9rem; }
.gss-nav ul .bi { display: none; }
.gss-nav a.active {
	background: var(--gss-rail-2);
	color: #fff;
}
.gss-nav a.active::before {
	content: "";
	position: absolute;
	left: -.6rem;
	top: .35rem;
	bottom: .35rem;
	width: 3px;
	border-radius: 0 2px 2px 0;
	background: var(--gss-accent);
}
.gss-nav a.active .bi { color: var(--gss-accent); }
.gss-rail-foot {
	margin-top: auto;
	padding: .9rem 1.25rem 1.1rem;
	border-top: 1px solid var(--gss-rail-2);
	font-size: .78rem;
	color: var(--gss-rail-muted);
}
.gss-rail-foot .gss-mode {
	display: inline-flex;
	align-items: center;
	gap: .35rem;
	margin-top: .35rem;
	color: var(--gss-accent);
}

/* Colonne principale */
.gss-main { min-width: 0; display: flex; flex-direction: column; }

.gss-topbar {
	position: sticky;
	top: 0;
	z-index: 1020;
	display: flex;
	align-items: center;
	gap: 1rem;
	min-height: 60px;
	padding: .55rem 1.5rem;
	background: color-mix(in srgb, var(--gss-bg) 88%, transparent);
	backdrop-filter: saturate(1.4) blur(8px);
	border-bottom: 1px solid var(--gss-border);
}
.gss-topbar-titles { min-width: 0; flex: 1; }
.gss-crumbs { font-size: .8rem; color: var(--gss-muted); margin: 0 0 .05rem; }
.gss-crumbs a { color: var(--gss-muted); }
.gss-crumbs .bi { font-size: .7rem; margin: 0 .25rem; }
.gss-title {
	font-family: var(--gss-font-cond);
	font-weight: 700;
	font-size: 1.45rem;
	line-height: 1.15;
	margin: 0;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}
.gss-subtitle { color: var(--gss-muted); font-size: .88rem; margin: .1rem 0 0; }
.gss-topbar-actions { display: flex; align-items: center; gap: .4rem; flex-shrink: 0; }
/* Bouton ☰ : masqué par défaut (il l'emporte sur .btn, déclaré plus bas) */
.gss-topbar .gss-rail-toggle { display: none; }

.gss-user {
	display: inline-flex;
	align-items: center;
	gap: .55rem;
	padding: .25rem .5rem .25rem .3rem;
	border-radius: 999px;
	border: 1px solid var(--gss-border);
	background: var(--gss-surface);
	color: var(--gss-text);
	font-weight: 500;
	font-size: .9rem;
}
.gss-user:hover { border-color: var(--gss-border-strong); text-decoration: none; }
.gss-avatar {
	width: 28px;
	height: 28px;
	border-radius: 50%;
	display: grid;
	place-items: center;
	background: var(--gss-primary);
	color: var(--gss-on-primary);
	font-family: var(--gss-font-cond);
	font-weight: 700;
	font-size: .85rem;
}

/* Bande des véhicules à l'atelier (bons en cours) */
.gss-bay {
	display: flex;
	align-items: center;
	gap: .75rem;
	padding: .55rem 1.5rem;
	border-bottom: 1px solid var(--gss-border);
	background: var(--gss-surface);
	min-height: 52px;
}
.gss-bay-label {
	display: flex;
	flex-direction: column;
	flex-shrink: 0;
	font-size: .72rem;
	color: var(--gss-muted);
	line-height: 1.15;
	min-width: 5.5rem;
}
.gss-bay-label strong { font-family: var(--gss-font-cond); font-size: 1.15rem; color: var(--gss-text); }
.gss-bay-list {
	display: flex;
	gap: .5rem;
	overflow-x: auto;
	padding: .15rem .1rem;
	scrollbar-width: thin;
	flex: 1;
	min-width: 0;
}
.gss-bay-empty { color: var(--gss-faint); font-size: .85rem; }
.gss-plate {
	flex-shrink: 0;
	display: inline-flex;
	align-items: stretch;
	border: 1.5px solid var(--gss-plate-ink);
	border-radius: 4px;
	background: var(--gss-plate);
	color: var(--gss-plate-ink);
	text-decoration: none !important;
	box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .6);
	transition: transform .12s ease, box-shadow .12s ease;
	max-width: 15rem;
}
.gss-plate:hover { transform: translateY(-1px); box-shadow: var(--gss-shadow-pop); }
.gss-plate.is-current { outline: 2px solid var(--gss-accent); outline-offset: 2px; }
.gss-plate-token {
	display: grid;
	place-items: center;
	min-width: 1.9rem;
	padding: 0 .35rem;
	background: var(--gss-plate-band);
	color: #fff;
	font-family: var(--gss-font-cond);
	font-weight: 700;
	font-size: .95rem;
}
.gss-plate-body { display: flex; flex-direction: column; justify-content: center; padding: .12rem .5rem; min-width: 0; }
.gss-plate-num {
	font-family: var(--gss-font-cond);
	font-weight: 700;
	font-size: .98rem;
	letter-spacing: .06em;
	line-height: 1.1;
	white-space: nowrap;
}
.gss-plate-meta { font-size: .68rem; color: #4a5561; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; line-height: 1.2; }
.gss-bay-waiting { flex-shrink: 0; }

.gss-content { padding: 1.25rem 1.5rem 2rem; flex: 1; }
.gss-page-actions { display: flex; flex-wrap: wrap; gap: .5rem; margin-bottom: 1rem; }
.gss-footer { padding: .9rem 1.5rem; color: var(--gss-faint); font-size: .8rem; border-top: 1px solid var(--gss-border); }

/* Grand écran : bouton ☰ qui réduit le menu à ses icônes ou le masque (Configuration → Affichage) */
@media (min-width: 992px) {
	html:not([data-rail-mode="fixe"]) .gss-topbar .gss-rail-toggle { display: inline-flex; }
	html.gss-rail-ferme[data-rail-mode="masquer"] .gss-app { grid-template-columns: minmax(0, 1fr); }
	html.gss-rail-ferme[data-rail-mode="masquer"] .gss-rail { display: none; }
	html.gss-rail-ferme[data-rail-mode="icones"] .gss-app { grid-template-columns: 64px minmax(0, 1fr); }
	html.gss-rail-ferme[data-rail-mode="icones"] .gss-rail {
		width: 64px;
		z-index: 1030;
		overflow-x: hidden;
		transition: width .18s ease, box-shadow .18s ease;
	}
	/* Survol ou navigation au clavier : le menu s'ouvre par-dessus la page */
	html.gss-rail-ferme[data-rail-mode="icones"] .gss-rail:hover,
	html.gss-rail-ferme[data-rail-mode="icones"] .gss-rail:focus-within { width: 248px; box-shadow: var(--gss-shadow-pop); }
	html.gss-rail-ferme[data-rail-mode="icones"] .gss-nav a,
	html.gss-rail-ferme[data-rail-mode="icones"] .gss-nav summary { white-space: nowrap; }
	html.gss-rail-ferme[data-rail-mode="icones"] .gss-rail:not(:hover):not(:focus-within) :is(.gss-nav span, .gss-brand-name, .gss-nav ul, .gss-rail-foot) { display: none; }
	html.gss-rail-ferme[data-rail-mode="icones"] .gss-rail:not(:hover):not(:focus-within) .gss-nav summary::after { display: none; }
	html.gss-rail-ferme[data-rail-mode="icones"] .gss-rail:not(:hover):not(:focus-within) .gss-brand { padding-left: .95rem; padding-right: .5rem; }
}

/* Mobile : barre latérale en tiroir */
@media (max-width: 991.98px) {
	.gss-app { grid-template-columns: minmax(0, 1fr); }
	.gss-rail {
		position: fixed;
		inset: 0 auto 0 0;
		width: 272px;
		z-index: 1045;
		transform: translateX(-100%);
		transition: transform .2s ease;
		box-shadow: var(--gss-shadow-pop);
	}
	.gss-app.rail-open .gss-rail { transform: none; }
	.gss-app.rail-open::after {
		content: "";
		position: fixed;
		inset: 0;
		background: rgba(8, 12, 16, .45);
		z-index: 1040;
	}
	.gss-topbar .gss-rail-toggle { display: inline-flex; }
	.gss-topbar { padding: .5rem 1rem; gap: .6rem; }
	.gss-bay { padding: .5rem 1rem; }
	.gss-content { padding: 1rem 1rem 1.5rem; }
	.gss-title { font-size: 1.2rem; }
	.gss-subtitle { display: none; }
	.gss-user-name { display: none; }
	/* Boutons de la barre du haut : icônes seules (le libellé reste en info-bulle), la barre ne déborde pas */
	.gss-topbar-actions { flex-shrink: 1; min-width: 0; overflow-x: auto; scrollbar-width: none; }
	.gss-topbar-actions .btn:has(> .bi) > span { display: none; }
	.gss-topbar-actions .btn:has(> .bi) { --bs-btn-padding-x: .5rem; }
}

/* ---------- Boutons ---------- */
.btn {
	--bs-btn-font-weight: 500;
	--bs-btn-padding-y: .42rem;
	--bs-btn-padding-x: .85rem;
	--bs-btn-font-size: .92rem;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: .4rem;
}
.btn-primary {
	--bs-btn-bg: var(--gss-primary);
	--bs-btn-border-color: var(--gss-primary);
	--bs-btn-color: var(--gss-on-primary);
	--bs-btn-hover-bg: var(--gss-primary-hover);
	--bs-btn-hover-border-color: var(--gss-primary-hover);
	--bs-btn-hover-color: var(--gss-on-primary);
	--bs-btn-active-bg: var(--gss-primary-hover);
	--bs-btn-active-border-color: var(--gss-primary-hover);
	--bs-btn-active-color: var(--gss-on-primary);
	--bs-btn-disabled-bg: var(--gss-primary);
	--bs-btn-disabled-border-color: var(--gss-primary);
}
.btn-secondary {
	--bs-btn-bg: var(--gss-surface);
	--bs-btn-border-color: var(--gss-border-strong);
	--bs-btn-color: var(--gss-text);
	--bs-btn-hover-bg: var(--gss-surface-3);
	--bs-btn-hover-border-color: var(--gss-border-strong);
	--bs-btn-hover-color: var(--gss-text);
	--bs-btn-active-bg: var(--gss-surface-3);
	--bs-btn-active-color: var(--gss-text);
	--bs-btn-active-border-color: var(--gss-border-strong);
}
.btn-ghost {
	--bs-btn-bg: transparent;
	--bs-btn-border-color: transparent;
	--bs-btn-color: var(--gss-muted);
	--bs-btn-hover-bg: var(--gss-surface-3);
	--bs-btn-hover-color: var(--gss-text);
	--bs-btn-active-bg: var(--gss-surface-3);
	--bs-btn-active-color: var(--gss-text);
}
.btn-danger {
	--bs-btn-bg: var(--gss-danger);
	--bs-btn-border-color: var(--gss-danger);
	--bs-btn-hover-bg: color-mix(in srgb, var(--gss-danger) 85%, #000);
	--bs-btn-hover-border-color: color-mix(in srgb, var(--gss-danger) 85%, #000);
}
.btn-outline-danger { --bs-btn-color: var(--gss-danger); --bs-btn-border-color: var(--gss-danger); --bs-btn-hover-bg: var(--gss-danger); --bs-btn-hover-border-color: var(--gss-danger); }
.btn-icon { width: 36px; height: 36px; padding: 0; border-radius: 50%; }
.btn-icon .bi { font-size: 1.05rem; }
.btn-sm { --bs-btn-padding-y: .25rem; --bs-btn-padding-x: .6rem; --bs-btn-font-size: .84rem; }
.btn[aria-busy="true"] { pointer-events: none; opacity: .75; }

/* ---------- Cartes ---------- */
.gss-card {
	background: var(--gss-surface);
	border: 1px solid var(--gss-border);
	border-radius: var(--gss-radius);
	box-shadow: var(--gss-shadow);
	margin-bottom: 1.25rem;
	min-width: 0;
}
.gss-card-head {
	display: flex;
	flex-wrap: wrap;   /* actions sous le titre quand la place manque (téléphone) */
	align-items: flex-start;
	gap: .6rem 1rem;
	padding: .85rem 1.1rem;
	border-bottom: 1px solid var(--gss-border);
}
.gss-card-titles { flex: 1 1 15rem; min-width: 0; }
.gss-card-title { font-size: 1.08rem; margin: 0; display: flex; align-items: center; gap: .5rem; }
.gss-card-title .bi { color: var(--gss-primary); }
.gss-card-sub { color: var(--gss-muted); font-size: .85rem; margin: .15rem 0 0; }
.gss-card-actions { display: flex; flex-wrap: wrap; gap: .4rem; }
.gss-card-body { padding: 1rem 1.1rem; }
.gss-card-body.flush { padding: 0; }
.gss-card-foot {
	padding: .75rem 1.1rem;
	border-top: 1px solid var(--gss-border);
	background: var(--gss-surface-2);
	border-radius: 0 0 var(--gss-radius) var(--gss-radius);
	display: flex;
	gap: .5rem;
	align-items: center;
	flex-wrap: wrap;
}

/* ---------- Pastilles, messages, états vides ---------- */
.gss-badge {
	display: inline-flex;
	align-items: center;
	gap: .3rem;
	padding: .12rem .5rem;
	border-radius: 999px;
	font-size: .78rem;
	font-weight: 600;
	line-height: 1.4;
	white-space: nowrap;
	background: var(--gss-surface-3);
	color: var(--gss-muted);
}
.gss-badge-primary { background: var(--gss-primary-soft); color: var(--gss-primary); }
.gss-badge-success { background: var(--gss-success-soft); color: var(--gss-success); }
.gss-badge-warning { background: var(--gss-warning-soft); color: var(--gss-warning); }
.gss-badge-danger { background: var(--gss-danger-soft); color: var(--gss-danger); }
.gss-badge-info { background: var(--gss-info-soft); color: var(--gss-info); }
.gss-badge-accent { background: var(--gss-accent-soft); color: var(--gss-accent-ink); }

.gss-notice {
	display: flex;
	gap: .7rem;
	align-items: flex-start;
	padding: .75rem 1rem;
	border-radius: var(--gss-radius-sm);
	border: 1px solid transparent;
	margin-bottom: 1rem;
	font-size: .92rem;
}
.gss-notice > .bi { font-size: 1.1rem; line-height: 1.3; }
.gss-notice-info { background: var(--gss-info-soft); color: var(--gss-text); border-color: color-mix(in srgb, var(--gss-info) 25%, transparent); }
.gss-notice-info > .bi { color: var(--gss-info); }
.gss-notice-success { background: var(--gss-success-soft); border-color: color-mix(in srgb, var(--gss-success) 25%, transparent); }
.gss-notice-success > .bi { color: var(--gss-success); }
.gss-notice-warning { background: var(--gss-warning-soft); border-color: color-mix(in srgb, var(--gss-warning) 30%, transparent); }
.gss-notice-warning > .bi { color: var(--gss-warning); }
.gss-notice-danger { background: var(--gss-danger-soft); border-color: color-mix(in srgb, var(--gss-danger) 30%, transparent); }
.gss-notice-danger > .bi { color: var(--gss-danger); }

.gss-empty { text-align: center; padding: 2.5rem 1rem; color: var(--gss-muted); }
.gss-empty-icon { font-size: 2rem; color: var(--gss-faint); }
.gss-empty-title { font-weight: 600; color: var(--gss-text); margin: .5rem 0 .25rem; }
.gss-empty-text { margin: 0 auto; max-width: 36rem; }
.gss-empty-action { margin-top: 1rem; }

/* ---------- Tableaux ---------- */
.gss-table-wrap { overflow-x: auto; position: relative; }  /* relative : les libellés masqués (visually-hidden) restent dans le cadre */
.table {
	--bs-table-bg: transparent;
	--bs-table-color: var(--gss-text);
	--bs-table-border-color: var(--gss-border);
	--bs-table-striped-bg: var(--gss-surface-2);
	--bs-table-hover-bg: var(--gss-primary-soft);
	--bs-table-striped-color: var(--gss-text);
	--bs-table-hover-color: var(--gss-text);
	margin-bottom: 0;
}
.table > thead > tr > th,
.table > thead > tr > td {
	background: var(--gss-surface-2);
	color: var(--gss-muted);
	font-weight: 600;
	font-size: .8rem;
	letter-spacing: .01em;
	border-bottom-width: 1px;
	white-space: nowrap;
	vertical-align: middle;
}
.table > :not(caption) > * > * { padding: .5rem .75rem; vertical-align: middle; }
.gss-table-empty { text-align: center; color: var(--gss-muted); padding: 1.5rem !important; }
.gss-table td .gss-badge + .gss-badge { margin-left: .25rem; }

/* ---------- Formulaires ---------- */
.form-control,
.form-select {
	background-color: var(--gss-surface);
	border-color: var(--gss-border-strong);
	color: var(--gss-text);
}
.form-control:focus,
.form-select:focus { border-color: var(--gss-primary); box-shadow: 0 0 0 .2rem var(--bs-focus-ring-color); }
.form-label { font-weight: 600; font-size: .86rem; margin-bottom: .3rem; }
.form-text { color: var(--gss-muted); font-size: .8rem; }
.form-check-input:checked { background-color: var(--gss-primary); border-color: var(--gss-primary); }
.form-check-input:focus { box-shadow: 0 0 0 .2rem var(--bs-focus-ring-color); border-color: var(--gss-primary); }
.gss-field { margin-bottom: 1rem; }
.gss-field.is-invalid .form-control,
.gss-field.is-invalid .form-select { border-color: var(--gss-danger); }
.gss-field.is-invalid .invalid-feedback { display: block; color: var(--gss-danger); }
.gss-required { color: var(--gss-danger); }
.gss-form-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); column-gap: 1.1rem; }
.gss-form-grid .span-all { grid-column: 1 / -1; }

/* ---------- Onglets ---------- */
.gss-tabs {
	display: flex;
	gap: .25rem;
	border-bottom: 1px solid var(--gss-border);
	margin-bottom: 1.25rem;
	overflow-x: auto;
}
.gss-tab {
	border: 0;
	background: none;
	padding: .6rem .9rem;
	color: var(--gss-muted);
	font-weight: 600;
	border-bottom: 2px solid transparent;
	margin-bottom: -1px;
	white-space: nowrap;
	display: inline-flex;
	align-items: center;
	gap: .45rem;
}
.gss-tab:hover { color: var(--gss-text); }
.gss-tab.active { color: var(--gss-text); border-bottom-color: var(--gss-accent); }
.gss-tab-panel[hidden] { display: none !important; }

/* ---------- Notifications (toasts) ---------- */
.gss-toasts {
	position: fixed;
	right: 1rem;
	bottom: 1rem;
	z-index: 2000;
	display: flex;
	flex-direction: column;
	gap: .5rem;
	width: min(380px, calc(100vw - 2rem));
	pointer-events: none;
}
.gss-toast {
	pointer-events: auto;
	display: flex;
	gap: .65rem;
	align-items: flex-start;
	padding: .75rem .9rem;
	border-radius: var(--gss-radius);
	background: var(--gss-surface);
	color: var(--gss-text);
	border: 1px solid var(--gss-border);
	border-left: 4px solid var(--gss-info);
	box-shadow: var(--gss-shadow-pop);
	animation: gss-toast-in .18s ease-out;
}
.gss-toast.is-success { border-left-color: var(--gss-success); }
.gss-toast.is-error { border-left-color: var(--gss-danger); }
.gss-toast.is-warning { border-left-color: var(--gss-accent); }
.gss-toast > .bi { font-size: 1.1rem; line-height: 1.25; }
.gss-toast.is-success > .bi { color: var(--gss-success); }
.gss-toast.is-error > .bi { color: var(--gss-danger); }
.gss-toast.is-warning > .bi { color: var(--gss-accent); }
.gss-toast.is-info > .bi { color: var(--gss-info); }
.gss-toast-body { flex: 1; min-width: 0; font-size: .9rem; }
.gss-toast-title { font-weight: 600; display: block; }
.gss-toast-close { border: 0; background: none; color: var(--gss-faint); padding: 0 .1rem; line-height: 1; }
.gss-toast.is-leaving { opacity: 0; transform: translateY(6px); transition: opacity .2s, transform .2s; }
@keyframes gss-toast-in { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: none; } }

/* ---------- Menus déroulants, fenêtres ---------- */
.dropdown-menu {
	--bs-dropdown-bg: var(--gss-surface);
	--bs-dropdown-border-color: var(--gss-border);
	--bs-dropdown-link-color: var(--gss-text);
	--bs-dropdown-link-hover-bg: var(--gss-surface-3);
	--bs-dropdown-link-active-bg: var(--gss-primary);
	--bs-dropdown-font-size: .92rem;
	box-shadow: var(--gss-shadow-pop);
}
.modal {
	--bs-modal-bg: var(--gss-surface);
	--bs-modal-border-color: var(--gss-border);
	--bs-modal-header-border-color: var(--gss-border);
	--bs-modal-footer-border-color: var(--gss-border);
}
.modal-title, .modal-header h3 { font-size: 1.15rem; margin: 0; }

/* ---------- Accueil ---------- */
.gss-shortcuts {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(210px, 1fr));
	gap: .75rem;
	margin-bottom: 1.5rem;
}
.gss-shortcut {
	display: flex;
	gap: .8rem;
	align-items: flex-start;
	padding: .95rem 1rem;
	border-radius: var(--gss-radius);
	border: 1px solid var(--gss-border);
	background: var(--gss-surface);
	color: var(--gss-text);
	box-shadow: var(--gss-shadow);
	text-decoration: none !important;
	transition: border-color .12s ease, transform .12s ease;
}
.gss-shortcut:hover { border-color: var(--gss-primary); transform: translateY(-1px); }
.gss-shortcut .bi {
	font-size: 1.25rem;
	color: var(--gss-primary);
	width: 2.3rem;
	height: 2.3rem;
	display: grid;
	place-items: center;
	border-radius: var(--gss-radius-sm);
	background: var(--gss-primary-soft);
	flex-shrink: 0;
}
.gss-shortcut:first-child .bi { background: var(--gss-accent-soft); color: var(--gss-accent-ink); }
.gss-shortcut strong { display: block; font-family: var(--gss-font-cond); font-size: 1.08rem; font-weight: 600; }
.gss-shortcut span { display: block; color: var(--gss-muted); font-size: .84rem; line-height: 1.3; }

.gss-work-list { list-style: none; margin: 0; padding: 0; }
.gss-work-list li + li { border-top: 1px solid var(--gss-border); }
.gss-work-list a {
	display: grid;
	grid-template-columns: auto 1fr auto;
	gap: .85rem;
	align-items: center;
	padding: .65rem 1.1rem;
	color: var(--gss-text);
	text-decoration: none !important;
}
.gss-work-list a:hover { background: var(--gss-surface-2); }
.gss-work-list .gss-plate { pointer-events: none; }
.gss-work-client { min-width: 0; }
.gss-work-client strong { display: block; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.gss-work-client span { color: var(--gss-muted); font-size: .84rem; }

/* ---------- Matrice des droits ---------- */
.gss-perm-group { border: 1px solid var(--gss-border); border-radius: var(--gss-radius); margin-bottom: .85rem; background: var(--gss-surface); }
.gss-perm-head {
	display: flex;
	align-items: center;
	gap: .75rem;
	padding: .6rem .9rem;
	background: var(--gss-surface-2);
	border-bottom: 1px solid var(--gss-border);
	border-radius: var(--gss-radius) var(--gss-radius) 0 0;
}
.gss-perm-head h3 { font-size: 1rem; margin: 0; flex: 1; }
.gss-perm-count { font-size: .8rem; color: var(--gss-muted); }
.gss-perm-list { list-style: none; margin: 0; padding: .35rem 0; columns: 2 320px; column-gap: 0; }
.gss-perm-list li { break-inside: avoid; padding: .3rem .9rem; }
.gss-perm-list .form-check { margin: 0; }
.gss-perm-list .form-check-label { font-size: .92rem; }
.gss-perm-code { display: block; font-size: .72rem; color: var(--gss-faint); }
.gss-perm-inclut { display: block; font-size: .76rem; color: var(--gss-muted); }
.gss-perm-page { color: var(--gss-primary); font-size: .8rem; margin-left: .2rem; }
.gss-perm-new { color: var(--gss-accent-ink); background: var(--gss-accent-soft); border-radius: 3px; padding: 0 .3rem; font-size: .7rem; font-weight: 600; margin-left: .3rem; }
.gss-perm-disabled { opacity: .55; }

.gss-override { display: inline-flex; border: 1px solid var(--gss-border-strong); border-radius: var(--gss-radius-sm); overflow: hidden; flex-shrink: 0; }
.gss-override input { position: absolute; opacity: 0; pointer-events: none; }
.gss-override label { padding: .15rem .5rem; font-size: .76rem; cursor: pointer; color: var(--gss-muted); border-left: 1px solid var(--gss-border); }
.gss-override label:first-of-type { border-left: 0; }
.gss-override input:checked + label { background: var(--gss-surface-3); color: var(--gss-text); font-weight: 600; }
.gss-override input[value="1"]:checked + label { background: var(--gss-success-soft); color: var(--gss-success); }
.gss-override input[value="0"]:checked + label { background: var(--gss-danger-soft); color: var(--gss-danger); }
.gss-override input:focus-visible + label { outline: 2px solid var(--gss-primary); outline-offset: -2px; }
.gss-perm-row { display: flex; align-items: center; justify-content: space-between; gap: .75rem; }
.gss-perm-state { font-size: .74rem; color: var(--gss-muted); }
.gss-perm-state.is-on { color: var(--gss-success); }

.gss-sticky-actions {
	position: sticky;
	bottom: 0;
	z-index: 10;
	display: flex;
	gap: .5rem;
	align-items: center;
	flex-wrap: wrap;
	padding: .75rem 1rem;
	margin: 0 -1rem;
	background: color-mix(in srgb, var(--gss-bg) 92%, transparent);
	backdrop-filter: blur(6px);
	border-top: 1px solid var(--gss-border);
}

/* ---------- Configuration ---------- */
.gss-settings-row { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.2fr); gap: 1.25rem; padding: .9rem 0; border-bottom: 1px solid var(--gss-border); }
.gss-settings-row:last-child { border-bottom: 0; }
.gss-settings-row .gss-field { margin-bottom: 0; }
.gss-settings-label strong { display: block; }
.gss-settings-label p { color: var(--gss-muted); font-size: .84rem; margin: .15rem 0 0; }
.gss-settings-label .gss-badge { margin-top: .35rem; }
@media (max-width: 767.98px) { .gss-settings-row { grid-template-columns: 1fr; gap: .5rem; } }
.gss-volume-table td { padding: .25rem .4rem !important; }
.gss-volume-table input { max-width: 9rem; }
.gss-kv { display: grid; grid-template-columns: max-content 1fr; gap: .4rem 1.25rem; margin: 0; font-size: .9rem; }
.gss-kv dt { color: var(--gss-muted); font-weight: 500; }
.gss-kv dd { margin: 0; overflow-wrap: anywhere; }

/* ---------- Calendrier de présence ---------- */
.gss-calendar-title { margin: .5rem 0 .75rem; }
.gss-calendar-grid { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 4px; }
.gss-calendar-head { text-align: center; font-weight: 600; font-size: .85rem; color: var(--gss-muted); padding: .3rem 0; }
.gss-calendar-day {
	min-height: 76px;
	border: 1px solid var(--gss-border);
	border-radius: var(--gss-radius-sm);
	background: var(--gss-surface);
	padding: .3rem .4rem;
	display: flex;
	flex-direction: column;
	gap: .15rem;
}
.gss-calendar-day.is-other { background: var(--gss-surface-2); opacity: .55; }
.gss-calendar-day.has-time { border-color: color-mix(in srgb, var(--gss-primary) 45%, var(--gss-border)); }
.gss-calendar-num { font-family: var(--gss-font-cond); font-weight: 600; font-size: .9rem; color: var(--gss-muted); }
.gss-calendar-time { font-size: .78rem; background: var(--gss-primary-soft); color: var(--gss-primary); border-radius: 3px; padding: 0 .3rem; align-self: flex-start; }
.gss-calendar-details { margin-top: 1rem; }
.gss-calendar-details summary { cursor: pointer; font-weight: 600; margin-bottom: .5rem; }

/* ---------- Connexion ---------- */
.gss-login {
	min-height: 100vh;
	display: grid;
	grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr);
	background: var(--gss-surface);
}
.gss-login-side {
	background: var(--gss-rail);
	color: var(--gss-rail-text);
	padding: 3rem clamp(2rem, 5vw, 4.5rem);
	display: flex;
	flex-direction: column;
	justify-content: space-between;
	position: relative;
	overflow: hidden;
}
.gss-login-side::after {
	/* Rappel discret des bandes de signalisation */
	content: "";
	position: absolute;
	right: -60px;
	bottom: -60px;
	width: 260px;
	height: 260px;
	background: repeating-linear-gradient(-45deg, var(--gss-accent) 0 14px, transparent 14px 28px);
	opacity: .12;
	border-radius: 50%;
}
.gss-login-mark { font-family: var(--gss-font-cond); font-weight: 700; font-size: clamp(3.5rem, 8vw, 5.5rem); line-height: .9; color: #fff; letter-spacing: .03em; }
.gss-login-mark span { color: var(--gss-accent); }
.gss-login-tagline { font-size: 1.05rem; max-width: 26rem; margin-top: 1rem; color: var(--gss-rail-text); }
.gss-login-foot { font-size: .8rem; color: var(--gss-rail-muted); }
.gss-login-main { display: grid; place-items: center; padding: 2rem 1.25rem; }
.gss-login-form { width: min(380px, 100%); }
.gss-login-form h1 { font-size: 1.7rem; margin-bottom: .35rem; }
.gss-login-bismi { font-size: 1.15rem; color: var(--gss-muted); margin-bottom: 1.75rem; }
.gss-login-form .form-control { padding: .6rem .8rem; font-size: 1rem; }
.gss-login-form .btn { width: 100%; padding: .65rem 1rem; font-size: 1rem; }
@media (max-width: 767.98px) {
	.gss-login { grid-template-columns: 1fr; }
	.gss-login-side { padding: 1.5rem 1.25rem; min-height: auto; }
	.gss-login-mark { font-size: 3rem; }
	.gss-login-tagline, .gss-login-foot { display: none; }
}

/* ---------- Page d'erreur ---------- */
.gss-error { min-height: 100vh; display: grid; place-items: center; padding: 2rem 1rem; }
.gss-error-box { max-width: 30rem; }
.gss-error-code { font-family: var(--gss-font-cond); font-weight: 700; font-size: 4.5rem; line-height: 1; color: var(--gss-accent); }

/* ---------- Listes DataTables (pages modernes et anciennes) ---------- */
.dataTables_wrapper { padding: .5rem .75rem .75rem; }
.dataTables_wrapper .dataTables_filter input,
.dataTables_wrapper .dataTables_length select,
.dataTables_wrapper .dataTables_length input { margin-left: .35rem; }
.dataTables_wrapper .dataTables_info { color: var(--gss-muted); font-size: .85rem; padding-top: .35rem; }
.dataTables_wrapper .pagination { margin: 0; flex-wrap: wrap; }
.dataTables_wrapper .dataTables_paginate { padding-top: .35rem; }
.dataTables_wrapper table.dataTable { margin: .35rem 0 !important; }
.dataTables_processing {
	background: var(--gss-surface) !important;
	color: var(--gss-text);
	border: 1px solid var(--gss-border);
	border-radius: var(--gss-radius-sm);
	box-shadow: var(--gss-shadow-pop);
}
.page-link { --bs-pagination-bg: var(--gss-surface); --bs-pagination-color: var(--gss-primary); --bs-pagination-border-color: var(--gss-border); --bs-pagination-active-bg: var(--gss-primary); --bs-pagination-active-border-color: var(--gss-primary); }
.pagination { --bs-pagination-bg: var(--gss-surface); --bs-pagination-color: var(--gss-primary); --bs-pagination-border-color: var(--gss-border); --bs-pagination-active-bg: var(--gss-primary); --bs-pagination-active-border-color: var(--gss-primary); --bs-pagination-disabled-bg: var(--gss-surface-2); --bs-pagination-hover-bg: var(--gss-surface-3); --bs-pagination-font-size: .85rem; }

/* ---------- Boutons d'action des listes (UI::action) ---------- */
.gss-acts { display: inline-flex; align-items: center; gap: .3rem; flex-wrap: nowrap; }
.gss-act {
	--act: var(--gss-muted);
	--act-soft: var(--gss-surface-3);
	display: inline-grid; place-items: center;
	width: 2rem; height: 2rem; padding: 0;
	border: 1px solid var(--gss-border); border-radius: var(--gss-radius-sm);
	background: var(--gss-surface); color: var(--act);
	font-size: 1rem; line-height: 1; cursor: pointer; text-decoration: none;
	transition: background-color .12s, border-color .12s, color .12s;
}
.gss-act:hover, .gss-act:focus-visible { background: var(--act-soft); border-color: var(--act); color: var(--act); }
.gss-act:focus-visible { outline: 2px solid var(--act); outline-offset: 1px; }
.gss-act[aria-busy="true"], .gss-act:disabled { opacity: .5; pointer-events: none; }
.gss-act-primary { --act: var(--gss-primary); --act-soft: var(--gss-primary-soft); }
.gss-act-success { --act: var(--gss-success); --act-soft: var(--gss-success-soft); }
.gss-act-warning { --act: var(--gss-warning); --act-soft: var(--gss-warning-soft); }
.gss-act-danger  { --act: var(--gss-danger);  --act-soft: var(--gss-danger-soft); }
.gss-act-info    { --act: var(--gss-info);    --act-soft: var(--gss-info-soft); }
.gss-act-accent  { --act: var(--gss-accent-ink); --act-soft: var(--gss-accent-soft); }
td .gss-acts, th .gss-acts, th > .gss-act { vertical-align: middle; }
th > .gss-acts, th > .gss-act { margin-left: .35rem; }
/* Colonne d'actions : aussi étroite que ses boutons, sans retour à la ligne */
td:has(> .gss-acts), td:has(> .gss-row-tools) { width: 1%; white-space: nowrap; }
.gss-row-tools { display: flex; align-items: center; gap: .4rem; flex-wrap: nowrap; }
.gss-flag { display: inline-grid; place-items: center; width: 1.4rem; height: 1.4rem; font-size: .95rem; cursor: help; }
.gss-flag.is-ok { color: var(--gss-success); }
.gss-flag.is-todo { color: var(--gss-warning); }

/* ---------- Aperçu du ticket (Impression) : papier blanc dans les deux thèmes ---------- */
.gss-ticket {
	--cols: 48;
	width: calc(var(--cols) * 1ch + 2.5rem); max-width: 100%;
	margin: 0 auto; padding: 1.25rem 1.25rem .5rem;
	background: #fff; color: #111; border-radius: 4px;
	box-shadow: 0 1px 3px rgba(0, 0, 0, .18), 0 8px 24px rgba(0, 0, 0, .08);
	font-family: ui-monospace, "Cascadia Mono", Consolas, "Liberation Mono", Menlo, monospace;
	font-size: .8rem; line-height: 1.35; overflow-x: auto;
}
/* Sur téléphone, les caractères rétrécissent pour que toute la largeur du papier reste visible */
.gss-ticket-zone { container-type: inline-size; }
@container (max-width: 34rem) {
	.gss-ticket { font-size: max(.45rem, calc((100cqi - 2.5rem) / var(--cols) / .62)); padding-inline: 1rem; width: 100%; }
	.gss-ticket-cut { margin-inline: -1rem; }
}
.gss-ticket-line { white-space: pre; min-height: 1.35em; }
.gss-ticket-line.is-bold { font-weight: 700; }
.gss-ticket-line.is-large { font-weight: 800; font-size: 1.05em; }
.gss-ticket-logo { display: block; margin: 0 auto .5rem; max-width: 100%; image-rendering: pixelated; }
.gss-ticket-cut { margin: .75rem -1.25rem 0; border-top: 2px dashed #b9c3cd; }
.gss-logo-box { display: grid; grid-template-columns: minmax(10rem, 14rem) 1fr; gap: 1.25rem; align-items: start; }
.gss-logo-preview { display: grid; place-items: center; min-height: 7rem; padding: .75rem; background: #fff; border: 1px dashed var(--gss-border-strong); border-radius: var(--gss-radius-sm); }
.gss-logo-preview img { max-width: 100%; image-rendering: pixelated; }
.gss-logo-actions form { display: grid; gap: .75rem; }
@media (max-width: 575.98px) { .gss-logo-box { grid-template-columns: 1fr; } }

/* ---------- Choix du thème (Mon compte) ---------- */
.gss-theme-choice { display: grid; gap: .6rem; }
.gss-theme-option { display: block; cursor: pointer; margin: 0; }
.gss-theme-option input { position: absolute; opacity: 0; pointer-events: none; }
.gss-theme-option-body {
	display: grid; grid-template-columns: 1.6rem 1fr; column-gap: .6rem; align-items: center;
	padding: .7rem .9rem; border: 1px solid var(--gss-border); border-radius: var(--gss-radius);
	background: var(--gss-surface); transition: border-color .15s, box-shadow .15s;
}
.gss-theme-option-body .bi { grid-row: span 2; font-size: 1.25rem; color: var(--gss-muted); }
.gss-theme-option-body small { color: var(--gss-muted); grid-column: 2; }
.gss-theme-option:hover .gss-theme-option-body { border-color: var(--gss-border-strong); }
.gss-theme-option input:checked + .gss-theme-option-body { border-color: var(--gss-primary); box-shadow: 0 0 0 1px var(--gss-primary); }
.gss-theme-option input:checked + .gss-theme-option-body .bi { color: var(--gss-primary); }
.gss-theme-option input:focus-visible + .gss-theme-option-body { outline: 2px solid var(--gss-primary); outline-offset: 2px; }

/* ---------- Volumes des liquides (Configuration) ---------- */
.gss-volume-map { max-width: 34rem; }
.gss-volume-map .table td { padding: .25rem .35rem; }

/* ---------- Impression ---------- */
@media print {
	.gss-rail, .gss-topbar, .gss-bay, .gss-footer, .gss-toasts, .gss-sticky-actions, .no-print { display: none !important; }
	.gss-app { display: block; }
	.gss-content { padding: 0; }
	body { background: #fff; color: #000; }
}

/* ---------- Liste à saisie (GSS.remoteSelect) ---------- */
.gss-remote { position: relative; display: inline-block; width: min(100%, 26rem); vertical-align: middle; margin: 0 .35rem .35rem 0; }
.gss-remote-menu {
	position: absolute; z-index: 1060; top: calc(100% + 2px); left: 0; right: 0; max-height: 18rem; overflow-y: auto;
	background: var(--gss-surface); border: 1px solid var(--gss-border-strong); border-radius: var(--gss-radius-sm); box-shadow: var(--gss-shadow-pop);
}
.gss-remote-item { display: block; width: 100%; text-align: left; border: 0; background: none; padding: .4rem .65rem; color: var(--gss-text); font-size: .9rem; }
.gss-remote-item:hover, .gss-remote-item.active { background: var(--gss-primary-soft); }
.gss-remote-new { color: var(--gss-primary); font-weight: 600; }
.gss-remote-empty { padding: .45rem .65rem; color: var(--gss-muted); font-size: .88rem; }
.gss-remote-entete { padding: .4rem .65rem .2rem; color: var(--gss-muted); font-size: .78rem; font-weight: 600; border-top: 1px solid var(--gss-border); }
.gss-remote-entete:first-child { border-top: 0; }
.gss-remote-proche { box-shadow: inset 3px 0 0 var(--gss-warning); }

/* Véhicules au matricule identique ou proche (caméra, saisie) : fenêtre de choix et encadré sous le matricule */
.gss-proche { display: flex; align-items: center; justify-content: space-between; gap: .75rem; flex-wrap: wrap; padding: .55rem 0; border-top: 1px solid var(--gss-border); }
.gss-proche:first-of-type { border-top: 0; }
.gss-proche-info { min-width: 0; flex: 1 1 14rem; }
.gss-proche-info .gss-bon-plaque { margin-left: 0; margin-right: .35rem; }
.gss-proche-info mark { padding: 0 .05em; border-radius: 2px; background: var(--gss-warning-soft); color: inherit; box-shadow: inset 0 -2px 0 var(--gss-warning); }
.gss-proche-actions { display: flex; gap: .4rem; flex-wrap: wrap; }
.gss-proches { grid-column: 1 / -1; padding: .6rem .8rem; border: 1px solid var(--gss-warning); border-radius: var(--gss-radius-sm); background: var(--gss-warning-soft); }
.gss-proches.is-exact { border-color: var(--gss-danger); background: var(--gss-danger-soft); }
.gss-proches-titre { margin: 0 0 .25rem; font-size: .88rem; font-weight: 600; }
.gss-proches .gss-proche { border-top-color: color-mix(in srgb, var(--gss-warning) 35%, transparent); }

/* ---------- Fenêtre de modification : jours de la semaine ---------- */
.gss-jours { display: flex; flex-wrap: wrap; gap: .35rem; }
.gss-jour { position: relative; margin: 0; cursor: pointer; }
.gss-jour input { position: absolute; opacity: 0; pointer-events: none; }
.gss-jour span {
	display: inline-grid; place-items: center; min-width: 3.1rem; padding: .35rem .5rem; font-size: .85rem; font-weight: 600;
	border: 1px solid var(--gss-border-strong); border-radius: var(--gss-radius-sm); background: var(--gss-surface); color: var(--gss-muted);
}
.gss-jour input:checked + span { background: var(--gss-primary); border-color: var(--gss-primary); color: #fff; }
.gss-jour input:focus-visible + span { outline: 2px solid var(--gss-primary); outline-offset: 1px; }

/* ---------- Barre de filtres d'une liste ---------- */
.gss-filtres { display: flex; flex-wrap: wrap; align-items: center; gap: .6rem 1rem; padding: .75rem 1rem; border-bottom: 1px solid var(--gss-border); }
.gss-filtre { display: inline-flex; align-items: center; gap: .45rem; margin: 0; font-size: .85rem; color: var(--gss-muted); }
.gss-filtre .form-select { width: auto; min-width: 10rem; }
.gss-seg { display: inline-flex; border: 1px solid var(--gss-border-strong); border-radius: var(--gss-radius-sm); overflow: hidden; }
.gss-seg button {
	display: inline-flex; align-items: center; gap: .4rem; padding: .3rem .75rem; border: 0; background: var(--gss-surface);
	color: var(--gss-muted); font-size: .85rem; font-weight: 600;
}
.gss-seg button + button { border-left: 1px solid var(--gss-border-strong); }
.gss-seg button[aria-pressed="true"] { background: var(--gss-primary); color: #fff; }
.gss-seg button:focus-visible { outline: 2px solid var(--gss-primary); outline-offset: -2px; }
.gss-seg-n { display: inline-grid; place-items: center; min-width: 1.4rem; padding: 0 .3rem; border-radius: 999px; background: var(--gss-primary-soft); color: var(--gss-primary); font-size: .75rem; }
.gss-seg button[aria-pressed="true"] .gss-seg-n { background: rgba(255, 255, 255, .25); color: #fff; }
.gss-jour-pastille {
	display: inline-block; padding: .05rem .4rem; margin: 0 .1rem .1rem 0; border-radius: var(--gss-radius-sm);
	background: var(--gss-primary-soft); color: var(--gss-primary); font-size: .78rem; font-weight: 600;
}
.gss-table tr.gss-row-muted > td { color: var(--gss-muted); }
.gss-table tr.gss-row-muted > td strong { color: inherit; }

/* ---------- Caisse : soldes, suivi, fenêtres ---------- */
.gss-montant-plus { color: var(--gss-success); font-variant-numeric: tabular-nums; }
.gss-montant-moins { color: var(--gss-danger); font-variant-numeric: tabular-nums; }
.gss-soldes { display: grid; grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); gap: 1rem; margin-bottom: 1.25rem; }
.gss-solde {
	display: flex; flex-direction: column; gap: .55rem; padding: 1rem 1.1rem; background: var(--gss-surface);
	border: 1px solid var(--gss-border); border-radius: var(--gss-radius); box-shadow: var(--gss-shadow);
}
.gss-solde header { display: flex; align-items: center; gap: .55rem; }
.gss-solde h2 { margin: 0; font-size: 1rem; font-weight: 700; }
.gss-solde-icone { display: inline-grid; place-items: center; width: 2rem; height: 2rem; border-radius: 50%; background: var(--gss-primary-soft); color: var(--gss-primary); }
.gss-solde-nature { margin-left: auto; font-size: .78rem; color: var(--gss-muted); }
.gss-solde-montant { margin: 0; font-family: var(--gss-font-cond); font-size: 1.75rem; font-weight: 700; font-variant-numeric: tabular-nums; line-height: 1.1; }
.gss-solde-montant small { font-size: .9rem; font-weight: 600; color: var(--gss-muted); }
.gss-solde-montant.is-negatif { color: var(--gss-danger); }
.gss-solde dl { margin: 0; display: grid; gap: .25rem; font-size: .85rem; }
.gss-solde dl > div { display: flex; justify-content: space-between; gap: .5rem; flex-wrap: wrap; }
.gss-solde dt { font-weight: 500; color: var(--gss-muted); }
.gss-solde dd { margin: 0; text-align: right; }
.gss-solde footer { margin-top: auto; padding-top: .35rem; border-top: 1px dashed var(--gss-border); font-size: .85rem; }
.gss-solde-total { background: var(--gss-primary-soft); border-color: transparent; }
.gss-solde-total .gss-solde-icone { background: var(--gss-surface); }
.gss-filtre input[type=date] { width: auto; }
.gss-suivi-grille { display: grid; gap: 1rem; padding: 1rem; }
.gss-suivi-totaux { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: .75rem; }
.gss-suivi-totaux > div { display: flex; flex-direction: column; gap: .15rem; padding: .6rem .8rem; border: 1px solid var(--gss-border); border-radius: var(--gss-radius-sm); }
.gss-suivi-totaux span { font-size: .8rem; color: var(--gss-muted); }
.gss-suivi-totaux strong { font-size: 1.15rem; font-variant-numeric: tabular-nums; }
.gss-suivi-types, .gss-suivi-soldes { margin: 0; }
.gss-suivi[aria-busy="true"] { opacity: .6; transition: opacity .2s; }
.gss-lien { padding: 0; border: 0; background: none; color: var(--gss-primary); font-weight: 600; text-align: left; }
.gss-lien:hover { text-decoration: underline; }
.gss-natures { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .4rem; }
.gss-nature { position: relative; margin: 0; cursor: pointer; }
.gss-nature input { position: absolute; opacity: 0; pointer-events: none; }
.gss-nature span {
	display: flex; align-items: center; gap: .45rem; height: 100%; padding: .5rem .65rem; border: 1px solid var(--gss-border-strong);
	border-radius: var(--gss-radius-sm); background: var(--gss-surface); font-size: .88rem; font-weight: 600;
}
.gss-nature input:checked + span { border-color: var(--gss-primary); background: var(--gss-primary-soft); color: var(--gss-primary); }
.gss-nature input:focus-visible + span { outline: 2px solid var(--gss-primary); outline-offset: 1px; }
.gss-arrete-attendu { margin: -.25rem 0 .9rem; color: var(--gss-muted); }
.gss-arrete-ecart { margin: -.4rem 0 .9rem; padding: .45rem .65rem; border-radius: var(--gss-radius-sm); font-weight: 600; }
.gss-arrete-ecart.is-juste { background: var(--gss-success-soft); color: var(--gss-success); }
.gss-arrete-ecart.is-plus { background: var(--gss-warning-soft); color: var(--gss-warning); }
.gss-arrete-ecart.is-moins { background: var(--gss-danger-soft); color: var(--gss-danger); }
@media (max-width: 575.98px) { .gss-natures { grid-template-columns: 1fr; } }
.gss-lien-tiers { margin: .35rem 0 0; font-size: .85rem; }
.gss-lien-tiers a { font-weight: 600; }
.gss-seg-sm button { padding: .22rem .6rem; font-size: .8rem; }
.gss-filtre-puce {
	display: inline-flex; align-items: center; gap: .4rem; padding: .2rem .35rem .2rem .65rem; border-radius: 999px;
	background: var(--gss-primary-soft); color: var(--gss-primary); font-size: .82rem; font-weight: 600;
}
.gss-filtre-puce .btn-close { width: .55rem; height: .55rem; padding: .2rem; background-size: .55rem; }
.gss-filtre-puce[hidden] { display: none; }

/* ---------- Grille de deux cartes ---------- */
.gss-grid-2 { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 460px), 1fr)); gap: 0 1.25rem; align-items: start; }
.gss-table tr.is-selected > td { background: var(--gss-primary-soft); }
.gss-calendar-day.is-repos { background: color-mix(in srgb, var(--gss-muted) 8%, var(--gss-surface)); }
.gss-calendar-day.is-today { outline: 2px solid var(--gss-primary); outline-offset: -2px; }
.gss-calendar-day.has-avance { border-color: color-mix(in srgb, var(--gss-danger) 45%, var(--gss-border)); }
.gss-calendar-num small { font-weight: 500; font-size: .7rem; color: var(--gss-faint); }
.gss-calendar-avance, .gss-calendar-repos { font-size: .78rem; border-radius: 3px; padding: 0 .3rem; align-self: flex-start; }
.gss-calendar-avance { background: var(--gss-danger-soft); color: var(--gss-danger); font-weight: 600; }
.gss-calendar-repos { background: color-mix(in srgb, var(--gss-muted) 12%, var(--gss-surface)); color: var(--gss-muted); }
.gss-calendar-legende { margin: .75rem 0 0; font-size: .8rem; color: var(--gss-muted); }

/* ---------- Tableau de bord ---------- */
/* Couleurs des graphiques (palette de référence validée : accent bleu, comparaison en gris, 2e série orange) */
:root { --viz-a: #2a78d6; --viz-b: #898781; --viz-2: #eb6834; --viz-grille: var(--gss-border); }
[data-bs-theme="dark"] { --viz-a: #3987e5; --viz-b: #898781; --viz-2: #d95926; --viz-grille: var(--gss-border); }
.gss-tableau-barre { margin-bottom: 1rem; background: var(--gss-surface); border: 1px solid var(--gss-border); border-radius: var(--gss-radius); }
.gss-tableau-barre .gss-filtres { border-bottom: 0; }
.gss-tableau { transition: opacity .2s; }
.gss-tableau.is-loading { opacity: .55; }
.gss-tableau-section { margin-bottom: 1.25rem; }
.gss-tableau-titre { display: flex; align-items: center; gap: .45rem; margin: 0 0 .6rem; font-size: 1rem; font-weight: 700; }
.gss-tableau-titre .bi { color: var(--gss-primary); }
.gss-kpis { display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: .75rem; }
.gss-kpi {
	display: flex; flex-direction: column; gap: .2rem; padding: .8rem .95rem; background: var(--gss-surface);
	border: 1px solid var(--gss-border); border-radius: var(--gss-radius); box-shadow: var(--gss-shadow);
}
.gss-kpi-label { font-size: .82rem; color: var(--gss-muted); }
.gss-kpi-valeur { font-size: 1.35rem; font-weight: 700; line-height: 1.2; }
.gss-kpi-delta { display: flex; flex-wrap: wrap; align-items: baseline; gap: .25rem .4rem; font-size: .8rem; }
.gss-kpi-ecart { font-weight: 700; }
.gss-kpi-ref { color: var(--gss-muted); font-size: .78rem; }
.gss-kpi-delta.is-bon .bi, .gss-kpi-delta.is-bon .gss-kpi-ecart { color: var(--gss-success); }
.gss-kpi-delta.is-mauvais .bi, .gss-kpi-delta.is-mauvais .gss-kpi-ecart { color: var(--gss-danger); }
.gss-kpi-delta.is-neutre .bi, .gss-kpi-delta.is-neutre .gss-kpi-ecart { color: var(--gss-text); }
.gss-graphiques { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 480px), 1fr)); gap: 0 1.25rem; }
.gss-graphique-zone { position: relative; height: 290px; }
.gss-graphique-donnees { margin-top: .75rem; font-size: .85rem; }
.gss-graphique-donnees summary { cursor: pointer; color: var(--gss-muted); font-weight: 600; }
.gss-graphique-donnees .gss-table-wrap { max-height: 280px; overflow: auto; margin-top: .5rem; }

/* ---------- Bandeau de mise à jour (temps réel) ---------- */
.gss-avis-maj {
	position: fixed; left: 50%; bottom: 1.25rem; transform: translateX(-50%); z-index: 1080;
	display: flex; align-items: center; gap: .65rem; max-width: calc(100vw - 2rem); padding: .55rem .6rem .55rem 1rem;
	background: var(--gss-surface); color: var(--gss-text); border: 1px solid var(--gss-border); border-radius: 999px; box-shadow: var(--gss-shadow-pop);
	font-size: .9rem;
}
.gss-avis-maj[hidden] { display: none; }
.gss-avis-maj > .bi { color: var(--gss-primary); }
.gss-avis-maj .btn { border-radius: 999px; }

/* ---------- Lot 4 ---------- */
/* Achats : article présélectionné (?article=ID) */
.gss-article-choisi {
	display: flex; flex-wrap: wrap; align-items: center; gap: .5rem;
	padding: .55rem .9rem; border-bottom: 1px solid var(--gss-border); background: var(--gss-surface-2);
}
.gss-article-choisi .btn { margin-left: auto; }

/* Opérations d'un employé : sélecteur du mois */
.gss-ops-entete { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem 1rem; margin-bottom: .5rem; }
.gss-ops-entete h5 { margin: 0; }
.gss-ops-mois { display: inline-flex; align-items: center; gap: .45rem; margin: 0; }
.gss-ops-mois span { font-size: .85rem; color: var(--gss-muted); }
.gss-ops-mois input { width: auto; }

/* Fenêtre de confirmation détaillée (GSS.confirmer) */
.gss-confirmer-details {
	display: grid; grid-template-columns: max-content minmax(0, 1fr); gap: .3rem 1rem;
	margin: 0 0 .75rem; padding: .7rem .9rem; border: 1px solid var(--gss-border); border-radius: var(--gss-radius-sm);
	background: var(--gss-surface-2);
}
.gss-confirmer-details dt { font-weight: 500; color: var(--gss-muted); }
.gss-confirmer-details dd { margin: 0; overflow-wrap: anywhere; }
.gss-confirmer-effets { margin: 0 0 .5rem; padding-left: 1.2rem; }
.gss-confirmer-avert { margin: 0; color: var(--gss-danger, #b42318); }

/* Bon : partie de la note saisie à la réception (figée tant que le bon est en cours) */
.gss-note-figee {
	display: flex; gap: .5rem; align-items: flex-start;
	margin-bottom: .4rem; padding: .45rem .65rem;
	border: 1px dashed var(--gss-border); border-radius: var(--gss-radius-sm);
	background: var(--gss-surface-2); color: var(--gss-text, inherit); font-size: .9rem;
}
.gss-note-figee .bi { color: var(--gss-muted); margin-top: .1rem; }

/* Fenêtres de modification : groupe de cases à cocher (type « cases ») */
.gss-cases { display: grid; grid-template-columns: repeat(auto-fill, minmax(15rem, 1fr)); gap: .25rem 1rem; }
.gss-cases .form-check { margin: 0; }
.gss-field-cases { min-width: 0; }
.gss-field-cases > legend { float: none; width: auto; margin-bottom: .35rem; padding: 0; font-size: inherit; }
.gss-field-cases .gss-cases { grid-template-columns: repeat(auto-fill, minmax(min(15rem, 100%), 1fr)); }
.gss-equipe { display: flex; flex-wrap: wrap; gap: .2rem 1rem; }

/* Filtres : choix multiple (Filtres « choix ») */
.gss-choix-bouton { min-width: 11rem; max-width: 16rem; text-align: left; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.gss-choix-menu { padding: .5rem; min-width: 16rem; }
.gss-choix-menu > input { margin-bottom: .4rem; }
.gss-choix-liste { max-height: 16rem; overflow-y: auto; margin-bottom: .35rem; }
.gss-choix-liste .form-check { display: flex; gap: .45rem; align-items: center; margin: 0; padding: .2rem .25rem; border-radius: var(--gss-radius-sm); }
.gss-choix-liste .form-check:hover { background: var(--gss-surface-2); }
.gss-choix-liste .form-check-input { margin: 0; flex-shrink: 0; }

/* Calendrier : jours d'événement et journées de durée spéciale (ajustements du temps dû) */
.gss-calendar-ajuste { font-size: .74rem; border-radius: 3px; padding: 0 .3rem; align-self: flex-start; background: var(--gss-info-soft); color: var(--gss-info); font-weight: 600; max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.gss-calendar-ajuste.is-duree { background: var(--gss-warning-soft); color: var(--gss-warning); }
.gss-calendar-day.is-evenement { background: color-mix(in srgb, var(--gss-info) 7%, var(--gss-surface)); }
.gss-ajustements-form { display: grid; grid-template-columns: repeat(auto-fill, minmax(11rem, 1fr)); gap: .6rem 1rem; align-items: end; }
.gss-ajustements-form .span-all { grid-column: 1 / -1; }
.gss-field[hidden] { display: none !important; }

/* Codes-barres : champ de scan, fenêtres */
.gss-scan { display: flex; flex-wrap: wrap; align-items: center; gap: .4rem; margin: 0; }
.gss-scan-champ { position: relative; display: block; margin: 0; flex: 1 1 14rem; max-width: 22rem; }
.gss-scan-champ .bi { position: absolute; left: .6rem; top: 50%; transform: translateY(-50%); color: var(--gss-muted); pointer-events: none; }
.gss-scan-champ input { padding-left: 2rem; font-family: var(--gss-font-mono, ui-monospace, monospace); }
.gss-scan[aria-busy="true"] input { opacity: .6; }
.gss-scan-barre { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem 1rem; padding: .6rem .9rem; border-bottom: 1px solid var(--gss-border); background: var(--gss-surface-2); }
.gss-scan-barre .gss-scan-aide { font-size: .8rem; color: var(--gss-muted); }
.gss-scan-video { width: 100%; max-height: 60vh; border-radius: var(--gss-radius-sm); background: #000; }
.gss-codes-associer { margin-top: 1rem; padding-top: .75rem; border-top: 1px solid var(--gss-border); }
.gss-codes-ajout { display: flex; flex-wrap: wrap; gap: .4rem; margin-top: .75rem; }
.gss-codes-ajout input { flex: 1 1 10rem; }
.gss-scan .gss-scan-champ input.form-control { padding-left: 2rem !important; width: 100%; max-width: none; margin: 0; }
.gss-codes-associer .form-label { display: block; }
.gss-codes-associer .gss-remote { max-width: 32rem; }
.gss-codes-associer [data-codes-libelle] { max-width: 32rem; }
#gss-codes .modal-dialog-scrollable .modal-content { overflow: visible; }
#gss-codes .modal-dialog-scrollable .modal-body { overflow-y: visible; }

/* Pièces jointes (style/app/pieces.js) */
.gss-pieces { list-style: none; margin: 0 0 .75rem; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 17rem), 1fr)); gap: .5rem; }
.gss-piece { display: flex; align-items: center; gap: .6rem; padding: .4rem; border: 1px solid var(--gss-border); border-radius: var(--gss-radius-sm); background: var(--gss-surface); min-width: 0; }
.gss-piece-vignette { flex: 0 0 3.25rem; height: 3.25rem; border-radius: 4px; overflow: hidden; display: flex; align-items: center; justify-content: center; background: var(--gss-surface-2); }
.gss-piece-vignette img { width: 100%; height: 100%; object-fit: cover; }
.gss-piece-vignette.is-doc .bi { font-size: 1.6rem; color: var(--gss-muted); }
.gss-piece-info { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; }
.gss-piece-nom { font-weight: 500; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.gss-pieces-depot { display: flex; flex-direction: column; align-items: center; gap: .2rem; padding: 1rem; margin: 0 0 .5rem; border: 2px dashed var(--gss-border); border-radius: var(--gss-radius); color: var(--gss-text); cursor: pointer; text-align: center; }
.gss-pieces-depot .bi { font-size: 1.5rem; color: var(--gss-primary); }
.gss-pieces-depot:hover, .gss-pieces-depot:focus, .gss-pieces-depot.is-survol { border-color: var(--gss-primary); background: var(--gss-primary-soft); outline: none; }
.gss-pieces-photo { display: none; }
@media (pointer: coarse) { .gss-pieces-photo { display: inline-flex; } }
.gss-pieces-progression { height: 4px; margin-top: .5rem; background: var(--gss-surface-2); border-radius: 2px; overflow: hidden; }
.gss-pieces-progression > div { height: 100%; width: 0; background: var(--gss-primary); transition: width .2s; }

/* ---------- Factures (style/app/factures.js) ---------- */
.gss-fiche-intro { margin: 0 0 .75rem; }
.gss-fac-numero { display: flex; flex-wrap: wrap; gap: .4rem; align-items: center; margin: 0; }
.gss-fac-numero input { width: 11rem; }
.gss-fac-selection { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .5rem 1rem; padding: .6rem 0 .75rem; }
.gss-fac-encours { margin-top: .75rem; font-size: .9rem; }
.gss-fac-encours summary { cursor: pointer; color: var(--gss-muted); }
.gss-fac-encours ul { margin: .4rem 0 0; padding-left: 1.2rem; }
.gss-fac-totaux { display: flex; flex-wrap: wrap; gap: .5rem; padding: .6rem 1rem; }
.gss-fac-totaux:empty { display: none; }
.gss-fac-total { display: flex; flex-direction: column; min-width: 11rem; padding: .45rem .75rem; border: 1px solid var(--gss-border); border-radius: var(--gss-radius-sm); background: var(--gss-surface-2); }
.gss-fac-total strong { font-size: 1.05rem; font-variant-numeric: tabular-nums; }
.gss-fac-total.is-global { border-color: var(--gss-primary); background: var(--gss-primary-soft); }
.gss-fac-total-l { font-size: .8rem; color: var(--gss-muted); }
.gss-fac-ajout-client { margin-bottom: .75rem; }
.gss-fac-ajout-client .gss-remote { width: min(100%, 32rem); }
/* Préparation */
.gss-fac-numero-prevu { margin: 0; padding-top: .35rem; display: flex; flex-direction: column; }
.gss-fac-numero-prevu strong { font-size: 1.15rem; }
.gss-fac-timbre { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem 1rem; padding-top: .35rem; }
.gss-fac-timbre .form-check { margin: 0; }
.gss-fac-taux { display: inline-flex; align-items: center; gap: .3rem; margin: 0; }
.gss-fac-taux input { width: 5rem; text-align: right; }
.gss-fac-sous-titre { font-size: .95rem; font-weight: 600; margin: .25rem 0 .4rem; }
.gss-fac-bons { list-style: none; margin: 0 0 .75rem; padding: 0; }
.gss-fac-bons li { display: flex; flex-wrap: wrap; align-items: center; gap: .25rem .6rem; padding: .3rem 0; border-bottom: 1px dashed var(--gss-border); }
.gss-fac-ligne-outils { display: flex; gap: .5rem; }
.gss-fac-ligne-outils select { flex: 1 1 auto; min-width: 0; }
.gss-fac-lignes td { vertical-align: middle; }
.gss-fac-lignes td:nth-child(2) { min-width: 16rem; }
.gss-fac-lignes td:nth-child(3) input { width: 5.5rem; }
.gss-fac-lignes td:nth-child(4) input { width: 8rem; }
.gss-fac-lignes input.num { text-align: right; }
.gss-fac-lignes input.is-invalid { border-color: var(--gss-danger); }
.gss-fac-bas { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 24rem); gap: 1rem 1.5rem; padding-top: 1rem; align-items: start; }
@media (max-width: 760px) { .gss-fac-bas { grid-template-columns: 1fr; } }
.gss-fac-note { margin-top: 1rem; }
.gss-fac-totaux-saisie { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: .4rem 1rem; align-items: center; margin: 0; }
.gss-fac-totaux-saisie dt { font-weight: 500; color: var(--gss-muted); margin: 0; }
.gss-fac-totaux-saisie dd { margin: 0; text-align: right; font-variant-numeric: tabular-nums; }
.gss-fac-totaux-saisie dd.gss-field { margin-bottom: 0; }
.gss-fac-totaux-saisie [hidden] { display: none; }
.gss-fac-totaux-saisie .gss-fac-net { font-size: 1.15rem; font-weight: 700; color: var(--gss-text); padding-top: .35rem; border-top: 1px solid var(--gss-border); }
.gss-fac-totaux-saisie .gss-fac-ecart-l { font-size: .85rem; }
.gss-fac-totaux-saisie [data-fac-ecart].is-ecart { color: var(--gss-warning); font-weight: 700; }
.gss-fac-mo { display: flex; gap: .35rem; justify-content: flex-end; }
.gss-fac-mo input { width: 9rem; text-align: right; }
.gss-fac-lettres { font-style: italic; color: var(--gss-muted); margin: .75rem 0 0; }
/* Facture émise */
.gss-fac-outils { display: flex; flex-wrap: wrap; gap: .5rem; margin-bottom: 1rem; }
.gss-fac-papier { overflow-x: auto; margin-bottom: 1.25rem; padding: .25rem 0; }
.gss-fac-infos { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: .35rem 1rem; margin: 0; }
.gss-fac-infos dt { color: var(--gss-muted); font-weight: 500; }
.gss-fac-infos dd { margin: 0; }

/* Document A4 de la facture (même présentation que le classeur Excel) */
.gss-facture {
	position: relative; box-sizing: border-box; width: 200mm; min-width: 640px; max-width: 100%; margin: 0 auto; padding: 10mm 9mm;
	background: #fff; color: #000; font-family: Arial, Helvetica, sans-serif; font-size: 10.5pt; line-height: 1.3;
	box-shadow: var(--gss-shadow-pop); border-radius: 2px;
}
.gss-facture p { margin: 0; }
.gss-facture-tete { display: flex; justify-content: space-between; gap: 6mm; }
.gss-facture-societe { flex: 0 1 58%; }
.gss-facture-raison { font-size: 19pt; font-weight: 700; font-style: italic; }
.gss-facture-activite { font-size: 11.5pt; font-weight: 700; font-style: italic; }
.gss-facture-adresse { font-size: 10pt; font-weight: 700; font-style: italic; }
.gss-facture-legal { display: grid; grid-template-columns: auto 1fr; gap: 0 2mm; margin: 1mm 0 0; font-size: 8.5pt; }
.gss-facture-legal dt { font-weight: 700; margin: 0; }
.gss-facture-legal dt::after { content: " :"; }
.gss-facture-legal dd { margin: 0; }
.gss-facture-titre { flex: 0 0 38%; padding-top: 9mm; }
.gss-facture-titre h2 { margin: 0 0 4mm; font-family: "Times New Roman", Times, serif; font-size: 17pt; font-weight: 700; }
.gss-facture-titre h2 span { font-size: 9pt; font-weight: 400; }
.gss-facture-titre p { font-weight: 700; font-size: 9.5pt; }
.gss-facture-client { margin: 5mm 0 7mm 45%; font-weight: 700; font-size: 10.5pt; }
.gss-facture-lignes { width: 100%; border-collapse: collapse; font-size: 9.5pt; }
.gss-facture-lignes th { border: 1px solid #000; padding: 2.5mm 1.5mm; font-size: 8.5pt; font-weight: 700; text-align: center; }
.gss-facture-lignes th:nth-child(1) { width: 9%; } .gss-facture-lignes th:nth-child(3) { width: 8%; }
.gss-facture-lignes th:nth-child(4) { width: 18%; } .gss-facture-lignes th:nth-child(5) { width: 15%; }
.gss-facture-lignes td { border-left: 1px solid #000; border-right: 1px solid #000; padding: 1.4mm 1.5mm; font-weight: 700; vertical-align: top; }
.gss-facture-lignes td.c { text-align: center; font-variant-numeric: tabular-nums; }
.gss-facture-lignes .gss-facture-fin td { border-bottom: 1px solid #000; height: 7mm; }
.gss-facture-bas { display: flex; justify-content: space-between; align-items: center; margin-top: 3mm; }
.gss-facture-tva { font-family: Calibri, Carlito, Arial, sans-serif; font-size: 14pt; padding-left: 12mm; }
.gss-facture-tva em { font-weight: 700; }
.gss-facture-totaux { border-collapse: collapse; width: 41%; font-size: 9.5pt; }
.gss-facture-totaux th { border: 1px solid #000; padding: 1.8mm 2mm; text-align: right; font-weight: 400; }
.gss-facture-totaux td { border: 1px solid #000; padding: 1.8mm 2mm; text-align: center; font-weight: 700; width: 38%; font-variant-numeric: tabular-nums; }
.gss-facture-totaux .gss-facture-net th, .gss-facture-totaux .gss-facture-net td { padding-top: 3.5mm; padding-bottom: 3.5mm; }
.gss-facture-lettres { margin-top: 3mm !important; font-size: 11pt; }
.gss-facture-lettres strong { font-size: 9.5pt; }
.gss-facture-filigrane { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; pointer-events: none;
	font-size: 70pt; font-weight: 800; letter-spacing: .1em; color: rgba(179, 38, 30, .16); transform: rotate(-28deg); }
@page { size: A4; margin: 10mm; }
@media print {
	.gss-fac-papier { overflow: visible; margin: 0; padding: 0; }
	.gss-facture { width: auto; min-width: 0; max-width: none; padding: 0; box-shadow: none; }
}
.gss-fac-fiche { margin-bottom: .9rem; padding: .5rem .75rem; border: 1px dashed var(--gss-border-strong); border-radius: var(--gss-radius-sm); background: var(--gss-surface-2); font-size: .9rem; }
.gss-fac-fiche summary { cursor: pointer; font-weight: 600; color: var(--gss-muted); }
.gss-fac-fiche p { margin: .4rem 0 0; }

/* ---------- Caméra (style/app/camera.js) ---------- */
.gss-cam-vue { position: relative; overflow: hidden; border-radius: var(--gss-radius-sm); background: #000; aspect-ratio: 4 / 3; }
.gss-cam-vue video { width: 100%; height: 100%; object-fit: contain; display: block; }
.gss-cam-cadre { position: absolute; left: 10%; right: 10%; top: 50%; height: 36%; max-height: 32%; transform: translateY(-50%);
	border: 3px solid rgba(255, 255, 255, .9); border-radius: 10px; box-shadow: 0 0 0 999px rgba(0, 0, 0, .35); pointer-events: none; }
.gss-cam-cadre.is-code { top: 50%; height: 60%; max-height: 60%; }
.gss-cam-etat { margin: .6rem 0 0; font-size: .92rem; color: var(--gss-muted); }
.gss-cam-etat.is-ok { color: var(--gss-success); font-weight: 600; }
.gss-cam-etat.is-erreur { color: var(--gss-danger); }
.gss-cam-choix { margin-top: .6rem; display: flex; flex-wrap: wrap; gap: .4rem; }
.gss-cam-choix p { flex: 1 1 100%; }
.gss-cam-candidat { font-family: var(--gss-font-mono, ui-monospace, monospace); font-size: 1.05rem; letter-spacing: .03em; }
.gss-cam-type { font-family: var(--gss-font); font-size: .72rem; text-transform: uppercase; opacity: .75; margin-right: .2rem; }
.gss-cam-saisie { margin-top: .75rem; }
.gss-cam-saisie-ligne { display: flex; gap: .5rem; }
.gss-cam-saisie-ligne input { font-family: var(--gss-font-mono, ui-monospace, monospace); text-transform: uppercase; }
.gss-cam-photo { margin: 0; display: inline-flex; align-items: center; gap: .35rem; }
.gss-cam-bouton { vertical-align: middle; margin-left: .2rem; }
.gss-bon-actif { margin: .5rem 0; }
/* Page Scanner (téléphone) */
.gss-scanner { display: grid; gap: .75rem; max-width: 34rem; }
.gss-scanner-bouton { display: flex; align-items: center; gap: .9rem; width: 100%; padding: 1rem 1.1rem; font-size: 1.1rem; text-align: left; }
.gss-scanner-bouton .bi { font-size: 1.8rem; }
.gss-scanner-envois { list-style: none; margin: 0; padding: 0; }
.gss-scanner-envois li { display: flex; justify-content: space-between; gap: .5rem; padding: .45rem 0; border-bottom: 1px solid var(--gss-border); font-size: .92rem; }
.gss-scanner-envois code { font-size: 1rem; }
.gss-cam-apercu { position: relative; touch-action: none; user-select: none; cursor: crosshair; border-radius: var(--gss-radius-sm); overflow: hidden; }
.gss-cam-apercu img { width: 100%; display: block; }
.gss-cam-zone { position: absolute; border: 2px solid var(--gss-accent); background: rgba(212, 138, 0, .18); pointer-events: none; }

/* ---------- Services du bon (style/app/services.js) ---------- */
.gss-services-bon { padding: .6rem .9rem; border-bottom: 1px solid var(--gss-border); background: var(--gss-surface); }
.gss-services-chips { display: flex; flex-wrap: wrap; gap: .35rem; margin-bottom: .45rem; }
.gss-service-chip { display: inline-flex; align-items: stretch; border: 1px solid var(--gss-border-strong); background: var(--gss-surface); color: var(--gss-text);
	border-radius: 999px; font-size: .88rem; overflow: hidden; }
.gss-service-chip[data-choisi] { border-color: var(--gss-primary); }
.gss-service-chip > * { display: inline-flex; align-items: center; border: 0; background: none; color: inherit; padding: .25rem .6rem; font: inherit; }
.gss-service-chip > button { cursor: pointer; }
.gss-service-chip > button:focus-visible { outline: 2px solid var(--gss-primary); outline-offset: -2px; }
.gss-service-nom { padding-left: .75rem !important; }
.gss-service-chip[data-choisi] .gss-service-nom { background: var(--gss-primary); color: var(--gss-on-primary); font-weight: 600; }
.gss-service-chip > button.gss-service-nom:hover { text-decoration: underline; }
.gss-service-verrou { color: var(--gss-muted); font-size: .8rem; padding-left: .35rem !important; padding-right: .1rem !important; }
.gss-service-chip[data-choisi] .gss-service-verrou { background: var(--gss-primary); color: var(--gss-on-primary); }
.gss-service-pieces { gap: .2rem; border-left: 1px solid var(--gss-border) !important; color: var(--gss-primary) !important; }
.gss-service-pieces:disabled { color: var(--gss-faint) !important; cursor: default !important; }
.gss-service-pieces.is-actif { background: var(--gss-accent-soft) !important; color: var(--gss-accent-ink) !important; font-weight: 600; }
.gss-service-retirer { border-left: 1px solid var(--gss-border) !important; color: var(--gss-muted) !important; padding: .25rem .5rem !important; }
.gss-service-retirer:hover { color: var(--gss-danger) !important; }
.gss-services-zone { display: flex; flex-wrap: wrap; align-items: flex-start; gap: .35rem .75rem; }
.gss-services-zone .gss-services-chips { margin-bottom: .45rem; }
.gss-services-ajout { margin: 0; }
.gss-services-ajout select { width: auto; min-width: 13rem; }
.gss-services-groupe { margin-top: .35rem; }
.gss-services-groupe-titre { margin: .3rem 0 0; font-size: .82rem; font-weight: 600; color: var(--gss-muted); }
.gss-services-pieces ul { list-style: none; margin: .2rem 0 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 17rem), 1fr)); gap: .35rem .9rem; }
.gss-services-pieces li { font-size: .9rem; line-height: 1.3; }
.gss-srv-lier-barre { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .5rem; margin: .5rem 0; }
.gss-srv-filtres { display: flex; flex-wrap: wrap; gap: .5rem .75rem; align-items: flex-end; }
.gss-srv-filtres .gss-field { margin: 0; min-width: 11rem; }
.gss-srv-part { display: inline-block; min-width: 5.5rem; padding: .1rem .4rem; border-radius: 4px; font-variant-numeric: tabular-nums;
	background: linear-gradient(90deg, var(--gss-primary-soft) var(--part), transparent var(--part)); border: 1px solid var(--gss-border); }
.gss-services-sans { margin: .6rem .9rem; }

/* ---------- Recalibrage de la caisse ---------- */
.gss-rec-choix { display: grid; gap: .3rem; }
.gss-rec-choix .form-check { margin: 0; }
.gss-rec-barre { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem 1rem; margin: 1rem 0; }
.gss-rec-appliquer { display: flex; flex-wrap: wrap; align-items: flex-end; gap: .75rem 1rem; margin: 1rem 0 1.5rem; padding: 1rem;
	border: 1px solid var(--gss-danger); border-radius: var(--gss-radius-sm); background: var(--gss-surface-2); }
.gss-rec-appliquer .gss-field { margin: 0; min-width: min(18rem, 100%); }
#rec-apercu.is-caduc .gss-rec-resultat { opacity: .45; }
.gss-rec-chiffres { display: grid; grid-template-columns: minmax(10rem, 1fr) auto; gap: .35rem 1rem; margin: 0; }
.gss-rec-chiffres dt { font-weight: 500; color: var(--gss-muted); }
.gss-rec-chiffres dd { margin: 0; text-align: right; font-variant-numeric: tabular-nums; }
.gss-rec-details { margin-top: .5rem; }
.gss-rec-details > summary { cursor: pointer; color: var(--gss-primary); font-size: .875rem; }
.gss-rec-details[open] > summary { margin-bottom: .35rem; }
#rec-fournisseurs input.num { text-align: right; min-width: 7rem; max-width: 10rem; }
#rec-fournisseurs .gss-field { margin: 0; }
@media (max-width: 576px) {
	.gss-rec-chiffres { grid-template-columns: 1fr; }
	.gss-rec-chiffres dd { text-align: left; margin-bottom: .25rem; }
}

/* ---------- Fiches atelier : éditeur des emplacements (views/impression/fiches.php) ---------- */
.fe-choix { display: flex; flex-wrap: wrap; gap: .5rem; margin-bottom: 1rem; }
.fe { display: grid; grid-template-columns: minmax(0, 1fr) 22rem; gap: 1rem; align-items: start; }
.fe-zone { min-width: 0; }
.fe-outils { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem 1rem; margin-bottom: .5rem; }
.fe-bon { display: flex; gap: .35rem; align-items: center; }
.fe-bon input { width: 12rem; }
.fe-defile { overflow: auto; max-height: calc(100vh - 12rem); min-height: 20rem; border: 1px solid var(--gss-border); border-radius: var(--gss-radius-sm); background: #d9dee3; padding: 0; }
.fe-page { position: relative; margin: 0 auto; background: #fff; box-shadow: 0 1px 6px rgba(0, 0, 0, .2); color: #000; font-family: Arial, "Liberation Sans", Helvetica, sans-serif; touch-action: none; }
.fe-fond { position: absolute; inset: 0; width: 100%; height: 100%; user-select: none; pointer-events: none; }
.fe-page.sans-fond .fe-fond { opacity: 0; }
.fe-champs { position: absolute; inset: 0; }
.fe-c { position: absolute; display: flex; overflow: visible; line-height: 1.12; white-space: nowrap; cursor: move;
	outline: 1px dashed rgba(13, 105, 114, .75); background: rgba(13, 105, 114, .07); }
.fe-c > span { display: block; width: 100%; overflow: hidden; pointer-events: none; }
.fe-c.fe-v-bas { align-items: flex-end; }
.fe-c.fe-v-milieu { align-items: center; }
.fe-c.fe-v-haut { align-items: flex-start; }
.fe-c.fe-long { display: -webkit-box; -webkit-box-orient: vertical; white-space: normal; overflow: hidden; overflow-wrap: anywhere; }
.fe-c.fe-liste { display: block; background: none; }
.fe-rang { position: absolute; left: 0; right: 0; display: flex; align-items: flex-end; outline: 1px dotted rgba(13, 105, 114, .5); background: rgba(13, 105, 114, .05); }
.fe-c.fe-v-milieu .fe-rang { align-items: center; }
.fe-c.fe-v-haut .fe-rang { align-items: flex-start; }
.fe-rang > span { display: block; width: 100%; overflow: hidden; }
.fe-c.fe-qr svg { width: 100%; height: 100%; pointer-events: none; }
.fe-vide { opacity: .25; }
.fe-c:focus { outline: 2px solid var(--gss-primary); }
.fe-c.is-choisi { outline: 2px solid #d63384; background: rgba(214, 51, 132, .1); z-index: 2; }
.fe-c > .fe-poignee { position: absolute; right: -5px; bottom: -5px; width: 10px; height: 10px; border-radius: 2px; background: #d63384; cursor: nwse-resize; display: none; pointer-events: auto; }
.fe-c.is-choisi > .fe-poignee { display: block; }
.fe-aide { margin: .5rem 0 0; }
.fe-panneau { display: grid; gap: 1rem; position: sticky; top: 4.5rem; max-height: calc(100vh - 5.5rem); overflow: auto; padding-bottom: 4rem; }
.fe-carte { margin: 0; }
.fe-libelle { font-weight: 600; margin-bottom: .5rem; }
.fe-grille { display: grid; grid-template-columns: 1fr 1fr; gap: .25rem .75rem; }
.fe-grille .gss-field { margin-bottom: .35rem; }
.fe-grille .fe-large { grid-column: 1 / -1; }
.fe-coches { display: flex; gap: 1rem; margin: .25rem 0 .5rem; }
.fe-actions-champ { display: flex; flex-wrap: wrap; gap: .5rem; }
.fe-liste { list-style: none; margin: .5rem 0 0; padding: 0; max-height: 18rem; overflow: auto; }
.fe-item { display: flex; justify-content: space-between; gap: .5rem; width: 100%; padding: .3rem .5rem; border: 0; border-radius: var(--gss-radius-sm);
	background: none; color: inherit; text-align: left; font-size: .85rem; }
.fe-item:hover { background: var(--gss-surface-2); }
.fe-item.is-choisi { background: var(--gss-primary-soft); }
.fe-enregistrer { position: fixed; right: 1.25rem; bottom: 1rem; z-index: 20; display: flex; align-items: center; gap: .75rem; padding: .5rem .75rem;
	border: 1px solid var(--gss-border); border-radius: var(--gss-radius-sm); background: var(--gss-surface); box-shadow: 0 4px 16px rgba(0, 0, 0, .15); }
@media (max-width: 1100px) {
	.fe { grid-template-columns: 1fr; }
	.fe-panneau { position: static; max-height: none; padding-bottom: 5rem; }
	.fe-defile { max-height: 70vh; }
}

/* ---------- Panneau latéral (GSS.panneau) : fiche d'un client, d'un fournisseur… ---------- */
.gss-panneau { position: fixed; top: 0; right: 0; bottom: 0; z-index: 1040; width: min(46rem, 100vw); display: flex; flex-direction: column;
	background: var(--gss-surface); color: var(--gss-text, inherit); border-left: 1px solid var(--gss-border);
	box-shadow: -8px 0 32px rgba(0, 0, 0, .18); transform: translateX(105%); transition: transform .2s ease-out; outline: none; }
.gss-panneau.is-ouvert { transform: none; }
.gss-panneau-tete { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: .9rem 1.25rem; border-bottom: 1px solid var(--gss-border); }
.gss-panneau-titre { margin: 0; font-size: 1.15rem; font-weight: 700; }
.gss-panneau-corps { flex: 1; overflow: auto; padding: 1rem 1.25rem 2rem; }
.gss-panneau-corps .gss-card { margin-bottom: 1rem; }
@media (prefers-reduced-motion: reduce) { .gss-panneau { transition: none; } }
@media (max-width: 576px) { .gss-panneau-corps { padding: .75rem .75rem 2rem; } }
.gss-fiche-titre { padding-top: .5rem; border-top: 1px solid var(--gss-border); margin-top: .25rem; }
.gss-field-camera { position: relative; }
.gss-field-camera .gss-cam-bouton { position: absolute; right: .25rem; top: 1.85rem; }

/* ---------- Clients (views/clients/index.php, _fiche_client.php) ---------- */
.gss-lien-fiche { color: inherit; text-decoration: none; }
.gss-lien-fiche:hover strong { color: var(--gss-primary); text-decoration: underline; }
.gss-cl-vehicule { white-space: nowrap; font-size: .875rem; }
.gss-cl-vehicule code { font-size: .8rem; color: var(--gss-text, inherit); background: var(--gss-surface-2); padding: 0 .3rem; border-radius: 3px; }
.gss-cl-entete { display: flex; flex-wrap: wrap; justify-content: space-between; gap: .75rem 1rem; margin-bottom: .75rem; }
.gss-cl-infos { display: grid; grid-template-columns: auto auto; gap: .2rem 1rem; margin: 0; }
.gss-cl-infos dt { color: var(--gss-muted); font-weight: 500; }
.gss-cl-infos dd { margin: 0; }
.gss-cl-actions { display: flex; flex-wrap: wrap; gap: .4rem; align-items: flex-start; }
.gss-cl-remarques { padding: .6rem .8rem; margin-bottom: .75rem; border: 1px dashed var(--gss-border); border-radius: var(--gss-radius-sm); background: var(--gss-surface-2); }
.gss-cl-fiscal { display: grid; grid-template-columns: minmax(8rem, auto) 1fr; gap: .3rem 1rem; }
.gss-cl-fiscal dt { color: var(--gss-muted); font-weight: 500; }
.gss-cl-fiscal dd { margin: 0; }
.gss-filtre-texte input { min-width: 16rem; }
@media (max-width: 576px) { .gss-filtre-texte, .gss-filtre-texte input { width: 100%; min-width: 0; } }

/* Achats à confirmer : prix d'achat saisi dans la liste */
.gss-conf-prix { margin: 0; min-width: 7rem; }
.gss-conf-prix input { text-align: right; }
.gss-conf-sans-prix td { background: rgba(255, 193, 7, .07); }

/* ---------- État de fin de journée (views/caisse/journee.php, style/app/journee.js) ---------- */
.gss-j-outils { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem; margin-bottom: 1rem; }
.gss-j-jour { display: flex; align-items: center; gap: .25rem; }
.gss-j-jour input { width: 11rem; }
.gss-j-jour-fixe { margin: 0; font-weight: 600; }
.gss-j-caisse select { min-width: 14rem; }
.gss-j-espace { flex: 1 1 auto; }
.gss-j-papier { margin-bottom: 1.25rem; transition: opacity .15s; }
.gss-j-papier.is-chargement { opacity: .55; pointer-events: none; }
/* La feuille reste claire en thème sombre (c'est un document imprimé) */
.gss-journee {
	box-sizing: border-box; width: 100%; max-width: 210mm; margin: 0 auto; padding: 10mm 9mm;
	background: #fff; color: #111; font-family: Arial, Helvetica, sans-serif; font-size: 9.5pt; line-height: 1.35;
	box-shadow: var(--gss-shadow-pop); border-radius: 2px;
}
.gss-journee h2, .gss-journee h3 { font-family: inherit; letter-spacing: normal; }
.gss-journee a { color: inherit; text-decoration: none; }
.gss-journee a:hover { text-decoration: underline; }
.gss-j-muted { color: #666; }
.gss-j-tete { display: flex; justify-content: space-between; align-items: flex-start; gap: 6mm; padding-bottom: 3mm; margin-bottom: 4mm; border-bottom: 2px solid #111; }
.gss-j-societe { margin: 0 0 1mm; font-size: 10.5pt; font-weight: 700; text-transform: uppercase; letter-spacing: .03em; }
.gss-j-titre { margin: 0; font-size: 17pt; font-weight: 700; color: #111; }
.gss-j-date { margin: 1mm 0 0; font-size: 11pt; }
.gss-j-meta { display: grid; grid-template-columns: auto auto; gap: .5mm 3mm; margin: 0; font-size: 8.5pt; }
.gss-j-meta dt { color: #555; font-weight: 400; }
.gss-j-meta dd { margin: 0; font-weight: 600; text-align: right; }
.gss-j-resume { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 2mm; margin-bottom: 5mm; }
.gss-j-resume > div { display: flex; flex-direction: column; padding: 2mm 2.5mm; border: 1px solid #bbb; border-radius: 2mm; }
.gss-j-resume span { font-size: 8pt; color: #555; }
.gss-j-resume strong { font-size: 14pt; font-variant-numeric: tabular-nums; }
.gss-j-resume small { font-size: 7.5pt; color: #555; }
.gss-j-resume .is-net { border: 2px solid #111; }
.gss-j-section { margin-bottom: 5mm; overflow-x: auto; }
.gss-j-section h3 { margin: 0 0 1.5mm; font-size: 11pt; font-weight: 700; color: #111; }
.gss-j-section h3 span { font-size: 9pt; font-weight: 400; color: #555; }
.gss-j-table { width: 100%; border-collapse: collapse; }
.gss-j-table th, .gss-j-table td { padding: 1.2mm 1.5mm; border: 1px solid #999; text-align: left; vertical-align: top; }
.gss-j-table thead th { background: #eee; font-size: 8pt; font-weight: 700; }
.gss-j-table tfoot th { background: #f4f4f4; }
.gss-j-table .num { text-align: right; white-space: nowrap; font-variant-numeric: tabular-nums; }
.gss-j-table tr { break-inside: avoid; }
.gss-j-note { min-width: 40mm; max-width: 75mm; }
.gss-j-vide td { text-align: center; color: #666; font-style: italic; }
.gss-j-anciens td { color: #444; font-style: italic; background: #fafafa; }
.gss-j-fin { break-inside: avoid; }
.gss-j-recap { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 6mm; align-items: start; }
.gss-j-comptes th, .gss-j-comptes td { border-width: 0 0 1px; border-color: #ccc; }
.gss-j-comptes th { font-weight: 700; }
.gss-j-comptes .is-total th { border-top: 1px solid #111; border-bottom-color: #111; }
.gss-j-comptes .is-net th { font-size: 12pt; border: 2px solid #111; background: #f4f4f4; }
.gss-j-soldes { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 1mm 3mm; margin: 0 0 4mm; font-size: 8.5pt; }
.gss-j-soldes dt { font-weight: 400; color: #444; }
.gss-j-soldes dd { margin: 0; text-align: right; font-variant-numeric: tabular-nums; }
.gss-j-remise p { margin: 0 0 3mm; font-size: 10.5pt; font-weight: 700; }
.gss-j-ligne { display: inline-block; min-width: 38mm; border-bottom: 1px solid #111; }
.gss-j-visas { display: grid; grid-template-columns: 1fr 1fr; gap: 4mm; }
.gss-j-visas > div { height: 24mm; padding: 1.5mm 2mm; border: 1px solid #999; font-size: 8pt; color: #555; }
@media (max-width: 768px) {
	.gss-journee { padding: 5mm 4mm; }
	.gss-j-tete { flex-direction: column; gap: 2mm; }
	.gss-j-meta dd { text-align: left; }
	.gss-j-resume { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.gss-j-recap { grid-template-columns: 1fr; }
}
@media print {
	.gss-j-papier { margin: 0; }
	.gss-journee { max-width: none; padding: 0; box-shadow: none; border-radius: 0; font-size: 9pt; }
	.gss-j-section { overflow: visible; }
	.gss-j-resume { grid-template-columns: repeat(5, minmax(0, 1fr)); }
	.gss-j-tete { flex-direction: row; }
	.gss-j-recap { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
	.gss-j-table thead { display: table-header-group; }
}

/* ---------- Marques des pièces (Stock → Marques, codes-barres, unités) ---------- */
.gss-mq-outils { display: flex; flex-wrap: wrap; gap: .5rem; margin-bottom: .75rem; }
.gss-mq-reprise .gss-grid-2 { margin-top: .75rem; }
.gss-codes-marque { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.4fr); gap: .5rem; margin-top: .5rem; }
.gss-code-marque input, .gss-unite-marque input { min-width: 9rem; max-width: 14rem; }
@media (max-width: 576px) { .gss-codes-marque { grid-template-columns: 1fr; } }

/* ---------- Fournisseurs (fiche dans le panneau) ---------- */
.gss-fr-etats { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: .3rem 1rem; margin: 0; }
.gss-fr-etats dt { font-weight: 500; color: var(--gss-muted); }
.gss-fr-etats dd { margin: 0; }

/* ---------- Articles (liste et fiche) ---------- */
.gss-art-totaux { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: .5rem; padding: .75rem 1rem; border-bottom: 1px solid var(--gss-border); }
.gss-art-totaux > div { display: flex; flex-direction: column; }
.gss-art-totaux span { font-size: .78rem; color: var(--gss-muted); }
.gss-art-totaux strong { font-size: 1.05rem; font-variant-numeric: tabular-nums; }
@media (max-width: 768px) { .gss-art-totaux { grid-template-columns: repeat(2, minmax(0, 1fr)); } }

/* ---------- Achats (views/fournisseurs/achats.php) ---------- */
.gss-achat-contexte { display: flex; flex-wrap: wrap; align-items: flex-end; gap: .5rem 1rem; margin-bottom: 1rem; }
.gss-achat-contexte select { min-width: 14rem; }
.gss-achat-fournisseur { font-size: .9rem; color: var(--gss-muted); padding-bottom: .35rem; }
.gss-col-choix { width: 1%; }

/* ---------- Écran du bon (views/clients/bon.php, bon_nouveau.php) ---------- */
.gss-bon-haut { display: grid; grid-template-columns: minmax(0, 1.5fr) minmax(0, 1fr); gap: 1rem; align-items: start; margin-bottom: 1rem; }
.gss-bon-haut > .gss-card { margin-bottom: 0; }
@media (max-width: 992px) { .gss-bon-haut { grid-template-columns: minmax(0, 1fr); } }
.gss-bon-ident { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: .45rem 1rem; margin: 0; }
.gss-bon-ident dt { color: var(--gss-muted); font-weight: 500; padding-top: .15rem; }
.gss-bon-ident dd { margin: 0; min-width: 0; }
.gss-bon-ident dd > .gss-acts { margin-left: .35rem; vertical-align: middle; }
.gss-bon-plaque {
	display: inline-block; padding: 0 .4rem; margin-left: .25rem; border: 1.5px solid var(--gss-plate-ink); border-radius: 4px;
	background: var(--gss-plate); color: var(--gss-plate-ink); font-family: var(--gss-font-cond); font-weight: 600; letter-spacing: .03em;
}
.gss-bon-ident textarea { margin-top: .35rem; }
.gss-bon-etat { display: flex; align-items: center; gap: .5rem; margin-bottom: .75rem; }
.gss-bon-etat .gss-badge { font-size: .85rem; }
.gss-bon-jeton { font-size: .8rem; color: var(--gss-muted); border: 1px solid var(--gss-border); border-radius: 999px; padding: .05rem .5rem; }
.gss-bon-chiffres { display: grid; gap: .25rem; margin: 0 0 .5rem; }
.gss-bon-chiffres > div { display: flex; justify-content: space-between; gap: 1rem; }
.gss-bon-chiffres dt { color: var(--gss-muted); font-weight: 500; }
.gss-bon-chiffres dd { margin: 0; font-variant-numeric: tabular-nums; }
.gss-bon-total { border-top: 1px solid var(--gss-border); padding-top: .35rem; margin-top: .15rem; }
.gss-bon-total dt { color: var(--gss-text); font-weight: 600; }
.gss-bon-total dd { font-size: 1.45rem; font-weight: 700; line-height: 1.1; }
.gss-bon-total small { font-size: .8rem; font-weight: 500; color: var(--gss-muted); }
.gss-bon-alerte, .gss-bon-credit { display: flex; gap: .4rem; font-size: .88rem; margin: .4rem 0 0; padding: .4rem .55rem; border-radius: var(--gss-radius-sm); }
.gss-bon-alerte { background: var(--gss-warning-soft); color: var(--gss-warning); }
.gss-bon-credit { background: var(--gss-danger-soft); color: var(--gss-danger); }
.gss-bon-cloture { margin: .9rem 0 .5rem; }
.gss-bon-cloture .btn { width: 100%; }
.gss-bon-boutons { display: flex; flex-wrap: wrap; gap: .4rem; margin-top: .5rem; }
.gss-bon-lignes td { vertical-align: top; }
.gss-bon-lignes tr.gss-bon-groupe:not(:first-child) td { border-top: 2px solid var(--gss-border); }
.gss-bon-article strong, .gss-bon-article span { display: block; }
.gss-bon-ligne .gss-row-tools { gap: .35rem; }
.gss-bon-remarque { color: var(--gss-info); white-space: pre-line; }
.gss-bon-saisie { width: 6.5rem; margin-left: auto; text-align: right; font-variant-numeric: tabular-nums; }
.gss-bon-saisie[aria-busy="true"] { opacity: .6; }
.gss-bon-lignes tfoot th { font-variant-numeric: tabular-nums; white-space: nowrap; }
.gss-bon-ajout .gss-scan-barre { margin-bottom: .75rem; }
.gss-bon-ajout .gss-services-bon { margin-bottom: .75rem; }
.gss-bon-ops { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(22rem, 100%), 1fr)); gap: .75rem; }
.gss-bon-op { border: 1px solid var(--gss-border); border-radius: var(--gss-radius); padding: .6rem .8rem; background: var(--gss-surface-2); }
.gss-bon-op-tete { display: flex; flex-wrap: wrap; align-items: center; gap: .25rem .75rem; margin-bottom: .4rem; }
.gss-bon-op-titre { font-size: .98rem; margin: 0; font-weight: 600; }
.gss-bon-op-tete .gss-acts { margin-left: auto; }
.gss-bon-op-infos { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: .2rem .75rem; margin: 0; font-size: .9rem; }
.gss-bon-op-infos dt { color: var(--gss-muted); font-weight: 500; }
.gss-bon-op-infos dd { margin: 0; }
.gss-cases-filtre { margin-bottom: .4rem; }
.gss-cases-longue { max-height: 15rem; overflow-y: auto; padding: .25rem; border: 1px solid var(--gss-border); border-radius: var(--gss-radius-sm); }
.gss-cases > label[hidden] { display: none; }
/* Nouveau bon */
.gss-nb-choix { display: grid; gap: .6rem; }
.gss-nb-recherche { display: flex; flex-wrap: wrap; gap: .5rem; align-items: center; }
.gss-nb-recherche .gss-remote { flex: 1 1 18rem; min-width: 0; }
.gss-nb-boutons { display: flex; flex-wrap: wrap; gap: .4rem; }
.gss-nb-choisi { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem 1rem; padding: .6rem .8rem; border: 1px solid var(--gss-border); border-radius: var(--gss-radius); background: var(--gss-surface-2); }
.gss-nb-choisi strong { font-size: 1.05rem; }
.gss-nb-choisi .gss-acts { margin-left: auto; }
.gss-nb-visite { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(14rem, 100%), 1fr)); gap: .75rem 1rem; }
.gss-nb-visite .span-all { grid-column: 1 / -1; }
.gss-nb-pied { display: flex; flex-wrap: wrap; align-items: center; justify-content: flex-end; gap: .75rem 1.25rem; }
.gss-nb-pied .gss-bon-total { border: 0; padding: 0; margin: 0; display: flex; gap: .75rem; align-items: baseline; }
/* Info-bulles : purement informatives, elles ne masquent jamais un bouton voisin */
.tooltip { pointer-events: none; }
/* Liste des ventes : totaux de la sélection */
.gss-ventes-totaux { grid-template-columns: repeat(auto-fill, minmax(min(9rem, 100%), 1fr)); }
/* Pointeuse */
.gss-zk-heures { display: grid; grid-template-columns: max-content 1fr; gap: .3rem 1rem; margin: 0 0 1rem; }
.gss-zk-heures dt { color: var(--gss-muted); font-weight: 500; }
.gss-zk-heures dd { margin: 0; font-family: var(--gss-font-cond); font-weight: 600; font-size: 1.05rem; }
.gss-zk-actions { display: flex; flex-wrap: wrap; gap: .5rem; align-items: center; margin-bottom: 1rem; }
.gss-zk-ajout { margin-bottom: 1rem; }
.gss-zk-ajout select { flex: 1 1 16rem; min-width: 0; }

/* Base véhicules : résultat d'un VIN ; indication sous le champ VIN des fenêtres de véhicule */
.gss-vin-infos { display: grid; grid-template-columns: max-content 1fr; gap: .15rem 1rem; }
.gss-vin-infos dt { font-weight: 600; color: var(--gss-muted); }
.gss-vin-infos dd { margin: 0; }
.gss-vin-info { color: var(--gss-text); }
.gss-vin-info .bi { color: var(--gss-primary); }

/* Récap des services (views/services/_recap.php) */
.gss-recap-barre { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .5rem; margin-bottom: .75rem; }
.gss-recap-groupes { display: grid; gap: .6rem; }
.gss-recap-groupe { border: 1px solid var(--gss-border); border-radius: var(--gss-radius-sm); padding: .6rem .8rem; background: var(--gss-surface); }
.gss-recap-groupe.is-off { opacity: .6; }
.gss-recap-tete { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem; }
.gss-recap-nom { flex: 1 1 14rem; max-width: 26rem; }
.gss-recap-corps { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 18rem), 1fr)); gap: .4rem 1.2rem; margin-top: .45rem; }
.gss-recap-sous { margin: 0 0 .2rem; font-size: .8rem; font-weight: 600; color: var(--gss-muted); }
.gss-recap-pieces { margin: 0; padding-left: 1.1rem; font-size: .9rem; }
.gss-recap-corps .form-check { margin-bottom: .1rem; }

/* Bon : pièce → opération d'atelier (bon.js) */
.gss-affecter-choix { display: grid; gap: .35rem; }
.gss-affecter-choix .form-check { margin: 0; }

/* Soldes négatifs des clients (avoir) et des fournisseurs (ils nous doivent) */
.gss-solde-inverse { font-size: .72rem; font-weight: 600; text-transform: uppercase; letter-spacing: .03em; color: var(--gss-success); }
.gss-bon-credit.is-avoir { background: var(--gss-success-soft); color: var(--gss-success); }
.gss-op-depassement { color: var(--gss-warning); font-weight: 600; }

/* Caisses par rôle (Caisse → Caisses) */
.gss-caisse-role { border: 1px solid var(--gss-border); border-radius: var(--gss-radius-sm); padding: .5rem .75rem; margin-bottom: .5rem; }
.gss-caisse-role > summary { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem; cursor: pointer; }
.gss-caisse-role[open] > summary { margin-bottom: .6rem; }
.gss-caisse-matrice th[scope=row] { font-weight: 500; white-space: nowrap; }
.gss-caisse-prevue { display: block; font-size: .68rem; color: var(--gss-muted); }

/* Confirmation ouverte au-dessus d'une autre fenêtre (ex. versement au-delà du crédit) : au premier plan */
#gss-confirmer { z-index: 1065; }
.modal-backdrop ~ .modal-backdrop { z-index: 1060; }

/* Historique des bons (panneau latéral) : une carte par bon, détail repliable */
.gss-hist-resume { display: grid; grid-template-columns: repeat(auto-fit, minmax(8.5rem, 1fr)); gap: .5rem; margin-bottom: .75rem; }
.gss-hist-resume > div, .gss-hist-carte { display: flex; flex-direction: column; gap: .1rem; padding: .45rem .6rem; border: 1px solid var(--gss-border); border-radius: var(--gss-radius-sm); background: var(--gss-surface); }
.gss-hist-resume span, .gss-hist-carte > span, .gss-hist-note > span { font-size: .72rem; color: var(--gss-muted); text-transform: uppercase; letter-spacing: .03em; }
.gss-hist-resume strong { font-size: 1.05rem; }
.gss-hist-outils { display: flex; gap: .5rem; margin-bottom: .75rem; }
.gss-hist-outils input { flex: 1; }
.gss-hist-bon { border: 1px solid var(--gss-border); border-radius: var(--gss-radius); padding: .65rem .75rem; margin-bottom: .6rem; background: var(--gss-surface); }
.gss-hist-bon > header { display: flex; flex-wrap: wrap; align-items: center; gap: .35rem .6rem; margin-bottom: .5rem; }
.gss-hist-num { font-weight: 700; text-decoration: none; }
.gss-hist-dates { font-size: .82rem; display: flex; flex-direction: column; margin-left: auto; text-align: right; }
.gss-hist-cartes { display: grid; grid-template-columns: repeat(auto-fit, minmax(7.5rem, 1fr)); gap: .4rem; }
.gss-hist-carte strong { font-size: .95rem; font-variant-numeric: tabular-nums; overflow-wrap: anywhere; }
.gss-hist-carte small { font-size: .75rem; color: var(--gss-muted); }
.gss-hist-carte.is-large { grid-column: span 2; }
.gss-hist-carte.is-impaye { border-color: var(--gss-danger); }
.gss-hist-carte.is-impaye strong, .gss-hist-carte.is-impaye small { color: var(--gss-danger); }
.gss-hist-note { margin-top: .45rem; padding: .4rem .6rem; border-left: 3px solid var(--gss-border); }
.gss-hist-note p { margin: 0; font-size: .85rem; }
.gss-hist-detail { margin-top: .5rem; }
.gss-hist-detail > summary { cursor: pointer; font-size: .85rem; font-weight: 600; color: var(--gss-primary); }
.gss-hist-detail table { margin: .4rem 0 0; font-size: .82rem; }
.gss-hist-bon.is-versement { padding: .45rem .75rem; }
.gss-hist-bon.is-versement > header { margin: 0; }
.gss-hist-montant { margin-left: auto; font-weight: 700; }
@media (max-width: 575.98px) {
	.gss-hist-dates { margin-left: 0; text-align: left; }
	.gss-hist-carte.is-large { grid-column: auto; }
}

/* Étiquettes codes-barres */
.gss-etq-ajout { display: flex; flex-wrap: wrap; gap: .5rem; align-items: center; padding: .75rem 1rem; border-bottom: 1px solid var(--gss-border); }
.gss-etq-ajout .gss-remote { flex: 1; min-width: 14rem; }
.gss-etiquette-cadre { display: flex; justify-content: center; padding: .5rem; background: var(--gss-surface-2, #eef1f4); border-radius: var(--gss-radius-sm); overflow-x: auto; }
.gss-etiquette-apercu { max-width: 100%; height: auto; box-shadow: 0 1px 4px rgba(0, 0, 0, .15); }
.gss-etiquettes-liste code { font-size: .8rem; }
.gss-tspl { max-height: 16rem; overflow: auto; font-size: .75rem; background: var(--gss-surface-2); padding: .5rem; border-radius: var(--gss-radius-sm); }

/* Détail d'une marque (panneau) */
.gss-lien-bouton { border: 0; padding: 0; background: none; color: var(--gss-primary); text-align: left; cursor: pointer; }
.gss-lien-bouton:hover strong { text-decoration: underline; }
.gss-mq-outils-detail { display: flex; flex-wrap: wrap; gap: .5rem; align-items: center; margin-bottom: .75rem; }
.gss-mq-outils-detail input { flex: 1; min-width: 10rem; }
.gss-mq-articles td { vertical-align: top; }
