/* ════════════════════════════════════════════════
   Quitus — Charte graphique moderne
   Brand : cyan primaire, vert accent. Tokens & patterns inspirés de cambatani.
   ════════════════════════════════════════════════ */
:root {
	/* Brand */
	--brand-cyan:        #00D1CF;
	--brand-cyan-dark:   #0096B8;
	--brand-cyan-darker: #007A96;
	--brand-green:       #014D4E;
	--brand-green-dark:  #0E9F70;

	/* Design tokens */
	--accent:        var(--brand-cyan);
	--accent-light:  #5BC9E5;
	--accent-dark:   var(--brand-cyan-darker);
	--accent-soft:   rgba(0, 180, 216, 0.10);
	--secondary:     var(--brand-green);
	--secondary-dark:var(--brand-green-dark);
	--secondary-soft:rgba(16, 185, 129, 0.10);

	--ink:       #0F172A;
	--ink-soft:  #334155;
	--muted:     #64748B;
	--line:      #E2E8F0;
	--line-soft: #F1F5F9;
	--canvas:    #F8FAFC;
	--paper:     #FFFFFF;

	--notification-bg: linear-gradient(135deg, var(--brand-cyan) 0%, var(--brand-cyan-darker) 100%);

	/* Rayons + ombres : hérités du système canonique iManage (imanage.css).
	   Plus d'override local — échelle radius 6/10/14 + élévation neutre partagées. */

	--font-stack: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;

	/* Bootstrap overrides */
	--bs-primary:          var(--brand-cyan);
	--bs-primary-rgb:      0, 180, 216;
	--bs-link-color:       var(--brand-cyan-dark);
	--bs-link-hover-color: var(--brand-cyan-darker);
}

html, body {
	font-family: var(--font-stack);
	color: var(--ink);
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
}
/* Fond porté par html (canvas) + body::after (moitié droite assombrie) — défini dans imanage.css */
html { background: var(--canvas); }
body { background: transparent; }

a, a:hover { color: var(--accent-dark); }
a { text-decoration: none; }

::selection { background: var(--accent-soft); color: var(--accent-dark); }

/* ─── Top notification bar ───────────────────────────────── */
#notification_main_bar { background: var(--notification-bg); }
#notification_box .navbar-brand img { height: 32px; }

/* Notifications slide-in : aligne les bg-* sur la palette de marque */
#notification_message_bar.bg-success { background: var(--notification-bg) !important; }
#notification_message_bar.bg-info    { background: var(--notification-bg) !important; }
#notification_message_bar.bg-warning { background-color: #B45309 !important; }
#notification_message_bar.bg-danger  { background-color: #B91C1C !important; }

.notification_main_content .navbar-brand {
	color: #FFFFFF;
	font-weight: 700;
	letter-spacing: 0.18em;
	font-size: var(--font-size-menu);
	text-decoration: none;
}
.notification_main_content .navbar-brand:hover { color: #FFFFFF; }

#content_title {
	color: rgba(255, 255, 255, 0.92);
	font-size: 13px;
	font-weight: 500;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	text-align: center;
}

.session_controls {
	font-size: 15px;
	opacity: 0.7;
	transition: opacity 0.15s ease, transform 0.15s ease;
}
.session_controls:hover { opacity: 1; transform: translateY(-1px); cursor: pointer; }

/* ─── Notification bar : ordre visuel [langue] [thème] [print] [reload] ── */
#language_switcher       { order: 1; }
#imanage_theme_toggle    { order: 2; }
#expand_content          { order: 3; }
#reload_content          { order: 4; }

/* ─── Navigation principale ──────────────────────────────── */
.navbar {
	background: var(--paper);
	border-bottom: 1px solid var(--line);
	padding: 6px 0;
}
.navbar .navbar-nav { align-items: center; column-gap: 0; }
.navbar .navbar-nav .nav-item.dropdown {
	position: relative;
	display: flex;
	align-items: center;
}
.navbar .navbar-nav .nav-item.dropdown + .nav-item.dropdown::before {
	content: "";
	width: 1px; height: 18px;
	background: var(--line);
	margin: 0 4px;
	align-self: center;
	opacity: 0.7;
}
.navbar .nav-link {
	color: var(--ink-soft);
	font-weight: 500;
	font-size: var(--font-size-menu);
	line-height: 1;
	padding: 9px 14px !important;
	border-radius: 6px;
	display: inline-flex;
	align-items: center;
	gap: 6px;
	transition: background 0.12s ease, color 0.12s ease;
}
.navbar .nav-link:hover {
	background: var(--line-soft);
	color: var(--accent-dark);
}
.navbar .nav-link.dropdown-toggle.show,
.navbar .nav-link.dropdown-toggle[aria-expanded="true"] {
	background: var(--accent-soft);
	color: var(--accent-dark);
}
.navbar .nav-link.dropdown-toggle.show .fa-regular,
.navbar .nav-link.dropdown-toggle.show .fa-solid,
.navbar .nav-link.dropdown-toggle[aria-expanded="true"] .fa-regular,
.navbar .nav-link.dropdown-toggle[aria-expanded="true"] .fa-solid {
	color: var(--accent-dark);
}
.navbar .nav-link .fa-regular,
.navbar .nav-link .fa-solid {
	color: var(--muted);
	font-size: 14px;
	width: 18px;
	text-align: center;
	flex-shrink: 0;
}
.navbar .nav-link:hover .fa-regular,
.navbar .nav-link:hover .fa-solid { color: var(--accent-dark); }
.navbar .nav-link.dropdown-toggle::after {
	margin-left: 4px;
	vertical-align: middle;
	opacity: 0.55;
}

.dropdown-menu {
	border: 1px solid var(--line);
	border-radius: var(--radius-sm);
	box-shadow: var(--shadow-md);
	padding: 6px;
	min-width: 220px;
	z-index: 1045;
}
.dropdown-item {
	padding: 7px 12px;
	border-radius: 6px;
	font-size: var(--font-size-menu);
	color: var(--ink-soft);
}
.dropdown-item:hover, .dropdown-item:focus {
	background: var(--accent-soft);
	color: var(--accent-dark);
}
.dropdown-divider {
	margin: 4px 6px;
	border-top: 1px solid var(--line-soft);
}

/* Zone utilisateur */
#user {
	font-size: 13px;
	color: var(--ink);
	display: inline-flex;
	align-items: center;
	gap: 5px;
}
#user strong { font-weight: 600; }
#user .fa-regular { color: var(--muted); font-size: 12px; }
#app_date {
	font-size: 11px;
	color: var(--muted);
	text-transform: capitalize;
}

/* ─── Buttons ────────────────────────────────────────────── */
.btn { border-radius: var(--radius); font-weight: 500; transition: all 0.15s ease; }
.btn-sm { font-size: 12.5px; padding: 5px 12px; }

.btn-primary {
	--bs-btn-bg:                    var(--brand-cyan);
	--bs-btn-border-color:          var(--brand-cyan);
	--bs-btn-hover-bg:              var(--brand-cyan-dark);
	--bs-btn-hover-border-color:    var(--brand-cyan-dark);
	--bs-btn-active-bg:             var(--brand-cyan-darker);
	--bs-btn-active-border-color:   var(--brand-cyan-darker);
	--bs-btn-disabled-bg:           var(--brand-cyan);
	--bs-btn-disabled-border-color: var(--brand-cyan);
	box-shadow: 0 1px 2px rgba(0, 180, 216, 0.18);
}
.btn-primary:hover, .btn-primary:active {
	box-shadow: 0 4px 10px rgba(0, 150, 184, 0.28);
}

.btn-outline-primary {
	--bs-btn-color:              var(--brand-cyan-dark);
	--bs-btn-border-color:       var(--line);
	--bs-btn-bg:                 var(--paper);
	--bs-btn-hover-bg:           var(--brand-cyan);
	--bs-btn-hover-border-color: var(--brand-cyan);
	--bs-btn-hover-color:        #fff;
	--bs-btn-active-bg:          var(--brand-cyan-dark);
}

.btn-accent {
	--bs-btn-color:                 #fff;
	--bs-btn-bg:                    var(--brand-green);
	--bs-btn-border-color:          var(--brand-green);
	--bs-btn-hover-bg:              var(--brand-green-dark);
	--bs-btn-hover-border-color:    var(--brand-green-dark);
	--bs-btn-active-bg:             var(--brand-green-dark);
}

.btn-outline-danger {
	--bs-btn-color:              #DC2626;
	--bs-btn-border-color:       var(--line);
	--bs-btn-bg:                 var(--paper);
	--bs-btn-hover-bg:           #DC2626;
	--bs-btn-hover-border-color: #DC2626;
	--bs-btn-hover-color:        #fff;
}

.btn-light {
	background: var(--paper);
	border-color: var(--line);
	color: var(--ink-soft);
}
.btn-light:hover { background: var(--line-soft); border-color: var(--line); color: var(--ink); }

/* ─── Cards ──────────────────────────────────────────────── */
.card {
	border: 1px solid var(--line);
	border-radius: var(--radius);
	box-shadow: var(--shadow-sm);
	background: var(--paper);
	transition: box-shadow 0.18s ease, transform 0.18s ease, border-color 0.18s ease;
}
.card:hover { box-shadow: var(--shadow-md); }

a.card { color: inherit; }
a.card:hover {
	border-color: var(--accent-light);
	transform: translateY(-1px);
}
a.card:hover h3 { color: var(--accent-dark); }

.card-body { padding: 16px; }
.card-header {
	background: var(--paper);
	border-bottom: 1px solid var(--line);
	border-top-left-radius: var(--radius);
	border-top-right-radius: var(--radius);
	padding: 12px 16px;
	font-size: var(--font-size-base);
	font-weight: 500;
	color: var(--ink);
}
.card-header.bg-warning,
.card-header.bg-info { background: var(--paper) !important; }
.card.border-warning { border-color: var(--line) !important; }
.card.border-info    { border-color: var(--line) !important; }

.list-group-item {
	border-color: var(--line-soft);
	padding: 12px 16px;
	font-size: var(--font-size-base);
}
.list-group-item:first-child { border-top: none; }
.list-group-item:last-child  { border-bottom: none; }

/* ─── Page title (content title) — plat, sans carte ────────── */
.content-title {
	color: var(--ink);
	font-weight: 600;
	font-size: 18px;
	letter-spacing: -0.01em;
	padding: 0;
	background: transparent;
	border: 0;
	border-radius: 0;
	box-shadow: none;
	margin: 0 0 14px;
	display: flex;
	align-items: center;
	gap: 8px;
}
/* Pas d'icône à gauche du titre (style plat iManage) */
.content-title > .fa-solid:first-child,
.content-title > .fa-regular:first-child,
.content-title > .fa-brands:first-child {
	display: none;
}

/* Espacement régulier entre les boutons d'action du titre */
.content-title-actions {
	display: inline-flex;
	align-items: center;
	gap: 8px;
}


/* ─── Rayon uniforme 5 px sur les contrôles d'interface ─── */
.btn,
.form-control,
.form-select,
.input-group-text,
.dropdown-menu,
.modal-content,
.card,
.alert,
.badge,
input[type="text"],
input[type="email"],
input[type="password"],
input[type="search"],
input[type="tel"],
input[type="url"],
input[type="number"],
input[type="date"],
textarea,
select {
	border-radius: 5px;
}

/* Tuiles (cards cliquables) */
a.card .card-body { padding: 18px 12px; }
a.card .fa-2x { font-size: 1.6em; opacity: 0.9; }
a.card h3 {
	font-size: var(--font-size-xl);
	font-weight: 700;
	color: var(--ink);
	margin: 8px 0 2px;
	letter-spacing: -0.02em;
}
a.card small {
	font-size: 11.5px;
	color: var(--muted);
	text-transform: uppercase;
	letter-spacing: 0.08em;
	font-weight: 500;
}

.text-primary { color: var(--accent-dark) !important; }
.text-accent  { color: var(--secondary-dark) !important; }
.text-info    { color: var(--accent-dark) !important; }
.text-success { color: var(--secondary-dark) !important; }
.text-muted   { color: var(--muted) !important; }

