/* ==========================================================
   Community — Design System (valeurs de REPLI)
   Depuis Community Frontend 0.7 (Academy Customizer), la
   source de vérité des jetons de design est désormais
   Style_Output::build_css() (couleurs, rayons, ombres, polices
   configurables depuis Apparence → Personnaliser). Ce bloc
   :root reste présent comme FILET DE SÉCURITÉ, pour qu'aucune
   page ne se retrouve avec un CSS cassé si Community Frontend
   venait à être désactivé (cahier des charges, section 17 :
   "absence de CSS cassé" si le Theme Builder est désactivé).
   Quand le plugin est actif, Style_Output imprime son propre
   <style> plus tard dans <head> (wp_head, priorité 99) : à
   spécificité égale, il l'emporte sur ce bloc — vérifié dans
   un vrai navigateur (Chromium) lors du développement, dans
   les deux sens : valeur dynamique prioritaire quand le plugin
   est actif, et repli statique fonctionnel seul si désactivé.
   Les valeurs ci-dessous DOIVENT rester synchronisées avec le
   preset "darile" (voir class-presets.php) : elles ne sont
   JAMAIS modifiées depuis l'écran d'administration.
   ========================================================== */

:root {
	/* --- Palette réelle --- */
	--community-primary: #14B8A6;
	--community-primary-dark: #0F766E;
	--community-accent: #F59E0B;
	--community-text: #172033;
	--community-text-muted: #64748B;
	--community-bg: #F8FAFC;
	--community-surface: #FFFFFF;
	--community-border: #E2E8F0;
	--community-success: #16A34A;
	--community-danger: #DC2626;
	--community-warning: #F59E0B;
	--community-radius-sm: 6px;
	--community-radius-md: 10px;
	--community-radius-lg: 16px;
	--community-shadow-sm: 0 1px 2px rgba(15, 23, 42, .06);
	--community-shadow-md: 0 4px 12px rgba(15, 23, 42, .08);
	--community-font-sans: "Sora", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
	--community-font-mono: "Space Mono", ui-monospace, Menlo, monospace;

	/* Fond sombre réservé au hero/footer marketing — jamais aux écrans applicatifs. */
	--community-bg-dark: #0B1220;

	/* --- Alias de compatibilité : lus tels quels par les 9 plugins Community existants --- */
	--cc-color-bg: var(--community-bg);
	--cc-color-surface: var(--community-surface);
	--cc-color-border: var(--community-border);
	--cc-color-text: var(--community-text);
	--cc-color-text-muted: var(--community-text-muted);
	--cc-color-accent: var(--community-primary);
	--cc-color-accent-dark: var(--community-primary-dark);
	--cc-color-accent-warm: var(--community-accent);
	--cc-font-sans: var(--community-font-sans);
	--cc-font-mono: var(--community-font-mono);
	--cc-radius-sm: var(--community-radius-sm);
	--cc-radius-md: var(--community-radius-md);
	--cc-radius-full: 999px;
}

/* --- Fond clair par défaut sur tout le site (le hero gère lui-même son fond sombre localement) --- */
body { background: var(--community-bg); color: var(--community-text); }

/* --- Spécificité défensive : les titres à l'intérieur du contenu WordPress/Astra
   restent lisibles quelle que soit la cascade du thème parent. Ciblé sur nos
   conteneurs uniquement (jamais un h1{}/p{} global qui casserait l'admin ou
   d'autres plugins). --- */
.community-app h1,
.community-app h2,
.community-app h3,
.community-app h4,
.entry-content .community-app h1,
.entry-content .community-app h2,
.entry-content .community-app h3,
.entry-content .community-app h4 {
	color: var(--community-text) !important;
	font-family: var(--community-font-sans);
	line-height: 1.25;
}

.community-app,
.entry-content .community-app {
	color: var(--community-text);
	font-family: var(--community-font-sans);
}

.community-app a { color: var(--community-primary-dark); }

/* ==========================================================
   Boutons — compacts par défaut, jamais width:100% implicite
   ========================================================== */

.community-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 6px;
	width: auto;
	padding: 8px 16px;
	font-family: var(--community-font-sans);
	font-size: 14px;
	font-weight: 600;
	line-height: 1.2;
	border-radius: var(--community-radius-sm);
	border: 1px solid transparent;
	cursor: pointer;
	text-decoration: none;
	transition: background .15s ease, border-color .15s ease, color .15s ease, transform .05s ease;
	white-space: nowrap;
}
.community-btn:active { transform: translateY(1px); }

