/* Harmonisation visuelle (10/11/2026) : cartes, boutons, formulaires, tableaux, alertes, modales, focus clavier.
   Toutes les couleurs et formes viennent des jetons du thème configuré dans l'admin (design-tokens + theme.css). */
:root {
    --ep-p: var(--edu-color-primary, var(--edu-color-primary));
    --ep-rgb: var(--edu-color-primary-rgb, 10, 132, 255);
    --ep-r-md: var(--edu-radius-md, 12px);
    --ep-r-lg: var(--edu-radius-lg, 16px);
}
.pc-content .card { border-radius: var(--ep-r-lg); border: 1px solid rgba(var(--ep-rgb), .10); box-shadow: 0 1px 2px rgba(16, 24, 40, .04); transition: box-shadow .2s ease, transform .2s ease; }
.pc-content .card:hover { box-shadow: 0 10px 26px rgba(var(--ep-rgb), .09); }
.pc-content .card-header { background: transparent; border-bottom: 1px solid rgba(var(--ep-rgb), .10); }
.btn { border-radius: var(--ep-r-md); transition: transform .15s ease, box-shadow .2s ease, background-color .2s ease; }
.btn:hover:not(:disabled) { transform: translateY(-1px); }
.btn:active:not(:disabled) { transform: none; }
.btn-primary { box-shadow: 0 4px 12px rgba(var(--ep-rgb), .25); }
.btn:focus-visible, a:focus-visible, .form-control:focus-visible, .form-select:focus-visible, summary:focus-visible, [tabindex]:focus-visible { outline: 3px solid rgba(var(--ep-rgb), .4); outline-offset: 2px; }
.form-control, .form-select { border-radius: var(--ep-r-md); }
.form-control:focus, .form-select:focus { border-color: var(--ep-p); box-shadow: 0 0 0 .2rem rgba(var(--ep-rgb), .15); }
.table > :not(caption) > * > * { padding: .7rem .85rem; }
.table-hover > tbody > tr:hover > * { background-color: rgba(var(--ep-rgb), .045); }
.table thead th { font-weight: 700; letter-spacing: .2px; }
.badge { border-radius: var(--edu-radius-pill, 999px); font-weight: 600; }
.alert { border: 0; border-radius: var(--ep-r-md); }
.modal-content { border: 0; border-radius: var(--ep-r-lg); box-shadow: 0 24px 60px rgba(0, 0, 0, .22); }
.dropdown-menu { border-radius: var(--ep-r-md); border: 1px solid rgba(var(--ep-rgb), .12); box-shadow: 0 14px 30px rgba(0, 0, 0, .12); }
.page-header-title h5 { font-weight: 800; }
@media (max-width: 768px) {
    .pc-content { padding: 12px; }
    .pc-content .card-body { padding: .9rem; }
    .table-responsive { -webkit-overflow-scrolling: touch; }
    .btn-lg { width: 100%; }
}
@media (prefers-reduced-motion: reduce) {
    .btn, .pc-content .card { transition: none; }
    .btn:hover:not(:disabled) { transform: none; }
}

/* Confort d'usage (11/11/2026) */
.edu-lien-evitement { position: absolute; left: 12px; top: -64px; z-index: 2000; padding: .6rem 1rem; border-radius: var(--ep-r-md); background: var(--ep-p); color: #fff; font-weight: 700; text-decoration: none; transition: top .15s ease; }
.edu-lien-evitement:focus { top: 12px; color: #fff; }
#contenu-principal:focus { outline: none; }
.btn.edu-envoi { position: relative; pointer-events: none; opacity: .85; }
.btn.edu-envoi::after { content: ""; display: inline-block; width: .9em; height: .9em; margin-left: .5em; vertical-align: -.1em; border: .15em solid currentColor; border-right-color: transparent; border-radius: 50%; animation: edu-tourne .7s linear infinite; }
@keyframes edu-tourne { to { transform: rotate(360deg); } }
.pc-sidebar a:focus-visible, .pc-header a:focus-visible { outline-offset: -2px; }
@media (pointer: coarse) {
    .btn, .form-control, .form-select, .page-link { min-height: 44px; }
    .btn-sm { min-height: 38px; }
}
@media (prefers-reduced-motion: reduce) {
    html { scroll-behavior: auto !important; }
    .btn.edu-envoi::after { animation-duration: 2s; }
    .edu-lien-evitement { transition: none; }
}
