/* V0.53.52 — Composant KPI commun. Nouvelle carte : .kpi-card, strong valeur,
   span libellé, small précision facultative. data-kpi-tone : info/success/warning/danger. */
body.app-page :is(.results-overview,.studio-metrics,.dashboard-stats,.review-inbox-metrics,.formation-sheet-metrics,.request-list-metrics,.pedagogical-kpis,.learner-record-kpis,.matrix-metrics,.ai-account-metrics,.ai-account-budget-metrics,.user-formation-stats,.quality-practical-counts,.issue-stats,.improvement-stats,.kpi-grid,.followup-priorities,.people-overview,.account-activity){display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;align-items:stretch}
body.app-page :is(.results-overview,.learner-record-kpis,.ai-account-budget-metrics,.issue-stats,.pedagogical-kpis,.dashboard-stats){grid-template-columns:repeat(3,minmax(0,1fr))}
body.app-page .request-list-metrics:has(>.kpi-card:nth-child(5)){grid-template-columns:repeat(5,minmax(0,1fr))}
body.app-page .skills-balance{display:grid;grid-template-columns:minmax(0,2fr) repeat(3,minmax(0,1fr));gap:12px;align-items:stretch}
body.app-page .kpi-card{
 --kpi-color:#7253b5;--kpi-tint:#f0e9ff;--kpi-symbol:url('kpi-total.svg');
 display:flex!important;flex-direction:column!important;align-items:flex-start!important;justify-content:center!important;gap:5px!important;position:relative;isolation:isolate;min-width:0;min-height:94px;height:auto;margin:0!important;padding:15px 62px 15px 18px!important;
 border:1px solid var(--border,#dce5ee)!important;border-left:4px solid var(--kpi-color)!important;border-radius:15px!important;background:var(--readable-surface-bg,#fff)!important;color:var(--readable-surface,#203343)!important;box-shadow:0 3px 12px #16385406!important;text-align:left!important;text-decoration:none!important;overflow:visible;box-sizing:border-box;transition:box-shadow .18s ease,transform .18s ease;
}
body.app-page .kpi-card:before,body.app-page .kpi-card:after{content:'';position:absolute;pointer-events:none;display:block;box-sizing:border-box}
body.app-page .kpi-card:before{width:34px;height:34px;top:16px;right:14px;border-radius:11px;background:var(--kpi-tint)}
body.app-page .kpi-card:after{width:19px;height:19px;top:23px;right:21px;background:var(--kpi-color);mask-image:var(--kpi-symbol);mask-size:contain;mask-repeat:no-repeat;mask-position:center;-webkit-mask-image:var(--kpi-symbol);-webkit-mask-size:contain;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center}
body.app-page .kpi-card strong{display:block;order:0;font-size:28px!important;font-weight:760;line-height:1.12!important;letter-spacing:-.04em;margin:0!important;color:var(--readable-surface,#203343)!important;overflow-wrap:anywhere;font-variant-numeric:tabular-nums}
body.app-page .kpi-card span:not(.studio-icon){display:block;order:1;font-size:13px!important;font-weight:600;line-height:1.4!important;letter-spacing:0;margin:0!important;color:var(--readable-surface,#203343)!important;overflow-wrap:anywhere}
body.app-page .kpi-card small{display:block;order:2;width:100%;font-size:11px!important;font-weight:400;line-height:1.5!important;color:var(--readable-muted,#526575)!important;margin:3px 0 0!important;overflow-wrap:anywhere}
body.app-page .kpi-card progress{order:3;width:100%;height:7px;margin:6px 0 0;accent-color:var(--kpi-color)}
body.app-page .kpi-card.studio-metric>div{display:contents}body.app-page .kpi-card .studio-icon,body.app-page .kpi-card>b[aria-hidden]{display:none!important}
body.app-page a.kpi-card:hover{transform:translateY(-1px);box-shadow:0 6px 18px #16385414!important}
body.app-page a.kpi-card:focus-visible{outline:3px solid var(--readable-link,#1459a0);outline-offset:3px}
body.app-page .kpi-card:is(.is-selected,[aria-current=true],[aria-current=page]){outline:2px solid var(--kpi-color);outline-offset:1px}
/* Les couleurs expriment un état, de façon identique quel que soit l’écran. */
body.app-page :is(.kpi-card[data-kpi-tone=info],.kpi-card.stat-in_progress,.kpi-card.request-state-submitted,.kpi-card.request-state-in_progress,.studio-metrics>.kpi-card:first-child,.matrix-metrics>.kpi-card:first-child,.issue-stats>.kpi-card:nth-child(2),.improvement-stats>.kpi-card:nth-child(2),.ai-account-metrics>.kpi-card:nth-child(3),.pedagogical-kpis>.kpi-card:nth-child(4),.learner-record-kpis>.kpi-card:nth-child(3),.pedagogical-kpis>.kpi-card:nth-child(3),.learner-record-kpis>.kpi-card:nth-child(2)) {--kpi-color:#287fa7;--kpi-tint:#e3f1fb;--kpi-symbol:url('kpi-info.svg')}
body.app-page :is(.kpi-card[data-kpi-tone=success],.kpi-card.balance-acquired,.kpi-card.stat-completed,.kpi-card.review-metric-approved,.kpi-card.request-state-done,.results-overview>.kpi-card:nth-child(3),.studio-metrics>.kpi-card:nth-child(4),.formation-sheet-metrics>.kpi-card:nth-child(3),.matrix-metrics>.kpi-card:nth-child(3),.user-formation-stats>.kpi-card:nth-child(3),.quality-practical-counts>.kpi-card:nth-child(4),.improvement-stats>.kpi-card:nth-child(4),.issue-stats>.kpi-card:nth-child(3),.ai-account-metrics>.kpi-card:nth-child(2),.ai-account-budget-metrics>.kpi-card:nth-child(3),.pedagogical-kpis>.kpi-card:nth-child(2)){--kpi-color:#16836b;--kpi-tint:#dff5eb;--kpi-symbol:url('kpi-success.svg')}
body.app-page :is(.kpi-card[data-kpi-tone=warning],.kpi-card.balance-pending,.kpi-card.stat-awaiting_validation,.kpi-card.stat-awaiting_feedback,.kpi-card.review-metric-pending,.kpi-card.request-state-needs_info,.results-overview>.kpi-card:nth-child(2),.studio-metrics>.kpi-card:nth-child(3),.quality-practical-counts>.kpi-card:first-child,.improvement-stats>.kpi-card:first-child,.ai-account-metrics>.kpi-card:first-child,.pedagogical-kpis>.kpi-card:nth-child(5)){--kpi-color:#a66e12;--kpi-tint:#fff0cf;--kpi-symbol:url('kpi-warning.svg')}
body.app-page :is(.kpi-card[data-kpi-tone=danger],.kpi-card.review-metric-changes,.matrix-metrics>.kpi-card:nth-child(4),.quality-practical-counts>.kpi-card:nth-child(2),.quality-practical-counts>.kpi-card:nth-child(3),.improvement-stats>.kpi-card:nth-child(3),.issue-stats>.kpi-card:first-child){--kpi-color:#bd415c;--kpi-tint:#ffe7ee;--kpi-symbol:url('kpi-danger.svg')}
body.app-page :is(.kpi-card.stat-not_started,.kpi-card.request-state-draft,.matrix-metrics>.kpi-card:nth-child(2),.user-formation-stats>.kpi-card:nth-child(4)){--kpi-color:#657180;--kpi-tint:#edf0f4}
body.app-page .skills-balance>.kpi-context{margin:0;min-width:0;padding:16px 18px;border:1px solid var(--border,#dce5ee);border-radius:15px;background:var(--readable-surface-bg,#fff);color:var(--readable-surface,#203343);box-shadow:0 3px 12px #16385406}
body.app-page .skills-balance>.kpi-context strong{color:inherit;font-size:14px}.skills-balance>.kpi-context small{color:var(--readable-muted,#526575)}
@media(max-width:1150px){body.app-page .request-list-metrics:has(>.kpi-card:nth-child(5)){grid-template-columns:repeat(3,minmax(0,1fr))}body.app-page .skills-balance{grid-template-columns:repeat(3,minmax(0,1fr))}body.app-page .skills-balance>.kpi-context{grid-column:1/-1}}
@media(max-width:850px){body.app-page :is(.results-overview,.studio-metrics,.dashboard-stats,.review-inbox-metrics,.formation-sheet-metrics,.request-list-metrics,.pedagogical-kpis,.learner-record-kpis,.matrix-metrics,.ai-account-metrics,.ai-account-budget-metrics,.user-formation-stats,.quality-practical-counts,.issue-stats,.improvement-stats,.kpi-grid,.skills-balance,.followup-priorities,.people-overview,.account-activity){grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:10px}body.app-page .kpi-card{min-height:90px;padding:14px 54px 14px 14px!important}body.app-page .kpi-card strong{font-size:25px!important}body.app-page .kpi-card:before{right:10px;width:30px;height:30px}body.app-page .kpi-card:after{right:16px;width:18px;height:18px;top:22px}}
@media(max-width:420px){body.app-page :is(.results-overview,.studio-metrics,.dashboard-stats,.review-inbox-metrics,.formation-sheet-metrics,.request-list-metrics,.pedagogical-kpis,.learner-record-kpis,.matrix-metrics,.ai-account-metrics,.ai-account-budget-metrics,.user-formation-stats,.quality-practical-counts,.issue-stats,.improvement-stats,.kpi-grid,.skills-balance,.followup-priorities,.people-overview,.account-activity){grid-template-columns:1fr!important}}
@media(prefers-reduced-motion:reduce){body.app-page .kpi-card{transition:none}body.app-page a.kpi-card:hover{transform:none}}
@media print{body.app-page .kpi-card{background:white!important;color:black!important;box-shadow:none!important;transform:none!important;padding:12px!important;break-inside:avoid}body.app-page .kpi-card:before,body.app-page .kpi-card:after{display:none}body.app-page .kpi-card strong,body.app-page .kpi-card span,body.app-page .kpi-card small{color:black!important}}

body.app-page .kpi-card[data-kpi-tone=info]{--kpi-color:#287fa7;--kpi-tint:#e3f1fb;--kpi-symbol:url('kpi-info.svg')}
body.app-page .kpi-card[data-kpi-tone=success]{--kpi-color:#16836b;--kpi-tint:#dff5eb;--kpi-symbol:url('kpi-success.svg')}
body.app-page .kpi-card[data-kpi-tone=warning]{--kpi-color:#a66e12;--kpi-tint:#fff0cf;--kpi-symbol:url('kpi-warning.svg')}
body.app-page .kpi-card[data-kpi-tone=danger]{--kpi-color:#bd415c;--kpi-tint:#ffe7ee;--kpi-symbol:url('kpi-danger.svg')}

/* V0.53.56 — Cartes pastel et petits ronds pleins regroupés à droite.
   Palette volontairement claire : contraste stable sur tous les thèmes. */
body.app-page .kpi-card{--kpi-fill:#ebdffa;background:var(--kpi-fill)!important;color:#203343!important;border:1px solid #2033430c!important;border-left:1px solid #2033430c!important;overflow:hidden;border-radius:17px!important;box-shadow:none!important;padding-right:64px!important}
body.app-page .kpi-card:before,body.app-page .kpi-card:after{border-radius:50%;background:transparent;opacity:.14;mask:none;-webkit-mask:none;z-index:-1;pointer-events:none;transform:none;box-sizing:border-box}
/* Ronds pleins compacts, regroupés dans l’angle droit. */
body.app-page .kpi-card:before{width:66px;height:66px;top:50%;right:-30px;bottom:auto;transform:translateY(-50%);background:var(--kpi-color);border:0;box-shadow:none;opacity:.12}
body.app-page .kpi-card:after{width:30px;height:30px;top:13px;right:18px;bottom:auto;transform:none;background:var(--kpi-color);border:0;box-shadow:none;opacity:.09}
body.app-page .kpi-card strong,body.app-page .kpi-card span:not(.studio-icon){color:#203343!important;position:relative}
body.app-page .kpi-card small{color:#405460!important;position:relative}
body.app-page :is(.kpi-card[data-kpi-tone=info],.kpi-card.stat-in_progress,.kpi-card.request-state-submitted,.kpi-card.request-state-in_progress,.studio-metrics>.kpi-card:first-child,.matrix-metrics>.kpi-card:first-child,.issue-stats>.kpi-card:nth-child(2),.improvement-stats>.kpi-card:nth-child(2),.ai-account-metrics>.kpi-card:nth-child(3),.pedagogical-kpis>.kpi-card:nth-child(4),.learner-record-kpis>.kpi-card:nth-child(3),.pedagogical-kpis>.kpi-card:nth-child(3),.learner-record-kpis>.kpi-card:nth-child(2)){--kpi-fill:#dfedf8}
body.app-page :is(.kpi-card[data-kpi-tone=success],.kpi-card.balance-acquired,.kpi-card.stat-completed,.kpi-card.review-metric-approved,.kpi-card.request-state-done,.results-overview>.kpi-card:nth-child(3),.studio-metrics>.kpi-card:nth-child(4),.formation-sheet-metrics>.kpi-card:nth-child(3),.matrix-metrics>.kpi-card:nth-child(3),.user-formation-stats>.kpi-card:nth-child(3),.quality-practical-counts>.kpi-card:nth-child(4),.improvement-stats>.kpi-card:nth-child(4),.issue-stats>.kpi-card:nth-child(3),.ai-account-metrics>.kpi-card:nth-child(2),.ai-account-budget-metrics>.kpi-card:nth-child(3),.pedagogical-kpis>.kpi-card:nth-child(2)){--kpi-fill:#ccf0e3}
body.app-page :is(.kpi-card[data-kpi-tone=warning],.kpi-card.balance-pending,.kpi-card.stat-awaiting_validation,.kpi-card.stat-awaiting_feedback,.kpi-card.review-metric-pending,.kpi-card.request-state-needs_info,.results-overview>.kpi-card:nth-child(2),.studio-metrics>.kpi-card:nth-child(3),.quality-practical-counts>.kpi-card:first-child,.improvement-stats>.kpi-card:first-child,.ai-account-metrics>.kpi-card:first-child,.pedagogical-kpis>.kpi-card:nth-child(5)){--kpi-fill:#fff0c9}
body.app-page :is(.kpi-card[data-kpi-tone=danger],.kpi-card.review-metric-changes,.matrix-metrics>.kpi-card:nth-child(4),.quality-practical-counts>.kpi-card:nth-child(2),.quality-practical-counts>.kpi-card:nth-child(3),.improvement-stats>.kpi-card:nth-child(3),.issue-stats>.kpi-card:first-child){--kpi-fill:#ffe1e9}
body.app-page :is(.kpi-card.stat-not_started,.kpi-card.request-state-draft,.matrix-metrics>.kpi-card:nth-child(2),.user-formation-stats>.kpi-card:nth-child(4)){--kpi-fill:#e9edf3}
body.app-page .kpi-card[data-kpi-tone=info]{--kpi-fill:#dfedf8}body.app-page .kpi-card[data-kpi-tone=success]{--kpi-fill:#ccf0e3}body.app-page .kpi-card[data-kpi-tone=warning]{--kpi-fill:#fff0c9}body.app-page .kpi-card[data-kpi-tone=danger]{--kpi-fill:#ffe1e9}
@media print{body.app-page .kpi-card{background:white!important}body.app-page .kpi-card strong,body.app-page .kpi-card span,body.app-page .kpi-card small{color:black!important}}

/* V0.53.61 — Les échéances, annuaires et comptes utilisent aussi le composant commun. */
body.app-page .followup-priorities{grid-template-columns:repeat(5,minmax(0,1fr))}
body.app-page .people-overview{grid-template-columns:repeat(3,minmax(0,1fr))}
@media(max-width:1150px){body.app-page .followup-priorities{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:850px){body.app-page :is(.followup-priorities,.people-overview,.account-activity){grid-template-columns:repeat(2,minmax(0,1fr))!important}}
@media(max-width:420px){body.app-page :is(.followup-priorities,.people-overview,.account-activity){grid-template-columns:1fr!important}}