.community-btn--primary { background: var(--community-primary); color: #fff !important; }
.community-btn--primary:hover { background: var(--community-primary-dark); }

.community-btn--secondary { background: var(--community-surface); border-color: var(--community-border); color: var(--community-text) !important; }
.community-btn--secondary:hover { border-color: var(--community-primary); color: var(--community-primary-dark) !important; }

.community-btn--ghost { background: transparent; color: var(--community-text-muted) !important; padding: 6px 10px; }
.community-btn--ghost:hover { background: var(--community-border); color: var(--community-text) !important; }

.community-btn--danger { background: transparent; color: var(--community-danger) !important; padding: 6px 10px; }
.community-btn--danger:hover { background: #FEF2F2; }

.community-btn--sm { padding: 5px 10px; font-size: 12.5px; }
.community-btn--block { width: 100%; } /* opt-in explicite, jamais le défaut */
.community-btn--full-width-mobile { width: auto; }

/* Bouton icône seul (menu ⋯, fermer...) — cible tactile accessible (36px) sans paraître massif visuellement. */
.community-btn--icon {
	width: 32px;
	height: 32px;
	padding: 0;
	border-radius: 50%;
	background: transparent;
	color: var(--community-text-muted) !important;
	font-size: 18px;
}
.community-btn--icon:hover { background: var(--community-border); color: var(--community-text) !important; }

.community-btn:disabled,
.community-btn[aria-disabled="true"] { opacity: .55; cursor: not-allowed; }

/* ==========================================================
   Cartes
   ========================================================== */

.community-card {
	background: var(--community-surface);
	border: 1px solid var(--community-border);
	border-radius: var(--community-radius-md);
	box-shadow: var(--community-shadow-sm);
}

.community-card--compact { padding: 14px 16px; }
.community-card--roomy { padding: 22px; }

/* ==========================================================
   Badges / alertes
   ========================================================== */

.community-badge {
	display: inline-flex;
	align-items: center;
	gap: 4px;
	font-size: 11.5px;
	font-weight: 700;
	padding: 3px 9px;
	border-radius: var(--community-radius-sm);
	line-height: 1.4;
}
.community-badge--success { background: #DCFCE7; color: #15803D; }
.community-badge--warning { background: #FEF3C7; color: #B45309; }
.community-badge--danger { background: #FEE2E2; color: #B91C1C; }
.community-badge--neutral { background: var(--community-border); color: var(--community-text-muted); }
.community-badge--info { background: #DBEAFE; color: #1D4ED8; }

.community-alert {
	display: flex;
	align-items: flex-start;
	gap: 10px;
	padding: 12px 14px;
	border-radius: var(--community-radius-md);
	font-size: 13.5px;
	line-height: 1.55;
	border: 1px solid transparent;
}
.community-alert--info { background: #F0FDFA; border-color: #99F6E4; color: #115E59; }
.community-alert--warning { background: #FFFBEB; border-color: #FDE68A; color: #92400E; }
.community-alert--danger { background: #FEF2F2; border-color: #FECACA; color: #991B1B; }

/* ==========================================================
   Menu d'actions compact (⋯)
   ========================================================== */

.community-menu { position: relative; display: inline-block; }
.community-menu__panel {
	position: absolute;
	right: 0;
	top: calc(100% + 4px);
	min-width: 160px;
	background: var(--community-surface);
	border: 1px solid var(--community-border);
	border-radius: var(--community-radius-md);
	box-shadow: var(--community-shadow-md);
	padding: 6px;
	z-index: 20;
}
.community-menu__panel[hidden] { display: none; }
.community-menu__item {
	display: block;
	width: 100%;
	text-align: left;
	background: none;
	border: none;
	padding: 8px 10px;
	font-size: 13.5px;
	font-family: var(--community-font-sans);
	color: var(--community-text);
	border-radius: var(--community-radius-sm);
	cursor: pointer;
}
.community-menu__item:hover { background: var(--community-bg); }
.community-menu__item--danger { color: var(--community-danger); }

/* ==========================================================
   Accessibilité
   ========================================================== */

.community-app :focus-visible {
	outline: 2px solid var(--community-primary);
	outline-offset: 2px;
}

@media (prefers-reduced-motion: reduce) {
	.community-app * { transition: none !important; animation: none !important; }
}