/* ─── Badges (subtils) ───────────────────────────────────── */
.badge { padding: 4px 8px; border-radius: 6px; font-size: 11.5px; letter-spacing: 0.02em; font-weight: 500; }
.badge.bg-primary  { background: var(--brand-cyan) !important; color: #fff; }
.badge.bg-accent   { background: var(--brand-green) !important; color: #fff; }
.badge.bg-light    { background: var(--line-soft) !important; color: var(--ink-soft) !important; }
.badge.bg-warning  { background: rgba(245, 158, 11, 0.15) !important; color: #B45309 !important; }
.badge.bg-info     { background: var(--accent-soft) !important; color: var(--accent-dark) !important; }
.badge.bg-success  { background: var(--secondary-soft) !important; color: var(--secondary-dark) !important; }
.badge.bg-danger   { background: rgba(220, 38, 38, 0.12) !important; color: #B91C1C !important; }
.badge.bg-secondary{ background: var(--line-soft) !important; color: var(--muted) !important; }

/* ─── Form controls ──────────────────────────────────────── */
.form-control, .form-select {
	border: 1px solid var(--line);
	border-radius: var(--radius);
	padding: 8px 12px;
	font-size: var(--font-size-base);
	color: var(--ink);
	background: var(--paper);
	transition: border-color 0.12s ease, box-shadow 0.12s ease;
}
.form-control:focus, .form-select:focus {
	border-color: var(--accent);
	box-shadow: 0 0 0 3px rgba(0, 180, 216, 0.15);
	outline: none;
}
.form-control-sm, .form-select-sm { font-size: 12.5px; padding: 6px 10px; }

.form-label {
	font-size: 12px;
	font-weight: 500;
	color: var(--ink-soft);
	text-transform: uppercase;
	letter-spacing: 0.06em;
	margin-bottom: 4px;
}
.input-group-text {
	background: var(--line-soft);
	border-color: var(--line);
	color: var(--muted);
	font-size: var(--font-size-base);
}

/* ─── Tabs ───────────────────────────────────────────────── */
.nav-tabs { border-bottom: 1px solid var(--line); }
.nav-tabs .nav-link {
	color: var(--muted);
	border: none;
	border-bottom: 2px solid transparent;
	padding: 9px 14px;
	font-size: 13px;
	font-weight: 500;
	background: transparent;
}
.nav-tabs .nav-link:hover { color: var(--ink); border-color: transparent; }
.nav-tabs .nav-link.active {
	color: var(--accent-dark);
	border-bottom-color: var(--accent);
	background: transparent;
}
.nav-pills .nav-link {
	color: var(--muted);
	background: var(--line-soft);
	font-size: 13px;
	padding: 7px 14px;
	border-radius: var(--radius);
}
.nav-pills .nav-link.active { background: var(--accent); color: #fff; }

/* List_view : styles propres au composant iManage (voir list-view.css) — pas de surcharge ici */

code {
	background: var(--line-soft);
	padding: 1px 5px;
	border-radius: 4px;
	font-size: 0.85em;
	color: var(--ink-soft);
}

/* ─── Modals ─────────────────────────────────────────────── */
.modal-content {
	border: none;
	border-radius: var(--radius-lg);
	box-shadow: var(--shadow-lg);
}
.modal-header {
	border-bottom: 1px solid var(--line);
	padding: 16px 20px;
}
.modal-body { padding: 20px; }
.modal-footer { border-top: 1px solid var(--line); padding: 14px 20px; }

/* Note : le styling du #login_box (dialog, content, layout) vient du
   composant partagé iManage/css/login_box.css. */

/* ─── Detail (dl) ────────────────────────────────────────── */
dl.row dt {
	font-size: 12px;
	color: var(--muted);
	text-transform: uppercase;
	letter-spacing: 0.06em;
	font-weight: 500;
	padding: 6px 12px 6px 0;
}
dl.row dd { padding: 6px 0; font-size: var(--font-size-base); color: var(--ink); }
.table-sm th, .table-sm td { padding: 6px 8px; font-size: var(--font-size-base); }
.table-sm th { color: var(--muted); font-weight: 500; }

/* ─── Alerts ─────────────────────────────────────────────── */
.alert {
	border: 1px solid transparent;
	border-radius: var(--radius);
	padding: 12px 16px;
	font-size: var(--font-size-base);
}
.alert-warning { background: rgba(245, 158, 11, 0.08); border-color: rgba(245, 158, 11, 0.25); color: #B45309; }
.alert-info    { background: var(--accent-soft); border-color: rgba(0, 180, 216, 0.25); color: var(--accent-dark); }
.alert-success { background: var(--secondary-soft); border-color: rgba(16, 185, 129, 0.25); color: var(--secondary-dark); }
.alert-danger  { background: rgba(220, 38, 38, 0.08); border-color: rgba(220, 38, 38, 0.2); color: #991B1B; }

/* ─── Pagination ────────────────────────────────────────── */
.page-item.active .page-link {
	background-color: var(--brand-cyan);
	border-color: var(--brand-cyan);
}

/* ─── Welcome / empty pane ──────────────────────────────── */
.welcome-pane {
	max-width: 520px;
	margin: 64px auto 0;
	padding: 48px 32px;
	background: var(--paper);
	border: 1px solid var(--line);
	border-radius: var(--radius-lg);
	box-shadow: var(--shadow-sm);
}
.welcome-icon {
	width: 64px;
	height: 64px;
	margin: 0 auto;
	border-radius: 50%;
	background: var(--accent-soft);
	color: var(--accent-dark);
	display: flex;
	align-items: center;
	justify-content: center;
	font-size: 26px;
}
.welcome-title {
	font-size: var(--font-size-xl);
	font-weight: 600;
	letter-spacing: 0.06em;
	color: var(--ink);
}
.welcome-sub { font-size: var(--font-size-base); line-height: 1.55; }

/* ════════════════════════════════════════════════
   Utilitaires Quitus
   ════════════════════════════════════════════════ */
.brand-gradient { background: linear-gradient(135deg, var(--brand-cyan), var(--brand-green)); color: #fff; }

/* Catégories de processus (ISO 9001) */
.cat-badge      { text-transform: capitalize; font-weight: 500; }
.cat-leadership { background: var(--brand-cyan);  color: #fff; }
.cat-core       { background: var(--brand-green); color: #fff; }
.cat-support    { background: var(--muted);       color: #fff; }

/* KVP priorities — alignées sur la palette Quitus */
.prio-low      { background: var(--muted);      color: #fff; }
.prio-medium   { background: var(--brand-cyan); color: var(--ink); }
.prio-high     { background: #F59E0B;           color: var(--ink); }
.prio-critical { background: #DC2626;           color: #fff; }

/* KPI status */
.status-on_track  { background: var(--brand-green); color: #fff; }
.status-off_track { background: #DC2626;            color: #fff; }
.status-no_data   { background: var(--line-soft);   color: var(--muted); }

/* ════════════════════════════════════════════════
   Dashboard v3 — Visual, modern, inspired by best-in-class
   ════════════════════════════════════════════════ */
.dashboard-v3 {
    --ink:     #0f172a;
    --mute:    #64748b;
    --line:    #e2e8f0;
    --surf:    #ffffff;
    --soft:    #f8fafc;
    --softer:  #f1f5f9;
    --ok:      #059669;
    --warn:    #d97706;
    --bad:     #dc2626;
    --cyan:    #00D1CF;
    --green:   #014D4E;
    color: var(--ink);
    font-feature-settings: "tnum" 1, "ss01" 1;
    padding-bottom: 32px;
}
.dashboard-v3 h4 { font-size: var(--font-size-lg); font-weight: 600; margin: 0; letter-spacing: -0.01em; }

/* ───── Hero ────────────────────────────────────────────── */
.dashboard-v3 .g-hero {
    display: grid;
    grid-template-columns: 190px 1fr;
    gap: 28px;
    align-items: center;
    padding: 28px 32px;
    background:
        radial-gradient(circle at 15% 30%, rgba(0, 180, 216, 0.10), transparent 50%),
        radial-gradient(circle at 85% 70%, rgba(16, 185, 129, 0.08), transparent 50%),
        linear-gradient(135deg, #ffffff, #f8fafc);
    border: 1px solid var(--line);
    border-radius: 16px;
    margin-bottom: 20px;
    box-shadow: 0 1px 3px rgba(15, 23, 42, 0.04);
}
.dashboard-v3 .g-hero-gauge { position: relative; width: 170px; height: 170px; text-align: center; }
.dashboard-v3 .g-hero-gauge-label {
    font-size: 12px; color: var(--mute); margin-top: 4px;
    text-transform: uppercase; letter-spacing: 0.06em; font-weight: 500;
}
.dashboard-v3 .g-gauge { width: 140px; height: 140px; transform: rotate(-90deg); }
.dashboard-v3 .g-gauge-track {
    fill: none; stroke: var(--softer); stroke-width: 8;
}
.dashboard-v3 .g-gauge-fill {
    fill: none; stroke-width: 8; stroke-linecap: round;
    transition: stroke-dashoffset 900ms cubic-bezier(.2,.8,.2,1);
}
.dashboard-v3 .g-gauge-value {
    fill: var(--ink); font-size: var(--font-size-xl); font-weight: 600;
    transform: rotate(90deg); transform-origin: center;
    letter-spacing: -0.02em;
}

.dashboard-v3 .g-hero-body { min-width: 0; }
.dashboard-v3 .g-hero-greeting {
    font-size: var(--font-size-xl); font-weight: 600; letter-spacing: -0.02em;
    line-height: 1.15; color: var(--ink); margin-bottom: 4px;
}
.dashboard-v3 .g-hero-subtitle {
    font-size: var(--font-size-base); color: var(--mute); margin-bottom: 14px;
}
.dashboard-v3 .g-hero-roles {
    display: flex; flex-wrap: wrap; gap: 6px;
}

/* Pills */
.dashboard-v3 .g-pill {
    display: inline-block; padding: 4px 12px; border-radius: 999px;
    background: rgba(0, 180, 216, 0.08); color: var(--brand-cyan-dark);
    border: 1px solid rgba(0, 180, 216, 0.25);
    font-size: 12.5px; font-weight: 500;
}
.dashboard-v3 .g-pill-sm {
    padding: 1px 8px; font-size: 11.5px;
    background: var(--softer); color: var(--mute); border: 1px solid var(--line);
}
.dashboard-v3 .g-pill-empty {
    background: var(--softer); color: var(--mute); border-color: var(--line);
}

/* ───── KPI strip ──────────────────────────────────────── */
.dashboard-v3 .g-kpis {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    gap: 14px;
    margin-bottom: 22px;
}
.dashboard-v3 .g-kpi-card {
    background: var(--surf);
    border: 1px solid var(--line);
    border-radius: 12px;
    padding: 16px 18px;
    /* Override iManage.css qui définit display:flex pour un layout icon+body :
       le template rprt_dashboard.php utilise plutôt head/value/viz/hint en stack vertical. */
    display: block;
    transition: box-shadow .2s, transform .2s;
}
.dashboard-v3 .g-kpi-card:hover {
    box-shadow: 0 4px 12px rgba(15, 23, 42, 0.06);
    transform: translateY(-1px);
}
.dashboard-v3 .g-kpi-head {
    display: flex; align-items: center; gap: 8px;
    margin-bottom: 8px;
}
.dashboard-v3 .g-kpi-icon {
    width: 28px; height: 28px; border-radius: 7px;
    background: rgba(0, 180, 216, 0.10); color: var(--brand-cyan-dark);
    display: inline-flex; align-items: center; justify-content: center;
    font-size: 13px;
}
.dashboard-v3 .g-kpi-label {
    font-size: 12px; color: var(--mute);
    text-transform: uppercase; letter-spacing: 0.05em; font-weight: 500;
}
.dashboard-v3 .g-kpi-value {
    font-size: var(--font-size-xl); font-weight: 600; letter-spacing: -0.02em;
    line-height: 1; color: var(--ink); margin-bottom: 10px;
}
.dashboard-v3 .g-kpi-viz { margin-bottom: 6px; }
.dashboard-v3 .g-kpi-hint { font-size: 12px; color: var(--mute); }

/* Progress bars */
.dashboard-v3 .g-bar {
    width: 100%; height: 6px; background: var(--softer); border-radius: 4px; overflow: hidden;
}
.dashboard-v3 .g-bar-fill {
    height: 100%; border-radius: 4px;
    transition: width 600ms cubic-bezier(.2,.8,.2,1);
}
.dashboard-v3 .g-bar-ok   .g-bar-fill { background: var(--ok); }
.dashboard-v3 .g-bar-warn .g-bar-fill { background: var(--warn); }
.dashboard-v3 .g-bar-bad  .g-bar-fill { background: var(--bad); }
.dashboard-v3 .g-bar-empty { background: var(--softer); }

/* Dots */
.dashboard-v3 .g-dot {
    display: inline-block; width: 8px; height: 8px; border-radius: 50%;
    vertical-align: middle;
}
.dashboard-v3 .g-dots { display: flex; align-items: center; gap: 6px; }

/* ───── Cards (generic) ────────────────────────────────── */
.dashboard-v3 .g-card {
    background: var(--surf);
    border: 1px solid var(--line);
    border-radius: 12px;
    padding: 22px 24px;
    margin-bottom: 20px;
}
.dashboard-v3 .g-card-head {
    display: flex; align-items: center; gap: 10px;
    margin-bottom: 14px;
}
.dashboard-v3 .g-card-empty {
    display: flex; align-items: center; gap: 14px;
    color: var(--mute); font-size: var(--font-size-base);
}
.dashboard-v3 .g-empty-ico {
    width: 40px; height: 40px; border-radius: 50%;
    background: rgba(16, 185, 129, 0.12); color: var(--green);
    display: inline-flex; align-items: center; justify-content: center;
    font-size: 16px;
}

/* List rows */
.dashboard-v3 .g-list { list-style: none; padding: 0; margin: 0; }
.dashboard-v3 .g-row {
    display: flex; align-items: center; gap: 14px;
    padding: 14px 0;
    border-bottom: 1px solid var(--line);
}
.dashboard-v3 .g-row:last-child { border-bottom: 0; padding-bottom: 0; }
.dashboard-v3 .g-row:first-child { padding-top: 0; }
.dashboard-v3 .g-row-icon {
    width: 36px; height: 36px; border-radius: 9px;
    background: var(--softer); color: var(--mute);
    display: inline-flex; align-items: center; justify-content: center;
    flex-shrink: 0; font-size: 14px;
}
.dashboard-v3 .g-row-main { flex: 1; min-width: 0; }
.dashboard-v3 .g-row-title {
    font-size: var(--font-size-base); font-weight: 500; color: var(--ink); margin-bottom: 3px;
}
.dashboard-v3 .g-row-meta {
    font-size: 12.5px; color: var(--mute);
    display: flex; flex-wrap: wrap; gap: 6px; align-items: center;
}
.dashboard-v3 .g-row-actions { display: flex; gap: 6px; flex-shrink: 0; }

.dashboard-v3 .g-meta-tag {
    padding: 1px 8px; border-radius: 4px;
    background: rgba(0, 180, 216, 0.08); color: var(--brand-cyan-dark);
    font-size: 11px; font-weight: 500;
}
.dashboard-v3 .g-meta-code {
    font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
    font-size: 12px; color: var(--mute);
}

/* Buttons */
.dashboard-v3 .g-btn-primary {
    background: var(--ink); color: white; border: 0;
    padding: 6px 14px; border-radius: 7px; font-size: 13px; font-weight: 500;
    cursor: pointer; transition: background .15s;
}
.dashboard-v3 .g-btn-primary:hover { background: #1e293b; }
.dashboard-v3 .g-btn-ghost {
    background: transparent; color: var(--mute); border: 1px solid var(--line);
    padding: 6px 10px; border-radius: 7px; font-size: 13px;
    text-decoration: none; display: inline-flex; align-items: center;
    transition: background .15s, color .15s;
}
.dashboard-v3 .g-btn-ghost:hover { background: var(--softer); color: var(--ink); }

/* Tags */
.dashboard-v3 .g-tag {
    display: inline-block; padding: 2px 9px; border-radius: 999px;
    font-size: 11.5px; font-weight: 500; line-height: 1.5;
    background: var(--softer); color: var(--mute); border: 1px solid var(--line);
}
.dashboard-v3 .g-tag-ok      { background: rgba(16, 185, 129, 0.10); color: var(--ok); border-color: rgba(16, 185, 129, 0.25); }
.dashboard-v3 .g-tag-warn    { background: rgba(217, 119, 6, 0.10); color: var(--warn); border-color: rgba(217, 119, 6, 0.25); }
.dashboard-v3 .g-tag-bad     { background: rgba(220, 38, 38, 0.10); color: var(--bad); border-color: rgba(220, 38, 38, 0.25); }
.dashboard-v3 .g-tag-neutral { background: var(--softer); color: var(--mute); border-color: var(--line); }

/* Tables */
.dashboard-v3 .g-table { width: 100%; border-collapse: collapse; font-size: var(--font-size-base); }
.dashboard-v3 .g-table tbody td {
    padding: 12px 10px;
    border-bottom: 1px solid var(--line);
    vertical-align: middle;
}
.dashboard-v3 .g-table tbody tr:last-child td { border-bottom: 0; }
.dashboard-v3 .g-table tbody tr:hover { background: var(--soft); }
.dashboard-v3 .g-code {
    font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
    font-size: 11.5px; color: var(--mute);
}
.dashboard-v3 .g-prio-cell { display: flex; align-items: center; gap: 8px; white-space: nowrap; }
.dashboard-v3 .g-prio-label { font-size: 12px; color: var(--mute); }
.dashboard-v3 .g-kvp-title { font-weight: 500; }
.dashboard-v3 .g-empty-text { color: var(--mute); padding: 16px 4px; margin: 0; }

/* Tabs (custom) */
.dashboard-v3 .g-tabs {
    display: flex; gap: 2px;
    border-bottom: 1px solid var(--line);
    margin-bottom: 10px;
}
.dashboard-v3 .g-tab {
    background: transparent; border: 0; border-bottom: 2px solid transparent;
    padding: 9px 14px; font-size: var(--font-size-menu); font-weight: 500; color: var(--mute);
    cursor: pointer; border-radius: 0;
    transition: color .15s, border-color .15s;
}
.dashboard-v3 .g-tab:hover { color: var(--ink); }
.dashboard-v3 .g-tab.active {
    color: var(--ink); border-bottom-color: var(--cyan);
}
.dashboard-v3 .g-tab-count {
    display: inline-block; padding: 1px 7px; border-radius: 999px;
    background: var(--softer); color: var(--mute);
    font-size: 11px; margin-left: 4px;
}
.dashboard-v3 .g-tab-pane { display: none; }
.dashboard-v3 .g-tab-pane.active { display: block; }

/* ───── KPI grid (cockpit) ──────────────────────────── */
.dashboard-v3 .g-kpi-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
    gap: 14px;
}
.dashboard-v3 .g-kpi-box {
    border: 1px solid var(--line);
    border-radius: 10px;
    padding: 16px;
    padding-bottom: 40px;
    background: var(--surf);
    position: relative;
}
.dashboard-v3 .g-kpi-box-ok   { background: rgba(16, 185, 129, 0.06);  border-color: rgba(16, 185, 129, 0.25); }
.dashboard-v3 .g-kpi-box-bad  { background: rgba(220, 38, 38, 0.06);   border-color: rgba(220, 38, 38, 0.25); }
.dashboard-v3 .g-kpi-box-mute { background: var(--soft);               border-color: var(--line); }
.dashboard-v3 .g-kpi-box-mission {
    font-size: 11px; color: var(--mute); text-transform: uppercase;
    letter-spacing: 0.06em; font-weight: 500; margin-bottom: 4px;
}
.dashboard-v3 .g-kpi-box-name {
    font-size: var(--font-size-base); font-weight: 500; color: var(--ink); margin-bottom: 10px;
    line-height: 1.3;
}
.dashboard-v3 .g-kpi-box-value {
    font-size: 20px; font-weight: 600; letter-spacing: -0.015em;
    color: var(--ink); line-height: 1.1;
}
.dashboard-v3 .g-kpi-box-ok  .g-kpi-box-value { color: var(--ok); }
.dashboard-v3 .g-kpi-box-bad .g-kpi-box-value { color: var(--bad); }
.dashboard-v3 .g-kpi-box-unit {
    font-size: var(--font-size-base); font-weight: 500; color: inherit; opacity: .7; margin-left: 2px;
}
.dashboard-v3 .g-kpi-box-target-line {
    font-size: 12px; color: var(--mute); margin-top: 6px;
}
.dashboard-v3 .g-kpi-box-target-line strong {
    color: var(--ink); font-weight: 600;
}
.dashboard-v3 .g-kpi-box-direction { font-size: 11px; color: var(--mute); }
.dashboard-v3 .g-kpi-box-period {
    position: absolute; top: 10px; right: 12px;
    font-size: 11px; color: var(--mute);
    font-variant-numeric: tabular-nums;
}
.dashboard-v3 .g-kpi-box-status {
    position: absolute; bottom: 10px; right: 10px;
}

/* Translations tab — grouped accordion */
.ts-group { border: 1px solid #e2e8f0; border-radius: var(--radius); margin-bottom: 10px; background: #fff; }
.ts-group[open] { box-shadow: 0 1px 2px rgba(15,23,42,.03); }
.ts-group-head {
    list-style: none; cursor: pointer; padding: 10px 14px;
    font-size: var(--font-size-base); display: flex; align-items: center; gap: 8px;
    background: #f8fafc; border-radius: var(--radius) var(--radius) 0 0;
    border-bottom: 1px solid transparent;
    user-select: none;
}
.ts-group[open] > .ts-group-head { border-bottom-color: #e2e8f0; }
.ts-group-head::-webkit-details-marker { display: none; }
.ts-group-icon { font-size: 10px; transition: transform .2s; color: #64748b; }
.ts-group[open] > .ts-group-head .ts-group-icon { transform: rotate(90deg); }
.ts-group-count {
    margin-left: auto; font-size: 11.5px; font-weight: 500;
    padding: 1px 8px; background: #f1f5f9; color: #64748b; border-radius: 999px;
    border: 1px solid #e2e8f0;
}
.ts-table { margin: 0; border: 0; }
.ts-table thead th {
    font-size: 11px; text-transform: uppercase; letter-spacing: .05em;
    color: #64748b; font-weight: 500; background: #fff;
    border-bottom: 1px solid #e2e8f0;
}
.ts-key-cell code {
    font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
    font-size: 12px; color: #0f172a;
}

/* Snapshot pastille (dashboard) */
.g-updated-at {
    display: inline-flex; align-items: center; gap: 5px;
    font-size: 11.5px; color: #64748b; font-weight: 500;
    padding: 2px 10px; border-radius: 999px;
    background: #f1f5f9; border: 1px solid #e2e8f0;
    margin-left: 10px; vertical-align: middle;
}
.g-updated-at .fa-clock { font-size: 10px; }

/* ─── Expansion accordéon page Rôles ──────────────────────────── */
.role-exp-stats {
    display: flex;
    gap: 24px;
    padding: 4px 0 14px;
    border-bottom: 1px dashed var(--line);
    margin-bottom: 14px;
}
.role-exp-stat { display: flex; align-items: baseline; gap: 6px; }
.role-exp-stat-num {
    font-size: 18px;
    font-weight: 700;
    color: var(--accent-dark, var(--brand-cyan-dark));
    line-height: 1;
    font-variant-numeric: tabular-nums;
}
.role-exp-stat-lbl {
    font-size: 11px;
    color: var(--muted);
    text-transform: uppercase;
    letter-spacing: 0.06em;
}

.role-exp-title {
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--muted);
    margin-bottom: 10px;
}
.role-exp-missions {
    display: flex;
    flex-direction: column;
    gap: 12px;
}
.role-exp-mission {
    background: var(--paper, #ffffff);
    border: 1px solid var(--line);
    border-radius: 5px;
    padding: 10px 14px;
}
.role-exp-mission-head {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-bottom: 8px;
}
.role-exp-mission-count {
    margin-left: 8px;
    font-size: 11px;
    color: var(--muted);
    font-weight: 500;
    white-space: nowrap;
}
.role-exp-mand { font-size: 12px; }
.role-exp-mand .fa-circle-exclamation { color: #b91c1c; }
.role-exp-mand--opt { opacity: 0.5; }
.role-exp-mission-name { font-size: var(--font-size-base); color: var(--ink); }
.role-exp-mission-code {
    margin-left: auto;
    font-size: 11px;
    padding: 1px 6px;
    background: var(--line-soft, #f1f5f9);
    color: var(--muted);
    border-radius: 4px;
}

.role-exp-procs {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 4px;
}
.role-exp-proc {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 12.5px;
    color: var(--ink);
    padding: 4px 0;
}
.role-exp-proc-name { flex: 1; }
.role-exp-proc-code {
    font-size: 11px;
    color: var(--muted);
    background: transparent;
}
.role-exp-no-procs,
.role-exp-empty {
    margin: 0;
    color: var(--muted);
    font-size: 12.5px;
    font-style: italic;
}

/* Catégories de processus — pastilles colorées ISO 9001 */
.role-exp-proc .cat-badge {
    font-size: 10px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    padding: 2px 7px;
    border-radius: 5px;
    color: #fff;
    line-height: 1.4;
    flex-shrink: 0;
}
.role-exp-proc .cat-leadership { background: var(--brand-cyan,  #00D1CF); }
.role-exp-proc .cat-core       { background: var(--brand-green, #014D4E); }
.role-exp-proc .cat-support    { background: #94a3b8; }

/* ════════════════════════════════════════════════
   Formation & Gestion de compétences (my_trainings)
   Réutilise les tokens .dashboard-v3 → themé dark automatiquement.
   ════════════════════════════════════════════════ */
.g-train-subtitle { color: var(--ink-soft); font-size: var(--font-size-base); margin: 2px 0 18px; }
.dashboard-v3 .g-train-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
    gap: 14px;
    margin-top: 12px;
}
.dashboard-v3 .g-train-card {
    background: var(--surf);
    border: 1px solid var(--line);
    border-radius: var(--radius, 5px);
    padding: 16px;
    display: flex;
    flex-direction: column;
    gap: 10px;
}
.dashboard-v3 .g-train-completed { opacity: .7; }
.dashboard-v3 .g-train-top   { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.dashboard-v3 .g-train-title { font-size: var(--font-size-lg); font-weight: 700; margin: 0; color: var(--ink); line-height: 1.3; }
.dashboard-v3 .g-train-desc  { font-size: var(--font-size-base); color: var(--mute); margin: 0; line-height: 1.45; }
.dashboard-v3 .g-train-info  { display: flex; flex-wrap: wrap; gap: 8px; }
.dashboard-v3 .g-train-chip {
    display: inline-flex; align-items: center; gap: 5px;
    font-size: 12px; color: var(--mute);
    background: var(--softer); border-radius: 999px; padding: 3px 10px;
}
.dashboard-v3 .g-train-chip-bad { color: #dc2626; background: rgba(220,38,38,.10); }
.dashboard-v3 .g-train-chip-ok  { color: #059669; background: rgba(16,185,129,.12); }
.dashboard-v3 .g-train-docs {
    display: flex; flex-wrap: wrap; align-items: center; gap: 10px;
    border-top: 1px dashed var(--line); padding-top: 10px;
}
.dashboard-v3 .g-train-docs-label { font-size: 11px; text-transform: uppercase; letter-spacing: .04em; color: var(--mute); }
.dashboard-v3 .g-train-doc { display: inline-flex; align-items: center; gap: 5px; font-size: 12.5px; color: var(--accent-dark); text-decoration: none; }
.dashboard-v3 .g-train-doc:hover { text-decoration: underline; }
.dashboard-v3 .g-train-foot {
    display: flex; align-items: center; justify-content: space-between; gap: 8px;
    margin-top: auto; padding-top: 4px;
}
.dashboard-v3 .g-train-status { font-size: 12px; font-weight: 600; padding: 3px 11px; border-radius: 999px; }
.dashboard-v3 .g-status-not_started { color: var(--mute);  background: var(--softer); }
.dashboard-v3 .g-status-in_progress { color: #d97706; background: rgba(245,158,11,.14); }
.dashboard-v3 .g-status-completed   { color: #059669; background: rgba(16,185,129,.14); }
.dashboard-v3 .g-train-overdue { border-left: 3px solid #dc2626; }
.dashboard-v3 .g-train-process { font-size: 12px; color: var(--mute); display: inline-flex; align-items: center; gap: 6px; }
.dashboard-v3 .g-train-process .fa-solid { color: var(--accent); font-size: 11px; }
.dashboard-v3 .g-train-reminder { font-size: 12px; display: inline-flex; align-items: center; gap: 6px; }
.dashboard-v3 .g-train-reminder-sent { color: #0369a1; }
.dashboard-v3 .g-train-reminder-sent .fa-solid { color: #0369a1; }
.dashboard-v3 .g-train-reminder-pending { color: var(--mute); }
.dashboard-v3 .g-train-stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 12px; margin: 12px 0 18px; }
.dashboard-v3 .g-train-stat { background: var(--surf); border: 1px solid var(--line); border-radius: var(--radius, 5px); padding: 16px; }
.dashboard-v3 .g-train-stat-n { font-size: var(--font-size-xl); font-weight: 800; line-height: 1; color: var(--ink); }
.dashboard-v3 .g-train-stat-l { font-size: 12px; color: var(--mute); margin-top: 6px; }
.dashboard-v3 .g-train-stat-prog .g-train-stat-n { color: #0369a1; }
.dashboard-v3 .g-train-stat-done .g-train-stat-n { color: #059669; }
.dashboard-v3 .g-train-stat-over .g-train-stat-n { color: #dc2626; }

/* ════════════════════════════════════════════════
   Ma fiche rôle + double-rôle (role-based)
   ════════════════════════════════════════════════ */
.dashboard-v3 .g-role-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(340px, 1fr)); gap: 14px; margin-top: 12px; }
.dashboard-v3 .g-role-card {
    background: var(--surf); border: 1px solid var(--line); border-left-width: 3px;
    border-radius: var(--radius, 5px); padding: 16px; display: flex; flex-direction: column; gap: 10px;
}
.dashboard-v3 .g-role-business { border-left-color: var(--cyan, #00D1CF); }
.dashboard-v3 .g-role-quality  { border-left-color: #014D4E; }
.dashboard-v3 .g-role-top   { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.dashboard-v3 .g-role-title { font-size: var(--font-size-lg); font-weight: 700; margin: 0; color: var(--ink); line-height: 1.3; }
.dashboard-v3 .g-role-desc  { font-size: var(--font-size-base); color: var(--mute); margin: 0; line-height: 1.5; }
.dashboard-v3 .g-role-reqs-head { font-size: 11px; text-transform: uppercase; letter-spacing: .04em; color: var(--mute); border-top: 1px dashed var(--line); padding-top: 10px; margin-top: 2px; }
.dashboard-v3 .g-role-reqs { margin: 0; padding-left: 18px; display: flex; flex-direction: column; gap: 5px; }
.dashboard-v3 .g-role-reqs li { font-size: var(--font-size-base); color: var(--ink); line-height: 1.4; }
.dashboard-v3 .g-role-noreq { font-size: 12.5px; color: var(--mute); font-style: italic; margin: 0; }
/* Double-rôle sur le dashboard : groupes business/qualité + pills */
.dashboard-v3 .g-role-group { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin: 2px 0; }
.dashboard-v3 .g-role-label { font-size: 10.5px; text-transform: uppercase; letter-spacing: .04em; color: var(--mute); margin-right: 4px; }
.dashboard-v3 .g-pill-business { color: #0369a1; background: rgba(0,180,216,.14); }
.dashboard-v3 .g-pill-quality  { color: #047857; background: rgba(16,185,129,.14); }
/* « Meine Rollenbeschreibung » — panneau 2 colonnes (responsabilités | requirements) */
.dashboard-v3 .g-rd-panel { background: var(--surf); border: 1px solid var(--line); border-left-width: 3px; border-radius: var(--radius, 5px); padding: 20px; margin-bottom: 16px; }
.dashboard-v3 .g-rd-panel.g-role-business { border-left-color: var(--cyan, #00D1CF); }
.dashboard-v3 .g-rd-panel.g-role-quality  { border-left-color: #8b5cf6; }
.dashboard-v3 .g-rd-top { margin-bottom: 8px; }
.dashboard-v3 .g-rd-badge { display: inline-block; font-size: 12px; font-weight: 600; padding: 4px 12px; border-radius: 999px; }
.dashboard-v3 .g-rd-badge-qm  { color: #6d28d9; background: rgba(139,92,246,.15); }
.dashboard-v3 .g-rd-badge-biz { color: #0369a1; background: rgba(0,180,216,.14); }
.dashboard-v3 .g-rd-title { font-size: var(--font-size-xl); font-weight: 700; margin: 4px 0 2px; color: var(--ink); }
.dashboard-v3 .g-rd-sup  { font-size: var(--font-size-base); color: var(--mute); margin-bottom: 10px; }
.dashboard-v3 .g-rd-desc { font-size: var(--font-size-base); color: var(--mute); margin: 0 0 14px; line-height: 1.5; }
.dashboard-v3 .g-rd-cols { display: grid; grid-template-columns: 1fr 1fr; gap: 28px; }
@media (max-width: 760px){ .dashboard-v3 .g-rd-cols { grid-template-columns: 1fr; gap: 14px; } }
.dashboard-v3 .g-rd-col-head { font-size: 11px; text-transform: uppercase; letter-spacing: .05em; font-weight: 700; color: var(--mute); margin-bottom: 10px; }
.dashboard-v3 .g-rd-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 9px; }
.dashboard-v3 .g-rd-list li { display: flex; align-items: flex-start; gap: 9px; font-size: var(--font-size-base); color: var(--ink); line-height: 1.4; }
.dashboard-v3 .g-rd-check { color: var(--cyan, #00D1CF); font-size: 12px; margin-top: 3px; flex-shrink: 0; }
/* Prozesslandkarte (paysage des processus, role-scopé) */
.dashboard-v3 .g-plk { display: flex; flex-direction: column; gap: 14px; margin-top: 12px; }
.dashboard-v3 .g-plk-band { border: 1px solid var(--line); border-radius: var(--radius, 5px); overflow: hidden; }
.dashboard-v3 .g-plk-band-head { color: #fff; font-weight: 700; font-size: var(--font-size-menu); letter-spacing: .03em; text-transform: uppercase; padding: 9px 16px; }
.dashboard-v3 .g-plk-geschaeft  .g-plk-band-head { background: #014D4E; }
.dashboard-v3 .g-plk-fuehrung   .g-plk-band-head { background: #475569; }
.dashboard-v3 .g-plk-kern       .g-plk-band-head { background: #D97706; }
.dashboard-v3 .g-plk-unterstuetzung .g-plk-band-head { background: #475569; }
.dashboard-v3 .g-plk-company { padding: 14px 16px; font-size: var(--font-size-lg); font-weight: 700; color: var(--ink); background: rgba(16,185,129,.06); }
.dashboard-v3 .g-plk-row { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 12px; padding: 14px 16px; }
.dashboard-v3 .g-plk-card { background: var(--surf); border: 1px solid var(--line); border-radius: var(--radius, 5px); padding: 14px; }
.dashboard-v3 .g-plk-card-title { font-size: var(--font-size-base); font-weight: 600; color: var(--ink); line-height: 1.3; }
.dashboard-v3 .g-plk-card-owner { font-size: 11.5px; color: var(--accent-dark); margin-top: 6px; display: flex; align-items: center; gap: 5px; }
.dashboard-v3 .g-plk-card-owner .fa-user-tie { font-size: 10px; opacity: .75; }
.dashboard-v3 .g-plk-card-owner strong { color: var(--ink); font-weight: 600; }
.dashboard-v3 .g-plk-card-meta { font-size: 11.5px; color: var(--mute); margin-top: 6px; }

/* ── Module M1 : Defense Readiness ─────────────────────────────────────── */
.dashboard-v3 .rdn-head { display: flex; gap: 22px; align-items: center; justify-content: space-between; flex-wrap: wrap; }
.dashboard-v3 .rdn-order { flex: 1 1 340px; min-width: 260px; }
.dashboard-v3 .rdn-order-ref { font-size: 1.05rem; font-weight: 700; color: var(--ink); }
.dashboard-v3 .rdn-order-desc { font-size: 13px; color: var(--mute); margin: 2px 0 10px; }
.dashboard-v3 .rdn-meta { display: flex; flex-wrap: wrap; gap: 8px 18px; font-size: 12.5px; color: var(--ink); }
.dashboard-v3 .rdn-lbl { color: var(--mute); }
.dashboard-v3 .rdn-vs { background: rgba(15,23,42,.06); border-radius: 6px; padding: 2px 9px; font-weight: 600; }
.dashboard-v3 .rdn-score { text-align: center; flex: 0 0 auto; min-width: 150px; }
.dashboard-v3 .rdn-score-num { font-size: 3.2rem; font-weight: 800; line-height: 1; color: var(--rdn-col, var(--ink)); }
.dashboard-v3 .rdn-score-num span { font-size: 1.2rem; font-weight: 600; }
.dashboard-v3 .rdn-score-lbl { font-size: 11px; text-transform: uppercase; letter-spacing: .06em; color: var(--mute); margin-top: 2px; }
.dashboard-v3 .rdn-verdict { display: inline-block; margin-top: 8px; color: #fff; font-size: 12.5px; font-weight: 700; padding: 4px 14px; border-radius: 999px; }
.dashboard-v3 .rdn-counts { margin-top: 8px; display: flex; gap: 12px; justify-content: center; font-size: 13px; font-weight: 700; }
.dashboard-v3 .rdn-table-wrap { overflow-x: auto; }
.dashboard-v3 .rdn-table { width: 100%; border-collapse: collapse; font-size: 13px; }
.dashboard-v3 .rdn-table thead th { text-align: left; font-size: 11px; text-transform: uppercase; letter-spacing: .04em; color: var(--mute); font-weight: 600; padding: 4px 10px; border-bottom: 1px solid var(--line); }
.dashboard-v3 .rdn-table td { padding: 9px 10px; border-bottom: 1px solid var(--line); vertical-align: top; }
.dashboard-v3 .rdn-dot-cell { width: 22px; }
.dashboard-v3 .rdn-dot { display: inline-block; width: 11px; height: 11px; border-radius: 50%; }
.dashboard-v3 .rdn-cat { font-size: 11px; color: var(--mute); background: rgba(15,23,42,.05); border-radius: 5px; padding: 2px 8px; white-space: nowrap; }
.dashboard-v3 .rdn-req strong { color: var(--ink); font-weight: 600; }
.dashboard-v3 .rdn-note { font-size: 11.5px; color: var(--mute); margin-top: 2px; }
.dashboard-v3 .rdn-owner, .dashboard-v3 .rdn-due { white-space: nowrap; color: var(--ink); }
.dashboard-v3 .rdn-prio { font-size: 11px; font-weight: 700; padding: 2px 7px; border-radius: 5px; }
.dashboard-v3 .rdn-prio-1 { background: rgba(220,38,38,.12); color: #dc2626; }
.dashboard-v3 .rdn-prio-2 { background: rgba(217,119,6,.12); color: #d97706; }
.dashboard-v3 .rdn-prio-3 { background: rgba(15,23,42,.06); color: var(--mute); }
.dashboard-v3 .rdn-red .rdn-req strong { color: #b91c1c; }

/* ── Module M2 : Qualifizierung ────────────────────────────────────────── */
.dashboard-v3 .qm-legend { display: flex; flex-wrap: wrap; gap: 6px 16px; font-size: 12.5px; color: var(--mute); margin-top: 10px; }
.dashboard-v3 .qm-legend span { display: inline-flex; align-items: center; gap: 6px; }
.dashboard-v3 .qm-status { display: inline-block; width: 10px; height: 10px; border-radius: 50%; flex-shrink: 0; }
.dashboard-v3 .qm-item { display: flex; align-items: center; gap: 12px; padding: 11px 2px; border-bottom: 1px solid var(--line); }
.dashboard-v3 .qm-item:last-child { border-bottom: none; }
.dashboard-v3 .qm-main { flex: 1 1 auto; min-width: 0; }
.dashboard-v3 .qm-title { font-weight: 600; font-size: 13.5px; }
.dashboard-v3 .qm-must { font-size: 10.5px; font-weight: 700; color: #dc2626; background: rgba(220,38,38,.12); border-radius: 5px; padding: 1px 7px; margin-left: 6px; white-space: nowrap; }
.dashboard-v3 .qm-note { font-size: 11.5px; color: var(--mute); margin-top: 2px; }
.dashboard-v3 .qm-target { font-size: 11px; font-weight: 600; color: var(--accent-dark); background: rgba(0,180,216,.1); border-radius: 5px; padding: 2px 9px; white-space: nowrap; }
.dashboard-v3 .qm-owner { font-size: 12.5px; color: var(--ink); white-space: nowrap; min-width: 70px; text-align: right; }
.dashboard-v3 .qm-badge { font-size: 11px; font-weight: 700; padding: 3px 10px; border-radius: 999px; white-space: nowrap; }

/* ── Module M3 : Auftragsmatching ──────────────────────────────────────── */
.dashboard-v3 .mm-banner { display: flex; align-items: center; justify-content: space-between; gap: 16px; flex-wrap: wrap; background: linear-gradient(100deg, rgba(0,180,216,.12), rgba(16,185,129,.08)); border-color: rgba(0,180,216,.3); }
.dashboard-v3 .mm-label { font-size: 1.05rem; font-weight: 800; color: var(--accent-dark); display: flex; align-items: center; gap: 9px; }
.dashboard-v3 .mm-tag { font-size: 12.5px; color: var(--mute); flex: 1 1 260px; }
.dashboard-v3 .mm-card { display: flex; align-items: center; gap: 16px; padding: 14px 2px; border-bottom: 1px solid var(--line); }
.dashboard-v3 .mm-card:last-child { border-bottom: none; }
.dashboard-v3 .mm-score { font-size: 1.7rem; font-weight: 800; color: var(--mm-col, var(--ink)); line-height: 1; min-width: 66px; text-align: center; font-variant-numeric: tabular-nums; }
.dashboard-v3 .mm-score span { font-size: .8rem; font-weight: 700; }
.dashboard-v3 .mm-main { flex: 1 1 auto; min-width: 0; }
.dashboard-v3 .mm-oem { font-weight: 700; font-size: 14px; }
.dashboard-v3 .mm-opp { font-size: 13px; color: var(--ink); margin-top: 1px; }
.dashboard-v3 .mm-norms { font-size: 11.5px; color: var(--mute); margin-top: 4px; }
.dashboard-v3 .mm-note { font-size: 11.5px; color: var(--mute); margin-top: 3px; font-style: italic; }
.dashboard-v3 .mm-side { text-align: right; min-width: 150px; }
.dashboard-v3 .mm-badge { font-size: 11px; font-weight: 700; padding: 3px 10px; border-radius: 999px; white-space: nowrap; }
.dashboard-v3 .mm-contact { font-size: 12px; margin-top: 8px; color: var(--ink); }
.dashboard-v3 .mm-crole { font-size: 11px; color: var(--mute); }
.dashboard-v3 .mm-nocontact { color: var(--mute); font-style: italic; }
.dashboard-v3 .mm-foot { font-size: 11.5px; color: var(--mute); text-align: center; margin-top: 12px; }

/* ── Écran SVI-Konformität : 5 principes ───────────────────────────────── */
.dashboard-v3 .svi-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 14px; }
.dashboard-v3 .svi-card { background: var(--surf); border: 1px solid var(--line); border-radius: var(--radius, 12px); box-shadow: var(--shadow, 0 1px 3px rgba(15,23,42,.06)); padding: 18px 16px; text-align: center; }
.dashboard-v3 .svi-ic { width: 44px; height: 44px; margin: 0 auto 10px; border-radius: 12px; display: grid; place-items: center; background: rgba(0,180,216,.1); color: var(--accent-dark); font-size: 18px; }
.dashboard-v3 .svi-name { font-weight: 700; font-size: 14px; color: var(--ink); }
.dashboard-v3 .svi-badge { display: inline-flex; align-items: center; gap: 5px; margin: 8px 0; font-size: 11px; font-weight: 700; color: #16a34a; background: rgba(22,163,74,.12); border-radius: 999px; padding: 3px 11px; }
.dashboard-v3 .svi-metric { font-size: 11.5px; color: var(--mute); line-height: 1.45; }
.dashboard-v3 .svi-metric strong { color: var(--accent-dark); }
/* Module Tâches (role-/domaine-scopé) */
.dashboard-v3 .g-status-done { color: #059669; background: rgba(16,185,129,.14); }
.dashboard-v3 .g-tk-stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 12px; margin: 12px 0 18px; }
.dashboard-v3 .g-tk-stat { background: var(--surf); border: 1px solid var(--line); border-radius: var(--radius, 5px); padding: 16px; }
.dashboard-v3 .g-tk-stat-n { font-size: var(--font-size-xl); font-weight: 800; line-height: 1; color: var(--ink); }
.dashboard-v3 .g-tk-stat-l { font-size: 12px; color: var(--mute); margin-top: 6px; }
.dashboard-v3 .g-tk-stat-prog .g-tk-stat-n { color: #0369a1; }
.dashboard-v3 .g-tk-stat-done .g-tk-stat-n { color: #059669; }
.dashboard-v3 .g-tk-stat-over .g-tk-stat-n { color: #dc2626; }
.dashboard-v3 .g-tk-grid { display: grid; grid-template-columns: 1fr; gap: 12px; margin-top: 12px; }
.dashboard-v3 .g-tk-card { background: var(--surf); border: 1px solid var(--line); border-left: 3px solid var(--line); border-radius: var(--radius, 5px); padding: 16px; display: flex; flex-direction: column; gap: 8px; }
.dashboard-v3 .g-tk-card.g-tk-done { border-left-color: #014D4E; opacity: .85; }
.dashboard-v3 .g-tk-card.g-tk-in_progress { border-left-color: #f59e0b; }
.dashboard-v3 .g-tk-card.g-tk-overdue { border-left-color: #dc2626; }
.dashboard-v3 .g-tk-top { display: flex; align-items: flex-start; justify-content: space-between; gap: 10px; flex-wrap: wrap; }
.dashboard-v3 .g-tk-title { font-size: var(--font-size-lg); font-weight: 700; margin: 0; color: var(--ink); }
.dashboard-v3 .g-tk-desc { font-size: var(--font-size-base); color: var(--mute); margin: 0; line-height: 1.45; }
.dashboard-v3 .g-tk-foot { display: flex; align-items: center; flex-wrap: wrap; gap: 10px; margin-top: 4px; }
.dashboard-v3 .g-tk-chip { display: inline-flex; align-items: center; gap: 5px; font-size: 12px; color: var(--mute); background: var(--softer); border-radius: 999px; padding: 3px 10px; }
.dashboard-v3 .g-tk-chip-bad { color: #dc2626; background: rgba(220,38,38,.10); }
.dashboard-v3 .g-tk-chip-ok  { color: #059669; background: rgba(16,185,129,.12); }
.dashboard-v3 .g-tk-status { font-size: 12px; font-weight: 600; padding: 3px 11px; border-radius: 999px; }
.dashboard-v3 .g-tk-foot .g-btn-primary { margin-left: auto; }

/* WP5 — transfert de tâches + méta processus/QM */
.dashboard-v3 .tkf-meta { font-size: 12px; color: var(--mute); display: inline-flex; align-items: center; gap: 6px; }
.dashboard-v3 .tkf-meta .fa-solid { color: var(--accent); font-size: 11px; }
.dashboard-v3 .tkf-done-by { color: #059669; }
.dashboard-v3 .tkf-done-by .fa-solid { color: #059669; }
.dashboard-v3 .tkf-forwarded-from { color: #7c3aed; }
.dashboard-v3 .tkf-forwarded-from .fa-solid { color: #7c3aed; }
.dashboard-v3 .tkf-qm-badge { display: inline-flex; align-items: center; width: fit-content; gap: 5px; font-size: 11px; font-weight: 600; color: #059669; background: rgba(16,185,129,.12); border-radius: 999px; padding: 3px 10px; }
.dashboard-v3 .tkf-box { display: flex; align-items: center; gap: 8px; margin-top: 6px; padding: 10px 12px; background: var(--softer); border: 1px solid var(--line); border-radius: var(--radius, 5px); }
.dashboard-v3 .tkf-box .tkf-select { flex: 1 1 auto; min-width: 180px; font-size: 13px; }
.dashboard-v3 .tkf-box .g-btn-primary,
.dashboard-v3 .tkf-box .g-btn-secondary { white-space: nowrap; font-size: 12px; padding: 5px 10px; }
.dashboard-v3 .tkf-card-forwarded { opacity: .62; }
.dashboard-v3 .tkf-to-chip { display: inline-flex; align-items: center; width: fit-content; gap: 5px; font-size: 11px; font-weight: 600; color: #7c3aed; background: rgba(124,58,237,.10); border-radius: 999px; padding: 3px 10px; }

/* ════════════════════════════════════════════════
   Mobile — Bottom Navigation Bar
   ════════════════════════════════════════════════ */
#mobile-bottom-nav {
    display: none; /* caché sur desktop */
}

@media (max-width: 640px) {

    /* ─── Bottom nav ─────────────────────────────────────── */
    #mobile-bottom-nav {
        display: flex;
        position: fixed;
        bottom: 0;
        left: 0;
        right: 0;
        z-index: 1050;
        background: var(--paper);
        border-top: 1px solid var(--line);
        /* safe-area pour les encoches iPhone */
        padding: 4px 0 max(6px, env(safe-area-inset-bottom));
        box-shadow: 0 -2px 16px rgba(0,0,0,.08);
    }

    .mbn-item {
        flex: 1;
        display: flex;
        flex-direction: column;
        align-items: center;
        gap: 3px;
        padding: 6px 4px;
        background: none;
        border: 0;
        cursor: pointer;
        color: var(--muted);
        transition: color .15s ease;
        min-width: 0;
        -webkit-tap-highlight-color: transparent;
        font-family: inherit;
    }
    .mbn-item:active { opacity: .7; }

    .mbn-icon { font-size: 19px; line-height: 1; }

    .mbn-label {
        font-size: 10px;
        font-weight: 500;
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
        max-width: 64px;
        line-height: 1.2;
    }

    .mbn-item.mbn-active        { color: var(--accent-dark); }
    .mbn-item.mbn-active .mbn-icon { transform: translateY(-1px); }

    /* ─── Body : padding sous le contenu ─────────────────── */
    body.has-bottom-nav {
        padding-bottom: calc(58px + max(0px, env(safe-area-inset-bottom)));
    }

    /* ─── Navbar hamburger — drawer slide depuis le bas ───── */
    .navbar .navbar-collapse.show,
    .navbar .navbar-collapse.collapsing {
        background: var(--paper);
        position: fixed;
        bottom: calc(58px + max(0px, env(safe-area-inset-bottom)));
        left: 0;
        right: 0;
        z-index: 1049;
        max-height: 70vh;
        overflow-y: auto;
        border-top: 1px solid var(--line);
        border-radius: 12px 12px 0 0;
        box-shadow: 0 -4px 20px rgba(0,0,0,.12);
        padding: 12px 0 8px;
    }
    /* Ferme le drawer quand on clique en dehors */
    .navbar .navbar-nav { padding: 0 8px; }
    .navbar .navbar-nav .nav-link { padding: 10px 14px; border-radius: var(--radius); }
    .navbar .navbar-nav .dropdown-menu { position: static !important; box-shadow: none; border: 0; background: var(--canvas); margin: 0 0 0 12px; padding: 4px 0; border-radius: var(--radius); }

    /* ─── Notification bar : plus compact ─────────────────── */
    #notification_main_bar .notification_main_content { padding: 0 10px; }
    #content_title { font-size: 11px; max-width: 140px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

    /* ─── Icônes de session — taille tactile ──────────────── */
    .session_controls.visible { width: 38px; height: 38px; line-height: 38px; }
}

/* ════════════════════════════════════════════════════════════════
   Dark mode — overrides propres à Quitus
   Complète les variables Bootstrap de theme-toggle.css.
   Cible : composants avec tokens CSS locaux hardcodés (light-only).
   ════════════════════════════════════════════════════════════════ */

/* ─── Dashboard v3 : réinitialisation des tokens locaux ──────── */
[data-theme="dark"] .dashboard-v3 {
    --ink:    #e8eaff;
    --mute:   rgba(232,234,255,0.55);
    --line:   rgba(255,255,255,0.09);
    --surf:   #161824;
    --soft:   #11121b;
    --softer: rgba(255,255,255,0.04);
}
[data-theme="dark"] .dashboard-v3 .g-hero {
    background:
        radial-gradient(circle at 15% 30%, rgba(0,180,216,0.08), transparent 50%),
        radial-gradient(circle at 85% 70%, rgba(16,185,129,0.06), transparent 50%),
        linear-gradient(135deg, #161824, #11121b);
    border-color: rgba(255,255,255,0.09);
    box-shadow: none;
}
[data-theme="dark"] .dashboard-v3 .g-kpi-card { background: #161824; border-color: rgba(255,255,255,0.09); }
[data-theme="dark"] .dashboard-v3 .g-card      { background: #161824; border-color: rgba(255,255,255,0.09); }
[data-theme="dark"] .dashboard-v3 .g-kpi-box   { background: #161824; border-color: rgba(255,255,255,0.09); }
[data-theme="dark"] .dashboard-v3 .g-kpi-box-ok  { background: rgba(16,185,129,0.10);  border-color: rgba(16,185,129,0.25); }
[data-theme="dark"] .dashboard-v3 .g-kpi-box-bad { background: rgba(220,38,38,0.10);   border-color: rgba(220,38,38,0.25); }
/* Bouton primary : fond sombre → utiliser blanc mat */
[data-theme="dark"] .dashboard-v3 .g-btn-primary       { background: rgba(232,234,255,0.12); color: #e8eaff; }
[data-theme="dark"] .dashboard-v3 .g-btn-primary:hover { background: rgba(232,234,255,0.20); color: #e8eaff; }
/* Pills et méta-tags */
[data-theme="dark"] .dashboard-v3 .g-pill      { background: rgba(0,180,216,0.12); color: var(--accent-light); border-color: rgba(0,180,216,0.25); }
[data-theme="dark"] .dashboard-v3 .g-meta-tag  { background: rgba(0,180,216,0.10); color: var(--accent-light); }
[data-theme="dark"] .dashboard-v3 .g-meta-code { color: rgba(232,234,255,0.50); }
/* Gauge SVG fill (text au centre) */
[data-theme="dark"] .dashboard-v3 .g-gauge-value { fill: #e8eaff; }
[data-theme="dark"] .dashboard-v3 .g-gauge-track  { stroke: rgba(255,255,255,0.08); }

/* ─── Status / priorité : pastilles avec fond clair en light ── */
[data-theme="dark"] .status-no_data { background: rgba(255,255,255,0.08); color: rgba(232,234,255,0.55); }

/* ─── Traductions — .ts-group (accordéon <details>) ──────────── */
[data-theme="dark"] .ts-group              { background: #161824; border-color: rgba(255,255,255,0.09); }
[data-theme="dark"] .ts-group-head         { background: rgba(255,255,255,0.04); border-bottom-color: rgba(255,255,255,0.09); color: #e8eaff; }
[data-theme="dark"] .ts-group[open] > .ts-group-head { border-bottom-color: rgba(255,255,255,0.09); }
[data-theme="dark"] .ts-group-count        { background: rgba(255,255,255,0.06); color: rgba(232,234,255,0.55); border-color: rgba(255,255,255,0.09); }
[data-theme="dark"] .ts-group-icon         { color: rgba(232,234,255,0.45); }
[data-theme="dark"] .ts-table thead th     { background: #11121b; color: rgba(232,234,255,0.55); border-bottom-color: rgba(255,255,255,0.09); }
[data-theme="dark"] .ts-key-cell code      { color: #e8eaff; }

/* ─── Pastille horodatage snapshot ──────────────────────────── */
[data-theme="dark"] .g-updated-at { background: rgba(255,255,255,0.05); border-color: rgba(255,255,255,0.09); color: rgba(232,234,255,0.55); }

/* ─── Icône obligatoire dans l'ancienne expansion rôles ─────── */
[data-theme="dark"] .role-exp-mand .fa-circle-exclamation { color: #fca5a5; }

/* ════════════════════════════════════════════════
   Assistant IA Claude — widget flottant (bas droite)
   ════════════════════════════════════════════════ */
#mq-chat-fab {
    position: fixed; right: 20px; bottom: 20px; z-index: 1080;
    display: flex; align-items: center; justify-content: center; padding: 0; line-height: 0;
    width: 56px; height: 56px; border-radius: 50%; border: none; cursor: pointer;
    background: var(--cyan, #00D1CF); color: #fff; font-size: 22px;
    box-shadow: 0 6px 20px rgba(0,0,0,.25); transition: transform .15s, box-shadow .15s;
}
#mq-chat-fab:hover { transform: translateY(-2px); box-shadow: 0 10px 26px rgba(0,0,0,.3); }
#mq-chat.mq-open #mq-chat-fab { transform: scale(.92); opacity: .85; }

#mq-chat-panel {
    position: fixed; right: 20px; bottom: 88px; z-index: 1080;
    width: 370px; max-width: calc(100vw - 32px); height: 540px; max-height: calc(100vh - 120px);
    display: flex; flex-direction: column; overflow: hidden;
    background: var(--surf, #fff); color: var(--ink, #0F172A);
    border: 1px solid var(--line, #e5e7eb); border-radius: 14px;
    box-shadow: 0 18px 48px rgba(0,0,0,.28);
}
#mq-chat-panel[hidden] { display: none; }
.mq-chat-head {
    display: flex; align-items: center; justify-content: space-between; gap: 10px;
    padding: 12px 14px; background: var(--cyan, #00D1CF); color: #fff;
}
.mq-chat-title { font-weight: 700; font-size: var(--font-size-lg); }
.mq-chat-sub { font-size: 11.5px; opacity: .85; }
#mq-chat-close { display: inline-flex; align-items: center; justify-content: center; width: 28px; height: 28px; padding: 0; background: transparent; border: none; color: #fff; font-size: 18px; cursor: pointer; opacity: .9; }
#mq-chat-close:hover { opacity: 1; }

#mq-chat-msgs { flex: 1; overflow-y: auto; padding: 14px; display: flex; flex-direction: column; gap: 10px; background: var(--canvas, #F8FAFC); }
.mq-msg { display: flex; }
.mq-msg-user { justify-content: flex-end; }
.mq-bubble { max-width: 82%; padding: 9px 13px; border-radius: 13px; font-size: var(--font-size-base); line-height: 1.5; white-space: normal; word-wrap: break-word; }
.mq-msg-assistant .mq-bubble { background: var(--surf, #fff); color: var(--ink, #0F172A); border: 1px solid var(--line, #e5e7eb); border-bottom-left-radius: 4px; }
.mq-msg-user .mq-bubble { background: var(--cyan, #00D1CF); color: #fff; border-bottom-right-radius: 4px; }
.mq-msg-error .mq-bubble { background: rgba(220,38,38,.10); color: #b91c1c; border-color: rgba(220,38,38,.25); }

#mq-chat-form { display: flex; align-items: flex-end; gap: 8px; padding: 10px; border-top: 1px solid var(--line, #e5e7eb); background: var(--surf, #fff); }
#mq-chat-input {
    flex: 1; resize: none; border: 1px solid var(--line, #e5e7eb); border-radius: 10px;
    padding: 9px 12px; font: inherit; font-size: var(--font-size-base); line-height: 1.4; max-height: 120px;
    background: var(--canvas, #F8FAFC); color: var(--ink, #0F172A);
}
#mq-chat-input:focus { outline: 2px solid var(--cyan, #00D1CF); outline-offset: -1px; border-color: var(--cyan, #00D1CF); }
#mq-chat-send { flex: 0 0 auto; display: inline-flex; align-items: center; justify-content: center; width: 40px; height: 40px; border: none; border-radius: 10px; background: var(--cyan, #00D1CF); color: #fff; cursor: pointer; font-size: 15px; }
#mq-chat-send:disabled { opacity: .5; cursor: default; }

.mq-dots { display: inline-flex; gap: 4px; align-items: center; }
.mq-dots span { width: 6px; height: 6px; border-radius: 50%; background: var(--mute, #94a3b8); animation: mq-bounce 1.2s infinite ease-in-out; }
.mq-dots span:nth-child(2) { animation-delay: .15s; }
.mq-dots span:nth-child(3) { animation-delay: .3s; }
@keyframes mq-bounce { 0%, 80%, 100% { transform: scale(.6); opacity: .5; } 40% { transform: scale(1); opacity: 1; } }

@media (max-width: 480px) {
    #mq-chat-panel { right: 10px; left: 10px; bottom: 80px; width: auto; height: calc(100vh - 100px); }
    #mq-chat-fab { right: 14px; bottom: 14px; }
}


/* ════════════════════════════════════════════════
   Job card — Description de mon poste (WP1)
   ════════════════════════════════════════════════ */
.dashboard-v3 .jbc-card {
    background: var(--surf);
    border: 1px solid var(--line);
    border-radius: 12px;
    margin-bottom: 22px;
    overflow: hidden;
}
.dashboard-v3 .jbc-head {
    border-bottom: 1px solid var(--line);
    padding: 18px 22px;
}
.dashboard-v3 .jbc-head h4 { margin: 0; }
.dashboard-v3 .jbc-subtitle {
    font-size: 12.5px;
    color: var(--mute);
    margin-top: 4px;
}
.dashboard-v3 .jbc-body { padding: 20px 22px; }
.dashboard-v3 .jbc-role-title {
    font-size: var(--font-size-lg);
    font-weight: 600;
    margin: 0 0 8px;
    color: var(--ink);
}
.dashboard-v3 .jbc-desc {
    color: var(--mute);
    margin-bottom: 14px;
    line-height: 1.5;
}
.dashboard-v3 .jbc-supervisor {
    font-size: 13px;
    color: var(--ink);
    background: var(--soft);
    border: 1px solid var(--line);
    border-radius: 8px;
    padding: 10px 14px;
    margin-bottom: 16px;
}
.dashboard-v3 .jbc-supervisor strong { color: var(--ink); }
.dashboard-v3 .jbc-supervisor-person { color: var(--mute); }
.dashboard-v3 .jbc-cols {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    gap: 18px;
    margin: 16px 0;
}
.dashboard-v3 .jbc-col-head {
    font-weight: 600;
    font-size: 13px;
    margin-bottom: 10px;
    color: var(--ink);
}
.dashboard-v3 .jbc-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 8px;
}
.dashboard-v3 .jbc-list li {
    display: flex;
    gap: 10px;
    align-items: flex-start;
    font-size: 13px;
    color: var(--ink);
    line-height: 1.45;
}
.dashboard-v3 .jbc-check {
    color: var(--green);
    margin-top: 3px;
    flex-shrink: 0;
}
.dashboard-v3 .jbc-link {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    color: var(--cyan);
    font-weight: 500;
    font-size: 13px;
    margin-top: 12px;
}
.dashboard-v3 .jbc-link:hover { color: var(--brand-cyan-darker); }

.dashboard-v3 .jbc-qm-card {
    margin-top: 16px;
    background: rgba(16, 185, 129, 0.04);
    border-color: rgba(16, 185, 129, 0.25);
    border-radius: 12px;
    padding: 18px 22px;
}
.dashboard-v3 .jbc-qm-head { margin-bottom: 8px; }
.dashboard-v3 .jbc-qm-badge {
    display: inline-block;
    padding: 3px 10px;
    border-radius: 999px;
    background: rgba(16, 185, 129, 0.12);
    color: var(--green);
    font-size: 12px;
    font-weight: 600;
}
.dashboard-v3 .jbc-qm-title {
    font-size: var(--font-size-base);
    font-weight: 600;
    margin: 0 0 4px;
    color: var(--ink);
}
.dashboard-v3 .jbc-qm-subtitle {
    font-size: 12px;
    color: var(--mute);
    margin-bottom: 10px;
}
.dashboard-v3 .jbc-qm-desc {
    font-size: 13px;
    color: var(--ink);
    margin-bottom: 10px;
    line-height: 1.5;
}
.dashboard-v3 .jbc-qm-raci {
    font-size: 12.5px;
    color: var(--ink);
    background: var(--soft);
    border: 1px solid var(--line);
    border-radius: 8px;
    padding: 10px 12px;
    margin-bottom: 12px;
    line-height: 1.45;
}
.dashboard-v3 .jbc-raci-label { font-weight: 600; color: var(--ink); }

@media (max-width: 576px) {
    .dashboard-v3 .jbc-cols { grid-template-columns: 1fr; }
    .dashboard-v3 .jbc-body, .dashboard-v3 .jbc-qm-card { padding: 16px; }
}

[data-theme="dark"] .dashboard-v3 .jbc-card,
[data-theme="dark"] .dashboard-v3 .jbc-qm-card { background: #161824; border-color: rgba(255,255,255,0.09); }
[data-theme="dark"] .dashboard-v3 .jbc-supervisor,
[data-theme="dark"] .dashboard-v3 .jbc-qm-raci { background: rgba(255,255,255,0.04); border-color: rgba(255,255,255,0.09); }

/* ════════════════════════════════════════════════
   Dashboard WP2 : processus pertinents + vignettes KPI
   ════════════════════════════════════════════════ */

/* ─── Processus pertinents ───────────────────────────────── */
.dashboard-v3 .mproc-section { margin-bottom: 20px; }
.dashboard-v3 .mproc-section .g-train-subtitle { margin-bottom: 14px; }
.dashboard-v3 .mproc-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
    gap: 14px;
}
.dashboard-v3 .mproc-card {
    background: var(--surf);
    border: 1px solid var(--line);
    border-radius: 12px;
    padding: 16px 18px;
    transition: box-shadow .2s, transform .2s, border-color .2s;
}
.dashboard-v3 .mproc-card:hover {
    box-shadow: 0 4px 12px rgba(15, 23, 42, 0.06);
    transform: translateY(-1px);
    border-color: rgba(0, 180, 216, 0.35);
}
.dashboard-v3 .mproc-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    margin-bottom: 10px;
}
.dashboard-v3 .mproc-cat {
    display: inline-block;
    padding: 3px 10px;
    border-radius: 999px;
    font-size: 11px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.04em;
}
.dashboard-v3 .mproc-cat-leadership { background: rgba(0, 180, 216, 0.12); color: var(--cyan); }
.dashboard-v3 .mproc-cat-core       { background: rgba(16, 185, 129, 0.12); color: var(--green); }
.dashboard-v3 .mproc-cat-support    { background: rgba(100, 116, 139, 0.12); color: var(--mute); }
.dashboard-v3 .mproc-version {
    font-size: 11.5px;
    color: var(--mute);
    font-variant-numeric: tabular-nums;
}
.dashboard-v3 .mproc-name {
    font-size: var(--font-size-base);
    font-weight: 600;
    color: var(--ink);
    margin-bottom: 8px;
    line-height: 1.35;
}
.dashboard-v3 .mproc-owner {
    font-size: 12.5px;
    color: var(--mute);
}
.dashboard-v3 .mproc-owner .fa-user-tie { margin-right: 5px; }
.dashboard-v3 .mproc-all-wrap {
    margin-top: 14px;
    text-align: right;
}
.dashboard-v3 .mproc-all {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    color: var(--cyan);
    font-weight: 500;
    font-size: 13px;
}
.dashboard-v3 .mproc-all:hover { color: var(--brand-cyan-darker); }

/* ─── Vignettes KPI ──────────────────────────────────────── */
.dashboard-v3 .mkpi-section { margin-bottom: 20px; }
.dashboard-v3 .mkpi-group + .mkpi-group { margin-top: 18px; }
.dashboard-v3 .mkpi-group-title {
    font-size: 12px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--mute);
    margin-bottom: 10px;
}
.dashboard-v3 .mkpi-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
    gap: 14px;
}
.dashboard-v3 .mkpi-card {
    background: var(--surf);
    border: 1px solid var(--line);
    border-radius: 12px;
    padding: 16px 18px;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    min-height: 110px;
    transition: box-shadow .2s, transform .2s;
}
.dashboard-v3 .mkpi-card:hover {
    box-shadow: 0 4px 12px rgba(15, 23, 42, 0.06);
    transform: translateY(-1px);
}
.dashboard-v3 .mkpi-name {
    font-size: 11px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: var(--mute);
    margin-bottom: 8px;
    line-height: 1.35;
}
.dashboard-v3 .mkpi-value {
    font-size: 26px;
    font-weight: 700;
    letter-spacing: -0.02em;
    color: var(--ink);
    line-height: 1;
    margin-bottom: 10px;
}
.dashboard-v3 .mkpi-unit {
    font-size: 14px;
    font-weight: 500;
    color: var(--mute);
    margin-left: 5px;
}
.dashboard-v3 .mkpi-meta {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
}
.dashboard-v3 .mkpi-trend {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 26px;
    height: 26px;
    border-radius: 7px;
    font-size: 14px;
    font-weight: 700;
    flex-shrink: 0;
}
.dashboard-v3 .mkpi-trend-good {
    background: rgba(16, 185, 129, 0.12);
    color: var(--ok);
}
.dashboard-v3 .mkpi-trend-bad {
    background: rgba(220, 38, 38, 0.10);
    color: var(--bad);
}
.dashboard-v3 .mkpi-trend-neutral {
    background: var(--softer);
    color: var(--mute);
}
.dashboard-v3 .mkpi-target {
    font-size: 12px;
    color: var(--mute);
    line-height: 1.4;
}

@media (max-width: 576px) {
    .dashboard-v3 .mproc-grid,
    .dashboard-v3 .mkpi-grid { grid-template-columns: 1fr; }
}

[data-theme="dark"] .dashboard-v3 .mproc-card,
[data-theme="dark"] .dashboard-v3 .mkpi-card { background: #161824; border-color: rgba(255,255,255,0.09); }
[data-theme="dark"] .dashboard-v3 .mproc-name,
[data-theme="dark"] .dashboard-v3 .mkpi-value { color: #f1f5f9; }
[data-theme="dark"] .dashboard-v3 .mproc-cat-leadership { background: rgba(0, 180, 216, 0.18); color: #5BC9E5; }
[data-theme="dark"] .dashboard-v3 .mproc-cat-core       { background: rgba(16, 185, 129, 0.18); color: #34D399; }
[data-theme="dark"] .dashboard-v3 .mproc-cat-support    { background: rgba(148, 163, 184, 0.15); color: #94A3B8; }
[data-theme="dark"] .dashboard-v3 .mkpi-trend-good     { background: rgba(16, 185, 129, 0.18); color: #34D399; }
[data-theme="dark"] .dashboard-v3 .mkpi-trend-bad      { background: rgba(248, 113, 113, 0.15); color: #F87171; }
[data-theme="dark"] .dashboard-v3 .mkpi-trend-neutral  { background: rgba(255,255,255,0.06); color: #94A3B8; }

/* ════════════════════════════════════════════════
   Dashboard WP3 : entretiens 1:1
   ════════════════════════════════════════════════ */
.dashboard-v3 .mtg-section { margin-bottom: 20px; }
.dashboard-v3 .mtg-section .g-train-subtitle { margin-bottom: 12px; }
.dashboard-v3 .mtg-info {
    display: flex;
    align-items: center;
    gap: 10px;
    font-size: 12.5px;
    color: var(--mute);
    background: var(--soft);
    border: 1px solid var(--line);
    border-radius: 10px;
    padding: 10px 14px;
    margin-bottom: 16px;
}
.dashboard-v3 .mtg-info .fa-circle-info { color: var(--cyan); }
.dashboard-v3 .mtg-group { margin-bottom: 18px; }
.dashboard-v3 .mtg-group:last-child { margin-bottom: 0; }
.dashboard-v3 .mtg-group-title {
    font-size: 13px;
    font-weight: 600;
    color: var(--ink);
    margin-bottom: 12px;
}
.dashboard-v3 .mtg-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
    gap: 14px;
}
.dashboard-v3 .mtg-card {
    background: var(--surf);
    border: 1px solid var(--line);
    border-radius: 12px;
    padding: 16px 18px;
    display: flex;
    flex-direction: column;
    transition: box-shadow .2s, transform .2s, border-color .2s;
}
.dashboard-v3 .mtg-card:hover {
    box-shadow: 0 4px 12px rgba(15, 23, 42, 0.06);
    transform: translateY(-1px);
    border-color: rgba(0, 180, 216, 0.35);
}
.dashboard-v3 .mtg-card-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    margin-bottom: 12px;
}
.dashboard-v3 .mtg-card-title {
    font-size: var(--font-size-base);
    font-weight: 600;
    margin: 0;
    color: var(--ink);
}
.dashboard-v3 .mtg-type-chip {
    display: inline-block;
    padding: 3px 10px;
    border-radius: 999px;
    font-size: 11px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.04em;
}
.dashboard-v3 .mtg-type-onboarding { background: rgba(0, 180, 216, 0.12); color: var(--cyan); }
.dashboard-v3 .mtg-type-regular    { background: rgba(16, 185, 129, 0.12); color: var(--green); }
.dashboard-v3 .mtg-card-body { flex: 1 1 auto; }
.dashboard-v3 .mtg-row {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 13px;
    color: var(--ink);
    margin-bottom: 6px;
}
.dashboard-v3 .mtg-row .fa-solid,
.dashboard-v3 .mtg-row .fa-regular { color: var(--mute); width: 16px; text-align: center; flex-shrink: 0; }
.dashboard-v3 .mtg-person { margin-bottom: 10px; }
.dashboard-v3 .mtg-title { color: var(--mute); }
.dashboard-v3 .mtg-agenda { margin-top: 12px; }
.dashboard-v3 .mtg-agenda-label {
    font-size: 12px;
    font-weight: 600;
    color: var(--ink);
    margin-bottom: 6px;
}
.dashboard-v3 .mtg-agenda-list {
    list-style: none;
    padding: 0;
    margin: 0;
}
.dashboard-v3 .mtg-agenda-list li {
    position: relative;
    padding-left: 14px;
    font-size: 12.5px;
    color: var(--ink-soft);
    line-height: 1.45;
    margin-bottom: 4px;
}
.dashboard-v3 .mtg-agenda-list li::before {
    content: "";
    position: absolute;
    left: 0;
    top: 7px;
    width: 5px;
    height: 5px;
    border-radius: 50%;
    background: var(--cyan);
}
.dashboard-v3 .mtg-reminder {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 12px;
    margin-top: 12px;
    padding: 8px 10px;
    border-radius: 8px;
}
.dashboard-v3 .mtg-reminder-sent {
    background: rgba(16, 185, 129, 0.10);
    color: var(--green);
}
.dashboard-v3 .mtg-reminder-pending {
    background: var(--softer);
    color: var(--mute);
}
.dashboard-v3 .mtg-card-foot {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    margin-top: 14px;
    padding-top: 12px;
    border-top: 1px solid var(--line);
}
.dashboard-v3 .mtg-status {
    display: inline-block;
    padding: 3px 10px;
    border-radius: 999px;
    font-size: 11px;
    font-weight: 600;
}
.dashboard-v3 .mtg-status-planned  { background: var(--softer); color: var(--mute); }
.dashboard-v3 .mtg-status-held     { background: rgba(16, 185, 129, 0.12); color: var(--green); }
.dashboard-v3 .mtg-status-cancelled{ background: rgba(220, 38, 38, 0.10); color: var(--bad); }

@media (max-width: 576px) {
    .dashboard-v3 .mtg-grid { grid-template-columns: 1fr; }
}

[data-theme="dark"] .dashboard-v3 .mtg-card { background: #161824; border-color: rgba(255,255,255,0.09); }
[data-theme="dark"] .dashboard-v3 .mtg-info { background: rgba(255,255,255,0.04); border-color: rgba(255,255,255,0.09); color: #94A3B8; }
[data-theme="dark"] .dashboard-v3 .mtg-card-title,
[data-theme="dark"] .dashboard-v3 .mtg-row { color: #f1f5f9; }
[data-theme="dark"] .dashboard-v3 .mtg-title,
[data-theme="dark"] .dashboard-v3 .mtg-agenda-list li { color: #94A3B8; }
[data-theme="dark"] .dashboard-v3 .mtg-type-onboarding { background: rgba(0, 180, 216, 0.18); color: #5BC9E5; }
[data-theme="dark"] .dashboard-v3 .mtg-type-regular    { background: rgba(16, 185, 129, 0.18); color: #34D399; }
[data-theme="dark"] .dashboard-v3 .mtg-status-planned   { background: rgba(255,255,255,0.06); color: #94A3B8; }
[data-theme="dark"] .dashboard-v3 .mtg-status-held      { background: rgba(16, 185, 129, 0.18); color: #34D399; }
[data-theme="dark"] .dashboard-v3 .mtg-status-cancelled { background: rgba(248, 113, 113, 0.15); color: #F87171; }
[data-theme="dark"] .dashboard-v3 .mtg-reminder-pending { background: rgba(255,255,255,0.06); color: #94A3B8; }
[data-theme="dark"] .dashboard-v3 .mtg-reminder-sent    { background: rgba(16, 185, 129, 0.15); color: #34D399; }
[data-theme="dark"] .dashboard-v3 .mtg-card-foot { border-color: rgba(255,255,255,0.09); }

/* Icône SVG sur-mesure de Magdalena (femme, cheveux longs) */
#mq-chat .mq-ico { width: 1em; height: 1em; display: inline-block; vertical-align: -.15em; }
#mq-chat-fab .mq-ico-fab { width: 30px; height: 30px; vertical-align: middle; }

/* ════════════════════════════════════════════════
   WP4 — Objectifs contractuels (dashboard)
   ════════════════════════════════════════════════ */
.dashboard-v3 .obj-section { }
.dashboard-v3 .obj-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
    gap: 16px;
    padding: 16px;
}
.dashboard-v3 .obj-card {
    background: var(--surf);
    border: 1px solid var(--line);
    border-radius: 12px;
    padding: 16px;
    display: flex;
    flex-direction: column;
    gap: 10px;
    transition: box-shadow .15s ease, transform .1s ease;
}
.dashboard-v3 .obj-card-done { border-color: rgba(16, 185, 129, 0.35); }
.dashboard-v3 .obj-head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 10px;
}
.dashboard-v3 .obj-title {
    margin: 0;
    font-size: 15px;
    font-weight: 700;
    color: var(--ink);
    line-height: 1.3;
}
.dashboard-v3 .obj-desc {
    margin: 0;
    font-size: 13px;
    color: var(--mute);
    line-height: 1.45;
}
.dashboard-v3 .obj-chip {
    display: inline-block;
    padding: 3px 10px;
    border-radius: 999px;
    font-size: 11px;
    font-weight: 600;
    white-space: nowrap;
    flex-shrink: 0;
}
.dashboard-v3 .obj-chip-progress  { background: rgba(0, 180, 216, 0.12); color: var(--cyan); }
.dashboard-v3 .obj-chip-completed { background: rgba(16, 185, 129, 0.12); color: var(--green); }
.dashboard-v3 .obj-chip-hold      { background: var(--softer); color: var(--mute); }
.dashboard-v3 .obj-progress-wrap {
    display: flex;
    align-items: center;
    gap: 12px;
}
.dashboard-v3 .obj-bar-bg {
    flex: 1;
    height: 8px;
    background: var(--softer);
    border-radius: 999px;
    overflow: hidden;
}
.dashboard-v3 .obj-bar {
    height: 100%;
    border-radius: 999px;
    background: linear-gradient(90deg, var(--cyan) 0%, var(--green) 100%);
    transition: width .35s ease;
    min-width: 4px;
}
.dashboard-v3 .obj-pct {
    font-size: 12px;
    font-weight: 700;
    color: var(--ink-soft);
    white-space: nowrap;
    min-width: 65px;
    text-align: right;
}
.dashboard-v3 .obj-foot {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    padding-top: 4px;
}
.dashboard-v3 .obj-due {
    font-size: 12px;
    color: var(--mute);
    display: inline-flex;
    align-items: center;
    gap: 5px;
}
.dashboard-v3 .obj-form {
    margin-top: 6px;
    padding: 12px;
    background: var(--soft);
    border: 1px solid var(--line);
    border-radius: 10px;
    display: flex;
    flex-direction: column;
    gap: 10px;
}
.dashboard-v3 .obj-form-row {
    display: flex;
    flex-direction: column;
    gap: 4px;
}
.dashboard-v3 .obj-form-row label {
    font-size: 12px;
    font-weight: 600;
    color: var(--ink-soft);
}
.dashboard-v3 .obj-input-pct {
    width: 90px;
    padding: 6px 10px;
    border: 1px solid var(--line);
    border-radius: 8px;
    font-size: 13px;
    background: var(--surf);
    color: var(--ink);
}
.dashboard-v3 .obj-input-note {
    width: 100%;
    padding: 8px 10px;
    border: 1px solid var(--line);
    border-radius: 8px;
    font-size: 13px;
    background: var(--surf);
    color: var(--ink);
    resize: vertical;
}
.dashboard-v3 .obj-form-actions {
    display: flex;
    align-items: center;
    gap: 8px;
}
.dashboard-v3 .obj-history {
    margin-top: 8px;
    padding-top: 10px;
    border-top: 1px dashed var(--line);
}
.dashboard-v3 .obj-history-title {
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .04em;
    color: var(--mute);
    margin-bottom: 6px;
}
.dashboard-v3 .obj-history-row {
    display: flex;
    align-items: baseline;
    gap: 8px;
    font-size: 12px;
    margin-bottom: 5px;
    flex-wrap: wrap;
}
.dashboard-v3 .obj-history-pct {
    font-weight: 700;
    color: var(--green);
    min-width: 34px;
}
.dashboard-v3 .obj-history-note {
    flex: 1;
    color: var(--ink-soft);
    line-height: 1.35;
}
.dashboard-v3 .obj-history-date {
    color: var(--mute);
    font-size: 11px;
    white-space: nowrap;
}

@media (max-width: 576px) {
    .dashboard-v3 .obj-grid { grid-template-columns: 1fr; }
}

[data-theme="dark"] .dashboard-v3 .obj-card { background: #161824; border-color: rgba(255,255,255,0.09); }
[data-theme="dark"] .dashboard-v3 .obj-card-done { border-color: rgba(16, 185, 129, 0.35); }
[data-theme="dark"] .dashboard-v3 .obj-title { color: #f1f5f9; }
[data-theme="dark"] .dashboard-v3 .obj-desc { color: #94A3B8; }
[data-theme="dark"] .dashboard-v3 .obj-pct { color: #cbd5e1; }
[data-theme="dark"] .dashboard-v3 .obj-due { color: #94A3B8; }
[data-theme="dark"] .dashboard-v3 .obj-form { background: rgba(255,255,255,0.04); border-color: rgba(255,255,255,0.09); }
[data-theme="dark"] .dashboard-v3 .obj-input-pct,
[data-theme="dark"] .dashboard-v3 .obj-input-note { background: #161824; border-color: rgba(255,255,255,0.12); color: #f1f5f9; }
[data-theme="dark"] .dashboard-v3 .obj-history { border-color: rgba(255,255,255,0.09); }
[data-theme="dark"] .dashboard-v3 .obj-history-note { color: #cbd5e1; }
[data-theme="dark"] .dashboard-v3 .obj-chip-progress  { background: rgba(0, 180, 216, 0.18); color: #5BC9E5; }
[data-theme="dark"] .dashboard-v3 .obj-chip-completed { background: rgba(16, 185, 129, 0.18); color: #34D399; }
[data-theme="dark"] .dashboard-v3 .obj-chip-hold      { background: rgba(255,255,255,0.06); color: #94A3B8; }

/* ── Modules admin (M-2) ───────────────────────────────────────────── */
.dashboard-v3 .modl-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
    gap: 16px;
}
.dashboard-v3 .modl-card {
    display: flex;
    flex-direction: column;
    gap: 12px;
}
.dashboard-v3 .modl-head {
    display: flex;
    align-items: flex-start;
    gap: 12px;
}
.dashboard-v3 .modl-icon {
    width: 44px;
    height: 44px;
    border-radius: 10px;
    background: rgba(0, 180, 216, 0.12);
    color: var(--cyan);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 20px;
    flex-shrink: 0;
}
.dashboard-v3 .modl-title-wrap {
    flex: 1;
    min-width: 0;
}
.dashboard-v3 .modl-title {
    font-size: 15px;
    font-weight: 700;
    color: var(--ink);
    margin: 0;
}
.dashboard-v3 .modl-version {
    font-size: 11px;
    color: var(--mute);
    margin-top: 2px;
}
.dashboard-v3 .modl-state {
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .04em;
    padding: 4px 8px;
    border-radius: 20px;
    white-space: nowrap;
}
.dashboard-v3 .modl-state-active {
    background: rgba(16, 185, 129, 0.12);
    color: var(--green);
}
.dashboard-v3 .modl-state-inactive {
    background: var(--softer);
    color: var(--mute);
}
.dashboard-v3 .modl-desc {
    font-size: 13px;
    line-height: 1.45;
    color: var(--ink-soft);
    margin: 0;
}
.dashboard-v3 .modl-tables {
    font-size: 12px;
    color: var(--mute);
}
.dashboard-v3 .modl-tables code {
    font-size: 11px;
    background: var(--softer);
    color: var(--ink-soft);
    padding: 2px 5px;
    border-radius: 4px;
    margin-right: 4px;
}
.dashboard-v3 .modl-foot {
    margin-top: auto;
    padding-top: 8px;
    border-top: 1px solid var(--line);
}
.dashboard-v3 .modl-confirm {
    margin-top: 8px;
    padding: 12px;
    background: rgba(239, 68, 68, 0.06);
    border: 1px solid rgba(239, 68, 68, 0.2);
    border-radius: 10px;
    display: flex;
    flex-direction: column;
    gap: 10px;
}
.dashboard-v3 .modl-confirm-hint {
    font-size: 12px;
    line-height: 1.4;
    color: var(--bad);
    margin: 0;
}
.dashboard-v3 .modl-confirm-hint .fa-triangle-exclamation {
    margin-right: 6px;
}
.dashboard-v3 .modl-confirm-input {
    font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
    font-size: 13px;
}
.dashboard-v3 .modl-confirm-actions {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
}

@media (max-width: 576px) {
    .dashboard-v3 .modl-grid { grid-template-columns: 1fr; }
}

[data-theme="dark"] .dashboard-v3 .modl-icon { background: rgba(0, 180, 216, 0.18); color: #5BC9E5; }
[data-theme="dark"] .dashboard-v3 .modl-title { color: #f1f5f9; }
[data-theme="dark"] .dashboard-v3 .modl-version { color: #94A3B8; }
[data-theme="dark"] .dashboard-v3 .modl-desc { color: #cbd5e1; }
[data-theme="dark"] .dashboard-v3 .modl-state-inactive { background: rgba(255,255,255,0.06); color: #94A3B8; }
[data-theme="dark"] .dashboard-v3 .modl-tables code { background: rgba(255,255,255,0.08); color: #cbd5e1; }
[data-theme="dark"] .dashboard-v3 .modl-confirm { background: rgba(239, 68, 68, 0.1); border-color: rgba(239, 68, 68, 0.3); }
[data-theme="dark"] .dashboard-v3 .modl-confirm-input { background: #161824; border-color: rgba(255,255,255,0.12); color: #f1f5f9; }


/* ═══════════════════════════════════════════════════════════════
   Module ESG — Environment, Social, Governance
   ═══════════════════════════════════════════════════════════════ */

/* ─── ESG Overview ───────────────────────────────────────────── */
.dashboard-v3 .esg-hero {
    background: linear-gradient(135deg, rgba(63, 126, 68, 0.08) 0%, rgba(0, 104, 157, 0.08) 100%);
    border-left: 4px solid var(--green);
}
.dashboard-v3 .esg-hero-title {
    font-size: 18px;
    font-weight: 700;
    color: var(--ink);
    margin: 0 0 8px;
}
.dashboard-v3 .esg-hero-text {
    font-size: 14px;
    line-height: 1.55;
    color: var(--ink-soft);
    margin: 0;
}

.dashboard-v3 .esg-pillar-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 18px;
    margin-bottom: 18px;
}
@media (max-width: 991px) {
    .dashboard-v3 .esg-pillar-grid { grid-template-columns: 1fr; }
}

.dashboard-v3 .esg-pillar {
    background: var(--paper);
    border: 1px solid var(--line);
    border-radius: 12px;
    overflow: hidden;
    display: flex;
    flex-direction: column;
}
.dashboard-v3 .esg-pillar-head {
    color: #fff;
    font-weight: 700;
    font-size: 15px;
    padding: 14px 16px;
    display: flex;
    align-items: center;
    gap: 10px;
}
.dashboard-v3 .esg-pillar-head .fa-solid { font-size: 18px; }
.dashboard-v3 .esg-pillar-body {
    padding: 16px;
    flex: 1;
}
.dashboard-v3 .esg-pillar-subtitle {
    font-size: 12px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: var(--muted);
    margin-bottom: 12px;
}
.dashboard-v3 .esg-anchor-item {
    padding: 12px 0;
    border-bottom: 1px solid var(--line-soft);
}
.dashboard-v3 .esg-anchor-item:last-child { border-bottom: none; }
.dashboard-v3 .esg-anchor-topic {
    font-size: 14px;
    font-weight: 600;
    color: var(--ink);
    margin-bottom: 6px;
}
.dashboard-v3 .esg-anchor-meta {
    font-size: 12px;
    color: var(--ink-soft);
    line-height: 1.45;
}
.dashboard-v3 .esg-meta-label {
    color: var(--muted);
    font-weight: 500;
}

.dashboard-v3 .esg-stats-bar {
    display: flex;
    gap: 16px;
    flex-wrap: wrap;
}
.dashboard-v3 .esg-stat-card {
    background: var(--paper);
    border: 1px solid var(--line);
    border-radius: 12px;
    padding: 16px 20px;
    min-width: 170px;
    flex: 1;
    text-decoration: none;
    transition: transform 0.12s ease, box-shadow 0.12s ease;
}
.dashboard-v3 .esg-stat-card:hover {
    transform: translateY(-2px);
    box-shadow: 0 8px 20px rgba(15, 23, 42, 0.08);
    border-color: var(--cyan);
}
.dashboard-v3 .esg-stat-link { cursor: pointer; }
.dashboard-v3 .esg-stat-n {
    font-size: 28px;
    font-weight: 800;
    color: var(--cyan);
    line-height: 1;
}
.dashboard-v3 .esg-stat-l {
    font-size: 13px;
    font-weight: 600;
    color: var(--ink);
    margin-top: 8px;
}
.dashboard-v3 .esg-stat-detail {
    font-size: 11px;
    color: var(--muted);
    margin-top: 4px;
}

/* ─── Hub ESG : KPIs, liens modules et UNGC ──────────────────── */
.dashboard-v3 .esg-kpi .g-kpi-value {
    font-size: 1.9rem;
    font-weight: 700;
    letter-spacing: -0.02em;
}

.dashboard-v3 .esg-section-subtitle {
    font-size: 13px;
    color: var(--mute);
    margin: -4px 0 14px;
    line-height: 1.45;
}

.dashboard-v3 .esg-link-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
    gap: 12px;
}

.dashboard-v3 .esg-link-card {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 10px;
    padding: 18px 12px;
    text-align: center;
    text-decoration: none;
    color: var(--ink);
    border-radius: 12px;
    transition: box-shadow .2s, transform .2s, border-color .2s;
    cursor: pointer;
}

.dashboard-v3 .esg-link-card:hover {
    box-shadow: 0 4px 12px rgba(15, 23, 42, 0.06);
    transform: translateY(-2px);
    border-color: var(--cyan);
}

.dashboard-v3 .esg-link-icon {
    width: 40px;
    height: 40px;
    border-radius: 10px;
    background: rgba(0, 180, 216, 0.10);
    color: var(--brand-cyan-dark);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 17px;
}

.dashboard-v3 .esg-link-label {
    font-size: 12.5px;
    font-weight: 600;
    line-height: 1.25;
}

.dashboard-v3 .esg-ungc-chips {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    padding: 0 16px 12px;
}

.dashboard-v3 .esg-ungc-chip {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 7px 12px;
    border-radius: 999px;
    background: var(--soft);
    border: 1px solid var(--line);
    font-size: 12.5px;
    color: var(--ink);
}

.dashboard-v3 .esg-ungc-chip-n {
    min-width: 22px;
    height: 22px;
    border-radius: 50%;
    background: var(--surf);
    border: 1px solid var(--line);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 11px;
    font-weight: 700;
    color: var(--ink);
}

.dashboard-v3 .esg-ungc-view {
    padding: 0 16px 16px;
    text-align: right;
}

.dashboard-v3 .esg-ungc-view a {
    font-size: 13px;
    font-weight: 600;
    color: var(--brand-cyan-dark);
    text-decoration: none;
}

.dashboard-v3 .esg-ungc-view a:hover {
    text-decoration: underline;
}

@media (max-width: 540px) {
    .dashboard-v3 .esg-link-grid {
        grid-template-columns: repeat(2, 1fr);
    }
}

/* ─── SDGs & Global Compact ──────────────────────────────────── */
.dashboard-v3 .esg-sdg-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(120px, 1fr));
    gap: 10px;
    padding: 16px;
}
.dashboard-v3 .esg-sdg-tile {
    aspect-ratio: 1 / 1;
    border-radius: 10px;
    padding: 12px;
    color: #fff;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    cursor: pointer;
    transition: transform 0.12s ease, opacity 0.12s ease;
    position: relative;
    overflow: hidden;
}
.dashboard-v3 .esg-sdg-tile:hover { transform: translateY(-3px); }
.dashboard-v3 .esg-sdg-dim { opacity: 0.55; }
.dashboard-v3 .esg-sdg-num {
    font-size: 22px;
    font-weight: 800;
    opacity: 0.35;
    line-height: 1;
}
.dashboard-v3 .esg-sdg-title {
    font-size: 11px;
    font-weight: 700;
    line-height: 1.25;
    text-transform: uppercase;
    letter-spacing: 0.02em;
}
.dashboard-v3 .esg-sdg-focus {
    position: absolute;
    top: 8px;
    right: 8px;
    background: rgba(255,255,255,0.92);
    color: var(--ink);
    font-size: 9px;
    font-weight: 800;
    text-transform: uppercase;
    padding: 2px 6px;
    border-radius: 10px;
}
.dashboard-v3 .esg-sdg-detail {
    margin: 0 16px 16px;
    padding: 14px;
    background: var(--line-soft);
    border-radius: 10px;
    min-height: 60px;
}
.dashboard-v3 .esg-sdg-detail strong {
    display: block;
    font-size: 14px;
    color: var(--ink);
    margin-bottom: 6px;
}
.dashboard-v3 .esg-sdg-detail p {
    font-size: 13px;
    color: var(--ink-soft);
    margin: 0;
    line-height: 1.45;
}
.dashboard-v3 .esg-sdg-hint {
    color: var(--muted);
    font-size: 13px;
    margin: 0;
}

.dashboard-v3 .esg-ungc-intro {
    font-size: 13px;
    color: var(--ink-soft);
    padding: 0 16px 12px;
    margin: 0;
    line-height: 1.5;
}
.dashboard-v3 .esg-ungc-group {
    margin-bottom: 16px;
    padding: 0 16px;
}
.dashboard-v3 .esg-ungc-head {
    color: #fff;
    font-size: 13px;
    font-weight: 700;
    padding: 10px 14px;
    border-radius: 8px;
    margin-bottom: 10px;
    display: inline-flex;
    align-items: center;
    gap: 8px;
}
.dashboard-v3 .esg-ungc-cards {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
    gap: 10px;
}
.dashboard-v3 .esg-ungc-card {
    background: var(--line-soft);
    border-radius: 10px;
    padding: 12px;
    display: flex;
    gap: 12px;
    align-items: flex-start;
}
.dashboard-v3 .esg-ungc-num {
    width: 26px;
    height: 26px;
    border-radius: 50%;
    background: var(--paper);
    color: var(--ink-soft);
    font-size: 12px;
    font-weight: 800;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}
.dashboard-v3 .esg-ungc-text {
    font-size: 12px;
    line-height: 1.45;
    color: var(--ink-soft);
}

/* ─── ESG Controls ───────────────────────────────────────────── */
.dashboard-v3 .esg-filter-bar {
    display: flex;
    flex-wrap: wrap;
    gap: 16px;
    margin-bottom: 18px;
}
.dashboard-v3 .esg-filter-group {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
    background: var(--paper);
    border: 1px solid var(--line);
    border-radius: 10px;
    padding: 8px 12px;
}
.dashboard-v3 .esg-filter-label {
    font-size: 12px;
    font-weight: 600;
    color: var(--muted);
    margin-right: 4px;
}
.dashboard-v3 .esg-filter-chip {
    border: 1px solid var(--line);
    background: var(--paper);
    color: var(--ink-soft);
    font-size: 12px;
    font-weight: 500;
    padding: 5px 12px;
    border-radius: 20px;
    cursor: pointer;
    transition: all 0.12s ease;
}
.dashboard-v3 .esg-filter-chip:hover {
    border-color: var(--cyan);
    color: var(--cyan);
}
.dashboard-v3 .esg-filter-chip.active {
    background: var(--cyan);
    border-color: var(--cyan);
    color: #fff;
}

.dashboard-v3 .esg-control-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
    gap: 14px;
    padding: 16px;
}
.dashboard-v3 .esg-control-card {
    background: var(--paper);
    border: 1px solid var(--line);
    border-radius: 12px;
    padding: 14px;
    display: flex;
    flex-direction: column;
    gap: 10px;
}
.dashboard-v3 .esg-control-top {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
}
.dashboard-v3 .esg-control-number {
    font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
    font-size: 11px;
    font-weight: 700;
    color: var(--muted);
}
.dashboard-v3 .esg-control-pillar,
.dashboard-v3 .esg-control-type {
    color: #fff;
    font-size: 10px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    padding: 3px 8px;
    border-radius: 12px;
    display: inline-flex;
    align-items: center;
    gap: 4px;
}
.dashboard-v3 .esg-control-type .fa-solid { font-size: 9px; }
.dashboard-v3 .esg-control-title {
    font-size: 14px;
    font-weight: 700;
    color: var(--ink);
    margin: 0;
}
.dashboard-v3 .esg-control-note {
    font-size: 12px;
    line-height: 1.45;
    color: var(--ink-soft);
    margin: 0;
    flex: 1;
}
.dashboard-v3 .esg-control-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 8px 14px;
    font-size: 11px;
    color: var(--ink-soft);
    padding-top: 10px;
    border-top: 1px solid var(--line-soft);
}

/* ─── Dark overrides ─────────────────────────────────────────── */
[data-theme="dark"] .dashboard-v3 .esg-hero {
    background: linear-gradient(135deg, rgba(63, 126, 68, 0.14) 0%, rgba(0, 104, 157, 0.14) 100%);
}
[data-theme="dark"] .dashboard-v3 .esg-hero-title,
[data-theme="dark"] .dashboard-v3 .esg-anchor-topic,
[data-theme="dark"] .dashboard-v3 .esg-stat-l,
[data-theme="dark"] .dashboard-v3 .esg-control-title { color: #f1f5f9; }
[data-theme="dark"] .dashboard-v3 .esg-hero-text,
[data-theme="dark"] .dashboard-v3 .esg-anchor-meta,
[data-theme="dark"] .dashboard-v3 .esg-control-note,
[data-theme="dark"] .dashboard-v3 .esg-control-meta,
[data-theme="dark"] .dashboard-v3 .esg-ungc-text,
[data-theme="dark"] .dashboard-v3 .esg-sdg-detail p,
[data-theme="dark"] .dashboard-v3 .esg-ungc-intro { color: #cbd5e1; }
[data-theme="dark"] .dashboard-v3 .esg-pillar,
[data-theme="dark"] .dashboard-v3 .esg-stat-card,
[data-theme="dark"] .dashboard-v3 .esg-filter-group,
[data-theme="dark"] .dashboard-v3 .esg-control-card,
[data-theme="dark"] .dashboard-v3 .esg-sdg-detail,
[data-theme="dark"] .dashboard-v3 .esg-ungc-card {
    background: #161824;
    border-color: rgba(255,255,255,0.1);
}
[data-theme="dark"] .dashboard-v3 .esg-filter-chip {
    background: #161824;
    border-color: rgba(255,255,255,0.12);
    color: #cbd5e1;
}
[data-theme="dark"] .dashboard-v3 .esg-filter-chip.active { background: var(--cyan); border-color: var(--cyan); color: #fff; }
[data-theme="dark"] .dashboard-v3 .esg-ungc-num { background: #0f111a; color: #94A3B8; }
[data-theme="dark"] .dashboard-v3 .esg-stat-card:hover { border-color: var(--cyan); }

[data-theme="dark"] .dashboard-v3 .esg-link-card,
[data-theme="dark"] .dashboard-v3 .esg-ungc-chip {
    background: #161824;
    border-color: rgba(255,255,255,0.1);
}
[data-theme="dark"] .dashboard-v3 .esg-link-card:hover { border-color: var(--cyan); }
[data-theme="dark"] .dashboard-v3 .esg-link-label,
[data-theme="dark"] .dashboard-v3 .esg-ungc-chip-l { color: #f1f5f9; }
[data-theme="dark"] .dashboard-v3 .esg-section-subtitle { color: #94a3b8; }
[data-theme="dark"] .dashboard-v3 .esg-ungc-view a { color: #38bdf8; }

/* ─── Skill matrix (WP7) ───────────────────────────────────────────────── */
.dashboard-v3 .skm-info-banner {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    padding: 12px 14px;
    margin-bottom: 18px;
    background: var(--secondary-soft);
    border: 1px solid rgba(16, 185, 129, 0.18);
    border-radius: 8px;
    color: var(--ink-soft);
    font-size: 13px;
    line-height: 1.45;
}
.dashboard-v3 .skm-info-banner .fa-solid { color: var(--green); margin-top: 2px; flex-shrink: 0; }

.dashboard-v3 .skm-card { margin-bottom: 18px; }
.dashboard-v3 .skm-table-wrap { overflow-x: auto; }
.dashboard-v3 .skm-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 13px;
    min-width: 520px;
}
.dashboard-v3 .skm-table th,
.dashboard-v3 .skm-table td {
    padding: 10px 12px;
    border-bottom: 1px solid var(--line);
    vertical-align: middle;
    white-space: nowrap;
}
.dashboard-v3 .skm-table th {
    background: var(--line-soft);
    color: var(--ink-soft);
    font-weight: 600;
    text-align: left;
}
.dashboard-v3 .skm-table tbody tr:hover { background: rgba(0, 180, 216, 0.04); }
.dashboard-v3 .skm-row-head {
    position: sticky;
    left: 0;
    background: var(--paper);
    z-index: 2;
    min-width: 170px;
    border-right: 1px solid var(--line);
}
.dashboard-v3 .skm-table thead .skm-row-head { background: var(--line-soft); }
.dashboard-v3 .skm-member-name { font-weight: 600; color: var(--ink); }
.dashboard-v3 .skm-member-fn { font-size: 11px; color: var(--muted); }
.dashboard-v3 .skm-skill-head { min-width: 110px; }
.dashboard-v3 .skm-cell { text-align: center; }
.dashboard-v3 .skm-dots {
    display: inline-flex;
    gap: 4px;
    margin-bottom: 4px;
}
.dashboard-v3 .skm-dot {
    display: inline-block;
    width: 8px;
    height: 8px;
    border-radius: 50%;
}
.dashboard-v3 .skm-dot-on { background: var(--green); }
.dashboard-v3 .skm-dot-off { background: var(--line); }
.dashboard-v3 .skm-level-lbl {
    font-size: 11px;
    color: var(--muted);
}
.dashboard-v3 .skm-none { color: var(--muted); }

.dashboard-v3 .skm-legend { margin-top: 8px; }
.dashboard-v3 .skm-legend-grid {
    display: flex;
    flex-wrap: wrap;
    gap: 16px;
    padding: 8px 4px;
}
.dashboard-v3 .skm-legend-item {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 12px;
    color: var(--ink-soft);
}
.dashboard-v3 .skm-legend-lbl { color: var(--muted); }

/* Dark overrides skill matrix */
[data-theme="dark"] .dashboard-v3 .skm-info-banner { background: rgba(16, 185, 129, 0.10); border-color: rgba(16, 185, 129, 0.22); color: #cbd5e1; }
[data-theme="dark"] .dashboard-v3 .skm-table th { background: #161824; color: #f1f5f9; border-color: rgba(255,255,255,0.10); }
[data-theme="dark"] .dashboard-v3 .skm-table td { border-color: rgba(255,255,255,0.08); }
[data-theme="dark"] .dashboard-v3 .skm-row-head { background: #0f111a; border-color: rgba(255,255,255,0.10); }
[data-theme="dark"] .dashboard-v3 .skm-table tbody tr:hover { background: rgba(0, 180, 216, 0.08); }
[data-theme="dark"] .dashboard-v3 .skm-dot-off { background: rgba(255,255,255,0.16); }
[data-theme="dark"] .dashboard-v3 .skm-member-name { color: #f1f5f9; }
[data-theme="dark"] .dashboard-v3 .skm-level-lbl,
[data-theme="dark"] .dashboard-v3 .skm-legend-lbl { color: #94a3b8; }
[data-theme="dark"] .dashboard-v3 .skm-legend-item { color: #cbd5e1; }


/* ═══════════════════════════════════════════════════════════════════════
   Module reklamation — Gestion des réclamations
   ═══════════════════════════════════════════════════════════════════════ */
.dashboard-v3 .g-kpi-card-neutral { border-top: 3px solid var(--line); }
.dashboard-v3 .g-kpi-card-warn    { border-top: 3px solid var(--warn); }
.dashboard-v3 .g-kpi-card-info    { border-top: 3px solid var(--cyan); }
.dashboard-v3 .g-kpi-card-bad     { border-top: 3px solid var(--bad); }
.dashboard-v3 .g-kpi-card-muted   { border-top: 3px solid var(--mute); }

.dashboard-v3 .cmp-filter-card {
    display: flex; flex-wrap: wrap; align-items: center; gap: 18px 28px;
    padding: 16px 20px;
}
.dashboard-v3 .cmp-filter-group {
    display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
}
.dashboard-v3 .cmp-filter-label {
    font-size: 12px; color: var(--mute); text-transform: uppercase; letter-spacing: 0.04em; font-weight: 500;
}
.dashboard-v3 .cmp-chip {
    border: 1px solid var(--line); background: var(--surf); color: var(--ink-soft);
    border-radius: 999px; padding: 4px 12px; font-size: 12px; font-weight: 500; cursor: pointer;
    transition: background .12s, border-color .12s, color .12s;
}
.dashboard-v3 .cmp-chip:hover { border-color: var(--cyan); color: var(--cyan); }
.dashboard-v3 .cmp-chip.active { background: var(--cyan); border-color: var(--cyan); color: #fff; }

.dashboard-v3 .cmp-form-card { margin-bottom: 20px; }
.dashboard-v3 .cmp-form-actions { display: flex; gap: 10px; margin-top: 4px; }

.dashboard-v3 .cmp-list { display: flex; flex-direction: column; gap: 14px; }
.dashboard-v3 .cmp-card {
    cursor: pointer; transition: box-shadow .15s, transform .15s; margin-bottom: 0;
}
.dashboard-v3 .cmp-card:hover { box-shadow: 0 4px 12px rgba(15,23,42,0.06); transform: translateY(-1px); }
.dashboard-v3 .cmp-card-head {
    display: flex; justify-content: space-between; align-items: flex-start; gap: 12px; margin-bottom: 10px;
}
.dashboard-v3 .cmp-card-badges { display: flex; flex-wrap: wrap; gap: 6px; }
.dashboard-v3 .cmp-card-prio { display: flex; align-items: center; gap: 7px; }
.dashboard-v3 .cmp-prio-lbl { font-size: 12px; color: var(--mute); font-weight: 500; }
.dashboard-v3 .cmp-prio-dot {
    display: inline-block; width: 9px; height: 9px; border-radius: 50%;
}
.dashboard-v3 .cmp-prio-critical { background: var(--bad); box-shadow: 0 0 0 3px rgba(220,38,38,0.15); }
.dashboard-v3 .cmp-prio-high     { background: var(--warn); }
.dashboard-v3 .cmp-prio-medium   { background: var(--cyan); }
.dashboard-v3 .cmp-prio-low      { background: var(--mute); }

.dashboard-v3 .cmp-badge {
    display: inline-block; padding: 2px 9px; border-radius: 999px;
    font-size: 11.5px; font-weight: 500; line-height: 1.5; border: 1px solid transparent;
}
.dashboard-v3 .cmp-status-open       { background: rgba(217,119,6,0.10); color: var(--warn); border-color: rgba(217,119,6,0.25); }
.dashboard-v3 .cmp-status-classified { background: rgba(0,180,216,0.10); color: #0891b2; border-color: rgba(0,180,216,0.25); }
.dashboard-v3 .cmp-status-analysis   { background: rgba(0,180,216,0.10); color: var(--cyan); border-color: rgba(0,180,216,0.25); }
.dashboard-v3 .cmp-status-action     { background: rgba(16,185,129,0.12); color: #059669; border-color: rgba(16,185,129,0.25); }
.dashboard-v3 .cmp-status-closed     { background: var(--softer); color: var(--mute); border-color: var(--line); }

.dashboard-v3 .cmp-type-product_quality      { background: rgba(220,38,38,0.08); color: #b91c1c; border-color: rgba(220,38,38,0.18); }
.dashboard-v3 .cmp-type-delivery_logistics   { background: rgba(217,119,6,0.08); color: #b45309; border-color: rgba(217,119,6,0.18); }
.dashboard-v3 .cmp-type-service_communication{ background: rgba(0,180,216,0.08); color: #0e7490; border-color: rgba(0,180,216,0.18); }
.dashboard-v3 .cmp-type-documentation        { background: rgba(100,116,139,0.08); color: #475569; border-color: rgba(100,116,139,0.18); }
.dashboard-v3 .cmp-type-supplier             { background: rgba(139,92,246,0.08); color: #7c3aed; border-color: rgba(139,92,246,0.18); }
.dashboard-v3 .cmp-type-safety_compliance    { background: rgba(220,38,38,0.12); color: #991b1b; border-color: rgba(220,38,38,0.22); }

.dashboard-v3 .cmp-card-title { font-size: var(--font-size-base); font-weight: 600; margin: 0 0 6px; color: var(--ink); }
.dashboard-v3 .cmp-card-desc  { font-size: 13.5px; color: var(--ink-soft); margin: 0 0 12px; line-height: 1.45; }
.dashboard-v3 .cmp-card-meta  { display: flex; flex-wrap: wrap; gap: 10px 16px; align-items: center; font-size: 12px; color: var(--mute); }

.dashboard-v3 .cmp-detail {
    margin-top: 16px; padding-top: 18px; border-top: 1px solid var(--line);
}
.dashboard-v3 .cmp-detail h6 { font-size: 12.5px; color: var(--mute); text-transform: uppercase; letter-spacing: 0.03em; margin: 0 0 8px; }
.dashboard-v3 .cmp-detail p { font-size: 13.5px; color: var(--ink-soft); line-height: 1.5; }
.dashboard-v3 .cmp-detail-foot { display: flex; justify-content: flex-end; gap: 10px; margin-top: 16px; }

.dashboard-v3 .cmp-root-cause-edit,
.dashboard-v3 .cmp-root-cause-read { background: var(--soft); border: 1px solid var(--line); border-radius: 8px; padding: 12px; margin-bottom: 12px; }
.dashboard-v3 .cmp-root-cause-edit textarea { margin-bottom: 10px; }
.dashboard-v3 .cmp-root-cause-read p { margin: 0; }

.dashboard-v3 .cmp-actions-list { list-style: none; padding: 0; margin: 0 0 14px; display: flex; flex-direction: column; gap: 10px; }
.dashboard-v3 .cmp-action-item { background: var(--soft); border: 1px solid var(--line); border-radius: 8px; padding: 12px; }
.dashboard-v3 .cmp-action-head { display: flex; justify-content: space-between; align-items: center; gap: 10px; margin-bottom: 6px; }
.dashboard-v3 .cmp-action-head strong { font-size: 13.5px; color: var(--ink); }
.dashboard-v3 .cmp-action-meta { display: flex; flex-wrap: wrap; gap: 8px 14px; font-size: 12px; color: var(--mute); }
.dashboard-v3 .cmp-action-note { margin-top: 8px; font-size: 12.5px; color: var(--ink-soft); background: var(--surf); border-radius: 6px; padding: 8px; }
.dashboard-v3 .cmp-kvp-link { color: var(--cyan); font-weight: 500; }

.dashboard-v3 .cmp-action-status-planned     { background: var(--softer); color: var(--mute); border-color: var(--line); }
.dashboard-v3 .cmp-action-status-in_progress { background: rgba(0,180,216,0.10); color: var(--cyan); border-color: rgba(0,180,216,0.25); }
.dashboard-v3 .cmp-action-status-implemented { background: rgba(16,185,129,0.10); color: #059669; border-color: rgba(16,185,129,0.25); }
.dashboard-v3 .cmp-action-status-verified    { background: rgba(16,185,129,0.15); color: var(--green); border-color: rgba(16,185,129,0.35); }

.dashboard-v3 .cmp-add-action { background: var(--soft); border: 1px dashed var(--line); border-radius: 8px; padding: 14px; }
.dashboard-v3 .cmp-add-action h6 { margin-bottom: 10px; }
.dashboard-v3 .cmp-muted { color: var(--mute); font-style: italic; }

/* Dark overrides */
[data-theme="dark"] .dashboard-v3 .cmp-card,
[data-theme="dark"] .dashboard-v3 .cmp-form-card,
[data-theme="dark"] .dashboard-v3 .cmp-filter-card { background: #161824; border-color: rgba(255,255,255,0.09); }
[data-theme="dark"] .dashboard-v3 .cmp-action-item,
[data-theme="dark"] .dashboard-v3 .cmp-root-cause-edit,
[data-theme="dark"] .dashboard-v3 .cmp-root-cause-read,
[data-theme="dark"] .dashboard-v3 .cmp-add-action { background: rgba(255,255,255,0.04); border-color: rgba(255,255,255,0.09); }
[data-theme="dark"] .dashboard-v3 .cmp-card-title,
[data-theme="dark"] .dashboard-v3 .cmp-action-head strong { color: #f1f5f9; }
[data-theme="dark"] .dashboard-v3 .cmp-card-desc,
[data-theme="dark"] .dashboard-v3 .cmp-detail p,
[data-theme="dark"] .dashboard-v3 .cmp-action-note { color: #cbd5e1; }
[data-theme="dark"] .dashboard-v3 .cmp-card-meta,
[data-theme="dark"] .dashboard-v3 .cmp-action-meta,
[data-theme="dark"] .dashboard-v3 .cmp-filter-label,
[data-theme="dark"] .dashboard-v3 .cmp-prio-lbl,
[data-theme="dark"] .dashboard-v3 .cmp-muted { color: #94a3b8; }
[data-theme="dark"] .dashboard-v3 .cmp-chip { background: #0f111a; border-color: rgba(255,255,255,0.12); color: #cbd5e1; }
[data-theme="dark"] .dashboard-v3 .cmp-chip:hover { border-color: var(--cyan); color: var(--cyan); }
[data-theme="dark"] .dashboard-v3 .cmp-chip.active { background: var(--cyan); border-color: var(--cyan); color: #fff; }
[data-theme="dark"] .dashboard-v3 .cmp-status-closed { background: rgba(255,255,255,0.06); color: #94a3b8; border-color: rgba(255,255,255,0.10); }
[data-theme="dark"] .dashboard-v3 .cmp-action-status-planned { background: rgba(255,255,255,0.06); color: #94a3b8; border-color: rgba(255,255,255,0.10); }

/* Logotype de la barre — convention maison : aucune valeur en dur,
   typographie au nombre d'or (21px reserve aux grands titres). */
.brand-wordmark{
  font-weight:800;
  font-size:var(--font-size-lg, 13px);
  letter-spacing:.04em;
  color:#fff;
  line-height:1;
}
