/**
 * BSA Web – Organigramme : styles front (et base éditeur).
 * Themable : s'appuie sur les presets de couleur du thème actif
 * (--wp--preset--color--*) avec des fallbacks neutres.
 */

.bsaweb-orgchart {
	--oc-line: var(--wp--preset--color--contrast-lower, #d4dbe3);
	--oc-surface: var(--wp--preset--color--base, #ffffff);
	--oc-primary: var(--wp--preset--color--primary, #184a8b);
	--oc-accent: var(--wp--preset--color--accent, #429fd6);
	--oc-name: var(--wp--preset--color--contrast-higher, #1b2027);
	--oc-muted: var(--wp--preset--color--contrast-medium, #5b6470);
}

/* ---------- Carte membre (commune grille + arbre) ---------- */
.bsaweb-orgchart__card {
	display: flex;
	gap: 1rem;
	align-items: center;
	padding: 1rem;
	background: var(--oc-surface);
	border: 1px solid var(--oc-line);
	border-left: 3px solid var(--oc-primary);
	text-align: left;
	transition: transform 0.2s ease, box-shadow 0.2s ease, border-color 0.2s ease;
}

.bsaweb-orgchart__card:hover {
	transform: translateY(-3px);
	box-shadow: 0 12px 28px -12px rgba(24, 74, 139, 0.35);
	border-left-color: var(--oc-accent);
}

.bsaweb-orgchart__card--attached {
	border-style: dashed;
	border-left-style: dashed;
}

.bsaweb-orgchart__avatar {
	flex: 0 0 auto;
	width: 52px;
	height: 52px;
	border-radius: 50%;
	object-fit: cover;
	display: inline-flex;
	align-items: center;
	justify-content: center;
}

.bsaweb-orgchart__avatar--initials {
	background: var(--oc-primary);
	color: #fff;
	font-weight: 700;
	font-size: 1.05rem;
}

.bsaweb-orgchart__info { min-width: 0; }
.bsaweb-orgchart__name { margin: 0; font-weight: 700; line-height: 1.2; color: var(--oc-name); }
.bsaweb-orgchart__role { margin: 0.1rem 0 0; font-size: 0.9rem; color: var(--oc-primary); }
.bsaweb-orgchart__exp { margin: 0.1rem 0 0; font-size: 0.8rem; color: var(--oc-muted); }

/* ---------- Mode grille ---------- */
.bsaweb-orgchart__grid {
	display: grid;
	grid-template-columns: repeat(var(--bsaweb-orgchart-cols, 3), 1fr);
	gap: 1.5rem;
}
.bsaweb-orgchart__grid > * { margin-block: 0; }
@media (max-width: 60rem) { .bsaweb-orgchart__grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 30rem) { .bsaweb-orgchart__grid { grid-template-columns: 1fr; } }

/* ---------- Mode arbre (organigramme + traits de liaison) ---------- */
.bsaweb-orgchart--tree { overflow-x: auto; padding: 0.5rem 0 0.25rem; }

.bsaweb-orgchart__tree,
.bsaweb-orgchart__branch {
	display: flex;
	justify-content: center;
	list-style: none;
	margin: 0;
	padding: 0;
}

.bsaweb-orgchart__branch { padding-top: 26px; position: relative; }

.bsaweb-orgchart__node {
	list-style: none;
	position: relative;
	padding: 26px 12px 0;
	display: flex;
	flex-direction: column;
	align-items: center;
}

.bsaweb-orgchart__node .bsaweb-orgchart__card {
	width: 250px;
	max-width: 78vw;
}

/* Rangée carte + état-major (rattachés) à côté. */
.bsaweb-orgchart__row { position: relative; display: flex; justify-content: center; }

.bsaweb-orgchart__staff {
	position: absolute;
	left: 100%;
	top: 0;
	margin-left: 44px;
	display: flex;
	flex-direction: column;
	gap: 14px;
}

.bsaweb-orgchart__staff-item { position: relative; }

/* Connecteur pointillé entre le manager et le poste rattaché. */
.bsaweb-orgchart__staff-item::before {
	content: "";
	position: absolute;
	left: -44px;
	top: 50%;
	width: 44px;
	border-top: 2px dashed var(--oc-line);
}

/* Connecteurs horizontaux + descente vers la carte. */
.bsaweb-orgchart__node::before,
.bsaweb-orgchart__node::after {
	content: "";
	position: absolute;
	top: 0;
	right: 50%;
	width: 50%;
	height: 26px;
	border-top: 2px solid var(--oc-line);
}
.bsaweb-orgchart__node::after {
	right: auto;
	left: 50%;
	border-left: 2px solid var(--oc-line);
}
.bsaweb-orgchart__node:first-child::before,
.bsaweb-orgchart__node:last-child::after { border: 0 none; }
.bsaweb-orgchart__node:last-child::before { border-right: 2px solid var(--oc-line); }
.bsaweb-orgchart__node:only-child::before,
.bsaweb-orgchart__node:only-child::after { display: none; }
.bsaweb-orgchart__node:only-child { padding-top: 0; }

/* Trait vertical du parent vers la barre des enfants. */
.bsaweb-orgchart__branch::before {
	content: "";
	position: absolute;
	top: 0;
	left: 50%;
	width: 0;
	height: 26px;
	border-left: 2px solid var(--oc-line);
}

/* Racine : pas de connecteur au-dessus. */
.bsaweb-orgchart__tree > .bsaweb-orgchart__node { padding-top: 0; }
.bsaweb-orgchart__tree > .bsaweb-orgchart__node::before,
.bsaweb-orgchart__tree > .bsaweb-orgchart__node::after { display: none; }

/* Sur mobile : aside rattaché repasse sous la carte (pas d'absolu). */
@media (max-width: 48rem) {
	.bsaweb-orgchart__row { flex-direction: column; align-items: center; gap: 14px; }
	.bsaweb-orgchart__staff { position: static; margin-left: 0; }
	.bsaweb-orgchart__staff-item::before {
		left: 50%;
		top: -14px;
		width: 0;
		height: 14px;
		border-top: 0;
		border-left: 2px dashed var(--oc-line);
	}
}
