/* ═══════════════════════════════════════════
   Client Vault — Frontend Styles v3
   Theme-independent & fully isolated
   ═══════════════════════════════════════════ */

/* Z-index tokens on :root — needed by elements portaled to <body>
   (media popup, confirm overlay, edit modal, toasts).
   Duplicated here so var(--cvf-z-*) resolves outside .cv-vault-wrap. */
:root {
    --cvf-z-overlay: 99999;
    --cvf-z-modal: 100000;
    --cvf-z-notification: 100001;
}

/* Layout-shift prevention is handled in JS (cvLockScrollableAncestors)
   which works with ANY theme by locking ancestor heights during filtering. */

/* ─────────────────────────────────────────────
   THEME SYSTEM — 6 predefined palettes
   Active theme is set via .cv-theme-{name} on .cv-vault-wrap
   Default: navy (bleu marine)
   ───────────────────────────────────────────── */

/* Default / Navy (Bleu marine) */
/* v11.74.1 — .cv-login-wrap inclus : le formulaire de connexion (pré-auth) n'est PAS dans
   .cv-vault-wrap, donc les variables --cvf-* n'y étaient pas définies → tous les
   `var(--cvf-primary)` (fond du bouton, bordures, liens) tombaient à vide = bouton invisible
   et formulaire fade. On lui applique le jeu de variables par défaut (navy de marque). */
.cv-vault-wrap,
.cv-vault-wrap.cv-theme-navy,
.cv-login-wrap {
    --cvf-primary: #1e3a5f;
    --cvf-primary-light: #2a5298;
    --cvf-primary-rgb: 30,58,95;
    --cvf-accent: #e8913a;
    --cvf-accent-light: #f5a623;
    --cvf-success: #27ae60;
    --cvf-danger: #e74c3c;
    --cvf-bg: #f7f8fc;
    --cvf-card: #ffffff;
    --cvf-border: #e4e8ee;
    --cvf-text: #2c3e50;
    --cvf-text-muted: #5a6c7d;
    --cvf-radius: 12px;
    --cvf-shadow: 0 2px 16px rgba(0,0,0,0.05);
    --cvf-link: #1a56db;
    --cvf-tag-blue: #949494;
    --cvf-tag-blue-bg: #e8f0fe;
    --cvf-tag-green: #155724;
    --cvf-tag-green-bg: #d4edda;
    --cvf-tag-orange: #856404;
    --cvf-tag-orange-bg: #fff3cd;
    --cvf-tag-red: #721c24;
    --cvf-tag-red-bg: #f8d7da;
    --cvf-tag-purple: #6b21a8;
    --cvf-tag-purple-bg: #f3e8ff;
    --cvf-tag-teal: #00796b;
    --cvf-tag-teal-bg: #e0f7fa;
}

/* Emerald (Vert émeraude) */
.cv-vault-wrap.cv-theme-emerald {
    --cvf-primary: #064e3b;
    --cvf-primary-light: #059669;
    --cvf-primary-rgb: 6,78,59;
    --cvf-accent: #f59e0b;
    --cvf-accent-light: #fbbf24;
    --cvf-link: #059669;
}

/* Violet */
.cv-vault-wrap.cv-theme-violet {
    --cvf-primary: #4c1d95;
    --cvf-primary-light: #7c3aed;
    --cvf-primary-rgb: 76,29,149;
    --cvf-accent: #f59e0b;
    --cvf-accent-light: #fbbf24;
    --cvf-link: #7c3aed;
}

/* Bordeaux (Rouge bordeaux) */
.cv-vault-wrap.cv-theme-bordeaux {
    --cvf-primary: #7f1d1d;
    --cvf-primary-light: #b91c1c;
    --cvf-primary-rgb: 127,29,29;
    --cvf-accent: #f59e0b;
    --cvf-accent-light: #fbbf24;
    --cvf-link: #b91c1c;
}

/* Sunset (Orange chaud) */
.cv-vault-wrap.cv-theme-sunset {
    --cvf-primary: #9a3412;
    --cvf-primary-light: #ea580c;
    --cvf-primary-rgb: 154,52,18;
    --cvf-accent: #0ea5e9;
    --cvf-accent-light: #38bdf8;
    --cvf-link: #ea580c;
}

/* Charcoal (Gris anthracite) */
.cv-vault-wrap.cv-theme-charcoal {
    --cvf-primary: #1f2937;
    --cvf-primary-light: #4b5563;
    --cvf-primary-rgb: 31,41,55;
    --cvf-accent: #3b82f6;
    --cvf-accent-light: #60a5fa;
    --cvf-link: #3b82f6;
}

/* ══════════════════════════════════════════════════════════════
   THEME ISOLATION — Client Vault's own design system
   Guarantees identical rendering on ANY WordPress theme.
   ALL rules use !important to override theme "body *" patterns.
   ══════════════════════════════════════════════════════════════ */

/* ─── Fix FluentCommunity scroll: its JS sets inline min-height
       on .fcom_wp_page equal to content height, which overflows
       the parent .feed_layout (max-height + overflow:hidden).
       We reset min-height so overflow:auto can work properly. ─── */
.fcom_wp_page {
    min-height: 0 !important;
    /* Prevent horizontal layout shift when vertical scrollbar appears/disappears */
    scrollbar-gutter: stable;
}

/* ─── Portal safeguard: ensure parent containers don't have transform/filter
       that would break position:fixed on modals & lightbox.
       If a theme sets transform on .cv-vault-wrap ancestors, fixed-position
       children become relative to that ancestor instead of the viewport. ─── */
.cv-vault-wrap .cv-preview-overlay,
.cv-vault-wrap .cv-lightbox {
    /* These use position:fixed and MUST be relative to viewport.
       If a parent has transform, we compensate via JS (cvPortalFix). */
}

/* ─── Master scope: font, color, sizing for the entire vault ─── */
.cv-vault-wrap {
    max-width: 100%;
    width: 100%;
    margin: 0 auto;
    padding: 0;
    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, sans-serif !important;
    font-size: 14px !important;
    line-height: 1.6 !important;
    color: var(--cvf-text) !important;
    background-color: transparent !important;
    overflow: visible;
    /* v11.78.11 — .cv-vault-wrap a `isolation:isolate` (cf. cv-isolation.css) qui crée un
       contexte d'empilement. Les overlays fixed internes (aperçu document/vidéo, z 99999)
       y restent PIÉGÉS : leur z-index ne pèse plus rien face au footer du thème, situé plus
       bas dans le DOM, qui peignait par-dessus l'aperçu (surtout visible dans la colonne
       commentaires). position:relative + z-index lève tout le contexte au-dessus du footer.
       NB : position:relative ne crée PAS de containing-block pour les fixed → l'overlay reste
       bien ancré au viewport. */
    position: relative;
    z-index: 5;
    box-sizing: border-box !important;
    -webkit-text-size-adjust: 100%;
    text-rendering: optimizeLegibility;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    --cvf-z-content: 1;
    --cvf-z-dropdown: 1000;
    --cvf-z-overlay: 99999;
    --cvf-z-modal: 100000;
    --cvf-z-notification: 100001;
    /* ─── Design System Tokens ─── */
    /* Typography scale */
    --cvf-font-xs: 11px;
    --cvf-font-sm: 12px;
    --cvf-font-base: 13px;
    --cvf-font-md: 14px;
    --cvf-font-lg: 15px;
    --cvf-font-xl: 18px;
    /* Spacing scale */
    --cvf-space-xs: 4px;
    --cvf-space-sm: 8px;
    --cvf-space-md: 12px;
    --cvf-space-lg: 16px;
    --cvf-space-xl: 20px;
    /* Transition */
    --cvf-transition: 0.15s ease;
    /* Hover background */
    --cvf-hover-bg: #fafbfc;
    /* Item separator */
    --cvf-separator: #f0f1f3;
    /* Date badge color */
    --cvf-date-muted: #8895a7;
    /* Author colors */
    --cvf-author-self-bg: #fff3e0;
    --cvf-author-self: #e65100;
    --cvf-author-admin-bg: #e3f2fd;
    --cvf-author-admin: #1565c0;
    --cvf-author-client: #7c3aed;
    --cvf-author-client-bg: #f3e8ff;
    /* Icon container */
    --cvf-icon-bg: #f0f4f8;
    --cvf-icon-size: 32px;
    --cvf-icon-radius: 8px;
}

/* ═══════════════════════════════════════════
   ISOLATION: Protect vault container from external theme interference
   ═══════════════════════════════════════════ */
.cvf-vault-container *,
.cvf-vault-container *::before,
.cvf-vault-container *::after {
    box-sizing: border-box;
}

/* ─── Universal child reset: override any "body *" rule from any theme ─── */
.cv-vault-wrap *,
.cv-vault-wrap *::before,
.cv-vault-wrap *::after {
    box-sizing: border-box !important;
}
.cv-vault-wrap *:not(.dashicons):not(.dashicons-before) {
    font-family: inherit !important;
}
.cv-vault-wrap *::-webkit-scrollbar { display: none; }
.cv-vault-wrap { scrollbar-width: none; }

/* ─── Dashicons: force icon font (themes override with "body *") ─── */
.cv-vault-wrap .dashicons,
.cv-vault-wrap .dashicons-before::before {
    font-family: dashicons !important;
    font-style: normal !important;
    font-weight: normal !important;
    font-variant: normal !important;
    text-transform: none !important;
    speak: never;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    display: inline-block;
    text-decoration: none !important;
    text-align: center;
}

/* ─── Headings ─── */
.cv-vault-wrap h1, .cv-vault-wrap h2, .cv-vault-wrap h3,
.cv-vault-wrap h4, .cv-vault-wrap h5, .cv-vault-wrap h6 {
    font-family: inherit !important;
    color: var(--cvf-text) !important;
    background: transparent !important;
    background-color: transparent !important;
    border: none !important;
    padding: 0 !important;
    margin: 0 0 0.5em !important;
    line-height: 1.4 !important;
    font-weight: 700 !important;
    text-transform: none !important;
    letter-spacing: normal !important;
    word-spacing: normal !important;
    text-shadow: none !important;
    text-decoration: none !important;
    float: none !important;
}
/* Neutralize heading pseudo-element decorations from themes */
.cv-vault-wrap h1::before, .cv-vault-wrap h1::after,
.cv-vault-wrap h2::before, .cv-vault-wrap h2::after,
.cv-vault-wrap h3::before, .cv-vault-wrap h3::after,
.cv-vault-wrap h4::before, .cv-vault-wrap h4::after,
.cv-vault-wrap h5::before, .cv-vault-wrap h5::after,
.cv-vault-wrap h6::before, .cv-vault-wrap h6::after {
    content: none !important;
    display: none !important;
}

/* ─── Paragraphs ─── */
.cv-vault-wrap p {
    font-family: inherit !important;
    font-size: inherit !important;
    color: inherit !important;
    background: transparent !important;
    background-color: transparent !important;
    padding: 0 !important;
    margin: 0 0 0.5em !important;
    line-height: inherit !important;
    text-transform: none !important;
    letter-spacing: normal !important;
    text-indent: 0 !important;
}

/* ─── Spans & inline elements ─── */
.cv-vault-wrap span,
.cv-vault-wrap strong,
.cv-vault-wrap b,
.cv-vault-wrap em,
.cv-vault-wrap i:not(.dashicons),
.cv-vault-wrap small,
.cv-vault-wrap label,
.cv-vault-wrap abbr,
.cv-vault-wrap cite,
.cv-vault-wrap code,
.cv-vault-wrap mark,
.cv-vault-wrap sub,
.cv-vault-wrap sup {
    font-family: inherit !important;
    letter-spacing: normal !important;
    text-transform: none !important;
}
.cv-vault-wrap strong, .cv-vault-wrap b { font-weight: 700 !important; }
.cv-vault-wrap em, .cv-vault-wrap i:not(.dashicons) { font-style: italic !important; }
.cv-vault-wrap small { font-size: 85% !important; }

/* ─── Divs (prevent theme backgrounds/padding) ─── */
.cv-vault-wrap div {
    font-family: inherit !important;
    letter-spacing: normal !important;
}

/* ─── Links ─── */
.cv-vault-wrap a {
    font-family: inherit !important;
    color: var(--cvf-link, var(--cvf-primary-light)) !important;
    text-decoration: none !important;
    text-transform: none !important;
    letter-spacing: normal !important;
    transition: color .15s, opacity .15s;
    cursor: pointer;
}
.cv-vault-wrap a:hover {
    opacity: .8;
    text-decoration: none !important;
}
.cv-vault-wrap a:visited {
    color: var(--cvf-link, var(--cvf-primary-light)) !important;
    text-decoration: none !important;
}
.cv-vault-wrap a:focus {
    outline: 2px solid var(--cvf-primary) !important;
    outline-offset: 2px !important;
}
.cv-vault-wrap a:active {
    color: var(--cvf-link, var(--cvf-primary-light)) !important;
    text-decoration: none !important;
}

/* ─── Buttons ─── */
.cv-vault-wrap button,
.cv-vault-wrap input[type="button"],
.cv-vault-wrap input[type="submit"],
.cv-vault-wrap input[type="reset"] {
    font-family: inherit !important;
    font-size: inherit !important;
    line-height: 1.4 !important;
    cursor: pointer;
    border: none;
    outline: none;
    text-transform: none !important;
    letter-spacing: normal !important;
    text-decoration: none !important;
    -webkit-appearance: none;
    -moz-appearance: none;
    appearance: none;
}

/* ─── v11.69.7 — Baseline d'isolation des fonds de boutons (NON-layerisé) ───
   Le reset complet de cv-isolation.css (background:transparent) vit dans
   @layer cv-reset ; or une règle de thème NON-layerisée (`button{background}`)
   bat toujours une règle layerisée, quelle que soit la spécificité. Résultat
   sans cette règle : le fond du thème (bleu, ou transparent → carte blanche)
   transparaissait sur les boutons « nus » comme .cv-btn-link.
   `:where()` garde la spécificité à (0,1,0) : on bat le thème (0,0,1) tout en
   laissant les variantes pleines (.cv-btn-primary, .cv-add-btn…, définies plus
   bas, même spécificité) gagner l'égalité par l'ordre source et garder leur fond. */
.cv-vault-wrap :where(button, input[type="button"], input[type="submit"], input[type="reset"]) {
    background-color: transparent;
    background-image: none;
    color: inherit;
}

/* ─── Button focus states ─── */
.cv-vault-wrap button:focus,
.cv-vault-wrap input[type="button"]:focus,
.cv-vault-wrap input[type="submit"]:focus,
.cv-vault-wrap input[type="reset"]:focus {
    outline: 2px solid var(--cvf-primary) !important;
    outline-offset: 2px !important;
}

/* ─── Form inputs (base) ─── */
.cv-vault-wrap input[type="text"],
.cv-vault-wrap input[type="email"],
.cv-vault-wrap input[type="search"],
.cv-vault-wrap input[type="url"],
.cv-vault-wrap input[type="date"],
.cv-vault-wrap input[type="number"],
.cv-vault-wrap input[type="password"],
.cv-vault-wrap input[type="tel"],
.cv-vault-wrap input[type="file"],
.cv-vault-wrap textarea,
.cv-vault-wrap select {
    font-family: inherit !important;
    font-size: 14px !important;
    line-height: 1.5 !important;
    color: var(--cvf-text) !important;
    background-color: #fff !important;
    background-image: none !important;
    border: 1.5px solid var(--cvf-border) !important;
    border-radius: 8px !important;
    padding: 8px 12px !important;
    outline: none !important;
    box-shadow: none !important;
    -webkit-appearance: none;
    -moz-appearance: none;
    appearance: none;
    transition: border-color .15s;
    max-width: 100% !important;
}

/* ─── Text and select inputs: explicit height ─── */
.cv-vault-wrap input[type="text"],
.cv-vault-wrap input[type="email"],
.cv-vault-wrap input[type="search"],
.cv-vault-wrap input[type="url"],
.cv-vault-wrap input[type="number"],
.cv-vault-wrap input[type="password"],
.cv-vault-wrap input[type="tel"],
.cv-vault-wrap select {
    height: 40px !important;
    width: 100% !important;
}

/* ─── Textarea: full width, auto height ─── */
.cv-vault-wrap textarea {
    width: 100% !important;
    height: auto !important;
}

/* ─── Date input: consistent styling ─── */
.cv-vault-wrap input[type="date"] {
    height: 40px !important;
    width: auto;
    padding: 8px 12px !important;
    background-color: #fff !important;
    color: var(--cvf-text) !important;
    border: 1.5px solid var(--cvf-border) !important;
}

/* ─── File input: styled button ─── */
.cv-vault-wrap input[type="file"] {
    height: auto !important;
    padding: 8px 0 !important;
}
.cv-vault-wrap input[type="file"]::file-selector-button {
    padding: 8px 16px !important;
    background: var(--cvf-primary) !important;
    color: #fff !important;
    border: none !important;
    border-radius: 6px !important;
    cursor: pointer !important;
    font-weight: 600 !important;
    margin-right: 12px !important;
    transition: background 0.2s !important;
}
.cv-vault-wrap input[type="file"]::file-selector-button:hover {
    background: var(--cvf-primary-light) !important;
}

/* ─── Select: custom SVG arrow ─── */
.cv-vault-wrap select {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%235a6c7d' stroke-width='2.5'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E") !important;
    background-repeat: no-repeat !important;
    background-position: right 12px center !important;
    padding-right: 32px !important;
}

/* ─── Unified focus states on all interactive form elements ─── */
.cv-vault-wrap input:focus,
.cv-vault-wrap textarea:focus,
.cv-vault-wrap select:focus,
.cv-vault-wrap button:focus {
    border-color: var(--cvf-primary) !important;
    box-shadow: 0 0 0 3px rgba(var(--cvf-primary-rgb), 0.12) !important;
    outline: none !important;
}

/* ─── Checkboxes / radios: preserve native appearance ─── */
.cv-vault-wrap input[type="checkbox"],
.cv-vault-wrap input[type="radio"] {
    -webkit-appearance: auto !important;
    -moz-appearance: auto !important;
    appearance: auto !important;
    width: auto !important;
    height: auto !important;
    border: revert !important;
    border-radius: revert !important;
    padding: revert !important;
    background: revert !important;
    box-shadow: revert !important;
}

/* ─── Lists ─── */
.cv-vault-wrap ul, .cv-vault-wrap ol {
    list-style: none !important;
    list-style-type: none !important;
    padding: 0 !important;
    padding-left: 0 !important;
    margin: 0 !important;
    margin-left: 0 !important;
}
.cv-vault-wrap li {
    font-family: inherit !important;
    line-height: inherit !important;
    list-style: none !important;
    list-style-type: none !important;
    padding-left: 0 !important;
    margin-left: 0 !important;
}

/* ─── Images ─── */
.cv-vault-wrap img {
    max-width: 100%;
    height: auto;
    border: none !important;
    box-shadow: none !important;
    outline: none !important;
}

/* ─── Tables ─── */
.cv-vault-wrap table {
    border-collapse: collapse !important;
    border-spacing: 0 !important;
    width: 100% !important;
    font-family: inherit !important;
    font-size: inherit !important;
}
.cv-vault-wrap th, .cv-vault-wrap td {
    text-align: left !important;
    padding: 0;
    border: none;
    font-family: inherit !important;
    font-size: inherit !important;
    line-height: inherit !important;
}

/* ─── Misc elements ─── */
.cv-vault-wrap hr {
    border: none !important;
    border-top: 1px solid var(--cvf-border) !important;
    margin: 1em 0 !important;
    padding: 0 !important;
}
.cv-vault-wrap blockquote {
    font-family: inherit !important;
    margin: 0 !important;
    padding: 0 !important;
    border: none !important;
}
.cv-vault-wrap pre, .cv-vault-wrap code {
    font-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, monospace !important;
    font-size: 13px !important;
}
.cv-vault-wrap ::placeholder {
    font-family: inherit !important;
    color: var(--cvf-text-muted) !important;
    opacity: 1 !important;
}

/*
 * v11.9.0 — Respect du thème hôte.
 * Avant : `:has(.cv-vault-wrap)` forçait les containers du thème (entry-content,
 * post-content, article, .container, Elementor/Divi/BuddyBoss…) en
 * `width:100% !important`. Résultat : sur un thème vanilla, le plugin cassait
 * totalement la mise en page en débordant du container.
 *
 * Nouveau contrat : le plugin reste dans la largeur allouée par le thème.
 * Seul `.cv-vault-wrap` a un `max-width: 100%` pour ne pas déborder son parent.
 * Les propriétaires de thèmes exotiques qui ont besoin d'un override peuvent
 * le faire dans leur propre CSS — on ne force plus rien côté plugin.
 */
.cv-vault-wrap {
    max-width: 100%;
    box-sizing: border-box;
}

/* ═══ HEADER — airy, human, two-row layout ═══
   v11.15.0 — Tous les display/flex forcés en !important pour éviter que
   le thème hôte (Astra, Divi, BuddyBoss, Fluent Community sidebar) écrase
   la colonne en row et masque le bloc texte d'accueil. */
.cv-vault-header {
    background: linear-gradient(135deg, var(--cvf-primary) 0%, var(--cvf-primary-light) 60%, rgba(var(--cvf-primary-rgb), 0.85) 100%) !important;
    color: #fff !important;
    border-radius: 20px !important;
    padding: 30px 30px 30px !important;
    margin-bottom: 26px !important;
    box-shadow: 0 8px 32px rgba(var(--cvf-primary-rgb), 0.22) !important;
    display: flex !important;
    flex-direction: column !important;
    gap: 28px !important;
    position: relative !important;
    overflow: hidden !important;
    width: 100% !important;
    box-sizing: border-box !important;
}
/* Decorative vault watermark — large faded icon on the right */
.cv-vault-header-watermark {
    position: absolute !important;
    right: 0;
    top: 45%;
    transform: translateY(-50%);
    pointer-events: none;
    z-index: var(--cvf-z-content);
    opacity: 0.08;
    line-height: 1;
}
.cv-vault-header-watermark .dashicons {
    font-size: 220px !important;
    width: 220px !important;
    height: 220px !important;
    color: #fff !important;
    font-family: dashicons !important;
}
/* Header context: all text white */
.cv-vault-header h2,
.cv-vault-header h3,
.cv-vault-header h4,
.cv-vault-header p,
.cv-vault-header span,
.cv-vault-header label,
.cv-vault-header strong {
    color: #fff !important;
}

/* ─── Row 1: Identity ─── */
.cv-vault-header-top {
    display: flex !important;
    flex-direction: row !important;
    align-items: center !important;
    justify-content: flex-start !important;
    gap: 24px !important;
    position: relative !important;
    z-index: var(--cvf-z-content) !important;
    width: 100% !important;
    box-sizing: border-box !important;
}
.cv-vault-header-identity {
    display: flex !important;
    flex-direction: row !important;
    align-items: center !important;
    gap: 22px !important;
    flex: 1 1 auto !important;
    min-width: 0 !important;
    overflow: visible !important;
    visibility: visible !important;
    width: 100% !important;
    box-sizing: border-box !important;
}

/* Avatar — 76px, warm, prominent */
.cv-vault-avatar {
    flex-shrink: 0;
    width: 76px;
    height: 76px;
    min-width: 76px;
    min-height: 76px;
    border-radius: 50%;
    overflow: hidden;
    background: rgba(255,255,255,.18);
    border: 3px solid rgba(255,255,255,.45);
    display: flex;
    align-items: center;
    justify-content: center;
    position: relative;
    box-shadow: 0 4px 16px rgba(0,0,0,.12);
}
/* v11.14.0 — Bulletproof avatar pattern : initiales toujours visibles en base,
   images empilées en absolute et révélées uniquement si naturalWidth > 1. */
.cv-vault-avatar-initials {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    display: flex !important;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    font-size: clamp(15px, 4vw, 26px) !important;
    font-weight: 700 !important;
    color: #fff !important;
    letter-spacing: 1px;
    line-height: 1;
    user-select: none;
    z-index: 1;
}
/* Avatar images: absolute-positioned to stack */
.cv-vault-wrap .cv-vault-header .cv-vault-avatar img,
.cv-vault-wrap .cv-vault-avatar img,
.cv-vault-avatar img,
.cv-vault-avatar .avatar {
    position: absolute !important;
    top: 0 !important;
    left: 0 !important;
    width: 100% !important;
    height: 100% !important;
    min-width: 0 !important;
    min-height: 0 !important;
    border-radius: 50% !important;
    object-fit: cover !important;
    max-width: none !important;
    border: none !important;
    padding: 0 !important;
    margin: 0 !important;
    background: rgba(255,255,255,.15);
}
/* v11.14.0 — Simplified : toutes les candidates images ont la même classe
   .cv-vault-avatar-img, invisibles par défaut, révélées au chargement OK. */
.cv-vault-avatar .cv-vault-avatar-img {
    z-index: 2;
    opacity: 0;
    object-fit: cover;
    transition: opacity 0.18s ease;
    pointer-events: none;
}
.cv-vault-avatar .cv-vault-avatar-img.cv-avatar-loaded {
    opacity: 1;
    pointer-events: auto;
}
/* Rétro-compat : anciennes classes utilisées dans d'autres templates */
.cv-vault-avatar-gravatar { display: none !important; z-index: 3; }
.cv-vault-avatar-gravatar.cv-avatar-active { display: block !important; }
.cv-vault-avatar-fcom { z-index: 2; }

/* Header text block
   v11.15.0 — Fix bug d'affichage du nom + subtitle + meta.
   Règles renforcées : display:block forcé, flex:1 pour prendre toute la
   largeur restante après l'avatar, min-width:0 pour permettre le shrink
   du texte (ellipsis), jamais de max-height, jamais de display:none. */
.cv-vault-header-text {
    flex: 1 1 auto !important;
    min-width: 0 !important;
    max-width: 100% !important;
    display: block !important;
    visibility: visible !important;
    opacity: 1 !important;
    overflow: visible !important;
    max-height: none !important;
    height: auto !important;
    position: relative !important;
    width: auto !important;
    margin: 0 !important;
    padding: 0 !important;
}
.cv-vault-header h2 {
    font-size: 26px !important;
    font-weight: 700 !important;
    color: #fff !important;
    margin: 0 0 2px !important;
    letter-spacing: -0.3px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    max-width: 100%;
    display: block !important;
    visibility: visible !important;
    opacity: 1 !important;
}
.cv-vault-header-subtitle {
    font-size: 14px !important;
    color: rgba(255,255,255,.7) !important;
    margin: 0 0 10px !important;
    font-weight: 400 !important;
    letter-spacing: 0.1px;
    display: block !important;
    visibility: visible !important;
    opacity: 1 !important;
}

/* Meta line — inline, subtle */
.cv-vault-header-meta {
    display: flex !important;
    align-items: center;
    gap: 6px;
    flex-wrap: wrap;
    font-size: 12px !important;
    opacity: 0.55;
    visibility: visible !important;
}
.cv-vault-meta-item {
    display: inline-flex;
    align-items: center;
    gap: 3px;
}
.cv-vault-meta-sep {
    width: 3px;
    height: 3px;
    border-radius: 50%;
    background: rgba(255,255,255,.5);
    display: inline-block;
    margin: 0 4px;
}
.cv-vault-meta-icon {
    font-size: 13px !important;
    width: 13px !important;
    height: 13px !important;
    vertical-align: middle;
}

/* Dashicons in header greeting (no longer needed — removed icon from h2) */
.cv-vault-header-icon {
    font-size: 22px !important;
    width: 22px !important;
    height: 22px !important;
    vertical-align: middle;
    margin-right: 2px;
}

/* ─── Row 2: Stats — full width, evenly spread ─── */

/* ═══ Actions bar below tabs ═══ */
.cv-vault-actions-bar {
    display: flex;
    align-items: stretch;
    gap: 10px;
    margin: 0 0 14px;
    padding: 0;
}
.cv-vault-actions-search-wrap {
    flex: 1;
    position: relative;
    min-width: 0;
}
.cv-vault-actions-search-icon {
    position: absolute;
    left: 12px;
    top: 50%;
    transform: translateY(-50%);
    font-size: 14px;
    pointer-events: none;
}
.cv-vault-wrap .cv-vault-actions-bar .cv-vault-actions-search,
.cv-vault-actions-search {
    width: 100% !important;
    height: 44px !important;
    padding: 0 14px 0 38px !important;
    border: 1.5px solid var(--cvf-border) !important;
    border-radius: 12px !important;
    font-size: 13px !important;
    color: var(--cvf-text) !important;
    background: var(--cvf-card) !important;
    font-family: inherit !important;
    box-shadow: 0 1px 3px rgba(15, 23, 42, .04);
    transition: border-color .2s, box-shadow .2s;
    outline: none !important;
    box-sizing: border-box !important;
}
.cv-vault-actions-search::placeholder {
    color: var(--cvf-text-muted) !important;
}
.cv-vault-actions-search:focus {
    border-color: var(--cvf-primary) !important;
    box-shadow: 0 0 0 3px rgba(var(--cvf-primary-rgb), .08) !important;
}
/* Period filter in actions bar */
.cv-vault-actions-period {
    padding: 10px 32px 10px 12px !important;
    border: 1.5px solid var(--cvf-border) !important;
    border-radius: 10px !important;
    background: var(--cvf-card) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%235a6c7d' stroke-width='2.5'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E") no-repeat right 10px center !important;
    -webkit-appearance: none !important;
    -moz-appearance: none !important;
    appearance: none !important;
    color: var(--cvf-text) !important;
    font-size: 13px !important;
    font-weight: 600 !important;
    font-family: inherit !important;
    cursor: pointer;
    transition: border-color .2s;
    flex-shrink: 0;
    white-space: nowrap;
}
.cv-vault-actions-period:focus {
    outline: none !important;
    border-color: var(--cvf-primary) !important;
}
/* Send button in actions bar — must override .cv-dropdown-btn header styles */
.cv-vault-actions-bar .cv-vault-actions-send-btn,
.cv-vault-actions-bar .cv-dropdown-btn {
    padding: 10px 22px !important;
    background: var(--cvf-primary) !important;
    color: #fff !important;
    border: 2px solid var(--cvf-primary) !important;
    border-radius: 10px !important;
    font-size: 14px !important;
    font-weight: 700 !important;
    cursor: pointer;
    white-space: nowrap;
    transition: background .2s, transform .15s, box-shadow .2s;
    font-family: inherit !important;
    backdrop-filter: none !important;
    box-shadow: 0 2px 8px rgba(var(--cvf-primary-rgb), .25) !important;
}
/* Plus icon in Ajouter button */
.cv-vault-actions-bar .cv-btn-plus {
    font-size: 18px !important;
    font-weight: 700 !important;
    color: #fff !important;
    line-height: 1;
}
.cv-vault-actions-bar .cv-vault-actions-send-btn:hover,
.cv-vault-actions-bar .cv-dropdown-btn:hover {
    background: var(--cvf-primary-light) !important;
    border-color: var(--cvf-primary-light) !important;
    transform: translateY(-1px);
    box-shadow: 0 4px 16px rgba(var(--cvf-primary-rgb), .35) !important;
}
/* (old header period/search styles removed — now in actions bar) */
/* "period-empty" visual cue when filter active */
.cv-vault-wrap .cv-period-empty {
    padding: 30px 20px;
    text-align: center;
    color: var(--cvf-text-muted);
    font-size: 13px;
    font-style: italic;
}
/* Stat cards row — full width, evenly distributed */
.cv-vault-stats {
    display: flex;
    gap: 10px;
    flex-wrap: wrap;
    justify-content: stretch;
    position: relative;
    z-index: var(--cvf-z-content);
}
.cv-vault-stat {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 5px;
    flex: 1;
    padding: 12px 16px;
    background: rgba(255,255,255,.12) !important;
    border: 1px solid rgba(255,255,255,.2) !important;
    border-radius: 12px;
    min-width: 75px;
    cursor: pointer;
    transition: transform .15s, background .15s, box-shadow .15s;
    backdrop-filter: blur(4px);
}
.cv-vault-stat:hover {
    transform: translateY(-2px);
    background: rgba(255,255,255,.25);
    box-shadow: 0 4px 12px rgba(0,0,0,.15);
}
.cv-vault-stat-info { cursor: default; }
.cv-vault-stat-info:hover { transform: none; }
.cv-vault-stat-icon {
    font-size: 22px;
    width: 22px;
    height: 22px;
    line-height: 1;
    color: rgba(255,255,255,.85);
}
/* Dashicons in header greeting */
.cv-vault-header-icon {
    font-size: 22px !important;
    width: 22px !important;
    height: 22px !important;
    vertical-align: middle;
    margin-right: 2px;
}
/* Dashicons in meta-lines */
.cv-vault-meta-icon {
    font-size: 13px !important;
    width: 13px !important;
    height: 13px !important;
    vertical-align: middle;
    margin-right: 1px;
}
.cv-vault-stat strong {
    font-size: 24px;
    font-weight: 700;
    color: #fff !important;
    line-height: 1;
}
.cv-vault-stat > span:last-child,
.cv-vault-stat span:not(.cv-vault-stat-icon):not(.cv-vault-stat-storage-quota) {
    font-size: 11px;
    color: rgba(255,255,255,.85) !important;
    text-transform: uppercase;
    letter-spacing: .5px;
    font-weight: 600;
    white-space: nowrap;
    line-height: 1;
}
/* Storage stat card */
.cv-vault-stat-storage { cursor: default; min-width: 100px; }
.cv-vault-stat-storage:hover { transform: none; }
.cv-vault-stat-storage-detail {
    display: flex; flex-direction: column; align-items: center; gap: 3px;
}
.cv-vault-stat-storage-detail strong {
    font-size: 16px; font-weight: 700; color: #fff !important; line-height: 1;
}
.cv-vault-stat-storage-quota {
    font-size: 10px !important; opacity: 0.7; white-space: nowrap;
}
.cv-vault-stat-storage-gauge {
    width: 100%; height: 4px; background: rgba(255,255,255,.2);
    border-radius: 2px; margin-top: 2px; overflow: hidden;
}
.cv-vault-stat-storage-fill {
    height: 100%; border-radius: 2px;
    transition: width .3s;
}

/* v20.22.139 — Stockage SEUL (tous les autres menus/tuiles désactivés) : la tuile
   passe en barre fine pleine largeur horizontale → affichage voulu, pas orphelin.
   Classe posée en JS quand aucune autre tuile n'est visible. */
.cv-vault-stats--storage-only .cv-vault-stat-storage {
    flex-direction: row; align-items: center; justify-content: flex-start;
    gap: 12px; padding: 10px 18px; min-width: 0;
}
.cv-vault-stats--storage-only .cv-vault-stat-storage .cv-vault-stat-storage-detail {
    flex-direction: row; align-items: center; gap: 12px; flex: 1 1 auto; width: 100%;
}
.cv-vault-stats--storage-only .cv-vault-stat-storage-gauge {
    flex: 1 1 auto; margin-top: 0; min-width: 120px; height: 6px;
}

/* ─── Upgrade Teaser (Parcours module not activated) ─── */
.cv-upgrade-teaser--front {
    text-align: center;
    padding: 48px 24px;
    background: linear-gradient(135deg, #fffbeb 0%, #fef3c7 100%);
    border: 1px solid #fde68a;
    border-radius: 12px;
    margin: 8px 0;
}
.cv-upgrade-teaser--front .cv-upgrade-teaser-icon { margin-bottom: 16px; }
.cv-upgrade-teaser--front .cv-upgrade-teaser-title {
    font-size: 20px; font-weight: 700; color: #1e3a5f; margin: 0 0 10px;
}
.cv-upgrade-teaser--front .cv-upgrade-teaser-desc {
    font-size: 14px; color: #6b7280; max-width: 420px; margin: 0 auto 24px; line-height: 1.6;
}
.cv-upgrade-teaser--front .cv-upgrade-teaser-features {
    display: inline-grid; grid-template-columns: 1fr 1fr; gap: 8px 20px;
    text-align: left; margin-bottom: 20px;
}
.cv-upgrade-teaser--front .cv-upgrade-teaser-feat {
    font-size: 13px; color: #374151; display: flex; align-items: center; gap: 6px;
}
.cv-upgrade-teaser--front .cv-upgrade-teaser-feat .dashicons { font-size: 16px; width: 16px; height: 16px; }
/* Locked stat card in frontend header */
.cv-vault-stat--locked { opacity: .7; }
.cv-vault-stat--muted  { opacity: .6; }
@media (max-width: 600px) {
    .cv-upgrade-teaser--front .cv-upgrade-teaser-features { grid-template-columns: 1fr; }
    .cv-upgrade-teaser--front { padding: 32px 16px; }
}

/* ─── Settings: Collapsible cards ─── */
.cv-settings-collapsible .cv-settings-card-toggle {
    cursor: pointer; display: flex; align-items: center; gap: 6px;
    user-select: none; margin: 0; padding: 0;
}
.cv-settings-collapsible .cv-settings-toggle-arrow {
    margin-left: auto; font-size: 12px; transition: transform .25s ease;
    color: var(--cvf-text-muted, #8a94a6);
}
.cv-settings-collapsible.cv-card-collapsed .cv-settings-toggle-arrow {
    transform: rotate(-90deg);
}
.cv-settings-collapsible .cv-settings-card-body {
    overflow: hidden; transition: max-height .3s ease, opacity .25s ease, margin-top .25s ease;
    margin-top: 16px; opacity: 1;
}
.cv-settings-collapsible.cv-card-collapsed .cv-settings-card-body {
    max-height: 0 !important; opacity: 0; margin-top: 0; pointer-events: none;
}

/* ─── v20.22.528 — Réordonner les blocs de réglages (poignée ⠿) ─── */
.cv-sett-drag {
    cursor: grab; user-select: none; -webkit-user-select: none; touch-action: none;
    display: inline-flex; align-items: center; justify-content: center;
    width: 24px; height: 24px; flex: 0 0 auto; border-radius: 6px;
    font-size: 15px; line-height: 1; color: var(--cvf-text-muted, #8a94a6);
    transition: background .15s ease, color .15s ease;
}
.cv-sett-drag:hover { background: var(--cvf-border, rgba(0,0,0,.08)); color: var(--cvf-text, #333); }
.cv-sett-drag:active { cursor: grabbing; }
.cli-settings-card.cv-sett-dragging {
    opacity: .55;
    outline: 2px dashed var(--cvf-accent, #e8913a);
    outline-offset: 2px;
}

/* ─── Settings: Storage gauge ─── */
.cv-settings-storage-info { padding: 4px 0; }
.cv-settings-storage-value { margin-bottom: 12px; }
.cv-settings-storage-gauge {
    width: 100%; height: 10px; background: var(--cvf-border, #e2e8f0);
    border-radius: 5px; overflow: hidden;
}
.cv-settings-storage-fill {
    height: 100%; border-radius: 5px;
    transition: width .4s ease;
}

/* ─── Login ─── */
/* v11.74.1 — Écran de connexion : fond neutre (pas de backdrop), la carte premium porte tout l'effet. */
.cv-login-wrap { display: flex; align-items: center; justify-content: center; padding: 60px 20px; }
.cv-login-box {
    background: var(--cvf-card); border: 1px solid var(--cvf-border); border-radius: 22px;
    padding: 48px 40px; max-width: 440px; width: 100%;
    box-shadow:
        0 1px 0 rgba(255,255,255,0.8) inset,
        0 24px 60px -20px rgba(var(--cvf-primary-rgb), 0.35),
        0 8px 28px rgba(15, 23, 42, 0.10);
    position: relative; overflow: hidden;
}
/* Liseré dégradé en haut de la carte */
.cv-login-box::before {
    content: ""; position: absolute; top: 0; left: 0; right: 0; height: 5px;
    background: linear-gradient(90deg, var(--cvf-primary), var(--cvf-primary-light), var(--cvf-accent));
}
.cv-login-header { text-align: center; margin-bottom: 28px; }
.cv-login-icon {
    display: inline-flex; align-items: center; justify-content: center;
    width: 72px; height: 72px; border-radius: 18px;
    background: linear-gradient(135deg, var(--cvf-primary), var(--cvf-primary-light));
    color: #fff; margin-bottom: 16px;
    box-shadow: 0 10px 24px -6px rgba(var(--cvf-primary-rgb), 0.55);
}
.cv-login-box h2 { font-size: 22px; font-weight: 800; color: var(--cvf-primary); margin: 0 0 8px; }
.cv-login-subtitle { color: var(--cvf-text-muted); font-size: 14px; margin: 0; }

/* Error box */
.cv-login-error {
    background: #fef2f2; border: 1px solid #fecaca; color: #991b1b;
    padding: 12px 16px; border-radius: 10px; font-size: 13px;
    margin-bottom: 20px; text-align: center; font-weight: 500;
}

/* Form fields */
.cv-login-field { margin-bottom: 18px; }
.cv-login-field label {
    display: flex; align-items: center; gap: 6px;
    font-weight: 600; font-size: 13px; color: var(--cvf-text); margin-bottom: 8px;
}
.cv-login-field label .dashicons {
    font-size: 15px; width: 15px; height: 15px; color: var(--cvf-primary);
}
.cv-login-field input[type="text"],
.cv-login-field input[type="password"] {
    width: 100%; padding: 12px 16px; border: 1.5px solid var(--cvf-border);
    border-radius: 10px; font-size: 14px; box-sizing: border-box;
    background: var(--cvf-bg); transition: border-color .2s, box-shadow .2s;
    color: var(--cvf-text);
}
.cv-login-field input:focus {
    border-color: var(--cvf-primary); outline: none;
    box-shadow: 0 0 0 3px rgba(42,82,152,0.12); background: var(--cvf-card);
}
.cv-login-field input::placeholder { color: var(--cvf-text-muted); opacity: 0.6; }

/* Password toggle */
.cv-login-pass-wrap { position: relative; }
.cv-login-pass-wrap input { padding-right: 44px; }
.cv-toggle-pass {
    position: absolute; right: 4px; top: 50%; transform: translateY(-50%);
    background: none; border: none; cursor: pointer; padding: 8px;
    color: var(--cvf-text-muted); transition: color .15s;
}
.cv-toggle-pass:hover { color: var(--cvf-primary); }
.cv-toggle-pass .dashicons { font-size: 18px; width: 18px; height: 18px; }

/* Options row */
.cv-login-options {
    display: flex; justify-content: space-between; align-items: center;
    margin-bottom: 24px;
}
.cv-login-remember {
    display: flex; align-items: center; gap: 6px;
    font-size: 13px; color: var(--cvf-text-muted); cursor: pointer;
}
.cv-login-remember input[type="checkbox"] {
    accent-color: var(--cvf-primary); width: 16px; height: 16px;
}
.cv-login-forgot {
    font-size: 13px; color: var(--cvf-primary); text-decoration: none; font-weight: 500;
}
.cv-login-forgot:hover { text-decoration: underline; }

/* Submit button */
.cv-login-submit {
    width: 100%; padding: 15px; background: linear-gradient(135deg, var(--cvf-primary), var(--cvf-primary-light));
    color: #fff; border: none; border-radius: 12px;
    font-size: 15px; font-weight: 700; letter-spacing: .02em; cursor: pointer;
    transition: transform .15s, box-shadow .15s, filter .15s;
    box-shadow: 0 10px 22px -8px rgba(var(--cvf-primary-rgb), 0.6);
    display: flex; align-items: center; justify-content: center; gap: 8px;
}
.cv-login-submit:hover:not(:disabled) {
    transform: translateY(-2px); filter: brightness(1.05);
    box-shadow: 0 16px 30px -10px rgba(var(--cvf-primary-rgb), 0.7);
}
.cv-login-submit:active:not(:disabled) { transform: translateY(0); }
.cv-login-submit:disabled { opacity: 0.7; cursor: not-allowed; }

/* Shake animation on error */
@keyframes cv-shake {
    0%, 100% { transform: translateX(0); }
    20%, 60% { transform: translateX(-8px); }
    40%, 80% { transform: translateX(8px); }
}
.cv-shake { animation: cv-shake 0.5s ease-in-out; }

/* Footer */
.cv-login-footer {
    text-align: center; margin-top: 20px; padding-top: 16px;
    border-top: 1px solid var(--cvf-border);
    font-size: 12px; color: var(--cvf-text-muted);
    display: flex; align-items: center; justify-content: center; gap: 6px;
}
.cv-login-footer .dashicons { font-size: 14px; width: 14px; height: 14px; }

/* Old wp_login_form fallback */
.cv-login-box .login-username, .cv-login-box .login-password { margin-bottom: 14px; text-align: left; }
.cv-login-box .login-submit input {
    width: 100%; padding: 14px; background: var(--cvf-primary); color: #fff; border: none; border-radius: 10px;
    font-size: 15px; font-weight: 700; cursor: pointer;
}
.cv-login-box .login-submit input:hover { background: var(--cvf-primary-light); }

/* ═══════════════════════════════════
   TABS
   ═══════════════════════════════════ */
.cv-tabs {
    display: flex;
    flex-wrap: nowrap;
    gap: 4px;
    margin-bottom: 14px;
    background: var(--cvf-card);
    border: 1.5px solid var(--cvf-border);
    border-radius: var(--cvf-radius);
    padding: 6px;
    box-shadow: var(--cvf-shadow);
    overflow-x: auto;
    scrollbar-width: thin;
    scrollbar-color: rgba(0,0,0,.12) transparent;
}
.cv-tabs::-webkit-scrollbar { height: 4px; }
.cv-tabs::-webkit-scrollbar-track { background: transparent; margin: 0 8px; }
.cv-tabs::-webkit-scrollbar-thumb { background: rgba(0,0,0,.10); border-radius: 4px; }
.cv-tabs:hover::-webkit-scrollbar-thumb { background: rgba(0,0,0,.20); }
.cv-tab {
    display: flex;
    align-items: center;
    gap: 6px;
    padding: 10px 14px;
    border: none;
    background: none;
    font-size: 13px;
    font-weight: 600;
    color: var(--cvf-text-muted);
    cursor: pointer;
    border-radius: 8px;
    transition: all 0.2s;
    white-space: nowrap;
    flex-shrink: 0;
}
.cv-tab:hover {
    color: var(--cvf-primary) !important;
    background: rgba(var(--cvf-primary-rgb), 0.06) !important;
}
.cv-tab.active {
    color: #fff !important;
    background: linear-gradient(135deg, var(--cvf-primary), var(--cvf-primary-light)) !important;
    box-shadow: 0 2px 8px rgba(var(--cvf-primary-rgb), 0.3) !important;
}
.cv-tab svg { flex-shrink: 0; width: 13px; height: 13px; }
.cv-tab.active svg { stroke: #fff; }
.cv-tab-count {
    background: rgba(var(--cvf-primary-rgb), 0.08);
    color: var(--cvf-primary);
    font-size: 10px;
    font-weight: 700;
    padding: 2px 8px;
    border-radius: 20px;
    line-height: 1;
    min-width: 18px;
    text-align: center;
}
/* v20.21.26 — pastille de NON-LUS (rouge) sur le menu Messages */
.cv-vault-wrap .cv-tab-unread { display: inline-flex; align-items: center; justify-content: center; min-width: 18px; height: 18px; padding: 0 5px; margin-left: 4px; border-radius: 999px; background: #ef4444; color: #fff; font-size: 10.5px; font-weight: 800; line-height: 1; }
.cv-tab.active .cv-tab-count {
    background: rgba(255,255,255,0.25);
    color: #fff;
}

/* Tab panel visibility */
.cv-vault-wrap .cv-tab-content { display: none; }
.cv-vault-wrap .cv-tab-content.active { display: block; }

/* ═══════════════════════════════════
   SHARED COMPONENTS
   ═══════════════════════════════════ */
.cv-add-btn {
    display: inline-flex; align-items: center; gap: 8px; padding: 10px 20px;
    background: linear-gradient(135deg, var(--cvf-primary), var(--cvf-primary-light));
    color: #fff !important; border: none; border-radius: 10px;
    font-size: 14px; font-weight: 700; cursor: pointer; margin-bottom: 20px;
    transition: transform .15s, box-shadow .15s;
    box-shadow: 0 2px 8px rgba(var(--cvf-primary-rgb), 0.2);
}
.cv-add-btn:hover {
    transform: translateY(-1px);
    box-shadow: 0 4px 16px rgba(var(--cvf-primary-rgb), 0.3);
}
.cv-add-btn svg { flex-shrink: 0; }

.cv-btn-primary {
    padding: 10px 22px; background: var(--cvf-primary); color: #fff; border: none;
    border-radius: 10px; font-size: 13px; font-weight: 700; cursor: pointer; transition: background 0.2s;
}
.cv-btn-primary:hover { background: var(--cvf-primary-light); }

.cv-modal-btn-save {
    padding: 10px 22px; background: var(--cvf-primary); color: #fff; border: none;
    border-radius: 10px; font-size: 13px; font-weight: 700; cursor: pointer;
    transition: background 0.2s, transform 0.15s; font-family: inherit;
}
.cv-modal-btn-save:hover { background: #152d4a; transform: translateY(-1px); }
.cv-modal-btn-save:disabled { opacity: 0.5; cursor: not-allowed; transform: none; }
.cv-modal-btn-cancel {
    padding: 10px 18px; background: none; border: 1px solid var(--cvf-border);
    border-radius: 10px; font-size: 13px; font-weight: 600; color: var(--cvf-text-muted);
    cursor: pointer; font-family: inherit; transition: all 0.15s;
}
.cv-modal-btn-cancel:hover { border-color: var(--cvf-danger); color: var(--cvf-danger); }

.cv-btn-cancel {
    padding: 10px 18px; background: none; border: 1px solid var(--cvf-border);
    border-radius: 10px; font-size: 13px; font-weight: 600; color: var(--cvf-text-muted); cursor: pointer;
}
.cv-btn-cancel:hover { border-color: var(--cvf-danger); color: var(--cvf-danger); }

/* ═══════════════════════════════════
   UPLOAD ZONE
   ═══════════════════════════════════ */
/* ─── Upload zone — admin-style redesign ─── */
.cv-vault-upload {
    background: var(--cvf-card, #fff);
    border: 1px solid var(--cvf-border);
    border-radius: 10px;
    padding: 20px;
    margin-bottom: 16px;
}
.cv-vault-dropzone {
    border: 2px dashed var(--cvf-border);
    border-radius: 10px;
    padding: 24px 20px;
    text-align: center;
    cursor: pointer;
    transition: border-color .2s, background .2s;
    background: var(--cvf-card, #fff);
}
.cv-vault-dropzone:hover,
.cv-vault-dropzone.dragover {
    border-color: var(--cvf-accent);
    background: #fff9f0;
}
.cv-vault-drop-icon {
    font-size: 28px;
    display: block;
    margin-bottom: 6px;
}
.cv-vault-drop-content p {
    margin: 0 0 8px;
    color: var(--cvf-text-muted);
    font-size: 13px;
}
.cv-vault-browse-btn {
    display: inline-block;
    background: var(--cvf-accent, #e8913a);
    color: #fff !important;
    padding: 8px 20px;
    border-radius: 8px;
    cursor: pointer;
    font-weight: 600;
    font-size: 13px;
    transition: background .2s;
    text-decoration: none !important;
}
.cv-vault-browse-btn:hover {
    background: var(--cvf-accent-light, #d47f2e);
}
.cv-vault-drop-content small {
    display: block;
    margin-top: 8px;
    color: var(--cvf-text-muted);
    font-size: 11px;
}
/* Upload options panel */
.cv-vault-upload-options {
    display: flex;
    flex-direction: column;
    gap: 0;
    margin-top: 16px;
    background: var(--cvf-bg, #f8f9fb);
    border: 1px solid var(--cvf-border, #e1e5eb);
    border-radius: 10px;
    overflow: hidden;
}
/* Each field row */
.cv-vault-upload-field {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 10px 16px;
    border-bottom: 1px solid var(--cvf-border, #e1e5eb);
}
.cv-vault-upload-field:last-child {
    border-bottom: none;
}
.cv-vault-upload-field-label {
    font-size: 12px;
    font-weight: 700;
    color: var(--cvf-text-muted, #6b7280);
    white-space: nowrap;
    min-width: 80px;
    text-transform: uppercase;
    letter-spacing: 0.3px;
}
.cv-vault-wrap input[type="text"].cv-vault-upload-desc {
    flex: 1 !important;
    padding: 6px 10px !important;
    border: 1px solid var(--cvf-border) !important;
    border-radius: 6px !important;
    font-size: 13px !important;
    height: auto !important;
    background: #fff !important;
}
.cv-vault-upload-tags {
    display: flex;
    align-items: center;
    gap: 6px;
    flex-wrap: wrap;
    flex: 1;
    min-width: 0;
    position: relative;
}
/* Tags + Submit on same row */
.cv-vault-upload-tags-row {
    display: flex !important;
    align-items: center !important;
    gap: 12px !important;
    border-bottom: none !important;
}
.cv-vault-upload-tags-row .cv-vault-upload-submit {
    flex-shrink: 0;
    margin-left: auto;
}
/* Tag overflow (hidden beyond limit, expand inline on click) */
.cv-upload-tag-overflow {
    display: none !important;
}
.cv-vault-upload-tags.cv-upload-tags-expanded .cv-upload-tag-overflow {
    display: inline-flex !important;
}
/* "+N" button for upload tags — inline expand */
.cv-upload-tag-more-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 24px;
    height: 20px;
    padding: 0 7px;
    border-radius: 10px;
    border: 1px solid var(--cvf-border, #e1e5eb);
    background: var(--cvf-bg, #f8f9fb);
    color: var(--cvf-primary, #1e3a5f);
    font-size: 10px;
    font-weight: 700;
    cursor: pointer;
    transition: all .15s;
}
.cv-upload-tag-more-btn:hover {
    background: var(--cvf-primary, #1e3a5f);
    color: #fff;
    border-color: var(--cvf-primary, #1e3a5f);
}
/* v11.86.277 — CTA de dépôt : pleine largeur, épais, premium (l'ancienne règle était en !important
   partout et écrasait toute personnalisation — on la met directement aux bonnes valeurs). */
.cv-vault-upload-submit {
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    gap: 10px !important;
    width: 100% !important;
    padding: 24px !important;
    background: var(--cvf-primary, #1e3a5f) !important;
    color: #fff !important;
    border: none !important;
    border-radius: 14px !important;
    font-size: 16px !important;
    font-weight: 700 !important;
    font-family: inherit !important;
    cursor: pointer !important;
    transition: all .2s !important;
    box-shadow: 0 12px 28px rgba(30,58,95,.30) !important;
}
.cv-vault-upload-submit:hover {
    background: #264d7a !important;
    box-shadow: 0 16px 34px rgba(30,58,95,.38) !important;
    transform: translateY(-1px) !important;
}
.cv-vault-upload-submit:disabled {
    opacity: 0.5 !important;
    cursor: not-allowed !important;
    transform: none !important;
    box-shadow: none !important;
}
.cv-vault-upload-submit .dashicons { font-size: 19px !important; width: 19px !important; height: 19px !important; }

.cv-vault-progress { margin-top: 12px; }
.cv-vault-progress-bar { height: 6px; background: #eee; border-radius: 3px; overflow: hidden; }
.cv-vault-progress-fill { height: 100%; background: var(--cvf-primary, #1e3a5f); width: 0%; transition: width 0.3s; border-radius: 3px; }
.cv-vault-progress-text { font-size: 12px; color: var(--cvf-text-muted); margin-top: 4px; display: block; }

.cv-vault-upload-message { margin-top: 12px; padding: 10px 16px; border-radius: 10px; font-size: 13px; font-weight: 600; }
.cv-vault-upload-message.success { background: #d4edda; color: #155724; }
.cv-vault-upload-message.error { background: #f8d7da; color: #721c24; }

/* ─── Per-file upload cards (frontend) ─── */
.cv-vault-wrap .cv-perfile-card {
    background: #f8f9fb;
    border: 1px solid var(--cvf-border, #d0d5dd);
    border-radius: 10px;
    padding: 12px 14px;
    margin-bottom: 10px;
}
.cv-vault-wrap .cv-perfile-header {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-bottom: 8px;
}
.cv-vault-wrap .cv-perfile-name {
    font-size: 12.5px;
    font-weight: 600;
    color: var(--cvf-primary, #1e3a5f);
    flex: 1;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.cv-vault-wrap .cv-perfile-remove {
    background: none !important;
    border: none !important;
    color: #767676 !important;
    font-size: 18px !important;
    cursor: pointer !important;
    padding: 0 4px !important;
    line-height: 1 !important;
    min-width: auto !important;
}
.cv-vault-wrap .cv-perfile-remove:hover {
    color: #c0392b !important;
}
.cv-vault-wrap .cv-perfile-fields {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    align-items: flex-start;
}
.cv-vault-wrap .cv-perfile-field {
    display: flex;
    flex-direction: column;
    gap: 3px;
}
.cv-vault-wrap .cv-perfile-field label {
    font-size: 10px !important;
    font-weight: 600 !important;
    color: #5a6c7d !important;
    text-transform: uppercase !important;
    letter-spacing: 0.5px !important;
}
.cv-vault-wrap .cv-perfile-field input[type="text"],
.cv-vault-wrap .cv-perfile-field input[type="date"] {
    padding: 5px 10px !important;
    border: 1px solid var(--cvf-border, #d0d5dd) !important;
    border-radius: 8px !important;
    font-size: 12px !important;
    background: #fff !important;
    min-width: 140px !important;
    height: auto !important;
}
.cv-vault-wrap .cv-perfile-tags {
    display: flex;
    flex-wrap: wrap;
    gap: 4px;
    padding-top: 2px;
}
.cv-vault-wrap .cv-perfile-tag {
    padding: 2px 8px !important;
    border-radius: 10px !important;
    font-size: 10px !important;
    font-weight: 600 !important;
    border: 1.5px solid currentColor !important;
    background: rgba(255,255,255,.85) !important;
    cursor: pointer !important;
    line-height: 1.3 !important;
    opacity: 0.5;
    transition: opacity .15s;
}
.cv-vault-wrap .cv-perfile-tag.cv-form-tag-active {
    opacity: 1;
    background: currentColor !important;
}
.cv-vault-wrap .cv-perfile-tag.cv-form-tag-active {
    color: inherit;
}
.cv-vault-wrap .cv-vault-upload-action {
    margin-top: 10px;
    text-align: right;
}

/* ===== v11.86.272 — Formulaire d'ajout de documents repensé ===== */
.cv-vault-wrap .cv-updz { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 8px; padding: 34px 24px; border: 2px dashed var(--cvf-border, #cdd5e0); border-radius: 16px; background: var(--cvf-bg-soft, #f8fafc); text-align: center; cursor: pointer; transition: border-color .15s, background .15s; }
.cv-vault-wrap .cv-updz:hover, .cv-vault-wrap .cv-updz.dragover { border-color: var(--cvf-primary, #2563eb); background: #eef4ff; }
.cv-vault-wrap .cv-updz-ico { font-size: 38px; width: 38px; height: 38px; color: var(--cvf-primary, #2563eb); }
.cv-vault-wrap .cv-updz-title { font-size: 15px; font-weight: 600; color: var(--cvf-text-dark, #1e293b); }
.cv-vault-wrap .cv-updz-browse { display: inline-flex; align-items: center; gap: 8px; background: var(--cvf-primary, #2563eb); color: #fff; border: none; border-radius: 10px; padding: 10px 20px; font-size: 14px; font-weight: 600; cursor: pointer; transition: filter .15s; }
.cv-vault-wrap .cv-updz-browse .dashicons { font-size: 17px; width: 17px; height: 17px; }
.cv-vault-wrap .cv-updz-browse:hover { filter: brightness(1.08); }
.cv-vault-wrap .cv-updz-hint { font-size: 12px; color: var(--cvf-text-muted, #94a3b8); }
/* Carte « détail par fichier » : vignette de format + nom + taille */
.cv-vault-wrap .cv-perfile-top { display: flex; align-items: center; gap: 12px; margin-bottom: 12px; }
.cv-vault-wrap .cv-perfile-thumb { flex: 0 0 auto; width: 44px; height: 44px; border-radius: 10px; overflow: hidden; background: var(--cvf-bg-soft, #f1f5f9); }
.cv-vault-wrap .cv-perfile-thumb .cv-docs-gallery-thumb { width: 100%; height: 100%; border-radius: 10px; }
.cv-vault-wrap .cv-perfile-thumb .cv-docs-gallery-thumb-ext { display: none; }
.cv-vault-wrap .cv-perfile-thumb .cv-docs-gallery-thumb-ico .dashicons { font-size: 22px; width: 22px; height: 22px; }
.cv-vault-wrap .cv-perfile-thumb .cv-doc-type-vid .cv-docs-gallery-thumb-ico, .cv-vault-wrap .cv-perfile-thumb .cv-doc-type-aud .cv-docs-gallery-thumb-ico { background: #efe9fb; }
.cv-vault-wrap .cv-perfile-thumb .cv-doc-type-vid .dashicons, .cv-vault-wrap .cv-perfile-thumb .cv-doc-type-aud .dashicons { color: #6d28d9; }
.cv-vault-wrap .cv-perfile-id { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; gap: 1px; }
.cv-vault-wrap .cv-perfile-id .cv-perfile-name { font-weight: 600; font-size: 13.5px; color: var(--cvf-text-dark, #1e293b); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.cv-vault-wrap .cv-perfile-id .cv-perfile-size { font-size: 11.5px; color: var(--cvf-text-muted, #94a3b8); }
.cv-vault-wrap .cv-perfile-card .cv-perfile-remove { flex: 0 0 auto; }
.cv-vault-wrap .cv-perfile-remove .dashicons { font-size: 16px; width: 16px; height: 16px; }
/* Barre d'action : CTA pleine largeur imposant (le geste principal doit sauter aux yeux) */
.cv-vault-wrap .cv-vault-upload-action { display: flex; flex-direction: column; align-items: stretch; gap: 8px; margin-top: 18px; text-align: center; }
.cv-vault-wrap .cv-updf { position: relative; }
.cv-vault-wrap .cv-updf-btn { display: inline-flex; align-items: center; gap: 8px; background: var(--cvf-card, #fff); border: 1px solid var(--cvf-border, #e8ecf0); border-radius: 10px; padding: 9px 14px; font-size: 13px; font-weight: 500; color: var(--cvf-text, #334155); cursor: pointer; }
.cv-vault-wrap .cv-updf.cv-updf-has .cv-updf-btn { border-color: var(--cvf-primary, #2563eb); color: var(--cvf-primary, #2563eb); }
.cv-vault-wrap .cv-updf-btn .dashicons { font-size: 16px; width: 16px; height: 16px; }
.cv-vault-wrap .cv-updf-caret { font-size: 14px !important; width: 14px !important; height: 14px !important; opacity: .6; }
/* v20.22.506 — z-index 900 (au lieu de 50) : le menu passe AU-DESSUS des cartes suivantes
   et du bouton d'envoi. RÈGLE IMMUABLE : les listes déroulantes sont toujours au premier plan. */
.cv-vault-wrap .cv-updf-pop { position: absolute; bottom: calc(100% + 6px); left: 0; z-index: 900; min-width: 230px; max-height: 260px; overflow-y: auto; background: var(--cvf-card, #fff); border: 1px solid var(--cvf-border, #e8ecf0); border-radius: 12px; box-shadow: 0 14px 36px rgba(15,23,42,.16); padding: 6px; }
.cv-vault-wrap .cv-updf-opt { display: flex; align-items: center; gap: 8px; padding: 8px 10px; border-radius: 8px; font-size: 13px; color: var(--cvf-text, #334155); cursor: pointer; }
.cv-vault-wrap .cv-updf-opt:hover { background: var(--cvf-bg-soft, #f1f5f9); }
.cv-vault-wrap .cv-updf-opt input { accent-color: var(--cvf-primary, #2563eb); }
.cv-vault-wrap .cv-updf-opt .dashicons { font-size: 15px; width: 15px; height: 15px; color: var(--cvf-text-muted, #94a3b8); }
.cv-vault-wrap .cv-updf-empty { padding: 10px; font-size: 12.5px; color: var(--cvf-text-muted, #94a3b8); }
/* Bouton « Déposer » : CTA principal pleine largeur, imposant et premium */
.cv-vault-wrap .cv-vault-upload-submit { display: flex; align-items: center; justify-content: center; gap: 10px; width: 100%; background: var(--cvf-primary, #2563eb); color: #fff; border: none; border-radius: 14px; padding: 23px 24px; font-size: 16px; font-weight: 700; letter-spacing: .01em; cursor: pointer; box-shadow: 0 12px 26px rgba(37,99,235,.30); transition: filter .15s, transform .08s, box-shadow .15s; }
.cv-vault-wrap .cv-vault-upload-submit:hover { filter: brightness(1.07); box-shadow: 0 16px 32px rgba(37,99,235,.36); }
.cv-vault-wrap .cv-vault-upload-submit:active { transform: translateY(1px); }
.cv-vault-wrap .cv-vault-upload-submit .dashicons { font-size: 19px; width: 19px; height: 19px; }
.cv-vault-wrap .cv-vault-upload-submit:disabled { opacity: .55; cursor: not-allowed; filter: none; box-shadow: none; }
.cv-vault-wrap .cv-vault-upload-hint { order: -1; font-size: 13px; color: var(--cvf-text-muted, #94a3b8); }

/* ===== v11.86.274 — Carte « détail par fichier » : titre éditable + champs clairs ===== */
.cv-vault-wrap .cv-perfile-card { background: var(--cvf-card, #fff); border: 1px solid var(--cvf-border, #e8ecf0); border-radius: 14px; padding: 16px 18px; margin-top: 12px; box-shadow: 0 1px 3px rgba(15,23,42,.05); }
.cv-vault-wrap .cv-perfile-top { display: flex; align-items: flex-start; gap: 12px; margin-bottom: 14px; }
.cv-vault-wrap .cv-perfile-id { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; gap: 3px; }
.cv-vault-wrap .cv-perfile-lbl { font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; color: var(--cvf-text-muted, #94a3b8); }
.cv-vault-wrap .cv-perfile-title { width: 100%; font-size: 15px; font-weight: 600; color: var(--cvf-text-dark, #1e293b); border: 1px solid var(--cvf-border, #e8ecf0); border-radius: 9px; padding: 9px 12px; background: var(--cvf-bg-soft, #fafbfc); transition: border-color .12s, background .12s; box-sizing: border-box; }
.cv-vault-wrap .cv-perfile-title:focus { outline: none; border-color: var(--cvf-primary, #2563eb); background: #fff; }
.cv-vault-wrap .cv-perfile-id .cv-perfile-size { font-size: 11.5px; color: var(--cvf-text-muted, #94a3b8); }
.cv-vault-wrap .cv-perfile-remove { flex: 0 0 auto; background: none; border: none; cursor: pointer; color: var(--cvf-text-muted, #94a3b8); padding: 4px; border-radius: 8px; margin-top: 16px; }
.cv-vault-wrap .cv-perfile-remove:hover { color: var(--cvf-danger, #e74c3c); background: rgba(231,76,60,.08); }
.cv-vault-wrap .cv-perfile-remove .dashicons { font-size: 16px; width: 16px; height: 16px; }
/* Grille de champs : 2 colonnes, tags & dossiers en pleine largeur */
.cv-vault-wrap .cv-perfile-grid { display: grid; grid-template-columns: repeat(6, 1fr); gap: 18px 16px; align-items: start; }
.cv-vault-wrap .cv-perfile-cell { display: flex; flex-direction: column; gap: 5px; min-width: 0; }
/* Ligne 1 : titre · description · expiration (2 colonnes chacun) */
.cv-vault-wrap .cv-perfile-cell.cv-cell-title, .cv-vault-wrap .cv-perfile-cell.cv-cell-desc, .cv-vault-wrap .cv-perfile-cell.cv-cell-exp { grid-column: span 2; }
/* Ligne 2 : tags · dossiers (3 colonnes chacun) */
.cv-vault-wrap .cv-perfile-cell.cv-cell-tags, .cv-vault-wrap .cv-perfile-cell.cv-cell-folders { grid-column: span 3; }
.cv-vault-wrap .cv-perfile-cell.cv-cell-title .cv-perfile-title { width: 100%; height: 42px; font-size: 14px; font-weight: 600; color: var(--cvf-text-dark, #1e293b); border: 1px solid var(--cvf-border, #e8ecf0); border-radius: 10px; padding: 0 12px; background: #fff; box-sizing: border-box; }
.cv-vault-wrap .cv-perfile-cell.cv-cell-title .cv-perfile-title:focus { outline: none; border-color: var(--cvf-primary, #2563eb); }
.cv-vault-wrap .cv-perfile-cell > label { font-size: 12px; font-weight: 600; color: var(--cvf-text-secondary, #475569); }
.cv-vault-wrap .cv-perfile-opt { font-weight: 400; color: var(--cvf-text-muted, #94a3b8); }
.cv-vault-wrap .cv-perfile-cell input[type="text"], .cv-vault-wrap .cv-perfile-cell input[type="date"] { width: 100%; height: 42px; border: 1px solid var(--cvf-border, #e8ecf0); border-radius: 10px; padding: 0 12px; font-size: 14px; color: var(--cvf-text, #334155); background: #fff; box-sizing: border-box; }
.cv-vault-wrap .cv-perfile-cell input:focus { outline: none; border-color: var(--cvf-primary, #2563eb); }
.cv-vault-wrap .cv-perfile-tags { display: flex; flex-wrap: wrap; gap: 8px; align-content: flex-start; }
/* Spécificité (0,3,0) + !important pour battre .cv-form-tag-btn (police 10.5px) que les tags portent aussi. */
.cv-vault-wrap .cv-perfile-tags .cv-perfile-tag { padding: 8px 15px !important; border-radius: 999px; border: 1px solid var(--cvf-border, #e8ecf0); background: var(--cvf-bg-soft, #f1f5f9) !important; color: var(--cvf-text, #475569) !important; font-size: 13.5px !important; font-weight: 500 !important; line-height: 1.2 !important; cursor: pointer; transition: all .12s; }
.cv-vault-wrap .cv-perfile-tags .cv-perfile-tag:hover { border-color: var(--cvf-primary, #2563eb); }
.cv-vault-wrap .cv-perfile-tags .cv-perfile-tag.cv-form-tag-active { background: var(--cvf-primary, #2563eb) !important; color: #fff !important; border-color: var(--cvf-primary, #2563eb); }
.cv-vault-wrap .cv-perfile-tag.cv-form-tag-active { background: var(--cvf-primary, #2563eb) !important; color: #fff !important; border-color: var(--cvf-primary, #2563eb); }
/* Multi-dossiers par fichier : la liste s'ouvre vers le BAS dans la carte */
.cv-vault-wrap .cv-perfile-folders { position: relative; }
.cv-vault-wrap .cv-perfile-folders .cv-updf-btn { width: 100%; height: 42px; justify-content: flex-start; padding: 0 12px; font-size: 14px; }
.cv-vault-wrap .cv-perfile-folders .cv-updf-label { flex: 1 1 auto; text-align: left; }
.cv-vault-wrap .cv-perfile-folders .cv-updf-pop { top: calc(100% + 6px); bottom: auto; left: 0; right: 0; }
.cv-vault-wrap .cv-vault-upload-hint { font-size: 12.5px; color: var(--cvf-text-muted, #94a3b8); }
@media (max-width: 680px) {
  .cv-vault-wrap .cv-perfile-grid { grid-template-columns: 1fr; }
  .cv-vault-wrap .cv-perfile-cell.cv-cell-title, .cv-vault-wrap .cv-perfile-cell.cv-cell-desc, .cv-vault-wrap .cv-perfile-cell.cv-cell-exp, .cv-vault-wrap .cv-perfile-cell.cv-cell-tags, .cv-vault-wrap .cv-perfile-cell.cv-cell-folders { grid-column: 1 / -1; }
  .cv-vault-wrap .cv-perfile-grid.cv-pf-grid-2 .cv-perfile-cell { grid-column: 1 / -1; }
}

/* v11.86.278 — Médias : grille 2 colonnes (titre·description / tags·dossiers) + état actif des tags média */
.cv-vault-wrap .cv-perfile-grid.cv-pf-grid-2 .cv-perfile-cell { grid-column: span 3; }
.cv-vault-wrap .cv-perfile-tags .cv-perfile-tag.cv-mu-tag-active { background: var(--cvf-primary, #2563eb) !important; color: #fff !important; border-color: var(--cvf-primary, #2563eb); }
.cv-vault-wrap .cv-updz-cancel { align-self: center; background: none; border: none; color: var(--cvf-text-muted, #94a3b8); font-size: 13px; cursor: pointer; padding: 6px 10px; }
.cv-vault-wrap .cv-updz-cancel:hover { color: var(--cvf-text, #475569); text-decoration: underline; }
/* Titre éditable (média) : même style que le titre Documents même hors .cv-cell-title scope */
.cv-vault-wrap .cv-perfile-title { width: 100%; height: 42px; font-size: 14px; font-weight: 600; color: var(--cvf-text-dark, #1e293b); border: 1px solid var(--cvf-border, #e8ecf0); border-radius: 10px; padding: 0 12px; background: #fff; box-sizing: border-box; }
.cv-vault-wrap .cv-perfile-title:focus { outline: none; border-color: var(--cvf-primary, #2563eb); }

/* v11.86.280 — Fix alignement formulaire embed/enregistrement : neutraliser le liseré et les marges
   héritées de .cv-form-tags-row (border-top + margin-top legacy) qui créaient une ligne parasite et
   décalaient les tags par rapport à la cellule Dossiers. Dans une cellule perfile, les tags doivent
   s'aligner directement sous leur label, exactement comme la liste de dossiers en face. */
.cv-vault-wrap .cv-perfile-cell .cv-form-tags-row {
    margin: 0 !important; padding: 0 !important; border-top: none !important;
    display: flex; flex-wrap: wrap; align-items: flex-start; gap: 8px;
}
.cv-vault-wrap .cv-perfile-cell .cv-form-tags-row > label { display: none; }
/* La cellule média/embed/enregistrement : label puis contrôle, alignés en haut */
.cv-vault-wrap .cv-perfile-cell.cv-cell-tags, .cv-vault-wrap .cv-perfile-cell.cv-cell-folders { align-self: start; }
/* Carte d'enregistrement : même respiration que les autres cartes */
.cv-vault-wrap .cv-record-note.cv-perfile-card { margin-top: 14px; }

/* v11.86.280 — Formulaire Fiche : même carte premium (titre, contenu, couleur, puis tags · dossiers) */
.cv-vault-wrap .cv-fiche-card { padding: 22px; }
.cv-vault-wrap .cv-fiche-card > .cv-perfile-cell { margin-bottom: 16px; }
.cv-vault-wrap .cv-fiche-card > .cv-perfile-grid { margin-top: 2px; }
.cv-vault-wrap textarea.cv-fiche-content-input { width: 100%; min-height: 120px; font-size: 14px; line-height: 1.5; color: var(--cvf-text-dark, #1e293b); border: 1px solid var(--cvf-border, #e8ecf0); border-radius: 10px; padding: 11px 13px; background: #fff; box-sizing: border-box; resize: vertical; font-family: inherit; }
.cv-vault-wrap textarea.cv-fiche-content-input:focus { outline: none; border-color: var(--cvf-primary, #2563eb); }
.cv-vault-wrap .cv-cell-color .cv-color-picker { display: flex; align-items: center; gap: 10px; }
.cv-vault-wrap .cv-fiche-action { margin-top: 16px; }

/* v11.86.281 — Formulaire Lien : carte premium (adresse en avant, puis nom · description, tags · dossiers) */
.cv-vault-wrap .cv-link-card-form { padding: 22px; }
.cv-vault-wrap .cv-link-card-form > .cv-cell-url { margin-bottom: 16px; }
.cv-vault-wrap .cv-link-action { margin-top: 16px; }

/* v11.86.283 — Resserrer l'espace conteneur ↔ carte interne (double encadré) : la carte premium
   porte déjà sa bordure/ombre, donc on annule sa marge haute dans les conteneurs de formulaire.
   + CTA de validation : police agrandie pour plus d'impact. */
.cv-vault-wrap .cv-card-form .cv-perfile-card,
.cv-vault-wrap .cv-link-form .cv-perfile-card,
.cv-vault-wrap .cv-embed-form .cv-perfile-card { margin-top: 0; }
/* Spécificité (0,2,1) + !important : bat le reset `.cv-vault-wrap button{font-size:inherit!important}`
   (0,1,1) qui forçait le texte du CTA à hériter (14px). */
.cv-vault-wrap button.cv-vault-upload-submit { font-size: 17.5px !important; }
.cv-vault-wrap button.cv-vault-upload-submit .dashicons { font-size: 21px; width: 21px; height: 21px; }

/* v11.86.279 — Intégrer un média par URL : même carte premium que l'ajout de fichiers */
.cv-vault-wrap .cv-embed-card.cv-perfile-card { display: block; padding: 22px; }
.cv-vault-wrap .cv-embed-type-hidden { position: absolute; width: 1px; height: 1px; opacity: 0; pointer-events: none; clip: rect(0 0 0 0); }
.cv-vault-wrap .cv-embed-typetabs { display: inline-flex; gap: 4px; padding: 4px; background: var(--cvf-bg-soft, #f1f5f9); border: 1px solid var(--cvf-border, #e8ecf0); border-radius: 12px; margin-bottom: 18px; }
.cv-vault-wrap .cv-embed-typetab { display: inline-flex; align-items: center; gap: 7px; border: 1px solid transparent; background: transparent; color: var(--cvf-text, #475569); font-size: 13.5px; font-weight: 600; padding: 8px 16px; border-radius: 9px; cursor: pointer; transition: all .12s; }
.cv-vault-wrap .cv-embed-typetab .dashicons { font-size: 17px; width: 17px; height: 17px; }
.cv-vault-wrap .cv-embed-typetab:hover { color: var(--cvf-text-dark, #1e293b); }
.cv-vault-wrap .cv-embed-typetab.is-active { background: #fff; color: var(--cvf-primary, #2563eb); border-color: var(--cvf-border, #e8ecf0); box-shadow: 0 1px 3px rgba(15,23,42,.06); }
.cv-vault-wrap .cv-embed-urlbox { margin-bottom: 18px; }
.cv-vault-wrap .cv-embed-urllabel { display: flex; align-items: center; gap: 7px; font-size: 13px; font-weight: 600; color: var(--cvf-text-dark, #1e293b); margin-bottom: 7px; }
.cv-vault-wrap .cv-embed-urllabel .dashicons { font-size: 16px; width: 16px; height: 16px; color: var(--cvf-primary, #2563eb); }
.cv-vault-wrap textarea.cv-embed-urlinput { width: 100%; min-height: 52px; font-size: 14px; color: var(--cvf-text-dark, #1e293b); border: 1px solid var(--cvf-border, #e8ecf0); border-radius: 10px; padding: 11px 13px; background: #fff; box-sizing: border-box; resize: vertical; font-family: inherit; }
.cv-vault-wrap textarea.cv-embed-urlinput:focus { outline: none; border-color: var(--cvf-primary, #2563eb); }
.cv-vault-wrap textarea.cv-embed-urlinput.cv-field-readonly { background: var(--cvf-bg-soft, #f1f5f9); color: var(--cvf-text-muted, #94a3b8); }
.cv-vault-wrap .cv-embed-urlbox .cv-embed-url-hint { display: block; margin-top: 6px; font-size: 12.5px; color: var(--cvf-text-muted, #94a3b8); }
.cv-vault-wrap .cv-embed-card .cv-cell-desc input,
.cv-vault-wrap .cv-embed-card .cv-cell-title input { width: 100%; box-sizing: border-box; }

/* Expiration date field in upload */
.cv-vault-wrap input[type="date"].cv-vault-upload-expires {
    padding: 5px 14px !important;
    border: 1px solid var(--cvf-border, #d0d5dd) !important;
    border-radius: 20px !important;
    font-size: 12px !important;
    font-family: inherit !important;
    color: var(--cvf-text, #333) !important;
    background: #fff !important;
    height: 30px !important;
    box-sizing: border-box !important;
}

/* ═══ Frontend Edit File Modal ═══ */
/* Modal portal fix: ensure modals break out of transformed parents */
.cv-front-edit-overlay {
    position: fixed !important;
    top: 0 !important;
    left: 0 !important;
    right: 0 !important;
    bottom: 0 !important;
    background: rgba(0,0,0,.45);
    z-index: var(--cvf-z-modal, 100000); /* fallback: may be portaled to <body> */
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 20px;
    transform: none !important;
}
.cv-front-edit-modal {
    background: var(--cvf-card, #fff);
    border-radius: 16px;
    width: 100%;
    max-width: 480px;
    box-shadow: 0 20px 60px rgba(0,0,0,.2);
    overflow: hidden;
}
.cv-front-edit-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 18px 22px;
    border-bottom: 1px solid var(--cvf-border, #e1e5eb);
}
.cv-front-edit-header h3 {
    margin: 0 !important;
    padding: 0 !important;
    font-size: 16px !important;
    font-weight: 700 !important;
    color: var(--cvf-text, #1a1a2e) !important;
}
.cv-front-edit-close {
    background: none !important;
    border: none !important;
    font-size: 22px !important;
    color: var(--cvf-text-muted, #8a94a6) !important;
    cursor: pointer;
    padding: 0 !important;
    line-height: 1;
}
.cv-front-edit-close:hover { color: var(--cvf-danger, #dc3545) !important; }
.cv-front-edit-body {
    padding: 20px 22px;
    display: flex;
    flex-direction: column;
    gap: 16px;
}
.cv-front-edit-field {
    display: flex;
    flex-direction: column;
    gap: 5px;
}
.cv-front-edit-label {
    font-size: 11px !important;
    font-weight: 700 !important;
    text-transform: uppercase;
    letter-spacing: .3px;
    color: var(--cvf-text-muted, #6b7280) !important;
}
.cv-vault-wrap input[type="text"].cv-front-edit-input,
.cv-vault-wrap input[type="date"].cv-front-edit-input {
    padding: 8px 14px !important;
    border: 1px solid var(--cvf-border, #d0d5dd) !important;
    border-radius: 10px !important;
    font-size: 13px !important;
    font-family: inherit !important;
    background: #fff !important;
    color: var(--cvf-text, #333) !important;
    height: auto !important;
    width: 100% !important;
    box-sizing: border-box !important;
}
.cv-vault-wrap input[type="text"].cv-front-edit-input:focus,
.cv-vault-wrap input[type="date"].cv-front-edit-input:focus {
    border-color: var(--cvf-primary, #1e3a5f) !important;
    box-shadow: 0 0 0 3px rgba(30,58,95,.08) !important;
    outline: none !important;
}
.cv-front-edit-tags {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
}
.cv-front-edit-footer {
    display: flex;
    justify-content: flex-end;
    gap: 10px;
    padding: 16px 22px;
    border-top: 1px solid var(--cvf-border, #e1e5eb);
    background: var(--cvf-bg, #f8f9fb);
}
.cv-front-edit-cancel {
    padding: 8px 18px !important;
    border: 1.5px solid var(--cvf-border, #d0d5dd) !important;
    border-radius: 10px !important;
    background: #fff !important;
    color: var(--cvf-text-muted, #6b7280) !important;
    font-size: 13px !important;
    font-weight: 600 !important;
    font-family: inherit !important;
    cursor: pointer;
}
.cv-front-edit-cancel:hover { border-color: var(--cvf-text-muted) !important; }
.cv-front-edit-save {
    padding: 8px 22px !important;
    border: none !important;
    border-radius: 10px !important;
    background: var(--cvf-primary, #1e3a5f) !important;
    color: #fff !important;
    font-size: 13px !important;
    font-weight: 700 !important;
    font-family: inherit !important;
    cursor: pointer;
    box-shadow: 0 2px 8px rgba(30,58,95,.2);
    transition: all .2s;
}
.cv-front-edit-save:hover {
    background: #264d7a !important;
    box-shadow: 0 4px 12px rgba(30,58,95,.3);
}

/* ─── Filter bar ─── */
.cv-vault-filter { display: flex; gap: 8px; margin-bottom: 20px; flex-wrap: wrap; }
.cv-filter-btn {
    padding: 8px 18px; border: 1px solid var(--cvf-border); border-radius: 24px;
    background: var(--cvf-card); font-size: 13px; font-weight: 600; cursor: pointer;
    color: var(--cvf-text-muted); transition: all 0.2s;
}
.cv-filter-btn:hover { border-color: var(--cvf-primary); color: var(--cvf-primary); }
.cv-filter-btn.active { background: var(--cvf-primary); color: #fff; border-color: var(--cvf-primary); }

/* ─── File cards ─── */
.cv-vault-files { display: flex; flex-direction: column; gap: 10px; }
.cv-vault-file-card {
    display: flex; align-items: center; gap: 16px; background: var(--cvf-card);
    border: 1px solid var(--cvf-border); border-radius: var(--cvf-radius); padding: 16px 20px;
    transition: all 0.2s; box-shadow: var(--cvf-shadow);
}
.cv-vault-file-card:hover { transform: translateX(4px); border-color: var(--cvf-primary-light); }
.cv-vault-file-card[data-hidden="true"] { display: none; }
.cv-vault-file-icon { font-size: 32px; flex-shrink: 0; }
.cv-vault-file-info { flex: 1; min-width: 0; }
.cv-vault-file-info h4 { margin: 0; font-size: 14px; font-weight: 700; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.cv-vault-file-desc { margin: 2px 0 0; font-size: 12px; color: var(--cvf-text-muted); }
.cv-vault-file-meta { display: flex; align-items: center; gap: 6px; margin-top: 4px; font-size: 12px; color: var(--cvf-text-muted); flex-wrap: wrap; }
.cv-vault-sep { opacity: 0.4; }
.cv-vault-self { color: var(--cvf-accent); font-weight: 600; }
.cv-vault-admin { color: var(--cvf-primary); font-weight: 600; }

.cv-vault-file-actions { display: flex; gap: 8px; flex-shrink: 0; }
.cv-vault-action-btn {
    display: inline-flex; align-items: center; justify-content: center;
    width: 36px; height: 36px; border-radius: 10px; border: 1px solid var(--cvf-border);
    background: #fff; cursor: pointer; text-decoration: none; color: var(--cvf-text-muted); transition: all 0.2s;
}
.cv-vault-action-btn:hover { border-color: var(--cvf-primary); color: var(--cvf-primary); background: rgba(var(--cvf-primary-rgb), 0.05); }
.cv-vault-delete-btn:hover, .cv-delete-link-btn:hover { border-color: var(--cvf-danger) !important; color: var(--cvf-danger) !important; background: #fff5f5 !important; }

/* ─── Empty ─── */
.cv-vault-empty { text-align: center; padding: 48px; color: var(--cvf-text-muted); }
.cv-vault-empty span { font-size: 48px; display: block; margin-bottom: 12px; }

/* ═══════════════════════════════════
   CARDS (Fiches)
   ═══════════════════════════════════ */
.cv-card-form {
    background: var(--cvf-card); border: 1px solid var(--cvf-border); border-radius: var(--cvf-radius);
    padding: 12px 12px 14px; margin-bottom: 20px; box-shadow: var(--cvf-shadow);
}
.cv-card-form-row { margin-bottom: 16px; }
.cv-card-form-row input[type="text"],
.cv-card-form-row input[type="url"],
.cv-card-form-row textarea {
    width: 100%; padding: 12px 16px; border: 1px solid var(--cvf-border); border-radius: 10px;
    font-size: 14px; box-sizing: border-box; font-family: inherit; transition: border-color 0.2s;
}
.cv-card-form-row input:focus, .cv-card-form-row textarea:focus {
    border-color: var(--cvf-primary-light); outline: none; box-shadow: 0 0 0 3px rgba(42,82,152,0.1);
}
.cv-card-form-footer {
    display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 14px;
    padding-top: 16px; margin-top: 4px; border-top: 1px solid var(--cvf-border, #e8ecf0);
}
.cv-card-form-actions {
    display: flex; gap: 12px; padding-top: 18px; margin-top: 6px;
    border-top: 1px solid var(--cvf-border, #e8ecf0);
}
.cv-form-tags-row {
    padding-top: 14px; margin-top: 4px; border-top: 1px solid var(--cvf-border, #e8ecf0);
}

/* Color picker */
.cv-color-picker { display: flex; align-items: center; gap: 10px; }
.cv-color-picker label { font-size: 13px; font-weight: 600; color: var(--cvf-text-muted); }
.cv-color-dot {
    width: 28px; height: 28px; border-radius: 50%; border: 2.5px solid transparent;
    cursor: pointer; transition: all 0.2s; padding: 0;
}
.cv-color-dot:hover { transform: scale(1.18); }
.cv-color-dot.active { border-color: var(--cvf-text); box-shadow: 0 0 0 2px #fff, 0 0 0 4px var(--cvf-text); }

/* Bouton Enregistrer mis en évidence */
.cv-card-form .cv-btn-primary {
    background: var(--cvf-primary, #1e3a5f); color: #fff; font-weight: 700;
    padding: 10px 24px; border-radius: 8px; border: none; cursor: pointer;
    font-size: 14px; transition: all .2s; box-shadow: 0 2px 8px rgba(30,58,95,.2);
}
.cv-card-form .cv-btn-primary:hover {
    background: #16304f; box-shadow: 0 4px 14px rgba(30,58,95,.3); transform: translateY(-1px);
}
.cv-card-form .cv-btn-cancel {
    background: none; color: var(--cvf-text-muted, #767676); font-weight: 500;
    padding: 10px 18px; border-radius: 8px; border: 1px solid var(--cvf-border, #e0e0e0);
    cursor: pointer; font-size: 13px; transition: all .2s;
}
.cv-card-form .cv-btn-cancel:hover { background: #f5f5f5; color: #666; }

/* Cards grid — design identique à l'admin */
.cv-cards-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 14px; padding-bottom: 20px; }
.cv-vault-wrap .cv-card-item {
    background: var(--cvf-card); border-radius: 12px; box-shadow: 0 1px 6px rgba(0,0,0,.04);
    overflow: hidden; border: 1.5px solid var(--cvf-border, #e8ecf0);
    transition: all .15s;
}
.cv-vault-wrap .cv-card-item:hover {
    transform: translateY(-2px); box-shadow: 0 4px 16px rgba(0,0,0,.08);
    background: #fcfcfd;
}
/* Color bar en haut de la fiche */
.cv-vault-wrap .cv-fiche-color { height: 5px; }
/* Body de la fiche */
.cv-vault-wrap .cv-fiche-body { padding: 16px 18px; }
.cv-vault-wrap .cv-fiche-title {
    font-size: 15px; font-weight: 700; color: var(--cvf-primary, #1e3a5f);
    display: flex; align-items: center; gap: 5px; margin-bottom: 6px;
}
.cv-vault-wrap .cv-fiche-text {
    font-size: 13px; color: var(--cvf-text-muted, #666); line-height: 1.6;
    margin-bottom: 8px; word-break: break-word;
}
.cv-vault-wrap .cv-fiche-text p { margin: 0 0 6px; }
/* Tags badges */
.cv-vault-wrap .cv-fiche-tags { display: flex; gap: 4px; flex-wrap: wrap; margin-bottom: 8px; }
.cv-vault-wrap .cv-fiche-tag {
    display: inline-flex; align-items: center; padding: 2px 8px; border-radius: 10px;
    font-size: 11px; font-weight: 600; gap: 3px;
}
.cv-vault-wrap .cv-fiche-tag-blue { background: var(--cvf-tag-blue-bg); color: var(--cvf-tag-blue); }
.cv-vault-wrap .cv-fiche-tag-green { background: var(--cvf-tag-green-bg); color: var(--cvf-tag-green); }
.cv-vault-wrap .cv-fiche-tag-orange { background: var(--cvf-tag-orange-bg); color: var(--cvf-tag-orange); }
.cv-vault-wrap .cv-fiche-tag-red { background: var(--cvf-tag-red-bg); color: var(--cvf-tag-red); }
.cv-vault-wrap .cv-fiche-tag-purple { background: var(--cvf-tag-purple-bg); color: var(--cvf-tag-purple); }
.cv-vault-wrap .cv-fiche-tag-teal { background: var(--cvf-tag-teal-bg); color: var(--cvf-tag-teal); }
/* Meta row */
.cv-vault-wrap .cv-fiche-meta {
    display: flex; justify-content: space-between; align-items: center;
    font-size: 12px; color: var(--cvf-text-muted, #767676);
}
/* Hover actions */
.cv-vault-wrap .cv-hover-actions { display: flex; gap: 2px; opacity: 0; transition: opacity .15s; }
.cv-vault-wrap .cv-card-item:hover .cv-hover-actions { opacity: 1; }
.cv-vault-wrap .cv-hover-action-btn {
    background: none; border: none; cursor: pointer; font-size: 14px; padding: 3px 5px;
    color: #aaa; border-radius: 4px; transition: all .15s;
}
.cv-vault-wrap .cv-hover-action-btn:hover { color: var(--cvf-primary, #1e3a5f); background: rgba(30,58,95,.08); }
.cv-vault-wrap .cv-hover-action-delete:hover { color: #e74c3c; background: rgba(231,76,60,.08); }
/* Fiches admin — mise en évidence */
.cv-vault-wrap .cv-card-item.cv-card-admin {
    border-color: var(--cvf-accent, #e8913a);
    background: linear-gradient(135deg, #fffcf7, #fff9f0);
}
.cv-vault-wrap .cv-card-item.cv-card-admin .cv-fiche-color {
    background: var(--cvf-accent, #e8913a) !important;
}
.cv-vault-wrap .cv-fiche-admin-badge {
    display: inline-flex; align-items: center; gap: 3px;
    background: linear-gradient(135deg, #e8913a, #d4802e); color: #fff;
    font-size: 10px; font-weight: 700; padding: 2px 9px; border-radius: 10px;
    margin-left: 6px; white-space: nowrap; letter-spacing: .2px;
    box-shadow: 0 1px 4px rgba(232,145,58,.3);
}

/* ═══════════════════════════════════
   LINKS — design identique à l'admin
   ═══════════════════════════════════ */
.cv-link-form {
    background: var(--cvf-card); border: 1px solid var(--cvf-border); border-radius: var(--cvf-radius);
    padding: 12px 12px 14px; margin-bottom: 20px; box-shadow: var(--cvf-shadow);
}
.cv-link-form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
@media (max-width: 600px) { .cv-link-form-grid { grid-template-columns: 1fr; } }
/* Boutons du formulaire lien — même style que fiches */
.cv-link-form .cv-btn-primary,
#cv-link-form .cv-btn-primary {
    background: var(--cvf-primary, #1e3a5f); color: #fff; font-weight: 700;
    padding: 10px 24px; border-radius: 8px; border: none; cursor: pointer;
    font-size: 14px; transition: all .2s; box-shadow: 0 2px 8px rgba(30,58,95,.2);
}
.cv-link-form .cv-btn-primary:hover,
#cv-link-form .cv-btn-primary:hover {
    background: #16304f; box-shadow: 0 4px 14px rgba(30,58,95,.3); transform: translateY(-1px);
}
.cv-link-form .cv-btn-cancel,
#cv-link-form .cv-btn-cancel {
    background: none; color: var(--cvf-text-muted, #767676); font-weight: 500;
    padding: 10px 18px; border-radius: 8px; border: 1px solid var(--cvf-border, #e0e0e0);
    cursor: pointer; font-size: 13px; transition: all .2s;
}
.cv-link-form .cv-btn-cancel:hover,
#cv-link-form .cv-btn-cancel:hover { background: #f5f5f5; color: #666; }

.cv-links-list { display: flex; flex-direction: column; gap: 10px; padding-bottom: 20px; }
.cv-vault-wrap .cv-link-card {
    display: flex; gap: 14px; padding: 16px 18px;
    background: #fff; border-radius: 12px;
    border: 1.5px solid var(--cvf-border, #e8ecf0);
    box-shadow: 0 1px 6px rgba(0,0,0,.04);
    transition: all .15s;
    cursor: pointer; /* v11.86.90 — toute la carte ouvre le lien */
}
.cv-vault-wrap .cv-link-card:hover {
    background: var(--cvf-hover-bg); border-color: var(--cvf-primary, #1e3a5f);
    box-shadow: 0 6px 20px rgba(30,58,95,.12); transform: translateY(-2px);
}
/* Icon container */
.cv-vault-wrap .cv-link-icon {
    width: 40px; height: 40px; border-radius: 10px; background: var(--cvf-icon-bg);
    display: flex; align-items: center; justify-content: center; flex-shrink: 0;
    font-size: 20px;
}
/* Body */
.cv-vault-wrap .cv-link-body { flex: 1; min-width: 0; }
.cv-vault-wrap .cv-link-title {
    font-size: 14px; font-weight: 700; margin-bottom: 2px;
    display: flex; align-items: center; gap: 6px; flex-wrap: wrap;
}
.cv-vault-wrap .cv-link-title a {
    color: var(--cvf-primary, #1e3a5f); text-decoration: none;
}
.cv-vault-wrap .cv-link-title a:hover { text-decoration: underline; }
.cv-vault-wrap .cv-link-url {
    font-size: 12px; color: var(--cvf-text-muted, #767676);
    overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
    margin-bottom: 2px;
}
.cv-vault-wrap .cv-link-desc {
    font-size: 13px; color: var(--cvf-text-muted, #777); margin-bottom: 4px;
}
.cv-vault-wrap .cv-link-card .cv-link-meta {
    display: flex; justify-content: space-between; align-items: center;
    font-size: 12px; color: var(--cvf-text-muted); margin-top: 4px;
}
.cv-vault-wrap .cv-link-card:hover .cv-hover-actions { opacity: 1; }
/* Lien admin — mise en évidence */
.cv-vault-wrap .cv-link-card.cv-link-admin {
    border-color: var(--cvf-accent, #e8913a);
    background: linear-gradient(135deg, #fffcf7, #fff9f0);
}
.cv-vault-wrap .cv-link-card.cv-link-admin .cv-link-icon {
    background: linear-gradient(135deg, #fff3e0, #ffe0b2);
}
.cv-vault-wrap .cv-link-admin-badge {
    display: inline-flex; align-items: center; gap: 3px;
    background: linear-gradient(135deg, #e8913a, #d4802e); color: #fff;
    font-size: 10px; font-weight: 700; padding: 2px 9px; border-radius: 10px;
    white-space: nowrap; letter-spacing: .2px;
    box-shadow: 0 1px 4px rgba(232,145,58,.3);
}
.cv-vault-wrap .cv-link-card.cv-link-admin:hover {
    border-color: #d4802e;
    box-shadow: 0 6px 20px rgba(232,145,58,.18);
}

/* ═══════════════════════════════════
   NOTEPAD — design identique à l'admin
   ═══════════════════════════════════ */
.cv-vault-wrap .cvf-section-hint {
    font-size: 13px; color: var(--cvf-text-muted, #767676); margin: 0 0 14px;
}
/* ─── NOTEPAD — Simple, épuré ─── */

/* Zone de saisie */
.cv-vault-wrap .cv-note-input {
    display: flex; gap: 10px; padding: 0; margin-bottom: 20px;
    background: none; border: none; border-radius: 0;
}
.cv-vault-wrap .cv-note-field {
    flex: 1; padding: 10px 14px; border: 1px solid var(--cvf-border);
    border-radius: 8px; font-size: 13px; background: #fff; font-family: inherit;
    transition: border-color .2s;
}
.cv-vault-wrap .cv-note-field:focus {
    border-color: var(--cvf-primary, #1e3a5f); outline: none;
}
.cv-vault-wrap .cv-note-send-btn {
    padding: 10px 22px; font-size: 13px; font-weight: 600; border-radius: 8px;
    background: var(--cvf-primary, #1e3a5f); color: #fff; border: none; cursor: pointer;
    transition: background .2s; white-space: nowrap;
}
.cv-vault-wrap .cv-note-send-btn:hover { background: #264d7a; }

/* Thread — aucun fond, aucune bordure */
.cv-vault-wrap .cv-note-thread {
    background: none; border: none; border-radius: 0;
    box-shadow: none; overflow: visible; padding: 0;
}

/* Note — simple liste avec séparation fine */
.cv-vault-wrap .cv-note-msg {
    display: flex; gap: 12px; padding: 14px 4px;
    position: relative; transition: background .15s;
    border-bottom: 1px solid var(--cvf-separator);
}
.cv-vault-wrap .cv-note-msg:last-child { border-bottom: none; }
.cv-vault-wrap .cv-note-msg:hover { background: var(--cvf-hover-bg); }

/* Note admin — légère teinte + barre gauche */
.cv-vault-wrap .cv-note-msg[data-author-type="coach"] {
    border-left: 3px solid var(--cvf-primary, #1e3a5f);
    padding-left: 12px;
}

/* Avatar */
.cv-vault-wrap .cv-note-av {
    width: 32px; height: 32px; border-radius: 50%;
    display: flex; align-items: center; justify-content: center;
    font-size: 11px; font-weight: 700; color: #fff; flex-shrink: 0;
}
.cv-vault-wrap .cv-note-av-coach { background: var(--cvf-primary, #1e3a5f); }
.cv-vault-wrap .cv-note-av-client { background: var(--cvf-author-client); }

/* Nom auteur */
.cv-vault-wrap .cv-note-who {
    font-size: var(--cvf-font-sm); font-weight: 600; margin-bottom: 2px;
    display: flex; align-items: center; gap: 6px;
}
.cv-vault-wrap .cv-note-who-coach { color: var(--cvf-primary, #1e3a5f); }
.cv-vault-wrap .cv-note-who-client { color: var(--cvf-author-client); }

/* Badge admin */
.cv-vault-wrap .cv-note-admin-badge {
    display: inline-flex; align-items: center;
    background: var(--cvf-primary, #1e3a5f); color: #fff;
    font-size: 10px; font-weight: 600; padding: 2px 8px; border-radius: 6px;
    text-transform: uppercase;
}

/* Texte du message */
.cv-vault-wrap .cv-note-txt {
    font-size: 13.5px; color: var(--cvf-text); line-height: 1.55; word-break: break-word;
}

/* Date/heure */
.cv-vault-wrap .cv-note-time {
    font-size: 11px; color: var(--cvf-text-muted); margin-top: 3px;
}

/* Actions au survol */
.cv-vault-wrap .cv-note-msg-actions {
    position: absolute; top: 12px; right: 8px;
    display: flex; gap: 4px; opacity: 0; transition: opacity .15s;
}
.cv-vault-wrap .cv-note-msg:hover .cv-note-msg-actions { opacity: 1; }

/* Tri */
.cv-vault-wrap .cvf-sort-controls { display: flex; gap: 4px; }
.cv-vault-wrap .cvf-sort-btn {
    padding: 5px 10px; border: 1px solid var(--cvf-border); border-radius: 7px;
    font-size: 12px; font-weight: 500; background: #fff; color: #777;
    cursor: pointer; transition: all .15s;
}
.cv-vault-wrap .cvf-sort-btn:hover { border-color: var(--cvf-primary, #1e3a5f); color: var(--cvf-primary, #1e3a5f); }
.cv-vault-wrap .cvf-sort-btn.active {
    background: var(--cvf-primary, #1e3a5f); color: #fff; border-color: var(--cvf-primary, #1e3a5f);
}

/* ─── Séparateur de date — ligne centrée ─── */
.cv-vault-wrap .cv-note-month-sep {
    display: flex; align-items: center; gap: 12px;
    margin: 20px 0 10px; padding: 0;
    user-select: none;
}
.cv-vault-wrap .cv-note-month-sep .cv-note-sep-label {
    font-size: 11px; font-weight: 600; color: var(--cvf-date-muted);
    text-transform: uppercase; letter-spacing: .4px; white-space: nowrap;
}
.cv-vault-wrap .cv-note-month-sep .cv-note-sep-count {
    font-size: 10px; color: var(--cvf-text-muted); white-space: nowrap;
}
.cv-vault-wrap .cv-note-month-sep .cv-note-sep-line {
    flex: 1; height: 1px; background: var(--cvf-border);
}

/* ═══════════════════════════════════
   QUICK ADD + DASHBOARD
   ═══════════════════════════════════ */
/* (old toolbar removed — search/send now in header) */

.cv-quick-add {
    position: relative;
    z-index: var(--cvf-z-dropdown);
}

.cv-quick-add-btn {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    padding: 16px 36px;
    background: var(--cvf-primary);
    color: #fff;
    border: none;
    border-radius: 14px;
    font-size: 18px;
    font-weight: 800;
    cursor: pointer;
    transition: background 0.2s;
    letter-spacing: 0.3px;
}

.cv-quick-add-btn:hover { background: var(--cvf-primary-light); }

.cv-quick-add-menu {
    position: absolute;
    top: calc(100% + 8px);
    left: 50%;
    transform: translateX(-50%);
    background: var(--cvf-card);
    border: 1px solid var(--cvf-border);
    border-radius: 12px;
    padding: 8px;
    min-width: 240px;
    box-shadow: var(--cvf-shadow);
    z-index: var(--cvf-z-modal);
}

.cv-quick-add-item {
    width: 100%;
    text-align: left;
    padding: 10px 12px;
    background: #fff;
    border: 0;
    border-radius: 10px;
    cursor: pointer;
    font-size: 13px;
    font-weight: 800;
    color: var(--cvf-primary);
    transition: background 0.15s;
}

.cv-quick-add-item:hover { background: rgba(var(--cvf-primary-rgb), 0.04); }

.cv-dashboard {
    background: var(--cvf-card);
    border: 1px solid var(--cvf-border);
    border-radius: var(--cvf-radius);
    padding: 20px;
    margin-bottom: 24px;
    box-shadow: var(--cvf-shadow);
}

.cv-dashboard-header { display: flex; justify-content: space-between; align-items: flex-start; gap: 12px; margin-bottom: 14px; }
.cv-dashboard-title { margin: 0; font-size: 16px; font-weight: 900; color: var(--cvf-primary); }
.cv-dashboard-subtitle { color: var(--cvf-text-muted); font-size: 12px; margin-top: 2px; }
.cv-dashboard-items { display: flex; flex-direction: column; gap: 10px; }

.cv-dashboard-item {
    display: flex;
    gap: 14px;
    padding: 14px 16px;
    border: 1px solid var(--cvf-border);
    border-radius: 12px;
    background: #fff;
}

.cv-dashboard-item-icon {
    width: 40px;
    height: 40px;
    border-radius: 12px;
    background: #eef2f7;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    font-size: 18px;
}

.cv-dashboard-item-body { flex: 1; min-width: 0; }
.cv-dashboard-item-title-row { display: flex; justify-content: space-between; align-items: flex-start; gap: 10px; }
.cv-dashboard-item-title {
    display: block;
    max-width: 340px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.cv-dashboard-meta { color: var(--cvf-text-muted); font-size: 12px; white-space: nowrap; }
.cv-dashboard-item-snippet { color: var(--cvf-text); font-size: 12px; margin-top: 6px; line-height: 1.5; word-break: break-word; }
.cv-dashboard-item-actions { margin-top: 10px; }

.cv-dashboard-link-btn {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 8px 12px;
    border-radius: 10px;
    background: var(--cvf-primary);
    color: #fff;
    text-decoration: none;
    font-weight: 900;
    font-size: 12px;
}

.cv-dashboard-link-btn:hover { background: var(--cvf-primary-light); }

/* ═══════════════════════════════════
   UNIFIED SEARCH
   ═══════════════════════════════════ */
.cv-search-wrap {
    position: relative;
    margin-bottom: 20px;
}

.cv-search-box {
    position: relative;
    display: flex;
    align-items: center;
}

.cv-search-icon {
    position: absolute;
    left: 16px;
    color: var(--cvf-text-muted);
    pointer-events: none;
}

.cv-search-input {
    width: 100%;
    padding: 14px 40px 14px 44px;
    border: 2px solid var(--cvf-border);
    border-radius: var(--cvf-radius);
    font-size: 14px;
    font-family: inherit;
    background: var(--cvf-card);
    color: var(--cvf-text);
    transition: border-color 0.2s, box-shadow 0.2s;
    box-sizing: border-box;
}

.cv-search-input:focus {
    border-color: var(--cvf-primary-light);
    outline: none;
    box-shadow: 0 0 0 3px rgba(42, 82, 152, 0.1);
}

.cv-search-input::placeholder {
    color: var(--cvf-text-muted);
    font-size: 13px;
}

.cv-search-clear {
    position: absolute;
    right: 14px;
    font-size: 22px;
    color: var(--cvf-text-muted);
    cursor: pointer;
    line-height: 1;
    padding: 4px;
}

.cv-search-clear:hover {
    color: var(--cvf-danger);
}

.cv-search-results {
    position: absolute;
    top: calc(100% + 6px);
    left: 0;
    right: 0;
    background: var(--cvf-card);
    border: 1px solid var(--cvf-border);
    border-radius: var(--cvf-radius);
    box-shadow: 0 8px 32px rgba(0, 0, 0, 0.12);
    z-index: 200;
    max-height: 400px;
    overflow-y: auto;
}

.cv-search-empty {
    padding: 24px;
    text-align: center;
    color: var(--cvf-text-muted);
    font-size: 14px;
}

.cv-search-result-item {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 12px 16px;
    border-bottom: 1px solid #f0f2f5;
    cursor: pointer;
    transition: background 0.15s;
}

.cv-search-result-item:last-child {
    border-bottom: none;
}

.cv-search-result-item:hover {
    background: #f8f9fb;
}

.cv-search-result-icon {
    font-size: 22px;
    flex-shrink: 0;
    width: 36px;
    height: 36px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: #eef2f7;
    border-radius: 10px;
}

.cv-search-result-body {
    flex: 1;
    min-width: 0;
}

.cv-search-result-title {
    font-size: 13px;
    font-weight: 700;
    color: var(--cvf-text);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.cv-search-result-desc {
    font-size: 12px;
    color: var(--cvf-text-muted);
    margin-top: 2px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.cv-search-result-meta {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: 2px;
    flex-shrink: 0;
}

.cv-search-result-type {
    font-size: 10px;
    font-weight: 700;
    text-transform: uppercase;
    color: var(--cvf-primary);
    background: #eef2f7;
    padding: 2px 8px;
    border-radius: 10px;
}

.cv-search-result-meta span:last-child {
    font-size: 11px;
    color: var(--cvf-text-muted);
}

.cv-search-result-action {
    flex-shrink: 0;
    padding: 6px 12px;
    background: var(--cvf-primary);
    /* v11.70.46 — !important : certains thèmes forcent la couleur des <a> (bleu) et
       écrasaient ce blanc → texte bleu sur fond bleu illisible. */
    color: #fff !important;
    border-radius: 8px;
    text-decoration: none;
    font-size: 12px;
    font-weight: 700;
    transition: background 0.2s;
}

.cv-search-result-action:hover,
.cv-search-result-action:focus {
    background: var(--cvf-primary-light);
    color: #fff !important;
}

/* ═══════════════════════════════════
   EMBEDS
   ═══════════════════════════════════ */
.cv-embeds-list { display: flex; flex-direction: column; gap: 20px; }
.cv-embed-item {
    background: var(--cvf-card); border: 1px solid var(--cvf-border); border-radius: var(--cvf-radius);
    overflow: hidden; box-shadow: var(--cvf-shadow);
}
.cv-embed-header { padding: 16px 20px 10px; }
.cv-embed-title { margin: 0; font-size: 15px; font-weight: 700; color: var(--cvf-primary); }
.cv-embed-desc { margin: 4px 0 0; font-size: 13px; color: var(--cvf-text-muted); }
.cv-embed-content {
    padding: 0 20px 16px; position: relative;
}
.cv-embed-content iframe {
    width: 100%; aspect-ratio: 16 / 9; height: auto; border: none; border-radius: 8px;
}
.cv-embed-footer {
    display: flex; justify-content: space-between; align-items: center;
    padding: 10px 20px; border-top: 1px solid var(--cvf-border); background: var(--cvf-hover-bg);
}
.cv-embed-meta { font-size: 12px; color: var(--cvf-text-muted); }

/* ═══════════════════════════════════
   COMMENTS
   ═══════════════════════════════════ */
.cv-comment-toggle {
    background: none; border: 1px solid var(--cvf-border); border-radius: 8px;
    padding: 4px 10px; cursor: pointer; font-size: 13px; color: var(--cvf-text-muted);
    transition: all 0.2s;
}
.cv-comment-toggle:hover { border-color: var(--cvf-primary); color: var(--cvf-primary); }
.cv-comments-panel {
    padding: 14px 20px; background: #f8f9fb; border-top: 1px solid var(--cvf-border);
}
.cv-comments-thread { display: flex; flex-direction: column; gap: 10px; margin-bottom: 12px; }
.cv-comments-empty { text-align: center; color: var(--cvf-text-muted); font-size: 13px; padding: 10px 0; }
.cv-comment {
    padding: 10px 14px; border-radius: 10px; position: relative;
}
.cv-comment-admin { background: #fef8f0; border-left: 3px solid var(--cvf-accent, #e8913a); }
.cv-comment-client { background: #f8fafc; border-left: 3px solid var(--cvf-primary, #1e3a5f); }
.cv-comment-header {
    display: flex; align-items: center; gap: 8px; font-size: 12px; margin-bottom: 4px;
}
.cv-comment-header strong { color: var(--cvf-primary); }
.cv-comment-client .cv-comment-header strong { color: var(--cvf-accent); }
.cv-comment-header span { color: var(--cvf-text-muted); }
.cv-comment-delete {
    margin-left: auto; background: none; border: none; color: var(--cvf-text-muted);
    cursor: pointer; font-size: 16px; line-height: 1;
}
.cv-comment-delete:hover { color: var(--cvf-danger); }
.cv-comment-body { font-size: 13px; line-height: 1.5; color: var(--cvf-text); }
.cv-comment-form textarea {
    width: 100%; padding: 8px 12px; border: 1px solid var(--cvf-border); border-radius: 8px;
    font-size: 13px; font-family: inherit; box-sizing: border-box; resize: vertical;
}
.cv-comment-form textarea:focus {
    border-color: var(--cvf-primary-light); outline: none; box-shadow: 0 0 0 2px rgba(42,82,152,0.1);
}

/* ═══════════════════════════════════
   TAGS
   ═══════════════════════════════════ */
.cv-tags-bar { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 6px; }
.cv-tag {
    display: inline-flex; align-items: center; gap: 4px;
    padding: 2px 10px; border-radius: 20px; font-size: 11px; font-weight: 700;
}
.cv-tag-blue { background: var(--cvf-tag-blue-bg); color: var(--cvf-tag-blue); }
.cv-tag-green { background: var(--cvf-tag-green-bg); color: var(--cvf-tag-green); }
.cv-tag-orange { background: var(--cvf-tag-orange-bg); color: var(--cvf-tag-orange); }
.cv-tag-red { background: var(--cvf-tag-red-bg); color: var(--cvf-tag-red); }
.cv-tag-purple { background: var(--cvf-tag-purple-bg); color: var(--cvf-tag-purple); }

/* ─── File Preview Modal ─── */
/* Modal portal fix: ensure modals break out of transformed parents */
.cv-preview-overlay {
    position: fixed !important;
    top: 0 !important;
    left: 0 !important;
    right: 0 !important;
    bottom: 0 !important;
    background: rgba(0,0,0,0.92);
    -webkit-backdrop-filter: blur(8px);
    backdrop-filter: blur(8px);
    z-index: var(--cvf-z-overlay);
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 20px;
    transform: none !important;
}
.cv-preview-modal {
    background: var(--cvf-card); border-radius: var(--cvf-radius);
    width: 90vw; max-width: 1000px; height: 85vh; max-height: 85vh;
    display: flex; flex-direction: column;
    box-shadow: 0 20px 60px rgba(0,0,0,0.3);
    overflow: hidden;
}
.cv-preview-header {
    display: flex; align-items: center; justify-content: space-between;
    padding: 14px 20px; border-bottom: 1px solid var(--cvf-border);
    background: var(--cvf-bg); flex-shrink: 0;
}
.cv-preview-title {
    font-weight: 600; font-size: 14px; color: var(--cvf-text);
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.cv-preview-close {
    background: none; border: none; font-size: 24px; cursor: pointer;
    color: var(--cvf-text-muted); padding: 0 4px; line-height: 1;
    transition: color 0.15s;
}
.cv-preview-close:hover { color: var(--cvf-danger); }
.cv-preview-body {
    flex: 1; overflow: hidden; display: flex; align-items: center; justify-content: center;
    background: #f0f0f0; position: relative;
}
.cv-preview-body img {
    max-width: 100%; max-height: 100%; object-fit: contain;
}
.cv-preview-body iframe {
    width: 100%; height: 100%; border: none;
}
/* Filigrane spectateur (Collection) : ligne discrète en faible opacité qui balaie lentement le
   contenu (haut→bas). Non sélectionnable, non cliquable. mix-blend-mode:difference → lisible sur
   fond clair comme sombre. Assez visible pour gêner un enregistrement d'écran et tracer une fuite,
   sans masquer la lecture (contrairement à une mosaïque plein cadre). */
.cv-col-wm {
    position: absolute; left: 0; right: 0; top: 10%; z-index: 6;
    display: flex; justify-content: space-around; gap: 40px;
    white-space: nowrap; pointer-events: none; user-select: none; overflow: hidden;
    opacity: .24; mix-blend-mode: difference;
    animation: cvColWmSweep 17s ease-in-out infinite alternate;
}
.cv-col-wm span {
    font: 600 12px/1 -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
    color: #9a9a9a; white-space: nowrap; letter-spacing: .3px;
}
@keyframes cvColWmSweep { from { top: 8%; } to { top: 86%; } }
@media (prefers-reduced-motion: reduce) { .cv-col-wm { animation: none; top: 48%; } }
/* v20.22.150 — aperçu des fichiers TEXTE (.txt/.log/.md/.csv) : cadre blanc plein, lecture confortable. */
.cv-txt-frame { width: 100%; height: 100%; min-height: 60vh; border: none; background: #fff; }
.cv-docs-gallery-stage .cv-txt-frame { height: 60vh; }
.cv-preview-loading {
    font-size: 14px; color: var(--cvf-text-muted);
}
.cv-preview-text-content {
    padding: 28px 32px;
    font-size: 14px;
    line-height: 1.7;
    color: var(--cvf-text, #333);
    overflow-y: auto;
    max-height: 100%;
    text-align: left;
    width: 100%;
}
.cv-preview-text-content p { margin: 0 0 12px; }
.cv-preview-text-content strong { font-weight: 600; }
.cv-preview-text-content .cv-preview-note-header { font-size: 13px; border-bottom: 1px solid var(--cvf-border, #e1e5eb); padding-bottom: 10px; margin-bottom: 12px; }
.cv-preview-embed-content {
    width: 100%;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 0;
}
.cv-preview-embed-content iframe,
.cv-preview-embed-content video {
    width: 100% !important;
    max-width: 100% !important;
    max-height: 70vh;
    border: none;
    border-radius: 8px;
    aspect-ratio: 16 / 9;
    object-fit: contain;
}
/* Force Fluent Player / WP mediaelement wrappers to full width in preview popup */
.cv-preview-embed-content .fp_player_wrapper,
.cv-preview-embed-content .fp-media-block,
.cv-preview-embed-content .wp-video,
.cv-preview-embed-content .wp-video-shortcode,
.cv-preview-embed-content .mejs-container,
.cv-preview-embed-content .mejs-overlay,
.cv-preview-embed-content .mejs-mediaelement,
.cv-preview-embed-content .mejs-layers,
.cv-preview-embed-content .mejs-controls {
    width: 100% !important;
    max-width: 100% !important;
}
.cv-preview-embed-content .fp_player_wrapper video,
.cv-preview-embed-content .wp-video video,
.cv-preview-embed-content .mejs-container video {
    width: 100% !important;
    max-width: 100% !important;
    height: auto !important;
    aspect-ratio: 16 / 9;
}
/* Video-friendly modal: auto height instead of fixed 85vh */
.cv-preview-modal.cv-preview-modal-video {
    height: auto !important;
    max-height: 90vh;
}
.cv-preview-modal-video .cv-preview-body {
    height: auto !important;
    min-height: 200px;
}
.cv-preview-modal-video .cv-front-preview-content {
    max-height: 80vh;
}
/* v11.82.0 — média audio dans l'aperçu document unifié */
/* v11.82.4 — modal audio à hauteur pleine pour CENTRER verticalement le lecteur */
.cv-preview-modal.cv-preview-modal-audio { height: 82vh; max-height: 90vh; }
.cv-preview-modal-audio .cv-preview-body { height: 100%; }
.cv-embed-player-audio { width: 100%; max-width: 820px; padding: 32px 28px; box-sizing: border-box; }
.cv-preview-embed-content.cv-embed-player-audio iframe { aspect-ratio: auto; max-height: none; }
/* v11.82.4 — visualizer audio AGRANDI (imposant) + contrôles forcés visibles */
.cv-preview-embed-content .cv-popup-audio-visualizer { min-height: 0; height: auto; flex: none; padding: 32px; gap: 40px; }
.cv-preview-embed-content .cv-popup-audio-bars { height: 260px; gap: 9px; }
.cv-preview-embed-content .cv-popup-audio-bars span { width: 16px; }
.cv-preview-embed-content .cv-popup-audio-visualizer audio { width: 100%; max-width: 680px; height: 56px !important; min-height: 56px; flex: 0 0 auto; display: block; }
/* Repli lecteur audio simple (si visualizer indisponible) */
.cv-embed-audio-card { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 26px; width: 100%; padding: 16px 0; }
.cv-embed-audio-ico { font-size: 72px; width: 72px; height: 72px; line-height: 72px; color: var(--cvf-primary, #1e3a5f); opacity: .32; }
.cv-embed-audio-el { width: 100%; max-width: 520px; height: 54px !important; display: block; min-height: 54px; }
.cv-preview-btn { color: var(--cvf-primary-light); }
.cv-preview-btn:hover { color: var(--cvf-primary); }

/* ═══════════════════════════════════════════
   Frontend Section Headers (admin-style)
   ═══════════════════════════════════════════ */
.cvf-section {
    border: 1px solid var(--cvf-border, #e1e5eb);
    border-radius: 10px;
    overflow: clip;          /* v7.18.4 — clip préserve border-radius sans casser position:sticky */
    background: var(--cvf-card, #fff);
    margin-bottom: 16px;
}
.cvf-section-header {
    display: flex !important;
    align-items: center !important;
    justify-content: space-between !important;
    gap: 12px;
    padding: 14px 18px !important;
    border-bottom: 1px solid var(--cvf-border, #e1e5eb);
    min-height: 50px;
    box-sizing: border-box !important;
}
.cv-vault-wrap .cvf-section-header h2 {
    margin: 0 !important;
    padding: 0 !important;
    font-size: 18px !important;
    font-weight: 700 !important;
    display: flex !important;
    align-items: center !important;
    gap: 8px;
    flex: 1;
    min-width: 0;
    line-height: 1.2 !important;
    border: none !important;
    background: none !important;
}
.cv-vault-wrap .cvf-section-header h2::before,
.cv-vault-wrap .cvf-section-header h2::after {
    display: none !important;
    content: none !important;
}
.cv-vault-wrap .cvf-section-header h2 .dashicons {
    font-size: 18px;
    width: 18px;
    height: 18px;
    opacity: 0.85;
}
.cvf-section-header-actions {
    display: flex !important;
    align-items: center !important;
    gap: 8px;
    flex-shrink: 0;
    margin: 0 !important;
    padding: 0 !important;
}
.cvf-section-header-actions .cv-add-btn {
    font-family: inherit !important;
    font-size: 13px !important;
    padding: 8px 18px !important;
    gap: 6px !important;
    margin: 0 !important;
    line-height: 1.3 !important;
    display: inline-flex !important;
    align-items: center !important;
    background: #fff !important;
    color: var(--cvf-primary, #1e3a5f) !important;
    border: 1.5px solid var(--cvf-primary, #1e3a5f) !important;
    border-radius: 10px !important;
    box-shadow: none !important;
    font-weight: 600 !important;
    opacity: 1 !important;
    transition: all .2s !important;
    transform: none !important;
    cursor: pointer !important;
    white-space: nowrap !important;
    text-transform: none !important;
    letter-spacing: normal !important;
}
.cvf-section-header-actions .cv-add-btn:hover {
    background: #f0f5fb !important;
    box-shadow: 0 2px 8px rgba(30,58,95,0.12) !important;
    transform: translateY(-1px) !important;
}
/* v20.21.60 — « Importer depuis l'agence » (front) : même idée que l'upload mais teinte DORÉE douce. */
.cvf-section-header-actions .cv-add-btn.cv-import-agency-btn {
    background: linear-gradient(135deg, #d4af56 0%, #c2972f 100%) !important;
    color: #fff !important;
    border: none !important;
    box-shadow: 0 2px 8px rgba(194,151,47,.25) !important;
    text-shadow: 0 1px 1px rgba(120,86,10,.25) !important;
}
.cvf-section-header-actions .cv-add-btn.cv-import-agency-btn:hover {
    background: linear-gradient(135deg, #dcba66 0%, #caa13a 100%) !important;
    box-shadow: 0 4px 12px rgba(194,151,47,.35) !important;
    transform: translateY(-1px) !important;
}
.cvf-section-header-actions .cv-add-btn.cv-import-agency-btn .dashicons {
    color: #fff !important;
    font-size: 16px;
    width: 16px;
    height: 16px;
}
.cvf-section-header-actions .cv-add-btn svg {
    width: 12px;
    height: 12px;
}
.cvf-section-filters {
    padding: 10px 16px 0;
}

/* ═══════════════════════════════════════════════════════════════
   v11.78.24 — BARRE DE FILTRES MODERNE (.cv-mbar) — FRAMEWORK RÉUTILISABLE
   Conçue pour Médias, destinée à être dupliquée dans tous les menus.
   Classes génériques (pas de « embeds » en dur). Charte violet #7c3aed.
   ═══════════════════════════════════════════════════════════════ */
.cv-mbar { position: relative; }
.cv-mbar-main { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }

.cv-mbar-search { position: relative; flex: 1 1 240px; min-width: 200px; }
.cv-mbar-search .dashicons { position: absolute; left: 12px; top: 50%; transform: translateY(-50%); color: var(--cvf-text-muted); font-size: 18px; width: 18px; height: 18px; pointer-events: none; }
.cv-vault-wrap .cv-mbar-search input {
    width: 100%; height: 42px; box-sizing: border-box;
    border: 1px solid var(--cvf-border); border-radius: 12px;
    padding: 0 14px 0 38px; font-size: 14px; background: var(--cvf-card); color: var(--cvf-text); outline: none;
}
.cv-vault-wrap .cv-mbar-search input:focus { border-color: var(--cvf-primary); }

.cv-mbar-types { display: inline-flex; align-items: center; gap: 2px; background: var(--cvf-bg); border-radius: 12px; padding: 4px; }
.cv-vault-wrap .cv-mbar-types .cv-mtype-btn {
    height: 34px; padding: 0 14px; border: none; background: transparent; border-radius: 9px;
    font-size: 13px; font-weight: 600; color: var(--cvf-text-muted); cursor: pointer; transition: all .12s;
    display: inline-flex; align-items: center; justify-content: center;
}
.cv-vault-wrap .cv-mbar-types .cv-mtype-icon { width: 38px; padding: 0; }
.cv-vault-wrap .cv-mbar-types .cv-mtype-btn .dashicons { font-size: 18px; width: 18px; height: 18px; }
.cv-vault-wrap .cv-mbar-types .cv-mtype-btn:hover { color: var(--cvf-text); }
.cv-vault-wrap .cv-mbar-types .cv-mtype-btn.active { background: var(--cvf-card); color: var(--cvf-text); box-shadow: 0 1px 2px rgba(0,0,0,.08); }
.cv-vault-wrap .cv-mbar-types .cv-mtype-btn-reply { color: var(--cvf-primary); }
.cv-vault-wrap .cv-mbar-types .cv-mtype-btn-reply.active { color: var(--cvf-primary); }

.cv-vault-wrap .cv-mbar-btn {
    height: 42px; padding: 0 16px; border: 1px solid var(--cvf-border); border-radius: 12px;
    background: var(--cvf-card); color: var(--cvf-text); font-size: 14px; font-weight: 600; cursor: pointer;
    display: inline-flex; align-items: center; gap: 8px; white-space: nowrap;
}
.cv-vault-wrap .cv-mbar-btn:hover { border-color: var(--cvf-primary); }
.cv-mbar-btn .dashicons { font-size: 18px; width: 18px; height: 18px; }
.cv-mbar-btn.cv-mbar-btn-on { border-color: var(--cvf-primary); color: var(--cvf-primary); }
.cv-mbar-badge { background: var(--cvf-primary); color: #fff; font-size: 11px; font-weight: 700; min-width: 18px; height: 18px; border-radius: 9px; display: inline-flex; align-items: center; justify-content: center; padding: 0 5px; }

.cv-mbar-sortwrap { position: relative; }
.cv-mbar-menu { position: absolute; top: 50px; right: 0; width: 190px; background: var(--cvf-card); border: 1px solid var(--cvf-border); border-radius: 12px; box-shadow: 0 12px 40px rgba(15,23,42,.16); padding: 6px; z-index: 60; }
.cv-vault-wrap .cv-mbar-menu button { display: flex; align-items: center; justify-content: space-between; width: 100%; border: none; background: transparent; text-align: left; font-size: 13.5px; color: var(--cvf-text); padding: 9px 12px; border-radius: 8px; cursor: pointer; }
.cv-vault-wrap .cv-mbar-menu button:hover { background: var(--cvf-bg); }
.cv-vault-wrap .cv-mbar-menu button.active { background: var(--cvf-hover-bg, #f3effe); color: var(--cvf-primary); font-weight: 600; }
.cv-mbar-menu button.active::after { content: "\f147"; font-family: dashicons; }

.cv-mbar-chipsrow { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-top: 10px; }
.cv-mbar-chips { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.cv-mbar-chip { display: inline-flex; align-items: center; gap: 6px; font-size: 12.5px; font-weight: 600; color: var(--cvf-primary); background: var(--cvf-hover-bg, #f3effe); border: 1px solid #e6dcff; border-radius: 20px; padding: 4px 10px; }
.cv-mbar-chip .cv-mbar-chip-x { cursor: pointer; font-size: 14px; width: 14px; height: 14px; line-height: 14px; }
.cv-mbar-clear { font-size: 12.5px; color: var(--cvf-text-muted); cursor: pointer; }
.cv-mbar-clear:hover { color: var(--cvf-text); }
.cv-mbar-count { margin-left: auto; font-size: 13px; color: var(--cvf-text-muted); }

.cv-mbar-popover { position: absolute; top: 56px; right: 0; width: 420px; max-width: calc(100vw - 40px); background: var(--cvf-card); border: 1px solid var(--cvf-border); border-radius: 16px; box-shadow: 0 16px 48px rgba(15,23,42,.18); padding: 18px; z-index: 60; }
.cv-mbar-pop-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 14px; }
.cv-mbar-pop-head span:first-child { font-size: 15px; font-weight: 700; color: var(--cvf-text); }
.cv-mbar-pop-head .dashicons { cursor: pointer; color: var(--cvf-text-muted); }
.cv-mbar-group { margin-bottom: 14px; }
.cv-mbar-group-label { font-size: 11px; font-weight: 700; color: var(--cvf-text-muted); text-transform: uppercase; letter-spacing: .4px; margin-bottom: 8px; }
.cv-vault-wrap .cv-mbar-select {
    width: 100%; height: 38px; padding: 0 34px 0 12px; border-radius: 9px;
    border: 1px solid var(--cvf-border); background-color: #fff; color: var(--cvf-text);
    font-size: 13px; font-weight: 600; cursor: pointer; -webkit-appearance: none; appearance: none;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath fill='%2364748b' d='M1 1l5 5 5-5'/%3E%3C/svg%3E");
    background-repeat: no-repeat; background-position: right 12px center;
}
.cv-vault-wrap .cv-mbar-select:focus { outline: none; border-color: var(--cvf-primary); box-shadow: 0 0 0 3px color-mix(in srgb, var(--cvf-primary) 18%, transparent); }
.cv-mbar-period { display: flex; flex-wrap: nowrap; gap: 6px; overflow-x: auto; }
.cv-mbar-period .cvf-period-btn { white-space: nowrap; flex: 0 0 auto; }
.cv-mbar-dates { display: flex; align-items: center; gap: 8px; margin-top: 8px; }
.cv-vault-wrap .cv-mbar-dates .cvf-date-input { flex: 1; height: 36px; border: 1px solid var(--cvf-border); border-radius: 9px; padding: 0 10px; font-size: 13px; background: var(--cvf-card); color: var(--cvf-text); }
.cv-mbar-pop-foot { display: flex; align-items: center; justify-content: space-between; margin-top: 16px; border-top: 1px solid var(--cvf-border); padding-top: 14px; }
.cv-mbar-reset { font-size: 13px; color: var(--cvf-text-muted); cursor: pointer; }
.cv-mbar-reset:hover { color: var(--cvf-text); }
.cv-vault-wrap .cv-mbar-apply { background: var(--cvf-primary); color: #fff; border: none; border-radius: 10px; height: 38px; padding: 0 20px; font-size: 14px; font-weight: 600; cursor: pointer; }
@media (max-width: 640px) {
    .cv-mbar-popover { right: 0; left: 0; width: auto; }
    .cv-mbar-search { flex-basis: 100%; }
}
/* Tri par nom → liste à plat (sans regroupement par date) */
.cv-front-embeds-list.cv-mbar-flat .cv-media-month-separator,
.cv-front-embeds-list.cv-mbar-flat .cv-media-week-separator { display: none !important; }

/* v11.78.25 — Re-style des contrôles relocalisés dans le popover (l'ancien scope .cvf-toolbar
   ne s'applique plus) + couleur de sélection = thème du coffre (--cvf-primary). */
.cv-vault-wrap .cv-mbar-search input { padding-left: 40px !important; }
.cv-mbar .cv-tag-filter-pills,
.cv-mbar .cvf-owner-filters,
.cv-mbar .cv-mbar-period { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; }
.cv-mbar .cv-mbar-period { flex-wrap: nowrap; overflow-x: auto; padding-bottom: 2px; }
.cv-vault-wrap .cv-mbar .cv-tag-pill,
.cv-vault-wrap .cv-mbar .cv-seg-btn,
.cv-vault-wrap .cv-mbar .cvf-period-btn,
.cv-vault-wrap .cv-mbar .cv-archive-filter-btn {
    height: 32px; padding: 0 13px; margin: 0; border: 1px solid var(--cvf-border); border-radius: 9px;
    background: var(--cvf-bg); color: var(--cvf-text); font-size: 13px; font-weight: 600; line-height: 1;
    cursor: pointer; display: inline-flex; align-items: center; gap: 5px; white-space: nowrap; flex: 0 0 auto;
    transition: all .12s;
}
.cv-vault-wrap .cv-mbar .cv-tag-pill:hover,
.cv-vault-wrap .cv-mbar .cv-seg-btn:hover,
.cv-vault-wrap .cv-mbar .cvf-period-btn:hover,
.cv-vault-wrap .cv-mbar .cv-archive-filter-btn:hover { border-color: var(--cvf-primary); }
.cv-vault-wrap .cv-mbar .cv-tag-pill.active,
.cv-vault-wrap .cv-mbar .cv-seg-btn.active,
.cv-vault-wrap .cv-mbar .cvf-period-btn.active,
.cv-vault-wrap .cv-mbar .cv-archive-filter-btn.active {
    background: var(--cvf-primary); color: #fff; border-color: var(--cvf-primary);
}
.cv-mbar .cv-archive-count { background: rgba(255,255,255,.25); border-radius: 10px; padding: 0 6px; font-size: 11px; }

/* Couleur de sélection = thème du coffre (et non un violet codé en dur) */
.cv-mbar-types .cv-mtype-btn.active,
.cv-mbar-types .cv-mtype-btn-reply,
.cv-mbar-types .cv-mtype-btn-reply.active { color: var(--cvf-primary); }
.cv-mbar-badge { background: var(--cvf-primary); }
.cv-mbar-menu button.active { color: var(--cvf-primary); }
.cv-vault-wrap .cv-mbar-apply { background: var(--cvf-primary); }
.cv-vault-wrap .cv-mbar-search input:focus { border-color: var(--cvf-primary); }

/* Chips de filtres actifs — plus impactants (pleine couleur thème) */
.cv-mbar-chipsrow { margin-top: 12px; padding: 4px 0; }
.cv-mbar-chip {
    background: var(--cvf-primary); color: #fff; border: none; border-radius: 20px;
    padding: 5px 6px 5px 12px; font-size: 12.5px; font-weight: 600;
}
.cv-mbar-chip .cv-mbar-chip-x { color: #fff; opacity: .8; }
.cv-mbar-chip .cv-mbar-chip-x:hover { opacity: 1; }

/* Respiration sous la barre de filtres avant le premier bloc de contenu */
.cvf-section-filters { padding-bottom: 6px; }
.cv-vault-wrap .cv-front-embeds-list { margin-top: 16px; }

/* Champs date : icône calendrier visible d'emblée + alignement */
.cv-mbar-dates label { font-size: 12px; color: var(--cvf-text-muted); }
.cv-vault-wrap .cv-mbar-dates input[type="date"] { color: var(--cvf-text); }

/* v11.78.26 — Période strictement sur UNE ligne + icône « Commentaire » neutre (pas d'orange résiduel) */
.cv-vault-wrap .cv-mbar .cv-mbar-period { flex-wrap: nowrap !important; overflow-x: visible; gap: 5px; }
/* Périodes plus petites : respirent mieux et tiennent toutes sur une seule ligne */
.cv-vault-wrap .cv-mbar .cv-mbar-period .cvf-period-btn { height: 28px; padding: 0 10px; font-size: 12px !important; font-weight: 500 !important; }
.cv-vault-wrap .cv-mbar-types .cv-mtype-btn-reply {
    background: transparent !important; color: var(--cvf-text-muted) !important;
}
.cv-vault-wrap .cv-mbar-types .cv-mtype-btn-reply:hover { color: var(--cvf-primary) !important; }
.cv-vault-wrap .cv-mbar-types .cv-mtype-btn.active { background: var(--cvf-card) !important; color: var(--cvf-primary) !important; box-shadow: 0 1px 2px rgba(0,0,0,.08); }

/* v11.78.26 — tags plus compacts + ligne de dates qui ne déborde plus + compteurs sur les filtres */
/* v11.78.31 — tags de filtre plus petits + SANS gras (nom complet au survol via title) */
.cv-vault-wrap .cv-mbar .cv-tag-pill { height: 28px; padding: 0 10px; font-size: 12px !important; font-weight: 500 !important; max-width: 150px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
/* v11.78.29 — tag de filtre SÉLECTIONNÉ : rempli de SA couleur + texte blanc + coche,
   pour qu'on voie clairement lequel est actif (avant : paraissait blanc/illisible). */
/* v11.78.30 — règle INDÉPENDANTE de .cv-mbar (le popover passe en position:fixed) :
   le tag de filtre sélectionné est rempli de SA couleur, texte BLANC forcé + coche. */
.cv-vault-wrap .cv-embeds-tag-btn.active { background: var(--cvf-primary) !important; border-color: var(--cvf-primary) !important; color: #fff !important; }
.cv-vault-wrap .cv-embeds-tag-btn.cv-tag-color-blue.active   { background: var(--cvf-primary-light) !important; border-color: var(--cvf-primary-light) !important; color: #fff !important; }
.cv-vault-wrap .cv-embeds-tag-btn.cv-tag-color-green.active  { background: var(--cvf-success) !important; border-color: var(--cvf-success) !important; color: #fff !important; }
.cv-vault-wrap .cv-embeds-tag-btn.cv-tag-color-orange.active { background: var(--cvf-accent) !important; border-color: var(--cvf-accent) !important; color: #fff !important; }
.cv-vault-wrap .cv-embeds-tag-btn.cv-tag-color-red.active    { background: var(--cvf-danger) !important; border-color: var(--cvf-danger) !important; color: #fff !important; }
.cv-vault-wrap .cv-embeds-tag-btn.cv-tag-color-purple.active { background: #8e44ad !important; border-color: #8e44ad !important; color: #fff !important; }
.cv-vault-wrap .cv-embeds-tag-btn.active::before { content: "\2713"; margin-right: 5px; font-weight: 700; color: #fff !important; }
/* v11.78.31 — Liste déroulante MULTI-sélection (filtre Dossier : gère 35+ dossiers) */
.cv-vault-wrap .cv-msel { position: relative; }
.cv-vault-wrap .cv-msel-toggle {
    display: flex; align-items: center; justify-content: space-between; gap: 8px; width: 100%; height: 36px;
    padding: 0 12px; border: 1px solid var(--cvf-border); border-radius: 9px; background: #fff; color: var(--cvf-text);
    font-size: 12px; font-weight: 500; cursor: pointer;
}
.cv-vault-wrap .cv-msel-toggle:hover { border-color: var(--cvf-primary); }
.cv-vault-wrap .cv-msel-toggle .cv-msel-label { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cv-vault-wrap .cv-msel-toggle .dashicons { color: var(--cvf-text-muted); font-size: 16px; width: 16px; height: 16px; }
.cv-vault-wrap .cv-msel-panel {
    /* v11.78.33 — superposition : recouvre les menus du dessous sans les pousser ;
       sa propre scrollbar si beaucoup de dossiers, sans dépasser la taille du filtre. */
    position: absolute; top: calc(100% + 6px); left: 0; right: 0; z-index: 40;
    max-height: 200px; overflow-y: auto; border: 1px solid var(--cvf-border);
    border-radius: 9px; background: #fff; box-shadow: 0 6px 18px rgba(0,0,0,.14); padding: 4px;
}
.cv-vault-wrap .cv-msel-opt {
    display: flex; align-items: center; gap: 8px; padding: 6px 8px; border-radius: 7px; cursor: pointer; font-size: 12.5px; color: var(--cvf-text);
}
.cv-vault-wrap .cv-msel-opt:hover { background: var(--cvf-hover-bg); }
.cv-vault-wrap .cv-msel-opt input[type="checkbox"] { margin: 0; flex: 0 0 auto; accent-color: var(--cvf-primary); width: auto; }
.cv-vault-wrap .cv-msel-opt .cv-msel-opt-name { flex: 1 1 auto; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cv-vault-wrap .cv-msel-opt .cv-msel-opt-cnt { flex: 0 0 auto; color: var(--cvf-text-muted); font-size: 11px; }
.cv-mbar-dates { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.cv-vault-wrap .cv-mbar-dates input[type="date"] { flex: 1 1 130px; min-width: 0; box-sizing: border-box; }
.cv-mbar-cnt {
    display: inline-flex; align-items: center; justify-content: center; min-width: 16px; height: 16px;
    padding: 0 5px; margin-left: 2px; border-radius: 8px; font-size: 10.5px; font-weight: 700; line-height: 1;
    background: rgba(0,0,0,.07); color: var(--cvf-text-muted);
}
/* v11.78.28 — sur une puce active (fond couleur du thème), le compteur doit RESTER lisible :
   pastille blanche pleine + chiffre dans la couleur du thème (pas blanc sur blanc). */
.cv-vault-wrap .cv-mbar .active .cv-mbar-cnt,
.cv-vault-wrap .cv-mbar .cv-mtype-btn.active .cv-mbar-cnt,
.cv-vault-wrap .cv-mbar-types .cv-mtype-btn.active .cv-mbar-cnt { background: #fff !important; color: var(--cvf-primary) !important; }

/* ═══════════════════════════════════════════
   FRONTEND TOOLBAR — admin-style filter bar
   All selectors use .cv-vault-wrap .cvf-toolbar
   to beat the global input reset specificity
   ═══════════════════════════════════════════ */
.cv-vault-wrap .cvf-toolbar {
    display: flex;
    flex-direction: column;
    gap: 10px;
    padding: 12px 16px;
    background: var(--cvf-bg, #f8f9fb);
    border-radius: 10px;
    border: 1px solid var(--cvf-border, #e1e5eb);
    margin-bottom: 10px;
}
.cv-vault-wrap .cvf-toolbar-row {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
}
/* Search wrapper */
.cv-vault-wrap .cvf-doc-search-wrapper {
    position: relative;
    display: flex;
    align-items: center;
}
.cv-vault-wrap .cvf-doc-search-icon {
    position: absolute;
    left: 9px;
    top: 50%;
    transform: translateY(-50%);
    color: var(--cvf-text-muted, #8a94a6);
    font-size: 13px !important;
    width: 13px !important;
    height: 13px !important;
    pointer-events: none;
    z-index: 1;
}
.cv-vault-wrap .cvf-doc-search-wrapper:focus-within .cvf-doc-search-icon {
    color: var(--cvf-primary, #1e3a5f);
}
.cv-vault-wrap input[type="text"].cvf-doc-search {
    padding: 4px 8px 4px 32px !important;
    border: 1px solid var(--cvf-border, #d0d5dd) !important;
    border-radius: 6px !important;
    font-size: 12px !important;
    font-family: inherit !important;
    background: #fff !important;
    outline: none !important;
    transition: border-color .2s;
    box-sizing: border-box !important;
    width: 200px !important;
    height: 30px !important;
    line-height: 1.3 !important;
}
.cv-vault-wrap input[type="text"].cvf-doc-search:focus {
    border-color: var(--cvf-primary, #1e3a5f) !important;
}
/* Type filters inline with search */
.cv-vault-wrap .cvf-toolbar-row .cv-file-type-filters {
    display: flex;
    gap: 4px;
    margin-bottom: 0;
    flex-wrap: wrap;
    margin-left: 4px;
}
.cv-vault-wrap .cvf-toolbar-row .cv-ftype-btn {
    padding: 5px 11px !important;
    border: 1.5px solid var(--cvf-border, #d0d5dd) !important;
    border-radius: 6px !important;
    font-size: 12px !important;
    background: #fff !important;
    color: var(--cvf-text-muted, #666) !important;
    cursor: pointer;
    font-weight: 500 !important;
    font-family: inherit !important;
    transition: all .15s;
}
.cv-vault-wrap .cvf-toolbar-row .cv-ftype-btn:hover {
    border-color: var(--cvf-text-muted, #767676) !important;
    color: var(--cvf-text, #333) !important;
}
.cv-vault-wrap .cvf-toolbar-row .cv-ftype-btn.active {
    border-color: var(--cvf-primary, #1e3a5f) !important;
    background: #e8f0fe !important;
    color: var(--cvf-primary, #1e3a5f) !important;
}
/* v11.78.28 — icône « Commentaire » NEUTRE comme les autres icônes de type
   (Dragan : pas de bordure/fond orange spécifique). */
.cv-vault-wrap .cv-mtype-btn-reply {
    border: 1px solid transparent !important;
    color: var(--cvf-text-muted) !important;
    background: transparent !important;
    font-weight: 600 !important;
    box-shadow: none !important;
}
.cv-vault-wrap .cv-mtype-btn-reply:hover {
    background: var(--cvf-hover-bg) !important;
    color: var(--cvf-primary) !important;
    box-shadow: none !important;
}
.cv-vault-wrap .cv-mtype-btn-reply.active {
    background: var(--cvf-card) !important;
    color: var(--cvf-primary) !important;
    border-color: var(--cvf-border) !important;
    box-shadow: 0 1px 2px rgba(0,0,0,.08) !important;
}
/* Toolbar labels */
.cv-vault-wrap .cvf-toolbar-label {
    font-size: 11px !important;
    font-weight: 600 !important;
    text-transform: uppercase;
    letter-spacing: .5px;
    color: var(--cvf-text-muted, #8a94a6) !important;
    margin-right: 2px;
    white-space: nowrap;
}
/* Toolbar divider */
.cv-vault-wrap .cvf-toolbar-divider {
    width: 1px;
    height: 16px;
    background: var(--cvf-border, #e1e5eb);
    margin: 0 4px;
    flex-shrink: 0;
}
/* Tag pills in toolbar */
.cv-vault-wrap .cvf-toolbar-row .cv-tag-filter-pills {
    display: flex;
    gap: 4px;
    flex-wrap: wrap;
    margin: 0;
}
.cv-vault-wrap .cvf-toolbar-row .cv-tag-pill {
    padding: 3px 9px !important;
    border-radius: 10px !important;
    font-size: 11px !important;
    font-weight: 600 !important;
    cursor: pointer;
    border: 1px solid transparent !important;
    transition: all .15s;
}
.cv-vault-wrap .cvf-toolbar-row .cv-tag-pill.active {
    background: var(--cvf-primary, #1e3a5f) !important;
    color: #fff !important;
    border-color: var(--cvf-primary, #1e3a5f) !important;
    box-shadow: none !important;
}
/* Tag overflow / "+N" button */
.cv-tag-overflow {
    display: none !important;
}
.cv-vault-wrap .cvf-toolbar .cv-tag-filter-pills.cvf-tags-expanded .cv-tag-overflow {
    display: inline-flex !important;
}
.cv-vault-wrap .cvf-tag-more-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 11px !important;
    font-weight: 700 !important;
    padding: 2px 8px !important;
    border-radius: 6px !important;
    background: var(--cvf-border, #e5e7eb) !important;
    color: var(--cvf-text-muted, #64748b) !important;
    border: none !important;
    cursor: pointer;
    transition: background .15s, color .15s;
    line-height: 1.4;
    white-space: nowrap;
}
.cv-vault-wrap .cvf-tag-more-btn:hover {
    background: #dbeafe !important;
    color: var(--cvf-primary, #1e3a5f) !important;
}
/* Owner filters */
.cv-vault-wrap .cvf-owner-filters {
    display: flex;
    align-items: center;
    gap: 3px;
}
.cv-vault-wrap .cvf-owner-filters .cv-seg-btn {
    padding: 5px 12px !important;
    border: 1px solid var(--cvf-border, #e1e5eb) !important;
    border-radius: 20px !important;
    font-size: 12px !important;
    font-family: inherit !important;
    font-weight: 500 !important;
    color: var(--cvf-text-muted, #666) !important;
    background: #fff !important;
    cursor: pointer;
    transition: all .15s;
    box-shadow: none !important;
}
.cv-vault-wrap .cvf-owner-filters .cv-seg-btn:hover {
    border-color: var(--cvf-primary, #1e3a5f) !important;
    color: var(--cvf-primary, #1e3a5f) !important;
}
.cv-vault-wrap .cvf-owner-filters .cv-seg-btn.active {
    border-color: var(--cvf-primary, #1e3a5f) !important;
    background: #e8f0fe !important;
    color: var(--cvf-primary, #1e3a5f) !important;
    font-weight: 600 !important;
}
/* Period pills */
.cv-vault-wrap .cvf-period-pills {
    display: flex;
    align-items: center;
    gap: 1px;
    flex-wrap: wrap;
}
.cv-vault-wrap .cvf-toolbar .cvf-period-btn {
    padding: 4px 10px !important;
    border: none !important;
    border-radius: 5px !important;
    font-size: 12px !important;
    font-family: inherit !important;
    font-weight: 500 !important;
    color: var(--cvf-text-muted, #8a94a6) !important;
    background: transparent !important;
    cursor: pointer !important;
    transition: all .15s !important;
}
.cvf-period-btn:hover {
    color: var(--cvf-text, #333) !important;
    background: var(--cvf-border, #e8ecf0) !important;
}
.cv-vault-wrap .cvf-toolbar .cvf-period-btn:hover {
    color: var(--cvf-text, #333) !important;
    background: var(--cvf-border, #e8ecf0) !important;
}
.cv-vault-wrap .cvf-toolbar .cvf-period-btn.active {
    color: var(--cvf-primary, #1e3a5f) !important;
    background: #e0eaf5 !important;
    font-weight: 600 !important;
}
/* Separator & date inputs */
.cv-vault-wrap .cvf-toolbar-sep {
    color: var(--cvf-text-muted, #8a94a6) !important;
    font-size: 13px !important;
    line-height: 1;
    user-select: none;
    margin: 0 4px;
    flex-shrink: 0;
}
.cv-vault-wrap input[type="text"].cvf-date-input {
    padding: 5px 14px !important;
    border: 1px solid var(--cvf-border, #d0d5dd) !important;
    border-radius: 20px !important;
    font-size: 12px !important;
    font-family: inherit !important;
    color: var(--cvf-text, #333) !important;
    background: #fff !important;
    width: 140px !important;
    height: 30px !important;
    box-sizing: border-box !important;
    line-height: 1.3 !important;
}
.cv-vault-wrap input[type="text"].cvf-date-input:focus {
    border-color: var(--cvf-primary, #1e3a5f) !important;
    outline: none !important;
}

/* Section header gradients per block type — frontend */
.cvf-section[data-block="documents"] > .cvf-section-header {
    background: linear-gradient(135deg, #eff6ff 0%, #dbeafe 100%);
    border-left: 4px solid #3b82f6;
}
.cv-vault-wrap .cvf-section[data-block="documents"] > .cvf-section-header h2 { color: #1e40af; }
/* bouton style admin uniforme — pas de couleur par section */

.cvf-section[data-block="embeds"] > .cvf-section-header {
    background: linear-gradient(135deg, #faf5ff 0%, #f3e8ff 100%);
    border-left: 4px solid #a855f7;
}
.cv-vault-wrap .cvf-section[data-block="embeds"] > .cvf-section-header h2 { color: #6b21a8; }

.cvf-section[data-block="cards"] > .cvf-section-header {
    background: linear-gradient(135deg, #fefce8 0%, #fef9c3 100%);
    border-left: 4px solid #eab308;
}
.cv-vault-wrap .cvf-section[data-block="cards"] > .cvf-section-header h2 { color: #854d0e; }

.cvf-section[data-block="links"] > .cvf-section-header {
    background: linear-gradient(135deg, #f0fdf4 0%, #dcfce7 100%);
    border-left: 4px solid #22c55e;
}
.cv-vault-wrap .cvf-section[data-block="links"] > .cvf-section-header h2 { color: #166534; }

.cvf-section[data-block="notepad"] > .cvf-section-header {
    background: linear-gradient(135deg, #fff7ed 0%, #ffedd5 100%);
    border-left: 4px solid #f97316;
}
.cv-vault-wrap .cvf-section[data-block="notepad"] > .cvf-section-header h2 { color: #9a3412; }

.cvf-section[data-block="tags"] > .cvf-section-header {
    background: linear-gradient(135deg, #fdf2f8 0%, #fce7f3 100%);
    border-left: 4px solid #ec4899;
}
.cv-vault-wrap .cvf-section[data-block="tags"] > .cvf-section-header h2 { color: #9d174d; }

.cvf-section[data-block="activite"] > .cvf-section-header {
    background: linear-gradient(135deg, #f0f9ff 0%, #e0f2fe 100%);
    border-left: 4px solid #0ea5e9;
}
.cv-vault-wrap .cvf-section[data-block="activite"] > .cvf-section-header h2 { color: #0369a1; }

.cvf-section[data-block="parametres"] > .cvf-section-header {
    background: linear-gradient(135deg, #f8fafc 0%, #f1f5f9 100%);
    border-left: 4px solid #64748b;
}
.cv-vault-wrap .cvf-section[data-block="parametres"] > .cvf-section-header h2 { color: #334155; }

.cvf-section[data-block="folders"] > .cvf-section-header {
    background: linear-gradient(135deg, #f0fdf4 0%, #dcfce7 100%);
    border-left: 4px solid #22c55e;
}
.cv-vault-wrap .cvf-section[data-block="folders"] > .cvf-section-header h2 { color: #166534; }

/* Aérer les blocs internes de Paramètres */
.cv-settings-body {
    padding: 18px;
}
.cv-settings-body .cli-settings-card {
    margin-bottom: 18px;
}
.cv-settings-body .cli-settings-card:last-child {
    margin-bottom: 0;
}

/* Content area inside sections — uniform horizontal padding */
.cvf-section .cv-vault-files,
.cvf-section .cv-media-grid,
.cvf-section .cv-cards-grid,
.cvf-section .cv-links-list,
.cvf-section .cv-link-form,
.cvf-section .cv-embed-form,
.cvf-section .cv-card-form,
.cvf-section .cv-note-thread,
.cvf-section .cv-note-input,
.cvf-section .cv-notepad-wrap .cv-notepad-messages,
.cvf-section .cv-load-more-wrap {
    padding-left: 20px;
    padding-right: 20px;
}
.cvf-section .cv-vault-files { padding-bottom: 10px; }
.cvf-section .cv-load-more-wrap { padding-bottom: 16px; }

/* ─── Dashboard / Accueil ─── */
.cv-section-title {
    font-size: 15px; font-weight: 600; color: var(--cvf-text);
    margin: 0 0 14px; padding: 0;
}
.cv-dashboard-list {
    display: flex; flex-direction: column; gap: 6px;
}
.cv-dashboard-item {
    display: flex; align-items: center; gap: 14px;
    padding: 14px 18px; background: var(--cvf-card); border: 1px solid var(--cvf-border);
    border-radius: 10px; transition: all .15s ease;
    box-shadow: 0 1px 3px rgba(0,0,0,0.04);
}
.cv-dashboard-clickable { cursor: pointer; user-select: none; }
/* Old dashboard items (outside cli-blocks) keep the slide effect */
.cv-dashboard-item.cv-dashboard-clickable:hover {
    border-color: var(--cvf-primary-light); background: rgba(var(--cvf-primary-rgb), 0.03);
    transform: translateX(3px); box-shadow: 0 2px 8px rgba(var(--cvf-primary-rgb), 0.1);
}
.cv-dashboard-item.cv-dashboard-clickable:active {
    transform: translateX(1px); background: rgba(var(--cvf-primary-rgb), 0.06);
}
/* Dashboard block items — ONLY background changes, everything else locked */
.cv-vault-wrap .cli-item.cv-dashboard-clickable:hover,
.cv-vault-wrap .cli-act-item.cv-dashboard-clickable:hover,
.cv-vault-wrap .cli-item:hover,
.cv-vault-wrap .cli-act-item:hover {
    transform: none !important;
    box-shadow: none !important;
}
.cv-vault-wrap .cli-item.cv-dashboard-clickable:active,
.cv-vault-wrap .cli-act-item.cv-dashboard-clickable:active {
    transform: none !important;
    background: rgba(var(--cvf-primary-rgb), 0.06) !important;
}
.cv-dashboard-icon { font-size: 20px; flex-shrink: 0; }
.cv-dashboard-info { flex: 1; min-width: 0; }
.cv-dashboard-info strong { font-size: 14px; color: var(--cvf-text); display: block; }
.cv-dashboard-snippet {
    font-size: 12px; color: var(--cvf-text-muted); margin: 2px 0 0;
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.cv-dashboard-meta { font-size: 11px; color: var(--cvf-text-muted); margin-top: 2px; display: block; }
.cv-dashboard-arrow { color: var(--cvf-text-muted); flex-shrink: 0; opacity: 0; transition: opacity .15s; }
.cv-dashboard-clickable:hover .cv-dashboard-arrow { opacity: 1; }
.cv-dashboard-preview-btn {
    flex-shrink: 0;
    margin-right: 4px;
    opacity: 0.5;
    transition: opacity 0.15s;
}
.cv-dashboard-item:hover .cv-dashboard-preview-btn { opacity: 1; }

/* ─── Deep link highlight (email notifications) ─── */
@keyframes cv-deeplink-glow {
    0%   { box-shadow: 0 0 0 0 rgba(232, 145, 58, 0.7); background-color: #fff8e1; }
    25%  { box-shadow: 0 0 0 6px rgba(232, 145, 58, 0.4); background-color: #fff3cd; }
    50%  { box-shadow: 0 0 0 3px rgba(232, 145, 58, 0.6); background-color: #fff8e1; }
    75%  { box-shadow: 0 0 0 6px rgba(232, 145, 58, 0.4); background-color: #fff3cd; }
    100% { box-shadow: 0 0 0 0 rgba(232, 145, 58, 0.7); background-color: #fff8e1; }
}
.cv-deeplink-highlight {
    animation: cv-deeplink-glow 1.5s ease-in-out infinite !important;
    border: 2px solid var(--cvf-accent) !important;
    border-radius: 10px !important;
    position: relative;
    z-index: 10;
}

/* ─── Tags ─── */
.cv-tags-section { }
.cv-tags-list { display: flex; flex-wrap: wrap; gap: 8px; }
.cv-tag {
    display: inline-flex; align-items: center; gap: 4px;
    padding: 4px 10px; border-radius: 20px; font-size: 12px; font-weight: 500;
    cursor: default;
}
.cv-tags-list .cv-tag-color-blue { background: var(--cvf-tag-blue-bg); color: var(--cvf-tag-blue); }
.cv-tags-list .cv-tag-color-green { background: var(--cvf-tag-green-bg); color: var(--cvf-tag-green); }
.cv-tags-list .cv-tag-color-orange { background: var(--cvf-tag-orange-bg); color: var(--cvf-tag-orange); }
.cv-tags-list .cv-tag-color-red { background: var(--cvf-tag-red-bg); color: var(--cvf-tag-red); }
.cv-tags-list .cv-tag-color-purple { background: var(--cvf-tag-purple-bg); color: var(--cvf-tag-purple); }

.cv-tag-delete {
    background: none; border: none; cursor: pointer;
    font-size: 14px; line-height: 1; color: inherit; opacity: 0.6; padding: 0 2px; margin-left: 2px;
}
.cv-tag-delete:hover { opacity: 1; }

.cv-inline-confirm { background: var(--cvf-success); color: #fff; border: none; border-radius: 4px; padding: 2px 8px; cursor: pointer; margin-left: 4px; font-size: 14px; font-weight: bold; line-height: 1; transition: background .15s; }
.cv-inline-confirm:hover { background: #219a52; }

.cv-tag-input {
    padding: 6px 12px; border: 1px solid var(--cvf-border); border-radius: 8px;
    font-size: 13px; background: var(--cvf-card); color: var(--cvf-text);
    min-width: 140px;
}
.cv-tag-color-select {
    padding: 6px 8px; border: 1px solid var(--cvf-border); border-radius: 8px;
    font-size: 12px; background: var(--cvf-card); color: var(--cvf-text);
}
.cv-tags-empty { font-size: 13px; color: var(--cvf-text-muted); margin: 0; }

/* ─── Settings / Paramètres ─── */
.cv-settings-section { }
.cv-settings-desc { font-size: 13px; color: var(--cvf-text-muted); margin: 0 0 16px; }

.cv-tag-add-form {
    display: flex; gap: 10px; align-items: center; flex-wrap: nowrap;
    margin-top: 14px; margin-bottom: 0;
    padding: 14px 16px; background: var(--cvf-hover-bg, #f8fafc);
    border: 1px solid var(--cvf-border); border-radius: 10px;
}
.cv-tag-add-form .cv-tag-input { flex: 1 1 50%; min-width: 0; }
.cv-tag-add-form .dbtn { flex: 0 0 auto; white-space: nowrap; }
.cv-tags-wrap { margin-top: 16px; }

/* ===== v11.86.271 — Gestion des tags repensée : ajout compact, chips modernes, distinction admin ===== */
/* Formulaire d'ajout compact (icône + champ + bouton sur une ligne) */
.cv-vault-wrap .cv-tagm-add { display: flex; align-items: center; gap: 8px; margin: 14px 0 0; padding: 5px 5px 5px 14px; background: var(--cvf-card, #fff); border: 1px solid var(--cvf-border, #e8ecf0); border-radius: 12px; max-width: 460px; }
.cv-vault-wrap .cv-tagm-add-ico { color: var(--cvf-text-muted, #94a3b8); font-size: 18px; width: 18px; height: 18px; flex: 0 0 auto; }
.cv-vault-wrap .cv-tagm-input { flex: 1 1 auto; border: none !important; background: transparent !important; padding: 8px 4px !important; min-width: 0 !important; font-size: 14px; box-shadow: none !important; }
.cv-vault-wrap .cv-tagm-input:focus { outline: none; box-shadow: none !important; }
.cv-vault-wrap .cv-tagm-add-btn { flex: 0 0 auto; display: inline-flex; align-items: center; gap: 6px; background: var(--cvf-primary, #2563eb); color: #fff; border: none; border-radius: 9px; padding: 9px 16px; font-size: 13px; font-weight: 600; cursor: pointer; transition: filter .15s; }
.cv-vault-wrap .cv-tagm-add-btn .dashicons { font-size: 16px; width: 16px; height: 16px; }
.cv-vault-wrap .cv-tagm-add-btn:hover { filter: brightness(1.08); }
/* Chips modernes + neutralisation du rainbow (plus de rotation de couleurs) */
.cv-vault-wrap .cv-tags-list .cv-tag,
.cv-vault-wrap .cv-tags-list .cv-tag[class*="cv-tag-color-"] { display: inline-flex; align-items: center; gap: 6px; padding: 6px 8px 6px 12px; border-radius: 10px; font-size: 13px; font-weight: 600; border: 1px solid var(--cvf-border, #e8ecf0); background: var(--cvf-bg-soft, #f1f5f9) !important; color: var(--cvf-text, #334155) !important; }
.cv-vault-wrap .cv-tags-list .cv-tag .cv-tag-name { line-height: 1; }
.cv-vault-wrap .cv-tags-list .cv-tag-count { font-size: 11px; font-weight: 700; color: var(--cvf-text-muted, #94a3b8); background: rgba(15,23,42,.06); border-radius: 999px; padding: 1px 7px; }
.cv-vault-wrap .cv-tag-acts { display: inline-flex; align-items: center; gap: 1px; margin-left: 2px; opacity: 0; max-width: 0; overflow: hidden; transition: opacity .15s, max-width .15s; }
.cv-vault-wrap .cv-tags-list .cv-tag:hover .cv-tag-acts,
.cv-vault-wrap .cv-tags-list .cv-tag.cv-tag-editing .cv-tag-acts { opacity: 1; max-width: 64px; }
.cv-vault-wrap .cv-tag-acts button { background: none; border: none; cursor: pointer; color: var(--cvf-text-muted, #94a3b8); padding: 2px; display: inline-flex; border-radius: 6px; }
.cv-vault-wrap .cv-tag-acts button:hover { color: var(--cvf-primary, #2563eb); background: rgba(15,23,42,.06); }
.cv-vault-wrap .cv-tag-acts .cv-tag-delete:hover { color: var(--cvf-danger, #e74c3c); }
.cv-vault-wrap .cv-tag-acts .dashicons { font-size: 15px; width: 15px; height: 15px; }
.cv-vault-wrap .cv-tag-rename-input { border: 1px solid var(--cvf-primary, #2563eb); border-radius: 6px; padding: 2px 6px; font-size: 13px; font-weight: 600; background: #fff; }
/* Tag ADMINISTRATEUR : cadenas + liseré + teinte primaire (distinct des tags client) */
.cv-vault-wrap .cv-tags-list .cv-tag.cv-tag-admin,
.cv-vault-wrap .cv-tags-list .cv-tag.cv-tag-admin[class*="cv-tag-color-"] { background: #eaf1fd !important; color: var(--cvf-primary, #2563eb) !important; border-color: rgba(37,99,235,.35); box-shadow: inset 3px 0 0 var(--cvf-primary, #2563eb); padding-left: 11px; }
.cv-vault-wrap .cv-tag-lock { font-size: 13px; width: 13px; height: 13px; color: var(--cvf-primary, #2563eb); flex: 0 0 auto; }
.cv-vault-wrap .cv-tagm-legend { display: flex; align-items: center; gap: 5px; margin-top: 12px; font-size: 12px; color: var(--cvf-text-muted, #94a3b8); }
.cv-vault-wrap .cv-tagm-legend .dashicons { font-size: 13px; width: 13px; height: 13px; color: var(--cvf-primary, #2563eb); }
/* Fin du rainbow sur les chips de contenu (fiches / grille tags / inline / aperçu) */
.cv-vault-wrap .cv-fiche-tag,
.cv-vault-wrap .cv-tags-chip,
.cv-vault-wrap .cv-inline-tag { background: var(--cvf-bg-soft, #f1f5f9) !important; color: var(--cvf-text, #475569) !important; }

.cv-btn-export {
    display: inline-flex; align-items: center; gap: 10px;
    padding: 14px 28px; border-radius: 12px; font-size: 15px; font-weight: 700;
    color: #fff; background: var(--cvf-primary); border: none;
    cursor: pointer; transition: background .15s;
}
.cv-btn-export:hover { background: var(--cvf-primary-light); }

/* ─── Button variants ─── */
.cv-btn-secondary {
    display: inline-flex; align-items: center; gap: 8px;
    padding: 10px 18px; border-radius: 10px; font-size: 13px; font-weight: 500;
    color: var(--cvf-text); background: var(--cvf-card); border: 1px solid var(--cvf-border);
    cursor: pointer; transition: all .15s;
}
.cv-btn-secondary:hover { border-color: var(--cvf-primary-light); color: var(--cvf-primary); }
.cv-btn-sm { padding: 6px 14px; font-size: 12px; }

/* ─── v11.69.6 — Theme-proof button hardening ───
   Some themes style bare <button> with their own background/gradient. Plugin
   buttons that didn't pin their own background let that bleed through — e.g.
   ".cv-btn-link" (the « Réinitialiser l'avatar » action) was never defined, so a
   theme's blue button background showed under the red link text, and the result
   differed from one theme to the next. We define the missing link button and
   re-assert the filled backgrounds so every vault button renders identically
   everywhere. */
.cv-vault-wrap .cv-btn-link {
    display: inline-flex; align-items: center; gap: 6px;
    background: transparent !important;
    background-image: none !important;
    border: none !important;
    box-shadow: none !important;
    color: var(--cvf-danger) !important;
    font-family: inherit; font-weight: 600; cursor: pointer;
    padding: 4px 8px; border-radius: 6px; line-height: 1.4;
    text-decoration: none !important;
    transition: color .15s, background .15s;
}
.cv-vault-wrap .cv-btn-link:hover {
    color: var(--cvf-danger) !important;
    background: rgba(231, 76, 60, .08) !important;
    text-decoration: underline !important;
}
.cv-vault-wrap .cv-btn-link:focus,
.cv-vault-wrap .cv-btn-link:focus-visible {
    outline: 2px solid var(--cvf-danger) !important;
    outline-offset: 2px !important;
    box-shadow: none !important;
}
/* Re-assert solid primary backgrounds so no theme can strip or recolor them. */
.cv-vault-wrap .cv-btn-primary,
.cv-vault-wrap .cv-btn-export {
    background-color: var(--cvf-primary) !important;
    background-image: none !important;
    color: #fff !important;
}
.cv-vault-wrap .cv-btn-primary:hover,
.cv-vault-wrap .cv-btn-export:hover {
    background-color: var(--cvf-primary-light) !important;
}

/* ═══════════════════════════════════
   ACTIVITY TIMELINE (Activité tab)
   ═══════════════════════════════════ */
/* ─── Activity Type Pills (mirrors tag pills) ─── */
.cv-activity-type-btn {
    display: inline-flex; align-items: center; gap: 4px;
    padding: 6px 14px; border-radius: 20px; border: 1px solid var(--cvf-border);
    background: #fff; color: #555; font-size: 12px; font-weight: 600;
    cursor: pointer; transition: all .15s; white-space: nowrap;
}
.cv-activity-type-btn:hover { border-color: #bbb; background: #fafafa; }
.cv-activity-type-btn.active { background: var(--cvf-primary, #1e3a5f); color: #fff; border-color: var(--cvf-primary, #1e3a5f); }
.cv-act-pill-blue.active   { background: var(--cvf-primary, #1e3a5f); border-color: var(--cvf-primary, #1e3a5f); }
.cv-act-pill-green.active  { background: var(--cvf-success, #27ae60); border-color: var(--cvf-success, #27ae60); }
.cv-act-pill-orange.active { background: var(--cvf-accent, #e8913a); border-color: var(--cvf-accent, #e8913a); }
.cv-act-pill-purple.active { background: var(--cvf-tag-purple); border-color: var(--cvf-tag-purple); }
.cv-act-pill-teal.active   { background: #16a085; border-color: #16a085; }
.cv-act-pill-pink.active   { background: #c0392b; border-color: #c0392b; }
.cv-act-pill-gray.active   { background: #7f8c8d; border-color: #7f8c8d; }

/* ─── Activity Timeline (flat list like tags) ─── */
.cv-activity-timeline {
    min-height: 60px;
    padding: 0 4px;
}
.cv-activity-group {
    margin-bottom: 20px;
}
.cv-activity-date-header {
    display: flex; align-items: center; gap: 12px; margin-bottom: 10px;
}
.cv-activity-date-badge {
    font-size: 11px; font-weight: 600; color: var(--cvf-date-muted);
    white-space: nowrap; text-transform: uppercase; letter-spacing: .4px;
}
.cv-activity-date-line {
    flex: 1; height: 1px; background: var(--cvf-border);
}
.cv-activity-entries {
    display: flex; flex-direction: column; gap: 4px;
}
.cv-activity-entry {
    display: flex; align-items: center; gap: 12px;
    padding: 12px 14px; background: #fff;
    border-bottom: 1px solid var(--cvf-separator); border-radius: 0;
    transition: background 0.15s;
}
.cv-activity-entry:last-child { border-bottom: none; }
.cv-activity-entry:hover { background: var(--cvf-hover-bg); }
.cv-activity-icon {
    font-size: 18px; width: 32px; height: 32px;
    display: flex; align-items: center; justify-content: center;
    background: var(--cvf-icon-bg); border-radius: 8px; flex-shrink: 0;
}
.cv-activity-content {
    flex: 1; min-width: 0;
}
.cv-activity-row {
    display: flex; justify-content: space-between; align-items: center; gap: 8px;
}
.cv-activity-label {
    font-size: var(--cvf-font-base); font-weight: 600; color: var(--cvf-text, #2c3e50);
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.cv-activity-time {
    font-size: 11px; color: var(--cvf-text-muted); flex-shrink: 0;
    font-variant-numeric: tabular-nums;
}
.cv-activity-detail {
    display: block; font-size: 12px; color: var(--cvf-text-muted); margin-top: 2px;
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.cv-activity-meta {
    display: flex; align-items: center; gap: 6px; margin-top: 3px;
}
/* Colored type badges (mirrors tags) */
.cv-activity-type-badge {
    display: inline-block; font-size: 10px; font-weight: 600;
    padding: 2px 8px; border-radius: 10px;
    text-transform: uppercase; letter-spacing: .3px;
}
.cv-act-badge-blue   { background: rgba(30,58,95,.08); color: var(--cvf-primary, #1e3a5f); }
.cv-act-badge-green  { background: rgba(39,174,96,.08); color: var(--cvf-success, #27ae60); }
.cv-act-badge-orange { background: rgba(232,145,58,.1); color: var(--cvf-accent, #e8913a); }
.cv-act-badge-purple { background: rgba(142,68,173,.08); color: #8e44ad; }
.cv-act-badge-teal   { background: rgba(22,160,133,.08); color: #16a085; }
.cv-act-badge-pink   { background: rgba(192,57,43,.08); color: #c0392b; }
.cv-act-badge-gray   { background: rgba(127,140,141,.08); color: #7f8c8d; }

.cv-activity-author {
    display: inline-block; font-size: 10px; font-weight: 600;
    padding: 2px 8px; border-radius: 10px;
}
.cv-activity-author-self {
    background: var(--cvf-author-self-bg); color: var(--cvf-author-self);
}
.cv-activity-author-admin {
    background: var(--cvf-author-admin-bg); color: var(--cvf-author-admin);
}

/* ─── Embed edit form ─── */
.cv-embed-form {
    background: var(--cvf-card); border: 1px solid var(--cvf-border); border-radius: var(--cvf-radius);
    padding: 12px; margin-bottom: 20px; box-shadow: var(--cvf-shadow);
}


/* ── Tag toggle on items ── */
.cv-item-tags {
    display: flex;
    flex-wrap: wrap;
    gap: 5px;
    padding: 6px 16px 10px;
    border-top: 1px solid var(--cvf-border, rgba(0,0,0,0.06));
}
.cv-tag-toggle {
    display: inline-flex;
    align-items: center;
    padding: 2px 10px;
    border-radius: 12px;
    font-size: 11px;
    font-weight: 500;
    cursor: pointer;
    border: 1.5px solid transparent;
    opacity: 0.45;
    transition: opacity .15s, border-color .15s, background .15s;
    background: var(--cvf-surface, #f4f6f9);
}
.cv-tag-toggle:hover { opacity: 0.7; }
.cv-tag-toggle.cv-tag-active {
    opacity: 1;
    border-color: currentColor;
}
.cv-tag-color-blue { color: var(--cvf-primary-light); }
.cv-tag-color-green { color: var(--cvf-success); }
.cv-tag-color-orange { color: var(--cvf-accent); }
.cv-tag-color-red { color: var(--cvf-danger); }
.cv-tag-color-purple { color: #8e44ad; }
.cv-tag-toggle.cv-tag-active.cv-tag-color-blue { background: rgba(42,82,152,0.1); }
.cv-tag-toggle.cv-tag-active.cv-tag-color-green { background: rgba(39,174,96,0.1); }
.cv-tag-toggle.cv-tag-active.cv-tag-color-orange { background: rgba(232,145,58,0.1); }
.cv-tag-toggle.cv-tag-active.cv-tag-color-red { background: rgba(231,76,60,0.1); }
.cv-tag-toggle.cv-tag-active.cv-tag-color-purple { background: rgba(142,68,173,0.1); }

/* ── Tag dropdown menu ── */
.cv-tag-dropdown {
    background: var(--cvf-card, #fff);
    border: 1px solid var(--cvf-border, #e4e8ee);
    border-radius: 10px;
    box-shadow: 0 8px 24px rgba(0,0,0,0.12);
    min-width: 180px;
    max-width: 240px;
    overflow: hidden;
}
.cv-tag-dropdown-title {
    padding: 8px 14px;
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    color: var(--cvf-text-muted, #5a6c7d);
    border-bottom: 1px solid var(--cvf-border, #e4e8ee);
}
.cv-tag-dropdown-list {
    max-height: 220px;
    overflow-y: auto;
}
.cv-tag-dropdown-item {
    display: flex;
    align-items: center;
    gap: 8px;
    width: 100%;
    padding: 8px 14px;
    border: none;
    background: none;
    font-size: 13px;
    cursor: pointer;
    text-align: left;
    color: var(--cvf-text, #2c3e50);
    transition: background 0.15s;
}
.cv-tag-dropdown-item:hover { background: var(--cvf-bg, #f7f8fc); }
.cv-tag-dropdown-item.active {
    font-weight: 700;
    background: rgba(39,174,96,0.08);
}
.cv-tag-check {
    width: 18px;
    height: 18px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 4px;
    font-size: 11px;
    flex-shrink: 0;
    border: 1.5px solid var(--cvf-border, #d0d5dd);
    background: #fff;
    color: transparent;
    transition: all 0.15s;
}
.cv-tag-dropdown-item.active .cv-tag-check {
    background: var(--cvf-success, #27ae60);
    border-color: var(--cvf-success, #27ae60);
    color: #fff;
}
/* ─── Locked admin tags (non-modifiable by client) ─── */
.cv-tag-dropdown-item.cv-tag-locked {
    opacity: 0.65;
    cursor: not-allowed;
    background: #f3f4f6 !important;
}
.cv-tag-dropdown-item.cv-tag-locked:hover {
    background: #f3f4f6 !important;
}
.cv-vault-wrap .cv-form-tag-btn.cv-tag-locked {
    opacity: 0.7 !important;
    cursor: not-allowed !important;
    position: relative;
}
.cv-vault-wrap .cv-form-tag-btn.cv-tag-locked::after {
    content: '🔒';
    font-size: 8px;
    margin-left: 3px;
}
/* ─── Tags Tab ─── */
.cv-tag-filter-btn {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 6px 14px;
    border-radius: 20px;
    border: 1px solid #dde1e6;
    background: #fff;
    font-size: 12px;
    font-weight: 600;
    color: var(--cvf-text);
    cursor: pointer;
    transition: all 0.15s ease;
}
.cv-tag-filter-btn:hover {
    border-color: var(--cvf-primary);
    color: var(--cvf-primary);
}
.cv-tag-filter-btn.active {
    background: var(--cvf-primary);
    color: #fff;
    border-color: var(--cvf-primary);
}
.cv-tag-pill-blue.active { background: var(--cvf-primary-light, #2a5298); border-color: var(--cvf-primary-light, #2a5298); }
.cv-tag-pill-green.active { background: var(--cvf-success, #27ae60); border-color: var(--cvf-success, #27ae60); }
.cv-tag-pill-orange.active { background: var(--cvf-accent, #e8913a); border-color: var(--cvf-accent, #e8913a); }
.cv-tag-pill-red.active { background: var(--cvf-danger, #e74c3c); border-color: var(--cvf-danger, #e74c3c); }
.cv-tag-pill-purple.active { background: #8e44ad; border-color: #8e44ad; }
.cv-tag-count {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 18px;
    height: 18px;
    padding: 0 5px;
    border-radius: 9px;
    background: rgba(0,0,0,0.07);
    font-size: 10px;
    font-weight: 700;
    line-height: 1;
}
.cv-tag-filter-btn.active .cv-tag-count {
    background: rgba(255,255,255,0.25);
    color: #fff;
}

.cv-tags-timeline {
    min-height: 60px;
    padding: 0 4px;
}

/* ─── Tags Timeline Items ─── */
.cv-tags-group {
    margin-bottom: 20px;
}
.cv-tags-date-header {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-bottom: 10px;
}
.cv-tags-date-badge {
    font-size: 11px;
    font-weight: 600;
    color: var(--cvf-date-muted);
    white-space: nowrap;
    text-transform: uppercase;
    letter-spacing: .4px;
}
.cv-tags-date-line {
    flex: 1;
    height: 1px;
    background: var(--cvf-border);
}
.cv-tags-entries {
    display: flex;
    flex-direction: column;
    gap: 4px;
}
.cv-tags-entry {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 12px 14px;
    background: #fff;
    border-bottom: 1px solid var(--cvf-separator);
    border-radius: 0;
    cursor: pointer;
    transition: background 0.15s;
}
.cv-tags-entry:last-child { border-bottom: none; }
.cv-tags-entry:hover {
    background: var(--cvf-hover-bg);
}
.cv-tags-icon {
    font-size: 18px;
    width: 32px;
    height: 32px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--cvf-icon-bg);
    border-radius: 8px;
    flex-shrink: 0;
}
.cv-tags-content {
    flex: 1;
    min-width: 0;
}
.cv-tags-content strong {
    display: block;
    font-size: var(--cvf-font-base);
    color: var(--cvf-text, #2c3e50);
    font-weight: 600;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
/* Colored type badges */
.cv-tags-type-badge {
    display: inline-block;
    font-size: 10px;
    font-weight: 600;
    padding: 2px 8px;
    border-radius: 10px;
    margin-top: 3px;
    text-transform: uppercase;
    letter-spacing: .3px;
}
.cv-tags-type-blue {
    background: rgba(30,58,95,.08); color: var(--cvf-primary, #1e3a5f);
}
.cv-tags-type-green {
    background: rgba(39,174,96,.08); color: var(--cvf-success, #27ae60);
}
.cv-tags-type-orange {
    background: rgba(232,145,58,.1); color: var(--cvf-accent, #e8913a);
}
.cv-tags-type-purple {
    background: rgba(142,68,173,.08); color: #8e44ad;
}
.cv-tags-arrow {
    color: var(--cvf-text-muted);
    flex-shrink: 0;
    transition: color 0.15s;
}
.cv-tags-entry:hover .cv-tags-arrow {
    color: var(--cvf-primary, #1e3a5f);
}
/* Highlight flash for navigation */
.cv-highlight-flash {
    animation: cvHighlightFlash 2s ease;
}
@keyframes cvHighlightFlash {
    0%, 100% { background: transparent; }
    15%, 50% { background: rgba(30,58,95,.08); }
}

/* ── Tag filter bar (per-tab) ── */
.cv-tag-filter-bar {
    display: flex;
    align-items: center;
    gap: 8px;
    margin: 8px 0 14px;
    flex-wrap: wrap;
}
.cv-tag-filter-bar .cv-author-label {
    font-size: 12px;
    font-weight: 600;
    color: var(--cvf-text-muted, #8899aa);
    white-space: nowrap;
}
.cv-tag-filter-pills {
    display: flex;
    gap: 6px;
    flex-wrap: wrap;
}
.cv-tag-pill {
    padding: 4px 12px;
    border-radius: 20px;
    border: 1px solid var(--cvf-border, #e1e5eb);
    background: var(--cvf-surface, #fff);
    font-size: 12px;
    cursor: pointer;
    transition: all .15s;
    color: var(--cvf-text, #333);
}
.cv-tag-pill:hover { border-color: var(--cvf-accent, #2a5298); }
.cv-tag-pill.active {
    background: var(--cvf-primary, #1e3a5f);
    color: #fff;
    border-color: var(--cvf-primary, #1e3a5f);
}
/* ── Tag filter pill colors ── */
.cv-tag-pill.cv-tag-color-blue.active { background: var(--cvf-primary-light); border-color: var(--cvf-primary-light); }
.cv-tag-pill.cv-tag-color-green.active { background: var(--cvf-success); border-color: var(--cvf-success); }
.cv-tag-pill.cv-tag-color-orange.active { background: var(--cvf-accent); border-color: var(--cvf-accent); }
.cv-tag-pill.cv-tag-color-red.active { background: var(--cvf-danger); border-color: var(--cvf-danger); }
.cv-tag-pill.cv-tag-color-purple.active { background: #8e44ad; border-color: #8e44ad; }
.cv-tag-pill-blue { border-color: var(--cvf-primary-light); }
.cv-tag-pill-green { border-color: var(--cvf-success); }
.cv-tag-pill-orange { border-color: var(--cvf-accent); }
.cv-tag-pill-red { border-color: var(--cvf-danger); }
.cv-tag-pill-purple { border-color: #8e44ad; }

/* ─── Date Filter Dropdown ─── */
.cv-date-filter-bar {
    display: flex;
    align-items: center;
    gap: 10px;
    margin: 0 0 14px;
}
.cv-date-filter-select {
    padding: 6px 28px 6px 12px;
    border: 1.5px solid var(--cvf-border);
    border-radius: 8px;
    font-size: 12px;
    font-weight: 600;
    color: var(--cvf-primary);
    background: var(--cvf-card);
    cursor: pointer;
    appearance: none;
    -webkit-appearance: none;
    background-image: url("data:image/svg+xml,%3Csvg width='10' height='6' viewBox='0 0 10 6' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%231e3a5f' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 10px center;
    transition: border-color 0.2s;
}
.cv-date-filter-select:hover {
    border-color: var(--cvf-primary);
}
.cv-date-filter-select:focus {
    outline: none;
    border-color: var(--cvf-primary-light);
    box-shadow: 0 0 0 2px rgba(42,82,152,0.1);
}

/* v11.78.31 — Édition média : Dossier + Tags regroupés au MÊME niveau (2 colonnes) */
.cv-vault-wrap .cv-embed-meta-grid { display: flex; gap: 18px; flex-wrap: wrap; margin-top: 6px; }
.cv-vault-wrap .cv-embed-meta-col { flex: 1 1 240px; min-width: 0; }
.cv-vault-wrap .cv-embed-meta-label { display: block; font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .4px; color: var(--cvf-text-muted); margin-bottom: 7px; }
.cv-vault-wrap .cv-embed-meta-col .cv-form-tags-row { margin-top: 0; }

/* ── Form tag selection ── */
.cv-form-tags-row {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 6px;
    margin-top: 8px;
}
.cv-form-tags-row label {
    font-size: 12px;
    font-weight: 600;
    color: var(--cvf-text-muted);
    margin-right: 4px;
}
.cv-vault-wrap .cv-form-tag-btn {
    padding: 3px 10px !important;
    border-radius: 11px !important;
    font-size: 10.5px !important;
    font-weight: 600 !important;
    cursor: pointer;
    border: 1.5px solid currentColor !important;
    background: rgba(255,255,255,.85) !important;
    opacity: 1;
    transition: all 0.15s;
    box-shadow: 0 1px 3px rgba(0,0,0,.08);
    line-height: 1.3 !important;
}
.cv-form-tag-btn:hover {
    box-shadow: 0 2px 6px rgba(0,0,0,.14);
    transform: translateY(-1px);
}
.cv-vault-wrap .cv-form-tag-btn.cv-form-tag-active {
    /* v11.78.30 — fond PLEIN par défaut (avant : seul le texte passait en blanc → blanc
       sur blanc = tag sélectionné invisible quand sa couleur n'était pas l'une des 5 nommées). */
    background: var(--cvf-primary) !important;
    border-color: var(--cvf-primary) !important;
    color: #fff !important;
    box-shadow: 0 2px 8px rgba(0,0,0,.18);
}
.cv-vault-wrap .cv-form-tag-btn.cv-form-tag-active::before { content: "\2713"; margin-right: 4px; font-weight: 700; }
/* Tag colors (inactive state — text & border) */
.cv-form-tag-btn.cv-tag-color-blue { color: var(--cvf-primary-light) !important; }
.cv-form-tag-btn.cv-tag-color-green { color: var(--cvf-success) !important; }
.cv-form-tag-btn.cv-tag-color-orange { color: var(--cvf-accent) !important; }
.cv-form-tag-btn.cv-tag-color-red { color: var(--cvf-danger) !important; }
.cv-form-tag-btn.cv-tag-color-purple { color: #8e44ad !important; }
/* Tag colors (active state — filled background) */
.cv-vault-wrap .cv-form-tag-btn.cv-form-tag-active.cv-tag-color-blue { background: var(--cvf-primary-light) !important; border-color: var(--cvf-primary-light) !important; color: #fff !important; }
.cv-vault-wrap .cv-form-tag-btn.cv-form-tag-active.cv-tag-color-green { background: var(--cvf-success) !important; border-color: var(--cvf-success) !important; color: #fff !important; }
.cv-vault-wrap .cv-form-tag-btn.cv-form-tag-active.cv-tag-color-orange { background: var(--cvf-accent) !important; border-color: var(--cvf-accent) !important; color: #fff !important; }
.cv-vault-wrap .cv-form-tag-btn.cv-form-tag-active.cv-tag-color-red { background: var(--cvf-danger) !important; border-color: var(--cvf-danger) !important; color: #fff !important; }
.cv-vault-wrap .cv-form-tag-btn.cv-form-tag-active.cv-tag-color-purple { background: #8e44ad !important; border-color: #8e44ad !important; color: #fff !important; }
.cv-upload-tags-row {
    margin: 6px 0 0;
}

/* ── Inline tag display ── */
.cv-inline-tag {
    display: inline-block;
    padding: 2px 7px;
    border-radius: 8px;
    font-size: 10px;
    font-weight: 600;
    color: #fff;
    white-space: nowrap;
}
.cv-inline-tag.cv-tag-color-blue { background: var(--cvf-tag-blue); }
.cv-inline-tag.cv-tag-color-green { background: var(--cvf-tag-green); }
.cv-inline-tag.cv-tag-color-orange { background: var(--cvf-tag-orange); }
.cv-inline-tag.cv-tag-color-red { background: var(--cvf-tag-red); }
.cv-inline-tag.cv-tag-color-purple { background: var(--cvf-tag-purple); }

/* Tags overflow +N badge & popup — v7.16 */
.cv-doc-tags {
    position: relative;
}
.cv-tags-more {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 2px 6px;
    border-radius: 8px;
    font-size: 10px;
    font-weight: 700;
    color: var(--cvf-text-muted, #8a94a6);
    background: var(--cvf-bg, #f1f5f9);
    cursor: pointer;
    white-space: nowrap;
    transition: background .15s;
}
.cv-tags-more:hover {
    background: var(--cvf-border, #e2e8f0);
}
.cv-tags-popup {
    display: none;
    position: absolute;
    top: 100%;
    left: 0;
    z-index: 50;
    background: #fff;
    border: 1px solid var(--cvf-border, #e2e8f0);
    border-radius: 10px;
    padding: 8px 10px;
    box-shadow: 0 4px 16px rgba(0,0,0,.10);
    margin-top: 4px;
    min-width: 120px;
    max-width: 240px;
}
.cv-tags-popup .cv-inline-tag {
    margin: 2px 2px;
}
.cv-doc-tags:hover .cv-tags-popup,
.cv-tags-more:focus + .cv-tags-popup {
    display: flex;
    flex-wrap: wrap;
    gap: 4px;
}

/* ── Author segmented control ── */
.cv-author-segmented {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-bottom: 12px;
}
.cv-author-label {
    font-size: 12px;
    font-weight: 700;
    color: var(--cvf-text-muted);
    white-space: nowrap;
}
.cv-segmented-control {
    display: inline-flex;
    background: var(--cvf-bg);
    border: 1px solid var(--cvf-border);
    border-radius: 10px;
    padding: 3px;
    gap: 2px;
}
.cv-seg-btn {
    padding: 6px 14px;
    border: none;
    background: none;
    font-size: 12px;
    font-weight: 600;
    color: var(--cvf-text-muted);
    cursor: pointer;
    border-radius: 8px;
    transition: all 0.2s;
    white-space: nowrap;
}
.cv-seg-btn:hover {
    color: var(--cvf-primary);
    background: rgba(30,58,95,0.05);
}
.cv-seg-btn.active {
    background: var(--cvf-primary);
    color: #fff;
    box-shadow: 0 1px 4px rgba(30,58,95,0.2);
}
.cv-seg-admin {
    font-style: italic;
}
.cv-seg-admin.active {
    background: linear-gradient(135deg, var(--cvf-primary), #2a5298);
}

/* ── Dashboard type badge ── */
.cv-type-badge {
    display: inline-block;
    padding: 2px 10px;
    border-radius: 10px;
    font-size: 10px;
    font-weight: 700;
    color: #fff;
    text-transform: uppercase;
    letter-spacing: 0.3px;
    margin-right: 6px;
}
.cv-dashboard-meta {
    display: flex;
    align-items: center;
    gap: 6px;
    flex-wrap: wrap;
    font-size: 12px;
}

/* (deep link highlight defined above) */

/* ─── Responsive ─── */
@media (max-width: 768px) {
    .cv-vault-header { padding: 26px 20px 22px !important; gap: 20px !important; }
    .cv-vault-header-top { gap: 16px; }
    /* v11.17.0 — grid responsive : avatar plus petit en mobile */
    html body .cv-app.cv-vault-wrap .cv-vault-header .cv-vault-header-identity,
    html body .cv-vault-wrap .cv-vault-header .cv-vault-header-identity {
        grid-template-columns: 56px minmax(0, 1fr) !important;
        column-gap: 14px !important;
    }
    .cv-vault-header-watermark .dashicons { font-size: 140px !important; width: 140px !important; height: 140px !important; }
    .cv-vault-header-watermark { right: -20px; }
    .cv-vault-header h2,
    .cv-vault-header .cv-vault-header-greeting { font-size: 20px !important; min-height: 24px !important; }
    .cv-vault-header-subtitle { font-size: 13px !important; margin-bottom: 6px !important; }
    .cv-vault-stats { gap: 6px; justify-content: center; }
    .cv-vault-stat { padding: 8px 12px; min-width: 60px; flex: 1; }
    .cv-vault-stat strong { font-size: 18px; }
    .cv-vault-avatar { width: 56px; height: 56px; min-width: 56px; min-height: 56px; }
    .cv-vault-wrap .cv-vault-avatar img { width: 56px !important; height: 56px !important; min-width: 56px !important; min-height: 56px !important; }
    .cv-vault-actions-bar { flex-wrap: wrap; }
    .cv-vault-actions-search-wrap { width: 100%; }
    .cv-vault-actions-period { width: 100%; }
    .cv-vault-actions-send-btn { width: 100%; text-align: center; }
    .cv-form-grid { grid-template-columns: 1fr; }
    .cv-adv-filters { padding: 10px 12px; gap: 6px; }
}
@media (max-width: 600px) {
    .cv-vault-wrap { padding: 20px 12px; }
    .cv-vault-header { padding: 20px 16px; border-radius: 12px; }
    .cv-vault-header-watermark { display: none !important; }
    .cv-vault-file-card { flex-wrap: wrap; }
    .cv-vault-file-actions { width: 100%; justify-content: flex-end; padding-top: 8px; border-top: 1px solid #f0f2f5; }
    .cv-tabs { gap: 0; border-radius: 10px; padding: 3px; }
    .cv-tab { padding: 8px 10px; font-size: 12px; }
    .cv-cards-grid { grid-template-columns: 1fr; }
    .cv-preview-modal { width: 98vw; height: 90vh; }
    .cv-dashboard-snippet { white-space: normal; }
    .cv-dropdown-menu { min-width: 220px; right: -10px; }
    .cv-form-panel.open { padding: 14px; }
}

/* v20.21.81 — 🚨 Toggle Perso/Agence : le libellé est un <span>, capté par la règle large
   « .cv-vault-header span { color:#fff } » → texte BLANC sur le bouton actif (fond blanc) = invisible (PC).
   Fix : le libellé HÉRITE la couleur du bouton (sombre quand actif/fond blanc, blanc quand inactif). */
.cv-vault-wrap .cv-agency-scope-toggle .cv-scope-lbl { color: inherit !important; }

/* ── Ligne sous-titre du hero (desktop) : la méta passe en 2e ligne sous le sous-titre ── */
.cv-vault-wrap .cv-hero-subline { position: relative; }
.cv-vault-wrap .cv-hero-subline .cv-vault-header-meta-v2 { margin-top: 6px; }

/* v20.21.75 — Responsive MOBILE du hero v2 — LARGEUR + TOGGLE + TUILES.
   (avatar / greeting / sous-titre / méta pop-up = bloc autoritaire `html body` plus bas, qui bat le bloc durci.) */
@media (max-width: 680px) {
    /* LARGEUR : full-bleed robuste (100vw centré) → marges latérales égales, indépendant du padding du thème. */
    .cv-vault-wrap {
        width: 100vw !important;
        max-width: 100vw !important;
        position: relative !important;
        left: 50% !important;
        right: 50% !important;
        margin-left: -50vw !important;
        margin-right: -50vw !important;
        padding-left: 12px !important;
        padding-right: 12px !important;
        box-sizing: border-box !important;
    }
    /* HAUTEUR : hero compact. */
    .cv-vault-header.cv-vault-header-v2 { padding: 13px 13px !important; }
    /* TOGGLE Perso/Agence : épinglé en haut-droite (pas de ligne dédiée) + ICÔNES SEULES, compact. */
    .cv-vault-header-v2 .cv-agency-scope-mini {
        position: absolute !important;
        top: 12px !important; right: 12px !important;
        display: inline-flex !important;
        margin: 0 !important;
        z-index: 5 !important;
    }
    .cv-vault-header-v2 .cv-agency-scope-mini .cv-scope-lbl { display: none !important; }
    .cv-vault-header-v2 .cv-agency-scope-toggle { padding: 5px 8px !important; }
    /* Hero : un peu plus d'air en haut/bas pour que l'identité respire. */
    .cv-vault-header.cv-vault-header-v2 { padding: 16px 14px !important; }
    /* v20.21.81 — TUILES stats sur mobile = RUBAN HORIZONTAL qui se SWIPE (choix Dragan).
       1 seule ligne → gros gain de hauteur ; toutes les cartes accessibles au glissement ;
       la carte suivante « dépasse » légèrement à droite = indice de défilement. */
    .cv-vault-wrap .cv-vault-stats {
        display: flex !important;
        flex-wrap: nowrap !important;
        overflow-x: auto !important;
        gap: 8px !important;
        margin-top: 16px !important;
        padding-bottom: 9px !important;
        justify-content: flex-start !important;
        scroll-snap-type: x proximity;
        -webkit-overflow-scrolling: touch;
        /* v20.21.83 — scroll-bar TRÈS discrète (n'apparaît vraiment qu'au défilement, surtout iOS). */
        scrollbar-width: thin;
        scrollbar-color: rgba(255,255,255,.18) transparent;
        /* Indicateur PERMANENT « à l'arrêt » : léger fondu sur le bord droit = « il y a plus à droite ».
           Le contenu reste net partout sauf sur les ~26 derniers px qui s'estompent doucement. */
        -webkit-mask-image: linear-gradient(to right, #000 0, #000 calc(100% - 26px), rgba(0,0,0,.15) 100%);
        mask-image: linear-gradient(to right, #000 0, #000 calc(100% - 26px), rgba(0,0,0,.15) 100%);
    }
    .cv-vault-wrap .cv-vault-stats::-webkit-scrollbar { height: 3px; }
    .cv-vault-wrap .cv-vault-stats::-webkit-scrollbar-track { background: transparent; }
    .cv-vault-wrap .cv-vault-stats::-webkit-scrollbar-thumb { background: rgba(255,255,255,.18); border-radius: 999px; }
    .cv-vault-wrap .cv-vault-stat {
        flex: 0 0 auto !important;
        width: 76px !important; min-width: 76px !important;
        scroll-snap-align: start;
        display: flex !important; flex-direction: column !important; flex-wrap: nowrap !important;
        align-items: center !important; justify-content: center !important;
        row-gap: 2px !important; column-gap: 0 !important;
        padding: 10px 6px !important; border-radius: 11px !important;
    }
    .cv-vault-wrap .cv-vault-stat:not(.cv-vault-stat-storage) .cv-vault-stat-icon { order: 0 !important; font-size: 17px !important; width: 17px !important; height: 17px !important; }
    .cv-vault-wrap .cv-vault-stat:not(.cv-vault-stat-storage) strong { order: 1 !important; font-size: 17px !important; line-height: 1.05 !important; }
    .cv-vault-wrap .cv-vault-stat:not(.cv-vault-stat-storage) > span:last-child { order: 2 !important; flex-basis: auto !important; text-align: center !important; font-size: 9px !important; letter-spacing: .2px !important; white-space: nowrap !important; }
    /* Tuile stockage : un peu plus large (jauge + quota). */
    .cv-vault-wrap .cv-vault-stat-storage { width: 98px !important; min-width: 98px !important; }
    .cv-vault-wrap .cv-vault-stat-storage .cv-vault-stat-icon { font-size: 16px !important; width: 16px !important; height: 16px !important; }
    .cv-vault-wrap .cv-vault-stat-storage-detail { gap: 1px !important; }
    .cv-vault-wrap .cv-vault-stat-storage-detail strong { font-size: 13px !important; }
    .cv-vault-wrap .cv-vault-stat-storage-quota { font-size: 8.5px !important; }
}

/* v20.21.76 — Robustesse iOS Safari + cohérence mobile des composants (cercles, badges, vues liste).
   iPhone : sans aspect-ratio/flex:none, les ronds (ⓘ, pastilles) s'ovalisent et les puces des vues
   liste cassent (filename qui passe à la ligne sous l'icône → effet « 2 colonnes »). */
/* v20.21.78 — ⓘ = simple ICÔNE sans fond ni cadre (le glyphe info-outline est déjà un « i » cerclé).
   On NEUTRALISE le style natif des boutons iOS Safari (qui arrondissait/pilulait le bouton) :
   appearance:none + border:0 + border-radius:0 + background:transparent. Plus aucun cercle à interpréter. */
.cv-vault-wrap .cv-hero-info-btn {
    -webkit-appearance: none !important;
    appearance: none !important;
    background: transparent !important;
    border: 0 !important;
    border-radius: 0 !important;
    padding: 0 !important;
    box-shadow: none !important;
    line-height: 1 !important;
    vertical-align: middle !important;
}
.cv-vault-wrap .cv-hero-info-btn .dashicons {
    flex: 0 0 auto !important;
    line-height: 1 !important;
}
/* Toggle Perso/Agence : neutraliser aussi le rendu natif Safari (coins arrondis/pilule imposés). */
.cv-vault-wrap .cv-agency-scope-toggle {
    -webkit-appearance: none !important;
    appearance: none !important;
}
/* Badges/compteurs : taille minimale cohérente, jamais déformés (cercle/pilule), pas de débordement. */
.cv-vault-wrap .cv-tab-unread,
.cv-vault-wrap .cv-tab-count,
.cv-vault-wrap .cv-seen-dot,
.cv-vault-wrap .cli-msg-count,
.cv-vault-wrap .cv-badge-count {
    flex: 0 0 auto !important;
    box-sizing: border-box !important;
}
.cv-vault-wrap .cv-tab-unread,
.cv-vault-wrap .cli-msg-count,
.cv-vault-wrap .cv-badge-count {
    aspect-ratio: 1 / 1 !important; /* badge rond quand 1 chiffre ; s'élargit en pilule si plusieurs */
}

@media (max-width: 680px) {
    /* ── VUES LISTE (messages, docs, médias, liens, fiches) : puces/pastilles sur UNE ligne, tronquées
       si trop longues, et méta en flex-wrap propre → fini l'effet « 2 colonnes » tronquées. ── */
    .cv-vault-wrap .cv-msglist-meta {
        display: flex !important;
        flex-wrap: wrap !important;
        align-items: center !important;
        gap: 5px 6px !important;
    }
    .cv-vault-wrap .cv-fmsg-att,
    .cv-vault-wrap .cv-fmsg-att-chip,
    .cv-vault-wrap .cv-seen-pill,
    .cv-vault-wrap .cv-fmsg-tag,
    .cv-vault-wrap .cv-fmsg-folder,
    .cv-vault-wrap .cv-doc-tag,
    .cv-vault-wrap .cv-tagchip,
    .cv-vault-wrap .cv-card-tag,
    .cv-vault-wrap .cv-link-tag {
        max-width: 100% !important;
        min-width: 0 !important;
        white-space: nowrap !important;
        overflow: hidden !important;
        text-overflow: ellipsis !important;
    }
    .cv-vault-wrap .cv-fmsg-att .dashicons,
    .cv-vault-wrap .cv-fmsg-att-chip .dashicons,
    .cv-vault-wrap .cv-seen-pill .cv-seen-dot,
    .cv-vault-wrap .cv-fmsg-folder .dashicons {
        flex: 0 0 auto !important;
    }
    /* La colonne centrale d'une ligne de liste prend toute la largeur dispo (pas de « 2e colonne »). */
    .cv-vault-wrap .cv-msglist-main { flex: 1 1 auto !important; min-width: 0 !important; }
    /* Les actions de ligne (édition) restent compactes et n'écrasent pas le contenu. */
    .cv-vault-wrap .cv-fmsg-actions { flex: 0 0 auto !important; }

    /* ═══ VUE LISTE Documents/Médias = TABLE (.cv-folder-files-table) en table-layout:fixed avec
       colonne ACTIONS de 300px → sur mobile le nom est écrasé (texte vertical lettre par lettre).
       Fix : on EMPILE la table en blocs (nom pleine largeur, taille/date/actions dessous). ═══ */
    .cv-vault-wrap table.cv-folder-files-table { table-layout: auto !important; width: 100% !important; }
    .cv-vault-wrap table.cv-folder-files-table thead { display: none !important; }
    .cv-vault-wrap table.cv-folder-files-table tbody { display: block !important; }
    .cv-vault-wrap table.cv-folder-files-table tr { display: block !important; padding: 12px 12px !important; border-bottom: 1px solid #eef2f7 !important; }
    .cv-vault-wrap table.cv-folder-files-table td {
        display: block !important;
        width: auto !important;
        max-width: 100% !important;
        min-width: 0 !important;
        border: none !important;
        padding: 1px 0 !important;
        text-align: left !important;
        white-space: normal !important;
    }
    /* le nom reprend toute la largeur → plus d'empilement vertical des lettres */
    .cv-vault-wrap table.cv-folder-files-table td.cv-folder-file-name { width: auto !important; }
    .cv-vault-wrap table.cv-folder-files-table td.cv-folder-file-name .cv-folder-file-desc { white-space: normal !important; }
    /* taille / date : petites lignes méta sous le nom */
    .cv-vault-wrap table.cv-folder-files-table td:nth-child(2),
    .cv-vault-wrap table.cv-folder-files-table td:nth-child(3) { font-size: 11.5px !important; color: var(--cvf-text-muted, #94a3b8) !important; margin-top: 2px !important; }
    /* ACTIONS : rangée pleine largeur, visibles (pas de hover sur tactile), à gauche, qui s'enroulent */
    .cv-vault-wrap table.cv-folder-files-table td.cv-folder-file-actions { margin-top: 8px !important; }
    .cv-vault-wrap table.cv-folder-files-table td.cv-folder-file-actions .cv-act-row {
        display: flex !important;
        flex-wrap: wrap !important;
        gap: 6px !important;
        opacity: 1 !important;
        justify-content: flex-start !important;
    }

    /* ═══ Cartes de LISTE (Fiches, Liens, Messages) : les boutons d'action (révélés au survol sur
       desktop) sont TOUJOURS visibles sur tactile et passent SOUS le contenu (pas de chevauchement). ═══ */
    .cv-vault-wrap .cv-fmsg-item .cv-fmsg-actions,
    .cv-vault-wrap .cv-bomv-item .cv-bomv-actions,
    .cv-vault-wrap .cv-card-item .cv-card-actions,
    .cv-vault-wrap .cv-link-card .cv-link-actions { opacity: 1 !important; }
    /* puces de fichiers/PJ génériques (docs/médias en mode carte) tronquées proprement */
    .cv-vault-wrap .cv-ff-att, .cv-vault-wrap .cv-doc-att-chip {
        max-width: 100% !important; min-width: 0 !important;
        white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important;
    }
}

/* ── Inline rename ── */
.cv-inline-rename {
    border: none;
    border-bottom: 2px solid var(--cvf-accent);
    background: transparent;
    font-size: inherit;
    font-weight: inherit;
    color: inherit;
    padding: 0 2px;
    outline: none;
    font-family: inherit;
}

/* ── Timeline Dashboard ── */
.cv-timeline {
    position: relative;
    padding: 0 0 0 24px;
}

.cv-timeline::before {
    content: '';
    position: absolute;
    left: 11px;
    top: 0;
    bottom: 0;
    width: 2px;
    background: var(--cvf-border, #e1e5eb);
}

.cv-timeline-date {
    display: flex;
    align-items: center;
    gap: 12px;
    margin: 20px 0 12px -24px;
    position: relative;
    z-index: 1;
}

.cv-timeline-date:first-child {
    margin-top: 0;
}

.cv-timeline-date-badge {
    background: var(--cvf-accent, var(--cvf-primary));
    color: #fff;
    padding: 4px 14px;
    border-radius: 20px;
    font-size: 12px;
    font-weight: 600;
    white-space: nowrap;
}

.cv-timeline-date-line {
    flex: 1;
    height: 1px;
    background: var(--cvf-border, #e1e5eb);
}

.cv-timeline-item {
    display: flex;
    align-items: flex-start;
    gap: 14px;
    padding: 14px 16px;
    margin: 0 0 8px 0;
    background: var(--cvf-surface, #fff);
    border-radius: 12px;
    border: 1px solid var(--cvf-border, #e1e5eb);
    position: relative;
    transition: all 0.15s;
}

.cv-timeline-item:hover {
    border-color: var(--cvf-accent, #2a5298);
    box-shadow: 0 2px 8px rgba(0,0,0,.06);
    transform: translateX(4px);
}

.cv-timeline-dot {
    width: 36px;
    height: 36px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 16px;
    flex-shrink: 0;
    color: #fff;
}

.cv-timeline-content {
    flex: 1;
    min-width: 0;
}

.cv-timeline-header {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-bottom: 4px;
}

.cv-timeline-type-badge {
    padding: 2px 10px;
    border-radius: 12px;
    font-size: 11px;
    font-weight: 600;
}

.cv-timeline-time {
    font-size: 12px;
    color: var(--cvf-text-muted, #8899aa);
    margin-left: auto;
}

.cv-timeline-title {
    font-size: 14px;
    font-weight: 600;
    margin: 0;
    color: var(--cvf-text, var(--cvf-primary));
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.cv-timeline-snippet {
    font-size: 12px;
    color: var(--cvf-text-muted, #8899aa);
    margin: 4px 0 0;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.cv-timeline-arrow {
    flex-shrink: 0;
    color: var(--cvf-text-muted, #ccc);
    align-self: center;
}

.cv-timeline-item:hover .cv-timeline-arrow {
    color: var(--cvf-accent, #2a5298);
}


/* ═══════════════════════════════════
   DROPDOWN COMPONENT (Envoyer v8)
   ═══════════════════════════════════ */
.cv-dropdown-wrap {
    position: relative;
    display: inline-block;
    z-index: var(--cvf-z-dropdown);
}
.cv-dropdown-btn {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 10px 22px;
    border: 2px solid rgba(255,255,255,.5) !important;
    border-radius: 10px !important;
    background: rgba(255,255,255,.25) !important;
    backdrop-filter: blur(6px);
    color: #fff !important;
    font-size: 14px !important;
    font-weight: 700 !important;
    cursor: pointer;
    font-family: inherit !important;
    box-shadow: 0 2px 8px rgba(0,0,0,.12);
    transition: all .2s;
    white-space: nowrap;
}
.cv-dropdown-btn:hover {
    background: rgba(255,255,255,.4) !important;
    box-shadow: 0 4px 16px rgba(0,0,0,.22);
    transform: translateY(-1px);
    border-color: rgba(255,255,255,.7) !important;
}
.cv-dropdown-btn .cv-dd-arrow {
    font-size: 10px;
    opacity: .7;
    transition: transform .2s;
}
.cv-dropdown-wrap.open .cv-dd-arrow {
    transform: rotate(180deg);
}
.cv-dropdown-menu {
    display: none;
    position: absolute;
    top: calc(100% + 8px);
    right: 0;
    min-width: 280px;
    background: var(--cvf-card);
    border: 1.5px solid var(--cvf-border);
    border-radius: var(--cvf-radius);
    padding: 8px;
    box-shadow: 0 12px 40px rgba(0,0,0,.15);
    z-index: var(--cvf-z-modal);
}
.cv-dropdown-wrap.open .cv-dropdown-menu {
    display: block;
}
.cv-dd-item {
    display: flex !important;
    align-items: center !important;
    justify-content: flex-start !important;
    gap: 12px;
    padding: 10px 12px;
    border-radius: 10px;
    cursor: pointer;
    transition: background .15s;
    border: none;
    background: none;
    width: 100%;
    text-align: left !important;
    font-family: inherit;
    /* v11.46.6 — Reset défensif pour empêcher un thème parent (button { padding-left:1em }
       ou similaire) de décaler le contenu interne. */
    text-indent: 0 !important;
}
.cv-dd-item > * {
    /* Empêche un margin-left parasite sur les enfants */
    margin-left: 0 !important;
}
.cv-dd-item:hover {
    background: rgba(var(--cvf-primary-rgb), 0.04);
}
.cv-dd-icon {
    width: 36px;
    height: 36px;
    border-radius: 10px;
    /* v11.46.6 — Force centrage robuste de l'emoji/icône même si le thème parent
       a un line-height global ou un text-align particulier. */
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    font-size: 18px;
    line-height: 1 !important;
    text-align: center !important;
    vertical-align: middle;
    flex-shrink: 0;
    flex-grow: 0;
    overflow: hidden;
    padding: 0 !important;
    margin: 0 !important;
}
.cv-dd-label {
    font-size: 14px;
    font-weight: 600;
    color: var(--cvf-primary);
    margin-bottom: 1px;
}
.cv-dd-desc {
    font-size: 12px;
    color: #5a6c7d;
}

/* Standalone dropdown button (outside header, for tabs) */
.cv-dropdown-btn-standalone {
    background: var(--cvf-primary);
    color: #fff;
    border: none;
    padding: 10px 20px;
    border-radius: 10px;
    font-size: 14px;
    font-weight: 700;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    gap: 8px;
    transition: background .2s;
}
.cv-dropdown-btn-standalone:hover {
    background: var(--cvf-primary-light);
}

/* ═══════════════════════════════════
   FORM PANEL (inline add forms v8)
   ═══════════════════════════════════ */
.cv-form-panel {
    background: var(--cvf-card);
    border: 1.5px solid var(--cvf-border);
    border-radius: var(--cvf-radius);
    padding: 0;
    margin-bottom: 20px;
    box-shadow: var(--cvf-shadow);
    overflow: hidden;
    max-height: 0;
    opacity: 0;
    transition: max-height .35s ease, opacity .25s ease, margin .25s ease;
}
.cv-form-panel.open {
    max-height: 800px;
    opacity: 1;
    padding: 20px;
}
.cv-form-panel-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 16px;
}
.cv-form-panel-title {
    font-size: 16px;
    font-weight: 700;
    color: var(--cvf-primary);
    display: flex;
    align-items: center;
    gap: 8px;
}
.cv-form-panel-close {
    background: none;
    border: 1px solid var(--cvf-border);
    border-radius: 8px;
    width: 32px;
    height: 32px;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    color: var(--cvf-text-muted);
    font-size: 18px;
    transition: all .15s;
}
.cv-form-panel-close:hover {
    border-color: var(--cvf-danger);
    color: var(--cvf-danger);
    background: #fff5f5;
}
.cv-form-panel .cv-form-row {
    margin-bottom: 14px;
}
.cv-form-panel .cv-form-row label {
    display: block;
    font-size: 13px;
    font-weight: 600;
    color: var(--cvf-text);
    margin-bottom: 6px;
}
.cv-form-panel .cv-form-row input[type="text"],
.cv-form-panel .cv-form-row input[type="url"],
.cv-form-panel .cv-form-row textarea,
.cv-form-panel .cv-form-row select {
    width: 100%;
    padding: 10px 14px;
    border: 1.5px solid var(--cvf-border);
    border-radius: 10px;
    font-size: 14px;
    font-family: inherit;
    box-sizing: border-box;
    transition: border-color .2s, box-shadow .2s;
    background: var(--cvf-bg);
    color: var(--cvf-text);
}
.cv-form-panel .cv-form-row input:focus,
.cv-form-panel .cv-form-row textarea:focus,
.cv-form-panel .cv-form-row select:focus {
    border-color: var(--cvf-primary-light);
    outline: none;
    box-shadow: 0 0 0 3px rgba(42,82,152,0.1);
    background: var(--cvf-card);
}
.cv-form-panel .cv-form-row textarea {
    resize: vertical;
    min-height: 80px;
}
.cv-form-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 14px;
}
@media (max-width: 600px) {
    .cv-form-grid { grid-template-columns: 1fr; }
}
.cv-form-actions {
    display: flex;
    justify-content: flex-end;
    gap: 10px;
    margin-top: 16px;
    padding-top: 16px;
    border-top: 1px solid var(--cvf-border);
}

/* ═══════════════════════════════════
   ADVANCED FILTER BAR (v8)
   ═══════════════════════════════════ */
.cv-adv-filters {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-bottom: 14px;
    flex-wrap: wrap;
    padding: 12px 16px;
    background: var(--cvf-card);
    border-radius: 12px;
    border: 1px solid var(--cvf-border);
}
.cv-adv-filters label {
    font-size: 12px;
    font-weight: 600;
    color: var(--cvf-text-muted);
    white-space: nowrap;
}
.cv-adv-select {
    padding: 6px 10px;
    border: 1.5px solid var(--cvf-border);
    border-radius: 7px;
    font-size: 12px;
    font-family: inherit;
    color: var(--cvf-text);
    background: var(--cvf-card);
    cursor: pointer;
}
.cv-adv-date {
    padding: 6px 10px;
    border: 1.5px solid var(--cvf-border);
    border-radius: 7px;
    font-size: 12px;
    font-family: inherit;
    color: var(--cvf-text);
    background: var(--cvf-card);
    width: 130px;
}
.cv-adv-sep {
    width: 1px;
    height: 24px;
    background: var(--cvf-border);
    flex-shrink: 0;
}

/* ═══════════════════════════════════
   SORT CONTROLS (v8)
   ═══════════════════════════════════ */
.cv-sort-ctl {
    display: flex;
    align-items: center;
    gap: 4px;
}
.cv-sort-btn {
    padding: 5px 10px;
    border: 1.5px solid var(--cvf-border);
    border-radius: 7px;
    font-size: 11px;
    font-weight: 600;
    cursor: pointer;
    background: var(--cvf-card);
    color: var(--cvf-text-muted);
    font-family: inherit;
    display: flex;
    align-items: center;
    gap: 3px;
    transition: all .15s;
}
.cv-sort-btn.active {
    border-color: var(--cvf-primary);
    background: #e8f0fe;
    color: var(--cvf-primary);
}

/* ═══════════════════════════════════
   CONTENT TABLE (v8 doc-style)
   ═══════════════════════════════════ */
.cv-content-table {
    background: var(--cvf-card);
    border-radius: 14px;
    box-shadow: 0 1px 8px rgba(0,0,0,.04);
    overflow: hidden;
    border: 1px solid var(--cvf-border);
}
.cv-content-table table {
    width: 100%;
    border-collapse: collapse;
}
.cv-content-table th {
    padding: 10px 14px;
    text-align: left;
    font-size: 11px;
    text-transform: uppercase;
    letter-spacing: .4px;
    color: var(--cvf-text-muted);
    background: var(--cvf-bg);
    border-bottom: 1px solid var(--cvf-border);
    white-space: nowrap;
}
.cv-content-table td {
    padding: 12px 14px;
    border-bottom: 1px solid #f0f2f5;
    font-size: 14px;
    vertical-align: middle;
}
.cv-content-table tbody tr:hover td {
    background: #f8fafc;
}
.cv-content-table-footer {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 12px 18px;
    border-top: 1px solid var(--cvf-border);
    font-size: 13px;
    color: var(--cvf-text-muted);
}

/* ═══════════════════════════════════
   NOTIFICATION BADGE
   ═══════════════════════════════════ */
.cv-badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 18px;
    height: 18px;
    padding: 0 5px;
    border-radius: 9px;
    font-size: 10px;
    font-weight: 700;
    line-height: 1;
}
.cv-badge-red { background: #e74c3c; color: #fff; }
.cv-badge-gray { background: #e8ecf0; color: #888; }
.cv-badge-blue { background: #e8f0fe; color: #949494; }
.cv-badge-green { background: #d4edda; color: #155724; }

/* ═══════════════════════════════════════════
   Pagination — Load More
   ═══════════════════════════════════════════ */
.cv-paginated-hidden { display: none !important; }

.cv-load-more-wrap {
    text-align: center;
    margin: 20px 0 8px;
}
.cv-btn-load-more {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 10px 28px;
    border: 1px solid var(--cvf-border);
    border-radius: 10px;
    background: #fff;
    color: var(--cvf-primary);
    font-size: 13px;
    font-weight: 600;
    cursor: pointer;
    transition: all .2s;
}
.cv-btn-load-more:hover {
    background: var(--cvf-primary);
    color: #fff;
    border-color: var(--cvf-primary);
}

/* ═══════════════════════════════════════════
   File Type Filters
   ═══════════════════════════════════════════ */
.cv-file-type-filters {
    display: flex;
    gap: 6px;
    margin-bottom: 14px;
    flex-wrap: wrap;
}
.cv-ftype-btn {
    padding: 6px 16px;
    border: 1px solid var(--cvf-border);
    border-radius: 20px;
    background: #fff;
    color: var(--cvf-text);
    font-size: 12px;
    font-weight: 500;
    cursor: pointer;
    transition: all .2s;
}
.cv-ftype-btn:hover { border-color: var(--cvf-primary); color: var(--cvf-primary); }
.cv-ftype-btn.active {
    background: var(--cvf-primary);
    color: #fff;
    border-color: var(--cvf-primary);
}

/* ═══════════════════════════════════════════
   Document Table (v8 maquette)
   ═══════════════════════════════════════════ */
.cv-doc-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 13px;
}
.cv-doc-table thead th {
    text-align: center !important;
    padding: 10px 14px;
    font-size: 11px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: .5px;
    color: var(--cvf-text-muted);
    border-bottom: 2px solid var(--cvf-border);
    white-space: normal;
    line-height: 1.4;
    vertical-align: middle;
}
.cv-doc-table thead th:first-child,
.cv-doc-table thead th:nth-child(2) {
    text-align: left !important;
}
.cv-doc-table tbody tr.cv-doc-row {
    border-bottom: 1px solid var(--cvf-border);
    transition: background .15s;
}
.cv-doc-table tbody tr.cv-doc-row:hover {
    background: linear-gradient(90deg, rgba(30,58,95,0.07) 0%, rgba(30,58,95,0.02) 100%) !important;
}
.cv-doc-table td {
    padding: 12px 14px;
    vertical-align: middle;
}

/* File name cell */
.cv-doc-name {
    display: flex;
    align-items: center;
    gap: 10px;
    min-width: 180px;
}
.cv-doc-icon {
    width: 36px;
    height: 36px;
    border-radius: 8px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 18px;
    flex-shrink: 0;
    background: var(--cvf-icon-bg);
}
.cv-di-pdf { background: #fce4ec; }
.cv-di-img { background: #e8f5e9; }
.cv-di-word { background: #e3f2fd; }
.cv-di-xls { background: #e8f5e9; }
.cv-di-ppt { background: #fff0e6; }
.cv-di-zip { background: #fff3e0; }
.cv-di-doc { background: #e3f2fd; }
.cv-doc-name-t {
    font-weight: 600;
    color: var(--cvf-text);
    word-break: break-all;
    display: inline;
}
.cv-doc-name-clickable:hover {
    color: var(--cvf-primary, #1e3a5f);
    text-decoration: underline;
}
.cv-doc-name-s {
    font-size: 11px;
    color: var(--cvf-text-muted);
    display: inline;
    margin-left: 0;
}
.cv-doc-name-s::before { content: '('; }
.cv-doc-name-s::after { content: ')'; }
.cv-doc-desc {
    font-size: 11px;
    color: var(--cvf-text-muted);
    margin-top: 2px;
    max-width: 280px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

/* Tags cell */
.cv-doc-tags {
    display: flex;
    flex-wrap: wrap;
    gap: 4px;
    justify-content: center;
}

/* Date cell */
.cv-doc-table td:nth-child(2),
.cv-doc-table td:nth-child(3),
.cv-doc-table td:nth-child(4),
.cv-doc-table td:nth-child(5) {
    text-align: center;
}
.cv-doc-date {
    font-size: 12px;
    color: var(--cvf-text);
    white-space: nowrap;
}

/* From cell — stacked layout v7.16 */
.cv-doc-from {
    font-size: 12px;
    display: inline-flex;
    flex-direction: column;
    align-items: center;
    gap: 2px;
}
/* Center the author cell horizontally */
.cv-doc-table td:has(.cv-doc-from) {
    text-align: center !important;
    line-height: 1.3;
}
.cv-doc-from-icon { font-size: 13px; line-height: 1; }
.cv-doc-from-name { word-break: break-word; font-weight: 500; }
.cv-doc-from-coach { color: var(--cvf-primary); }
.cv-doc-from-client { color: var(--cvf-success); }

/* Expiration cell */
.cv-doc-exp {
    font-size: 12px;
    white-space: nowrap;
}
.cv-doc-exp-ok { color: var(--cvf-success); }
.cv-doc-exp-warn { color: var(--cvf-accent); }
.cv-doc-exp-expired { color: var(--cvf-danger); text-decoration: line-through; }
.cv-doc-exp-none { color: var(--cvf-text-muted, #adb5bd); opacity: 0.5; }

/* Actions cell — v7.16.3 tight single row */
.cv-doc-actions {
    display: flex;
    gap: 1px;
    align-items: center;
    flex-wrap: nowrap;
}
.cv-dact-btn {
    width: 26px;
    height: 26px;
    border: none;
    border-radius: 5px;
    background: transparent;
    cursor: pointer;
    font-size: 13px;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: background .15s;
    flex-shrink: 0;
}
.cv-dact-btn:hover { background: var(--cvf-bg); }
.cv-dact-btn sup {
    font-size: 9px;
    color: var(--cvf-primary);
    margin-left: 1px;
}
.cv-dact-btn .dashicons {
    font-size: 16px !important;
    width: 16px !important;
    height: 16px !important;
    color: var(--cvf-text-muted, #8a94a6);
}
.cv-dact-btn.cv-has-comments {
    position: relative;
}
.cv-dact-btn.cv-has-comments .dashicons {
    color: var(--cvf-primary, #1e3a5f);
}
.cv-comment-badge {
    position: absolute;
    top: 0;
    right: 0;
    min-width: 14px;
    height: 14px;
    font-size: 9px;
    font-weight: 700;
    line-height: 14px;
    text-align: center;
    background: var(--cvf-danger, #dc3545);
    color: #fff;
    border-radius: 7px;
    padding: 0 3px;
}

/* Zebra striping — v7.16.4 */
.cv-doc-table tbody tr.cv-doc-row:nth-child(4n+1) {
    background: rgba(241, 245, 249, 0.45);
}
.cv-doc-table tbody tr.cv-doc-row:nth-child(4n+1):hover {
    background: var(--cvf-hover-bg);
}

/* Sticky header — v7.18.4 */
.cv-doc-table thead th {
    position: sticky;
    top: 0;
    background: #fff;
    z-index: 10;
    box-shadow: 0 1px 3px rgba(0,0,0,0.08);
}

/* Sortable header hint — v7.16.4 */
.cv-doc-table thead th.cv-sortable {
    cursor: pointer;
    user-select: none;
    white-space: nowrap;
}
.cv-doc-table thead th.cv-sortable:hover {
    color: var(--cvf-primary, #1e3a5f);
}
.cv-doc-table thead th .cv-sort-arrow {
    font-size: 10px;
    margin-left: 3px;
    opacity: 0.4;
}
.cv-doc-table thead th.cv-sort-active .cv-sort-arrow {
    opacity: 1;
    color: var(--cvf-primary, #1e3a5f);
}

/* Tags empty state — v7.16.4 */
.cv-doc-tags:empty::after {
    content: '—';
    color: #cbd5e1;
    font-size: 12px;
}

/* Batch selection checkbox — v7.16.4 */
.cv-doc-table thead th.cv-col-check,
.cv-doc-table td.cv-col-check {
    width: 36px;
    text-align: center !important;
    padding-left: 8px;
    padding-right: 4px;
}
.cv-doc-check {
    width: 16px;
    height: 16px;
    accent-color: var(--cvf-primary, #1e3a5f);
    cursor: pointer;
    vertical-align: middle;
}

/* Batch action bar — v7.18.4 sticky */
.cv-batch-bar {
    display: none;
    align-items: center;
    gap: 10px;
    padding: 8px 14px;
    background: var(--cvf-primary, #1e3a5f);
    color: #fff;
    border-radius: 8px;
    margin-bottom: 8px;
    font-size: 13px;
    font-weight: 500;
    position: sticky;
    top: 0;
    z-index: 20;
    box-shadow: 0 2px 8px rgba(30,58,95,0.25);
}
.cv-batch-bar.cv-batch-visible {
    display: flex;
}
.cv-batch-bar button {
    background: rgba(255,255,255,0.2);
    border: none;
    color: #fff;
    padding: 5px 12px;
    border-radius: 6px;
    font-size: 12px;
    cursor: pointer;
    transition: background .15s;
}
.cv-batch-bar button:hover {
    background: rgba(255,255,255,0.35);
}
.cv-batch-bar .cv-batch-count {
    font-weight: 700;
}

/* Batch move modal — v7.16.6 */
.cv-batch-move-overlay {
    position: fixed;
    inset: 0;
    z-index: var(--cvf-z-overlay);
    background: rgba(0,0,0,0.4);
    display: flex;
    align-items: center;
    justify-content: center;
    animation: cvFadeIn .2s ease;
}
@keyframes cvFadeIn { from { opacity: 0; } to { opacity: 1; } }
.cv-batch-move-modal {
    background: #fff;
    border-radius: 14px;
    box-shadow: 0 8px 32px rgba(0,0,0,0.18);
    width: 380px;
    max-width: 90vw;
    overflow: hidden;
    animation: cvSlideUp .25s ease;
}
@keyframes cvSlideUp { from { transform: translateY(20px); opacity: 0; } to { transform: translateY(0); opacity: 1; } }
.cv-batch-move-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 16px 20px;
    font-size: 15px;
    font-weight: 600;
    color: var(--cvf-text, #1e293b);
    border-bottom: 1px solid var(--cvf-border, #e2e8f0);
}
.cv-batch-move-close {
    background: none;
    border: none;
    font-size: 22px;
    color: var(--cvf-text-muted, #8a94a6);
    cursor: pointer;
    line-height: 1;
    padding: 0 4px;
    border-radius: 6px;
    transition: background .15s;
}
.cv-batch-move-close:hover {
    background: var(--cvf-bg, #f1f5f9);
    color: var(--cvf-text, #1e293b);
}
.cv-batch-move-body {
    padding: 16px 20px 20px;
}
.cv-batch-move-info {
    font-size: 13px;
    color: var(--cvf-text-muted, #64748b);
    margin: 0 0 12px;
}
.cv-batch-move-list {
    display: flex;
    flex-direction: column;
    gap: 6px;
    max-height: 260px;
    overflow-y: auto;
}
.cv-batch-folder-btn {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 10px 14px;
    border: 1px solid var(--cvf-border, #e2e8f0);
    border-radius: 10px;
    background: #fff;
    font-size: 13px;
    font-weight: 500;
    color: var(--cvf-text, #1e293b);
    cursor: pointer;
    transition: all .15s;
    text-align: left;
    width: 100%;
}
.cv-batch-folder-btn:hover {
    background: var(--cvf-primary, #1e3a5f);
    color: #fff;
    border-color: var(--cvf-primary, #1e3a5f);
}

/* ── Confirm modal (delete) — v7.16.8 ── */
.cv-confirm-overlay {
    position: fixed;
    inset: 0;
    z-index: var(--cvf-z-modal, 100000); /* fallback: portaled to <body> */
    background: rgba(0,0,0,0.45);
    display: none;
    align-items: center;
    justify-content: center;
    animation: cvFadeIn .2s ease;
}
.cv-confirm-overlay.cv-confirm-open {
    display: flex;
}
.cv-confirm-modal {
    background: #fff;
    border-radius: 14px;
    box-shadow: 0 8px 32px rgba(0,0,0,0.2);
    width: 400px;
    max-width: 90vw;
    overflow: hidden;
    animation: cvSlideUp .25s ease;
}
.cv-confirm-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 16px 20px;
    font-size: 15px;
    font-weight: 600;
}
.cv-confirm-header-danger {
    background: linear-gradient(135deg, #dc2626 0%, #b91c1c 100%);
    color: #fff;
}
.cv-confirm-close {
    background: none;
    border: none;
    font-size: 22px;
    color: rgba(255,255,255,0.8);
    cursor: pointer;
    line-height: 1;
    padding: 0 4px;
    border-radius: 6px;
    transition: color .15s;
}
.cv-confirm-close:hover {
    color: #fff;
}
.cv-confirm-body {
    padding: 28px 24px;
    text-align: center;
}
.cv-confirm-body p {
    font-size: 15px;
    color: #334155;
    margin: 0 0 20px;
    line-height: 1.5;
}
.cv-confirm-actions {
    display: flex;
    gap: 12px;
    justify-content: center;
}
.cv-confirm-btn {
    padding: 10px 22px;
    border-radius: 10px;
    font-size: 14px;
    font-weight: 600;
    cursor: pointer;
    transition: all .15s;
    border: none;
    line-height: 1.4;
}
.cv-confirm-btn-secondary {
    background: #f1f5f9;
    color: #475569;
    border: 1px solid #e2e8f0;
}
.cv-confirm-btn-secondary:hover {
    background: #e2e8f0;
}
.cv-confirm-btn-danger {
    background: #dc2626;
    color: #fff;
}
.cv-confirm-btn-danger:hover {
    background: #b91c1c;
}

/* Filename tooltip — v7.16.4 */
.cv-doc-name-t[title] {
    position: relative;
}

/* Footer */
.cv-doc-footer {
    padding: 10px 12px;
    font-size: 12px;
    color: var(--cvf-text-muted);
    border-top: 1px solid var(--cvf-border);
}

/* Responsive: stack table on mobile */
@media (max-width: 768px) {
    .cv-doc-table thead { display: none; }
    .cv-doc-table,
    .cv-doc-table tbody,
    .cv-doc-table tr,
    .cv-doc-table td {
        display: block;
        width: 100%;
    }
    .cv-doc-table tr.cv-doc-row {
        padding: 12px;
        margin-bottom: 8px;
        border: 1px solid var(--cvf-border);
        border-radius: 10px;
        background: #fff;
    }
    .cv-doc-table td {
        padding: 4px 0;
        border: none;
    }
    .cv-doc-table td:empty { display: none; }
    .cv-doc-from { flex-direction: row; gap: 6px; }
    .cv-doc-actions { justify-content: flex-end; margin-top: 8px; }
    .cv-folder-move-select { max-width: 100%; }
}

/* ═══════════════════════════════════════════
   Media Grid (v8 maquette style)
   ═══════════════════════════════════════════ */
.cv-media-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
    gap: 16px;
    padding-bottom: 20px; /* v11.69.1 — les vignettes ne collent plus le bas du bloc (parité .cv-cards-grid) */
}
/* ─── Media Card: thumbnail-only design ─── */
.cv-media-item {
    border: 1.5px solid var(--cvf-border);
    border-radius: 12px;
    overflow: hidden;
    background: #1a1a2e;
    transition: box-shadow .2s, transform .2s;
    cursor: pointer;
}
.cv-media-item:hover {
    box-shadow: 0 6px 20px rgba(30,58,95,.18);
    transform: translateY(-2px);
}
.cv-media-item.cv-media-admin-reply {
    border-color: var(--cvf-accent);
    box-shadow: 0 0 0 1px rgba(232,145,58,.1), 0 2px 8px rgba(232,145,58,.12);
}
/* ─── Month/Week grouping separators (like admin) ─── */
.cv-vault-wrap .cv-media-month-separator {
    display: flex; align-items: center; gap: 10px;
    grid-column: 1 / -1;
    margin: 14px 0 6px; padding: 0;
    cursor: pointer; user-select: none;
    transition: all .25s ease;
}
.cv-vault-wrap .cv-media-month-separator:first-child { margin-top: 0; }
.cv-vault-wrap .cv-media-month-label {
    font-size: 13px; font-weight: 600; color: #5a6578;
    text-transform: capitalize; white-space: nowrap;
    display: flex; align-items: center; gap: 6px;
}
.cv-vault-wrap .cv-media-month-arrow {
    font-size: 11px; transition: transform .2s; color: var(--cvf-text-muted, #a0aec0);
}
.cv-vault-wrap .cv-media-month-separator.collapsed .cv-media-month-arrow {
    transform: rotate(-90deg);
}
.cv-vault-wrap .cv-media-month-count {
    font-size: 11px; font-weight: 500; color: #b0b8c9; margin-left: 2px;
}
.cv-vault-wrap .cv-media-month-line {
    flex: 1; height: 1px; background: var(--cvf-border, #d8dde6);
}
.cv-vault-wrap .cv-media-month-separator:hover .cv-media-month-label {
    color: var(--cvf-primary, #1e3a5f);
}
.cv-vault-wrap .cv-media-month-separator:hover .cv-media-month-line {
    background: #c0c8d4;
}
/* Collapsed month: card-like prominent style */
.cv-vault-wrap .cv-media-month-separator.collapsed {
    background: linear-gradient(135deg, #f8f5f0, #f3ede4);
    border: 1px solid #e0d5c5;
    border-radius: 8px;
    padding: 10px 14px;
    margin: 16px 0;
}
.cv-vault-wrap .cv-media-month-separator.collapsed .cv-media-month-label {
    font-size: 13.5px; font-weight: 700;
    color: var(--cvf-accent, #e8913a);
}
.cv-vault-wrap .cv-media-month-separator.collapsed .cv-media-month-count {
    background: var(--cvf-accent, #e8913a); color: #fff;
    font-size: 10.5px; font-weight: 700;
    padding: 2px 8px; border-radius: 10px; margin-left: 4px;
}
.cv-vault-wrap .cv-media-month-separator.collapsed .cv-media-month-line {
    display: none;
}
.cv-vault-wrap .cv-media-month-separator.collapsed .cv-media-month-arrow {
    color: var(--cvf-accent, #e8913a);
}
.cv-vault-wrap .cv-media-month-separator.collapsed:hover {
    border-color: var(--cvf-accent, #e8913a);
    box-shadow: 0 2px 12px rgba(232,145,58,.15);
}
/* Week sub-separators */
.cv-vault-wrap .cv-media-week-separator {
    display: flex; align-items: center; gap: 8px;
    grid-column: 1 / -1;
    margin: 6px 0 2px; padding: 0 0 0 4px;
    cursor: pointer; user-select: none;
    transition: all .25s ease;
}
.cv-vault-wrap .cv-media-week-label {
    font-size: 11px; font-weight: 500; color: #b0b8c9;
    white-space: nowrap; letter-spacing: .2px;
    display: flex; align-items: center; gap: 5px;
}
.cv-vault-wrap .cv-media-week-arrow {
    font-size: 10px; transition: transform .2s; color: #c0c8d4;
}
.cv-vault-wrap .cv-media-week-separator.collapsed .cv-media-week-arrow {
    transform: rotate(-90deg);
}
.cv-vault-wrap .cv-media-week-count {
    font-size: 10px; font-weight: 500; color: #c0c8d4;
}
.cv-vault-wrap .cv-media-week-line {
    flex: 1; height: 1px; background: #edf0f5;
}
.cv-vault-wrap .cv-media-week-separator:hover .cv-media-week-label {
    color: #5a6578;
}
/* Collapsed week: card-like prominent style */
.cv-vault-wrap .cv-media-week-separator.collapsed {
    background: linear-gradient(135deg, #f0f4f9, #e8edf4);
    border: 1px solid #d0d8e4;
    border-radius: 8px;
    padding: 10px 14px;
    margin: 12px 0;
}
.cv-vault-wrap .cv-media-week-separator.collapsed .cv-media-week-label {
    font-size: 12px; font-weight: 700;
    color: var(--cvf-primary, #1e3a5f);
}
.cv-vault-wrap .cv-media-week-separator.collapsed .cv-media-week-count {
    background: var(--cvf-primary, #1e3a5f); color: #fff;
    font-size: 10px; font-weight: 700;
    padding: 2px 8px; border-radius: 10px; margin-left: 2px;
}
.cv-vault-wrap .cv-media-week-separator.collapsed .cv-media-week-line {
    display: none;
}
.cv-vault-wrap .cv-media-week-separator.collapsed .cv-media-week-arrow {
    color: var(--cvf-primary, #1e3a5f);
}
.cv-vault-wrap .cv-media-week-separator.collapsed:hover {
    border-color: var(--cvf-primary, #1e3a5f);
    box-shadow: 0 2px 12px rgba(30,58,95,.15);
}
/* Hidden states for accordion collapse */
.cv-vault-wrap .cv-media-item.cv-month-hidden,
.cv-vault-wrap .cv-media-week-separator.cv-month-hidden {
    display: none !important;
}
.cv-vault-wrap .cv-media-item.cv-week-hidden {
    display: none !important;
}
.cv-vault-wrap .cv-media-item.cv-week-paginated {
    display: none !important;
}
.cv-vault-wrap .cv-week-load-more {
    grid-column: 1 / -1;
    text-align: center;
    padding: 8px 0;
}
.cv-vault-wrap .cv-week-load-more.cv-month-hidden,
.cv-vault-wrap .cv-week-load-more.cv-week-hidden {
    display: none !important;
}
.cv-media-preview,
.cv-media-card-thumb {
    position: relative;
    height: 180px;
    background: linear-gradient(135deg, #1a2a4a 0%, #2a4a7a 100%);
    background-size: cover;
    background-position: center;
    display: flex;
    align-items: center;
    justify-content: center;
}
/* Reply badge on card */
.cv-media-reply-badge {
    position: absolute;
    bottom: 8px;
    left: 8px;
    display: inline-flex;
    align-items: center;
    gap: 3px;
    padding: 3px 10px;
    border-radius: 6px;
    background: #fef3e2;
    color: #b06e1a;
    font-size: 10px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .4px;
    box-shadow: 0 1px 4px rgba(0,0,0,.15);
}
.cv-media-reply-badge .dashicons {
    font-size: 11px; width: 11px; height: 11px; line-height: 11px;
}
/* Comment badge on card */
.cv-media-comment-badge {
    position: absolute;
    bottom: 8px;
    right: 8px;
    padding: 3px 8px;
    border-radius: 6px;
    background: rgba(0,0,0,.55);
    color: #fff;
    font-size: 11px;
    font-weight: 600;
}
.cv-media-type-badge {
    position: absolute;
    top: 8px;
    left: 8px;
    padding: 3px 10px;
    border-radius: 6px;
    background: rgba(0,0,0,.55);
    color: #fff;
    font-size: 10px;
    font-weight: 600;
    letter-spacing: .3px;
}
/* ─── Media card info block (below thumbnail) ─── */
.cv-media-card-info {
    padding: 10px 14px;
    background: #161b22;
    border-top: 1px solid rgba(255,255,255,.06);
}
.cv-media-card-title {
    font-size: 13px;
    font-weight: 600;
    color: #e6edf3;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    margin-bottom: 3px;
}
.cv-media-card-meta {
    font-size: 11px;
    color: #8b949e;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.cv-media-card-modified {
    color: #e8913a;
}
/* Cards without thumbnail get a subtle gradient background */
.cv-media-card-thumb:not([style*="background-image"]) {
    background: linear-gradient(135deg, #1a2332 0%, #2d3748 100%);
}
.cv-media-play {
    width: 48px;
    height: 48px;
    border-radius: 50%;
    background: rgba(255,255,255,.9);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 20px;
    color: var(--cvf-primary);
    cursor: pointer;
    transition: transform .2s;
}
/* v11.78.16 — triangle « lecture » en pur CSS (l'ancien glyphe ▶ devenait une image emoji
   cassée : le SVG twemoji 25b6 n'est pas bundlé et le build-emoji le prune). */
.cv-media-play::after {
    content: "";
    display: block;
    width: 0;
    height: 0;
    border-style: solid;
    border-width: 9px 0 9px 15px;
    border-color: transparent transparent transparent var(--cvf-primary);
    margin-left: 4px;
}
.cv-media-play:hover { transform: scale(1.1); }
/* Shortcode trigger (lightbox opens on click) */
/* Shortcode lightbox */
/* Modal portal fix: ensure modals break out of transformed parents */
.cv-sc-lightbox {
    position: fixed !important;
    top: 0 !important;
    left: 0 !important;
    right: 0 !important;
    bottom: 0 !important;
    z-index: var(--cvf-z-overlay);
    display: flex;
    align-items: center;
    justify-content: center;
    transform: none !important;
}
.cv-sc-lightbox-overlay {
    position: absolute; top: 0; left: 0; right: 0; bottom: 0;
    background: rgba(0,0,0,.85); cursor: pointer;
}
.cv-sc-lightbox-content {
    position: relative; z-index: 2;
    width: 90%; max-width: 1100px; max-height: 92vh;
    overflow: auto; border-radius: 14px; background: #0d1117;
    padding: 20px;
}
.cv-sc-lightbox-close {
    position: absolute; top: 10px; right: 14px; z-index: 3;
    background: none; border: none; color: #fff; font-size: 28px; cursor: pointer;
}
.cv-sc-lightbox-player video,
.cv-sc-lightbox-player iframe,
.cv-sc-lightbox-player .fp-media-block {
    width: 100% !important; max-width: 100% !important;
    border-radius: 10px;
}
.cv-sc-lightbox-player video {
    max-height: 80vh;
    display: block;
}
.cv-media-lock {
    position: absolute;
    top: 8px;
    right: 8px;
    font-size: 14px;
}
/* ─── Media Fullscreen Popup (lightbox + side comments) ─── */
.cv-media-popup {
    position: fixed;
    inset: 0;
    z-index: var(--cvf-z-modal, 100000); /* fallback: popup is portaled to <body> */
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 24px;
}
.cv-media-popup-overlay {
    position: absolute;
    inset: 0;
    background: rgba(0,0,0,.92);
    backdrop-filter: blur(8px);
    cursor: pointer;
}
.cv-media-popup-container {
    position: relative;
    z-index: 2;
    display: flex;
    width: 96%;
    max-width: 1300px;
    max-height: 92vh;
    background: #fff;
    border-radius: 14px;
    overflow: hidden;
    box-shadow: 0 20px 60px rgba(0,0,0,.4);
}
/* Audio mode: same height as video, slightly narrower to leave room for comments sidebar */
.cv-media-popup-container.cv-popup-mode-audio {
    max-width: 1100px;
    max-height: 92vh;
}
/* ─── Main content (left) ─── */
.cv-media-popup-main {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-width: 0;
    background: #0d1117;
}
.cv-media-popup-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 14px 20px;
    background: #161b22;
    border-bottom: 1px solid #30363d;
    gap: 14px;
}
.cv-media-popup-header-left {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 2px;
    overflow: hidden;
}
.cv-media-popup-title {
    font-size: 15px;
    font-weight: 600;
    color: #fff;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.cv-media-popup-meta {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 12px;
    color: #8b949e;
    white-space: nowrap;
    flex-wrap: wrap;
}
.cv-popup-meta-modified {
    color: #e8913a;
}
.cv-media-popup-header-right {
    display: flex;
    gap: 6px;
    align-items: center;
    flex-shrink: 0;
}
.cv-media-popup-header-right button.cv-media-popup-btn-edit,
.cv-media-popup-header-right button.cv-media-popup-btn-archive,
.cv-media-popup-header-right button.cv-media-popup-btn-delete {
    background: rgba(255,255,255,.08);
    border: 1px solid rgba(255,255,255,.15);
    color: #ccc;
    width: 34px;
    height: 34px;
    border-radius: 8px;
    cursor: pointer;
    font-size: 15px;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: all .15s;
}
.cv-media-popup-header-right button.cv-media-popup-btn-edit:hover,
.cv-media-popup-header-right button.cv-media-popup-btn-archive:hover,
.cv-media-popup-header-right button.cv-media-popup-btn-delete:hover {
    background: rgba(255,255,255,.15);
    color: #fff;
}
/* Comment toggle button in header */
.cv-media-popup-btn-comments {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 7px 14px;
    border: 1.5px solid rgba(255,255,255,.15);
    border-radius: 8px;
    background: rgba(255,255,255,.06);
    color: #ccc;
    font-size: 12px;
    font-weight: 500;
    cursor: pointer;
    transition: all .15s;
    white-space: nowrap;
}
.cv-media-popup-btn-comments:hover {
    background: rgba(255,255,255,.12);
    color: #fff;
    border-color: rgba(255,255,255,.3);
}
.cv-media-popup-btn-comments.cv-btn-active {
    background: var(--cvf-primary, #1e3a5f);
    border-color: var(--cvf-primary, #1e3a5f);
    color: #fff;
}
.cv-media-popup-btn-comments .dashicons {
    font-size: 15px;
    width: 15px;
    height: 15px;
    line-height: 15px;
}
/* Comments panel close button */
.cv-media-popup-comments-close {
    background: none;
    border: none;
    font-size: 20px;
    color: var(--cvf-text-muted);
    cursor: pointer;
    padding: 0 4px;
    line-height: 1;
}
.cv-media-popup-comments-close:hover {
    color: var(--cvf-text);
}
.cv-media-popup-player {
    flex: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 20px;
    overflow: auto;
    min-height: 300px;
}
.cv-media-popup-player video,
.cv-media-popup-player audio {
    max-width: 100%;
    max-height: 75vh;
    border-radius: 10px;
}
.cv-media-popup-player iframe {
    width: 100%;
    max-width: 100%;
    border: none;
    border-radius: 10px;
}
.cv-media-popup-player .cv-popup-iframe-wrap {
    position: relative;
    width: 100%;
    padding-bottom: 56.25%;
    height: 0;
}
.cv-media-popup-player .cv-popup-iframe-wrap iframe {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
}
.cv-media-popup-player .cv-popup-audio-wrap {
    width: 100%;
    max-width: 600px;
    padding: 40px;
    background: rgba(255,255,255,.05);
    border-radius: 14px;
}
.cv-media-popup-player .cv-popup-audio-wrap audio {
    width: 100%;
}
.cv-media-popup-player .cv-popup-audio-wrap iframe {
    width: 100% !important;
    min-height: 175px;
    border: none;
    border-radius: 12px;
    box-shadow: 0 8px 40px rgba(0,0,0,.4);
    display: block;
}
/* ─── Comments panel (right sidebar) ─── */
.cv-media-popup-comments {
    width: 340px;
    min-width: 340px;
    background: #fff;
    display: flex;
    flex-direction: column;
    border-left: 1px solid var(--cvf-border);
}
.cv-media-popup-comments.cv-panel-hidden {
    display: none;
}
.cv-media-popup-comments-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 14px 16px;
    border-bottom: 1px solid var(--cvf-border);
}
.cv-media-popup-comments-header h4 {
    margin: 0;
    font-size: 14px;
    font-weight: 600;
    color: var(--cvf-text);
}
.cv-media-popup-comments-list {
    flex: 1;
    overflow-y: auto;
    padding: 12px;
}
.cv-media-popup-comments-form {
    padding: 12px;
    border-top: 1px solid var(--cvf-border);
}
.cv-media-popup-comments-form textarea {
    width: 100%;
    border: 1.5px solid var(--cvf-border);
    border-radius: 8px;
    padding: 8px 12px;
    font-size: 13px;
    font-family: inherit;
    resize: none;
    min-height: 60px;
    outline: none;
    transition: border-color .2s;
    box-sizing: border-box;
}
.cv-media-popup-comments-form textarea:focus {
    border-color: var(--cvf-primary);
}
/* Comment input row: textarea + send button inline */
.cv-popup-comment-input-row {
    display: flex;
    align-items: flex-end;
    gap: 8px;
}
.cv-popup-comment-input-row textarea {
    flex: 1;
}
/* Media options row below textarea */
.cv-popup-comment-media-row {
    display: flex;
    align-items: center;
    gap: 6px;
    margin-top: 8px;
    flex-wrap: wrap;
}
.cv-popup-media-row-label {
    font-size: 11px;
    color: var(--cvf-text-muted);
    font-weight: 500;
    white-space: nowrap;
}
/* v11.81.0 — recorder unifié cvfIRec relogé dans la popup média (3 boutons sur la largeur) */
.cv-popup-comment-media-row { flex-direction: column; align-items: stretch; }
.cv-popup-ireply-modes-host { width: 100%; }
.cv-popup-ireply-modes-host .cv-ireply-modes { margin-bottom: 0; }
.cv-popup-ireply-modes-host .cv-ireply-mode-btn { flex: 1 1 0; justify-content: center; }
.cv-popup-ireply-rec-host { margin-top: 8px; }
.cv-popup-ireply-rec-host:empty { display: none; margin-top: 0; }
.cv-popup-ireply-rec-host .cv-ireply-rec { margin-bottom: 0; }
.cv-popup-record-trigger {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 6px 10px;
    border: 1.5px solid var(--cvf-border);
    border-radius: 8px;
    background: var(--cvf-card, #fff);
    color: var(--cvf-text-muted);
    cursor: pointer;
    transition: all .15s;
    font-size: 11px;
    font-weight: 600;
    font-family: inherit;
    white-space: nowrap;
}
.cv-popup-record-trigger:hover {
    border-color: var(--cvf-primary);
    color: var(--cvf-primary);
    background: #f0f7ff;
}
.cv-popup-record-trigger[data-rec-mode="video"]:hover { border-color: #e53935; color: #e53935; background: #fef2f2; }
.cv-popup-record-trigger[data-rec-mode="audio"]:hover { border-color: var(--cvf-accent, #e8913a); color: var(--cvf-accent, #e8913a); background: #fff8f0; }
.cv-popup-record-trigger[data-rec-mode="screen"]:hover { border-color: var(--cvf-success, #27ae60); color: var(--cvf-success, #27ae60); background: #f0fdf4; }
.cv-popup-record-trigger .dashicons {
    font-size: 14px;
    width: 14px;
    height: 14px;
}
.cv-popup-send-text-btn {
    width: 36px;
    height: 36px;
    min-width: 36px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--cvf-primary);
    color: #fff;
    border: none;
    border-radius: 50%;
    font-size: 16px;
    cursor: pointer;
    transition: background .15s, transform .15s;
    flex-shrink: 0;
}
.cv-popup-send-text-btn:hover {
    background: #152d4a;
    transform: scale(1.05);
}
/* ─── Inline recording panel ─── */
.cv-popup-record-panel {
    padding: 12px;
    border-top: 1px solid var(--cvf-border);
    background: var(--cvf-bg-alt, #f8fafc);
}
.cv-popup-record-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 10px;
    font-size: 13px;
    font-weight: 600;
    color: var(--cvf-text);
}
.cv-popup-record-close {
    background: none;
    border: none;
    font-size: 18px;
    cursor: pointer;
    color: var(--cvf-text-muted);
}
.cv-popup-record-close:hover { color: var(--cvf-text); }
.cv-popup-record-modes {
    display: flex;
    gap: 6px;
    margin-bottom: 10px;
}
.cv-popup-rec-mode {
    flex: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 5px;
    padding: 8px 6px;
    border: 1.5px solid var(--cvf-border);
    border-radius: 8px;
    background: #fff;
    font-size: 12px;
    font-weight: 500;
    color: var(--cvf-text);
    cursor: pointer;
    transition: all .15s;
}
.cv-popup-rec-mode:hover {
    border-color: var(--cvf-primary);
    color: var(--cvf-primary);
}
.cv-popup-rec-mode.active {
    background: var(--cvf-primary);
    border-color: var(--cvf-primary);
    color: #fff;
}
.cv-popup-rec-mode .dashicons {
    font-size: 15px;
    width: 15px;
    height: 15px;
}
.cv-popup-rec-preview {
    border-radius: 10px;
    overflow: hidden;
    background: #0d1117;
    margin-bottom: 8px;
}
.cv-popup-rec-video {
    width: 100%;
    max-height: 200px;
    display: block;
}
.cv-popup-rec-audio-wave {
    display: flex;
    align-items: center;
    justify-content: center;
    height: 80px;
}
.cv-popup-rec-audio-wave .cv-popup-audio-bars {
    height: 60px;
}
.cv-popup-rec-audio-wave .cv-popup-audio-bars span {
    width: 4px;
    animation-name: cvAudioBar;
}
.cv-popup-rec-playback {
    margin-bottom: 8px;
}
.cv-popup-rec-playback video {
    width: 100%;
    max-height: 200px;
    border-radius: 10px;
    background: #000;
}
.cv-popup-rec-timer {
    text-align: center;
    font-size: 14px;
    font-weight: 600;
    color: #e53e3e;
    margin-bottom: 8px;
}
.cv-popup-rec-controls {
    display: flex;
    gap: 8px;
    justify-content: center;
}
.cv-popup-rec-controls button {
    padding: 7px 16px;
    border-radius: 8px;
    font-size: 12px;
    font-weight: 600;
    cursor: pointer;
    transition: all .15s;
}
.cv-popup-rec-start {
    background: #e53e3e;
    color: #fff;
    border: none;
}
.cv-popup-rec-start:hover { opacity: .85; }
.cv-popup-rec-stop {
    background: #e53e3e;
    color: #fff;
    border: none;
    animation: cvRecPulse 1s infinite;
}
@keyframes cvRecPulse {
    0%, 100% { opacity: 1; }
    50% { opacity: .6; }
}
.cv-popup-rec-retry {
    background: #fff;
    color: var(--cvf-text);
    border: 1.5px solid var(--cvf-border);
}
.cv-popup-rec-retry:hover { border-color: var(--cvf-primary); }
.cv-popup-rec-send {
    background: var(--cvf-primary);
    color: #fff;
    border: none;
}
.cv-popup-rec-send:hover { opacity: .85; }
.cv-popup-rec-send:disabled { opacity: .5; cursor: not-allowed; }
/* Comment item */
.cv-media-popup-comment {
    padding: 10px 0;
    border-bottom: 1px solid var(--cvf-border);
}
.cv-media-popup-comment:last-child {
    border-bottom: none;
}
/* Admin comments in popup — orange accent */
.cv-media-popup-comment.cv-popup-comment-admin {
    border-left: 3px solid var(--cvf-accent, #e8913a);
    background: linear-gradient(90deg, #fef8f0 0%, transparent 40%);
    padding: 10px 10px;
    margin: 4px 0;
    border-radius: 0 6px 6px 0;
}
.cv-popup-comment-admin-badge {
    display: inline-flex; align-items: center; gap: 2px;
    font-size: 9px; font-weight: 700; text-transform: uppercase; letter-spacing: .4px;
    color: #b06e1a; background: #fef3e2; padding: 1px 6px; border-radius: 3px;
    margin-left: 6px; vertical-align: middle;
}
.cv-popup-comment-admin-badge .dashicons {
    font-size: 10px; width: 10px; height: 10px; line-height: 10px;
}
/* FC comments in media popup — indigo accent */
.cv-media-popup-comment.cv-popup-comment-fc {
    border-left: 3px solid #6366f1;
    background: linear-gradient(90deg, #f0f0ff 0%, transparent 40%);
    padding-left: 12px;
    margin-left: -4px;
    border-radius: 0 6px 6px 0;
}
.cv-media-popup-comment-author {
    font-size: 13px;
    font-weight: 600;
    color: var(--cvf-text);
}
/* Profile link on author names — subtle, non-intrusive */
a.cv-comment-profile-link {
    color: var(--cvf-primary-light, #2a5298);
    text-decoration: none;
    transition: color .15s ease, opacity .15s ease;
    border-bottom: 1px dotted transparent;
}
a.cv-comment-profile-link:hover {
    color: var(--cvf-accent, #e8913a);
    border-bottom-color: var(--cvf-accent, #e8913a);
    opacity: .9;
}
.cv-media-popup-comment-date {
    font-size: 11px;
    color: var(--cvf-text-muted);
    margin-left: 8px;
}
.cv-media-popup-comment-body {
    font-size: 13px;
    color: var(--cvf-text);
    margin-top: 4px;
    line-height: 1.5;
}
/* ── Mention links inside comment body (FC rendered HTML) ── */
.cv-media-popup-comment-body a {
    color: var(--cvf-primary-light, #2a5298);
    text-decoration: none;
    font-weight: 600;
    border-bottom: 1px dotted rgba(42, 82, 152, .3);
    transition: color .15s ease, border-color .15s ease;
}
.cv-media-popup-comment-body a:hover {
    color: var(--cvf-accent, #e8913a);
    border-bottom-color: var(--cvf-accent, #e8913a);
}
/* ─── Audio visualizer animation inside popup ─── */
.cv-popup-audio-visualizer {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    flex: 1;
    width: 100%;
    height: 100%;
    min-height: 400px;
    padding: 60px 40px;
    gap: 48px;
}
.cv-popup-audio-bars {
    display: flex;
    align-items: flex-end;
    justify-content: center;
    gap: 6px;
    height: 280px;
}
.cv-popup-audio-bars span {
    display: block;
    width: 10px;
    border-radius: 5px;
    background: linear-gradient(180deg, var(--cvf-accent, #e8913a) 0%, var(--cvf-primary, #1e3a5f) 100%);
    opacity: .55;
    /* v20.22.506 — Statique par défaut : les vagues ne bougent QUE pendant la lecture réelle
       (classe .cv-audio-playing posée/retirée par les événements play/pause/ended de l'audio). */
    animation: none;
}
.cv-popup-audio-visualizer.cv-audio-playing .cv-popup-audio-bars span {
    opacity: .7;
    animation: cvAudioBar 1.2s ease-in-out infinite;
}
.cv-popup-audio-bars span:nth-child(1)  { height: 46px;  animation-delay: 0s; }
.cv-popup-audio-bars span:nth-child(2)  { height: 92px;  animation-delay: .1s; }
.cv-popup-audio-bars span:nth-child(3)  { height: 140px; animation-delay: .15s; }
.cv-popup-audio-bars span:nth-child(4)  { height: 186px; animation-delay: .2s; }
.cv-popup-audio-bars span:nth-child(5)  { height: 232px; animation-delay: .25s; }
.cv-popup-audio-bars span:nth-child(6)  { height: 210px; animation-delay: .3s; }
.cv-popup-audio-bars span:nth-child(7)  { height: 256px; animation-delay: .35s; }
.cv-popup-audio-bars span:nth-child(8)  { height: 162px; animation-delay: .4s; }
.cv-popup-audio-bars span:nth-child(9)  { height: 232px; animation-delay: .45s; }
.cv-popup-audio-bars span:nth-child(10) { height: 116px; animation-delay: .5s; }
.cv-popup-audio-bars span:nth-child(11) { height: 186px; animation-delay: .55s; }
.cv-popup-audio-bars span:nth-child(12) { height: 256px; animation-delay: .6s; }
.cv-popup-audio-bars span:nth-child(13) { height: 140px; animation-delay: .65s; }
.cv-popup-audio-bars span:nth-child(14) { height: 210px; animation-delay: .7s; }
.cv-popup-audio-bars span:nth-child(15) { height: 92px;  animation-delay: .75s; }
.cv-popup-audio-bars span:nth-child(16) { height: 162px; animation-delay: .8s; }
.cv-popup-audio-bars span:nth-child(17) { height: 232px; animation-delay: .85s; }
.cv-popup-audio-bars span:nth-child(18) { height: 116px; animation-delay: .9s; }
.cv-popup-audio-bars span:nth-child(19) { height: 70px;  animation-delay: .95s; }
.cv-popup-audio-bars span:nth-child(20) { height: 46px;  animation-delay: 1s; }
@keyframes cvAudioBar {
    0%, 100% { transform: scaleY(.3); opacity: .4; }
    50% { transform: scaleY(1); opacity: .9; }
}
.cv-popup-audio-visualizer audio {
    width: 100%;
    max-width: 90%;
}
/* Shortcode wrap inside popup */
.cv-media-popup-player .cv-popup-shortcode-wrap {
    width: 100%;
    max-width: 100%;
}
.cv-media-popup-player .cv-popup-shortcode-wrap video,
.cv-media-popup-player .cv-popup-shortcode-wrap .fluent-player {
    max-width: 100%;
    max-height: 75vh;
    border-radius: 10px;
}
/* Reply row: button + inline choice menu */
.cv-popup-reply-row {
    margin-top: 6px;
}
.cv-popup-comment-reply-btn {
    background: none; border: none;
    color: var(--cvf-primary, #1e3a5f);
    font-size: 12px; cursor: pointer;
    padding: 0; font-family: inherit;
    font-weight: 600;
    transition: opacity .15s;
}
.cv-popup-comment-reply-btn:hover { opacity: .7; }
/* Inline reply choice menu */
.cv-popup-reply-choice {
    margin-top: 8px;
    padding: 10px 12px;
    background: var(--cvf-bg-alt, #f8fafc);
    border: 1.5px solid var(--cvf-border);
    border-radius: 10px;
    display: flex;
    align-items: center;
    gap: 6px;
    flex-wrap: wrap;
}
.cv-reply-choice-label {
    font-size: 11px;
    color: var(--cvf-text-muted);
    font-weight: 600;
    margin-right: 2px;
    white-space: nowrap;
}
.cv-reply-choice-btn {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 5px 10px;
    border: 1.5px solid var(--cvf-border);
    border-radius: 8px;
    background: #fff;
    color: var(--cvf-text);
    cursor: pointer;
    font-size: 11px;
    font-weight: 600;
    font-family: inherit;
    transition: all .15s;
    white-space: nowrap;
}
.cv-reply-choice-btn:hover {
    border-color: var(--cvf-primary);
    color: var(--cvf-primary);
    background: #f0f7ff;
    transform: translateY(-1px);
}
.cv-reply-choice-btn[data-choice="video"]:hover { border-color: #e53935; color: #e53935; background: #fef2f2; }
.cv-reply-choice-btn[data-choice="audio"]:hover { border-color: var(--cvf-accent, #e8913a); color: var(--cvf-accent, #e8913a); background: #fff8f0; }
.cv-reply-choice-btn[data-choice="screen"]:hover { border-color: var(--cvf-success, #27ae60); color: var(--cvf-success, #27ae60); background: #f0fdf4; }
.cv-reply-choice-btn .dashicons {
    font-size: 14px; width: 14px; height: 14px;
}
/* Reply cancel button */
.cv-popup-reply-cancel {
    background: none; border: none;
    cursor: pointer; font-size: 14px;
    color: #767676; line-height: 1;
    padding: 0 2px;
}
.cv-popup-reply-cancel:hover { color: var(--cvf-danger, #e53935); }
/* Reply indicator */
.cv-popup-reply-indicator {
    padding: 6px 10px;
    margin-bottom: 6px;
    background: var(--cvf-bg-alt, #f0f4f8);
    border-radius: 6px;
    font-size: 12px;
    color: var(--cvf-text-muted, #64748b);
    display: flex;
    align-items: center;
    gap: 6px;
}
/* Comment reply thread indentation */
.cv-media-popup-comments-list .cv-comment-replies {
    padding-left: 16px;
    border-left: 2px solid var(--cvf-border, #e2e8f0);
    margin-left: 8px;
}
/* ─── Close button ─── */
.cv-media-popup-close {
    position: absolute;
    top: -48px;
    right: 0;
    background: none;
    border: none;
    color: #fff;
    font-size: 32px;
    cursor: pointer;
    z-index: 3;
    transition: transform .15s;
}
.cv-media-popup-close:hover {
    transform: scale(1.2);
}
/* ─── Responsive ─── */
@media (max-width: 800px) {
    .cv-media-popup-container {
        flex-direction: column;
        max-height: 96vh;
    }
    .cv-media-popup-comments {
        width: 100%;
        min-width: 100%;
        max-height: 40vh;
    }
    .cv-media-popup-player {
        min-height: 200px;
    }
}
@media (max-width: 600px) {
    .cv-media-grid { grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); }
    .cv-media-preview, .cv-media-card-thumb { height: 120px; }
}

/* ═══════════════════════════════════════════
   Notepad Filters (v8 maquette)
   ═══════════════════════════════════════════ */
.cv-notepad-filters {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-bottom: 14px;
    flex-wrap: wrap;
}
.cv-notepad-search {
    padding: 8px 14px;
    border: 1px solid var(--cvf-border);
    border-radius: 8px;
    font-size: 13px;
    width: 240px;
    max-width: 100%;
    outline: none;
    transition: border-color .2s;
}
.cv-notepad-search:focus { border-color: var(--cvf-primary); }
@media (max-width: 600px) {
    .cv-notepad-filters { flex-direction: column; align-items: stretch; }
    .cv-notepad-search { width: 100%; }
}

/* ═══════════════════════════════════════
   PREVIEW COMMENTS PANEL & RECORDER (Frontend)
   ═══════════════════════════════════════ */
.cv-preview-modal.cv-preview-with-comments {
    max-width: 1200px;
}
.cv-preview-header-actions {
    display: flex; align-items: center; gap: 10px;
}
/* v11.82.4 — lien « Voir le document d'origine » (échange média) à côté du titre */
.cv-preview-source-link {
    display: inline-flex; align-items: center; gap: 6px;
    margin-left: 14px; margin-right: auto;
    padding: 6px 12px; border: 1px solid var(--cvf-border, #e1e5eb); border-radius: 7px;
    background: transparent; color: var(--cvf-primary, #1e3a5f);
    font-size: 12px; font-weight: 600; cursor: pointer; white-space: nowrap;
    font-family: inherit; transition: all .15s;
}
.cv-preview-source-link:hover { background: var(--cvf-primary, #1e3a5f); color: #fff; border-color: var(--cvf-primary, #1e3a5f); }
.cv-preview-source-link .dashicons { font-size: 15px; width: 15px; height: 15px; }
.cv-preview-source-link-doc { opacity: .7; font-weight: 500; max-width: 220px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cv-preview-btn-reply {
    display: inline-flex; align-items: center; gap: 6px;
    padding: 7px 16px; border: 1.5px solid var(--cvf-primary); border-radius: 8px;
    background: transparent; color: var(--cvf-primary);
    font-size: 13px; font-weight: 600; cursor: pointer;
    transition: all 0.15s; white-space: nowrap;
}
.cv-preview-btn-reply:hover { background: var(--cvf-primary); color: #fff; }
.cv-preview-btn-reply .dashicons { font-size: 16px; width: 16px; height: 16px; }
.cv-preview-btn-edit,
.cv-preview-btn-download,
.cv-preview-btn-archive {
    display: inline-flex; align-items: center; justify-content: center;
    width: 36px; height: 36px; border: 1.5px solid var(--cvf-border); border-radius: 8px;
    background: transparent; color: var(--cvf-text-secondary);
    font-size: 16px; cursor: pointer; transition: all 0.15s;
    padding: 0;
}
.cv-preview-btn-edit:hover,
.cv-preview-btn-download:hover { background: var(--cvf-primary); color: #fff; border-color: var(--cvf-primary); }
.cv-preview-btn-archive:hover { background: #f3f4f6; }
.cv-preview-btn-edit .dashicons,
.cv-preview-btn-download .dashicons { font-size: 18px; width: 18px; height: 18px; }
/* Hide edit button when archived */
.cv-preview-archived .cv-preview-btn-edit { display: none !important; }

.cv-front-preview-content {
    display: flex; flex: 1; overflow: hidden; min-height: 0;
}
.cv-front-preview-content .cv-preview-body {
    flex: 1; min-width: 0;
}

.cv-preview-comments-panel {
    width: 320px; min-width: 320px;
    border-left: 1px solid var(--cvf-border);
    display: flex; flex-direction: column;
    background: var(--cvf-bg);
}
.cv-preview-comments-panel.cv-panel-hidden { display: none; }
.cv-preview-comments-header {
    display: flex; align-items: center; justify-content: space-between;
    padding: 12px 16px; border-bottom: 1px solid var(--cvf-border);
}
.cv-preview-comments-header h4 { margin: 0; font-size: 14px; font-weight: 600; color: var(--cvf-text); }
.cv-preview-comments-count {
    display: inline-flex; align-items: center; justify-content: center;
    background: var(--cvf-primary); color: #fff; font-size: 11px; font-weight: 700;
    min-width: 22px; height: 22px; border-radius: 11px; padding: 0 6px;
}
.cv-preview-comments-list { flex: 1; overflow-y: auto; padding: 12px; }
.cv-preview-comments-empty { text-align: center; padding: 30px 16px; color: var(--cvf-text-muted); font-size: 13px; }

.cv-preview-comment {
    margin-bottom: 12px; padding: 10px 12px; border-radius: 10px;
    background: var(--cvf-card); border: 1px solid var(--cvf-border);
}
.cv-preview-comment.cv-comment-admin { border-left: 3px solid var(--cvf-accent, #e8913a); background: linear-gradient(90deg, #fef8f0 0%, transparent 40%); }
.cv-preview-comment.cv-comment-own { border-left: 3px solid #28a745; }
.cv-preview-comment-meta {
    display: flex; align-items: center; justify-content: space-between; margin-bottom: 6px;
}
.cv-preview-comment-author { font-weight: 600; font-size: 12px; color: var(--cvf-text); }
.cv-preview-comment-date { font-size: 11px; color: var(--cvf-text-muted); }
.cv-preview-comment-content { font-size: 13px; color: var(--cvf-text); line-height: 1.5; }
.cv-preview-comment-media { margin-top: 8px; border-radius: 8px; overflow: hidden; }
.cv-preview-comment-media video, .cv-preview-comment-media audio { width: 100%; max-height: 200px; border-radius: 8px; }
.cv-comment-media { margin-top: 6px; border-radius: 8px; overflow: hidden; }
.cv-comment-media video, .cv-comment-media audio { width: 100%; max-height: 200px; border-radius: 8px; display: block; }
/* v11.78.15 — l'<audio> n'a pas de hauteur intrinsèque (contrairement à <video>) et s'écrasait
   à 0px dans les commentaires → lecteur invisible. Hauteur explicite pour TOUTES les variantes. */
.cv-preview-comment-media audio,
.cv-comment-media audio,
.cv-lb-comment-media audio,
.cv-media-popup-comments-list audio { height: 54px; }
.cv-preview-comment-type-badge {
    display: inline-flex; align-items: center; gap: 4px;
    font-size: 10px; padding: 2px 8px; border-radius: 4px;
    background: var(--cvf-bg); color: var(--cvf-text-muted); font-weight: 500; margin-bottom: 4px;
}
.cv-preview-comment-type-badge.cv-badge-video { background: #e8f0fe; color: #1967d2; }
.cv-preview-comment-type-badge.cv-badge-audio { background: #fef3e0; color: #e67700; }
.cv-preview-comment-type-badge.cv-badge-screen { background: #e6f9e6; color: #2e7d32; }
.cv-preview-comment-delete {
    background: none; border: none; cursor: pointer;
    color: var(--cvf-text-muted); font-size: 14px; padding: 0 2px; transition: color 0.15s;
}
.cv-preview-comment-delete:hover { color: var(--cvf-danger); }

/* ─── Threaded replies ─── */
.cv-comment-replies {
    margin-left: 20px;
    border-left: 2px solid var(--cvf-primary, #1e3a5f);
    padding-left: 12px;
}
.cv-comment-reply {
    background: #f8f9fb !important;
}
.cv-comment-reply-btn {
    display: inline-block;
    background: none;
    border: none;
    color: var(--cvf-primary, #1e3a5f);
    font-size: 12px;
    cursor: pointer;
    padding: 4px 0;
    margin-top: 4px;
    opacity: 0.7;
    transition: opacity 0.15s;
}
.cv-comment-reply-btn:hover {
    opacity: 1;
    text-decoration: underline;
}
.cv-reply-indicator {
    background: #eef3ff;
    border-left: 3px solid var(--cvf-primary, #1e3a5f);
    padding: 6px 10px;
    font-size: 12px;
    color: #555;
    margin-bottom: 8px;
    border-radius: 0 6px 6px 0;
    display: flex;
    align-items: center;
    justify-content: space-between;
}
.cv-reply-indicator strong {
    color: var(--cvf-primary, #1e3a5f);
}
.cv-reply-cancel {
    background: none;
    border: none;
    cursor: pointer;
    font-size: 16px;
    color: #767676;
    padding: 0 2px;
    line-height: 1;
}

.cv-reply-cancel:hover {
    color: #e53e3e;
}

.cv-preview-reply-form {
    border-top: 1px solid var(--cvf-border); padding: 12px;
    background: var(--cvf-card); flex-shrink: 0;
}
.cv-preview-reply-form textarea {
    width: 100%; border: 1.5px solid var(--cvf-border); border-radius: 8px;
    padding: 8px 12px; font-size: 13px; resize: none; box-sizing: border-box; font-family: inherit;
}
.cv-preview-reply-form textarea:focus { outline: none; border-color: var(--cvf-primary); }
.cv-preview-reply-actions { display: flex; align-items: center; justify-content: space-between; margin-top: 8px; }
.cv-preview-reply-record {
    display: inline-flex; align-items: center; justify-content: center;
    width: 36px; height: 36px; border: 1.5px solid var(--cvf-border); border-radius: 50%;
    background: var(--cvf-card); color: var(--cvf-text-muted); cursor: pointer; transition: all 0.15s;
}
.cv-preview-reply-record:hover { border-color: var(--cvf-primary); color: var(--cvf-primary); }
.cv-preview-reply-record .dashicons { font-size: 18px; width: 18px; height: 18px; }
.cv-preview-reply-send {
    padding: 7px 20px; border: none; border-radius: 8px;
    background: var(--cvf-primary); color: #fff; font-size: 13px; font-weight: 600;
    cursor: pointer; transition: background 0.15s;
}
.cv-preview-reply-send:hover { background: #152d4a; }
.cv-preview-reply-send:disabled { opacity: 0.5; cursor: not-allowed; }

/* ─── Inline reply recorder (sidebar, v11.78.12) — 3 boutons + enregistrement sans pop-up ─── */
.cv-ireply-modes { display: flex; gap: 8px; margin-bottom: 10px; }
.cv-ireply-mode-btn {
    flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 5px;
    padding: 10px 4px; border: 1.5px solid var(--cvf-border); border-radius: 10px;
    background: var(--cvf-bg); color: var(--cvf-text); font-size: 12px; font-weight: 600;
    cursor: pointer; transition: all 0.15s; line-height: 1.1;
}
.cv-ireply-mode-btn:hover { border-color: var(--cvf-primary); background: var(--cvf-card); color: var(--cvf-primary); transform: translateY(-1px); }
.cv-ireply-mode-btn.active { border-color: var(--cvf-primary); background: var(--cvf-card); color: var(--cvf-primary); }
.cv-ireply-mode-btn .dashicons { font-size: 21px; width: 21px; height: 21px; }

.cv-ireply-rec { border: 1px solid var(--cvf-border); border-radius: 12px; overflow: hidden; margin-bottom: 10px; background: var(--cvf-card); }
.cv-ireply-rec-head {
    display: flex; align-items: center; justify-content: space-between;
    padding: 8px 12px; background: var(--cvf-bg); border-bottom: 1px solid var(--cvf-border);
    font-size: 12px; font-weight: 700; color: var(--cvf-primary);
}
.cv-ireply-rec-cancel { border: none; background: none; font-size: 18px; line-height: 1; cursor: pointer; color: var(--cvf-text-muted); padding: 0 2px; }
.cv-ireply-rec-cancel:hover { color: var(--cvf-text); }
.cv-ireply-rec-stage {
    position: relative; aspect-ratio: 16 / 9; background: linear-gradient(135deg, #1f2937, #0b1d3a);
    display: flex; align-items: center; justify-content: center; overflow: hidden;
}
.cv-ireply-rec-video, .cv-ireply-rec-playback { width: 100%; height: 100%; object-fit: cover; display: block; }
.cv-ireply-rec-playback-audio { width: 92%; }
.cv-ireply-rec-wave { display: flex; flex-direction: column; align-items: center; gap: 10px; color: rgba(255,255,255,.85); }
.cv-ireply-rec-wave .dashicons { font-size: 40px; width: 40px; height: 40px; }
.cv-ireply-wave-bars { display: flex; align-items: flex-end; gap: 4px; height: 26px; }
.cv-ireply-wave-bars span { width: 4px; height: 100%; background: rgba(255,255,255,.6); border-radius: 2px; animation: cvIReplyWave 1s ease-in-out infinite; }
.cv-ireply-wave-bars span:nth-child(2) { animation-delay: .15s; }
.cv-ireply-wave-bars span:nth-child(3) { animation-delay: .3s; }
.cv-ireply-wave-bars span:nth-child(4) { animation-delay: .45s; }
.cv-ireply-wave-bars span:nth-child(5) { animation-delay: .6s; }
@keyframes cvIReplyWave { 0%, 100% { transform: scaleY(.4); } 50% { transform: scaleY(1); } }
.cv-ireply-rec-timer {
    position: absolute; top: 8px; right: 10px; display: inline-flex; align-items: center; gap: 5px;
    background: rgba(0,0,0,.55); color: #fff; font-size: 12px; font-weight: 700; padding: 3px 9px; border-radius: 20px;
}
.cv-ireply-rec-dot { display: inline-block; width: 8px; height: 8px; border-radius: 50%; background: #ef4444; }
.cv-ireply-rec-timer.recording .cv-ireply-rec-dot { animation: cvIReplyBlink 1s step-start infinite; }
@keyframes cvIReplyBlink { 50% { opacity: .25; } }
.cv-ireply-rec-square { display: inline-block; width: 9px; height: 9px; border-radius: 2px; background: currentColor; }
.cv-ireply-rec-note {
    width: 100%; border: none; border-top: 1px solid var(--cvf-border); padding: 8px 12px;
    font-size: 13px; resize: none; box-sizing: border-box; font-family: inherit; background: var(--cvf-card);
}
.cv-ireply-rec-note:focus { outline: none; }
.cv-ireply-rec-ctrls { display: flex; gap: 8px; padding: 10px 12px; }
.cv-ireply-btn {
    flex: 1; display: inline-flex; align-items: center; justify-content: center; gap: 5px;
    padding: 9px 6px; border: none; border-radius: 9px; font-size: 12.5px; font-weight: 700; cursor: pointer; transition: all 0.15s;
}
.cv-ireply-btn .dashicons { font-size: 16px; width: 16px; height: 16px; }
.cv-ireply-start { background: var(--cvf-primary); color: #fff; }
.cv-ireply-stop { background: #ef4444; color: #fff; }
.cv-ireply-retry { background: var(--cvf-bg); color: var(--cvf-text); border: 1px solid var(--cvf-border); }
.cv-ireply-send { background: var(--cvf-primary, #1e3a5f); color: #fff; }
.cv-ireply-btn:disabled { opacity: .55; cursor: not-allowed; }

/* Record modal (frontend) */
/* Modal portal fix: ensure modals break out of transformed parents */
.cv-record-overlay {
    position: fixed !important;
    top: 0 !important;
    left: 0 !important;
    right: 0 !important;
    bottom: 0 !important;
    background: rgba(0,0,0,0.7);
    z-index: var(--cvf-z-notification);
    display: flex;
    align-items: center;
    justify-content: center;
    transform: none !important;
}
.cv-record-modal {
    background: var(--cvf-card, #fff); border-radius: 14px;
    width: 560px; max-width: 95vw; max-height: 85vh;
    display: flex; flex-direction: column;
    box-shadow: 0 20px 60px rgba(0,0,0,0.35);
}
.cv-record-header {
    display: flex; justify-content: space-between; align-items: center;
    padding: 16px 20px; border-bottom: 1px solid var(--cvf-border);
}
.cv-record-header h4 { margin: 0; font-size: 16px; font-weight: 600; }
.cv-record-close { background: none; border: none; font-size: 24px; cursor: pointer; color: var(--cvf-text-muted); }
.cv-record-close:hover { color: var(--cvf-danger); }
.cv-record-body { padding: 20px; overflow-y: auto; }
.cv-record-modes { display: flex; gap: 12px; justify-content: center; }
.cv-record-mode-btn {
    display: flex; flex-direction: column; align-items: center; gap: 6px;
    padding: 20px 24px; border: 2px solid var(--cvf-border); border-radius: 12px;
    background: var(--cvf-bg); cursor: pointer; transition: all 0.15s; min-width: 120px;
}
.cv-record-mode-btn:hover { border-color: var(--cvf-primary); background: var(--cvf-bg); }
.cv-record-mode-btn.active { border-color: var(--cvf-primary); background: #e8f0fe; color: var(--cvf-primary); }
.cv-record-mode-btn .dashicons { font-size: 28px; width: 28px; height: 28px; }
.cv-record-mode-btn small { font-size: 11px; color: var(--cvf-text-muted); }
.cv-record-preview {
    margin-top: 16px; position: relative; border-radius: 10px; overflow: hidden;
    background: #111; min-height: 240px; display: flex; align-items: center; justify-content: center;
}
.cv-record-preview video { width: 100%; max-height: 360px; display: block; }
.cv-record-audio-wave {
    display: flex; flex-direction: column; align-items: center; gap: 16px;
    color: #fff; padding: 40px; width: 100%;
}
.cv-record-audio-wave .dashicons { font-size: 48px; width: 48px; height: 48px; opacity: 0.8; }
/* Audio bars — idle (subtle) */
.cv-rec-audio-bars {
    display: flex; align-items: center; justify-content: center;
    gap: 3px; height: 50px;
}
.cv-rec-audio-bars span {
    display: inline-block; width: 4px; height: 8px;
    background: rgba(255,255,255,.3); border-radius: 2px;
    transition: height .3s, background .3s;
}
/* Audio bars — recording (animated) */
.cv-rec-audio-recording .cv-rec-audio-bars span {
    background: linear-gradient(180deg, #e53935, var(--cvf-accent, #e8913a));
    animation: cvRecBarPulse 0.6s ease-in-out infinite alternate;
}
.cv-rec-audio-recording .cv-rec-audio-bars span:nth-child(1)  { animation-delay: 0.00s; }
.cv-rec-audio-recording .cv-rec-audio-bars span:nth-child(2)  { animation-delay: 0.05s; }
.cv-rec-audio-recording .cv-rec-audio-bars span:nth-child(3)  { animation-delay: 0.10s; }
.cv-rec-audio-recording .cv-rec-audio-bars span:nth-child(4)  { animation-delay: 0.15s; }
.cv-rec-audio-recording .cv-rec-audio-bars span:nth-child(5)  { animation-delay: 0.20s; }
.cv-rec-audio-recording .cv-rec-audio-bars span:nth-child(6)  { animation-delay: 0.25s; }
.cv-rec-audio-recording .cv-rec-audio-bars span:nth-child(7)  { animation-delay: 0.30s; }
.cv-rec-audio-recording .cv-rec-audio-bars span:nth-child(8)  { animation-delay: 0.35s; }
.cv-rec-audio-recording .cv-rec-audio-bars span:nth-child(9)  { animation-delay: 0.30s; }
.cv-rec-audio-recording .cv-rec-audio-bars span:nth-child(10) { animation-delay: 0.25s; }
.cv-rec-audio-recording .cv-rec-audio-bars span:nth-child(11) { animation-delay: 0.20s; }
.cv-rec-audio-recording .cv-rec-audio-bars span:nth-child(12) { animation-delay: 0.15s; }
.cv-rec-audio-recording .cv-rec-audio-bars span:nth-child(13) { animation-delay: 0.10s; }
.cv-rec-audio-recording .cv-rec-audio-bars span:nth-child(14) { animation-delay: 0.05s; }
.cv-rec-audio-recording .cv-rec-audio-bars span:nth-child(15) { animation-delay: 0.00s; }
.cv-rec-audio-recording .cv-rec-audio-bars span:nth-child(16) { animation-delay: 0.05s; }
@keyframes cvRecBarPulse {
    0%   { height: 6px;  opacity: 0.4; }
    100% { height: 40px; opacity: 1; }
}
/* Recording status label */
.cv-rec-audio-status {
    font-size: 13px; font-weight: 600; color: rgba(255,255,255,.7);
    margin-top: 4px;
}
.cv-rec-audio-recording .cv-rec-audio-status {
    color: #e53935;
    animation: cvRecStatusBlink 1s ease-in-out infinite;
}
@keyframes cvRecStatusBlink { 0%,100% { opacity:1; } 50% { opacity:.4; } }
/* Legacy wave bars (keep for overlay recorder) */
.cv-record-wave-bars { display: flex; align-items: center; gap: 4px; height: 40px; }
.cv-record-wave-bars span {
    display: inline-block; width: 4px; height: 10px; background: #fff; border-radius: 2px; opacity: 0.6;
    animation: cvfWavePulse 0.8s ease-in-out infinite alternate;
}
.cv-record-wave-bars span:nth-child(2) { animation-delay: 0.1s; }
.cv-record-wave-bars span:nth-child(3) { animation-delay: 0.2s; }
.cv-record-wave-bars span:nth-child(4) { animation-delay: 0.3s; }
.cv-record-wave-bars span:nth-child(5) { animation-delay: 0.4s; }
@keyframes cvfWavePulse { from { height: 10px; opacity: 0.4; } to { height: 36px; opacity: 0.9; } }
.cv-record-timer {
    position: absolute; top: 12px; right: 14px;
    background: rgba(0,0,0,0.65); color: #fff; font-size: 13px; font-weight: 600;
    padding: 4px 10px; border-radius: 6px; font-variant-numeric: tabular-nums;
}
.cv-record-timer.recording { background: #e53935; animation: cvfBlink 1s infinite; }
@keyframes cvfBlink { 0%, 100% { opacity: 1; } 50% { opacity: 0.5; } }
.cv-record-playback { margin-top: 16px; border-radius: 10px; overflow: hidden; }
.cv-record-playback video { width: 100%; max-height: 340px; border-radius: 10px; }
.cv-record-playback audio { width: 100%; }
.cv-record-note { margin-top: 14px; }
.cv-record-note textarea {
    width: 100%; border: 1.5px solid var(--cvf-border); border-radius: 8px;
    padding: 8px 12px; font-size: 13px; resize: none; box-sizing: border-box; font-family: inherit;
}
.cv-record-note textarea:focus { outline: none; border-color: var(--cvf-primary); }
.cv-record-footer {
    display: flex; justify-content: center; gap: 12px;
    padding: 16px 20px; border-top: 1px solid var(--cvf-border);
}
.cv-record-btn {
    display: inline-flex; align-items: center; gap: 6px;
    padding: 10px 24px; border: none; border-radius: 8px;
    font-size: 14px; font-weight: 600; cursor: pointer; transition: all 0.15s;
}
.cv-record-btn-start { background: #e53935; color: #fff; }
.cv-record-btn-start:hover { background: #c62828; }
.cv-record-dot { display: inline-block; width: 10px; height: 10px; border-radius: 50%; background: #fff; }
.cv-record-btn-stop { background: #555; color: #fff; }
.cv-record-btn-stop:hover { background: #333; }
.cv-record-square { display: inline-block; width: 10px; height: 10px; border-radius: 2px; background: #fff; }
.cv-record-btn-retry { background: #f5f5f5; color: #555; border: 1.5px solid var(--cvf-border); }
.cv-record-btn-retry:hover { background: #eee; }
.cv-record-btn-send { background: var(--cvf-primary); color: #fff; }
.cv-record-btn-send:hover { background: #152d4a; }
.cv-record-btn-send:disabled { opacity: 0.5; cursor: not-allowed; }

@media (max-width: 860px) {
    .cv-preview-modal.cv-preview-with-comments { max-width: 95vw; height: 90vh; }
    .cv-front-preview-content { flex-direction: column; }
    .cv-preview-comments-panel { width: 100%; min-width: 0; max-height: 40vh; border-left: none; border-top: 1px solid var(--cvf-border); }
    .cv-record-modes { flex-direction: column; align-items: center; }
    .cv-record-mode-btn { min-width: 80%; flex-direction: row; padding: 14px 20px; }
}

/* ═══════════════════════════════════════
   MULTI-SELECT MEDIA (Frontend)
   ═══════════════════════════════════════ */
.cv-media-select-check {
    position: absolute; top: 8px; left: 8px; z-index: 5;
    cursor: pointer; opacity: 0; transition: opacity 0.15s;
}
.cv-media-item { position: relative; }
.cv-media-item:hover .cv-media-select-check,
.cv-media-select-check:has(input:checked) { opacity: 1; }
.cv-media-item.cv-selected .cv-media-select-check { opacity: 1; }
.cv-media-select-cb { display: none; }
.cv-media-select-mark {
    display: flex; align-items: center; justify-content: center;
    width: 22px; height: 22px; border-radius: 6px;
    border: 2px solid rgba(255,255,255,0.8); background: rgba(0,0,0,0.3);
    transition: all 0.15s; box-shadow: 0 1px 4px rgba(0,0,0,0.2);
}
.cv-media-select-cb:checked + .cv-media-select-mark {
    background: var(--cvf-primary); border-color: var(--cvf-primary);
}
.cv-media-select-cb:checked + .cv-media-select-mark::after {
    content: '✓'; color: #fff; font-size: 13px; font-weight: 700;
}
.cv-media-item.cv-selected { outline: 2.5px solid var(--cvf-primary); outline-offset: -2px; border-radius: 10px; }

.cv-media-select-bar {
    position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%);
    z-index: var(--cvf-z-overlay); animation: cvfPopIn 0.3s ease-out;
}
@keyframes cvfPopIn {
    from { transform: translate(-50%, -50%) scale(0.85); opacity: 0; }
    to   { transform: translate(-50%, -50%) scale(1); opacity: 1; }
}
.cv-media-select-bar-inner {
    display: flex; flex-direction: column; align-items: center; gap: 20px;
    padding: 32px 48px; background: #1e293b; border-radius: 20px;
    box-shadow: 0 12px 48px rgba(0,0,0,0.45), 0 4px 16px rgba(0,0,0,0.25); color: #fff;
    min-width: 360px;
}
.cv-media-select-bar-count { font-size: 18px; white-space: nowrap; text-align: center; }
.cv-media-select-bar-count strong { font-size: 28px; color: #60a5fa; display: block; margin-bottom: 4px; }
.cv-media-select-bar-actions { display: flex; gap: 12px; flex-wrap: wrap; justify-content: center; }
.cv-media-select-bar-btn {
    display: inline-flex; align-items: center; gap: 8px;
    padding: 14px 28px; border: none; border-radius: 12px;
    font-size: 15px; font-weight: 600; cursor: pointer; transition: all 0.15s; white-space: nowrap;
}
.cv-media-select-bar-chips {
    display: flex; flex-wrap: wrap; gap: 6px; justify-content: center; max-width: 400px;
}
.cv-media-select-bar-chip {
    display: inline-block; padding: 3px 10px;
    background: rgba(96, 165, 250, 0.2); color: #93c5fd;
    font-size: 11px; font-weight: 500; border-radius: 20px;
}
.cv-media-select-bar-section {
    width: 100%; display: flex; flex-direction: column; align-items: center; gap: 10px;
}
.cv-media-select-bar-label {
    font-size: 13px; color: rgba(255,255,255,0.6);
    text-transform: uppercase; letter-spacing: 0.5px; font-weight: 600;
}
.cv-media-select-bar-modes { display: flex; gap: 10px; }
.cv-media-select-mode-btn {
    display: flex; flex-direction: column; align-items: center; gap: 6px;
    padding: 16px 24px; border: 2px solid rgba(255,255,255,0.15); border-radius: 14px;
    background: rgba(255,255,255,0.05); color: #fff; font-size: 13px; font-weight: 600;
    cursor: pointer; transition: all 0.2s; min-width: 90px;
}
.cv-media-select-mode-btn .dashicons { font-size: 28px; width: 28px; height: 28px; }
.cv-media-select-mode-btn:hover {
    background: rgba(255,255,255,0.12); border-color: rgba(255,255,255,0.3); transform: translateY(-2px);
}
.cv-media-select-mode-btn[data-mode="video"]:hover { border-color: #e53935; color: #ff8a80; }
.cv-media-select-mode-btn[data-mode="audio"]:hover { border-color: #ff9800; color: #ffcc80; }
.cv-media-select-mode-btn[data-mode="screen"]:hover { border-color: #4caf50; color: #a5d6a7; }
.cv-media-select-bar-divider { width: 80%; height: 1px; background: rgba(255,255,255,0.12); }
.cv-media-select-bar-section textarea {
    width: 100%; border: 1.5px solid rgba(255,255,255,0.2); border-radius: 10px;
    padding: 10px 14px; font-size: 14px; resize: none; box-sizing: border-box; font-family: inherit;
    background: rgba(255,255,255,0.08); color: #fff;
}
.cv-media-select-bar-section textarea::placeholder { color: rgba(255,255,255,0.4); }
.cv-media-select-bar-section textarea:focus { outline: none; border-color: rgba(96, 165, 250, 0.6); }
.cv-media-select-bar-comment { background: var(--cvf-primary); color: #fff; }
.cv-media-select-bar-comment:hover { background: #152d4a; }
.cv-media-select-bar-comment .dashicons { font-size: 16px; width: 16px; height: 16px; }
.cv-media-select-bar-cancel {
    background: rgba(255,255,255,0.08); color: rgba(255,255,255,0.6);
    border: 1px solid rgba(255,255,255,0.15); font-size: 13px; padding: 10px 24px;
}
.cv-media-select-bar-cancel:hover { background: rgba(255,255,255,0.15); color: #fff; }

/* Modal portal fix: ensure modals break out of transformed parents */
.cv-multi-comment-overlay {
    position: fixed !important;
    top: 0 !important;
    left: 0 !important;
    right: 0 !important;
    bottom: 0 !important;
    background: rgba(0,0,0,0.6);
    z-index: var(--cvf-z-notification);
    display: flex;
    align-items: center;
    justify-content: center;
    transform: none !important;
}
.cv-multi-comment-modal {
    background: var(--cvf-card, #fff); border-radius: 14px;
    width: 520px; max-width: 95vw; box-shadow: 0 20px 60px rgba(0,0,0,0.3);
}
.cv-multi-comment-header {
    display: flex; justify-content: space-between; align-items: center;
    padding: 16px 20px; border-bottom: 1px solid var(--cvf-border);
}
.cv-multi-comment-header h4 { margin: 0; font-size: 15px; font-weight: 600; }
.cv-multi-comment-close { background: none; border: none; font-size: 24px; cursor: pointer; color: var(--cvf-text-muted); line-height: 1; }
.cv-multi-comment-close:hover { color: var(--cvf-danger); }
.cv-multi-comment-body { padding: 20px; }
.cv-multi-comment-chips { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 14px; }
.cv-multi-comment-chip {
    display: inline-flex; align-items: center; gap: 4px;
    padding: 4px 10px; background: #e8f0fe; color: var(--cvf-primary);
    font-size: 12px; font-weight: 500; border-radius: 6px;
}
.cv-multi-comment-body textarea {
    width: 100%; border: 1.5px solid var(--cvf-border); border-radius: 8px;
    padding: 10px 14px; font-size: 14px; resize: none; box-sizing: border-box; font-family: inherit;
}
.cv-multi-comment-body textarea:focus { outline: none; border-color: var(--cvf-primary); }
.cv-multi-comment-footer {
    display: flex; justify-content: flex-end; gap: 10px;
    padding: 14px 20px; border-top: 1px solid var(--cvf-border);
}
.cv-multi-comment-cancel {
    padding: 8px 20px; border: 1.5px solid var(--cvf-border); border-radius: 8px;
    background: var(--cvf-card, #fff); color: var(--cvf-text); font-size: 13px; font-weight: 500; cursor: pointer;
}
.cv-multi-comment-cancel:hover { background: var(--cvf-bg); }
.cv-multi-comment-send {
    padding: 8px 24px; border: none; border-radius: 8px;
    background: var(--cvf-primary); color: #fff; font-size: 13px; font-weight: 600; cursor: pointer;
}
.cv-multi-comment-send:hover { background: #152d4a; }
.cv-multi-comment-send:disabled { opacity: 0.5; cursor: not-allowed; }

@media (max-width: 700px) {
    .cv-media-select-bar-inner { flex-direction: column; gap: 10px; padding: 14px 18px; }
    .cv-media-select-bar-actions { flex-wrap: wrap; justify-content: center; }
}

/* --- Admin reply visual differentiation --- */
.cv-media-admin-reply {
    border: 2px solid #e8913a !important;
    box-shadow: 0 0 8px rgba(232, 145, 58, 0.15);
}
.cv-media-admin-reply-badge {
    display: inline-block; margin-top: 4px; padding: 2px 8px;
    background: #fef3e2; color: #b06e1a; font-size: 10px; font-weight: 700;
    text-transform: uppercase; border-radius: 4px; letter-spacing: 0.5px;
}
.cv-admin-comment-admin.cv-admin-media-reply {
    border-left: 3px solid #e8913a;
    background: linear-gradient(90deg, #fef8f0 0%, #fff 40%);
}
.cv-media-filter-admin-reply {
    color: #e8913a !important; border-color: #e8913a !important;
}
.cv-media-filter-admin-reply.active,
.cv-media-filter-admin-reply:hover {
    background: #e8913a !important; color: #fff !important; border-color: #e8913a !important;
}

/* ═══════════════════════════════════
   PERIOD SELECT DROPDOWNS (shared)
   ═══════════════════════════════════ */
.cv-period-select {
    padding: 6px 14px;
    border: 1px solid #dcdfe4;
    border-radius: 20px;
    background: #fff;
    color: #3c434a;
    font-size: 13px;
    font-weight: 500;
    cursor: pointer;
    outline: none;
    appearance: none;
    -webkit-appearance: none;
    -moz-appearance: none;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M0 0l5 6 5-6z' fill='%23646970'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 12px center;
    background-size: 10px 6px;
    padding-right: 30px;
    line-height: normal;
    box-shadow: none;
    transition: border-color .2s, color .2s;
}
.cv-period-select:hover {
    border-color: var(--cv-accent, #1e3a5f);
    color: var(--cv-accent, #1e3a5f);
}
.cv-period-select:focus {
    border-color: var(--cv-accent, #1e3a5f);
    color: var(--cv-accent, #1e3a5f);
    box-shadow: 0 0 0 3px rgba(30, 58, 95, .08);
}

/* ═══════════════════════════════════════════════════════════════
   CORE v8 — DOCUMENT TABLE & TOOLBAR (Vue Client)
   ═══════════════════════════════════════════════════════════════ */
.cv-vault-wrap .dtool{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px;flex-wrap:wrap}
.cv-vault-wrap .dtool-l{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.cv-vault-wrap .dsrch{padding:8px 14px 8px 34px;border:1.5px solid #d0d5dd;border-radius:8px;font-size:14px;width:220px;background:var(--cvf-card) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%23999' stroke-width='2'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cline x1='21' y1='21' x2='16.65' y2='16.65'/%3E%3C/svg%3E") 10px center no-repeat;font-family:inherit}
.cv-vault-wrap .dsrch:focus{outline:none;border-color:var(--cvf-primary);box-shadow:0 0 0 3px rgba(30,58,95,.1)}
.cv-vault-wrap .dflt{padding:6px 12px;border:1.5px solid #d0d5dd;border-radius:7px;font-size:12px;background:var(--cvf-card);color:#666;cursor:pointer;font-weight:500;font-family:inherit;transition:all .15s}
.cv-vault-wrap .dflt:hover{border-color:var(--cvf-primary);color:var(--cvf-primary)}
.cv-vault-wrap .dflt.on{border-color:var(--cvf-primary);background:#e8f0fe;color:var(--cvf-primary);font-weight:600}
.cv-vault-wrap .dbtn{padding:8px 16px;border:none;border-radius:8px;font-size:13px;font-weight:600;cursor:pointer;font-family:inherit;display:flex;align-items:center;gap:4px;transition:all .15s}
.cv-vault-wrap .dbtn-p{background:var(--cvf-primary);color:#fff}
.cv-vault-wrap .dbtn-p:hover{background:var(--cvf-primary-light)}
.cv-vault-wrap .dbtn-o{background:var(--cvf-card);color:var(--cvf-primary);border:1.5px solid #d0d5dd}
.cv-vault-wrap .dbtn-o:hover{border-color:var(--cvf-primary);background:#f0f7ff}

.cv-vault-wrap .dcard{background:var(--cvf-card);border-radius:14px;box-shadow:0 1px 8px rgba(0,0,0,.04);overflow:hidden}
.cv-vault-wrap .dtbl{width:100%;border-collapse:collapse}
.cv-vault-wrap .dtbl th{padding:10px 14px;text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.4px;color:#888;background:#f8fafc;border-bottom:1px solid #e8ecf0;white-space:nowrap}
.cv-vault-wrap .dtbl td{padding:12px 14px;border-bottom:1px solid #f0f2f5;font-size:14px;vertical-align:middle}
.cv-vault-wrap .dtbl tbody tr{transition:all .15s}
.cv-vault-wrap .dtbl tbody tr:hover td{background:#f8fafc}
.cv-vault-wrap .dname{display:flex;align-items:center;gap:10px}
.cv-vault-wrap .dicon{width:34px;height:34px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:17px;flex-shrink:0}
.cv-vault-wrap .di-pdf{background:#fce4ec}.cv-vault-wrap .di-img{background:#e8f5e9}
.cv-vault-wrap .di-doc{background:#e3f2fd}.cv-vault-wrap .di-zip{background:#fff3e0}
.cv-vault-wrap .di-xls{background:#e8f5e9}.cv-vault-wrap .di-vid{background:#f3e8ff}
.cv-vault-wrap .di-audio{background:#fce4ec}
.cv-vault-wrap .dname-t{font-weight:600;color:var(--cvf-primary);font-size:14px}
.cv-vault-wrap .dname-s{font-size:12px;color:#767676;margin-top:2px}
.cv-vault-wrap .dfrom{display:inline-flex;align-items:center;gap:3px;font-size:13px}
.cv-vault-wrap .dfrom-c{color:var(--cvf-link)}.cv-vault-wrap .dfrom-cl{color:#6b21a8}
.cv-vault-wrap .dact{display:flex;gap:3px}
.cv-vault-wrap .dact-btn{width:28px;height:28px;border-radius:6px;border:1.5px solid #e0e4e8;background:var(--cvf-card);cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:13px;transition:all .15s}
.cv-vault-wrap .dact-btn:hover{border-color:var(--cvf-primary);background:#f0f7ff}
.cv-vault-wrap .dfooter{display:flex;align-items:center;justify-content:space-between;padding:12px 18px;border-top:1px solid #e8ecf0;font-size:13px;color:#767676}

/* ═══════════════════════════════════════════════════════════════
   CORE v8 — FICHES GRID (Vue Client)
   ═══════════════════════════════════════════════════════════════ */
.cv-vault-wrap .fiches-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px}
.cv-vault-wrap .fiche{background:var(--cvf-card);border-radius:12px;box-shadow:0 1px 6px rgba(0,0,0,.04);overflow:hidden;border:1px solid #e8ecf0;transition:all .15s}
.cv-vault-wrap .fiche:hover{transform:translateY(-2px);box-shadow:0 4px 16px rgba(0,0,0,.08)}
.cv-vault-wrap .fiche-color{height:5px}
.cv-vault-wrap .fiche-body{padding:16px 18px}
.cv-vault-wrap .fiche-title{font-size:15px;font-weight:700;color:var(--cvf-primary);margin-bottom:5px;display:flex;align-items:center;gap:5px}
.cv-vault-wrap .fiche-pin{font-size:14px}
.cv-vault-wrap .fiche-text{font-size:13px;color:#666;line-height:1.6;margin-bottom:8px}
.cv-vault-wrap .fiche-meta{display:flex;align-items:center;justify-content:space-between;font-size:12px;color:#767676}
.cv-vault-wrap .fiche-actions{display:flex;gap:4px;margin-top:8px}
.cv-vault-wrap .fiche-linked{font-size:11px;color:var(--cvf-link);font-weight:600;background:#e8f0fe;padding:3px 8px;border-radius:5px;margin-top:8px;display:inline-block;cursor:pointer}

/* ═══════════════════════════════════════════════════════════════
   CORE v8 — LINKS LIST (Vue Client)
   ═══════════════════════════════════════════════════════════════ */
.cv-vault-wrap .link-item{display:flex;align-items:center;gap:14px;padding:14px 18px;background:var(--cvf-card);border-radius:12px;box-shadow:0 1px 6px rgba(0,0,0,.04);margin-bottom:10px;border:1px solid #e8ecf0;transition:border-color .15s}
.cv-vault-wrap .link-item:hover{border-color:var(--cvf-primary)}
.cv-vault-wrap .link-icon{width:40px;height:40px;border-radius:10px;background:#e0f2f1;display:flex;align-items:center;justify-content:center;font-size:20px;flex-shrink:0}
.cv-vault-wrap .link-body{flex:1;min-width:0}
.cv-vault-wrap .link-title{font-size:14px;font-weight:600;color:var(--cvf-link);cursor:pointer}
.cv-vault-wrap .link-title:hover{text-decoration:underline}
.cv-vault-wrap .link-url{font-size:12px;color:#767676;margin-top:2px}
.cv-vault-wrap .link-desc{font-size:13px;color:#666;margin-top:3px}
.cv-vault-wrap .link-meta{font-size:12px;color:#bbb;margin-top:4px}
.cv-vault-wrap .link-actions{display:flex;gap:4px;flex-shrink:0}

/* ═══════════════════════════════════════════════════════════════
   CORE v8 — MEDIA GRID (Vue Client)
   ═══════════════════════════════════════════════════════════════ */
.cv-vault-wrap .media-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px}
.cv-vault-wrap .media-item{background:var(--cvf-card);border-radius:12px;box-shadow:0 1px 6px rgba(0,0,0,.04);overflow:hidden;border:1px solid #e8ecf0;transition:all .15s}
.cv-vault-wrap .media-item:hover{transform:translateY(-2px);box-shadow:0 4px 16px rgba(0,0,0,.08)}
.cv-vault-wrap .media-preview{background:#1a1a2e;height:160px;display:flex;align-items:center;justify-content:center;color:#fff;font-size:40px;position:relative}
.cv-vault-wrap .media-play{width:50px;height:50px;background:rgba(255,255,255,.2);border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:20px;cursor:pointer;transition:background .2s}
.cv-vault-wrap .media-play:hover{background:rgba(255,255,255,.35)}
.cv-vault-wrap .media-type-badge{position:absolute;top:8px;left:8px;padding:3px 10px;border-radius:6px;font-size:11px;font-weight:600;background:rgba(0,0,0,.5);color:#fff}
.cv-vault-wrap .media-readonly{position:absolute;top:8px;right:8px;padding:3px 10px;border-radius:6px;font-size:11px;font-weight:600;background:rgba(255,255,255,.2);color:#fff}
.cv-vault-wrap .media-body{padding:14px 18px}
.cv-vault-wrap .media-title{font-size:14px;font-weight:600;color:var(--cvf-primary);margin-bottom:3px}
.cv-vault-wrap .media-desc{font-size:13px;color:#666;margin-top:3px}
.cv-vault-wrap .media-meta{font-size:12px;color:#bbb;margin-top:5px}
.cv-vault-wrap .media-actions{display:flex;gap:4px;margin-top:8px}

/* ═══════════════════════════════════════════════════════════════
   CORE v8 — NOTEPAD / MESSAGES (Vue Client)
   ═══════════════════════════════════════════════════════════════ */
.cv-vault-wrap .note-thread{background:var(--cvf-card);border-radius:14px;box-shadow:0 2px 12px rgba(0,0,0,.05);overflow:hidden}
.cv-vault-wrap .note-msg{display:flex;gap:12px;padding:16px 20px;border-bottom:1px solid #f0f2f5}
.cv-vault-wrap .note-msg:last-of-type{border-bottom:none}
.cv-vault-wrap .note-av{width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;color:#fff;flex-shrink:0}
.cv-vault-wrap .note-av-coach{background:var(--cvf-primary)}
.cv-vault-wrap .note-av-client{background:#6b21a8}
.cv-vault-wrap .note-body{flex:1}
.cv-vault-wrap .note-who{font-size:13px;font-weight:600;margin-bottom:2px}
.cv-vault-wrap .note-who-c{color:var(--cvf-primary)}
.cv-vault-wrap .note-who-cl{color:#6b21a8}
.cv-vault-wrap .note-txt{font-size:14px;color:#444;line-height:1.6}
.cv-vault-wrap .note-time{font-size:12px;color:#bbb;margin-top:3px}
.cv-vault-wrap .note-actions{display:flex;gap:4px;margin-top:6px}
.cv-vault-wrap .note-input{display:flex;gap:8px;padding:14px 20px;border-top:1px solid #e8ecf0;align-items:center}
.cv-vault-wrap .note-field{flex:1;padding:10px 14px;border:1.5px solid #e0e4e8;border-radius:8px;font-size:14px;font-family:inherit;resize:none;height:40px;transition:border-color .2s}
.cv-vault-wrap .note-field:focus{outline:none;border-color:var(--cvf-primary);box-shadow:0 0 0 3px rgba(30,58,95,.1)}
.cv-vault-wrap .note-send{padding:10px 20px;background:var(--cvf-primary);color:#fff;border:none;border-radius:8px;font-size:13px;font-weight:600;cursor:pointer;transition:background .15s}
.cv-vault-wrap .note-send:hover{background:var(--cvf-primary-light)}
.cv-vault-wrap .note-filters{display:flex;align-items:center;gap:8px;padding:12px 20px;border-bottom:1px solid #e8ecf0;flex-wrap:wrap}

/* ═══════════════════════════════════════════════════════════════
   CORE v8 — TAGS ON CONTENT (Vue Client)
   ═══════════════════════════════════════════════════════════════ */
.cv-vault-wrap .dtags{display:flex;gap:4px;flex-wrap:wrap;margin-top:4px}
.cv-vault-wrap .dtag{display:inline-flex;align-items:center;gap:3px;padding:2px 8px;border-radius:10px;font-size:11px;font-weight:600;cursor:default}
.cv-vault-wrap .dtag-blue{background:#e8f0fe;color:var(--cvf-link)}
.cv-vault-wrap .dtag-green{background:#d4edda;color:#155724}
.cv-vault-wrap .dtag-orange{background:#fff3e0;color:#e65100}
.cv-vault-wrap .dtag-purple{background:#f3e8ff;color:#6b21a8}
.cv-vault-wrap .dtag-red{background:#f8d7da;color:#721c24}
.cv-vault-wrap .dtag-teal{background:#e0f2f1;color:#00695c}

/* ═══════════════════════════════════════════════════════════════
   CORE v8 — SETTINGS (Vue Client)
   ═══════════════════════════════════════════════════════════════ */
.cv-vault-wrap .settings-card{background:var(--cvf-card);border-radius:14px;box-shadow:0 2px 12px rgba(0,0,0,.05);padding:22px;margin-bottom:18px}
.cv-vault-wrap .settings-card h3{font-size:16px;color:var(--cvf-primary);margin-bottom:14px;display:flex;align-items:center;gap:8px}
.cv-vault-wrap .setting-row{display:flex;align-items:center;gap:14px;padding:12px 0;border-bottom:1px solid #f5f5f5}
.cv-vault-wrap .setting-row:last-child{border-bottom:none}
.cv-vault-wrap .setting-toggle{width:40px;height:22px;border-radius:11px;cursor:pointer;position:relative;flex-shrink:0;transition:background .2s}
.cv-vault-wrap .setting-toggle::after{content:'';position:absolute;top:2px;left:2px;width:18px;height:18px;border-radius:50%;background:var(--cvf-card);transition:transform .2s;box-shadow:0 1px 3px rgba(0,0,0,.2)}
.cv-vault-wrap .toggle-on{background:#27ae60}
.cv-vault-wrap .toggle-on::after{transform:translateX(18px)}
.cv-vault-wrap .toggle-off{background:#d0d5dd}
/* ── Notification toolbar ── */
.cv-vault-wrap .cv-notif-toolbar {
    display: flex; justify-content: flex-end; margin-bottom: 8px;
}
.cv-vault-wrap .cv-notif-select-toggle {
    background: none; border: none; color: var(--cvf-primary-light, #2a5298); font-size: 13px;
    cursor: pointer; padding: 4px 0; font-weight: 500;
}
.cv-vault-wrap .cv-notif-select-toggle:hover { text-decoration: underline; }
/* ── Notification cards grid ── */
.cv-vault-wrap .cv-notif-grid {
    display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 10px;
}
.cv-vault-wrap .cv-notif-card {
    position: relative; border-radius: 10px; padding: 14px 12px 12px;
    cursor: pointer; user-select: none; transition: all 0.2s ease;
    border: 2px solid transparent; background: var(--cvf-hover-bg, #f8f9fb);
}
.cv-vault-wrap .cv-notif-card-on {
    border-color: #27ae60; background: rgba(39,174,96,0.04);
}
.cv-vault-wrap .cv-notif-card:hover { box-shadow: 0 2px 8px rgba(0,0,0,0.06); }
.cv-vault-wrap .cv-notif-card-header {
    display: flex; align-items: center; justify-content: space-between; margin-bottom: 10px;
}
.cv-vault-wrap .cv-notif-card-icon { font-size: 22px; line-height: 1; }
.cv-vault-wrap .cv-notif-card-toggle {
    width: 36px; height: 20px; border-radius: 10px; position: relative;
    flex-shrink: 0; transition: background 0.2s;
}
.cv-vault-wrap .cv-notif-card-toggle::after {
    content: ''; position: absolute; top: 2px; left: 2px; width: 16px; height: 16px;
    border-radius: 50%; background: #fff; transition: transform 0.2s; box-shadow: 0 1px 3px rgba(0,0,0,0.18);
}
.cv-vault-wrap .cv-notif-card-toggle.toggle-on { background: #27ae60; }
.cv-vault-wrap .cv-notif-card-toggle.toggle-on::after { transform: translateX(16px); }
.cv-vault-wrap .cv-notif-card-toggle.toggle-off { background: #d0d5dd; }
.cv-vault-wrap .cv-notif-card-body { display: flex; flex-direction: column; gap: 2px; }
.cv-vault-wrap .cv-notif-card-title {
    font-size: 13px; font-weight: 600; color: var(--cvf-text, #2c3e50); line-height: 1.3;
}
.cv-vault-wrap .cv-notif-card-desc {
    font-size: 11px; color: var(--cvf-text-muted, #5a6c7d); line-height: 1.3;
}
@media (max-width: 480px) {
    .cv-vault-wrap .cv-notif-grid { grid-template-columns: repeat(2, 1fr); }
}
.cv-vault-wrap .setting-info{flex:1;min-width:0}
.cv-vault-wrap .setting-title{font-size:14px;font-weight:600;color:var(--cvf-primary);margin-bottom:2px}
.cv-vault-wrap .setting-desc{font-size:13px;color:#888}
.cv-vault-wrap .setting-select{padding:6px 10px;border:1.5px solid #d0d5dd;border-radius:7px;font-size:13px;font-family:inherit;color:#555;background:var(--cvf-card);cursor:pointer}

/* ═══════════════════════════════════════════════════════════════
   CORE v8 — FORM PANEL SUB-ELEMENTS (Vue Client)
   ═══════════════════════════════════════════════════════════════ */
.cv-vault-wrap .cv-form-dropzone{border:2px dashed #c7d2e0;border-radius:12px;padding:28px 20px;text-align:center;cursor:pointer;transition:all .2s;background:#f8fafc}
.cv-vault-wrap .cv-form-dropzone:hover{border-color:var(--cvf-primary);background:#f0f7ff}
.cv-vault-wrap .cv-form-label{display:block;font-size:12px;font-weight:600;color:#555;margin-bottom:6px}
.cv-vault-wrap .cv-form-input{width:100%;padding:10px 14px;border:1.5px solid #d0d5dd;border-radius:8px;font-size:14px;font-family:inherit;box-sizing:border-box;transition:border-color .2s}
.cv-vault-wrap .cv-form-input:focus{outline:none;border-color:var(--cvf-primary);box-shadow:0 0 0 3px rgba(30,58,95,.1)}
.cv-vault-wrap .cv-form-select{width:100%;padding:10px 14px;border:1.5px solid #d0d5dd;border-radius:8px;font-size:13px;font-family:inherit;background:var(--cvf-card);color:#555;cursor:pointer;box-sizing:border-box}
.cv-vault-wrap .cv-form-select:focus{outline:none;border-color:var(--cvf-primary)}
.cv-vault-wrap .cv-form-textarea{width:100%;padding:10px 14px;border:1.5px solid #d0d5dd;border-radius:8px;font-size:14px;font-family:inherit;resize:vertical;min-height:70px;box-sizing:border-box;transition:border-color .2s}
.cv-vault-wrap .cv-form-textarea:focus{outline:none;border-color:var(--cvf-primary);box-shadow:0 0 0 3px rgba(30,58,95,.1)}
.cv-vault-wrap .cv-form-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:16px}
.cv-vault-wrap .cv-form-cancel{padding:10px 20px;background:none;border:1.5px solid #d0d5dd;border-radius:8px;font-size:13px;font-weight:600;color:#666;cursor:pointer;font-family:inherit;transition:all .15s}
.cv-vault-wrap .cv-form-cancel:hover{border-color:var(--cvf-danger);color:var(--cvf-danger)}
.cv-vault-wrap .cv-form-submit{padding:10px 20px;background:var(--cvf-primary);color:#fff;border:none;border-radius:8px;font-size:13px;font-weight:600;cursor:pointer;font-family:inherit;transition:background .15s}
.cv-vault-wrap .cv-form-submit:hover{background:var(--cvf-primary-light)}

/* ═══════════════════════════════════════════════════════════════
   CORE v8 — CLIENT TAGS VIEW (Vue Client)
   ═══════════════════════════════════════════════════════════════ */
.cv-vault-wrap .cv-tag-group{background:var(--cvf-card);border-radius:12px;border:1px solid #e8ecf0;margin-bottom:16px;overflow:hidden}
.cv-vault-wrap .cv-tag-group-hdr{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;border-bottom:1px solid #e8ecf0}
.cv-vault-wrap .cv-tag-group-hdr-left{display:flex;align-items:center;gap:10px}
.cv-vault-wrap .cv-tag-group-count{font-size:12px;color:#6b7280}
.cv-vault-wrap .cv-tag-group-actions{display:flex;gap:6px}
.cv-vault-wrap .cv-tag-group-btn{font-size:11px;padding:4px 10px;border:1px solid #d0d5dd;border-radius:5px;background:var(--cvf-card);cursor:pointer;font-family:inherit;transition:all .15s}
.cv-vault-wrap .cv-tag-group-btn:hover{border-color:var(--cvf-primary);background:#f0f7ff}
.cv-vault-wrap .cv-tag-group-btn-danger{color:var(--cvf-danger)}
.cv-vault-wrap .cv-tag-group-btn-danger:hover{border-color:var(--cvf-danger);background:#fff5f5}
.cv-vault-wrap .cv-tag-timeline{position:relative;padding:12px 18px 12px 42px}
.cv-vault-wrap .cv-tag-timeline::before{content:'';position:absolute;left:26px;top:16px;bottom:16px;width:2px;background:#e0e7ef}
.cv-vault-wrap .cv-tag-timeline-item{position:relative;margin-bottom:12px}
.cv-vault-wrap .cv-tag-timeline-item:last-child{margin-bottom:0}
.cv-vault-wrap .cv-tag-timeline-dot{position:absolute;left:-20px;top:4px;width:10px;height:10px;border-radius:50%}
.cv-vault-wrap .cv-tag-timeline-text{font-size:13px;color:#333}
.cv-vault-wrap .cv-tag-timeline-text strong{color:var(--cvf-primary)}
.cv-vault-wrap .cv-tag-timeline-date{font-size:11px;color:#6b7280;margin-top:2px}

/* ═══════════════════════════════════════════════════════════════
   CORE v8 — CLIENT ACTIVITY LOG (Vue Client)
   ═══════════════════════════════════════════════════════════════ */
.cv-vault-wrap .cv-activity-log{background:#fff;border-radius:12px;border:1px solid #e8ecf0;overflow:hidden}
.cv-vault-wrap .cv-activity-log-day{padding:10px 18px;background:#f8fafc;border-bottom:1px solid #e8ecf0;font-size:12px;font-weight:700;color:var(--cvf-primary)}
.cv-vault-wrap .cv-activity-log-entries{padding:8px 18px}
.cv-vault-wrap .cv-activity-log-entry{display:flex;align-items:flex-start;gap:12px;padding:10px 0;border-bottom:1px solid #f0f2f5}
.cv-vault-wrap .cv-activity-log-entry:last-child{border-bottom:none}
.cv-vault-wrap .cv-activity-log-icon{width:34px;height:34px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:14px;flex-shrink:0}
.cv-vault-wrap .cv-activity-log-body{flex:1;min-width:0}
.cv-vault-wrap .cv-activity-log-body strong{color:var(--cvf-primary)}
.cv-vault-wrap .cv-activity-log-body em{color:#555}
.cv-vault-wrap .cv-activity-log-text{font-size:13px;color:#333}
.cv-vault-wrap .cv-activity-log-time{font-size:11px;color:#6b7280;margin-top:2px}
.cv-vault-wrap .cv-activity-log-actions{display:flex;gap:4px;flex-shrink:0;align-self:center}

/* ═══════════════════════════════════════════════════════════════
   CORE v8 — ACTIVE FILTER CHIPS (Vue Client)
   ═══════════════════════════════════════════════════════════════ */
.cv-vault-wrap .cv-active-filters{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:12px}
.cv-vault-wrap .cv-active-filter{display:inline-flex;align-items:center;gap:4px;font-size:11px;padding:4px 10px;border-radius:20px;cursor:pointer;font-weight:600;transition:opacity .15s}
.cv-vault-wrap .cv-active-filter:hover{opacity:.7}
.cv-vault-wrap .cv-active-filter-clear{font-size:11px;padding:4px 10px;color:#6b7280;cursor:pointer;text-decoration:underline}

/* ═══════════════════════════════════════════════════════════════
   CORE v8 — FILTER BAR (Vue Client)
   ═══════════════════════════════════════════════════════════════ */
.cv-vault-wrap .cv-filter-bar{display:flex;gap:8px;flex-wrap:wrap;align-items:center;padding:10px 16px;background:#f8fafc;border:1px solid #e8ecf0;border-radius:10px;margin-bottom:14px}
.cv-vault-wrap .cv-filter-bar-label{font-size:12px;color:#6b7280;font-weight:600}
.cv-vault-wrap .cv-filter-select{font-size:12px;padding:5px 10px;border:1.5px solid #d0d5dd;border-radius:6px;background:#fff;color:#333;cursor:pointer;font-family:inherit}
.cv-vault-wrap .cv-filter-select:focus{outline:none;border-color:var(--cvf-primary)}

/* ═══════════════════════════════════════════════════════════════
   CORE v8 — DASHBOARD BLOCKS (Vue Client — cli-* classes)
   Gradient headers matching admin back-office section design
   ═══════════════════════════════════════════════════════════════ */

/* ─── Welcome banner from admin ─── */
.cv-vault-wrap .cli-welcome-banner {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    padding: 14px 18px;
    margin-bottom: 18px;
    background: linear-gradient(135deg, #eff6ff 0%, #e0f2fe 100%);
    border: 1.5px solid #bfdbfe;
    border-left: 4px solid #3b82f6;
    border-radius: var(--cvf-radius, 12px);
    font-size: 13px;
    color: #1e3a5f;
    line-height: 1.5;
}
.cv-vault-wrap .cli-welcome-banner svg { flex-shrink: 0; margin-top: 2px; color: #3b82f6; }
.cv-vault-wrap .cli-welcome-text { flex: 1; }
.cv-vault-wrap .cli-welcome-from {
    display: block;
    font-weight: 700;
    font-size: 12px;
    color: #3b82f6;
    margin-bottom: 2px;
}
/* v20.21.22 — Bannière GLOBALE « messages non lus du conseiller » (cliquable, code couleur navy) */
.cv-vault-wrap .cli-msg-alert {
    display: flex; align-items: center; gap: 14px; width: 100%; text-align: left;
    padding: 14px 18px; margin-bottom: 18px;
    background: linear-gradient(135deg, #eef2f8 0%, #e6edf6 100%);
    border: 1.5px solid #cdd9e8; border-left: 4px solid #1e3a5f;
    border-radius: var(--cvf-radius, 12px); cursor: pointer;
    transition: box-shadow .14s ease, transform .08s ease, border-color .14s ease;
}
.cv-vault-wrap .cli-msg-alert:hover { box-shadow: 0 8px 24px rgba(30,58,95,.12); transform: translateY(-1px); border-color: #1e3a5f; }
.cv-vault-wrap .cli-msg-alert-ico { position: relative; flex: 0 0 auto; width: 40px; height: 40px; border-radius: 10px; display: flex; align-items: center; justify-content: center; background: #1e3a5f; color: #fff; }
.cv-vault-wrap .cli-msg-alert-badge { position: absolute; top: -6px; right: -6px; min-width: 19px; height: 19px; padding: 0 5px; border-radius: 999px; background: #ef4444; color: #fff; font-size: 11px; font-weight: 800; line-height: 19px; text-align: center; box-shadow: 0 0 0 2px #eef2f8; }
.cv-vault-wrap .cli-msg-alert-txt { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; gap: 1px; }
.cv-vault-wrap .cli-msg-alert-txt strong { font-size: 14px; font-weight: 700; color: #1e3a5f; }
.cv-vault-wrap .cli-msg-alert-sub { font-size: 12px; color: #64748b; }
.cv-vault-wrap .cli-msg-alert-arrow { flex: 0 0 auto; color: #1e3a5f; font-size: 22px; width: 22px; height: 22px; }
/* v20.21.22 — pastille « Nouveau » sur un message du conseiller non lu */
.cv-vault-wrap .cv-msg-new-pill { display: inline-block; background: #1e3a5f; color: #fff; font-size: 10px; font-weight: 800; letter-spacing: .02em; text-transform: uppercase; padding: 1px 7px; border-radius: 999px; vertical-align: 1px; }

/* ─── Zone system (premium modular homepage) ─── */

/* Zone container — each major section lives in its own zone */
.cv-vault-wrap .cv-zone {
    position: relative;
    margin-top: 32px;
    padding-top: 24px;
}
.cv-vault-wrap .cv-zone:first-child {
    margin-top: 8px;
    padding-top: 0;
}
/* Elegant gradient divider between zones */
.cv-vault-wrap .cv-zone + .cv-zone::before {
    content: '';
    position: absolute;
    top: 0;
    left: 10%;
    right: 10%;
    height: 1px;
    background: linear-gradient(90deg, transparent, var(--cvf-border) 20%, var(--cvf-border) 80%, transparent);
}

/* Zone header — accent bar + title + optional count */
.cv-vault-wrap .cv-zone-header {
    display: flex;
    align-items: center;
    gap: 14px;
    margin-bottom: 16px;
    /* v11.46.6 — Card visible quel que soit le contexte (thème parent clair ou sombre).
       Fond carte + ombre légère + bord arrondi pour que le titre soit toujours lisible. */
    background: var(--cvf-card, #fff);
    padding: 14px 18px;
    border-radius: 12px;
    box-shadow: 0 4px 16px rgba(15, 23, 42, 0.08), 0 1px 3px rgba(15, 23, 42, 0.04);
    border: 1px solid rgba(15, 23, 42, 0.08);
}
.cv-vault-wrap .cv-zone-accent {
    flex-shrink: 0;
    width: 4px;
    height: 34px;
    border-radius: 4px;
}
.cv-vault-wrap .cv-zone--requests .cv-zone-accent {
    background: linear-gradient(180deg, #f59e0b, #d97706);
}
.cv-vault-wrap .cv-zone--parcours .cv-zone-accent {
    background: linear-gradient(180deg, #22c55e, #16a34a);
}
.cv-vault-wrap .cv-zone--vault .cv-zone-accent {
    background: linear-gradient(180deg, var(--cvf-primary-light), var(--cvf-primary));
}
.cv-vault-wrap .cv-zone-text {
    flex: 1;
    min-width: 0;
}
.cv-vault-wrap .cv-zone-title {
    font-size: 17px;
    font-weight: 700;
    color: var(--cvf-text);
    margin: 0 !important;
    padding: 0 !important;
    line-height: 1.15;
    letter-spacing: -0.02em;
    border: none !important;
}
.cv-vault-wrap .cv-zone-desc {
    font-size: 10.5px;
    color: var(--cvf-text-muted);
    margin: 0 !important;
    padding: 0 !important;
    line-height: 1.3;
    font-weight: 400;
    opacity: 0.75;
}
/* Count badge in zone header */
.cv-vault-wrap .cv-zone-count {
    flex-shrink: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 24px;
    height: 24px;
    padding: 0 8px;
    border-radius: 12px;
    font-size: 11.5px;
    font-weight: 700;
    line-height: 1;
}
.cv-vault-wrap .cv-zone--requests .cv-zone-count {
    background: #fef3c7;
    color: #92400e;
}
.cv-vault-wrap .cv-zone--parcours .cv-zone-count {
    background: #dcfce7;
    color: #166534;
}

@media (max-width: 540px) {
    .cv-vault-wrap .cv-zone { margin-top: 24px; padding-top: 18px; }
    .cv-vault-wrap .cv-zone-header { margin-bottom: 12px; }
    .cv-vault-wrap .cv-zone-accent { height: 28px; }
    .cv-vault-wrap .cv-zone-title { font-size: 15px; }
    .cv-vault-wrap .cv-zone-desc { font-size: 10px; }
}

/* ─── Parcours summary cards grid (modular homepage) ─── */
.cv-vault-wrap .cli-parcours-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 14px;
    margin-bottom: 20px;
}
@media (max-width: 900px) {
    .cv-vault-wrap .cli-parcours-grid { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 540px) {
    .cv-vault-wrap .cli-parcours-grid { grid-template-columns: 1fr; }
}
.cv-vault-wrap .cli-parcours-summary {
    position: relative;
    padding: 18px 18px 14px;
    border-radius: var(--cvf-radius, 12px);
    color: #fff !important;
    cursor: pointer;
    overflow: hidden;
    transition: transform .18s ease, box-shadow .18s ease;
}
.cv-vault-wrap .cli-parcours-summary * { color: #fff !important; }
.cv-vault-wrap .cli-parcours-summary:hover {
    transform: translateY(-2px);
    box-shadow: 0 8px 24px rgba(0,0,0,.18);
}
.cv-vault-wrap .cli-parcours-summary-content {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
}
.cv-vault-wrap .cli-parcours-summary-left { flex: 1; min-width: 0; }
.cv-vault-wrap .cli-parcours-summary-badge {
    display: inline-block;
    padding: 2px 10px;
    font-size: 11px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: .5px;
    background: rgba(255,255,255,.18);
    border-radius: 20px;
    margin-bottom: 8px;
}
.cv-vault-wrap .cli-parcours-summary-title {
    margin: 0 0 6px;
    font-size: 15px;
    font-weight: 700;
    line-height: 1.3;
    color: #fff !important;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.cv-vault-wrap .cli-parcours-summary-meta {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 6px 10px;
    font-size: 11.5px;
    opacity: .85;
}
.cv-vault-wrap .cli-parcours-summary-right { flex-shrink: 0; }
.cv-vault-wrap .cli-parcours-summary-circle {
    position: relative;
    width: 68px;
    height: 68px;
}
.cv-vault-wrap .cli-parcours-summary-circle svg {
    transform: rotate(-90deg);
    display: block;
    width: 68px;
    height: 68px;
}
.cv-vault-wrap .cli-parcours-summary-pct {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    font-size: 16px;
    font-weight: 800;
    color: #fff !important;
}
.cv-vault-wrap .cli-parcours-summary-bar {
    height: 7px;
    background: rgba(255,255,255,.18);
    border-radius: 7px;
    margin: 12px 0 8px;
    overflow: hidden;
}
.cv-vault-wrap .cli-parcours-summary-bar-fill {
    height: 100%;
    border-radius: 7px;
    background: rgba(255,255,255,.85);
    transition: width .6s ease;
}
.cv-vault-wrap .cli-parcours-summary-cta {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 12px;
    font-weight: 600;
    opacity: .9;
}
.cv-vault-wrap .cli-parcours-summary-cta svg { transition: transform .15s ease; }
.cv-vault-wrap .cli-parcours-summary:hover .cli-parcours-summary-cta svg { transform: translateX(3px); }
@media (max-width: 540px) {
    .cv-vault-wrap .cli-parcours-summary { padding: 16px 14px 12px; }
    .cv-vault-wrap .cli-parcours-summary-title { font-size: 15px; }
    .cv-vault-wrap .cli-parcours-summary-circle { width: 60px; height: 60px; }
    .cv-vault-wrap .cli-parcours-summary-circle svg { width: 60px; height: 60px; }
    .cv-vault-wrap .cli-parcours-summary-pct { font-size: 14px; }
}

/* ─── Progress card (dossier advancement) ─── */
.cv-vault-wrap .cli-progress-card {
    padding: 18px 20px;
    margin-bottom: 18px;
    background: var(--cvf-card);
    border: 1.5px solid var(--cvf-border);
    border-radius: var(--cvf-radius, 12px);
    box-shadow: var(--cvf-shadow);
}

/* ═══ v11.70.37 — Alerte accueil « Documents demandés » (cliquable → onglet dédié) ═══ */
.cv-vault-wrap .cv-requests-alert {
    display: flex;
    align-items: center;
    gap: 14px;
    width: 100%;
    text-align: left;
    margin: 0 0 20px;
    padding: 15px 18px;
    border: none;
    border-left: 5px solid #f59e0b;
    border-radius: 14px;
    cursor: pointer;
    color: #7c2d12;
    background: linear-gradient(135deg, #fff7ed 0%, #ffedd5 100%);
    box-shadow: 0 6px 20px rgba(245, 158, 11, 0.18);
    transition: transform .15s ease, box-shadow .15s ease;
}
.cv-vault-wrap .cv-requests-alert:hover { transform: translateY(-2px); box-shadow: 0 10px 26px rgba(245, 158, 11, 0.26); }
.cv-vault-wrap .cv-requests-alert-icon {
    flex: 0 0 auto; display: inline-flex; align-items: center; justify-content: center;
    width: 42px; height: 42px; border-radius: 12px; background: #f59e0b; color: #fff;
}
.cv-vault-wrap .cv-requests-alert-text { flex: 1 1 auto; display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.cv-vault-wrap .cv-requests-alert-text strong { font-size: 14px; font-weight: 700; color: #92400e; }
.cv-vault-wrap .cv-requests-alert-count { display: inline-flex; align-items: center; justify-content: center; min-width: 20px; height: 18px; padding: 0 6px; margin-left: 4px; background: #f59e0b; color: #fff; border-radius: 20px; font-size: 11px; font-weight: 700; }
.cv-vault-wrap .cv-requests-alert-text > span { font-size: 12.5px; color: #b45309; }
.cv-vault-wrap .cv-requests-alert-arrow { flex: 0 0 auto; color: #d97706; font-size: 22px; width: 22px; height: 22px; }

/* Onglet dédié : pastille de mise en avant */
.cv-vault-wrap .cv-tab--requests .cv-tab-count { background: #f59e0b; color: #fff; }

/* v11.70.40 — Panneau « Documents demandés » : IDENTIQUE aux Dossiers (section blanche, padding 0, header bandeau orange) */
.cv-vault-wrap .cv-requests-section {
    background: #ffffff;
    border: 1px solid var(--cvf-border, #e4e8ee);
    border-radius: 10px;
    padding: 0;
    overflow: hidden;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.06);
}
/* En-tête : bandeau orange + accent gauche + MÊME HAUTEUR que les autres onglets (64px) */
.cv-vault-wrap .cv-requests-section > .cvf-section-header {
    background: linear-gradient(135deg, #fff7ed 0%, #ffedd5 100%);
    border-left: 4px solid #f59e0b;
    min-height: 64px;
    align-items: center;
}
.cv-vault-wrap .cv-requests-section .cvf-section-header h2 svg { color: #f59e0b; }
/* Barre de filtres COLLÉE au header (comme les Dossiers : margin-top 0, pleine largeur) */
.cv-vault-wrap #cv-panel-requests .cv-filter-bar { margin: 0 0 14px 0; }
/* Boutons de filtre stylés comme les Dossiers, en orange */
.cv-vault-wrap .cv-req-filter-bar .cv-doc-ftype-btn {
    padding: 6px 14px; border: 1px solid var(--cvf-border, #e8ecf0); border-radius: 8px;
    background: #fff; font-size: 12px; font-weight: 600; color: var(--cvf-text-muted, #64748b);
    cursor: pointer; transition: all .15s; white-space: nowrap;
}
.cv-vault-wrap .cv-req-filter-bar .cv-doc-ftype-btn:hover { border-color: #f59e0b; color: #b45309; }
.cv-vault-wrap .cv-req-filter-bar .cv-doc-ftype-btn.active { background: #f59e0b; color: #fff; border-color: #f59e0b; }
.cv-vault-wrap .cv-req-filter-bar .cv-req-ftype-retard.active { background: #dc2626; border-color: #dc2626; }
/* Liste des demandes (1 colonne, cartes riches) */
.cv-vault-wrap .cv-req-list { display: flex; flex-direction: column; gap: 12px; padding: 14px 16px 18px; }
.cv-vault-wrap #cv-req-list .cli-progress-card { margin: 0; border-left: 4px solid #f59e0b; }
.cv-vault-wrap #cv-req-list .cli-progress-header { display: flex; align-items: center; gap: 10px; }
.cv-vault-wrap .cv-req-card-icon {
    flex: 0 0 auto; display: inline-flex; align-items: center; justify-content: center;
    width: 34px; height: 34px; border-radius: 9px; background: #fff3e0; color: #f59e0b;
}
.cv-vault-wrap #cv-req-list .cli-progress-title { flex: 1 1 auto; min-width: 0; }
.cv-vault-wrap .cv-req-badge {
    flex: 0 0 auto; display: inline-flex; align-items: center; padding: 3px 10px;
    border-radius: 20px; font-size: 11px; font-weight: 700; white-space: nowrap;
}
.cv-vault-wrap .cv-req-badge-encours { background: #fef3c7; color: #92400e; }
.cv-vault-wrap .cv-req-badge-retard { background: #fee2e2; color: #991b1b; }
.cv-vault-wrap .cv-req-badge-terminee { background: #dcfce7; color: #166534; }
.cv-vault-wrap .cv-req-noresults { text-align: center; padding: 24px; color: var(--cvf-text-muted, #6b7280); }

.cv-vault-wrap .cli-progress-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 10px;
    /* v11.15.0 — tout le header est cliquable pour replier/déplier */
    cursor: pointer;
    user-select: none;
    padding: 4px 6px;
    margin-left: -6px;
    margin-right: -6px;
    border-radius: 8px;
    transition: background .15s ease;
}
.cv-vault-wrap .cli-progress-header:hover {
    background: rgba(var(--cvf-primary-rgb), 0.04);
}
.cv-vault-wrap .cli-progress-title {
    font-size: 14px;
    font-weight: 700;
    color: var(--cvf-text);
}
.cv-vault-wrap .cli-progress-count {
    font-size: 13px;
    font-weight: 600;
    color: var(--cvf-primary);
}
/* Project card accordion toggle */
.cv-vault-wrap .cli-project-toggle {
    background: none;
    border: none;
    cursor: pointer;
    padding: 4px;
    margin-left: 8px;
    border-radius: 4px;
    color: var(--cvf-text-muted, #8a94a6);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    transition: color .2s, background .2s, transform .2s;
    flex-shrink: 0;
}
.cv-vault-wrap .cli-project-toggle:hover {
    color: var(--cvf-primary);
    background: rgba(var(--cvf-primary-rgb), 0.08);
}
.cv-vault-wrap .cli-project-toggle .cli-project-toggle-icon {
    transition: transform .25s ease;
}
.cv-vault-wrap .cli-project-card.cli-project-collapsed .cli-project-toggle .cli-project-toggle-icon {
    transform: rotate(-90deg);
}
.cv-vault-wrap .cli-project-card .cli-project-collapsible {
    overflow: hidden;
    transition: max-height .3s ease, opacity .25s ease, margin-top .25s ease;
    opacity: 1;
}
.cv-vault-wrap .cli-project-card.cli-project-collapsed .cli-project-collapsible {
    max-height: 0 !important;
    opacity: 0;
    margin-top: 0 !important;
    pointer-events: none;
}
.cv-vault-wrap .cli-progress-bar {
    height: 8px;
    background: rgba(var(--cvf-primary-rgb), 0.08);
    border-radius: 10px;
    overflow: hidden;
}
.cv-vault-wrap .cli-progress-fill {
    height: 100%;
    background: linear-gradient(90deg, var(--cvf-primary), var(--cvf-accent, #e8913a));
    border-radius: 10px;
    transition: width .6s ease;
    min-width: 4px;
}
.cv-vault-wrap .cli-progress-pending {
    margin-top: 14px;
    padding-top: 12px;
    border-top: 1px solid var(--cvf-border);
}
.cv-vault-wrap .cli-progress-pending-label {
    display: block;
    font-size: 12px;
    font-weight: 600;
    color: var(--cvf-text-muted);
    margin-bottom: 8px;
}
.cv-vault-wrap .cli-req-item {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 8px;
    padding: 10px 0;
    font-size: 13px;
    color: var(--cvf-text);
    border-bottom: 1px solid rgba(0,0,0,.05);
}
.cv-vault-wrap .cli-req-item:last-child { border-bottom: none; }
.cv-vault-wrap .cli-req-item svg { color: var(--cvf-text-muted); flex-shrink: 0; }
.cv-vault-wrap .cli-req-label { flex: 1; min-width: 0; font-weight: 500; }
.cv-vault-wrap .cli-req-desc {
    width: 100%;
    padding-left: 20px;
    font-size: 12px;
    color: var(--cvf-text-muted);
    margin-top: -4px;
}
.cv-vault-wrap .cli-req-urgent svg { color: #e74c3c; }
.cv-vault-wrap .cli-req-badge-urgent {
    font-size: 9px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .5px;
    padding: 2px 8px;
    border-radius: 10px;
    background: #fef2f2;
    color: #dc2626;
}

/* ─── Completed request state ─── */
.cv-vault-wrap .cli-req-completed {
    opacity: 0.7;
}
.cv-vault-wrap .cli-req-completed .cli-req-label {
    text-decoration: line-through;
    text-decoration-color: rgba(0,0,0,.25);
}
.cv-vault-wrap .cli-req-check { color: #22c55e !important; }
.cv-vault-wrap .cli-req-badge-done {
    font-size: 9px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .5px;
    padding: 2px 8px;
    border-radius: 10px;
    background: #f0fdf4;
    color: #16a34a;
}

/* ─── Provide button ─── */
.cv-vault-wrap .cli-req-provide-btn {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    padding: 5px 14px;
    border: 1.5px solid var(--cvf-primary, #3b82f6);
    border-radius: 8px;
    background: transparent;
    color: var(--cvf-primary, #3b82f6);
    font-size: 11px;
    font-weight: 600;
    cursor: pointer;
    transition: background .2s, color .2s;
    white-space: nowrap;
    margin-left: auto;
}
.cv-vault-wrap .cli-req-provide-btn:hover {
    background: var(--cvf-primary, #3b82f6);
    color: #fff;
}
.cv-vault-wrap .cli-req-provide-btn:hover svg { stroke: #fff; }

/* ─── Mini upload zone ─── */
.cv-vault-wrap .cli-req-upload-zone {
    width: 100%;
    padding: 12px 0 4px;
}
.cv-vault-wrap .cli-req-dropzone {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    padding: 16px;
    border: 2px dashed var(--cvf-border, #e0e0e0);
    border-radius: 10px;
    background: rgba(var(--cvf-primary-rgb, 59,130,246), 0.03);
    font-size: 12px;
    color: var(--cvf-text-muted);
    transition: border-color .2s, background .2s;
    cursor: pointer;
}
.cv-vault-wrap .cli-req-dropzone.cli-req-dragover {
    border-color: var(--cvf-primary, #3b82f6);
    background: rgba(var(--cvf-primary-rgb, 59,130,246), 0.08);
}
.cv-vault-wrap .cli-req-browse {
    color: var(--cvf-primary, #3b82f6);
    font-weight: 600;
    cursor: pointer;
    text-decoration: underline;
}
.cv-vault-wrap .cli-req-cancel-btn {
    display: block;
    margin: 8px 0 0;
    padding: 0;
    border: none;
    background: none;
    color: var(--cvf-text-muted);
    font-size: 11px;
    cursor: pointer;
    text-decoration: underline;
}
.cv-vault-wrap .cli-req-upload-progress {
    padding: 10px 0;
}
.cv-vault-wrap .cli-req-upload-bar {
    height: 6px;
    background: var(--cvf-border, #e0e0e0);
    border-radius: 4px;
    overflow: hidden;
}
.cv-vault-wrap .cli-req-upload-fill {
    height: 100%;
    background: linear-gradient(90deg, var(--cvf-primary, #3b82f6), var(--cvf-accent, #e8913a));
    border-radius: 4px;
    transition: width .3s ease;
    min-width: 4px;
}
.cv-vault-wrap .cli-req-upload-text {
    display: block;
    margin-top: 4px;
    font-size: 11px;
    color: var(--cvf-text-muted);
}

/* ─── Multi-file list preview ─── */
.cv-vault-wrap .cli-req-file-list {
    padding: 6px 0 4px;
}
.cv-vault-wrap .cli-req-file-item {
    display: flex;
    align-items: center;
    gap: 6px;
    padding: 4px 8px;
    font-size: 12px;
    color: var(--cvf-text, #1a1a1a);
    border-radius: 6px;
    margin-bottom: 3px;
    background: var(--cvf-bg-alt, #f8f9fa);
}
.cv-vault-wrap .cli-req-file-item small {
    color: var(--cvf-text-muted, #666);
}
.cv-vault-wrap .cli-req-file-item.cli-req-file-done {
    color: #22c55e;
}
.cv-vault-wrap .cli-req-file-item .cli-req-file-icon {
    flex-shrink: 0;
    width: 16px;
    text-align: center;
}

/* ─── File/Link type tabs ─── */
.cv-vault-wrap .cli-req-type-tabs {
    display: flex;
    gap: 0;
    margin-bottom: 10px;
    border: 1.5px solid var(--cvf-border, #e0e0e0);
    border-radius: 8px;
    overflow: hidden;
}
.cv-vault-wrap .cli-req-type-tab {
    flex: 1;
    padding: 7px 10px;
    border: none;
    background: transparent;
    font-size: 11px;
    font-weight: 600;
    color: var(--cvf-text-muted);
    cursor: pointer;
    transition: background .15s, color .15s;
    text-align: center;
}
.cv-vault-wrap .cli-req-type-tab.active {
    background: var(--cvf-primary, #3b82f6);
    color: #fff;
}
.cv-vault-wrap .cli-req-type-tab:not(.active):hover {
    background: rgba(var(--cvf-primary-rgb, 59,130,246), 0.06);
}
/* Link form */
.cv-vault-wrap .cli-req-link-form {
    display: flex;
    gap: 8px;
    align-items: center;
}
.cv-vault-wrap .cli-req-link-input {
    flex: 1;
    padding: 10px 12px;
    border: 1.5px solid var(--cvf-border, #e0e0e0);
    border-radius: 8px;
    font-size: 12px;
    font-family: inherit;
    transition: border-color .15s;
}
.cv-vault-wrap .cli-req-link-input:focus {
    border-color: var(--cvf-primary, #3b82f6);
    outline: none;
}
.cv-vault-wrap .cli-req-link-submit {
    padding: 10px 16px;
    border: none;
    border-radius: 8px;
    background: var(--cvf-primary, #3b82f6);
    color: #fff;
    font-size: 12px;
    font-weight: 600;
    cursor: pointer;
    white-space: nowrap;
    transition: background .15s;
}
.cv-vault-wrap .cli-req-link-submit:hover {
    opacity: 0.9;
}
/* Project submitted message */
.cv-vault-wrap .cli-project-submitted-msg {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 14px 16px;
    margin-top: 14px;
    background: linear-gradient(135deg, #fefce8 0%, #fef9c3 100%);
    border: 1.5px solid #fde68a;
    border-left: 4px solid #f59e0b;
    border-radius: var(--cvf-radius, 10px);
    font-size: 13px;
    color: var(--cvf-text);
    line-height: 1.5;
}
.cv-vault-wrap .cli-project-submitted-msg svg {
    flex-shrink: 0;
    color: #f59e0b;
}

/* ─── Project deadline ─── */
.cv-vault-wrap .cli-project-deadline {
    display: flex;
    align-items: center;
    gap: 6px;
    margin: 6px 0 2px;
    font-size: 12px;
    color: var(--cvf-text-muted, #666);
    line-height: 1;
}
.cv-vault-wrap .cli-project-deadline svg {
    flex-shrink: 0;
}
.cv-vault-wrap .cli-deadline-soon {
    color: #f59e0b;
    font-weight: 600;
}
.cv-vault-wrap .cli-deadline-urgent {
    color: #ef4444;
    font-weight: 700;
}
.cv-vault-wrap .cli-deadline-overdue {
    color: #dc2626;
    font-weight: 700;
    background: #fef2f2;
    padding: 4px 10px;
    border-radius: 8px;
    border: 1px solid #fecaca;
}

/* ─── Progress empty state ─── */
.cv-vault-wrap .cli-progress-empty {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-top: 14px;
    padding-top: 12px;
    border-top: 1px solid var(--cvf-border);
    font-size: 13px;
    color: var(--cvf-text-muted);
}
.cv-vault-wrap .cli-progress-empty svg {
    flex-shrink: 0;
    color: #22c55e;
}

/* ─── Requests-linked message (disappears when all done) ─── */
.cv-vault-wrap .cli-requests-message {
    display: flex;
    align-items: flex-start;
    gap: 8px;
    padding: 12px 14px;
    margin-top: 14px;
    background: linear-gradient(135deg, #fefce8 0%, #fef9c3 100%);
    border: 1.5px solid #fde68a;
    border-left: 4px solid #f59e0b;
    border-radius: var(--cvf-radius, 10px);
    font-size: 13px;
    line-height: 1.5;
    color: var(--cvf-text);
    transition: opacity .4s, max-height .4s;
}
.cv-vault-wrap .cli-requests-message svg {
    flex-shrink: 0;
    margin-top: 2px;
    color: #f59e0b;
}
.cv-vault-wrap .cli-requests-message-content {
    display: flex;
    flex-direction: column;
    gap: 2px;
}
.cv-vault-wrap .cli-requests-message-from {
    font-size: 11px;
    font-weight: 700;
    color: var(--cvf-text-muted);
    text-transform: uppercase;
    letter-spacing: .3px;
}
.cv-vault-wrap .cli-requests-message.cli-fade-out {
    opacity: 0;
    max-height: 0;
    padding: 0;
    margin: 0;
    border: none;
    overflow: hidden;
}

/* ─── Unread badge on block headers ─── */
.cv-vault-wrap .cli-unread-badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 18px;
    height: 18px;
    padding: 0 5px;
    border-radius: 10px;
    background: #ef4444;
    color: #fff !important;
    font-size: 10px !important;
    font-weight: 700 !important;
    line-height: 1;
    margin-left: 6px;
    vertical-align: middle;
}

/* Sortable dashboard layout — v11.86.105 : FLEXBOX adaptatif. Chaque bloc a une largeur de
   base (flex-basis) mais GRANDIT (flex-grow:1) pour remplir la ligne quelle que soit sa
   position → on peut déplacer n'importe quel bloc n'importe où, ils s'adaptent. Blocs-résumé =
   base 1/3 (3 par ligne) ; To-do = pleine largeur ; Nouveautés/Parcours = base 1/2 (2-up). */
.cv-vault-wrap .cli-dashboard-sortable {
    display: flex;
    flex-wrap: wrap;
    gap: 20px; /* v11.86.106 — espacement unique = celui recherche→To-do (référence) */
    align-items: stretch;
}
.cv-vault-wrap .cli-dashboard-sortable > .cli-block {
    flex: 1 1 calc(33.333% - 14px); /* base 1/3 pour un gap de 20px (40px / 3 ≈ 14) */
    min-width: 260px;
    min-height: 0;
}
/* Modules d'action (placés APRÈS la règle .cli-block pour gagner en spécificité égale) */
.cv-vault-wrap .cli-dashboard-sortable > .cvf-home-todo { flex: 1 1 100%; }
/* v11.86.122 — Grande zone parcours (cartes détaillées) = pleine largeur, comme la To-do */
.cv-vault-wrap .cli-dashboard-sortable > .cvf-home-parcours-zone { flex: 1 1 100%; }
.cv-vault-wrap .cli-dashboard-sortable > .cvf-home-news,
.cv-vault-wrap .cli-dashboard-sortable > .cvf-home-parcours { flex: 1 1 calc(50% - 10px); min-width: 320px; }
/* Activity block — always full width, outside sortable */
.cv-vault-wrap .cli-block-activity-pinned {
    margin-top: 18px;
}
/* Legacy grid (kept for compatibility) */
.cv-vault-wrap .cli-grid-2 {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
    margin-bottom: 20px;
}
@media (max-width: 768px) {
    .cv-vault-wrap .cli-grid-2 { grid-template-columns: 1fr; }
}

/* ─── Block base ─── */
.cv-vault-wrap .cli-block {
    background: var(--cvf-card);
    border: 1.5px solid var(--cvf-border);
    border-radius: var(--cvf-radius);
    box-shadow: var(--cvf-shadow);
    overflow: hidden;
    transition: border-color .2s;
}
.cv-vault-wrap .cli-block:hover {
    border-color: rgba(var(--cvf-primary-rgb), 0.15);
}

/* Full-width grid for single blocks */
.cv-vault-wrap .cli-grid-1 {
    display: grid;
    grid-template-columns: 1fr;
    gap: 18px;
    margin-bottom: 18px;
}

/* ─── Block header — gradient per type (matching admin) ─── */
.cv-vault-wrap .cli-block-hdr {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 14px 16px;
    border-bottom: 1px solid var(--cvf-border);
    cursor: default;
}
.cv-vault-wrap .cli-block-hdr h4 {
    font-size: 14px !important;
    font-weight: 700 !important;
    margin: 0 !important;
    padding: 0 !important;
    letter-spacing: -0.2px;
    line-height: 1.3 !important;
    white-space: nowrap;
    flex: 1;
    min-width: 0;
    /* v11.86.401 — le titre s'ellipse au lieu de chevaucher les toggles : tout reste sur 1 ligne */
    overflow: hidden;
    text-overflow: ellipsis;
}
/* Header right actions */
.cv-vault-wrap .cli-hdr-actions {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-shrink: 0;
    flex-wrap: nowrap;
}
/* Drag handle */
.cv-vault-wrap .cli-drag-handle {
    cursor: grab;
    opacity: 0.3;
    color: inherit;
    flex-shrink: 0;
    transition: opacity .15s;
    display: flex;
    align-items: center;
}
.cv-vault-wrap .cli-drag-handle:hover { opacity: 0.8; }
.cv-vault-wrap .cli-drag-handle:active { cursor: grabbing; }
.cv-vault-wrap .cli-grip { display: block; }
/* Collapse toggle */
.cv-vault-wrap .cli-collapse-toggle {
    cursor: pointer;
    display: flex;
    align-items: center;
    opacity: 0.4;
    transition: opacity .15s, transform .2s;
    flex-shrink: 0;
}
.cv-vault-wrap .cli-collapse-toggle:hover { opacity: 0.8; }
.cv-vault-wrap .cli-chevron { transition: transform .2s; }
.cv-vault-wrap .cli-block.cli-collapsed .cli-chevron { transform: rotate(-90deg); }
/* Collapsed state */
.cv-vault-wrap .cli-block.cli-collapsed .cli-block-body,
.cv-vault-wrap .cli-block.cli-collapsed .cli-block-footer {
    display: none;
}
.cv-vault-wrap .cli-block.cli-collapsed {
    border-bottom: none;
}
.cv-vault-wrap .cli-block.cli-collapsed .cli-block-hdr {
    border-bottom: none;
}
/* Drag states */
.cv-vault-wrap .cli-block.cli-dragging {
    opacity: 0.4;
}
.cv-vault-wrap .cli-block.cli-drag-over {
    box-shadow: 0 -3px 0 0 var(--cvf-primary) !important;
}

/* Documents — bleu */
.cv-vault-wrap .cli-hdr-documents {
    background: linear-gradient(135deg, #eff6ff 0%, #dbeafe 100%) !important;
    border-left: 4px solid #3b82f6;
}
.cv-vault-wrap .cli-hdr-documents h4 { color: #1e40af !important; }

/* Fiches — jaune doré */
.cv-vault-wrap .cli-hdr-cards {
    background: linear-gradient(135deg, #fefce8 0%, #fef9c3 100%) !important;
    border-left: 4px solid #eab308;
}
.cv-vault-wrap .cli-hdr-cards h4 { color: #854d0e !important; }

/* Liens — vert */
.cv-vault-wrap .cli-hdr-links {
    background: linear-gradient(135deg, #f0fdf4 0%, #dcfce7 100%) !important;
    border-left: 4px solid #22c55e;
}
.cv-vault-wrap .cli-hdr-links h4 { color: #166534 !important; }

/* Bloc-notes — orange */
.cv-vault-wrap .cli-hdr-notepad {
    background: linear-gradient(135deg, #fff7ed 0%, #ffedd5 100%) !important;
    border-left: 4px solid #f97316;
}
.cv-vault-wrap .cli-hdr-notepad h4 { color: #9a3412 !important; }

/* Médias — violet */
.cv-vault-wrap .cli-hdr-embeds {
    background: linear-gradient(135deg, #faf5ff 0%, #f3e8ff 100%) !important;
    border-left: 4px solid #a855f7;
}
.cv-vault-wrap .cli-hdr-embeds h4 { color: #6b21a8 !important; }

/* Activité — gris ardoise */
.cv-vault-wrap .cli-hdr-activity {
    background: linear-gradient(135deg, #f8fafc 0%, #f1f5f9 100%) !important;
    border-left: 4px solid #64748b;
}
.cv-vault-wrap .cli-hdr-activity h4 { color: #334155 !important; }

/* Échanges admin — bleu sarcelle */
.cv-vault-wrap .cli-hdr-admin {
    background: linear-gradient(135deg, #f0fdfa 0%, #ccfbf1 100%) !important;
    border-left: 4px solid #14b8a6;
}
.cv-vault-wrap .cli-hdr-admin h4 { color: #115e59 !important; }

/* "Tout voir" link — styled as mini button in header */
.cv-vault-wrap .cli-block-link {
    font-size: 12px;
    font-weight: 600;
    cursor: pointer;
    text-decoration: none !important;
    white-space: nowrap;
    padding: 4px 12px;
    border-radius: 6px;
    background: rgba(255,255,255,.7);
    border: 1px solid rgba(0,0,0,.08);
    transition: all .15s;
    flex-shrink: 0;
}
.cv-vault-wrap .cli-hdr-documents .cli-block-link { color: #1e40af !important; }
.cv-vault-wrap .cli-hdr-cards .cli-block-link { color: #854d0e !important; }
.cv-vault-wrap .cli-hdr-links .cli-block-link { color: #166534 !important; }
.cv-vault-wrap .cli-hdr-notepad .cli-block-link { color: #9a3412 !important; }
.cv-vault-wrap .cli-hdr-embeds .cli-block-link { color: #6b21a8 !important; }
.cv-vault-wrap .cli-hdr-activity .cli-block-link { color: #334155 !important; }
.cv-vault-wrap .cli-hdr-admin .cli-block-link { color: #115e59 !important; }
.cv-vault-wrap .cli-block-link:hover {
    background: rgba(255,255,255,.9);
}

/* ─── Block body ─── */
.cv-vault-wrap .cli-block-body {
    overflow: hidden;
}

/* Hidden items — shown when block is expanded */
.cv-vault-wrap .cli-item-hidden {
    display: none !important;
}
.cv-vault-wrap .cli-block.cli-expanded .cli-item-hidden {
    display: flex !important;
}
/* Enable scroll when expanded */
.cv-vault-wrap .cli-block.cli-expanded .cli-block-body {
    max-height: 400px;
    overflow-y: auto;
}

/* Period filter — hide items outside date range */
.cv-vault-wrap .cv-period-hidden {
    display: none !important;
}

/* Custom scrollbar (only visible when expanded) */
.cv-vault-wrap .cli-block.cli-expanded .cli-block-body::-webkit-scrollbar {
    width: 6px;
}
.cv-vault-wrap .cli-block.cli-expanded .cli-block-body::-webkit-scrollbar-track {
    background: transparent;
    margin: 4px 0;
}
.cv-vault-wrap .cli-block.cli-expanded .cli-block-body::-webkit-scrollbar-thumb {
    background: rgba(var(--cvf-primary-rgb), 0.15);
    border-radius: 10px;
}
.cv-vault-wrap .cli-block.cli-expanded .cli-block-body::-webkit-scrollbar-thumb:hover {
    background: rgba(var(--cvf-primary-rgb), 0.3);
}
/* Firefox scrollbar */
.cv-vault-wrap .cli-block.cli-expanded .cli-block-body {
    scrollbar-width: thin;
    scrollbar-color: rgba(var(--cvf-primary-rgb), 0.15) transparent;
}

/* ─── Block footer (Voir plus) ─── */
.cv-vault-wrap .cli-block-footer {
    padding: 10px 20px;
    border-top: 1px solid var(--cvf-border);
    text-align: center;
    background: rgba(var(--cvf-primary-rgb), 0.015);
}
.cv-vault-wrap .cli-voir-plus {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 6px 20px;
    border: 1.5px solid var(--cvf-border);
    border-radius: 8px;
    background: var(--cvf-card);
    color: var(--cvf-primary);
    font-size: 12px;
    font-weight: 600;
    cursor: pointer;
    transition: background .2s, border-color .2s;
    font-family: inherit;
}
.cv-vault-wrap .cli-voir-plus:hover {
    background: rgba(var(--cvf-primary-rgb), 0.04);
    border-color: rgba(var(--cvf-primary-rgb), 0.2);
}

/* Empty state */
.cv-vault-wrap .cli-empty {
    padding: 24px 20px;
    text-align: center;
    color: var(--cvf-text-muted);
    font-size: 13px;
}

/* ─── Block items (shared) ─── */
.cv-vault-wrap .cli-item {
    display: flex;
    align-items: center !important;
    gap: 12px !important;
    padding: 10px 16px !important;
    margin: 0 !important;
    border-bottom: 1px solid var(--cvf-border) !important;
    border-top: none !important;
    border-left: none !important;
    border-right: none !important;
    border-radius: 0 !important;
    cursor: pointer;
    transform: none !important;
    box-shadow: none !important;
    line-height: 1.4 !important;
}
/* cli-item-hidden MUST win over cli-item display */
.cv-vault-wrap .cli-item.cli-item-hidden,
.cv-vault-wrap .cli-act-item.cli-item-hidden {
    display: none !important;
}
.cv-vault-wrap .cli-block.cli-expanded .cli-item.cli-item-hidden {
    display: flex !important;
}
.cv-vault-wrap .cli-block.cli-expanded .cli-act-item.cli-item-hidden {
    display: flex !important;
}
.cv-vault-wrap .cli-item:last-child { border-bottom: none; }
.cv-vault-wrap .cli-item-icon {
    width: 28px; height: 28px; border-radius: 6px;
    display: flex; align-items: center; justify-content: center;
    flex-shrink: 0;
    color: var(--cvf-text-muted);
    opacity: 0.75;
}
.cv-vault-wrap .cli-item-icon svg {
    width: 14px; height: 14px;
    stroke-width: 1.5;
}
.cv-vault-wrap .cli-item-body { flex: 1; min-width: 0; }
.cv-vault-wrap .cli-item-name {
    font-size: 13px !important; font-weight: 600 !important; color: var(--cvf-text) !important;
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
    transform: none !important; letter-spacing: normal !important;
    padding: 0 !important; margin: 0 !important;
}
.cv-vault-wrap .cli-item-meta {
    font-size: 11px !important; color: var(--cvf-text-muted) !important; margin-top: 2px !important;
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
    transform: none !important; letter-spacing: normal !important;
    padding: 0 !important; margin-bottom: 0 !important; margin-left: 0 !important; margin-right: 0 !important;
}

/* Badges */
.cv-vault-wrap .cli-badge {
    padding: 3px 10px; border-radius: 20px; font-size: 10px; font-weight: 700;
    flex-shrink: 0; text-transform: uppercase; letter-spacing: 0.3px;
}
.cv-vault-wrap .cli-badge-new { background: rgba(39,174,96,.12); color: var(--cvf-success); }

/* ─── Activity items ─── */
.cv-vault-wrap .cli-act-item {
    display: flex; gap: 10px !important; padding: 10px 16px !important;
    margin: 0 !important;
    border-bottom: 1px solid var(--cvf-border) !important;
    border-top: none !important; border-left: none !important; border-right: none !important;
    border-radius: 0 !important;
    transform: none !important; box-shadow: none !important;
    line-height: 1.4 !important;
}
.cv-vault-wrap .cli-act-item:last-child { border-bottom: none; }
.cv-vault-wrap .cli-act-item.cv-dashboard-clickable { cursor: pointer; }
/* ── HOVER: ONLY background changes — nothing else ── */
.cv-vault-wrap .cli-item,
.cv-vault-wrap .cli-act-item {
    transition: background .2s ease !important;
}
.cv-vault-wrap .cli-item:hover {
    background: rgba(var(--cvf-primary-rgb), 0.04) !important;
}
.cv-vault-wrap .cli-act-item.cv-dashboard-clickable:hover {
    background: rgba(var(--cvf-primary-rgb), 0.04) !important;
}
/* Block ALL property changes on hover for items and ALL descendants */
.cv-vault-wrap .cli-item,
.cv-vault-wrap .cli-item *,
.cv-vault-wrap .cli-act-item,
.cv-vault-wrap .cli-act-item * {
    transition-property: background-color, background !important;
    transition-duration: .2s !important;
}
.cv-vault-wrap .cli-act-dot {
    width: 8px; height: 8px; border-radius: 50%; flex-shrink: 0; margin-top: 5px;
    box-shadow: 0 0 0 2px rgba(var(--cvf-primary-rgb), 0.06);
}
.cv-vault-wrap .cli-act-text { font-size: 13px !important; color: var(--cvf-text) !important; line-height: 1.5 !important; font-weight: 500 !important; transform: none !important; padding: 0 !important; margin: 0 !important; }
.cv-vault-wrap .cli-act-snippet { font-size: 12px !important; color: var(--cvf-text-muted) !important; margin-top: 2px !important; transform: none !important; padding: 0 !important; margin-bottom: 0 !important; }
.cv-vault-wrap .cli-act-time { font-size: 11px !important; color: var(--cvf-text-muted) !important; margin-top: 2px !important; font-variant-numeric: tabular-nums; transform: none !important; padding: 0 !important; margin-bottom: 0 !important; }

/* ─── Enriched activity items (Activité récente) ─── */
.cv-vault-wrap .cli-act-item-rich {
    align-items: center !important;
    gap: 12px !important;
    padding: 12px 16px !important;
}
.cv-vault-wrap .cli-act-type-icon {
    width: 36px; height: 36px; border-radius: 10px;
    display: flex; align-items: center; justify-content: center;
    font-size: 18px; flex-shrink: 0;
}
.cv-vault-wrap .cli-act-content {
    flex: 1; min-width: 0;
}
.cv-vault-wrap .cli-act-top-row {
    display: flex; align-items: center; gap: 8px;
    flex-wrap: wrap; margin-bottom: 3px;
}
.cv-vault-wrap .cli-act-badge {
    font-size: 10px !important; font-weight: 600; text-transform: uppercase;
    letter-spacing: 0.03em; padding: 2px 7px; border-radius: 4px;
    line-height: 1.4; white-space: nowrap;
}
.cv-vault-wrap .cli-act-action {
    font-size: 11px !important; color: var(--cvf-text) !important;
    font-weight: 600;
}
.cv-vault-wrap .cli-act-author {
    font-size: 11px !important; color: var(--cvf-text-muted) !important;
    font-weight: 500;
}
.cv-vault-wrap .cli-act-date {
    font-size: 11px !important; color: var(--cvf-text-muted) !important;
    margin-left: auto; white-space: nowrap;
    font-variant-numeric: tabular-nums;
}
.cv-vault-wrap .cli-act-item-rich .cli-act-text {
    font-size: 13px !important; font-weight: 500 !important;
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.cv-vault-wrap .cli-act-item-rich .cli-act-snippet {
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.cv-vault-wrap .cli-act-arrow {
    font-size: 18px; color: var(--cvf-text-muted); flex-shrink: 0;
    opacity: 0; transition: opacity .2s;
}
.cv-vault-wrap .cli-act-item-rich.cv-dashboard-clickable:hover .cli-act-arrow {
    opacity: 1;
}

/* ─── Activity author filter buttons ─── */
.cv-vault-wrap .cli-act-filter-wrap {
    display: inline-flex; gap: 0; margin-right: 6px;
    background: rgba(var(--cvf-primary-rgb), 0.06);
    border-radius: 6px; padding: 2px;
    flex-shrink: 0;
}
.cv-vault-wrap .cli-act-filter-btn {
    font-size: 11px !important; font-weight: 600;
    padding: 3px 9px; border: none; border-radius: 5px;
    background: transparent; color: var(--cvf-text-muted);
    cursor: pointer; transition: background .2s, color .2s;
    white-space: nowrap; line-height: 1.4;
    font-family: inherit;
}
.cv-vault-wrap .cli-act-filter-btn.active {
    background: var(--cvf-primary); color: #fff;
}
.cv-vault-wrap .cli-act-filter-btn:not(.active):hover {
    background: rgba(var(--cvf-primary-rgb), 0.1);
    color: var(--cvf-text);
}
.cv-vault-wrap .cli-act-item-rich.cli-act-filtered-out {
    display: none !important;
}

/* ─── Settings card (Paramètres tab) ─── */
.cv-vault-wrap .cli-settings-card {
    background: var(--cvf-card); border: 1.5px solid var(--cvf-border);
    border-radius: var(--cvf-radius); box-shadow: var(--cvf-shadow);
    padding: 22px; margin-bottom: 18px; transition: border-color .2s, box-shadow .2s;
}
.cv-vault-wrap .cli-settings-card:hover { border-color: rgba(var(--cvf-primary-rgb), 0.2); box-shadow: 0 4px 16px rgba(0,0,0,.06); }
.cv-vault-wrap .cli-settings-card h3 {
    font-size: 16px !important; color: var(--cvf-primary) !important;
    margin: 0 0 14px !important; display: flex; align-items: center; gap: 8px;
}

/* ─── Settings: Hints ─── */
.cv-vault-wrap .cv-settings-hint {
    font-size: 12px; color: var(--cvf-text-muted); margin: 0 0 14px;
}

/* ─── Settings: Tag items ─── */
.cv-vault-wrap .cv-tag-item {
    display: flex; align-items: center; gap: 6px;
    padding: 8px 14px; background: var(--cvf-hover-bg, #f8fafc);
    border: 1px solid var(--cvf-border); border-radius: 8px; margin-bottom: 8px;
}
.cv-vault-wrap .cv-tag-item-count {
    font-size: 11px; color: var(--cvf-text-muted);
}
.cv-vault-wrap .cv-tag-item-actions {
    display: flex; gap: 4px; margin-left: auto;
}
.cv-vault-wrap .cv-tag-rename,
.cv-vault-wrap .cv-tag-delete {
    background: none; border: none; cursor: pointer;
    font-size: 12px; padding: 2px 4px; border-radius: 4px;
    transition: background var(--cvf-transition, 0.15s ease);
    line-height: 1;
}
.cv-vault-wrap .cv-tag-rename:hover { background: rgba(var(--cvf-primary-rgb), 0.08); }
.cv-vault-wrap .cv-tag-delete:hover { background: rgba(231, 76, 60, 0.08); }

/* ─── Settings: Export selective ─── */
.cv-vault-wrap .cv-export-sections {
    margin-bottom: 16px;
}
.cv-vault-wrap .cv-export-select-all {
    display: flex; align-items: center; gap: 8px;
    padding: 10px 14px; margin-bottom: 10px;
    font-size: 13px; font-weight: 600; color: var(--cvf-text);
    cursor: pointer; user-select: none;
    border-bottom: 1px solid var(--cvf-separator, #f0f1f3);
}
/* ── Export cards grid ── */
.cv-vault-wrap .cv-export-toolbar {
    display: flex; justify-content: flex-end; margin-bottom: 12px;
}
.cv-vault-wrap .cv-export-select-toggle {
    background: none; border: none; color: var(--cvf-primary-light, #2a5298); font-size: 13px;
    cursor: pointer; padding: 4px 0; font-weight: 500;
}
.cv-vault-wrap .cv-export-select-toggle:hover { text-decoration: underline; }
.cv-vault-wrap .cv-export-grid {
    display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 10px;
    align-items: stretch;
}
.cv-vault-wrap .cv-export-card {
    position: relative; border-radius: 10px; padding: 14px 12px 12px;
    cursor: pointer; user-select: none; transition: all 0.2s ease;
    border: 2px solid transparent; background: var(--cvf-hover-bg, #f8f9fb);
    /* v11.86.201 — toutes les cartes à la même hauteur (la carte « Activité » n'a qu'une ligne). */
    display: flex; flex-direction: column; min-height: 102px; height: 100%;
}
.cv-vault-wrap .cv-export-card-on {
    border-color: var(--cvf-primary, #1e3a5f);
    background: rgba(var(--cvf-primary-rgb, 30,58,95), 0.04);
}
.cv-vault-wrap .cv-export-card:hover { box-shadow: 0 2px 8px rgba(0,0,0,0.06); }
.cv-vault-wrap .cv-export-card-input { position: absolute; opacity: 0; pointer-events: none; }
.cv-vault-wrap .cv-export-card-header {
    display: flex; align-items: center; justify-content: space-between; margin-bottom: 10px;
}
.cv-vault-wrap .cv-export-card-icon { font-size: 22px; line-height: 1; }
.cv-vault-wrap .cv-export-card-toggle {
    width: 36px; height: 20px; border-radius: 10px; position: relative;
    flex-shrink: 0; transition: background 0.2s;
}
.cv-vault-wrap .cv-export-card-toggle::after {
    content: ''; position: absolute; top: 2px; left: 2px; width: 16px; height: 16px;
    border-radius: 50%; background: #fff; transition: transform 0.2s; box-shadow: 0 1px 3px rgba(0,0,0,0.18);
}
.cv-vault-wrap .cv-export-card-toggle.toggle-on { background: #27ae60; }
.cv-vault-wrap .cv-export-card-toggle.toggle-on::after { transform: translateX(16px); }
.cv-vault-wrap .cv-export-card-toggle.toggle-off { background: #d0d5dd; }
.cv-vault-wrap .cv-export-card-body { display: flex; flex-direction: column; gap: 2px; flex: 1 1 auto; justify-content: center; }
.cv-vault-wrap .cv-export-card-title {
    font-size: 13px; font-weight: 600; color: var(--cvf-text, #2c3e50); line-height: 1.3;
}
.cv-vault-wrap .cv-export-card-count {
    font-size: 12px; color: var(--cvf-text-muted, #5a6c7d); font-weight: 500;
}
.cv-vault-wrap .cv-export-card-breakdown {
    font-size: 10.5px; color: var(--cvf-text-muted, #5a6c7d); opacity: 0.7; line-height: 1.4;
}
.cv-vault-wrap .cv-export-bd-sep { margin: 0 3px; }
@media (max-width: 480px) {
    .cv-vault-wrap .cv-export-grid { grid-template-columns: repeat(2, 1fr); }
}
.cv-vault-wrap .cv-export-actions {
    display: flex; gap: 10px; flex-wrap: wrap;
}

/* ─── Settings: Profile ─── */
/* v20.22.528 — « Mon profil » compact : avatar à gauche, champs en grille (Prénom/Nom/Nom affiché
   sur UNE ligne, Email + Membre depuis dessous), bouton Enregistrer aligné à droite. */
.cv-vault-wrap .cv-profile-section {
    display: grid; grid-template-columns: 150px minmax(0, 1fr); gap: 6px 26px; align-items: start;
}
.cv-vault-wrap .cv-profile-avatar-wrap {
    grid-row: 1 / span 2;
    display: flex; flex-direction: column; align-items: center; gap: 8px;
    padding-bottom: 0; border-bottom: none;
}
.cv-vault-wrap .cv-profile-section > .cv-btn-export {
    grid-column: 2; justify-self: end; width: auto; padding: 10px 24px; margin-top: 4px;
}
/* v20.22.529 — la barre de confirmation (insérée après le bouton) doit occuper TOUTE la largeur
   de la grille du profil, pas une seule colonne. */
.cv-vault-wrap .cv-profile-section > .cv-inline-confirm { grid-column: 1 / -1; justify-self: stretch; width: 100%; box-sizing: border-box; margin: 6px 0 0; }
@media (max-width: 760px) {
    .cv-vault-wrap .cv-profile-section { grid-template-columns: 1fr; }
    .cv-vault-wrap .cv-profile-avatar-wrap { grid-row: auto; }
    .cv-vault-wrap .cv-profile-section > .cv-btn-export { grid-column: 1; justify-self: stretch; }
}
.cv-vault-wrap .cv-profile-avatar {
    position: relative; width: 80px; height: 80px; border-radius: 50%;
    overflow: hidden; cursor: pointer;
    box-shadow: 0 2px 12px rgba(0,0,0,0.1);
}
.cv-vault-wrap .cv-profile-avatar img {
    position: absolute !important; top: 0 !important; left: 0 !important;
    width: 80px !important; height: 80px !important;
    object-fit: cover !important; border-radius: 50% !important;
}
/* v11.14.0 — Bulletproof : initiales en base, images révélées au chargement. */
.cv-vault-wrap .cv-profile-avatar-initials {
    position: absolute; top: 0; left: 0;
    width: 100%; height: 100%;
    display: flex; align-items: center; justify-content: center;
    border-radius: 50%;
    color: #fff; font-size: 28px; font-weight: 700;
    letter-spacing: 1px; line-height: 1;
    user-select: none;
    z-index: 1;
}
.cv-vault-wrap .cv-profile-avatar .cv-profile-avatar-img {
    z-index: 2;
    opacity: 0;
    transition: opacity 0.18s ease;
}
.cv-vault-wrap .cv-profile-avatar .cv-profile-avatar-img.cv-avatar-loaded {
    opacity: 1;
}
.cv-vault-wrap .cv-profile-avatar-overlay { z-index: 3; }
.cv-vault-wrap .cv-profile-avatar-overlay {
    position: absolute; inset: 0;
    background: rgba(0,0,0,0.5); color: #fff;
    display: flex; flex-direction: column; align-items: center; justify-content: center;
    gap: 2px; opacity: 0; transition: opacity 0.2s; font-size: 11px; font-weight: 600;
}
.cv-vault-wrap .cv-profile-avatar:hover .cv-profile-avatar-overlay { opacity: 1; }
.cv-vault-wrap .cv-profile-avatar-hint {
    font-size: 11px; color: var(--cvf-text-muted);
}
.cv-vault-wrap .cv-profile-fields {
    /* v20.22.528 — grille 3 colonnes : Prénom / Nom / Nom affiché sur une ligne, Email + Membre depuis dessous */
    display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px 16px;
}
@media (max-width: 760px) { .cv-vault-wrap .cv-profile-fields { grid-template-columns: 1fr; } }
.cv-vault-wrap .cv-profile-field {
    display: flex; flex-direction: column; gap: 4px;
}
.cv-vault-wrap .cv-profile-label {
    font-size: 12px; font-weight: 600; color: var(--cvf-text-muted);
    text-transform: uppercase; letter-spacing: 0.3px;
}
.cv-vault-wrap .cv-profile-input {
    padding: 10px 14px; border: 1.5px solid var(--cvf-border);
    border-radius: 8px; font-size: 14px; background: #fff;
    color: var(--cvf-text); transition: border-color 0.15s;
    font-family: inherit;
}
.cv-vault-wrap .cv-profile-input:focus {
    border-color: var(--cvf-primary); outline: none;
    box-shadow: 0 0 0 3px rgba(var(--cvf-primary-rgb), 0.1);
}
.cv-vault-wrap .cv-profile-value {
    font-size: 14px; color: var(--cvf-text); padding: 10px 0;
}
.cv-vault-wrap .cv-profile-hint {
    font-size: 11px; color: var(--cvf-text-muted); font-style: italic;
}

/* ─── Settings: Theme Picker ───
   v20.22.522 — tuiles de thème mises en avant : pleine largeur, plus grandes, plus d'air. */
.cv-vault-wrap .cv-theme-picker {
    display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 14px; margin: 4px 0 20px;
}
.cv-vault-wrap .cv-theme-swatch {
    display: flex; flex-direction: column; align-items: center; gap: 10px;
    padding: 22px 16px; border: 2px solid var(--cvf-border);
    border-radius: 16px; background: #fff; cursor: pointer;
    transition: all 0.15s; min-width: 0;
}
.cv-vault-wrap .cv-theme-swatch:hover {
    border-color: var(--cvf-primary-light); transform: translateY(-2px);
    box-shadow: 0 4px 12px rgba(0,0,0,0.08);
}
.cv-vault-wrap .cv-theme-swatch.active {
    border-color: var(--cvf-primary); background: rgba(var(--cvf-primary-rgb), 0.04);
    box-shadow: 0 0 0 3px rgba(var(--cvf-primary-rgb), 0.12);
}
.cv-vault-wrap .cv-theme-swatch-color {
    width: 54px; height: 54px; border-radius: 50%;
    box-shadow: 0 3px 10px rgba(0,0,0,0.18);
}
.cv-vault-wrap .cv-theme-swatch-label {
    font-size: 13px; font-weight: 700; color: var(--cvf-text);
}
.cv-vault-wrap .cv-theme-swatch.active .cv-theme-swatch-label {
    color: var(--cvf-primary);
}

/* ─── Settings: Responsive ─── */
@media (max-width: 600px) {
    .cv-vault-wrap .cv-theme-picker { gap: 8px; }
    .cv-vault-wrap .cv-theme-swatch { min-width: 60px; padding: 8px 10px; }
    .cv-vault-wrap .cv-export-actions { flex-direction: column; }
    .cv-vault-wrap .cv-export-actions .cv-btn-export,
    .cv-vault-wrap .cv-export-actions .cv-btn-secondary { width: 100%; justify-content: center; }
}

/* ═══════════════════════════════════════════════════════════════
   CORE v8 — RESPONSIVE ADDITIONS (Vue Client)
   ═══════════════════════════════════════════════════════════════ */
@media(max-width:768px){
    .cv-vault-wrap .dtool{flex-direction:column;align-items:flex-start}
    .cv-vault-wrap .dsrch{width:100%}
    .cv-vault-wrap .fiches-grid,.cv-vault-wrap .media-grid{grid-template-columns:1fr}
    .cv-vault-wrap .cli-dash{grid-template-columns:repeat(2,1fr)}
    .cv-vault-wrap .note-input{flex-direction:column}
    .cv-vault-wrap .note-field{width:100%}
    .cv-vault-wrap .note-send{width:100%}
    .cv-vault-wrap .cv-form-row{flex-direction:column}
    .cv-vault-wrap .cv-form-row>*{min-width:0}
    .cv-vault-wrap .link-item{flex-direction:column;align-items:flex-start;gap:10px}
    .cv-vault-wrap .link-actions{width:100%;justify-content:flex-end}
    .cv-vault-wrap .cv-filter-bar{flex-direction:column;align-items:flex-start}
    .cv-vault-wrap .dtbl{font-size:12px}
    .cv-vault-wrap .dtbl th,.cv-vault-wrap .dtbl td{padding:8px 10px}
}

@media(max-width:480px){
    .cv-vault-wrap .cli-welcome-row{flex-direction:column;gap:8px}
    .cv-vault-wrap .cli-welcome-chip{width:100%;justify-content:center}
    .cv-vault-wrap .dact-btn{width:24px;height:24px;font-size:11px}
    .cv-vault-wrap .media-preview{height:120px}
}

/* ═══════════════════════════════════════════════════════════════
   FRONTEND MEDIA — Action Buttons, Upload Zone, Embed Form, Lightbox v2
   ═══════════════════════════════════════════════════════════════ */

/* Media header action buttons */
.cv-media-header-btns {
    display: flex !important; gap: 8px; flex-wrap: wrap;
}
.cv-media-header-btns .cv-add-btn {
    display: inline-flex; align-items: center; gap: 5px;
    padding: 7px 14px; border-radius: 8px; font-size: 12px; font-weight: 600;
    cursor: pointer; transition: all .15s; border: 1.5px solid var(--cvf-border);
    background: var(--cvf-card); color: var(--cvf-text); font-family: inherit;
    white-space: nowrap;
}
.cv-media-header-btns .cv-add-btn:hover {
    border-color: var(--cvf-primary); color: var(--cvf-primary); background: #f0f7ff;
}
.cv-media-header-btns .cv-add-btn.cv-header-record-btn {
    background: linear-gradient(135deg, #e53935 0%, #b91c1c 100%) !important;
    color: #fff !important; border-color: transparent !important;
    box-shadow: 0 2px 8px rgba(220,38,38,.25);
    text-shadow: 0 1px 2px rgba(0,0,0,.2);
}
.cv-media-header-btns .cv-add-btn.cv-header-record-btn:hover {
    background: linear-gradient(135deg, #ef4444 0%, #e53935 100%) !important;
    box-shadow: 0 4px 12px rgba(220,38,38,.35);
    transform: translateY(-1px); color: #fff !important; border-color: transparent !important;
}
.cv-media-header-btns .cv-header-embed-btn { border-color: var(--cvf-accent); color: var(--cvf-accent); }
.cv-media-header-btns .cv-header-embed-btn:hover { background: #fff8f0; }
@media (max-width: 600px) {
    .cv-media-header-btns { gap: 4px; }
    .cv-media-header-btns .cv-add-btn { padding: 5px 10px; font-size: 11px; }
}

/* Upload zone — matches admin fiche client design */
.cv-front-upload-zone {
    border: 2px dashed var(--cvf-border); border-radius: 12px;
    padding: 24px; margin-bottom: 16px; background: var(--cvf-bg);
    transition: border-color .2s, background .2s;
}
.cv-front-upload-zone.dragover { border-color: var(--cvf-primary); background: #f0f7ff; }
.cv-upload-dropzone {
    text-align: center; padding: 32px 20px; cursor: pointer;
    color: var(--cvf-text-muted); font-size: 14px;
    display: flex; flex-direction: column; align-items: center; gap: 8px;
}
.cv-upload-dropzone:hover { color: var(--cvf-primary); }
.cv-upload-dropzone-icon {
    font-size: 40px; display: block; margin-bottom: 4px;
    filter: grayscale(0.3);
}
.cv-upload-dropzone p {
    margin: 0; font-size: 14px; color: var(--cvf-text); font-weight: 500;
}
.cv-upload-dropzone-browse {
    display: inline-flex; align-items: center; padding: 8px 20px;
    background: var(--cvf-primary); color: #fff; border-radius: 8px;
    font-weight: 600; font-size: 13px; cursor: pointer;
    transition: background .15s, transform .15s;
    box-shadow: 0 2px 6px rgba(30,58,95,.2);
}
.cv-upload-dropzone-browse:hover {
    background: #152d4a; transform: translateY(-1px);
}
.cv-upload-dropzone-hint {
    display: block; font-size: 11px; color: var(--cvf-text-muted);
    margin-top: 4px; font-style: italic;
}
/* Upload error message */
.cv-upload-error-msg {
    padding: 10px 14px; margin: 10px 0 0;
    background: #fef2f2; color: #991b1b;
    border: 1.5px solid #fecaca; border-radius: 10px;
    font-size: 12px; font-weight: 500; line-height: 1.5;
}
/* Upload file list */
.cv-upload-file-list { display: flex; flex-direction: column; gap: 12px; margin: 16px 0 0; }
/* Counter badge */
.cv-mu-counter {
    font-size: 12px; font-weight: 600; color: var(--cvf-text-muted);
    padding: 4px 12px; background: var(--cvf-bg-alt, #f8fafc);
    border-radius: 6px; display: inline-block; margin-bottom: 4px;
}
/* Upload card (per file) */
/* v20.22.506 — RÈGLE : les listes déroulantes sont TOUJOURS au premier plan.
   overflow:hidden coupait le menu « Ranger dans » (.cv-updf-pop) au bord de la carte. */
.cv-mu-card {
    background: var(--cvf-card); border: 1.5px solid var(--cvf-border);
    border-radius: 12px; overflow: visible; transition: border-color .15s;
}
.cv-mu-card:hover { border-color: var(--cvf-primary); }
.cv-mu-card-top {
    display: flex; align-items: center; justify-content: space-between;
    padding: 12px 14px; background: var(--cvf-bg-alt, #f8fafc);
    border-bottom: 1px solid var(--cvf-border);
}
.cv-mu-card-info { display: flex; align-items: center; gap: 10px; min-width: 0; flex: 1; }
.cv-mu-card-icon { font-size: 22px; flex-shrink: 0; }
.cv-mu-card-meta { min-width: 0; }
.cv-mu-card-filename {
    display: block; font-weight: 600; font-size: 13px;
    color: var(--cvf-text); white-space: nowrap;
    overflow: hidden; text-overflow: ellipsis; max-width: 220px;
}
.cv-mu-card-details {
    display: block; font-size: 11px; color: var(--cvf-text-muted); margin-top: 1px;
}
.cv-mu-card-remove {
    background: none; border: none; font-size: 20px; cursor: pointer;
    color: var(--cvf-text-muted); padding: 0 4px; line-height: 1;
    flex-shrink: 0; transition: color .15s;
}
.cv-mu-card-remove:hover { color: var(--cvf-danger); }
/* Card fields */
.cv-mu-card-fields {
    padding: 12px 14px; display: flex; flex-direction: column; gap: 8px;
}
.cv-mu-input {
    width: 100%; padding: 8px 12px;
    border: 1.5px solid var(--cvf-border); border-radius: 8px;
    font-size: 13px; font-family: inherit; box-sizing: border-box;
    transition: border-color .15s; background: #fff;
}
.cv-mu-input:focus { outline: none; border-color: var(--cvf-primary); }
/* Tags row per upload card */
.cv-mu-tags-row {
    display: flex; align-items: center; gap: 6px; flex-wrap: wrap;
    padding-top: 4px;
}
.cv-mu-tags-label { font-size: 11px; font-weight: 600; color: var(--cvf-text-muted); }
.cv-mu-tag-btn {
    padding: 3px 10px; border-radius: 20px;
    font-size: 11px; font-weight: 600; cursor: pointer;
    border: 1.5px solid var(--cvf-border); background: #fff;
    color: var(--cvf-text); transition: all .15s; font-family: inherit;
}
.cv-mu-tag-btn:hover { border-color: var(--cvf-primary); }
.cv-mu-tag-btn.cv-mu-tag-active {
    background: var(--cvf-primary); color: #fff;
    border-color: var(--cvf-primary);
}
/* Actions row */
.cv-upload-actions { display: flex; gap: 10px; margin-top: 14px; }
/* Progress bar */
.cv-upload-progress-bar {
    height: 8px; background: var(--cvf-border); border-radius: 4px;
    overflow: hidden; margin: 12px 0;
}
.cv-upload-progress-bar .cv-progress-fill {
    height: 100%; background: var(--cvf-primary); border-radius: 4px;
    transition: width .3s; width: 0%;
}
.cv-progress-text {
    display: block; text-align: center; font-size: 12px;
    color: var(--cvf-text-muted); margin-top: 4px; font-weight: 500;
}

/* ═══ Recording zone (embedded, not overlay) ═══ */
.cv-front-recording-zone {
    border: 2px solid var(--cvf-border); border-radius: 14px;
    padding: 24px; margin-bottom: 16px; background: var(--cvf-card);
    transition: border-color .2s;
}
/* Header */
.cv-rec-zone-header {
    display: flex; align-items: center; justify-content: space-between;
    margin-bottom: 16px;
}
.cv-rec-zone-title {
    font-size: 15px; font-weight: 700; color: var(--cvf-text);
    display: flex; align-items: center; gap: 6px;
}
.cv-rec-pulse { animation: cvRecPulse 1.5s ease-in-out infinite; }
@keyframes cvRecPulse { 0%,100% { opacity:1; } 50% { opacity:.5; } }
/* Mode buttons */
.cv-front-recording-zone .cv-record-modes {
    display: flex; gap: 12px; justify-content: center; margin-bottom: 0;
}
.cv-front-recording-zone .cv-record-mode-btn {
    display: flex; flex-direction: column; align-items: center; gap: 6px;
    padding: 20px 28px; border: 2px solid var(--cvf-border); border-radius: 14px;
    background: #fff; cursor: pointer; transition: all 0.2s; min-width: 120px;
    font-family: inherit;
}
.cv-front-recording-zone .cv-record-mode-btn:hover {
    border-color: var(--cvf-primary); background: #f0f7ff;
    transform: translateY(-2px); box-shadow: 0 4px 12px rgba(30,58,95,.1);
}
.cv-front-recording-zone .cv-record-mode-btn.active {
    border-color: var(--cvf-primary); background: #e8f0fe;
    color: var(--cvf-primary); box-shadow: 0 4px 12px rgba(30,58,95,.15);
}
.cv-rec-mode-icon { font-size: 28px; }
.cv-rec-mode-label { font-size: 14px; font-weight: 700; }
.cv-front-recording-zone .cv-record-mode-btn small {
    font-size: 11px; color: var(--cvf-text-muted);
}
/* Actions — record buttons */
.cv-front-recording-zone .cv-record-actions {
    display: flex; gap: 10px; justify-content: center; margin-top: 18px;
    flex-wrap: wrap;
}
.cv-rec-btn {
    display: inline-flex; align-items: center; gap: 6px;
    padding: 12px 24px; border-radius: 10px; font-size: 14px;
    font-weight: 700; cursor: pointer; transition: all 0.2s;
    border: none; font-family: inherit;
}
.cv-rec-btn-start {
    background: linear-gradient(135deg, #e53935 0%, #b91c1c 100%);
    color: #fff; box-shadow: 0 4px 14px rgba(229,57,53,.35);
    font-size: 15px; padding: 14px 32px;
}
.cv-rec-btn-start:hover {
    background: linear-gradient(135deg, #ef4444 0%, #e53935 100%);
    box-shadow: 0 6px 20px rgba(229,57,53,.45); transform: translateY(-1px);
}
.cv-rec-btn-dot {
    width: 12px; height: 12px; border-radius: 50%;
    background: #fff; display: inline-block;
    animation: cvRecDotPulse 1s ease-in-out infinite;
}
@keyframes cvRecDotPulse { 0%,100% { opacity:1; } 50% { opacity:.5; } }
.cv-rec-btn-stop {
    background: #333; color: #fff;
    box-shadow: 0 2px 8px rgba(0,0,0,.2);
}
.cv-rec-btn-stop:hover { background: #555; }
.cv-rec-btn-retry {
    background: #f5f5f5; color: #555; border: 1.5px solid var(--cvf-border);
}
.cv-rec-btn-retry:hover { background: #eee; }
.cv-rec-btn-cancel {
    background: none; color: var(--cvf-text-muted); border: 1.5px solid var(--cvf-border);
}
.cv-rec-btn-cancel:hover { border-color: var(--cvf-danger); color: var(--cvf-danger); }
.cv-rec-btn-save {
    background: linear-gradient(135deg, var(--cvf-primary) 0%, #152d4a 100%);
    color: #fff; box-shadow: 0 4px 14px rgba(30,58,95,.3);
    font-size: 15px; padding: 14px 32px;
}
.cv-rec-btn-save:hover {
    box-shadow: 0 6px 20px rgba(30,58,95,.4); transform: translateY(-1px);
}
.cv-rec-btn-save:disabled { opacity: 0.5; cursor: not-allowed; transform: none; }
/* Note fields (title, description, tags) */
.cv-front-recording-zone .cv-record-note { margin-top: 16px; }
.cv-rec-note-fields { display: flex; flex-direction: column; gap: 10px; }
.cv-rec-note-field label {
    display: block; font-size: 12px; font-weight: 600;
    color: var(--cvf-text-muted); margin-bottom: 4px;
}
.cv-rec-note-field input,
.cv-rec-note-field textarea {
    width: 100%; padding: 9px 12px; border: 1.5px solid var(--cvf-border);
    border-radius: 8px; font-size: 13px; font-family: inherit;
    box-sizing: border-box; background: #fff; transition: border-color .15s;
}
.cv-rec-note-field input:focus,
.cv-rec-note-field textarea:focus { outline: none; border-color: var(--cvf-primary); }
.cv-rec-tags-row {
    display: flex; align-items: center; gap: 6px; flex-wrap: wrap;
    margin-top: 10px; padding-top: 10px;
    border-top: 1px solid var(--cvf-border);
}
.cv-rec-tag-btn { font-family: inherit; }
/* Responsive */
@media (max-width: 600px) {
    .cv-front-recording-zone .cv-record-modes { flex-direction: column; gap: 8px; }
    .cv-front-recording-zone .cv-record-mode-btn { min-width: auto; flex-direction: row; padding: 14px 18px; }
    .cv-rec-btn { padding: 10px 18px; font-size: 13px; }
    .cv-rec-btn-start, .cv-rec-btn-save { padding: 12px 24px; font-size: 14px; }
}

/* Embed form (frontend) */
.cv-embed-form {
    border: 1.5px solid var(--cvf-border); border-radius: 12px;
    padding: 12px; margin-bottom: 16px; background: var(--cvf-card);
}
.cv-embed-form .cv-card-form-row {
    margin-bottom: 12px;
}
.cv-embed-form .cv-card-form-row label {
    display: block; font-size: 12px; font-weight: 600; color: var(--cvf-text-muted); margin-bottom: 4px;
}
.cv-embed-form .cv-card-form-row input,
.cv-embed-form .cv-card-form-row textarea,
.cv-embed-form .cv-card-form-row select {
    width: 100%; padding: 9px 12px; border: 1.5px solid var(--cvf-border); border-radius: 8px;
    font-size: 13px; font-family: inherit; box-sizing: border-box; background: #fff;
}
.cv-embed-form .cv-card-form-row input:focus,
.cv-embed-form .cv-card-form-row textarea:focus,
.cv-embed-form .cv-card-form-row select:focus { outline: none; border-color: var(--cvf-primary); }
/* Select wrapper with arrow */
.cv-select-wrapper {
    position: relative; display: block;
}
.cv-select-wrapper select {
    appearance: none; -webkit-appearance: none; -moz-appearance: none;
    padding-right: 36px !important; cursor: pointer;
}
.cv-select-arrow {
    position: absolute; right: 10px; top: 50%; transform: translateY(-50%);
    pointer-events: none; font-size: 16px; color: var(--cvf-text-muted);
}
/* v11.63.0 — Sélecteurs de langue (emails + espace) : alignés sur le design-system des dropdowns */
.cv-lang-prefs .cv-select-wrapper { display: block; }
.cv-lang-select {
    width: 100%;
    padding: 11px 40px 11px 14px;
    border: 1.5px solid var(--cvf-border);
    border-radius: 10px;
    font-size: 14px;
    font-family: inherit;
    line-height: 1.3;
    color: var(--cvf-text);
    background: #fff;
    cursor: pointer;
    box-sizing: border-box;
    appearance: none; -webkit-appearance: none; -moz-appearance: none;
    transition: border-color .15s ease, box-shadow .15s ease;
}
.cv-lang-select:hover { border-color: var(--cvf-primary); }
.cv-lang-select:focus {
    outline: none;
    border-color: var(--cvf-primary);
    box-shadow: 0 0 0 3px rgba(var(--cvf-primary-rgb), .14);
}
/* Embed URL hint */
.cv-embed-url-hint {
    display: block; font-size: 11px; color: var(--cvf-text-muted); margin-top: 4px;
    font-style: italic;
}
.cv-embed-form .cv-form-tags-row {
    display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-bottom: 12px;
}
.cv-embed-form .cv-form-tags-row label { font-size: 12px; font-weight: 600; color: var(--cvf-text-muted); }
.cv-embed-form .cv-embed-form-message {
    padding: 8px 14px; border-radius: 8px; font-size: 13px; margin-bottom: 10px;
    background: #f8d7da; color: #721c24;
}
.cv-embed-form .cv-embed-form-message.cv-embed-form-success {
    background: #d4edda; color: #155724; border: 1px solid #c3e6cb;
}
.cv-embed-form .cv-embed-form-message.cv-embed-form-error {
    background: #f8d7da; color: #721c24; border: 1px solid #f5c6cb;
}
/* Readonly field (greyed out, non-editable) */
.cv-vault-wrap .cv-field-readonly,
.cv-vault-wrap textarea.cv-field-readonly,
.cv-vault-wrap input.cv-field-readonly {
    background: #e9ecef !important; color: #6c757d !important;
    cursor: not-allowed; opacity: 0.7;
}

/* Lightbox v2 (frontend) */
/* Modal portal fix: ensure modals break out of transformed parents */
.cv-lightbox {
    position: fixed !important;
    top: 0 !important;
    left: 0 !important;
    right: 0 !important;
    bottom: 0 !important;
    z-index: var(--cvf-z-overlay);
    display: flex;
    align-items: center;
    justify-content: center;
    transform: none !important;
}
.cv-lightbox-overlay {
    position: absolute; top: 0; left: 0; right: 0; bottom: 0;
    background: rgba(0,0,0,.85); cursor: pointer;
}
.cv-lightbox-content {
    position: relative; z-index: 2; width: 90%; max-width: 1100px;
    max-height: 90vh; display: flex; flex-direction: column;
    background: #111; border-radius: 14px; overflow: hidden;
}
.cv-lightbox-topbar {
    display: flex; align-items: center; justify-content: flex-end; gap: 10px;
    padding: 10px 16px; background: rgba(0,0,0,.5);
}
.cv-lightbox-comment-btn {
    background: none; border: 1.5px solid rgba(255,255,255,.3); border-radius: 8px;
    padding: 6px 12px; color: #fff; cursor: pointer; font-size: 16px; transition: all .15s;
}
.cv-lightbox-comment-btn:hover { background: rgba(255,255,255,.1); border-color: rgba(255,255,255,.5); }
.cv-lightbox-close {
    background: none; border: none; color: #fff; font-size: 28px; cursor: pointer;
    padding: 4px 8px; line-height: 1; transition: color .15s;
}
.cv-lightbox-close:hover { color: #ff6b6b; }
.cv-lightbox-player {
    flex: 1; display: flex; align-items: center; justify-content: center;
    overflow: auto; min-height: 300px; padding: 20px;
}
.cv-lightbox-player video { max-width: 100%; max-height: 70vh; border-radius: 8px; }
.cv-lightbox-player audio { width: 80%; max-width: 500px; }
.cv-lightbox-player iframe { width: 100%; height: 60vh; border: none; border-radius: 8px; }
.cv-lightbox-comments-sidebar {
    width: 100%; max-height: 300px; border-top: 1px solid rgba(255,255,255,.1);
    background: var(--cvf-card); display: flex; flex-direction: column; overflow: hidden;
}
.cv-lightbox-comments-sidebar .cv-comments-list {
    flex: 1; overflow-y: auto; padding: 12px; font-size: 13px;
}
.cv-lightbox-comments-sidebar .cv-comment-reply-form {
    border-top: 1px solid var(--cvf-border); padding: 10px 12px;
    display: flex; align-items: center; gap: 8px;
}
.cv-lightbox-comments-sidebar .cv-comment-reply-form textarea {
    flex: 1; padding: 8px 12px; border: 1.5px solid var(--cvf-border); border-radius: 8px;
    font-size: 13px; resize: none; box-sizing: border-box; font-family: inherit;
}
.cv-lightbox-comments-sidebar .cv-comment-reply-form textarea:focus { outline: none; border-color: var(--cvf-primary); }
.cv-lightbox-record-btn {
    background: none; border: 1.5px solid var(--cvf-border); border-radius: 50%;
    width: 36px; height: 36px; display: flex; align-items: center; justify-content: center;
    cursor: pointer; font-size: 16px; color: var(--cvf-text-muted); transition: all .15s;
}
.cv-lightbox-record-btn:hover { border-color: #e53935; color: #e53935; }

/* Select bar frontend variant */
.cv-vault-wrap .cv-select-bar-content {
    display: flex; flex-direction: column; align-items: center; gap: 14px;
    padding: 24px 32px; background: #1e293b; border-radius: 16px;
    box-shadow: 0 12px 48px rgba(0,0,0,0.4); color: #fff; min-width: 320px;
}
.cv-select-bar-count { font-size: 16px; font-weight: 600; }
.cv-select-bar-chips { display: flex; flex-wrap: wrap; gap: 6px; justify-content: center; }
.cv-select-bar-reply {
    display: flex; align-items: center; gap: 8px; flex-wrap: wrap; justify-content: center;
}
.cv-select-bar-label { font-size: 12px; color: rgba(255,255,255,.6); text-transform: uppercase; font-weight: 600; }
.cv-record-reply-btn {
    padding: 8px 14px; border: 1.5px solid rgba(255,255,255,.2); border-radius: 8px;
    background: rgba(255,255,255,.05); color: #fff; cursor: pointer; font-size: 14px;
    transition: all .15s;
}
.cv-record-reply-btn:hover { background: rgba(255,255,255,.15); border-color: rgba(255,255,255,.4); }

/* Load more button */
#cv-front-load-more-embeds {
    display: block; margin: 16px auto; padding: 10px 28px;
    border: 1.5px solid var(--cvf-border); border-radius: 8px;
    background: var(--cvf-card); color: var(--cvf-text); font-size: 13px;
    font-weight: 600; cursor: pointer; transition: all .15s;
}
#cv-front-load-more-embeds:hover { border-color: var(--cvf-primary); color: var(--cvf-primary); }

/* Comments in lightbox */
.cv-lb-comment {
    padding: 8px 10px; margin-bottom: 8px; border-radius: 8px;
    background: var(--cvf-bg); border: 1px solid var(--cvf-border);
}
.cv-lb-comment-admin { border-left: 3px solid var(--cvf-primary); }
.cv-lb-comment-meta { display: flex; justify-content: space-between; margin-bottom: 4px; }
.cv-lb-comment-author { font-weight: 600; font-size: 12px; color: var(--cvf-text); }
.cv-lb-comment-date { font-size: 11px; color: var(--cvf-text-muted); }
.cv-lb-comment-text { font-size: 13px; color: var(--cvf-text); line-height: 1.5; }
.cv-lb-comment-media { margin-top: 6px; }
.cv-lb-comment-media video, .cv-lb-comment-media audio { width: 100%; max-height: 180px; border-radius: 6px; }
.cv-lb-comments-empty { text-align: center; padding: 20px; color: var(--cvf-text-muted); font-size: 13px; }

@media (min-width: 860px) {
    .cv-lightbox-content { flex-direction: row; max-width: 1200px; }
    .cv-lightbox-player { flex: 1; min-height: 400px; }
    .cv-lightbox-comments-sidebar {
        width: 320px; min-width: 320px; max-height: none;
        border-top: none; border-left: 1px solid rgba(255,255,255,.1);
    }
}

/* ─── iOS zoom fix: all inputs must be >= 16px on mobile ─── */
@media (max-width: 768px) {
    input[type="text"],
    input[type="search"],
    input[type="email"],
    input[type="url"],
    input[type="date"],
    input[type="number"],
    input[type="password"],
    input[type="tel"],
    textarea,
    select,
    .cv-modal-input {
        font-size: 16px !important;
    }
}

/* ═══ Inline confirmation messages ═══ */
.cv-inline-confirm {
    display: flex; align-items: center; gap: 8px;
    padding: 10px 16px; margin: 12px 0; border-radius: 8px;
    font-size: 13px; font-weight: 500; line-height: 1.4;
}
.cv-inline-confirm-success {
    background: #ecfdf5; color: #065f46; border: 1px solid #a7f3d0;
}
.cv-inline-confirm-error {
    background: #fef2f2; color: #991b1b; border: 1px solid #fecaca;
}

/* ── Frontend Color Customization Grid ── */
.cv-front-color-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
    gap: 10px;
}
.cv-front-color-field {
    background: var(--cvf-card, #fff);
    border: 1px solid var(--cvf-border, #e4e8ee);
    border-radius: 8px;
    padding: 8px 10px;
}
.cv-front-color-field label {
    display: block;
    font-size: 11px;
    font-weight: 600;
    color: var(--cvf-text-muted, #5a6c7d);
    margin-bottom: 4px;
}
.cv-front-color-input-wrap {
    display: flex;
    align-items: center;
    gap: 6px;
}
.cv-front-color-input {
    width: 32px;
    height: 32px;
    border: 2px solid var(--cvf-border, #e4e8ee);
    border-radius: 6px;
    padding: 0;
    cursor: pointer;
    background: none;
}
.cv-front-color-input::-webkit-color-swatch-wrapper { padding: 2px; }
.cv-front-color-input::-webkit-color-swatch { border-radius: 3px; border: none; }
.cv-front-color-hex {
    font-size: 11px;
    font-family: monospace;
    color: var(--cvf-text-muted, #5a6c7d);
}

/* ═══════════════════════════════════════════
   Frontend Buttons — Apparence section
   ═══════════════════════════════════════════ */
.cvf-btn {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 11px 24px;
    font-size: 13px;
    font-weight: 600;
    border: none;
    border-radius: var(--cvf-radius, 12px);
    cursor: pointer;
    transition: all 0.2s ease;
    letter-spacing: 0.2px;
    position: relative;
    overflow: hidden;
    line-height: 1.4;
    font-family: inherit;
    text-decoration: none;
}
.cvf-btn::before {
    content: '';
    position: absolute;
    inset: 0;
    background: linear-gradient(135deg, transparent 0%, rgba(255,255,255,0.08) 100%);
    pointer-events: none;
}
.cvf-btn .dashicons {
    font-size: 16px;
    width: 16px;
    height: 16px;
    line-height: 16px;
}
.cvf-btn:focus {
    outline: 2px solid var(--cvf-primary-light);
    outline-offset: 2px;
}

/* Small size variant */
.cvf-btn-sm {
    padding: 8px 18px;
    font-size: 12.5px;
    border-radius: 8px;
}

/* Primary variant — filled button (Enregistrer) */
.cvf-btn-primary {
    color: #fff;
    background: var(--cvf-primary);
    border: none;
    box-shadow: var(--cvf-shadow), 0 4px 12px rgba(var(--cvf-primary-rgb, 30,58,95), 0.18);
}
.cvf-btn-primary:hover {
    background: var(--cvf-primary-light);
    box-shadow: var(--cvf-shadow), 0 6px 20px rgba(var(--cvf-primary-rgb, 30,58,95), 0.28);
    transform: translateY(-1px);
}
.cvf-btn-primary:active {
    transform: translateY(0);
    box-shadow: 0 2px 6px rgba(var(--cvf-primary-rgb, 30,58,95), 0.15);
}

/* Outline variant — toggle colors & reset */
.cvf-btn-outline {
    color: var(--cvf-primary);
    background: transparent;
    border: 2px solid var(--cvf-primary);
    box-shadow: 0 2px 6px rgba(var(--cvf-primary-rgb, 30,58,95), 0.08);
}
.cvf-btn-outline:hover {
    color: #fff;
    background: var(--cvf-primary);
    box-shadow: 0 4px 14px rgba(var(--cvf-primary-rgb, 30,58,95), 0.22);
    transform: translateY(-1px);
}
.cvf-btn-outline:active {
    transform: translateY(0);
    box-shadow: 0 2px 6px rgba(var(--cvf-primary-rgb, 30,58,95), 0.12);
}

/* Danger variant — reset button */
.cvf-btn-danger {
    color: #b91c1c;
    background: #fef2f2;
    border: 1px solid #fecaca;
    box-shadow: 0 1px 4px rgba(185, 28, 28, 0.06);
}
.cvf-btn-danger:hover {
    color: #fff;
    background: #dc2626;
    border-color: #dc2626;
    box-shadow: 0 4px 14px rgba(220, 38, 38, 0.25);
    transform: translateY(-1px);
}
.cvf-btn-danger:active {
    transform: translateY(0);
    background: #b91c1c;
    box-shadow: 0 2px 6px rgba(185, 28, 28, 0.15);
}
.cvf-btn-danger:focus {
    outline: 2px solid #f87171;
    outline-offset: 2px;
}

/* Toggle arrow animation */
.cv-settings-toggle-arrow {
    display: inline-block;
    transition: transform 0.3s ease;
    font-size: 11px;
}
.cv-front-colors-open .cv-settings-toggle-arrow {
    transform: rotate(180deg);
}

/* ═══════════════════════════════════════════════
   RESPONSIVE: Ultra-mobile (<480px)
   ═══════════════════════════════════════════════ */
@media (max-width: 480px) {
    .cvf-vault-container { padding: 8px !important; }
    .cvf-vault-header { flex-direction: column !important; gap: 8px !important; padding: 12px !important; }
    .cvf-vault-header-info { text-align: center; }
    .cvf-vault-title { font-size: 18px !important; }

    /* Tab navigation: horizontal scroll */
    .cvf-tabs { overflow-x: auto; -webkit-overflow-scrolling: touch; flex-wrap: nowrap !important; gap: 2px !important; padding-bottom: 4px; }
    .cvf-tab { white-space: nowrap; font-size: 11px !important; padding: 8px 10px !important; flex-shrink: 0; }

    /* Touch targets: minimum 44px for WCAG */
    .cv-vault-wrap .cvf-tab, .cv-vault-wrap .cvf-btn, .cv-vault-wrap button, .cv-vault-wrap input[type="submit"], .cv-vault-wrap input[type="button"], .cv-vault-wrap .cvf-file-action {
        min-height: 44px;
    }
    /* v20.21.79 — 🚨 mais ce min-height:44px rend les PETITS contrôles (toggle Perso/Agence, pastilles
       de filtre, ⓘ, bascules liste/grille, compteurs) BEAUCOUP trop hauts → effet « grosse bulle ronde »
       (une pastille courte à 44px de haut paraît circulaire). On les EXCLUT du minimum tactile. */
    .cv-vault-wrap .cv-agency-scope-mini,
    .cv-vault-wrap .cv-agency-scope-toggle,
    .cv-vault-wrap .cv-hero-info-btn,
    .cv-vault-wrap .cvf-home-msg-filter,
    .cv-vault-wrap .cv-home-msg-filter,
    .cv-vault-wrap .cv-tag-pill,
    .cv-vault-wrap .cv-fmsg-sender,
    .cv-vault-wrap .cv-bomv-sender,
    .cv-vault-wrap .cv-fmsg-status,
    .cv-vault-wrap .cv-fmsg-view,
    .cv-vault-wrap .cv-bomv-view,
    .cv-vault-wrap .cv-clview-btn,
    .cv-vault-wrap .cv-tab-count,
    .cv-vault-wrap .cv-tab-unread {
        min-height: 0 !important;
    }

    /* Content panels */
    .cvf-tab-content { padding: 10px !important; }

    /* File cards */
    .cvf-file-card { padding: 10px !important; }
    .cvf-file-actions { flex-direction: column !important; gap: 6px !important; }
    .cvf-file-actions .cvf-btn { width: 100%; text-align: center; }

    /* Cards grid to single column */
    .cvf-cards-grid,
    .cvf-links-grid,
    .cvf-embeds-grid { grid-template-columns: 1fr !important; gap: 8px !important; }

    /* Modal: full-width on mobile */
    .cvf-modal-content { width: 95vw !important; max-width: 95vw !important; margin: 10px auto !important; padding: 12px !important; max-height: 85vh !important; }
    .cvf-modal-header { flex-direction: column !important; gap: 8px !important; }
    .cvf-modal-close { position: absolute; top: 8px; right: 8px; }

    /* Upload area */
    .cvf-upload-area { padding: 16px !important; }
    .cvf-upload-area p { font-size: 12px !important; }

    /* Settings panel */
    .cvf-settings-section { padding: 10px !important; }

    /* Notepad messages */
    .cvf-notepad-message { padding: 10px !important; }

    /* Comment form */
    .cvf-comment-form textarea { min-height: 60px !important; }

    /* Stats row */
    .cvf-stats-row { flex-direction: column !important; gap: 6px !important; }

    /* Profile section */
    .cvf-profile-card { flex-direction: column !important; text-align: center; gap: 10px !important; }
    .cvf-avatar-upload { margin: 0 auto; }

    /* Request/project cards */
    .cvf-project-card { padding: 10px !important; }
    .cvf-request-item { padding: 8px !important; }
}

/* Tablet adjustments (481px - 782px) */
@media (min-width: 481px) and (max-width: 782px) {
    .cvf-cards-grid,
    .cvf-links-grid { grid-template-columns: repeat(2, 1fr) !important; }
    .cvf-embeds-grid { grid-template-columns: repeat(2, 1fr) !important; }
    .cvf-modal-content { width: 80vw !important; max-width: 80vw !important; }
}

/* ══════════════════════════════════════════════════════════════
   FOLDERS (Dossiers) — Frontend
   ══════════════════════════════════════════════════════════════ */

.cv-front-folders-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
    gap: 14px;
    padding: 10px 16px;
    margin-left: 0;
    margin-right: 0;
}
.cv-front-folder-card {
    background: var(--cv-card-bg, #fff);
    border: 1px solid var(--cv-border, rgba(255,255,255,.08));
    border-radius: 10px;
    padding: 16px 18px;
    cursor: pointer;
    transition: all .15s;
}
.cv-front-folder-card:hover {
    box-shadow: 0 4px 16px rgba(0,0,0,.08);
    transform: translateY(-1px);
}
.cv-front-folder-card .cv-folder-card-header {
    display: flex;
    align-items: center;
    gap: 12px;
}
.cv-front-folder-card .cv-folder-icon {
    width: 38px;
    height: 38px;
    border-radius: 8px;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}
.cv-front-folder-card .cv-folder-card-info { flex: 1; min-width: 0; }
.cv-front-folder-card .cv-folder-card-name {
    display: block;
    font-size: 14px;
    font-weight: 600;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.cv-front-folder-card .cv-folder-card-desc {
    display: block;
    font-size: 12px;
    opacity: .6;
    margin-top: 2px;
}
.cv-front-folder-open-btn {
    width: 32px;
    height: 32px;
    border: none;
    background: transparent;
    border-radius: 6px;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    opacity: .5;
    transition: all .12s;
}
.cv-front-folder-open-btn:hover { opacity: 1; background: rgba(255,255,255,.1); }
.cv-front-folder-card .cv-folder-card-meta {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-top: 12px;
    padding-top: 10px;
    border-top: 1px solid rgba(128,128,128,.1);
    font-size: 12px;
}
.cv-front-folder-card .cv-folder-badge {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    padding: 5px 14px;
    border-radius: 20px;
    font-size: 12px;
    font-weight: 700;
    letter-spacing: .3px;
    text-transform: uppercase;
}
.cv-front-folder-card .cv-folder-status-active { background: #16a34a; color: #fff; box-shadow: 0 2px 6px rgba(22,163,74,.35); }
.cv-front-folder-card .cv-folder-status-closed { background: #2563eb; color: #fff; box-shadow: 0 2px 6px rgba(37,99,235,.35); }
.cv-front-folder-card .cv-folder-status-archived { background: #64748b; color: #fff; box-shadow: 0 2px 6px rgba(100,116,139,.25); }
.cv-front-folder-card .cv-folder-status-overdue { background: #dc2626; color: #fff; box-shadow: 0 2px 6px rgba(220,38,38,.35); animation: cv-pulse-overdue 2s ease-in-out infinite; }
@keyframes cv-pulse-overdue { 0%,100% { opacity:1; } 50% { opacity:.75; } }
.cv-front-folder-card .cv-folder-deadline {
    display: flex;
    align-items: center;
    gap: 4px;
    opacity: .5;
}
.cv-front-folder-card .cv-folder-deadline.cv-deadline-overdue {
    color: #dc2626;
    opacity: 1;
    font-weight: 700;
}
.cv-front-folder-card[data-overdue="1"] {
    border-left-color: #dc2626 !important;
    box-shadow: 0 0 0 1px rgba(220,38,38,.15), 0 2px 8px rgba(220,38,38,.1);
}
.cv-front-folder-card .cv-folder-items-count { opacity: .5; margin-left: auto; }

/* Folder detail (frontend) — redesigned */
.cv-front-folder-detail { padding: 16px; margin-left: 0; margin-right: 0; }
.cv-front-folder-detail .cv-folder-detail-top { margin-bottom: 16px; }
.cv-front-folder-detail .cv-folder-back-btn {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 8px 16px;
    border: 1px solid #d1d5db;
    border-radius: 8px;
    background: #fff;
    font-size: 13px;
    font-weight: 600;
    cursor: pointer;
    color: #475569;
    transition: all .15s;
}
.cv-front-folder-detail .cv-folder-back-btn:hover { background: #f1f5f9; border-color: #94a3b8; color: #1e293b; }
.cv-front-folder-detail .cv-folder-detail-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 8px;
    padding-bottom: 16px;
    border-bottom: 2px solid #e8ecf0;
}
.cv-front-folder-detail .cv-folder-detail-title-wrap {
    display: flex;
    align-items: center;
    gap: 10px;
    flex: 1;
}
.cv-front-folder-detail .cv-folder-detail-icon {
    font-size: 24px;
    width: 24px;
    height: 24px;
    color: #3b82f6;
}
.cv-front-folder-detail .cv-folder-detail-header h3 {
    font-size: 22px;
    font-weight: 800;
    color: #0f172a;
    margin: 0;
    line-height: 1.3;
}
.cv-front-folder-detail .cv-folder-detail-status {
    flex-shrink: 0;
    margin-right: 4px;
}
.cv-front-folder-detail .cv-folder-detail-status .cv-folder-badge {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: 14px;
    padding: 8px 20px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: .5px;
    border-radius: 24px;
}
.cv-front-folder-detail .cv-folder-status-active { background: #16a34a; color: #fff; box-shadow: 0 3px 10px rgba(22,163,74,.35); }
.cv-front-folder-detail .cv-folder-status-closed { background: #2563eb; color: #fff; box-shadow: 0 3px 10px rgba(37,99,235,.35); }
.cv-front-folder-detail .cv-folder-status-archived { background: #64748b; color: #fff; box-shadow: 0 3px 10px rgba(100,116,139,.25); }
.cv-front-folder-detail .cv-folder-detail-desc {
    font-size: 14px;
    color: #64748b;
    margin-bottom: 20px;
    padding: 12px 16px;
    background: #f8fafc;
    border-radius: 8px;
    border-left: 3px solid #93c5fd;
    line-height: 1.5;
}
.cv-front-folder-detail .cv-folder-detail-content { min-height: 100px; }
.cv-folder-content-empty {
    text-align: center;
    padding: 32px 16px;
    opacity: .4;
    font-size: 13px;
}

/* Empty state */
.cv-front-folders-grid .cv-folders-empty {
    grid-column: 1 / -1;
    text-align: center;
    padding: 48px 24px;
    opacity: .5;
}
.cv-front-folders-grid .cv-folders-empty p { margin: 10px 0 0; font-size: 14px; }

@media (max-width: 600px) {
    .cv-front-folders-grid { grid-template-columns: 1fr; }
}

/* ══════════════════════════════════════════
   Folder Selector — frontend forms
   ══════════════════════════════════════════ */
.cv-folder-select {
    width: 100%;
    padding: 8px 12px;
    border: 1px solid #d1d5db;
    border-radius: 8px;
    font-size: 13px;
    color: #374151;
    background: #fff;
    cursor: pointer;
    transition: border-color 0.2s;
}
.cv-folder-select:focus {
    outline: none;
    border-color: #3b82f6;
    box-shadow: 0 0 0 3px rgba(59,130,246,0.12);
}
.cv-folder-select-inline {
    width: auto;
    min-width: 120px;
    max-width: 180px;
    padding: 6px 10px;
    font-size: 12px;
    flex-shrink: 0;
}

/* Folder detail sections — frontend */
.cv-folder-section { margin-bottom: 20px; border: 1px solid #e8ecf0; border-radius: 10px; overflow: hidden; }
.cv-folder-section-header { display: flex; align-items: center; gap: 8px; padding: 12px 20px; background: linear-gradient(135deg, #f8fafc 0%, #f1f5f9 100%); font-size: 14px; font-weight: 700; color: #334155; border-bottom: 1px solid #e8ecf0; }
.cv-folder-section-body { padding: 16px 20px; }
/* v11.86.291 — barre de filtre des sections Fiches/Liens/Bloc-notes du dossier : on REUTILISE la
   barre .cv-mbar des onglets (style hérité). Ici, juste les ajustements de contexte dossier. */
.cv-vault-wrap .cv-folder-secbar { margin-bottom: 14px; }
.cv-vault-wrap .cv-folder-secbar .cv-fsec-count { font-size: 12.5px; color: var(--cvf-text-muted, #94a3b8); font-weight: 600; margin-left: 4px; white-space: nowrap; }
.cv-vault-wrap .cv-folder-item.cv-fmini-hidden { display: none !important; }
.cv-vault-wrap .cv-fmini-empty { padding: 14px; text-align: center; color: var(--cvf-text-muted, #94a3b8); font-size: 13px; }
/* Bascule Liste / Grille des sections dossier */
.cv-vault-wrap .cv-folder-cards-grid.cv-fsec-list { grid-template-columns: 1fr; }
.cv-vault-wrap .cv-folder-links-list.cv-fsec-grid,
.cv-vault-wrap .cv-folder-notes-list.cv-fsec-grid,
.cv-vault-wrap .cv-folder-msg-list.cv-fsec-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 12px; }
/* v20.22.211 — les messages en vue grille : items en cartes (mêmes colonnes que notes/liens) */
.cv-vault-wrap .cv-folder-msg-list.cv-fsec-grid .cv-folder-msg-item { flex-direction: column; align-items: flex-start; }
/* v11.86.292 — items du dossier cliquables (ouvrent la pop-up comme dans les menus) + chips de tags */
.cv-vault-wrap .cv-folder-card-item[role="button"],
.cv-vault-wrap .cv-folder-link-item[role="button"],
.cv-vault-wrap .cv-folder-note-item[role="button"] { cursor: pointer; transition: box-shadow .12s, transform .08s, border-color .12s; }
.cv-vault-wrap .cv-folder-card-item[role="button"]:hover,
.cv-vault-wrap .cv-folder-link-item[role="button"]:hover,
.cv-vault-wrap .cv-folder-note-item[role="button"]:hover { box-shadow: 0 4px 14px rgba(15,23,42,.08); transform: translateY(-1px); }
.cv-vault-wrap .cv-folder-item .cv-fiche-tags { display: flex; flex-wrap: wrap; gap: 5px; margin-top: 8px; }
.cv-vault-wrap .cv-folder-link-item .cv-link-title a { text-decoration: none; color: inherit; }

/* v11.86.293 — RÈGLE IMMUABLE : dans un dossier, les pop-ups de filtres restent ANCRÉES à leur
   barre (scroll inclus → position:absolute, pas fixed) et TOUJOURS au premier plan (z-index très
   élevé), sans être rognées par une section. Corrige : popover qui passe sous la section suivante
   + popover qui se détache au scroll. */
#cv-front-folder-detail .cv-folder-section,
#cv-front-folder-detail .cv-folder-section-body,
#cv-front-folder-detail .cv-docs-wrap { overflow: visible; }
#cv-front-folder-detail .cv-mbar { position: relative; }
#cv-front-folder-detail .cv-mbar-popover,
#cv-front-folder-detail .cv-amf-popover,
#cv-front-folder-detail .cv-mmf-popover,
#cv-front-folder-detail .cv-dmf-popover,
#cv-front-folder-detail .cv-fsec-pop {
    position: absolute !important;
    top: calc(100% + 8px) !important;
    left: auto !important; right: 0 !important; bottom: auto !important;
    z-index: 100060 !important;
}
@media (max-width: 680px) {
    #cv-front-folder-detail .cv-mbar-popover,
    #cv-front-folder-detail .cv-amf-popover,
    #cv-front-folder-detail .cv-mmf-popover,
    #cv-front-folder-detail .cv-dmf-popover,
    #cv-front-folder-detail .cv-fsec-pop { left: 0 !important; right: 0 !important; width: auto !important; }
}
/* Carte d'échange entièrement cliquable */
.cv-vault-wrap .cv-exch-item { cursor: pointer; }
.cv-folder-cards-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 12px; }
.cv-folder-card-item { background: #fff; border: 1px solid #e8ecf0; border-radius: 8px; padding: 14px 16px; }
.cv-folder-card-title { font-weight: 700; font-size: 14px; color: #1e293b; margin-bottom: 6px; }
.cv-folder-card-content { font-size: 13px; color: #64748b; line-height: 1.5; margin-bottom: 8px; }
.cv-folder-card-meta { font-size: 11px; color: #94a3b8; }
.cv-folder-links-list { display: flex; flex-direction: column; gap: 8px; }
.cv-folder-link-item { display: flex; flex-direction: column; gap: 2px; padding: 12px 14px; border: 1px solid #f1f5f9; border-radius: 8px; }
.cv-folder-link-item:hover { border-color: #93c5fd; }
.cv-folder-link-title { font-size: 14px; font-weight: 700; color: #1e40af; text-decoration: none; }
.cv-folder-link-title:hover { text-decoration: underline; }
.cv-folder-link-desc { font-size: 13px; color: #64748b; }
.cv-folder-link-url { font-size: 11px; color: #94a3b8; word-break: break-all; }
.cv-folder-embeds-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 12px; }
.cv-folder-embed-item { background: #f8fafc; border: 1px solid #e8ecf0; border-radius: 8px; padding: 0; overflow: hidden; display: flex; flex-direction: column; }
.cv-folder-embed-thumb { position: relative; width: 100%; height: 140px; background: linear-gradient(135deg, #0f172a 0%, #1e293b 100%); display: flex; align-items: center; justify-content: center; overflow: hidden; }
.cv-folder-embed-thumb img { width: 100%; height: 100%; object-fit: cover; }
.cv-folder-embed-thumb-icon { font-size: 40px; opacity: .6; }
.cv-folder-embed-thumb-play { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 48px; height: 48px; background: rgba(255,255,255,.9); border-radius: 50%; display: flex; align-items: center; justify-content: center; box-shadow: 0 2px 12px rgba(0,0,0,.3); pointer-events: none; }
.cv-folder-embed-thumb-play::after { content: ''; display: block; width: 0; height: 0; border-style: solid; border-width: 10px 0 10px 18px; border-color: transparent transparent transparent #1e293b; margin-left: 3px; }
.cv-folder-embed-info { padding: 12px 14px; flex: 1; }
.cv-folder-embed-header strong { font-size: 14px; color: #1e293b; }
.cv-folder-embed-desc { font-size: 13px; color: #64748b; margin-top: 4px; }
.cv-folder-embed-meta { font-size: 11px; color: #94a3b8; margin-top: 6px; text-transform: capitalize; }
.cv-folder-notes-list { display: flex; flex-direction: column; gap: 8px; }
.cv-folder-note-item { padding: 12px 16px; background: #fffbeb; border: 1px solid #fde68a; border-radius: 8px; }
.cv-folder-note-text { font-size: 13px; color: #1e293b; line-height: 1.6; white-space: pre-wrap; }
.cv-folder-note-meta { font-size: 11px; color: #94a3b8; margin-top: 6px; }
/* Messages dans un dossier (v20.21.13) — au même titre que Documents/Médias */
.cv-folder-msg-list { display: flex; flex-direction: column; gap: 8px; }
.cv-vault-wrap .cv-folder-msg-item { display: flex; align-items: flex-start; gap: 12px; padding: 12px 16px; background: #fff; border: 1px solid #e2e8f0; border-radius: 8px; cursor: pointer; transition: box-shadow .12s, transform .08s, border-color .12s; }
.cv-vault-wrap .cv-folder-msg-item:hover { box-shadow: 0 4px 14px rgba(15,23,42,.08); transform: translateY(-1px); border-color: var(--cvf-primary, #2563eb); }
.cv-folder-msg-ico { flex: 0 0 auto; width: 34px; height: 34px; border-radius: 8px; display: flex; align-items: center; justify-content: center; background: rgba(37,99,235,.08); color: var(--cvf-primary, #2563eb); }
.cv-folder-msg-ico .dashicons { font-size: 18px; width: 18px; height: 18px; }
.cv-folder-msg-main { flex: 1 1 auto; min-width: 0; }
.cv-folder-msg-subj { font-size: 14.5px; font-weight: 600; color: #1e293b; line-height: 1.35; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cv-folder-msg-snip { font-size: 12px; color: #64748b; line-height: 1.5; margin-top: 2px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cv-folder-msg-meta { flex: 0 0 auto; font-size: 11px; color: #94a3b8; padding-top: 3px; }
/* Files table inside folder detail */
.cv-folder-files-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 13px;
}
.cv-folder-files-table th {
    text-align: left;
    font-weight: 600;
    color: #64748b;
    font-size: 11px;
    text-transform: uppercase;
    letter-spacing: .5px;
    padding: 6px 10px 10px;
    border-bottom: 1px solid #f1f5f9;
}
.cv-folder-files-table td { padding: 10px; border-bottom: 1px solid #f8fafc; vertical-align: middle; }
.cv-folder-files-table tr:hover td { background: #fafbfd; }
.cv-folder-file-name {
    display: flex;
    align-items: center;
    gap: 8px;
    font-weight: 600;
    color: #1e293b;
}
.cv-folder-file-name .dashicons { color: #94a3b8; font-size: 16px; width: 16px; height: 16px; }
.cv-folder-file-desc { display: block; font-weight: 400; color: #94a3b8; font-size: 12px; margin-top: 2px; }
.cv-folder-file-size { color: #94a3b8; font-size: 12px; }
.cv-folder-file-date { color: #94a3b8; font-size: 12px; white-space: nowrap; }
.cv-folder-file-actions { display: flex; gap: 7px; }
.cv-folder-file-actions .cv-dact-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 30px;
    height: 30px;
    border: 1px solid #e8ecf0;
    border-radius: 6px;
    background: #fff;
    cursor: pointer;
    font-size: 14px;
    text-decoration: none;
    transition: all .12s;
}
.cv-folder-file-actions .cv-dact-btn:hover { background: #f1f5f9; border-color: #93c5fd; }

/* File name link in folder */
.cv-folder-file-link {
    color: #1e40af;
    text-decoration: none;
    font-weight: 600;
    cursor: pointer;
}
.cv-folder-file-link:hover { text-decoration: underline; color: #1d4ed8; }

/* Media embed type badge */
.cv-folder-embed-type-badge {
    display: inline-block;
    font-size: 10px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .5px;
    padding: 2px 8px;
    border-radius: 4px;
    background: #e0f2fe;
    color: #0369a1;
    margin-bottom: 8px;
}
.cv-folder-embed-clickable:hover {
    box-shadow: 0 4px 12px rgba(0,0,0,.08);
    transform: translateY(-1px);
    transition: all .15s;
}
.cv-folder-embed-type-icon { font-size: 18px; }

/* Highlight pulse animation */
@keyframes cv-highlight-pulse {
    0%, 100% { box-shadow: none; }
    50% { box-shadow: 0 0 0 4px rgba(59,130,246,.3); }
}
.cv-highlight-pulse { animation: cv-highlight-pulse .6s ease 3; }

/* Folder toolbar (frontend) */
.cv-folder-front-toolbar {
    display: flex;
    justify-content: flex-end;
    padding: 8px 16px 0;
}
/* (Suggest button now uses .cv-add-btn in section header) */

/* Suggest folder modal */
.cv-folder-suggest-modal { position: fixed; top: 0; left: 0; width: 100%; height: 100%; z-index: var(--cvf-z-overlay); display: flex; align-items: center; justify-content: center; }
.cv-folder-suggest-modal-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0,0,0,.5); }
.cv-folder-suggest-modal-box {
    position: relative;
    background: #fff;
    border-radius: 12px;
    padding: 28px;
    width: 90%;
    max-width: 460px;
    box-shadow: 0 20px 60px rgba(0,0,0,.2);
    /* v20.22.508 — Même garde que la modale dossier admin : sur petite hauteur d'écran,
       la modale défile en interne au lieu de pousser les boutons hors de l'écran. */
    max-height: calc(100vh - 48px);
    overflow-y: auto;
    overscroll-behavior: contain;
}
.cv-folder-suggest-modal-box h3 {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 18px;
    font-weight: 800;
    color: #0f172a;
    margin: 0 0 6px;
}
.cv-folder-suggest-modal-box h3 .dashicons { color: #f59e0b; }
.cv-folder-suggest-modal-box .description { font-size: 13px; color: #64748b; margin-bottom: 16px; }
.cv-folder-suggest-modal-box .cv-form-row { margin-bottom: 14px; }
.cv-folder-suggest-modal-box label { display: block; font-size: 13px; font-weight: 600; color: #334155; margin-bottom: 4px; }
.cv-folder-suggest-modal-box input,
.cv-folder-suggest-modal-box textarea {
    width: 100%;
    padding: 10px 12px;
    border: 1px solid #d1d5db;
    border-radius: 8px;
    font-size: 14px;
    color: #1e293b;
    box-sizing: border-box;
    transition: border-color .15s;
}
.cv-folder-suggest-modal-box input:focus,
.cv-folder-suggest-modal-box textarea:focus { outline: none; border-color: #f59e0b; box-shadow: 0 0 0 3px rgba(245,158,11,.12); }
.cv-folder-suggest-modal-box .cv-form-actions { display: flex; justify-content: flex-end; gap: 10px; margin-top: 18px; }

/* Move to folder select (frontend files) — v7.16.6 inline + separator + !important overrides */
.cv-vault-wrap select.cv-folder-move-select {
    padding: 3px 18px 3px 6px !important;
    border: 1px solid #e8ecf0 !important;
    border-radius: 0 6px 6px 0 !important;
    font-size: 12px !important;
    color: #475569 !important;
    background: #fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='6' height='4' viewBox='0 0 6 4'%3E%3Cpath d='M0 0l3 4 3-4z' fill='%2394a3b8'/%3E%3C/svg%3E") no-repeat right 6px center !important;
    background-size: 6px 4px !important;
    -webkit-appearance: none !important;
    -moz-appearance: none !important;
    appearance: none !important;
    cursor: pointer !important;
    min-width: 85px !important;
    max-width: 145px !important;
    flex-shrink: 1;
    flex-grow: 0;
    margin-left: 4px !important;
    border-left: 2px solid #e2e8f0 !important;
    height: auto !important;
    line-height: 1.4 !important;
}
.cv-folder-move-select:focus { border-color: #3b82f6; outline: none; }

/* ══════════════════════════════════════════
   Folder Detail Hero Block
   ══════════════════════════════════════════ */
.cv-folder-detail-hero {
    background: linear-gradient(135deg, #f8fafc 0%, #eef2f7 100%);
    border: 1px solid var(--cvf-border, #e8ecf0);
    border-radius: var(--cvf-radius, 12px);
    padding: 20px 24px;
    margin-bottom: 20px;
}
.cv-folder-detail-hero-top {
    margin-bottom: 16px;
}
.cv-folder-detail-hero-top .cv-folder-back-btn {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    padding: 7px 16px;
    border: 1px solid var(--cvf-border, #e8ecf0);
    border-radius: 8px;
    background: #fff;
    color: var(--cvf-text-muted, #7f8c9b);
    font-size: 13px;
    font-weight: 600;
    cursor: pointer;
    transition: all .15s;
    white-space: nowrap;
}
.cv-folder-detail-hero-top .cv-folder-back-btn:hover {
    border-color: var(--cvf-primary, #1e3a5f);
    color: var(--cvf-primary, #1e3a5f);
    background: #fff;
}
.cv-folder-detail-hero-main {
    display: flex;
    align-items: center;
    gap: 14px;
}
.cv-folder-detail-hero-icon {
    width: 52px;
    height: 52px;
    border-radius: 12px;
    background: #fff;
    border: 1px solid var(--cvf-border, #e8ecf0);
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    color: var(--cvf-primary, #1e3a5f);
    box-shadow: 0 2px 8px rgba(0,0,0,.04);
}
.cv-folder-detail-hero-icon svg { width: 28px; height: 28px; }
.cv-folder-detail-hero-info {
    flex: 1;
    min-width: 0;
}
.cv-folder-detail-hero-info h3 {
    font-size: 20px;
    font-weight: 800;
    color: var(--cvf-text, #0f172a);
    margin: 0 0 6px;
    line-height: 1.3;
}
.cv-folder-detail-hero-meta {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
}
.cv-folder-detail-hero-meta .cv-folder-detail-status { flex-shrink: 0; }
.cv-folder-detail-deadline {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    font-size: 13px;
    font-weight: 600;
    color: #92400e;
    background: #fef3c7;
    padding: 4px 12px;
    border-radius: 20px;
}
.cv-folder-detail-deadline svg { width: 14px; height: 14px; flex-shrink: 0; }
.cv-folder-detail-desc {
    font-size: 14px;
    color: var(--cvf-text-muted, #64748b);
    line-height: 1.6;
    margin-top: 14px;
    padding: 12px 16px;
    background: #fff;
    border-radius: 8px;
    border-left: 3px solid var(--cvf-primary-light, #93c5fd);
}
.cv-folder-detail-hero .cv-folder-search-bar {
    margin-top: 14px;
    margin-bottom: 0;
}

/* ══════════════════════════════════════════
   v11.80.0 — En-tête dossier PREMIUM & COMPACT
   (moins de hauteur perdue : back inline, gradient feutré, accent)
   ══════════════════════════════════════════ */
.cv-vault-wrap .cv-folder-detail-hero {
    padding: 14px 18px; margin-bottom: 16px; position: relative;
    background: linear-gradient(135deg, #ffffff 0%, #f4f7fb 100%);
    border: 1px solid var(--cvf-border, #e8ecf0);
    box-shadow: 0 1px 3px rgba(16,42,76,.05);
}
.cv-vault-wrap .cv-folder-detail-hero::before {
    content: ""; position: absolute; left: 0; top: 14px; bottom: 14px; width: 3px; border-radius: 3px;
    background: var(--cvf-primary, #1e3a5f);
}
/* v11.80.3 — En-tête CENTRÉ, aéré & premium (sans icône) : titre en grand centré,
   description dessous, recherche centrée. On comprend qu'on est dans le dossier. */
.cv-vault-wrap .cv-folder-detail-hero { text-align: center; padding: 16px 20px 18px; }
.cv-vault-wrap .cv-folder-detail-hero::before { display: none; }
.cv-vault-wrap .cv-folder-detail-hero-top { margin-bottom: 6px; text-align: left; }
.cv-vault-wrap .cv-folder-detail-hero-top .cv-folder-back-btn { padding: 5px 12px; font-size: 12.5px; }
.cv-vault-wrap .cv-folder-detail-hero-center { max-width: 660px; margin: 0 auto; }
.cv-vault-wrap .cv-folder-detail-hero-titleline { display: flex; align-items: center; justify-content: center; flex-wrap: wrap; gap: 10px; line-height: 1; }
.cv-vault-wrap .cv-folder-detail-hero-titleline h3 { font-size: 24px; margin: 0; line-height: 1.15 !important; font-weight: 700; color: var(--cvf-text, #1f2937); }
.cv-vault-wrap .cv-folder-detail-hero-titleline .cv-folder-detail-status { display: inline-flex; align-items: center; line-height: 1; }
.cv-vault-wrap .cv-folder-detail-hero-titleline .cv-folder-badge { display: inline-flex; align-items: center; line-height: 1; font-size: 13px; padding: 5px 13px; position: relative; top: -4px; }
/* Description épurée (pas de bordure ni fond), collée au titre, tout remonte */
.cv-vault-wrap .cv-folder-detail-hero-center .cv-folder-detail-desc {
    margin-top: 4px; padding: 0; background: none; border: none;
    font-size: 13px; line-height: 1.45; color: var(--cvf-text-muted, #64748b);
}
.cv-vault-wrap .cv-folder-detail-hero-center .cv-folder-search-bar { margin: 12px auto 0; max-width: 480px; }
/* ══════════════════════════════════════════
   v11.80.1 — Blocs Échanges (Administrateur / Client) — ONGLETS par type
   ══════════════════════════════════════════ */
.cv-vault-wrap .cv-folder-exchanges { padding: 4px 2px; }
.cv-vault-wrap .cv-exch-tabs { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 14px; border-bottom: 1px solid var(--cvf-border, #eef1f5); padding-bottom: 10px; }
.cv-vault-wrap .cv-exch-tab {
    display: inline-flex; align-items: center; gap: 5px; height: 30px; padding: 0 12px;
    border: 1px solid var(--cvf-border, #e8ecf0); background: #fff; color: var(--cvf-text-muted, #64748b);
    border-radius: 8px; font-size: 12.5px; font-weight: 600; cursor: pointer; transition: all .12s;
}
.cv-vault-wrap .cv-exch-tab .dashicons { font-size: 15px; width: 15px; height: 15px; }
.cv-vault-wrap .cv-exch-tab:hover { border-color: var(--cvf-primary); color: var(--cvf-primary); }
.cv-vault-wrap .cv-exch-tab.active { background: var(--cvf-primary); border-color: var(--cvf-primary); color: #fff; }
.cv-vault-wrap .cv-folder-exchanges-client .cv-exch-tab.active { background: var(--cvf-accent); border-color: var(--cvf-accent); }
.cv-vault-wrap .cv-exch-tab-cnt { font-size: 11px; opacity: .85; }
.cv-vault-wrap .cv-exch-panel { display: none; }
.cv-vault-wrap .cv-exch-panel.active { display: block; }

/* Texte sur 2 colonnes (gagner l'espace à droite) + lot de 10 (load more) */
.cv-vault-wrap .cv-exch-text-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: 10px; align-items: start; }
.cv-vault-wrap .cv-exch-hidden { display: none !important; }
.cv-vault-wrap .cv-exch-load-more { margin-top: 12px; }
.cv-vault-wrap .cv-exch-item { background: #fff; border: 1px solid var(--cvf-border, #eef1f5); border-radius: 10px; padding: 10px 12px; margin-bottom: 8px; }
.cv-vault-wrap .cv-exch-text-grid .cv-exch-item { margin-bottom: 0; }
.cv-vault-wrap .cv-folder-exchanges-admin .cv-exch-item,
.cv-vault-wrap .cv-folder-exchanges-admin .cv-exch-audio-card { border-left: 3px solid var(--cvf-primary, #1e3a5f); }
.cv-vault-wrap .cv-folder-exchanges-client .cv-exch-item,
.cv-vault-wrap .cv-folder-exchanges-client .cv-exch-audio-card { border-left: 3px solid var(--cvf-accent, #e8913a); }
.cv-vault-wrap .cv-exch-meta { font-size: 12px; color: var(--cvf-text-muted, #64748b); margin-bottom: 6px; }
.cv-vault-wrap .cv-exch-meta strong { color: var(--cvf-text, #1f2937); }
/* Texte tronqué à 2 lignes ET réservant TOUJOURS 2 lignes → cartes de hauteur identique */
.cv-vault-wrap .cv-exch-text {
    font-size: 13.5px; color: var(--cvf-text, #1f2937); line-height: 1.45;
    display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical;
    overflow: hidden; text-overflow: ellipsis;
    min-height: 2.9em;
}

/* Audio : 2-3 par ligne, cartes compactes */
.cv-vault-wrap .cv-exch-audio-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 10px; }
.cv-vault-wrap .cv-exch-audio-card { background: #fff; border: 1px solid var(--cvf-border, #eef1f5); border-radius: 10px; padding: 10px 12px; }
.cv-vault-wrap .cv-exch-audio-card .cv-exch-meta { display: flex; flex-direction: column; gap: 1px; margin-bottom: 8px; }
.cv-vault-wrap .cv-exch-audio-card .cv-exch-meta span { font-size: 11px; color: var(--cvf-text-muted, #64748b); }
.cv-vault-wrap .cv-exch-audio { width: 100%; height: 38px; display: block; }

/* Audio / Vidéo / partage d'écran : cartes identiques au bloc Médias, clic = pop-up */
.cv-vault-wrap .cv-exch-media-card { cursor: pointer; }
.cv-vault-wrap .cv-exch-media-card .cv-folder-embed-thumb video { width: 100%; height: 100%; object-fit: cover; }
.cv-vault-wrap .cv-exch-thumb-audio { background: linear-gradient(135deg, var(--cvf-primary, #1e3a5f) 0%, #2d4a6b 100%); display: flex; align-items: center; justify-content: center; }
.cv-vault-wrap .cv-exch-thumb-audio .cv-folder-embed-thumb-icon { font-size: 30px; }

/* « Rattaché à » : document / média source de l'échange */
/* v11.86.290 — provenance enrichie : médaillon coloré (type) + type + nom, format en badge */
.cv-vault-wrap .cv-exch-src {
    display: inline-flex; align-items: center; gap: 9px; margin-top: 9px; max-width: 100%;
    padding: 6px 10px; border-radius: 12px; background: var(--cvf-card, #fff); border: 1px solid var(--cvf-border, #e8ecf0);
    cursor: pointer; font-family: inherit; text-align: left; transition: border-color .12s, box-shadow .12s, transform .08s;
    --es: #2563eb; --esb: #e8f0fe;
}
.cv-vault-wrap .cv-exch-src:hover { border-color: var(--es); box-shadow: 0 4px 14px rgba(15,23,42,.08); transform: translateY(-1px); }
.cv-vault-wrap .cv-exch-src-ico { flex: 0 0 auto; width: 30px; height: 30px; border-radius: 9px; display: inline-flex; align-items: center; justify-content: center; background: var(--esb); color: var(--es); }
.cv-vault-wrap .cv-exch-src-ico .dashicons { font-size: 17px; width: 17px; height: 17px; color: var(--es); }
.cv-vault-wrap .cv-exch-src-body { display: flex; flex-direction: column; min-width: 0; line-height: 1.25; }
.cv-vault-wrap .cv-exch-src-type { font-size: 10px; font-weight: 700; text-transform: uppercase; letter-spacing: .03em; color: var(--es); }
.cv-vault-wrap .cv-exch-src-name { font-size: 12.5px !important; font-weight: 600; color: var(--cvf-text, #1f2937); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 220px; }
.cv-vault-wrap .cv-exch-src-go { flex: 0 0 auto; margin-left: auto; font-size: 15px; width: 15px; height: 15px; color: var(--cvf-text-hint, #cbd5e1); }
.cv-vault-wrap .cv-exch-src:hover .cv-exch-src-go { color: var(--es); }
.cv-vault-wrap .cv-exch-src-file  { --es:#2563eb; --esb:#e8f0fe; }
.cv-vault-wrap .cv-exch-src-embed { --es:#7c3aed; --esb:#f1ebfc; }
.cv-vault-wrap .cv-exch-src-card  { --es:#0e9f6e; --esb:#e3f6ee; }
.cv-vault-wrap .cv-exch-src-link  { --es:#4f46e5; --esb:#eaeafc; }
.cv-vault-wrap .cv-exch-src-note  { --es:#d97706; --esb:#fdf0dc; }
/* Badge de format de la conversation */
.cv-vault-wrap .cv-exch-fmt { display: inline-flex; align-items: center; gap: 4px; margin-right: 8px; padding: 2px 8px; border-radius: 999px; font-size: 10.5px; font-weight: 700; text-transform: uppercase; letter-spacing: .02em; background: var(--ef-b,#eef2f7); color: var(--ef,#475569); vertical-align: middle; }
.cv-vault-wrap .cv-exch-fmt .dashicons { font-size: 13px; width: 13px; height: 13px; }
.cv-vault-wrap .cv-exch-fmt-text   { --ef:#2563eb; --ef-b:#e8f0fe; }
.cv-vault-wrap .cv-exch-fmt-audio  { --ef:#0e9f6e; --ef-b:#e3f6ee; }
.cv-vault-wrap .cv-exch-fmt-video  { --ef:#7c3aed; --ef-b:#f1ebfc; }
.cv-vault-wrap .cv-exch-fmt-screen { --ef:#d97706; --ef-b:#fdf0dc; }

/* ══════════════════════════════════════════
   Collapsible Sections
   ══════════════════════════════════════════ */
.cv-folder-section-header.cv-folder-section-toggle {
    cursor: pointer;
    user-select: none;
    transition: background .15s;
}
.cv-folder-section-header.cv-folder-section-toggle:hover {
    background: linear-gradient(135deg, #eef2f7 0%, #e8ecf0 100%);
}
/* v11.83.1 — en-tête de section : titre extensible + zone d'outils (switcher) + flèche bouton */
.cv-folder-section-title { flex: 1 1 auto; display: inline-flex; align-items: center; gap: 8px; min-width: 0; }
.cv-folder-section-header .cv-view-switch {
    display: inline-flex; gap: 1px; padding: 2px; border: 1px solid var(--cvf-border, #e1e5eb);
    border-radius: 8px; background: rgba(255,255,255,.7); flex: 0 0 auto;
}
.cv-folder-section-header .cv-view-btn { width: 28px; height: 24px; border-radius: 5px; }
.cv-folder-section-header .cv-view-btn .dashicons { font-size: 15px; width: 15px; height: 15px; }
.cv-folder-section-arrow-btn {
    flex: 0 0 auto; display: inline-flex; align-items: center; justify-content: center;
    width: 30px; height: 26px; margin-left: 6px; padding: 0;
    border: none; background: transparent; border-radius: 6px; cursor: pointer;
    color: var(--cvf-text-muted, #94a3b8); transition: background .15s;
}
.cv-folder-section-arrow-btn:hover { background: rgba(0,0,0,.06); color: var(--cvf-text, #334155); }
.cv-folder-section-arrow {
    font-size: 16px;
    color: inherit;
    transition: transform .2s;
}
.cv-folder-section-count {
    font-size: 12px;
    font-weight: 600;
    color: var(--cvf-text-muted, #94a3b8);
    background: rgba(0,0,0,.04);
    padding: 2px 10px;
    border-radius: 20px;
    margin-left: 4px;
}

/* ══════════════════════════════════════════
   Load More & Hidden Items
   ══════════════════════════════════════════ */
.cv-folder-hidden { display: none !important; }
/* v20.21.24 — « Voir plus » centré en vue grille (span toutes les colonnes ; ignoré hors grille) */
.cv-folder-load-more, .cv-load-more-wrap, .cv-front-load-more-embeds, .cv-exch-load-more, .cv-week-load-more { grid-column: 1 / -1; }
.cv-folder-load-more {
    display: block;
    width: 100%;
    padding: 10px 16px;
    margin-top: 12px;
    background: linear-gradient(135deg, #f8fafc 0%, #f1f5f9 100%);
    border: 1px dashed var(--cvf-border, #e8ecf0);
    border-radius: 8px;
    color: var(--cvf-primary, #1e3a5f);
    font-size: 13px;
    font-weight: 600;
    cursor: pointer;
    text-align: center;
    transition: all .15s;
}
.cv-folder-load-more:hover {
    background: #eef2f7;
    border-color: var(--cvf-primary-light, #2a5298);
    color: var(--cvf-primary-light, #2a5298);
}

/* ── Folder search bar ── */
.cv-folder-search-bar {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 8px 14px;
    border: 1px solid var(--cvf-border, #e8ecf0);
    border-radius: 10px;
    background: var(--cvf-bg-alt, #f8fafc);
    margin-bottom: 16px;
    transition: border-color .15s;
}
.cv-folder-search-bar:focus-within {
    border-color: var(--cvf-primary, #1e3a5f);
    box-shadow: 0 0 0 3px rgba(30,58,95,0.08);
}
.cv-folder-search-bar svg { flex-shrink: 0; color: var(--cvf-text-muted, #94a3b8); }
.cv-folder-search-bar input {
    flex: 1;
    border: none;
    background: transparent;
    font-size: 14px;
    color: var(--cvf-text, #1e293b);
    outline: none;
    padding: 0;
}
.cv-folder-search-bar input::placeholder { color: var(--cvf-text-muted, #94a3b8); }

/* ── Pending suggestion card ── */
.cv-folder-suggestion-card { cursor: default !important; }
.cv-folder-suggestion-card:hover { transform: none !important; }
.cv-folder-status-pending {
    background: #fbbf24;
    color: #78350f;
    font-size: 11px;
    font-weight: 700;
    padding: 3px 10px;
    border-radius: 20px;
}
.cv-folder-status-rejected {
    background: #ef4444;
    color: #fff;
    font-size: 11px;
    font-weight: 700;
    padding: 3px 10px;
    border-radius: 20px;
}

/* ── Rejected folder card styling (greyed out + strikethrough) ── */
.cv-front-folder-card[data-status="rejected"] {
    opacity: 0.5 !important;
    filter: grayscale(0.65);
    pointer-events: auto;
}
.cv-front-folder-card[data-status="rejected"] .cv-folder-card-name {
    text-decoration: line-through;
    text-decoration-color: rgba(0,0,0,.3);
}
.cv-front-folder-card[data-status="rejected"]:hover {
    opacity: 0.65 !important;
    transform: none !important;
}

/* ── Folder filter bar ── */
.cv-folder-filter-bar {
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
    align-items: center;
    padding: 10px 16px;
    background: var(--cvf-bg, #f8fafc);
    border: 1px solid var(--cvf-border, #e8ecf0);
    border-radius: 10px;
    margin-bottom: 14px;
}
.cv-folder-filter-bar .cv-doc-ftype-btn {
    padding: 6px 14px;
    border: 1px solid var(--cvf-border, #e8ecf0);
    border-radius: 8px;
    background: #fff;
    font-size: 12px;
    font-weight: 600;
    color: var(--cvf-text-muted, #64748b);
    cursor: pointer;
    transition: all .15s;
    white-space: nowrap;
}
.cv-folder-filter-bar .cv-doc-ftype-btn:hover {
    border-color: var(--cvf-primary, #1e3a5f);
    color: var(--cvf-primary, #1e3a5f);
}
.cv-folder-filter-bar .cv-doc-ftype-btn.active {
    background: var(--cvf-primary, #1e3a5f);
    color: #fff;
    border-color: var(--cvf-primary, #1e3a5f);
}
.cv-folder-filter-search {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-left: auto;
    padding: 7px 14px;
    border: 1.5px solid var(--cvf-border, #e8ecf0);
    border-radius: 10px;
    background: #fff;
    transition: all .2s;
    min-width: 200px;
}
.cv-folder-filter-search:focus-within {
    border-color: var(--cvf-primary, #1e3a5f);
    box-shadow: 0 0 0 3px rgba(30,58,95,0.1);
    background: #fafbfd;
}
.cv-folder-filter-search svg {
    color: var(--cvf-text-muted, #94a3b8);
    flex-shrink: 0;
    transition: color .2s;
}
.cv-folder-filter-search:focus-within svg { color: var(--cvf-primary, #1e3a5f); }
.cv-folder-filter-search input {
    border: none;
    background: transparent;
    font-size: 13px;
    font-weight: 500;
    color: var(--cvf-text, #1e293b);
    outline: none;
    padding: 0;
    flex: 1;
    min-width: 0;
}
.cv-folder-filter-search input::placeholder {
    color: var(--cvf-text-muted, #94a3b8);
    font-weight: 400;
}
@media (max-width: 600px) {
    .cv-folder-filter-bar { flex-direction: column; align-items: stretch; }
    .cv-folder-filter-search { margin-left: 0; min-width: 0; }
}

/* ── Toast success (frontend v7.53) — top-center, always visible ── */
.cv-toast-success-front {
    position: fixed;
    top: 40px;
    left: 50%;
    transform: translateX(-50%) translateY(-20px);
    padding: 14px 32px;
    background: #059669;
    color: #fff;
    font-size: 15px;
    font-weight: 600;
    border-radius: 10px;
    box-shadow: 0 8px 30px rgba(5,150,105,.35);
    z-index: 100010;
    opacity: 0;
    transition: opacity .3s, transform .3s;
}
.cv-toast-success-front.cv-toast-visible {
    opacity: 1;
    transform: translateX(-50%) translateY(0);
}
/* ── Bandeau toast inline sous les filtres de la section active (v7.54) ── */
.cv-table-toast {
    padding: 12px 20px;
    margin: 10px 0 12px 0;
    border-radius: 8px;
    font-size: 14px;
    font-weight: 600;
    display: flex;
    align-items: center;
    gap: 8px;
    opacity: 0;
    transform: translateY(-8px);
    transition: opacity .3s ease, transform .3s ease;
}
.cv-table-toast.cv-table-toast-visible {
    opacity: 1;
    transform: translateY(0);
}
.cv-table-toast-success {
    background: #ecfdf5;
    color: #065f46;
    border: 1px solid #a7f3d0;
}
.cv-table-toast-error {
    background: #fef2f2;
    color: #991b1b;
    border: 1px solid #fecaca;
}
.cv-table-toast-icon {
    font-size: 16px;
    flex-shrink: 0;
}
/* ── Surlignage flash sur ligne déplacée ── */
tr.cv-doc-row.cv-row-flash-success {
    animation: cvRowFlash 2s ease;
}
@keyframes cvRowFlash {
    0%   { background-color: #d1fae5; }
    100% { background-color: transparent; }
}

/* ── Archived files ── */
tr.cv-doc-row.cv-doc-archived td {
    opacity: 0.55;
    background: #fffbeb;
}
tr.cv-doc-row.cv-doc-archived:hover td {
    opacity: 0.75;
    background: #fef3c7;
}
tr.cv-doc-row.cv-doc-archived td:first-child {
    border-left: 3px solid #d97706;
}
/* ── Archived badge — shared style for all content types ── */
tr.cv-doc-row.cv-doc-archived .cv-doc-name-t::after,
.cv-content-archived .cv-fiche-title::after,
.cv-content-archived .cv-link-title::after,
.cv-content-archived .cv-note-who::after {
    content: var(--cvlbl-archived-badge);
    display: inline-block;
    margin-left: 10px;
    padding: 3px 10px;
    background: linear-gradient(135deg, #f59e0b 0%, #d97706 100%);
    color: #fff;
    font-size: 10px;
    font-weight: 700;
    border-radius: 4px;
    vertical-align: middle;
    letter-spacing: 0.5px;
    text-transform: uppercase;
    line-height: 1.4;
    box-shadow: 0 1px 3px rgba(217, 119, 6, 0.3);
}
/* ── Archived badge for media — overlay on thumbnail (title has overflow:hidden) ── */
.cv-content-archived.cv-media-item .cv-media-preview {
    position: relative;
}
.cv-content-archived.cv-media-item .cv-media-preview::after {
    content: var(--cvlbl-archived-badge);
    position: absolute;
    bottom: 6px;
    left: 6px;
    padding: 3px 10px;
    background: linear-gradient(135deg, #f59e0b 0%, #d97706 100%);
    color: #fff;
    font-size: 10px;
    font-weight: 700;
    border-radius: 4px;
    letter-spacing: 0.5px;
    text-transform: uppercase;
    line-height: 1.4;
    box-shadow: 0 2px 6px rgba(0, 0, 0, 0.3);
    z-index: 2;
}
/* Archive filter buttons — 3-state: Tous / Actifs / Archivés */
.cv-archive-filter-btn {
    /* inherits cv-seg-btn styling */
}
.cv-archive-filter-btn .cv-archive-count {
    display: inline-block;
    background: rgba(107, 114, 128, 0.15);
    color: #6b7280;
    font-size: 10px;
    font-weight: 700;
    padding: 1px 6px;
    border-radius: 10px;
    margin-left: 3px;
}
.cv-archive-filter-btn.active .cv-archive-count {
    background: rgba(255, 255, 255, 0.3);
    color: inherit;
}
/* Archive action button */
.cv-archive-file-btn { font-size: 13px; }

/* ── Generic archived content (embeds, cards, links, notepad, files) ── */
.cv-content-archived {
    background: #fffbeb !important;
    border-left: 3px solid #d97706 !important;
    position: relative;
}
.cv-content-archived:hover {
    background: #fef3c7 !important;
}
/* v11.86.154 — estomper UNIQUEMENT le contenu textuel des items archivés (pas la carte entière),
   pour que la case à cocher et les boutons d'action restent nets et utilisables (« mode gris »). */
.cv-content-archived .cv-fiche-title, .cv-content-archived .cv-fiche-text, .cv-content-archived .cv-fiche-tags,
.cv-content-archived .cv-fiche-meta, .cv-content-archived .cv-link-title, .cv-content-archived .cv-link-url,
.cv-content-archived .cv-link-desc, .cv-content-archived .cv-note-txt, .cv-content-archived .cv-note-who,
.cv-content-archived .cv-note-time, .cv-content-archived .cv-note-av { opacity: 0.6; }
/* Inline "Archivé — consultation uniquement" notice (Parcours style) */
/* Archived notice — hidden by default since the ::after badge is the primary indicator */
.cv-archived-notice {
    display: none;
}
/* ── Hide edit buttons on archived content ── */
.cv-content-archived .cv-edit-card,
.cv-content-archived .cv-edit-link-btn,
.cv-content-archived .cv-admin-edit-card,
.cv-content-archived .cv-admin-edit-link,
.cv-content-archived .cv-admin-edit-embed,
.cv-content-archived .cv-admin-edit-note {
    display: none !important;
}
tr.cv-doc-row.cv-doc-archived .cv-front-edit-file-btn {
    display: none !important;
}
/* ── Hide comment form & reply buttons on archived content (read-only) ── */
.cv-content-archived .cv-comment-form,
.cv-content-archived .cv-comment-reply-btn,
.cv-content-archived .cv-comment-delete,
.cv-content-archived .cv-reply-indicator {
    display: none !important;
}
tr.cv-doc-row.cv-doc-archived .cv-comment-form,
tr.cv-doc-row.cv-doc-archived .cv-comment-reply-btn,
tr.cv-doc-row.cv-doc-archived .cv-comment-delete {
    display: none !important;
}
/* ── Archived file preview popup: hide write controls but keep sidebar openable ── */
.cv-preview-archived #cv-front-reply-form,
.cv-preview-archived .cv-preview-reply-form,
.cv-preview-archived .cv-comment-reply-btn,
.cv-preview-archived .cv-front-comment-delete,
.cv-preview-archived .cv-preview-comment-delete,
.cv-preview-archived .cv-reply-indicator {
    display: none !important;
}
/* Archived banner in popup headers is injected via JS using .cv-popup-archived-badge class */
/* ── Archived banner in popup headers (document + media) ── */
.cv-popup-archived-badge {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 4px 14px;
    background: linear-gradient(135deg, #f59e0b 0%, #d97706 100%);
    color: #fff;
    font-size: 11px;
    font-weight: 700;
    border-radius: 4px;
    letter-spacing: 0.3px;
    text-transform: uppercase;
    box-shadow: 0 1px 3px rgba(217, 119, 6, 0.3);
    white-space: nowrap;
    flex-shrink: 0;
}
/* ── Hide tag button on archived content ── */
.cv-content-archived .cv-tag-menu-btn,
tr.cv-doc-row.cv-doc-archived .cv-tag-menu-btn {
    display: none !important;
}
/* ── Frontend: hide ALL delete buttons — clients use archive, admin uses admin panel ── */
.cv-vault-wrap .cv-vault-delete-btn,
.cv-vault-wrap .cv-delete-card,
.cv-vault-wrap .cv-delete-link-btn,
.cv-vault-wrap .cv-msg-delete,
.cv-vault-wrap .cv-front-delete-embed {
    display: none !important;
}
/* Also hide the bulk delete bar if present */
.cv-vault-wrap #cv-delete-confirm-overlay .cv-confirm-delete-btn {
    /* keep the confirm overlay functional for admins if needed, but clients won't see trigger */
}

/* ── Parcours archive choice modal overlay ── */
#cv-parcours-archive-modal {
    position: fixed;
    inset: 0;
    z-index: 100010;
    background: rgba(0,0,0,0.45);
    display: flex;
    align-items: center;
    justify-content: center;
}
#cv-parcours-archive-modal .cv-modal-box {
    position: relative;
    background: #fff;
    border-radius: 12px;
    box-shadow: 0 12px 40px rgba(0,0,0,0.2);
}

/* ── Inline folder move toast ── */
.cv-folder-move-toast {
    padding: 6px 14px;
    background: #059669;
    color: #fff;
    font-size: 12px;
    font-weight: 600;
    border-radius: 6px;
    margin-top: 6px;
    display: inline-block;
    opacity: 0;
    transform: translateY(-4px);
    transition: opacity .25s, transform .25s;
}
.cv-folder-move-toast.cv-toast-visible {
    opacity: 1;
    transform: translateY(0);
}

/* ── Suggest modal button styling (now uses standard classes) ── */
.cv-folder-suggest-modal-box .cv-modal-btn-save {
    padding: 10px 22px;
    background: var(--cvf-primary, #1e3a5f);
    color: #fff;
    border: none;
    border-radius: 10px;
    font-size: 13px;
    font-weight: 700;
    cursor: pointer;
    transition: background .2s, transform .15s;
    font-family: inherit;
}
.cv-folder-suggest-modal-box .cv-modal-btn-save:hover { background: #152d4a; transform: translateY(-1px); }
.cv-folder-suggest-modal-box .cv-modal-btn-save:disabled { opacity: 0.5; cursor: not-allowed; transform: none; }
.cv-folder-suggest-modal-box .cv-modal-btn-cancel {
    padding: 10px 18px;
    background: none;
    border: 1px solid var(--cvf-border, #e8ecf0);
    border-radius: 10px;
    font-size: 13px;
    font-weight: 600;
    color: var(--cvf-text-muted, #7f8c9b);
    cursor: pointer;
    font-family: inherit;
    transition: all .15s;
}
.cv-folder-suggest-modal-box .cv-modal-btn-cancel:hover { border-color: var(--cvf-danger, #e74c3c); color: var(--cvf-danger, #e74c3c); }

.cv-folder-content-empty { text-align: center; padding: 48px 24px; color: #94a3b8; }
.cv-folder-content-empty p { font-size: 15px; margin: 12px 0 4px; font-weight: 600; color: #64748b; }

@media (max-width: 600px) {
    .cv-folder-files-table th:nth-child(2),
    .cv-folder-files-table td:nth-child(2) { display: none; }
    .cv-folder-detail-hero { padding: 14px 16px; }
    .cv-folder-detail-hero-main { gap: 10px; }
    .cv-folder-detail-hero-icon { width: 40px; height: 40px; }
    .cv-folder-detail-hero-icon svg { width: 22px; height: 22px; }
    .cv-folder-detail-hero-info h3 { font-size: 17px; }
    .cv-folder-detail-hero-meta { gap: 6px; }
}

/* ═══════════════════════════════════════
   RESPONSIVE FIXES — v7.46.0
   ═══════════════════════════════════════ */

/* ── 600px: Large phones / small tablets ── */
@media (max-width: 600px) {
    /* Export & notification grids: 2 columns */
    .cv-vault-wrap .cv-export-grid,
    .cv-vault-wrap .cv-notif-grid {
        grid-template-columns: repeat(2, 1fr) !important;
        gap: 8px !important;
    }
    /* Export card compact */
    .cv-vault-wrap .cv-export-card,
    .cv-vault-wrap .cv-notif-card {
        padding: 10px 8px 8px !important;
    }
    .cv-vault-wrap .cv-export-card-breakdown {
        font-size: 10px !important;
    }
    /* Modal adjustments */
    .cv-vault-wrap .cv-modal,
    .cv-vault-wrap .cv-modal-overlay .cv-modal {
        width: 95vw !important;
        max-width: 95vw !important;
        padding: 16px !important;
        margin: 8px !important;
    }
    .cv-vault-wrap .cv-modal h3 {
        font-size: 16px !important;
    }
    /* Actions bar stack */
    .cv-vault-wrap .cv-vault-actions-bar {
        flex-direction: column !important;
        gap: 8px !important;
    }
    .cv-vault-wrap .cv-vault-actions-bar > * {
        width: 100% !important;
    }
    /* Settings cards */
    .cv-vault-wrap .cv-settings-card-body {
        padding: 12px !important;
    }
    /* Tabs wrap */
    .cv-vault-wrap .cv-vault-tabs {
        flex-wrap: wrap !important;
        gap: 4px !important;
    }
    .cv-vault-wrap .cv-vault-tab {
        font-size: 12px !important;
        padding: 6px 10px !important;
    }
    /* Section titles */
    .cv-vault-wrap h2, .cv-vault-wrap h3 {
        font-size: 15px !important;
    }
    /* Folder breadcrumb */
    .cv-vault-wrap .cv-folder-breadcrumb {
        font-size: 12px !important;
        flex-wrap: wrap !important;
    }
}

/* ── 480px: Mobile phones ── */
@media (max-width: 480px) {
    /* Export & notification grids: single column */
    .cv-vault-wrap .cv-export-grid,
    .cv-vault-wrap .cv-notif-grid {
        grid-template-columns: 1fr !important;
    }
    /* Media grid single column */
    .cv-vault-wrap .cv-media-grid {
        grid-template-columns: 1fr !important;
    }
    /* Header profile compact */
    .cv-vault-wrap .cv-vault-header {
        flex-direction: column !important;
        text-align: center !important;
        gap: 8px !important;
    }
    /* File table: hide less important columns */
    .cv-vault-wrap .cv-doc-table .cv-col-category,
    .cv-vault-wrap .cv-doc-table .cv-col-size {
        display: none !important;
    }
    /* Buttons full width */
    .cv-vault-wrap .dbtn {
        width: 100% !important;
        text-align: center !important;
    }
    .cv-vault-wrap .cv-form-actions {
        flex-direction: column !important;
        gap: 8px !important;
    }
    /* Storage bar */
    .cv-vault-wrap .cv-settings-storage-bar {
        margin: 0 !important;
    }
    /* Stats compact */
    .cv-vault-wrap .cv-vault-stat-value {
        font-size: 20px !important;
    }
}

/* ── 375px: Small phones (iPhone SE, etc.) ── */
@media (max-width: 375px) {
    .cv-vault-wrap .cv-vault-tab {
        font-size: 11px !important;
        padding: 5px 6px !important;
    }
    .cv-vault-wrap .cv-modal {
        padding: 12px !important;
    }
    .cv-vault-wrap .cv-export-card-icon,
    .cv-vault-wrap .cv-notif-card-icon {
        font-size: 18px !important;
    }
    .cv-vault-wrap .cv-export-card-title,
    .cv-vault-wrap .cv-notif-card-title {
        font-size: 11px !important;
    }
}

/* ═══ Global Announcement Banners (client dashboard) — refonte v11.46.4
   Lisibilité maintenue quel que soit le contexte du thème parent (clair ou sombre)
   grâce à :
   1. Une ombre forte (visible sur fond clair ET sur fond sombre).
   2. Une bordure gauche épaisse de la couleur d'accent pour le type instantané.
   3. Un fond légèrement plus saturé (mieux contrasté) sans devenir agressif.
   4. Une icône dans un cercle teinté (visuel premium, repérage rapide).
   ════════════════════════════════════════════════════════════════════════ */
.cv-ga-banner {
    padding: 18px 22px 18px 24px;
    border-radius: 12px;
    margin-bottom: 14px;
    display: flex;
    align-items: flex-start;
    gap: 16px;
    position: relative;
    animation: cvGaSlide .35s cubic-bezier(0.16, 1, 0.3, 1);
    background: #fff;
    box-shadow: 0 6px 24px rgba(15, 23, 42, 0.10), 0 1px 3px rgba(15, 23, 42, 0.06);
    border: 1px solid rgba(15, 23, 42, 0.08);
    border-left-width: 5px;
    border-left-style: solid;
    transition: transform .18s ease, box-shadow .18s ease;
}
.cv-ga-banner:hover {
    transform: translateY(-1px);
    box-shadow: 0 10px 32px rgba(15, 23, 42, 0.14), 0 2px 6px rgba(15, 23, 42, 0.08);
}
@keyframes cvGaSlide { from { opacity: 0; transform: translateY(-10px); } to { opacity: 1; transform: translateY(0); } }

/* v11.46.5 — Variants : fonds bien saturés pour que chaque type soit visuellement
   marqué selon son importance (Normal → Important → Urgent), AA contrast garanti. */
.cv-ga-banner { border-left-width: 6px; }
.cv-ga-banner-normal {
    background: linear-gradient(135deg, #dbeafe 0%, #bfdbfe 100%);
    border: 1px solid rgba(37, 99, 235, 0.28);
    border-left: 6px solid #2563eb;
    color: #1e3a8a;
}
.cv-ga-banner-important {
    background: linear-gradient(135deg, #fed7aa 0%, #fdba74 100%);
    border: 1px solid rgba(234, 88, 12, 0.32);
    border-left: 6px solid #ea580c;
    color: #7c2d12;
}
.cv-ga-banner-urgent {
    background: linear-gradient(135deg, #fecaca 0%, #fca5a5 100%);
    border: 1px solid rgba(220, 38, 38, 0.36);
    border-left: 6px solid #dc2626;
    color: #7f1d1d;
}

/* Icon dans un cercle teinté — fond plus saturé pour plus de présence */
.cv-ga-banner-icon {
    font-size: 20px;
    flex-shrink: 0;
    width: 42px;
    height: 42px;
    border-radius: 50%;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: rgba(37, 99, 235, 0.22);
    color: #1e40af;
    line-height: 1;
}
.cv-ga-banner-important .cv-ga-banner-icon { background: rgba(234, 88, 12, 0.24); color: #9a3412; }
.cv-ga-banner-urgent .cv-ga-banner-icon    { background: rgba(220, 38, 38, 0.26); color: #991b1b; }

.cv-ga-banner-body { flex: 1; min-width: 0; padding-right: 28px; }
.cv-ga-banner-title {
    font-size: 15px;
    font-weight: 700;
    line-height: 1.3;
    margin: 0 0 4px;
    letter-spacing: -0.01em;
}
.cv-ga-banner-text {
    font-size: 13.5px;
    line-height: 1.55;
    font-weight: 500;
    margin: 0;
    opacity: 0.92;
}
.cv-ga-banner-link {
    display: inline-block;
    margin-top: 10px;
    font-size: 13px;
    font-weight: 700;
    text-decoration: none;
    padding: 6px 14px;
    background: currentColor;
    color: #fff !important;
    border-radius: 6px;
    line-height: 1.3;
    transition: opacity .18s ease, transform .18s ease;
}
.cv-ga-banner-normal .cv-ga-banner-link    { background: #2563eb; }
.cv-ga-banner-important .cv-ga-banner-link { background: #b45309; }
.cv-ga-banner-urgent .cv-ga-banner-link    { background: #b91c1c; }
.cv-ga-banner-link:hover { transform: translateY(-1px); opacity: 0.92; }

/* Dismiss en cercle au lieu d'un simple X */
.cv-ga-banner-dismiss {
    position: absolute;
    top: 12px;
    right: 12px;
    width: 26px;
    height: 26px;
    background: rgba(15, 23, 42, 0.04);
    border: none;
    font-size: 16px;
    cursor: pointer;
    color: inherit;
    opacity: 0.55;
    padding: 0;
    border-radius: 50%;
    line-height: 1;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    transition: opacity .15s ease, background .15s ease;
}
.cv-ga-banner-dismiss:hover { opacity: 1; background: rgba(15, 23, 42, 0.12); }

/* Image dans la banner */
.cv-ga-banner-img { width: 88px; height: 64px; object-fit: cover; border-radius: 10px; flex-shrink: 0; }
.cv-ga-banner-has-img { align-items: center; }
@media (max-width: 480px) {
    .cv-ga-banner { padding: 16px 18px 16px 20px; gap: 12px; }
    .cv-ga-banner-icon { width: 34px; height: 34px; font-size: 16px; }
    .cv-ga-banner-img { width: 60px; height: 44px; border-radius: 8px; }
}

/* ── Targeted announcement ("Message de votre coach/gestionnaire") ── */
.cv-ga-banner-targeted {
    background: linear-gradient(135deg, #f5f3ff 0%, #ede9fe 100%);
    border: 1px solid rgba(124, 58, 237, 0.22);
    border-left: 5px solid #7c3aed;
    color: #4c1d95;
}
.cv-ga-banner-targeted .cv-ga-banner-icon { background: rgba(124, 58, 237, 0.18); color: #6d28d9; }
.cv-ga-banner-targeted .cv-ga-banner-link { background: #7c3aed; }
.cv-ga-banner-targeted .cv-ga-banner-coach {
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: #6d28d9;
    margin: 0 0 6px;
    display: flex;
    align-items: center;
    gap: 5px;
}
.cv-ga-banner-targeted .cv-ga-banner-coach .dashicons { font-size: 13px; width: 13px; height: 13px; }

/* ═══════════════════════════════════════════════════════════
   v11.15.0 — Widgets sidebar Fluent Community (frontend)
   Injectés par CV_FC_Widgets::render_sidebar() dans la sidebar FC
   ═══════════════════════════════════════════════════════════ */
.cv-fc-sidebar-widgets {
    display: flex;
    flex-direction: column;
    gap: 12px;
    margin: 10px 0;
}
.cv-fc-sidebar-widgets .cv-fc-w {
    background: #fff;
    border: 1px solid #e5e7eb;
    border-radius: 12px;
    padding: 12px;
    box-shadow: 0 1px 2px rgba(17,24,39,.04);
    font-size: 13px;
    line-height: 1.5;
    color: #111827;
}
.cv-fc-sidebar-widgets .cv-fc-w--cvp { border-color: #fde68a; background: linear-gradient(180deg, #fffbeb 0%, #fff 100%); }
.cv-fc-sidebar-widgets .cv-fc-w__head {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 12px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .5px;
    color: #6b7280;
    margin-bottom: 8px;
}
.cv-fc-sidebar-widgets .cv-fc-w--cvp .cv-fc-w__head { color: #92400e; }
.cv-fc-sidebar-widgets .cv-fc-w__emoji { font-size: 16px; }
.cv-fc-sidebar-widgets .cv-fc-w__body { font-size: 13px; }
.cv-fc-sidebar-widgets .cv-fc-w-btn {
    display: inline-block;
    margin-top: 8px;
    padding: 6px 12px;
    background: #2563eb;
    color: #fff !important;
    border-radius: 6px;
    font-size: 12px;
    font-weight: 600;
    text-decoration: none;
    transition: background .15s ease;
}
.cv-fc-sidebar-widgets .cv-fc-w-btn:hover { background: #1d4ed8; color: #fff; }
.cv-fc-sidebar-widgets .cv-fc-w-profile { text-align: center; }
.cv-fc-sidebar-widgets .cv-fc-w-profile-avatar img { border-radius: 50%; }
.cv-fc-sidebar-widgets .cv-fc-w-profile-name { font-weight: 700; margin-top: 6px; }
.cv-fc-sidebar-widgets .cv-fc-w-empty { color: #6b7280; font-size: 12px; font-style: italic; }
.cv-fc-sidebar-widgets .cv-fc-w-parcours-bar,
.cv-fc-sidebar-widgets .cv-fc-w-xp-bar {
    height: 6px; background: #e5e7eb; border-radius: 99px; overflow: hidden; margin: 6px 0 4px;
}
.cv-fc-sidebar-widgets .cv-fc-w-parcours-bar > span,
.cv-fc-sidebar-widgets .cv-fc-w-xp-bar > span {
    display: block; height: 100%; background: linear-gradient(90deg, #2563eb, #f59e0b); border-radius: 99px;
}
.cv-fc-sidebar-widgets .cv-fc-w-parcours-meta,
.cv-fc-sidebar-widgets .cv-fc-w-xp-meta,
.cv-fc-sidebar-widgets .cv-fc-w-next-deadline,
.cv-fc-sidebar-widgets .cv-fc-w-streak-best,
.cv-fc-sidebar-widgets .cv-fc-w-help-status { font-size: 11px; color: #6b7280; }
.cv-fc-sidebar-widgets .cv-fc-w-parcours-title,
.cv-fc-sidebar-widgets .cv-fc-w-next-title { font-weight: 700; }
.cv-fc-sidebar-widgets .cv-fc-w-docs.is-critical {
    background: #fee2e2; border-color: #fca5a5; border-radius: 8px; padding: 8px; margin: -4px; margin-bottom: 0;
}
.cv-fc-sidebar-widgets .cv-fc-w-docs.is-critical .cv-fc-w-docs-count { color: #991b1b; font-weight: 700; }
.cv-fc-sidebar-widgets .cv-fc-w-docs-list { margin: 6px 0 0; padding: 0; list-style: none; font-size: 12px; }
.cv-fc-sidebar-widgets .cv-fc-w-docs-list li { padding: 3px 0; border-bottom: 1px dashed #e5e7eb; }
.cv-fc-sidebar-widgets .cv-fc-w-docs-list em { color: #dc2626; font-style: normal; font-weight: 600; font-size: 11px; }
.cv-fc-sidebar-widgets .cv-fc-w-streak-flame { font-size: 16px; font-weight: 700; color: #d97706; }
.cv-fc-sidebar-widgets .cv-fc-w-goals { margin: 0; padding: 0; list-style: none; font-size: 12px; }
.cv-fc-sidebar-widgets .cv-fc-w-goals li { padding: 3px 0; }
.cv-fc-sidebar-widgets .cv-fc-w-goals li.is-done { color: #059669; text-decoration: line-through; }
.cv-fc-sidebar-widgets .cv-fc-w-tip { background: #fef3c7; border-left: 3px solid #f59e0b; padding: 8px 10px; border-radius: 6px; font-size: 12px; color: #78350f; }
.cv-fc-sidebar-widgets .cv-fc-w-leaderboard { margin: 0; padding-left: 20px; font-size: 12px; }
.cv-fc-sidebar-widgets .cv-fc-w-leaderboard li { display: flex; justify-content: space-between; padding: 2px 0; }
.cv-fc-sidebar-widgets .cv-fc-w-online { display: flex; flex-wrap: wrap; gap: 4px; }
.cv-fc-sidebar-widgets .cv-fc-w-online-avatar img { border-radius: 50%; }
.cv-fc-sidebar-widgets .cv-fc-w-search input { width: 100%; padding: 6px 10px; border: 1px solid #d1d5db; border-radius: 6px; font-size: 12px; }
.cv-fc-sidebar-widgets .cv-fc-w-ann { margin: 0; padding-left: 16px; font-size: 12px; }
.cv-fc-sidebar-widgets .cv-fc-w-ann li { padding: 2px 0; }
.cv-fc-sidebar-widgets .cv-fc-w-ann a { color: #2563eb; text-decoration: none; }
.cv-fc-sidebar-widgets .cv-fc-w-ann a:hover { text-decoration: underline; }

/* ═══════════════════════════════════════════════════════════════════════════
 * v11.16.0 — HEADER FRONTEND : BOUCLIER ULTIME
 * ═══════════════════════════════════════════════════════════════════════════
 * Corps du problème : malgré les !important v11.15.0, certains thèmes (Astra,
 * GeneratePress, Kadence) définissent des règles avec spécificité > la nôtre
 * (ex : html body .entry-content h2 { ... }), qui gagnaient le duel.
 *
 * Parade v11.16.0 :
 * 1. Sélecteurs max-spécificité : html body .cv-vault-wrap ... (4+ classes).
 * 2. Inline styles dans le template (ceinture) + !important ici (bretelles).
 * 3. Reset explicite de display/visibility/opacity/height/overflow/color.
 *
 * Règle absolue : ne JAMAIS retirer cette section sans régression confirmée.
 * ═══════════════════════════════════════════════════════════════════════════ */

html body .cv-app.cv-vault-wrap .cv-vault-header .cv-vault-header-top,
html body .cv-vault-wrap .cv-vault-header .cv-vault-header-top {
    display: grid !important;
    grid-template-columns: 1fr !important;
    gap: 24px !important;
    width: 100% !important;
    box-sizing: border-box !important;
    visibility: visible !important;
    opacity: 1 !important;
    max-height: none !important;
    height: auto !important;
    overflow: visible !important;
    position: relative !important;
    z-index: 2 !important;
}

/* v11.17.0 — 3e tentative de fix : CSS Grid au lieu de flex.
   Raison : flexbox collapse à 0 sur certains thèmes (BuddyBoss, Astra child, Divi)
   malgré min-width:0 + flex:1. Grid avec colonnes définies en px+fr résiste. */
html body .cv-app.cv-vault-wrap .cv-vault-header .cv-vault-header-identity,
html body .cv-vault-wrap .cv-vault-header .cv-vault-header-identity {
    display: grid !important;
    grid-template-columns: 76px minmax(0, 1fr) !important;
    grid-template-rows: auto !important;
    column-gap: 22px !important;
    row-gap: 0 !important;
    align-items: center !important;
    width: 100% !important;
    min-width: 0 !important;
    box-sizing: border-box !important;
    overflow: visible !important;
    visibility: visible !important;
    opacity: 1 !important;
    max-height: none !important;
    height: auto !important;
    position: relative !important;
    z-index: 2 !important;
}
html body .cv-app.cv-vault-wrap .cv-vault-header .cv-vault-header-identity > .cv-vault-avatar,
html body .cv-vault-wrap .cv-vault-header .cv-vault-header-identity > .cv-vault-avatar {
    grid-column: 1 !important;
    grid-row: 1 !important;
    justify-self: start !important;
    align-self: center !important;
}

html body .cv-app.cv-vault-wrap .cv-vault-header .cv-vault-header-text,
html body .cv-vault-wrap .cv-vault-header .cv-vault-header-text {
    grid-column: 2 !important;
    grid-row: 1 !important;
    min-width: 0 !important;
    max-width: 100% !important;
    display: block !important;
    visibility: visible !important;
    opacity: 1 !important;
    overflow: visible !important;
    max-height: none !important;
    min-height: 72px !important; /* v11.17.0 — floor pour éviter collapse */
    height: auto !important;
    position: relative !important;
    z-index: 3 !important;
    width: auto !important;
    margin: 0 !important;
    padding: 0 !important;
    color: #fff !important;
    background: transparent !important;
    transform: none !important;
    clip: auto !important;
    clip-path: none !important;
}

/* v11.17.0 — H2 greeting : RETIRER le nowrap+overflow:hidden qui masquait le texte
   quand le parent calculait mal sa largeur. Autoriser le wrap normal. */
html body .cv-app.cv-vault-wrap .cv-vault-header .cv-vault-header-text h2,
html body .cv-vault-wrap .cv-vault-header .cv-vault-header-text h2,
html body .cv-app.cv-vault-wrap .cv-vault-header .cv-vault-header-text .cv-vault-header-greeting,
html body .cv-vault-wrap .cv-vault-header .cv-vault-header-text .cv-vault-header-greeting {
    display: block !important;
    visibility: visible !important;
    opacity: 1 !important;
    max-height: none !important;
    min-height: 30px !important;
    height: auto !important;
    overflow: visible !important;
    text-overflow: clip !important;
    white-space: normal !important;
    word-break: break-word !important;
    font-size: 26px !important;
    line-height: 1.25 !important;
    font-weight: 700 !important;
    color: #fff !important;
    margin: 0 0 4px !important;
    padding: 0 !important;
    letter-spacing: -0.3px !important;
    text-transform: none !important;
    border: none !important;
    background: transparent !important;
    clip: auto !important;
    clip-path: none !important;
    transform: none !important;
    position: static !important;
    width: auto !important;
    max-width: 100% !important;
}

html body .cv-app.cv-vault-wrap .cv-vault-header .cv-vault-header-text .cv-vault-header-subtitle,
html body .cv-vault-wrap .cv-vault-header .cv-vault-header-text .cv-vault-header-subtitle {
    display: block !important;
    visibility: visible !important;
    opacity: 1 !important;
    max-height: none !important;
    min-height: 20px !important; /* v11.17.0 — floor */
    height: auto !important;
    overflow: visible !important;
    font-size: 14px !important;
    line-height: 1.45 !important;
    font-weight: 400 !important;
    color: rgba(255,255,255,0.88) !important;
    margin: 0 0 10px !important;
    padding: 0 !important;
    letter-spacing: 0.1px !important;
    text-transform: none !important;
    border: none !important;
    background: transparent !important;
    clip: auto !important;
    clip-path: none !important;
    transform: none !important;
    position: static !important;
    width: auto !important;
    word-break: break-word !important;
}

html body .cv-app.cv-vault-wrap .cv-vault-header .cv-vault-header-text .cv-vault-header-meta,
html body .cv-vault-wrap .cv-vault-header .cv-vault-header-text .cv-vault-header-meta {
    display: flex !important;
    flex-wrap: wrap !important;
    align-items: center !important;
    gap: 6px !important;
    visibility: visible !important;
    opacity: 0.75 !important;
    max-height: none !important;
    height: auto !important;
    overflow: visible !important;
    font-size: 12px !important;
    line-height: 1.3 !important;
    color: #fff !important;
    margin: 0 !important;
    padding: 0 !important;
    clip: auto !important;
    clip-path: none !important;
    transform: none !important;
    position: static !important;
    width: auto !important;
}

html body .cv-app.cv-vault-wrap .cv-vault-header .cv-vault-header-meta .cv-vault-meta-item,
html body .cv-vault-wrap .cv-vault-header .cv-vault-header-meta .cv-vault-meta-item {
    display: inline-flex !important;
    align-items: center !important;
    gap: 3px !important;
    color: #fff !important;
    visibility: visible !important;
    opacity: 1 !important;
}

html body .cv-app.cv-vault-wrap .cv-vault-header .cv-vault-header-meta .cv-vault-meta-sep,
html body .cv-vault-wrap .cv-vault-header .cv-vault-header-meta .cv-vault-meta-sep {
    display: inline-block !important;
    width: 3px !important;
    height: 3px !important;
    border-radius: 50% !important;
    background: rgba(255,255,255,0.5) !important;
    margin: 0 4px !important;
    visibility: visible !important;
    opacity: 1 !important;
}

/* =========================================================================
   v11.18.0 — HEADER v2 (4e tentative, structure simplifiée au maximum)
   ─────────────────────────────────────────────────────────────────────────
   Les v11.14 → v11.17 essayaient de piloter un conteneur flex ou grid pour
   positionner l'avatar et le texte côte-à-côte. À chaque tentative, un
   thème hôte arrivait à écraser la cascade (BuddyBoss, Divi, Astra child,
   enfant de Kadence, etc.) et faisait collapser le bloc texte à zéro.
   v11.18.0 abandonne complètement ce combat :
     • UNE seule ligne `.cv-vault-header-identity-v2`
     • Avatar en `position:absolute` (hors du flux, ne peut rien casser)
     • Texte en flux normal avec `padding-left` qui réserve la place de
       l'avatar — si un thème force `display:block` sur le parent, on est
       déjà en block, rien à collapser.
   Classes `-v2` toutes neuves pour ne PAS hériter de rules historiques. */

html body .cv-app.cv-vault-wrap .cv-vault-header-v2 .cv-vault-header-identity-v2,
html body .cv-vault-wrap .cv-vault-header-v2 .cv-vault-header-identity-v2,
html body .cv-vault-header-v2 .cv-vault-header-identity-v2 {
    display: block !important;
    position: relative !important;
    min-height: 90px !important;
    padding: 0 0 0 100px !important;
    margin: 0 !important;
    box-sizing: border-box !important;
    width: 100% !important;
    z-index: 2 !important;
    overflow: visible !important;
    visibility: visible !important;
    opacity: 1 !important;
    clip: auto !important;
    clip-path: none !important;
    transform: none !important;
    max-height: none !important;
    height: auto !important;
}

html body .cv-app.cv-vault-wrap .cv-vault-header-v2 .cv-vault-avatar-v2,
html body .cv-vault-wrap .cv-vault-header-v2 .cv-vault-avatar-v2,
html body .cv-vault-header-v2 .cv-vault-avatar-v2 {
    position: absolute !important;
    left: 0 !important;
    top: 50% !important;
    transform: translateY(-50%) !important;
    width: clamp(40px, 11vw, 76px) !important;
    height: clamp(40px, 11vw, 76px) !important;
    min-width: clamp(40px, 11vw, 76px) !important;
    min-height: clamp(40px, 11vw, 76px) !important;
    aspect-ratio: 1 / 1 !important; /* iOS Safari : garantit un cercle parfait même si flex/line-height tente d'étirer */
    flex: 0 0 auto !important;
    box-sizing: border-box !important;
    margin: 0 !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    overflow: hidden !important;
    border-radius: 50% !important;
    background: rgba(255,255,255,.18) !important;
    border: 3px solid rgba(255,255,255,.45) !important;
    box-shadow: 0 4px 16px rgba(0,0,0,.12) !important;
    z-index: 2 !important;
}
/* v20.21.75 — l'image d'avatar suit le conteneur clampé (bat la règle legacy @768 qui force 56px). */
html body .cv-vault-header-v2 .cv-vault-avatar-v2 img,
html body .cv-vault-header-v2 .cv-vault-avatar-v2 .cv-vault-avatar-img {
    width: 100% !important;
    height: 100% !important;
    min-width: 0 !important;
    min-height: 0 !important;
}

html body .cv-app.cv-vault-wrap .cv-vault-header-v2 .cv-vault-header-text-v2,
html body .cv-vault-wrap .cv-vault-header-v2 .cv-vault-header-text-v2,
html body .cv-vault-header-v2 .cv-vault-header-text-v2 {
    display: block !important;
    width: 100% !important;
    min-width: 0 !important;
    max-width: 100% !important;
    min-height: 72px !important;
    height: auto !important;
    color: #fff !important;
    padding: 6px 0 4px !important;
    margin: 0 !important;
    position: relative !important;
    z-index: 3 !important;
    box-sizing: border-box !important;
    overflow: visible !important;
    visibility: visible !important;
    opacity: 1 !important;
    clip: auto !important;
    clip-path: none !important;
    transform: none !important;
    max-height: none !important;
    background: transparent !important;
}

html body .cv-app.cv-vault-wrap .cv-vault-header-v2 .cv-vault-header-greeting-v2,
html body .cv-vault-wrap .cv-vault-header-v2 .cv-vault-header-greeting-v2,
html body .cv-vault-header-v2 .cv-vault-header-greeting-v2 {
    display: block !important;
    color: #fff !important;
    margin: 0 0 1px !important;
    padding: 0 !important;
    font-size: clamp(15px, 3.6vw, 26px) !important;
    line-height: 1.18 !important;
    font-weight: 700 !important;
    letter-spacing: -0.3px !important;
    word-break: break-word !important;
    white-space: normal !important;
    overflow: visible !important;
    text-overflow: clip !important;
    max-width: 100% !important;
    visibility: visible !important;
    opacity: 1 !important;
    text-transform: none !important;
    border: none !important;
    background: transparent !important;
    clip: auto !important;
    clip-path: none !important;
    transform: none !important;
    position: static !important;
    width: auto !important;
    max-height: none !important;
    height: auto !important;
    text-align: left !important;
    font-family: inherit !important;
    text-shadow: none !important;
}

html body .cv-app.cv-vault-wrap .cv-vault-header-v2 .cv-vault-header-subtitle-v2,
html body .cv-vault-wrap .cv-vault-header-v2 .cv-vault-header-subtitle-v2,
html body .cv-vault-header-v2 .cv-vault-header-subtitle-v2 {
    display: block !important;
    color: rgba(255,255,255,0.88) !important;
    margin: 0 0 8px !important;
    padding: 0 !important;
    font-size: clamp(11px, 2.9vw, 13px) !important; /* v20.21.78 — sous-titre réduit (mobile surtout) */
    line-height: 1.4 !important;
    font-weight: 400 !important;
    letter-spacing: 0.1px !important;
    word-break: break-word !important;
    overflow: visible !important;
    visibility: visible !important;
    opacity: 1 !important;
    max-height: none !important;
    min-height: 20px !important;
    height: auto !important;
    text-transform: none !important;
    border: none !important;
    background: transparent !important;
    clip: auto !important;
    clip-path: none !important;
    transform: none !important;
    position: static !important;
    width: auto !important;
    max-width: 100% !important;
    text-align: left !important;
}

html body .cv-app.cv-vault-wrap .cv-vault-header-v2 .cv-vault-header-meta-v2,
html body .cv-vault-wrap .cv-vault-header-v2 .cv-vault-header-meta-v2,
html body .cv-vault-header-v2 .cv-vault-header-meta-v2 {
    display: flex !important;
    flex-wrap: wrap !important;
    align-items: center !important;
    gap: 6px !important;
    font-size: 12px !important;
    line-height: 1.3 !important;
    color: rgba(255,255,255,0.75) !important;
    margin: 0 !important;
    padding: 0 !important;
    visibility: visible !important;
    opacity: 1 !important;
    max-height: none !important;
    height: auto !important;
    overflow: visible !important;
    position: static !important;
    width: auto !important;
    clip: auto !important;
    clip-path: none !important;
    transform: none !important;
}

html body .cv-app.cv-vault-wrap .cv-vault-header-v2 .cv-vault-meta-item-v2,
html body .cv-vault-wrap .cv-vault-header-v2 .cv-vault-meta-item-v2,
html body .cv-vault-header-v2 .cv-vault-meta-item-v2 {
    display: inline-flex !important;
    align-items: center !important;
    gap: 4px !important;
    color: rgba(255,255,255,0.85) !important;
    visibility: visible !important;
    opacity: 1 !important;
}

html body .cv-app.cv-vault-wrap .cv-vault-header-v2 .cv-vault-meta-sep-v2,
html body .cv-vault-wrap .cv-vault-header-v2 .cv-vault-meta-sep-v2,
html body .cv-vault-header-v2 .cv-vault-meta-sep-v2 {
    display: inline-block !important;
    width: 3px !important;
    height: 3px !important;
    border-radius: 50% !important;
    background: rgba(255,255,255,0.5) !important;
    margin: 0 2px !important;
    visibility: visible !important;
    opacity: 1 !important;
}

/* v20.21.75 — Mobile hero v2 : REFONTE AUTORITAIRE.
   🚨 Le bloc durci ci-dessus utilise `html body .cv-app.cv-vault-wrap .cv-vault-header-v2 …` (4 classes) → pour le
   BATTRE, ces règles DOIVENT reprendre le MÊME préfixe `.cv-app.cv-vault-wrap` (sinon spécificité insuffisante).
   Avatar reste à GAUCHE et compact, méta = mini pop-up flottante (anti-décalage), libellés méta empilés. */
@media (max-width: 680px) {
    html body .cv-app.cv-vault-wrap .cv-vault-header-v2 .cv-vault-header-identity-v2 {
        min-height: 0 !important;
        padding: 0 60px 0 clamp(50px, 14vw, 84px) !important; /* gauche = avatar ; droite = toggle épinglé */
        text-align: left !important;
    }
    html body .cv-app.cv-vault-wrap .cv-vault-header-v2 .cv-vault-avatar-v2 {
        left: 0 !important;
        top: 50% !important;
        transform: translateY(-50%) !important;
        width: clamp(38px, 10.5vw, 56px) !important;
        height: clamp(38px, 10.5vw, 56px) !important;
        min-width: clamp(38px, 10.5vw, 56px) !important;
        min-height: clamp(38px, 10.5vw, 56px) !important;
        border-width: 2px !important;
    }
    html body .cv-app.cv-vault-wrap .cv-vault-header-v2 .cv-vault-header-greeting-v2 { font-size: clamp(15px, 3.7vw, 21px) !important; margin: 0 0 1px !important; line-height: 1.15 !important; }
    html body .cv-app.cv-vault-wrap .cv-vault-header-v2 .cv-vault-header-subtitle-v2 { margin: 0 !important; }
    html body .cv-app.cv-vault-wrap .cv-vault-header-v2 .cv-hero-info-wrap { position: relative !important; }
    /* Méta = mini pop-up flottante (absolute) → NE décale PAS le texte. */
    html body .cv-app.cv-vault-wrap .cv-vault-header-v2 .cv-hero-info-wrap .cv-vault-header-meta-v2 {
        position: absolute !important;
        top: 100% !important; left: 0 !important;
        width: auto !important;
        flex-direction: column !important;
        align-items: flex-start !important;
        justify-content: flex-start !important;
        text-align: left !important;
        gap: 7px !important;
        margin: 6px 0 0 !important;
        min-width: 200px; max-width: 250px;
        background: rgba(13,27,52,.97) !important;
        border: 1px solid rgba(255,255,255,.18) !important;
        border-radius: 10px !important;
        padding: 11px 13px !important;
        box-shadow: 0 10px 30px rgba(0,0,0,.4) !important;
        z-index: 30 !important;
    }
    html body .cv-app.cv-vault-wrap .cv-vault-header-v2 .cv-hero-info-wrap .cv-vault-meta-item-v2 { align-self: flex-start !important; }
    html body .cv-app.cv-vault-wrap .cv-vault-header-v2 .cv-hero-info-wrap .cv-vault-meta-sep-v2 { display: none !important; }
}


/* ═══════════════════════════════════════════
   cv-premium-select — composant dropdown premium (porté de l'admin, v11.69.1)
   Utilisé par la carte Langue des réglages client (selects data-cv-premium-select).
   Source de vérité du JS : assets/js/cv-premium-select.js (déjà partagé).
   ═══════════════════════════════════════════ */
   cv-premium-select — Dropdown premium stylé (remplace <select>)
   ═══════════════════════════════════════════════════════════════ */
.cv-premium-select-host { display: none; }
.cv-premium-select {
    position: relative;
    display: inline-flex;
    width: 100%;
    max-width: 100%;
    font-size: 13px;
    font-family: inherit;
    user-select: none;
}
.cv-premium-select-trigger {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: space-between;
    width: 100%;
    padding: 9px 38px 9px 14px;
    background: #fff;
    border: 1.5px solid #e2e8f0;
    border-radius: 8px;
    color: #1e293b;
    font-size: 13px;
    line-height: 1.4;
    text-align: left;
    cursor: pointer;
    transition: border-color .18s ease, box-shadow .18s ease, background .18s ease;
    box-shadow: 0 1px 2px rgba(15, 23, 42, .04);
}
.cv-premium-select-trigger:hover {
    border-color: #cbd5e1;
    background: #fafbfc;
}
.cv-premium-select.is-open .cv-premium-select-trigger,
.cv-premium-select-trigger:focus-visible {
    border-color: #1e3a5f;
    outline: none;
    box-shadow: 0 0 0 3px rgba(30, 58, 95, .14);
    background: #fff;
}
.cv-premium-select-value {
    flex: 1;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    color: #0f172a;
    font-weight: 500;
}
.cv-premium-select-value.is-placeholder { color: #94a3b8; font-weight: 400; }
.cv-premium-select-caret {
    position: absolute;
    right: 12px;
    top: 50%;
    transform: translateY(-50%);
    width: 18px;
    height: 18px;
    color: #64748b;
    transition: transform .22s cubic-bezier(.4,0,.2,1), color .18s ease;
    flex-shrink: 0;
    pointer-events: none;
}
.cv-premium-select.is-open .cv-premium-select-caret {
    transform: translateY(-50%) rotate(180deg);
    color: #1e3a5f;
}

.cv-premium-select-menu {
    /* v11.3.24 — position: fixed so the menu escapes any overflow:hidden or
       overflow:auto ancestor (email cards, filter bars with horizontal scroll,
       settings accordions, etc.). Coordinates are set inline by open() in
       cv-premium-select.js using the trigger's getBoundingClientRect(). */
    position: fixed;
    top: 0;
    left: 0;
    min-width: 180px;
    background: #fff;
    border: 1px solid #e2e8f0;
    border-radius: 10px;
    box-shadow:
        0 12px 32px rgba(15, 23, 42, .12),
        0 4px 10px rgba(15, 23, 42, .06),
        0 0 0 1px rgba(15, 23, 42, .02);
    padding: 6px;
    max-height: 280px;
    overflow-y: auto;
    /* v11.3.30 — Kill horizontal scrollbar for good.
       CSS spec : when overflow-y is auto and overflow-x is implicitly `visible`,
       the browser promotes overflow-x to `auto`. Any option wider than the menu
       (long step titles like "Visionner le module « Cloud & Collaboration »"
       with a ↳ indent) then renders a horizontal scrollbar at the bottom —
       thumb styled #cbd5e1, radius 4px : the exact grey bar the client keeps
       reporting across Replay / Calendrier / Annonce / Emails / Réglages.
       Hard fix : forbid horizontal scroll outright + force options to wrap. */
    overflow-x: hidden;
    opacity: 0;
    transform: translateY(-6px) scale(.98);
    pointer-events: none;
    transition: opacity .16s ease, transform .2s cubic-bezier(.4,0,.2,1);
    z-index: 100030;
}
/* v11.3.25 — since v11.3.24 the menu is portalled to <body> when open, so
   the descendant selector `.cv-premium-select.is-open .cv-premium-select-menu`
   no longer matches. We flip visibility via a class set directly on the menu
   itself (and keep the legacy selector for any pre-portal renders). */
.cv-premium-select.is-open .cv-premium-select-menu,
.cv-premium-select-menu.is-open {
    opacity: 1;
    transform: translateY(0) scale(1);
    pointer-events: auto;
}
.cv-premium-select-menu::-webkit-scrollbar { width: 8px; }
.cv-premium-select-menu::-webkit-scrollbar-track { background: transparent; }
.cv-premium-select-menu::-webkit-scrollbar-thumb { background: #cbd5e1; border-radius: 4px; }
.cv-premium-select-menu::-webkit-scrollbar-thumb:hover { background: #94a3b8; }

.cv-premium-select-option {
    display: flex;
    align-items: center;
    gap: 10px;
    width: 100%;
    padding: 9px 12px;
    border-radius: 6px;
    font-size: 13px;
    color: #1e293b;
    cursor: pointer;
    transition: background-color .12s ease, color .12s ease;
    line-height: 1.35;
    /* v11.3.30 — graceful wrap for long step titles so content never forces
       horizontal overflow (belt-and-suspenders alongside overflow-x: hidden
       on the menu). */
    white-space: normal;
    overflow-wrap: anywhere;
    word-break: break-word;
    text-align: left;
}
.cv-premium-select-option + .cv-premium-select-option { margin-top: 2px; }
.cv-premium-select-option:hover,
.cv-premium-select-option.is-focus {
    background: #f1f5f9;
    color: #0f172a;
}
.cv-premium-select-option.is-selected {
    background: linear-gradient(135deg, rgba(30, 58, 95, .08) 0%, rgba(42, 82, 152, .08) 100%);
    color: #1e3a5f;
    font-weight: 600;
}
.cv-premium-select-option.is-selected::after {
    content: '✓';
    margin-left: auto;
    color: #1e3a5f;
    font-weight: 700;
    font-size: 13px;
}
.cv-premium-select-option.is-disabled {
    opacity: .5;
    cursor: not-allowed;
    pointer-events: none;
}

/* Adapter dans les cellules de matrice (colonne étroite) */
.cv-notif-cell .cv-premium-select { max-width: 240px; }
.cv-notif-cell[colspan="2"] .cv-premium-select { margin: 0 auto; display: flex; }

/* État désactivé global */
.cv-premium-select.is-disabled .cv-premium-select-trigger {
    background: #f8fafc;
    color: #94a3b8;
    cursor: not-allowed;
    border-color: #e2e8f0;
}
.cv-premium-select.is-disabled .cv-premium-select-caret { color: #cbd5e1; }

/* ─── Toggle switch (modern) ─── */
/* ─── Premium Toggle Switch ─── */
.cv-switch {
    position: relative;
    display: inline-block;
    width: 44px;
    height: 24px;
    flex-shrink: 0;
}
.cv-switch input {
    opacity: 0;
    width: 0;
    height: 0;
    position: absolute;
}
.cv-switch-slider {
    position: absolute;
    cursor: pointer;
    inset: 0;
    background: linear-gradient(135deg, #d1d5db 0%, #c4c9d1 100%);
    border-radius: 24px;
    transition: background 0.3s ease, box-shadow 0.3s ease;
    box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1);
}
.cv-switch-slider::before {
    content: '';
    position: absolute;
    height: 18px;
    width: 18px;
    left: 3px;
    bottom: 3px;
    background: linear-gradient(180deg, #fff 0%, #f3f4f6 100%);
    border-radius: 50%;
    transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1), box-shadow 0.3s ease;
    box-shadow: 0 1px 4px rgba(0, 0, 0, 0.18), 0 0 1px rgba(0, 0, 0, 0.08);
}
.cv-switch:hover .cv-switch-slider {
    background: linear-gradient(135deg, #bfc4cc 0%, #b0b6bf 100%);
}
.cv-switch:hover .cv-switch-slider::before {
    box-shadow: 0 2px 6px rgba(0, 0, 0, 0.22), 0 0 1px rgba(0, 0, 0, 0.1);
}
.cv-switch input:checked + .cv-switch-slider {
    background: linear-gradient(135deg, #22c55e 0%, #16a34a 100%);
    box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.08), 0 0 8px rgba(34, 197, 94, 0.25);
}
.cv-switch input:checked + .cv-switch-slider::before {
    transform: translateX(20px);
}
.cv-switch:hover input:checked + .cv-switch-slider {
    background: linear-gradient(135deg, #16a34a 0%, #15803d 100%);
    box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.08), 0 0 12px rgba(34, 197, 94, 0.35);
}
.cv-switch input:focus-visible + .cv-switch-slider {
    outline: 2px solid var(--cvf-primary, #1e3a5f);
    outline-offset: 2px;
}

/* ─── Theme preview ─── */
.cv-theme-preview-wrap { max-width: 600px; }
.cv-theme-preview { border: 1px solid #e2e8f0; border-radius: 12px; overflow: hidden; box-shadow: 0 2px 10px rgba(0,0,0,.08); background: #f7f8fc; }
.cv-tp-header { background: linear-gradient(135deg, #1e3a5f, #2a5298); color: #fff; padding: 18px 20px 14px; }
.cv-tp-greeting { font-size: 16px; font-weight: 700; }
.cv-tp-subtitle { font-size: 11px; opacity: .75; margin-top: 2px; }
.cv-tp-stats { display: flex; gap: 12px; margin-top: 10px; font-size: 11px; }
.cv-tp-stat { background: rgba(255,255,255,.15); padding: 3px 8px; border-radius: 6px; }
.cv-tp-stat-storage { margin-left: auto; opacity: .8; }
.cv-tp-tabs { display: flex; gap: 0; background: #fff; border-bottom: 1px solid #e2e8f0; }
.cv-tp-tab { padding: 8px 14px; font-size: 11px; color: #64748b; border-bottom: 2px solid transparent; }
.cv-tp-tab-active { color: #1e3a5f; font-weight: 600; border-bottom-color: #2a5298; }
.cv-tp-body { padding: 16px; }
.cv-tp-card { background: #fff; border: 1px solid #e2e8f0; border-radius: 8px; height: 40px; margin-bottom: 8px; }
.cv-tp-card-sm { height: 28px; width: 70%; }

/* ─── Settings page header ─── */
.cv-settings-page-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 24px;
    margin-bottom: 24px;
    padding: 24px 28px;
    background: linear-gradient(135deg, var(--cvf-primary, #1e3a5f) 0%, #2a5298 100%);
    border-radius: 16px;
    color: #fff;
    box-shadow: 0 4px 20px rgba(30,58,95,.2);
}
.cv-settings-page-header-left {
    flex: 1;
    min-width: 0;
}
.cv-settings-page-title {
    font-size: 28px;
    font-weight: 700;
    color: #fff;
    margin: 0 0 8px;
    display: flex;
    align-items: center;
    gap: 10px;
    letter-spacing: -0.5px;
}
.cv-settings-page-subtitle {
    font-size: 13px;
    color: rgba(255,255,255,.75);
    margin: 0;
    line-height: 1.5;
    max-width: 550px;
}
.cv-settings-header-version {
    display:flex;align-items:center;gap:10px;flex-wrap:wrap;
    font-size: 11px;
    font-weight: 500;
}
.cv-settings-header-version .cv-settings-version-tag{
    background: rgba(255,255,255,.15);
    padding: 4px 10px;
    border-radius: 20px;
    font-weight: 600;
}
.cv-settings-header-version .button{
    display:inline-flex;align-items:center;gap:5px;
    font-size:12px;padding:4px 10px;height:auto;line-height:1.4;
}

/* ─── Inline save notification ─── */
.cv-settings-inline-notice {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 6px 16px;
    border-radius: 8px;
    font-size: 13px;
    font-weight: 600;
    margin-top: 4px;
    animation: cv-notice-slide-in 0.5s ease forwards;
}
.cv-settings-inline-notice .dashicons {
    font-size: 18px;
    width: 18px;
    height: 18px;
    line-height: 18px;
}
.cv-settings-inline-notice-success {
    background: rgba(39, 174, 96, 0.2);
    color: #d4edda;
    border: 1px solid rgba(39, 174, 96, 0.3);
}
@keyframes cv-notice-slide-in {
    from {
        opacity: 0;
        transform: translateY(8px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}



/* ── v11.69.2 — Durcissement du composant premium DANS le coffre front ──
   Le socle front reset les <button> (.cv-vault-wrap button → border:none) et
   style les <select> (.cv-vault-wrap select → !important). À spécificité égale
   ou supérieure, ces resets écrasaient le composant : select natif resté
   visible SOUS le trigger (doublon) + trigger sans bordure. On ré-affirme ici
   avec la spécificité .cv-vault-wrap + !important ciblés. */
.cv-vault-wrap select.cv-premium-select-host,
.cv-app select.cv-premium-select-host,
select.cv-premium-select-host {
    display: none !important;
}
.cv-vault-wrap .cv-premium-select { font-size: 14px; }
.cv-vault-wrap button.cv-premium-select-trigger {
    display: flex !important;
    align-items: center;
    justify-content: space-between;
    width: 100% !important;
    height: 40px;
    padding: 9px 38px 9px 14px !important;
    background: #fff !important;
    border: 1.5px solid var(--cvf-border, #e2e8f0) !important;
    border-radius: 10px !important;
    color: var(--cvf-text, #1e293b) !important;
    font-size: 14px !important;
    box-shadow: 0 1px 2px rgba(15, 23, 42, .04) !important;
}
.cv-vault-wrap button.cv-premium-select-trigger:hover {
    border-color: var(--cvf-primary, #cbd5e1) !important;
    background: #fafbfc !important;
}
.cv-vault-wrap .cv-premium-select.is-open .cv-premium-select-trigger,
.cv-vault-wrap button.cv-premium-select-trigger:focus,
.cv-vault-wrap button.cv-premium-select-trigger:focus-visible {
    border-color: var(--cvf-primary, #1e3a5f) !important;
    outline: none !important;
    box-shadow: 0 0 0 3px rgba(var(--cvf-primary-rgb, 30, 58, 95), 0.12) !important;
    background: #fff !important;
}

/* ═══════════════════════════════════════════
   v11.83.0 — Sélecteur de vue + vues documents (liste / grille / galerie)
   Composant réutilisable (documents → médias → fiches…)
   ═══════════════════════════════════════════ */
.cv-docs-wrap { position: relative; }
.cv-docs-wrap > .cv-view-switch {
    display: flex; justify-content: flex-end; margin: 0 0 14px auto; width: fit-content;
    gap: 2px; padding: 3px; border: 1px solid var(--cvf-border, #e1e5eb);
    border-radius: 9px; background: var(--cvf-bg, #f6f8fb);
}
.cv-view-btn {
    display: inline-flex; align-items: center; justify-content: center;
    width: 34px; height: 30px; border: none; border-radius: 6px;
    background: transparent; color: var(--cvf-text-muted, #64748b);
    cursor: pointer; transition: all .15s; font-family: inherit;
}
.cv-view-btn:hover { background: var(--cvf-card, #fff); color: var(--cvf-primary, #1e3a5f); }
.cv-view-btn.active { background: var(--cvf-primary, #1e3a5f); color: #fff; }
.cv-view-btn .dashicons { font-size: 18px; width: 18px; height: 18px; }

.cv-docs-view { display: none; }
.cv-docs-wrap[data-view="list"]    .cv-docs-list    { display: block; }
.cv-docs-wrap[data-view="grid"]    .cv-docs-grid    { display: block; }
.cv-docs-wrap[data-view="gallery"] .cv-docs-gallery { display: flex; }

/* v11.83.4 — pagination par vue (load more) */
.cv-docs-list-hidden, .cv-docs-grid-hidden { display: none !important; }
.cv-docs-more {
    display: block; margin: 14px auto 2px; padding: 8px 18px;
    border: 1px solid var(--cvf-border, #e1e5eb); border-radius: 8px; background: var(--cvf-bg, #f6f8fb);
    color: var(--cvf-primary, #1e3a5f); font-size: 13px; font-weight: 600; cursor: pointer; font-family: inherit; transition: all .15s;
}
.cv-docs-more:hover { background: var(--cvf-primary, #1e3a5f); color: #fff; border-color: var(--cvf-primary, #1e3a5f); }

/* Vue GRILLE d'icônes */
.cv-docs-grid-items { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 14px; }
.cv-doc-tile {
    display: flex; flex-direction: column; align-items: center;
    border: 1px solid var(--cvf-border, #e1e5eb); border-radius: 12px;
    background: var(--cvf-card, #fff); padding: 14px 12px 10px;
    position: relative; transition: box-shadow .15s, transform .15s, border-color .15s;
}
.cv-doc-tile:hover { box-shadow: 0 6px 18px rgba(0,0,0,.08); transform: translateY(-2px); border-color: var(--cvf-primary, #1e3a5f); }
.cv-doc-tile-thumb {
    width: 100%; height: 92px; display: flex; flex-direction: column;
    align-items: center; justify-content: center; gap: 6px;
    border-radius: 8px; background: var(--cvf-bg, #f6f8fb); margin-bottom: 10px; position: relative;
}
.cv-doc-tile-thumb.cv-preview-btn { cursor: pointer; }
.cv-doc-tile-thumb .dashicons { font-size: 40px; width: 40px; height: 40px; color: var(--cvf-text-muted, #64748b); }
.cv-doc-type-pdf .dashicons { color: #e0413a; }
.cv-doc-type-img .dashicons { color: #2f9e44; }
.cv-doc-tile-ext { font-size: 10px; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; color: var(--cvf-text-muted, #64748b); }
.cv-doc-tile-name { font-size: 12.5px; font-weight: 600; color: var(--cvf-text, #1e293b); text-align: center; line-height: 1.3; max-height: 2.6em; overflow: hidden; width: 100%; word-break: break-word; }
.cv-doc-tile-meta { font-size: 11px; color: var(--cvf-text-muted, #64748b); margin: 4px 0 8px; text-align: center; }
.cv-doc-tile-actions { display: flex; flex-wrap: wrap; gap: 4px; justify-content: center; opacity: 0; transition: opacity .15s; }
.cv-doc-tile:hover .cv-doc-tile-actions { opacity: 1; }

/* Vue GALERIE */
.cv-docs-gallery { gap: 14px; flex-direction: column; }
.cv-docs-gallery-main { width: 100%; }
.cv-docs-gallery-stage {
    width: 100%; min-height: 360px; max-height: 60vh; display: flex; align-items: center; justify-content: center;
    background: #f0f0f0; border-radius: 12px; overflow: hidden;
}
.cv-docs-gallery-stage img { max-width: 100%; max-height: 60vh; object-fit: contain; display: block; }
.cv-docs-gallery-stage iframe { width: 100%; height: 60vh; border: none; }
.cv-docs-gallery-noprev { display: flex; flex-direction: column; align-items: center; gap: 8px; color: var(--cvf-text-muted, #64748b); padding: 40px; text-align: center; }
.cv-docs-gallery-noprev .dashicons { font-size: 56px; width: 56px; height: 56px; }
.cv-docs-gallery-strip { display: flex; gap: 8px; overflow-x: auto; padding: 4px 2px 8px; }
.cv-docs-gallery-thumb {
    flex: 0 0 auto; width: 92px; height: 88px; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 5px;
    border: 1.5px solid var(--cvf-border, #e1e5eb); border-radius: 9px; background: var(--cvf-card, #fff); cursor: pointer; padding: 6px; transition: all .15s;
}
.cv-docs-gallery-thumb:hover { border-color: var(--cvf-primary, #1e3a5f); }
.cv-docs-gallery-thumb.active { border-color: var(--cvf-primary, #1e3a5f); box-shadow: 0 0 0 2px var(--cvf-primary, #1e3a5f) inset; }
.cv-docs-gallery-thumb .dashicons { font-size: 30px; width: 30px; height: 30px; color: var(--cvf-text-muted, #64748b); }
.cv-docs-gallery-thumb-name { font-size: 10px; line-height: 1.2; text-align: center; max-height: 2.4em; overflow: hidden; width: 100%; word-break: break-word; color: var(--cvf-text-muted, #64748b); }

/* v11.83.1 — Galerie : panneau d'infos (nom / taille / date / actions) sous la scène */
.cv-docs-gallery-main { width: 100%; display: flex; flex-direction: column; gap: 10px; }
.cv-docs-gallery-info { display: flex; flex-direction: column; gap: 4px; padding: 4px 2px; }
.cv-docs-gallery-name { font-size: 14px; font-weight: 700; color: var(--cvf-text, #1e293b); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cv-docs-gallery-meta { font-size: 12px; color: var(--cvf-text-muted, #64748b); }
.cv-docs-gallery-actions { display: flex; flex-wrap: wrap; gap: 5px; margin-top: 4px; }

/* v11.83.2 — Galerie : titre + actions sur une ligne, description, focus clavier */
.cv-docs-gallery-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.cv-docs-gallery-head .cv-docs-gallery-name { flex: 1 1 auto; min-width: 0; }
.cv-docs-gallery-actions { flex: 0 0 auto; display: flex; flex-wrap: wrap; gap: 5px; opacity: 1; }
.cv-docs-gallery-desc { font-size: 13px; color: var(--cvf-text, #334155); line-height: 1.5; margin-top: 2px; }
/* Navigation clavier — anneaux de focus visibles */
.cv-doc-navitem:focus, .cv-doc-navitem:focus-visible { outline: 2px solid var(--cvf-primary, #1e3a5f); outline-offset: 2px; }
.cv-docs-list .cv-doc-navitem:focus { background: rgba(30,58,95,.06); }
.cv-doc-tile.cv-doc-navitem:focus { box-shadow: 0 0 0 2px var(--cvf-primary, #1e3a5f); border-color: var(--cvf-primary, #1e3a5f); }
/* v11.86.11 — clic souris : pas d'anneau de focus agressif (le style .active doux suffit) ;
   focus clavier (:focus-visible) : anneau doux et discret pour l'accessibilité. */
.cv-docs-gallery-thumb:focus { outline: none; }
.cv-docs-gallery-thumb:focus-visible { outline: 2px solid rgba(var(--cvf-primary-rgb, 30,58,95), .4); outline-offset: 1px; }

/* v11.83.3 — Galerie : actions en superposition (angle haut-droit du document) + infos */
.cv-docs-gallery-stage-wrap { position: relative; width: 100%; }
.cv-docs-gallery-overlay {
    position: absolute; top: 10px; right: 10px; z-index: 4;
    display: flex; flex-wrap: wrap; gap: 5px; justify-content: flex-end;
    max-width: 60%;
    background: rgba(255,255,255,.94); padding: 5px 6px; border-radius: 9px;
    box-shadow: 0 2px 10px rgba(0,0,0,.16);
}
.cv-docs-gallery-overlay:empty { display: none; }
.cv-docs-gallery-overlay .cv-dact-btn { background: #fff; }
.cv-docs-gallery-head .cv-docs-gallery-meta { flex: 0 0 auto; white-space: nowrap; }

/* v11.83.5 — masquage robuste (surcharge les règles !important qui forcent l'affichage) */
.cv-force-hidden { display: none !important; }
/* Le bouton « Suggérer un dossier » a une règle ID !important → sélecteur ID+classe nécessaire. */
#cv-folder-suggest-btn.cv-force-hidden { display: none !important; }

/* v11.84.0 — barre de filtre Documents (réutilise .cv-mbar) */
.cv-docs-mbar { margin: 0 0 14px; }
.cv-docs-mbar .cv-mbar-btn.active { background: var(--cvf-primary, #1e3a5f); color: #fff; border-color: var(--cvf-primary, #1e3a5f); }
.cv-docs-empty { text-align: center; padding: 24px; color: var(--cvf-text-muted, #64748b); font-size: 13px; }

/* v11.84.1 — barre Documents AFFINÉE (plus fine, désencombrée ; pas de gros contour) */
.cv-docs-mbar { margin: 0 0 12px; }
.cv-docs-mbar .cv-mbar-main { gap: 8px; }
.cv-docs-mbar .cv-mbar-search { flex: 1 1 200px; min-width: 150px; }
.cv-vault-wrap .cv-docs-mbar .cv-mbar-search input { height: 36px; border-radius: 9px; font-size: 13px; padding-left: 34px; background: #fff; }
.cv-docs-mbar .cv-mbar-search .dashicons { font-size: 16px; width: 16px; height: 16px; left: 10px; }
.cv-docs-mbar .cv-mbar-types { background: #fff; padding: 3px; border-radius: 10px; border: 1px solid var(--cvf-border, #e8ecf0); gap: 1px; }
.cv-vault-wrap .cv-docs-mbar .cv-mbar-types .cv-mtype-btn { height: 30px; padding: 0 11px; font-size: 12.5px; }
.cv-vault-wrap .cv-docs-mbar .cv-mbar-types .cv-mtype-icon { width: 32px; padding: 0; }
.cv-vault-wrap .cv-docs-mbar .cv-mbar-types .cv-mtype-btn .dashicons { font-size: 16px; width: 16px; height: 16px; }
.cv-vault-wrap .cv-docs-mbar .cv-mbar-btn { height: 36px; border-radius: 9px; font-size: 13px; padding: 0 12px; background: #fff; }
.cv-docs-mbar .cv-mbar-btn .dashicons { font-size: 16px; width: 16px; height: 16px; }
.cv-docs-mbar .cv-mbar-iconbtn { width: 36px; padding: 0; justify-content: center; }
.cv-docs-mbar .cv-docs-comments-toggle.active,
.cv-docs-mbar .cv-media-comments-toggle.active { background: var(--cvf-primary, #1e3a5f) !important; color: #fff !important; border-color: var(--cvf-primary, #1e3a5f) !important; }
.cv-docs-mbar .cv-media-comments-toggle.active .dashicons { color: #fff !important; }
.cv-docs-mbar .cv-docs-count,
.cv-docs-mbar .cv-media-count { font-size: 12px; color: var(--cvf-text-muted, #64748b); margin-left: auto; white-space: nowrap; }

/* v11.85.2 — Sélection des filtres de TYPE clairement au code couleur du thème (était trop discret) */
.cv-vault-wrap .cv-docs-mbar .cv-mbar-types .cv-mtype-btn.active {
    background: var(--cvf-primary, #1e3a5f) !important; color: #fff !important;
    box-shadow: 0 2px 8px rgba(124,58,237,.25);
}
.cv-vault-wrap .cv-docs-mbar .cv-mbar-types .cv-mtype-btn.active .dashicons { color: #fff !important; }

/* En-têtes de colonnes (Documents + Médias) — plus discrets (gain de place) */
.cv-vault-wrap .cv-folder-files-table thead th {
    font-size: 10px !important; font-weight: 600; text-transform: uppercase; letter-spacing: .04em;
    color: var(--cvf-text-muted, #94a3b8) !important; padding-top: 7px; padding-bottom: 7px;
}

/* v11.84.2 — Visionneuse : panneau d'infos premium + miniatures agrandies */
.cv-docs-gallery-info {
    background: linear-gradient(180deg, #fbfdff, #f4f7fb);
    border: 1px solid var(--cvf-border, #e8edf3);
    border-radius: 14px; padding: 16px 18px;
}
.cv-docs-gallery-head { align-items: flex-start; gap: 14px; }
.cv-docs-gallery-name { display: flex; align-items: center; gap: 9px; font-size: 16px; font-weight: 700; color: var(--cvf-text, #1e293b); min-width: 0; }
.cv-docs-gallery-name .dashicons { font-size: 22px; width: 22px; height: 22px; color: var(--cvf-primary, #1e3a5f); flex: 0 0 auto; }
.cv-docs-gallery-nm { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cv-docs-gallery-chips { display: flex; gap: 7px; flex-wrap: wrap; flex: 0 0 auto; }
.cv-docs-gchip { display: inline-flex; align-items: center; gap: 5px; background: #fff; border: 1px solid var(--cvf-border, #e6ebf1); border-radius: 999px; padding: 4px 11px; font-size: 11.5px; font-weight: 600; color: #475569; }
.cv-docs-gchip .dashicons { font-size: 14px; width: 14px; height: 14px; color: var(--cvf-text-muted, #94a3b8); }
.cv-docs-gchip-ext { background: var(--cvf-primary, #1e3a5f); color: #fff; border-color: var(--cvf-primary, #1e3a5f); letter-spacing: .03em; }
.cv-docs-gallery-desc { margin-top: 11px; font-size: 13.5px; line-height: 1.6; color: #475569; border-top: 1px dashed #e3e9f0; padding-top: 11px; }
.cv-docs-gallery-strip { gap: 10px; }
.cv-docs-gallery-thumb { width: 118px; height: 104px; gap: 8px; border-width: 1.5px; border-radius: 13px; padding: 10px; }
.cv-docs-gallery-thumb:hover { transform: translateY(-2px); box-shadow: 0 6px 16px rgba(0,0,0,.08); }
.cv-docs-gallery-thumb.active { box-shadow: 0 0 0 3px rgba(30,58,95,.15); }
.cv-docs-gallery-thumb .dashicons { font-size: 40px; width: 40px; height: 40px; }
.cv-docs-gallery-thumb-name { font-size: 10.5px; max-height: 2.5em; }

/* v11.84.3 — Miniatures galerie : couleur par type (identité visuelle) + badge d'extension */
.cv-docs-gallery-thumb-ico { position: relative; display: flex; align-items: center; justify-content: center; width: 58px; height: 58px; border-radius: 13px; }
.cv-docs-gallery-thumb .cv-docs-gallery-thumb-ico .dashicons { font-size: 32px; width: 32px; height: 32px; }
.cv-docs-gallery-thumb-ext { position: absolute; bottom: -7px; right: -9px; font-size: 8.5px; font-weight: 800; letter-spacing: .02em; color: #fff; padding: 1px 5px; border-radius: 5px; box-shadow: 0 1px 3px rgba(0,0,0,.18); }
.cv-docs-gallery-thumb.cv-doc-type-pdf  .cv-docs-gallery-thumb-ico { background: #fdecea; }
.cv-docs-gallery-thumb.cv-doc-type-pdf  .dashicons { color: #e0413a; }
.cv-docs-gallery-thumb.cv-doc-type-pdf  .cv-docs-gallery-thumb-ext { background: #e0413a; }
.cv-docs-gallery-thumb.cv-doc-type-img  .cv-docs-gallery-thumb-ico { background: #e9f7ee; }
.cv-docs-gallery-thumb.cv-doc-type-img  .dashicons { color: #2f9e44; }
.cv-docs-gallery-thumb.cv-doc-type-img  .cv-docs-gallery-thumb-ext { background: #2f9e44; }
.cv-docs-gallery-thumb.cv-doc-type-file .cv-docs-gallery-thumb-ico { background: #eef2f7; }
.cv-docs-gallery-thumb.cv-doc-type-file .dashicons { color: #5b6b7f; }
.cv-docs-gallery-thumb.cv-doc-type-file .cv-docs-gallery-thumb-ext { background: #5b6b7f; }

/* ═══ v11.85.0 — Galerie MÉDIAS : miniatures (poster vidéo / vignette YT / icône type) ═══ */
.cv-media-strip .cv-media-gthumb { display: flex; flex-direction: column; align-items: center; }
.cv-media-gthumb-pv { width: 100%; height: 72px; border-radius: 8px; overflow: hidden; display: flex; align-items: center; justify-content: center; background: #0f172a; }
.cv-media-gthumb-pv video,
.cv-media-gthumb-pv img { width: 100%; height: 100%; object-fit: cover; display: block; }
.cv-media-gthumb-ico { width: 100%; height: 72px; border-radius: 8px; display: flex; align-items: center; justify-content: center; }
.cv-media-gthumb-ico .dashicons { font-size: 30px; width: 30px; height: 30px; }
/* Couleurs par type, cohérentes avec l'identité du média */
.cv-media-gthumb.cv-doc-type-vid .cv-media-gthumb-ico { background: #eef2ff; }
.cv-media-gthumb.cv-doc-type-vid .cv-media-gthumb-ico .dashicons { color: #6d28d9; }
.cv-media-gthumb.cv-doc-type-aud .cv-media-gthumb-ico { background: #fff1f2; }
.cv-media-gthumb.cv-doc-type-aud .cv-media-gthumb-ico .dashicons { color: #e11d48; }
.cv-media-gthumb.cv-doc-type-emb .cv-media-gthumb-ico { background: #ecfeff; }
.cv-media-gthumb.cv-doc-type-emb .cv-media-gthumb-ico .dashicons { color: #0e7490; }
/* Scène galerie médias : le lecteur inline remplit la zone */
#cv-media-gallery-stage { width: 100%; display: flex; align-items: center; justify-content: center; }
#cv-media-gallery-stage video,
#cv-media-gallery-stage iframe { max-width: 100%; }
/* Contraintes du lecteur inline dans la scène galerie médias (anti-débordement) */
#cv-media-gallery-stage .cv-preview-embed-content { width: 100%; min-height: 0; }
#cv-media-gallery-stage .cv-embed-player-video video,
#cv-media-gallery-stage .cv-embed-player-video iframe { width: 100%; max-height: 50vh; border-radius: 12px; }
#cv-media-gallery-stage .cv-popup-audio-visualizer { min-height: 0; height: auto; flex: none; }
#cv-media-gallery-stage audio { height: 54px !important; width: 100%; }
/* v11.85.1 — Description du média dans la visionneuse unifiée (sous le titre) */
.cv-preview-embed-desc {
  margin: 6px 16px 0; padding: 8px 12px;
  background: #f6f7fb; border-left: 3px solid var(--cv-primary, #7c3aed);
  border-radius: 8px; color: #44485a; font-size: 13px; line-height: 1.5;
}

/* v11.85.2 — Modale premium d'édition d'un média (titre + description) */
.cv-media-edit-modal { position: fixed; inset: 0; z-index: 9999999; display: flex; align-items: center; justify-content: center; }
.cv-media-edit-backdrop { position: absolute; inset: 0; background: rgba(0,0,0,.45); }
.cv-media-edit-card { position: relative; background: var(--cv-card, #fff); border-radius: 14px; padding: 22px 24px; width: 92%; max-width: 440px; box-shadow: 0 20px 60px rgba(0,0,0,.25); }
.cv-media-edit-head { display: flex; align-items: center; gap: 8px; font-size: 16px; font-weight: 800; color: var(--cv-text-dark, #1e293b); margin-bottom: 16px; }
.cv-media-edit-lbl { display: block; font-size: 12px; font-weight: 600; color: var(--cv-text-muted, #64748b); margin: 10px 0 5px; }
.cv-media-edit-card input[type="text"], .cv-media-edit-card textarea { width: 100%; box-sizing: border-box; border: 1px solid var(--cv-border-focus, #cbd5e1); border-radius: 9px; padding: 9px 11px; font-size: 14px; font-family: inherit; color: var(--cv-text-dark, #1e293b); background: #fff; }
.cv-media-edit-card textarea { resize: vertical; }
.cv-media-edit-actions { display: flex; gap: 10px; justify-content: flex-end; margin-top: 18px; }
.cv-media-edit-cancel { padding: 9px 18px; border: 1px solid var(--cv-border-focus, #cbd5e1); border-radius: 9px; background: none; font-size: 13px; font-weight: 600; color: var(--cv-text-muted, #64748b); cursor: pointer; }
.cv-media-edit-save { padding: 9px 20px; border: none; border-radius: 9px; background: var(--cvf-primary, #7c3aed); color: #fff; font-size: 13px; font-weight: 700; cursor: pointer; }
.cv-media-edit-save:disabled { opacity: .6; cursor: default; }

/* v11.85.3 — Pop-up de confirmation suppression média (réutilise .cv-media-edit-card, centrée) */
.cv-media-confirm-card { text-align: center; max-width: 420px; }
.cv-media-confirm-icon { font-size: 44px; margin-bottom: 8px; }
.cv-media-confirm-title { font-size: 18px; font-weight: 800; color: var(--cv-text-dark, #1e293b); margin-bottom: 6px; }
.cv-media-confirm-msg { font-size: 14px; color: var(--cv-text-muted, #64748b); line-height: 1.5; margin-bottom: 4px; }
.cv-media-confirm-card .cv-media-edit-actions { justify-content: center; }
.cv-media-confirm-del { background: var(--cvf-danger, #e74c3c) !important; }

/* v11.85.6 — Description sous le titre (documents + médias, vue liste) */
.cv-folder-file-name .cv-folder-file-desc { display: block; margin-top: 2px; color: var(--cvf-text-muted, #64748b); font-size: 11.5px; line-height: 1.35; }
/* Surbrillance de l'élément qui vient d'être édité (cadre framework d'édition unifié) */
@keyframes cvJustEdited { 0% { background: rgba(124,58,237,.18); } 100% { background: transparent; } }
.cv-just-edited { animation: cvJustEdited 2.4s ease-out; }
tr.cv-just-edited > td { animation: cvJustEdited 2.4s ease-out; }
.cv-doc-tile.cv-just-edited, .cv-folder-embed-item.cv-just-edited { box-shadow: 0 0 0 2px var(--cvf-primary, #7c3aed); border-radius: 10px; }

/* v11.86.0 — Éditeur INLINE unifié (documents + médias) */
.cv-inline-edit-row > td { padding: 0 !important; }
.cv-inline-edit { padding: 14px 16px; background: var(--cvf-bg, #f7f8fc); border-left: 3px solid var(--cvf-primary, #7c3aed); border-radius: 0 8px 8px 0; }
.cv-inline-edit-panel { margin: 8px 0 14px; }
.cv-ie-row { margin-bottom: 10px; }
.cv-ie-lbl { display: block; font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .03em; color: var(--cvf-text-muted, #64748b); margin-bottom: 4px; }
.cv-inline-edit input[type=text], .cv-inline-edit textarea { width: 100%; box-sizing: border-box; border: 1px solid var(--cvf-border, #e4e8ee); border-radius: 8px; padding: 8px 10px; font-size: 13.5px; font-family: inherit; background: #fff; color: var(--cvf-text, #2c3e50); }
.cv-inline-edit input[readonly] { background: #eef1f6; color: var(--cvf-text-muted, #64748b); }
.cv-ie-folders, .cv-ie-tags { display: flex; flex-wrap: wrap; gap: 6px; }
.cv-ie-fold { display: inline-flex; align-items: center; gap: 6px; padding: 5px 11px; border: 1px solid var(--cvf-border, #e4e8ee); border-radius: 20px; font-size: 12.5px; cursor: pointer; background: #fff; }
.cv-ie-fold.on { border-color: var(--cvf-primary, #7c3aed); background: rgba(124,58,237,.08); color: var(--cvf-primary, #7c3aed); font-weight: 600; }
.cv-ie-fold input { margin: 0; }
.cv-ie-tag { padding: 5px 12px; border-radius: 20px; border: 1px solid var(--cvf-border, #e4e8ee); background: #fff; font-size: 12.5px; cursor: pointer; }
.cv-ie-tag.on { outline: 2px solid var(--cvf-primary, #7c3aed); outline-offset: 0; font-weight: 600; }
.cv-ie-tag.locked { opacity: .55; cursor: not-allowed; }
.cv-ie-actions { display: flex; justify-content: flex-end; gap: 8px; margin-top: 8px; }
.cv-ie-cancel { padding: 7px 16px; border: 1px solid var(--cvf-border, #e4e8ee); border-radius: 8px; background: none; font-size: 13px; font-weight: 600; color: var(--cvf-text-muted, #64748b); cursor: pointer; }
.cv-ie-save { padding: 7px 18px; border: none; border-radius: 8px; background: var(--cvf-primary, #7c3aed); color: #fff; font-size: 13px; font-weight: 700; cursor: pointer; }
.cv-ie-save:disabled { opacity: .6; cursor: default; }

/* v11.86.1 — Éditeur inline : tags lisibles (sélectionné = plein couleur thème + ✓ ; non = neutre) */
.cv-inline-edit .cv-ie-tag { outline: none !important; background: #fff !important; border: 1px solid #d9dee6 !important; color: #6b7280 !important; font-weight: 500; box-shadow: none !important; }
.cv-inline-edit .cv-ie-tag.on { background: var(--cvf-primary, #7c3aed) !important; border-color: var(--cvf-primary, #7c3aed) !important; color: #fff !important; font-weight: 700; }
.cv-inline-edit .cv-ie-tag.on::before { content: "\2713 "; }
.cv-inline-edit .cv-ie-tag.locked { opacity: .5 !important; cursor: not-allowed; }
.cv-inline-edit .cv-ie-fold.on::after { content: " \2713"; color: var(--cvf-primary, #7c3aed); }

/* v11.86.1 — Colonnes alignées (documents + médias) en vue Liste */
.cv-folder-files-table { table-layout: fixed; width: 100%; }
.cv-folder-files-table th:nth-child(2), .cv-folder-files-table td:nth-child(2) { width: 92px; }
.cv-folder-files-table th:nth-child(3), .cv-folder-files-table td:nth-child(3) { width: 128px; }
.cv-folder-files-table th:nth-child(4), .cv-folder-files-table td:nth-child(4) { width: 300px; }
.cv-folder-files-table td.cv-folder-file-name { overflow: hidden; }
.cv-folder-file-name .cv-folder-file-desc { display: block !important; width: 100%; white-space: normal; }

/* v11.86.1 — Confirmation INLINE « enregistré » au niveau de la ligne (plus de pop-up en haut) */
.cv-edit-saved-badge { display: inline-flex; align-items: center; gap: 4px; margin-left: 8px; padding: 2px 9px; border-radius: 12px; background: var(--cvf-success, #27ae60); color: #fff; font-size: 11px; font-weight: 700; vertical-align: middle; }

/* v11.86.1 — Puce de compte sur le mini-bouton Tags */
.cv-dact-btn.cv-tag-menu-btn { position: relative; }
.cv-tag-count-badge { position: absolute; top: -5px; right: -5px; min-width: 15px; height: 15px; padding: 0 3px; border-radius: 8px; background: var(--cvf-primary, #7c3aed); color: #fff; font-size: 9px; font-weight: 700; line-height: 15px; text-align: center; box-sizing: border-box; }

/* v11.86.2 — Titre sur UNE ligne (ellipsis) + description sur sa propre ligne en dessous */
.cv-folder-file-name .cv-ff-main { display: block; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 100%; }
.cv-folder-file-name .cv-folder-file-desc { display: block !important; width: 100%; white-space: normal; margin-top: 2px; }
/* Bouton d'action désactivé (ex. Télécharger indisponible sur une intégration/YouTube) */
.cv-dact-btn.cv-dact-disabled { opacity: .35; cursor: not-allowed; pointer-events: none; }

/* v11.86.3 — Liste : titre COMPLET (pas de troncature) sur sa ligne, description en dessous */
.cv-folder-file-name .cv-ff-main { white-space: normal !important; overflow: visible !important; text-overflow: clip !important; max-width: none !important; }

/* v11.86.3 — Galerie unifiée : panneau infos EN HAUT, aperçu EN DESSOUS.
   Ligne 1 = nom + chips (type/taille/date) ; Ligne 2 = description (gauche) + barre d'actions (droite) */
.cv-docs-gallery-main { display: flex; flex-direction: column; gap: 10px; }
.cv-dg-line1 { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.cv-dg-line1 .cv-docs-gallery-name { display: flex; align-items: center; gap: 6px; font-weight: 700; min-width: 0; }
.cv-dg-line1 .cv-docs-gallery-chips { display: flex; gap: 6px; flex-wrap: wrap; margin-left: auto; }
.cv-dg-line2 { display: flex; align-items: flex-start; gap: 12px; margin-top: 8px; padding-top: 8px; border-top: 1px solid rgba(0,0,0,.06); }
.cv-dg-line2 .cv-docs-gallery-desc { flex: 1; min-width: 0; color: var(--cvf-text-muted, #64748b); font-size: 13px; line-height: 1.45; }
.cv-dg-line2 .cv-dg-actions { margin-left: auto; display: flex; gap: 7px; flex-shrink: 0; flex-wrap: wrap; justify-content: flex-end; }

/* v11.86.4 — LISTE : la cellule nom était en flex-row (titre + description côte à côte).
   On empile en colonne : titre complet en haut, description en dessous. */
.cv-folder-files-table td.cv-folder-file-name { display: flex !important; flex-direction: column !important; align-items: flex-start !important; gap: 1px; }
.cv-folder-file-name .cv-ff-main { width: 100%; }
.cv-folder-file-name .cv-folder-file-desc { width: 100%; }

/* v11.86.4 — Galerie : ligne 2 (description + actions) alignée verticalement, plus de décalage */
.cv-dg-line2 { align-items: center !important; }
.cv-dg-line2 .cv-docs-gallery-desc:empty { display: none; }
/* Galerie : ordre vertical = infos (titre/desc/actions) → navigation (miniatures) → aperçu */
.cv-docs-gallery-main { display: flex; flex-direction: column; gap: 12px; }
.cv-docs-gallery-main .cv-docs-gallery-info { order: 1; }
.cv-docs-gallery-main .cv-docs-gallery-strip { order: 2; }
.cv-docs-gallery-main .cv-docs-gallery-stage-wrap { order: 3; }

/* ═══ v11.86.5 — Galerie : cadre premium + ordre validé (nav → aperçu → infos) + séparation propre ═══ */
/* Ordre final : miniatures de navigation → aperçu → bloc nom/description/actions */
.cv-docs-gallery-main .cv-docs-gallery-strip { order: 1 !important; }
.cv-docs-gallery-main .cv-docs-gallery-stage-wrap { order: 2 !important; }
.cv-docs-gallery-main .cv-docs-gallery-info { order: 3 !important; }
/* Zone encadrée (fond doux) = on comprend que c'est une zone de navigation */
.cv-docs-gallery-main { background: var(--cvf-bg, #f7f8fc); border: 1px solid var(--cvf-border, #e4e8ee); border-radius: 16px; padding: 16px; gap: 12px; }
/* Bande de navigation + aperçu sur cartes blanches qui ressortent */
.cv-docs-gallery-main .cv-docs-gallery-strip { background: #fff; border: 1px solid var(--cvf-border, #e4e8ee); border-radius: 12px; padding: 8px; }
.cv-docs-gallery-stage-wrap { background: #fff; border: 1px solid var(--cvf-border, #e4e8ee); border-radius: 12px; padding: 14px; display: flex; align-items: center; justify-content: center; min-height: 240px; box-shadow: 0 2px 12px rgba(15,23,42,.05); }
/* Panneau infos neutre dans le cadre (pas de double fond ni de séparateur redondant) */
#cv-docs-gallery-info, #cv-media-gallery-info { background: transparent !important; box-shadow: none !important; border: none !important; padding: 0 2px !important; }
.cv-dg-line2 { border-top: none !important; padding-top: 0 !important; margin-top: 6px !important; align-items: center !important; }

/* ═══ v11.86.6 — En-tête de section coloré par TYPE de contenu (comme en admin) ═══ */
.cv-folder-section-header[data-sec-type] {
  --sec: var(--cvf-primary, #1e3a5f); --secbg: transparent;
  border-left: 4px solid var(--sec);
  background: var(--secbg);
  border-top-left-radius: 10px; border-bottom-left-radius: 10px;
}
.cv-folder-section-header[data-sec-type="documents"] { --sec: #2563eb; --secbg: #eff4ff; }
.cv-folder-section-header[data-sec-type="media"]     { --sec: #7c3aed; --secbg: #f5f0ff; }
.cv-folder-section-header[data-sec-type="cards"]     { --sec: #0d9488; --secbg: #ecfdf8; }
.cv-folder-section-header[data-sec-type="links"]     { --sec: #ea580c; --secbg: #fff4ec; }
.cv-folder-section-header[data-sec-type="notes"]     { --sec: #ca8a04; --secbg: #fefae8; }
.cv-folder-section-header[data-sec-type="messages"]  { --sec: #1e3a5f; --secbg: #eef2f8; } /* v20.21.14 — navy messagerie */
.cv-folder-section-header[data-sec-type="exchanges"] { --sec: #4f46e5; --secbg: #eef0ff; }
.cv-folder-section-header[data-sec-type] .cv-folder-section-title { color: var(--sec); }
.cv-folder-section-header[data-sec-type] .cv-folder-section-title .dashicons { color: var(--sec); }

/* v11.86.6 — Miniature sélectionnée (galerie) : code couleur du thème, bien visible (était grisé) */
.cv-docs-gallery-thumb.active { border-color: var(--cvf-primary, #1e3a5f) !important; box-shadow: 0 0 0 2px var(--cvf-primary, #1e3a5f) !important; }

/* v11.86.7 — Miniature sélectionnée : bordure plus DOUCE (fine + halo léger) au lieu du double anneau plein */
.cv-docs-gallery-thumb.active {
  border: 1.5px solid var(--cvf-primary, #1e3a5f) !important;
  box-shadow: 0 0 0 3px rgba(var(--cvf-primary-rgb, 30,58,95), .13), 0 2px 10px rgba(15,23,42,.06) !important;
}

/* v11.86.8 — Miniature sélectionnée encore plus douce : bordure fine SEMI-TRANSPARENTE + halo très léger */
.cv-docs-gallery-thumb.active {
  border: 1px solid rgba(var(--cvf-primary-rgb, 30,58,95), .4) !important;
  box-shadow: 0 0 0 4px rgba(var(--cvf-primary-rgb, 30,58,95), .07) !important;
}

/* v11.86.9 — Miniature sélectionnée : bordure plus ÉPAISSE mais couleur douce (semi-transparente), sans halo */
.cv-docs-gallery-thumb.active {
  border: 2.5px solid rgba(var(--cvf-primary-rgb, 30,58,95), .5) !important;
  box-shadow: none !important;
}

/* ═══ v11.86.10 — Bande de miniatures défilable : flèches + dégradés de fondu (affordance premium) ═══ */
.cv-strip-scroll { position: relative; background: #fff; border: 1px solid var(--cvf-border, #e4e8ee); border-radius: 12px; }
.cv-docs-gallery-main .cv-strip-scroll { order: 1; }
.cv-strip-scroll .cv-docs-gallery-strip { background: transparent !important; border: none !important; border-radius: 0 !important; overflow-x: auto; flex-wrap: nowrap; scroll-behavior: smooth; padding: 8px 10px; scrollbar-width: thin; }
/* Dégradés gauche/droite — visibles seulement s'il y a du contenu à atteindre */
.cv-strip-scroll::before, .cv-strip-scroll::after { content: ""; position: absolute; top: 1px; bottom: 1px; width: 52px; pointer-events: none; opacity: 0; transition: opacity .16s ease; z-index: 1; border-radius: 12px; }
.cv-strip-scroll::before { left: 1px; background: linear-gradient(90deg, #fff 28%, rgba(255,255,255,0)); }
.cv-strip-scroll::after  { right: 1px; background: linear-gradient(270deg, #fff 28%, rgba(255,255,255,0)); }
.cv-strip-scroll.can-left::before { opacity: 1; }
.cv-strip-scroll.can-right::after { opacity: 1; }
/* Flèches de défilement (apparaissent selon la direction possible) */
.cv-strip-arrow { position: absolute; top: 50%; transform: translateY(-50%); z-index: 2; width: 30px; height: 30px; border-radius: 50%; border: 1px solid var(--cvf-border, #e4e8ee); background: #fff; color: var(--cvf-text, #2c3e50); display: none; align-items: center; justify-content: center; cursor: pointer; box-shadow: 0 2px 8px rgba(15,23,42,.14); padding: 0; }
.cv-strip-arrow:hover { background: var(--cvf-bg, #f7f8fc); }
.cv-strip-arrow .dashicons { font-size: 18px; width: 18px; height: 18px; }
.cv-strip-prev { left: 6px; } .cv-strip-next { right: 6px; }
.cv-strip-scroll.can-left .cv-strip-prev { display: inline-flex; }
.cv-strip-scroll.can-right .cv-strip-next { display: inline-flex; }

/* v11.86.10 — Miniature sélectionnée : halo doux ajouté (adoucit encore la bordure) */
.cv-docs-gallery-thumb.active { box-shadow: 0 0 0 4px rgba(var(--cvf-primary-rgb, 30,58,95), .09) !important; }

/* v11.86.13 — Panneau d'édition inline (notamment sous la galerie) toujours au premier plan */
.cv-inline-edit-panel { position: relative; z-index: 6; }

/* ============================================================================
   v11.86.15 — Vue LISTE : barre d'actions « moderne »
   Icônes fantômes (sans cadre) + 3 actions primaires + menu « ⋯ » (overflow).
   Calme au repos, contraste au survol de la ligne, tout reste à un clic.
   Le scope .cv-act-row n'existe QU'en vue liste → galerie/grille intactes.
   ========================================================================== */
/* Rangée d'actions alignée au début de sa colonne (sous l'en-tête « Actions »). */
.cv-act-row { display: flex; align-items: center; gap: 2px; justify-content: flex-start; }
.cv-act-row .cv-dact-btn {
    border: none !important; background: transparent !important; box-shadow: none !important;
    width: 30px; height: 30px; min-width: 30px; padding: 0 !important;
    display: inline-flex; align-items: center; justify-content: center;
    /* v11.86.46 — Actions LISIBLES par défaut (plus de gris fantôme à 70 %).
       L'utilisateur ne doit plus survoler la ligne pour voir les icônes. */
    color: #64748b !important; opacity: 1; position: relative;
    transition: background .15s, color .15s, opacity .15s;
}
.cv-act-row .cv-dact-btn .dashicons { color: inherit !important; font-size: 18px; width: 18px; height: 18px; }
/* Contraste accru au survol (ou focus clavier) de la ligne — déjà visibles au repos */
.cv-folder-files-table tr:hover .cv-act-row .cv-dact-btn,
.cv-folder-files-table tr:focus-within .cv-act-row .cv-dact-btn { opacity: 1; color: #334155 !important; }
.cv-act-row .cv-dact-btn:hover { background: rgba(100, 116, 139, .14) !important; color: #1e293b !important; }
.cv-act-row .cv-dact-disabled { opacity: .35 !important; cursor: not-allowed; }
/* Sur tactile (pas de survol) : icônes lisibles en permanence */
@media (hover: none) { .cv-act-row .cv-dact-btn { opacity: 1; color: #475569 !important; } }

/* Bouton « ⋯ » + pastille de présence (tags/commentaires cachés dessous) */
.cv-act-more { position: relative; display: inline-flex; }
.cv-act-dots { font-size: 20px; font-weight: 700; line-height: 1; letter-spacing: 1px; }
.cv-act-more-dot {
    position: absolute; top: 3px; right: 3px; width: 7px; height: 7px; border-radius: 50%;
    background: var(--cvf-primary, #7c3aed); box-shadow: 0 0 0 2px #fff;
}

/* Menu déroulant (overflow) — position:fixed : échappe les ancêtres overflow:hidden/clip
   (les sections coupaient le menu). Coordonnées posées en JS depuis le bouton « ⋯ ». */
.cv-act-menu {
    position: fixed; min-width: 200px; z-index: 100000; display: none;
    background: #fff; border: 1px solid #e8edf3; border-radius: 12px; padding: 6px;
    box-shadow: 0 14px 36px rgba(15, 23, 42, .18);
}
.cv-act-menu.open { display: block; }
.cv-act-menu .cv-dact-btn {
    display: flex !important; width: 100% !important; height: auto !important; min-width: 0;
    align-items: center; justify-content: flex-start !important; gap: 12px;
    padding: 9px 12px !important; opacity: 1 !important; border: none !important;
    background: transparent !important; box-shadow: none !important; border-radius: 9px !important;
    color: #334155 !important;
}
.cv-act-menu .cv-dact-btn .dashicons { color: #64748b !important; font-size: 18px; width: 18px; height: 18px; flex: 0 0 auto; }
.cv-act-menu .cv-dact-btn:hover { background: #f1f5f9 !important; }
.cv-act-menu-lbl { order: 1; font-size: 13px; font-weight: 600; white-space: nowrap; }
.cv-act-menu .cv-comment-badge,
.cv-act-menu .cv-tag-count-badge { order: 2; position: static !important; margin-left: auto !important; transform: none !important; }
/* Supprimer : isolé en bas, en rouge */
.cv-act-menu .cv-act-del { color: #dc2626 !important; border-top: 1px solid #f1f5f9; margin-top: 4px; padding-top: 10px !important; }
.cv-act-menu .cv-act-del .dashicons { color: #dc2626 !important; }
.cv-act-menu .cv-act-del:hover { background: #fef2f2 !important; }

/* v11.86.19 — Colonnes méta (Taille/Date/Actions) regroupées à DROITE, aérées et lisibles.
   table-layout:fixed → largeurs fixes ; la 1re colonne (Fichier/Titre) absorbe le reste.
   En-têtes + contenus alignés à GAUCHE (le libellé chapeaute sa donnée). padding-left = de l'air
   entre colonnes. vertical-align:middle → Taille, Date et Actions centrés sur la même ligne. */
.cv-docs-list table.cv-folder-files-table th,
.cv-docs-list table.cv-folder-files-table td { text-align: left !important; }
/* v11.86.23 — Tout le contenu de la ligne CENTRÉ VERTICALEMENT dans sa bande (séparée par un
   filet). Le bloc nom+description est centré comme un groupe, et Taille/Date/Actions sont centrés
   sur la même bande → pas de vide en bas, lecture équilibrée (standard listes Gmail/Finder). */
.cv-docs-list table.cv-folder-files-table tbody td {
    vertical-align: middle !important; padding-top: 14px !important; padding-bottom: 14px !important;
}
/* La cellule Nom et la cellule Actions étaient en display:flex (anciennes règles) → elles ne se
   comportaient pas comme des cellules de tableau. On les repasse en table-cell pour un centrage
   vertical homogène avec Taille/Date. */
.cv-docs-list table.cv-folder-files-table td.cv-folder-file-name { display: table-cell !important; }
.cv-docs-list table.cv-folder-files-table td.cv-folder-file-actions { display: table-cell !important; }
.cv-docs-list table.cv-folder-files-table td.cv-folder-file-name .cv-ff-main { display: block; }
.cv-docs-list table.cv-folder-files-table td.cv-folder-file-name .cv-folder-file-desc { display: block; margin-top: 3px; }
/* Barre d'actions : icônes centrées verticalement */
.cv-docs-list table.cv-folder-files-table .cv-act-row { align-items: center; }
/* Badge de type (Médias) : centré comme le reste */
.cv-docs-list table.cv-folder-files-table .cv-folder-embed-type-badge { vertical-align: middle; }
/* v11.86.23 — Filet de séparation léger entre chaque fichier, identique au trait sous l'en-tête.
   Dernière ligne sans bordure pour une base nette. */
.cv-docs-list table.cv-folder-files-table tbody td { border-bottom: 1px solid #f1f5f9 !important; }
.cv-docs-list table.cv-folder-files-table tbody tr:last-child td { border-bottom: 0 !important; }
/* v11.86.54 — Largeurs recalées APRÈS l'ajout de la colonne de sélection (1re colonne).
   Col 1 = case (44px) · Col 2 = NOM/TITRE (absorbe tout l'espace, la + importante) ·
   Col 3 = Taille/Type · Col 4 = Date · Col 5 = Actions — le trio méta regroupé à droite, aéré. */
.cv-docs-list table.cv-folder-files-table th.cv-mb-th,
.cv-docs-list table.cv-folder-files-table td.cv-mb-td { width: 44px !important; }
.cv-docs-list table.cv-folder-files-table th:nth-child(2),
.cv-docs-list table.cv-folder-files-table td:nth-child(2) { width: auto; }
.cv-docs-list table.cv-folder-files-table th:nth-child(3),
.cv-docs-list table.cv-folder-files-table td:nth-child(3) { width: 100px; padding-left: 18px; }
.cv-docs-list table.cv-folder-files-table th:nth-child(4),
.cv-docs-list table.cv-folder-files-table td:nth-child(4) { width: 132px; padding-left: 18px; }
.cv-docs-list table.cv-folder-files-table th:last-child,
.cv-docs-list table.cv-folder-files-table td:last-child { width: 160px; padding-left: 18px; }

/* v11.86.21 — Système typographique COHÉRENT de la ligne (Documents ET Médias en dossier).
   Hiérarchie nette : en-tête discret · nom fort · description secondaire · méta identiques. */
/* En-têtes : uniformes, capitales discrètes */
.cv-docs-list table.cv-folder-files-table thead th {
    font-size: 11px !important; font-weight: 600 !important; text-transform: uppercase;
    letter-spacing: .05em; color: #94a3b8 !important;
}
/* Nom du document / média */
.cv-docs-list table.cv-folder-files-table td.cv-folder-file-name .cv-ff-main,
.cv-docs-list table.cv-folder-files-table td.cv-folder-file-name a,
.cv-docs-list table.cv-folder-files-table td.cv-folder-file-name .cv-doc-name-t {
    font-size: 14px !important; font-weight: 600 !important; color: #1e293b !important;
}
/* Description : secondaire, neutre */
.cv-docs-list table.cv-folder-files-table .cv-folder-file-desc {
    font-size: 12px !important; font-weight: 400 !important; color: #94a3b8 !important;
}
/* Méta (Taille + Date) : STRICTEMENT identiques, chiffres tabulaires alignés */
.cv-docs-list table.cv-folder-files-table td.cv-folder-file-size,
.cv-docs-list table.cv-folder-files-table td.cv-folder-file-date {
    font-size: 13px !important; font-weight: 500 !important; color: #64748b !important;
    font-variant-numeric: tabular-nums; letter-spacing: .01em;
}

/* v20.21.77 — 🚨 MOBILE : la table Documents/Médias (5 colonnes fixes 44+auto+100+132+160 = 436px)
   écrase le nom sur < 436px (texte vertical lettre par lettre). On EMPILE chaque ligne en blocs.
   ⚠️ Ces règles REPRENNENT le préfixe `.cv-docs-list table.cv-folder-files-table` (même spécificité que
   les règles `display:table-cell !important` ci-dessus) et sont placées APRÈS → elles gagnent. */
@media (max-width: 680px) {
    .cv-docs-list table.cv-folder-files-table { table-layout: auto !important; width: 100% !important; }
    .cv-docs-list table.cv-folder-files-table thead { display: none !important; }
    .cv-docs-list table.cv-folder-files-table tbody { display: block !important; }
    .cv-docs-list table.cv-folder-files-table tr {
        display: block !important;
        position: relative !important;
        padding: 12px 12px 12px 46px !important;
        border-bottom: 1px solid #eef2f7 !important;
    }
    .cv-docs-list table.cv-folder-files-table td {
        display: block !important;
        width: auto !important;
        max-width: 100% !important;
        min-width: 0 !important;
        border: none !important;
        padding: 1px 0 !important;
        text-align: left !important;
        white-space: normal !important;
    }
    /* Case à cocher : positionnée en haut-gauche, hors du flux empilé. */
    .cv-docs-list table.cv-folder-files-table td.cv-mb-td {
        position: absolute !important; left: 10px !important; top: 12px !important;
        width: 28px !important; padding: 0 !important; margin: 0 !important;
    }
    /* Nom + description : pleine largeur → plus d'empilement vertical des lettres. */
    .cv-docs-list table.cv-folder-files-table td.cv-folder-file-name { display: block !important; width: auto !important; }
    .cv-docs-list table.cv-folder-files-table td.cv-folder-file-name .cv-ff-main,
    .cv-docs-list table.cv-folder-files-table td.cv-folder-file-name .cv-folder-file-desc { display: block !important; white-space: normal !important; }
    /* Taille / date / type : petites lignes méta côte à côte sous le nom. */
    .cv-docs-list table.cv-folder-files-table td.cv-folder-file-size,
    .cv-docs-list table.cv-folder-files-table td.cv-folder-file-date,
    .cv-docs-list table.cv-folder-files-table td:nth-child(3),
    .cv-docs-list table.cv-folder-files-table td:nth-child(4) {
        display: inline-block !important; width: auto !important;
        font-size: 11.5px !important; color: #94a3b8 !important;
        margin: 3px 12px 0 0 !important; padding-left: 0 !important;
    }
    /* Actions : rangée pleine largeur, TOUJOURS visibles (tactile), à gauche, qui s'enroulent. */
    .cv-docs-list table.cv-folder-files-table td.cv-folder-file-actions,
    .cv-docs-list table.cv-folder-files-table td:last-child {
        display: block !important; width: auto !important;
        margin-top: 8px !important; padding-left: 0 !important;
    }
    .cv-docs-list table.cv-folder-files-table td:last-child .cv-act-row {
        display: flex !important; flex-wrap: wrap !important;
        justify-content: flex-start !important; gap: 6px !important; opacity: 1 !important;
    }
}

/* v11.86.29 — Date d'expiration en 2e ligne + titre cliquable (survol) */
.cv-docs-list .cv-folder-file-expire {
    display: block; margin-top: 3px; font-size: 11.5px; font-weight: 500;
    color: #ea580c; font-variant-numeric: tabular-nums;
}
.cv-docs-list .cv-folder-file-expire .dashicons { font-size: 13px; width: 13px; height: 13px; vertical-align: -2px; }
.cv-docs-list .cv-folder-file-name a.cv-folder-file-link { cursor: pointer; }
.cv-docs-list .cv-folder-file-name a.cv-folder-file-link:hover { text-decoration: underline; }

/* v11.86.44 — Hôte des vues modernes dupliquées dans les menus Documents/Médias */
.cv-front-modern-views .cv-front-modern-head { display:flex; justify-content:flex-end; align-items:center; margin-bottom:10px; }
.cv-front-modern-views .cv-folder-section-body { padding:0; }

/* ===== v11.86.45 — Affinages des vues modernes dans les menus généraux (Médias/Documents) ===== */
.cv-front-modern-views { padding: 0 18px 16px; }
.cv-front-modern-views .cv-folder-section-body { padding: 0; }
.cv-front-modern-views .cv-mbar { margin-bottom: 14px; }
.cv-front-modern-views .cv-mbar-main .cv-view-switch { flex: 0 0 auto; margin-left: 2px; }
.cv-vault-wrap .cv-front-modern-views .cv-mbar-search { flex: 1 1 180px; min-width: 150px; }

/* ===== v11.86.46 — COHÉRENCE VISUELLE : barre de filtres « carte surélevée » =====
   La barre de recherche/filtres/vues était collée au header (dégradé) et à la liste.
   On l'isole dans un conteneur propre, aéré, arrondi et légèrement surélevé, séparé
   nettement du header au-dessus et de la liste en dessous. Design moderne, lisible. */
.cv-front-modern-views { padding: 18px 20px 20px; }
.cv-front-modern-views .cv-mbar {
    background: var(--cvf-card, #fff);
    border: 1px solid var(--cvf-border, #e8edf3);
    border-radius: 16px;
    padding: 12px 14px;
    margin: 0 0 18px;
    box-shadow: 0 1px 2px rgba(15, 23, 42, .04), 0 6px 20px rgba(15, 23, 42, .05);
}
/* Recherche bornée (ne mange plus toute la barre) + la bascule de vues filée à droite. */
.cv-vault-wrap .cv-front-modern-views .cv-mbar-search { flex: 0 1 300px; min-width: 190px; }
.cv-front-modern-views .cv-mbar-main { gap: 12px; row-gap: 10px; }
.cv-front-modern-views .cv-mbar-main .cv-view-switch { margin-left: auto; }
/* Petit séparateur visuel avant la bascule de vues (regroupe « réglages d'affichage »). */
.cv-front-modern-views .cv-mbar-main .cv-view-switch::before {
    content: ""; align-self: stretch; width: 1px; margin: 2px 8px 2px 0;
    background: var(--cvf-border, #e8edf3);
}
.cv-front-modern-views .cv-mbar-main .cv-view-switch { display: inline-flex; align-items: center; }
/* La liste/grille/galerie reprend juste sous la carte, avec son propre souffle. */
.cv-front-modern-views .cv-docs-wrap { margin-top: 2px; }
/* Grille 4 colonnes dans le menu principal (au lieu de 5) */
.cv-front-modern-views .cv-folder-embeds-grid { grid-template-columns: repeat(4, 1fr); }
/* Actions révélées au survol (grille média) */
.cv-folder-embed-item { position: relative; }
.cv-folder-embed-actions { position:absolute; top:8px; right:8px; display:flex; gap:4px; opacity:0; transform:translateY(-4px); transition:opacity .15s, transform .15s; background:rgba(255,255,255,.96); border:1px solid var(--cvf-border,#e2e8f0); border-radius:9px; padding:3px; box-shadow:0 6px 16px rgba(15,23,42,.16); z-index:5; }
.cv-folder-embed-item:hover .cv-folder-embed-actions, .cv-folder-embed-item:focus-within .cv-folder-embed-actions { opacity:1; transform:translateY(0); }
.cv-folder-embed-actions .cv-act-row { gap:2px; }
/* Galerie média : miniatures uniformes + texte sur 2 lignes (plus de troncature brutale) */
.cv-media-strip .cv-docs-gallery-thumb.cv-media-gthumb { width:128px; flex:0 0 128px; height:auto; }
.cv-media-gthumb .cv-media-gthumb-pv { width:100%; height:72px; border-radius:8px; overflow:hidden; display:block; background:#0f172a; }
.cv-media-gthumb .cv-media-gthumb-pv img, .cv-media-gthumb .cv-media-gthumb-pv video { width:100%; height:100%; object-fit:cover; display:block; }
.cv-media-gthumb .cv-media-gthumb-ico { width:100%; height:72px; border-radius:8px; display:flex; align-items:center; justify-content:center; background:#f1f5f9; }
.cv-media-gthumb .cv-media-gthumb-ico .dashicons { font-size:30px; width:30px; height:30px; color:var(--cvf-primary,#7c3aed); }
.cv-media-gthumb .cv-docs-gallery-thumb-name { font-size:11px; line-height:1.25; max-height:2.5em; overflow:hidden; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; text-align:center; width:100%; margin-top:5px; white-space:normal; }

/* ===== v11.86.47 — Correctifs menu Médias ===== */
/* (A) BUG MENU « ⋯ » EN VUE LISTE — une bonne fois pour toutes.
   La ligne <tr> de liste avait `transform: translateY(-1px)` au survol. Un ancêtre
   « transformé » devient le bloc conteneur d'un enfant `position:fixed` → le menu « ⋯»
   était projeté hors écran tant que la souris survolait la ligne, et ne « réapparaissait»
   qu'en quittant la ligne. On supprime le transform sur les LIGNES de tableau (on garde
   l'ombre), de sorte que le menu fixed se positionne toujours par rapport au viewport.
   Les cartes de la vue Grille conservent leur léger soulèvement (elles n'ont pas de menu fixed). */
.cv-docs-list table.cv-folder-files-table tr.cv-folder-embed-clickable:hover { transform: none !important; }

/* (B) Compteur de résultats COLLÉ au bouton de tri (filtre), plus flottant au milieu.
   On retire le `margin-left:auto` du compteur dans ce contexte : seule la bascule de vues
   garde `margin-left:auto` (filée à droite). Résultat : … Trier · 9/9 … <espace> … vues. */
.cv-front-modern-views .cv-mbar-count { margin-left: 8px !important; }

/* (C) Pastille de TYPE différenciée par couleur (vidéo ≠ audio ≠ écran ≠ intégration). */
.cv-tbadge-video  { background:#ede9fe !important; color:#6d28d9 !important; } /* violet — vidéo */
.cv-tbadge-audio  { background:#dcfce7 !important; color:#15803d !important; } /* vert — audio */
.cv-tbadge-screen { background:#cffafe !important; color:#0e7490 !important; } /* cyan — écran */
.cv-tbadge-embed  { background:#fef3c7 !important; color:#b45309 !important; } /* ambre — intégration */

/* ===== v11.86.49 — Popover « Filtres » : fixed (jamais tronqué) + ancré sous le bouton ===== */
/* position:fixed → échappe tout ancêtre overflow:hidden ; coordonnées posées en JS. */
.cv-mmf-popover, .cv-dmf-popover, .cv-amf-popover {
    position: fixed !important; right: auto !important; bottom: auto !important;
    z-index: 100001 !important; width: 360px; max-width: calc(100vw - 16px);
    overflow-y: auto; overscroll-behavior: contain;
}
/* v11.86.149 — le popover Filtres (Cartes/Liens/Activité) était en position:absolute (ancré sur
   .cv-mbar) mais positionné en coordonnées écran → il atterrissait hors écran. Aligné sur les
   popovers Documents/Médias (position:fixed) pour que le bouton « Filtres » fonctionne. */
.cv-amf-popover { width: 420px; }
/* v11.86.149 — Pop-up « vue » partagée des fiches (gabarit unique, thémé front). */
.cv-card-item { cursor: pointer; }
.cv-clv-overlay { position: fixed; inset: 0; background: rgba(15,23,42,.55); z-index: 100070; display: none; align-items: center; justify-content: center; padding: 20px; box-sizing: border-box; }
.cv-clv-box { position: relative; background: var(--cvf-card, #fff); border-radius: 16px; box-shadow: 0 24px 70px rgba(0,0,0,.3); width: 100%; max-width: 560px; max-height: 85vh; overflow-y: auto; padding: 28px 28px 22px; box-sizing: border-box; }
.cv-clv-accent { position: absolute; top: 0; left: 0; right: 0; height: 5px; border-radius: 16px 16px 0 0; background: var(--cvf-primary, #2563eb); }
.cv-clv-close { position: absolute; top: 12px; right: 12px; background: transparent; border: none; color: var(--cvf-text-soft, #64748b); cursor: pointer; width: 34px; height: 34px; border-radius: 8px; display: inline-flex; align-items: center; justify-content: center; }
.cv-clv-close:hover { background: var(--cvf-bg-soft, #f1f5f9); color: var(--cvf-text, #1f2733); }
.cv-clv-head { margin: 4px 36px 14px 0; }
.cv-clv-title { margin: 0; font-size: 20px; font-weight: 700; line-height: 1.3; color: var(--cvf-text, #1f2733); }
.cv-clv-author-badge { display: inline-block; margin-top: 6px; font-size: 12px; color: var(--cvf-text-soft, #64748b); }
.cv-clv-body { font-size: 14.5px; line-height: 1.7; color: var(--cvf-text, #1f2733); word-break: break-word; }
.cv-clv-body p { margin: 0 0 10px; }
.cv-clv-body a { color: var(--cvf-primary, #2563eb); }
.cv-clv-tags { margin-top: 14px; display: flex; flex-wrap: wrap; gap: 6px; }
.cv-clv-tags:empty { display: none; }
.cv-clv-meta { margin-top: 16px; padding-top: 12px; border-top: 1px solid var(--cvf-border, #e5e9f0); font-size: 12.5px; color: var(--cvf-text-soft, #64748b); }
.cv-clv-meta:empty { display: none; }
/* v11.86.150 — Cartes/Liens : compact, vue liste/grille, sélection, switch, pop-up premium. */
.cv-clv-overlay { backdrop-filter: blur(2px); }
.cv-clv-box { max-width: 600px; padding: 30px 32px 24px; }
.cv-clv-accent { height: 6px; border-radius: 16px 16px 0 0; }
.cv-clv-title { font-size: 22px; letter-spacing: -.01em; }
.cv-clv-body { font-size: 15px; line-height: 1.75; }
.cv-clv-author-badge { background: var(--cvf-bg-soft, #f1f5f9); padding: 2px 10px; border-radius: 999px; }
/* Case à cocher sur fiches & liens (coin haut-gauche). */
.cv-vault-wrap .cv-card-item, .cv-vault-wrap .cv-link-card { position: relative; }
.cv-card-item > .cv-mb-wrap-grid, .cv-link-card > .cv-mb-wrap-grid { position: absolute; top: 9px; left: 9px; z-index: 4; }
.cv-card-item > .cv-mb-wrap-grid { top: 12px; }
/* Fiche compacte (grille) : contenu tronqué — lecture intégrale dans la pop-up. */
.cv-cards-grid { grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); }
.cv-cards-grid.cv-clview-grid .cv-fiche-text { display: -webkit-box; -webkit-line-clamp: 4; -webkit-box-orient: vertical; overflow: hidden; }
.cv-cards-grid .cv-fiche-body { padding-left: 34px; }
/* Sélecteur de vue (repris du style docs/médias). */
.cv-clview-switch { display: inline-flex; gap: 2px; border: 1px solid var(--cvf-border, #dfe4ea); border-radius: 9px; padding: 2px; background: var(--cvf-card, #fff); flex: 0 0 auto; }
.cv-clview-btn { display: inline-flex; align-items: center; justify-content: center; width: 32px; height: 30px; border: none; background: transparent; color: var(--cvf-text-soft, #64748b); border-radius: 7px; cursor: pointer; }
.cv-clview-btn:hover { background: var(--cvf-bg-soft, #f1f5f9); }
.cv-clview-btn.active { background: var(--cvf-primary, #2563eb); color: #fff; }
.cv-clview-btn .dashicons { font-size: 18px; width: 18px; height: 18px; }
/* Vue LISTE des fiches : une colonne, aperçu court. Vue GRILLE des liens : cartes. */
.cv-cards-grid.cv-clview-list { grid-template-columns: 1fr; }
.cv-cards-grid.cv-clview-list .cv-fiche-text { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.cv-links-list.cv-clview-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 12px; }
.cv-link-card > .cv-mb-wrap-grid { top: 14px; left: 12px; }
.cv-vault-wrap .cv-link-card { padding-left: 40px; }
/* v11.86.151 — Cases à cocher des fiches/liens TOUJOURS visibles (multi-sélection découvrable, liste + grille). */
.cv-card-item > .cv-mb-wrap-grid, .cv-link-card > .cv-mb-wrap-grid { opacity: 1 !important; }
/* Boutons d'action (édition, archiver, déplacer…) bien plus voyants : pastilles, semi-visibles puis pleines au survol. */
.cv-vault-wrap .cv-card-item .cv-hover-actions, .cv-vault-wrap .cv-link-card .cv-hover-actions { opacity: .55; gap: 4px; }
.cv-vault-wrap .cv-card-item:hover .cv-hover-actions, .cv-vault-wrap .cv-link-card:hover .cv-hover-actions { opacity: 1; }
.cv-vault-wrap .cv-card-item .cv-hover-action-btn, .cv-vault-wrap .cv-link-card .cv-hover-action-btn {
    display: inline-flex; align-items: center; justify-content: center; width: 30px; height: 30px;
    border-radius: 8px; background: var(--cvf-bg-soft, #f1f5f9); border: 1px solid var(--cvf-border, #e3e8ef);
    font-size: 14px; line-height: 1; cursor: pointer; padding: 0;
    transition: background .12s, transform .12s, box-shadow .12s, border-color .12s;
}
.cv-vault-wrap .cv-card-item .cv-hover-action-btn:hover, .cv-vault-wrap .cv-link-card .cv-hover-action-btn:hover {
    background: #e2e8f0; border-color: var(--cvf-primary, #2563eb); transform: translateY(-1px); box-shadow: 0 3px 10px rgba(15,23,42,.16);
}
.cv-vault-wrap .cv-card-item .cv-hover-action-delete:hover, .cv-vault-wrap .cv-link-card .cv-hover-action-delete:hover {
    background: #fee2e2; border-color: #dc2626; box-shadow: 0 3px 10px rgba(220,38,38,.18);
}
/* v11.86.152 — Toutes les actions visibles (y compris Tag) : ligne dédiée sur les fiches, retour à la ligne sur les liens. */
.cv-vault-wrap .cv-fiche-meta { flex-wrap: wrap; row-gap: 8px; }
.cv-vault-wrap .cv-card-item .cv-hover-actions { width: 100%; flex-wrap: wrap; justify-content: flex-start; margin-top: 4px; }
.cv-vault-wrap .cv-link-card .cv-hover-actions { flex-wrap: wrap; }
.cv-vault-wrap .cv-card-item.cv-card-admin .cv-fiche-meta, .cv-vault-wrap .cv-card-item.cv-content-archived .cv-fiche-meta { align-items: flex-start; }
/* « Tout sélectionner » Fiches/Liens dans la barre d'outils. */
.cv-cl-selectall-wrap { position: relative; width: auto !important; height: auto !important; gap: 7px; padding: 6px 10px; border: 1px solid var(--cvf-border, #dfe4ea); border-radius: 9px; background: var(--cvf-card, #fff); font-size: 13px; color: var(--cvf-text-soft, #64748b); white-space: nowrap; flex: 0 0 auto; }
.cv-cl-selectall-wrap .cv-cl-selectall-lbl { line-height: 1; }
.cv-cl-selectall-wrap:hover { border-color: var(--cvf-primary, #2563eb); }
.cv-cl-selectall-wrap .cv-mb-box { flex: 0 0 auto; }
/* Pop-up LIEN : description, ligne URL, bouton « Ouvrir le lien ». */
.cv-clv-desc { font-size: 14.5px; color: var(--cvf-text, #1f2733); margin: 0 0 14px; line-height: 1.6; }
.cv-clv-linkrow { display: flex; align-items: center; gap: 8px; padding: 10px 12px; background: var(--cvf-bg-soft, #f1f5f9); border-radius: 10px; margin-bottom: 16px; word-break: break-all; }
.cv-clv-linkrow .dashicons { color: var(--cvf-primary, #2563eb); flex: 0 0 auto; }
.cv-clv-url { color: var(--cvf-primary, #2563eb); font-size: 13.5px; text-decoration: none; }
.cv-clv-url:hover { text-decoration: underline; }
.cv-clv-body a.cv-clv-openlink, .cv-clv-openlink { display: inline-flex; align-items: center; gap: 6px; background: var(--cvf-primary, #2563eb); color: #fff !important; font-weight: 600; font-size: 14px; padding: 11px 20px; border-radius: 10px; text-decoration: none; }
.cv-clv-openlink:hover { filter: brightness(1.1); color: #fff !important; }
.cv-clv-openlink .dashicons { font-size: 16px; width: 16px; height: 16px; }
/* v11.86.153 — Notepad (document partagé) : multi-sélection, vue liste/grille. */
.cv-vault-wrap .cv-notepad-msg { position: relative; }
.cv-note-check.cv-mb-chk { flex: 0 0 auto; align-self: flex-start; margin-top: 4px; margin-right: 4px; opacity: 1; }
.cv-notepad-messages.cv-clview-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 12px; align-items: start; }
.cv-notepad-messages.cv-clview-grid .cv-notepad-msg { margin: 0; background: var(--cvf-card, #fff); border: 1px solid var(--cvf-border, #e8ecf0); border-radius: 12px; padding: 14px; align-items: flex-start; box-shadow: 0 1px 3px rgba(15,23,42,.05); }
.cv-notepad-messages.cv-clview-grid .cv-note-body { flex: 1 1 auto; min-width: 0; }
/* v11.86.154 — Le séparateur de mois/date occupe toute la largeur en grille (classe réelle = .cv-note-month-sep). */
.cv-notepad-messages.cv-clview-grid .cv-note-month-sep,
.cv-notepad-messages.cv-clview-grid .cv-note-day-sep,
.cv-notepad-messages.cv-clview-grid .cv-note-sep { grid-column: 1 / -1; margin: 8px 0 2px; }
.cv-vault-wrap .cv-note-msg-actions { display: inline-flex; gap: 4px; flex-wrap: wrap; }
/* v11.86.154 — Masquer le lien d'évitement « Aller au contenu principal » (parcours) + skip-link thème sur l'espace coffre. */
.cvf-skip-link, .skip-link, a.skip-link, .screen-reader-text.skip-link { display: none !important; }
/* v11.86.154 — Items archivés (« mode gris ») : le contenu reste estompé mais les CONTRÔLES (case à
   cocher, boutons d'action, badge « Archivé ») restent pleinement visibles et utilisables. */
.cv-content-archived > .cv-mb-wrap-grid, .cv-content-archived .cv-note-check.cv-mb-chk,
.cv-content-archived .cv-hover-actions, .cv-content-archived .cv-note-msg-actions,
.cv-content-archived .cv-arch-badge { opacity: 1 !important; }
.cv-content-archived .cv-hover-action-btn, .cv-content-archived .cv-note-msg-actions .cv-hover-action-btn { opacity: 1; }
/* Carte/lien archivés ou déposés par l'admin : actions sur leur propre ligne, alignées proprement. */
.cv-vault-wrap .cv-card-item.cv-content-archived .cv-hover-actions, .cv-vault-wrap .cv-card-item.cv-card-admin .cv-hover-actions { margin-top: 6px; }
.cv-mmf-folder-msel, .cv-dmf-folder-msel { position: relative; }
.cv-mmf-folder-panel, .cv-dmf-folder-panel { max-height: 200px; overflow-y: auto; }
/* Plage de dates « Du → Au » sur UNE seule ligne (les champs se réduisent au besoin). */
.cv-mmf-popover .cv-mbar-dates, .cv-dmf-popover .cv-mbar-dates { display: flex; flex-wrap: nowrap; align-items: center; gap: 6px; }
.cv-mmf-popover .cv-mbar-dates label, .cv-dmf-popover .cv-mbar-dates label { flex: 0 0 auto; white-space: nowrap; }
.cv-mmf-popover .cv-mbar-dates .cvf-toolbar-sep, .cv-dmf-popover .cv-mbar-dates .cvf-toolbar-sep { flex: 0 0 auto; }
.cv-mmf-popover .cv-mbar-dates .cvf-date-input, .cv-dmf-popover .cv-mbar-dates .cvf-date-input { flex: 1 1 0; min-width: 0; }

/* ===== v11.86.52 — Barre de succès horizontale (DANS le bloc, jamais de pop-up) ===== */
.cv-modern-success-bar { display: flex; align-items: center; gap: 8px; background: #dcfce7; color: #15803d; border: 1px solid #86efac; border-radius: 10px; padding: 10px 14px; margin: 0 0 14px; font-size: 13.5px; font-weight: 600; opacity: 0; transform: translateY(-6px); transition: opacity .25s ease, transform .25s ease; }
.cv-modern-success-bar.cv-msb-show { opacity: 1; transform: translateY(0); }
.cv-modern-success-bar .dashicons { color: #16a34a; font-size: 18px; width: 18px; height: 18px; }
/* v20.21.14 — variante ERREUR (rouge) de la barre inline */
.cv-modern-success-bar.cv-msb-err { background: #fee2e2; color: #b91c1c; border-color: #fca5a5; }
.cv-modern-success-bar.cv-msb-err .dashicons { color: #dc2626; }
/* v20.21.20 — rangée Dossiers + Tags du composeur de message */
.cv-vault-wrap .cv-fmsg-relrow { display: flex; gap: 8px; flex-wrap: wrap; margin: 12px 0 16px; }
.cv-vault-wrap .cv-fmsg-relrow .cv-fmsg-msel { position: relative; }
/* v20.21.27 — Pièces jointes du coffre : panneau picker + chips composeur + chips ligne */
.cv-vault-wrap .cv-fmsg-attach-grp { font-size: 10.5px; font-weight: 800; text-transform: uppercase; letter-spacing: .04em; color: #94a3b8; padding: 6px 4px 2px; }
.cv-vault-wrap .cv-fmsg-attach-panel .cv-note-msel-opt .dashicons { font-size: 15px; width: 15px; height: 15px; color: #64748b; flex: 0 0 auto; }
.cv-vault-wrap .cv-fmsg-attach-loading { padding: 10px; color: #94a3b8; font-size: 12px; }
.cv-vault-wrap .cv-fmsg-attach-chips { display: flex; flex-wrap: wrap; gap: 6px; margin: 0 0 10px; }
.cv-vault-wrap .cv-fmsg-att-chip { display: inline-flex; align-items: center; gap: 5px; background: #eef2f8; color: #1e3a5f; border: 1px solid #cdd9e8; border-radius: 999px; padding: 3px 6px 3px 9px; font-size: 12px; font-weight: 600; }
.cv-vault-wrap .cv-fmsg-att-chip .dashicons { font-size: 14px; width: 14px; height: 14px; }
.cv-vault-wrap .cv-fmsg-att-x { cursor: pointer; font-weight: 800; color: #64748b; padding: 0 3px; border-radius: 50%; }
.cv-vault-wrap .cv-fmsg-att-x:hover { background: #dbe3ee; color: #1e3a5f; }
.cv-vault-wrap .cv-fmsg-att { display: inline-flex; align-items: center; gap: 4px; background: #eef2f8; color: #1e3a5f; border-radius: 999px; padding: 1px 8px; font-size: 11px; font-weight: 600; cursor: pointer; }
.cv-vault-wrap .cv-fmsg-att:hover { background: #dbe3ee; }
.cv-vault-wrap .cv-fmsg-att .dashicons { font-size: 13px; width: 13px; height: 13px; }
/* v20.21.29 — pop-up de pièces jointes à onglets */
/* v20.21.30 — Picker pièces jointes : pop-up agrandie + vues liste/grille/galerie + filtres */
.cv-fmatt-ov { position: fixed; inset: 0; background: rgba(15,23,42,.55); z-index: 100070; display: none; align-items: center; justify-content: center; padding: 24px; }
.cv-fmatt-box { position: relative; background: #fff; border-radius: 16px; width: 1040px; max-width: 100%; height: 86vh; max-height: 860px; display: flex; flex-direction: column; overflow: hidden; box-shadow: 0 28px 70px rgba(15,23,42,.34); }
.cv-fmatt-head { display: flex; align-items: center; justify-content: space-between; padding: 16px 22px; border-bottom: 1px solid #e8edf3; }
.cv-fmatt-head h3 { margin: 0; font-size: 16px; color: #1e3a5f; display: inline-flex; align-items: center; gap: 8px; }
.cv-fmatt-head h3 .dashicons { color: #1e3a5f; }
.cv-fmatt-close { background: none; border: none; cursor: pointer; color: #64748b; padding: 4px; border-radius: 8px; }
.cv-fmatt-close:hover { background: #f1f5f9; color: #1e293b; }
.cv-fmatt-tabs { display: flex; gap: 2px; padding: 6px 18px 0; flex-wrap: wrap; border-bottom: 1px solid #e8edf3; }
.cv-fmatt-tab { display: inline-flex; align-items: center; gap: 6px; background: none; border: none; border-bottom: 2px solid transparent; padding: 10px 12px; font-size: 13px; font-weight: 600; color: #64748b; cursor: pointer; }
.cv-fmatt-tab:hover { color: #1e3a5f; }
.cv-fmatt-tab.active { color: #1e3a5f; border-bottom-color: #1e3a5f; }
.cv-fmatt-tab .dashicons { font-size: 16px; width: 16px; height: 16px; }
.cv-fmatt-tab-n { font-size: 11px; font-weight: 700; min-width: 18px; text-align: center; padding: 1px 5px; border-radius: 999px; background: #eef2f7; color: #64748b; }
.cv-fmatt-tab.active .cv-fmatt-tab-n.has { background: #1e3a5f; color: #fff; }
.cv-fmatt-toolbar { display: flex; align-items: center; gap: 12px; padding: 12px 18px; border-bottom: 1px solid #e8edf3; }
.cv-fmatt-search { flex: 1; display: flex; align-items: center; gap: 8px; padding: 8px 12px; background: #f5f8fb; border: 1px solid #e2e8f0; border-radius: 10px; color: #94a3b8; }
.cv-fmatt-search input { flex: 1; border: none; outline: none; font-size: 13.5px; background: transparent; color: #1e293b; }
.cv-fmatt-views { display: inline-flex; gap: 2px; background: #f1f5f9; border-radius: 10px; padding: 3px; }
.cv-fmatt-vw { background: none; border: none; cursor: pointer; color: #64748b; padding: 6px 9px; border-radius: 8px; display: inline-flex; }
.cv-fmatt-vw .dashicons { font-size: 17px; width: 17px; height: 17px; }
.cv-fmatt-vw:hover { color: #1e3a5f; }
.cv-fmatt-vw.active { background: #fff; color: #1e3a5f; box-shadow: 0 1px 3px rgba(15,23,42,.12); }
/* Bouton « Filtres » + popover (dossiers + tags) */
.cv-fmatt-toolbar { position: relative; }
.cv-fmatt-filterbtn { display: inline-flex; align-items: center; gap: 6px; background: #f5f8fb; border: 1px solid #e2e8f0; border-radius: 10px; padding: 8px 13px; font-size: 13px; font-weight: 600; color: #475569; cursor: pointer; white-space: nowrap; }
.cv-fmatt-filterbtn:hover { background: #eef3f8; color: #1e3a5f; }
.cv-fmatt-filterbtn.has { background: #1e3a5f; color: #fff; border-color: #1e3a5f; }
.cv-fmatt-filterbtn .dashicons { font-size: 16px; width: 16px; height: 16px; }
.cv-fmatt-filterbtn-n:empty { display: none; }
.cv-fmatt-filterbtn-n { background: rgba(255,255,255,.25); border-radius: 999px; padding: 0 6px; font-size: 11px; font-weight: 700; }
/* Popover de filtres : ANCRÉ DANS la modale (anchor = .cv-fmatt-box position:relative), positionné en JS. */
.cv-fmatt-filterpop { position: absolute; z-index: 40; width: 340px; max-width: calc(100% - 20px); max-height: 64vh; overflow-y: auto; background: #fff; border: 1px solid #e4e8ee; border-radius: 14px; box-shadow: 0 18px 48px rgba(15,23,42,.22); padding: 16px 18px; }
.cv-fmatt-filterpop .cv-mbar-pop-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 12px; }
.cv-fmatt-filterpop .cv-mbar-pop-head span:first-child { font-size: 14px; font-weight: 700; color: #1e3a5f; }
.cv-fmatt-filterpop .cv-mbar-pop-head .dashicons { cursor: pointer; color: #64748b; }
.cv-fmatt-filterpop .cv-mbar-group { margin-bottom: 14px; }
.cv-fmatt-filterpop .cv-mbar-group-label { font-size: 11px; font-weight: 700; color: #64748b; text-transform: uppercase; letter-spacing: .4px; margin-bottom: 8px; }
.cv-fmatt-filterpop .cv-tag-filter-pills, .cv-fmatt-filterpop .cvf-period-pills { display: flex; flex-wrap: wrap; gap: 6px; }
/* Dropdown dossiers */
.cv-fmatt-filterpop .cv-msel-toggle { display: flex; align-items: center; justify-content: space-between; gap: 8px; width: 100%; height: 38px; padding: 0 12px; border: 1px solid #e4e8ee; border-radius: 10px; background: #fff; color: #1e293b; font-size: 13px; font-weight: 500; cursor: pointer; }
.cv-fmatt-filterpop .cv-msel-toggle:hover { border-color: #cbd5e1; }
.cv-fmatt-filterpop .cv-msel-toggle .dashicons { color: #94a3b8; font-size: 16px; width: 16px; height: 16px; }
.cv-fmatt-filterpop .cv-msel-panel { margin-top: 6px; max-height: 190px; overflow-y: auto; border: 1px solid #e4e8ee; border-radius: 10px; background: #fff; box-shadow: 0 6px 18px rgba(15,23,42,.1); padding: 5px; }
.cv-fmatt-filterpop .cv-msel-opt { display: flex; align-items: center; gap: 9px; padding: 8px 9px; border-radius: 8px; cursor: pointer; font-size: 13px; color: #1e293b; }
.cv-fmatt-filterpop .cv-msel-opt:hover { background: #f5f8fb; }
.cv-fmatt-filterpop .cv-msel-opt input { margin: 0; accent-color: var(--cvf-primary, #1e3a5f); }
/* Pills tags + période : style uniforme arrondi */
.cv-fmatt-filterpop .cv-tag-pill, .cv-fmatt-filterpop .cvf-period-btn { height: 32px; padding: 0 13px; border: 1px solid #e4e8ee; border-radius: 999px; background: #fff; color: #475569; font-size: 12.5px; font-weight: 600; cursor: pointer; display: inline-flex; align-items: center; transition: background .12s, border-color .12s, color .12s; }
.cv-fmatt-filterpop .cv-tag-pill:hover, .cv-fmatt-filterpop .cvf-period-btn:hover { border-color: #cbd5e1; background: #f8fafc; }
.cv-fmatt-filterpop .cv-tag-pill.active, .cv-fmatt-filterpop .cvf-period-btn.active { background: var(--cvf-primary, #1e3a5f); border-color: var(--cvf-primary, #1e3a5f); color: #fff; }
/* Dates compactes */
.cv-fmatt-filterpop .cv-mbar-dates { display: flex; align-items: center; gap: 8px; margin-top: 12px; }
.cv-fmatt-filterpop .cv-mbar-dates label { font-size: 12px; color: #94a3b8; flex: 0 0 auto; }
.cv-fmatt-filterpop .cvf-toolbar-sep { color: #cbd5e1; }
.cv-fmatt-filterpop .cvf-date-input { flex: 1; min-width: 0; height: 36px; border: 1px solid #e4e8ee; border-radius: 9px; padding: 0 9px; font-size: 12px; color: #475569; background: #fff; }
.cv-fmatt-filterpop .cvf-date-input:focus { outline: none; border-color: var(--cvf-primary, #1e3a5f); }
.cv-fmatt-filterpop .cv-mbar-pop-foot { display: flex; justify-content: flex-end; margin-top: 8px; border-top: 1px solid #eef2f7; padding-top: 12px; }
.cv-fmatt-filterpop .cv-mbar-reset { font-size: 13px; color: var(--cvf-primary, #1e3a5f); font-weight: 600; cursor: pointer; }
.cv-fmatt-filterpop .cv-mbar-reset:hover { text-decoration: underline; }
/* Pièces jointes affichées dans la pop-up de discussion d'un message */
.cv-msgview-atts { margin-top: 18px; padding-top: 16px; border-top: 1px solid var(--cvf-border, #e4e8ee); text-align: left; }
.cv-msgview-atts-label { display: flex; align-items: center; gap: 6px; font-size: 11.5px; font-weight: 700; text-transform: uppercase; letter-spacing: .03em; color: var(--cvf-text-muted, #5a6c7d); margin-bottom: 10px; }
.cv-msgview-atts-label .dashicons { font-size: 15px; width: 15px; height: 15px; }
.cv-msgview-atts-list { display: flex; flex-wrap: wrap; gap: 8px; }
.cv-msgview-att { display: inline-flex; align-items: center; gap: 7px; max-width: 100%; padding: 8px 13px; border: 1px solid var(--cvf-border, #e4e8ee); border-radius: 10px; background: var(--cvf-card, #fff); color: var(--cvf-text, #2c3e50); font-size: 13px; font-weight: 500; cursor: pointer; transition: border-color .12s, box-shadow .12s; }
.cv-msgview-att:hover { border-color: var(--cvf-primary, #1e3a5f); box-shadow: 0 2px 8px rgba(15,23,42,.08); }
.cv-msgview-att .dashicons { font-size: 16px; width: 16px; height: 16px; color: var(--cvf-primary, #1e3a5f); flex: 0 0 auto; }
/* Visionneuse de pièce jointe = LECTEUR UNIFORME (même conteneur, même taille pour tous les types) */
/* Pendant la consultation : pleine largeur (discussion masquée) + bouton commentaires masqué
   (il ne vit que sur le message source). */
.cv-msgatt-fullwidth .cv-preview-comments-panel { display: none !important; }
.cv-msgatt-fullwidth #cv-front-btn-reply { display: none !important; }
/* 🚨 .cv-preview-body est flex+center → la galerie DOIT prendre 100% pour ne pas se réduire/centrer */
.cv-msgatt-gallery { width: 100%; height: 100%; box-sizing: border-box; display: flex; flex-direction: column; gap: 12px; padding: 16px 20px; background: var(--cvf-card, #fff); text-align: left; overflow: hidden; }
.cv-msgatt-galtop { flex: 0 0 auto; display: flex; align-items: center; gap: 14px; }
.cv-msgatt-galcount { font-size: 12.5px; color: var(--cvf-text-muted, #5a6c7d); display: inline-flex; align-items: center; gap: 6px; }
.cv-msgatt-galtitle { flex: 0 0 auto; display: flex; align-items: center; gap: 8px; font-size: 15px; font-weight: 700; color: var(--cvf-text, #2c3e50); min-width: 0; }
.cv-msgatt-galtitle .dashicons { color: var(--cvf-primary, #1e3a5f); flex: 0 0 auto; }
.cv-msgatt-gallery .cv-strip-scroll { flex: 0 0 auto; }
.cv-msgatt-back { display: inline-flex; align-items: center; gap: 6px; background: var(--cvf-primary, #1e3a5f); border: none; color: #fff; font-size: 13.5px; font-weight: 600; cursor: pointer; padding: 9px 16px; border-radius: 10px; flex: 0 0 auto; }
.cv-msgatt-back:hover { filter: brightness(1.1); }
.cv-msgatt-back .dashicons { font-size: 16px; width: 16px; height: 16px; }
/* La scène (grand aperçu) remplit l'espace restant, sur TOUTE la largeur */
.cv-msgatt-stage { width: 100%; flex: 1 1 auto; min-height: 300px; display: flex; align-items: center; justify-content: center; background: #f0f0f0; border-radius: 12px; overflow: hidden; }
.cv-msgatt-stage .cv-preview-loading, .cv-msgatt-err { display: flex; align-items: center; gap: 8px; color: var(--cvf-text-muted, #5a6c7d); font-size: 14px; }
img.cv-msgatt-media { max-width: 100%; max-height: 100%; object-fit: contain; display: block; }
iframe.cv-msgatt-media { width: 100%; height: 100%; border: 0; background: #fff; }
.cv-msgatt-embedwrap { width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; background: #000; }
/* Force le wrapper responsive (padding-hack) éventuel + l'iframe/vidéo à remplir toute la scène */
.cv-msgatt-embedwrap > * { width: 100% !important; height: 100% !important; max-width: 100% !important; padding: 0 !important; margin: 0 !important; }
.cv-msgatt-embedwrap iframe, .cv-msgatt-embedwrap video { width: 100% !important; height: 100% !important; border: 0; object-fit: contain; background: #000; }
.cv-msgatt-embedwrap audio { width: 80%; height: auto !important; }
.cv-msgatt-inner { width: 100%; height: 100%; box-sizing: border-box; padding: 24px; }
.cv-msgatt-inner.cv-msgatt-center { display: flex; align-items: center; justify-content: center; }
.cv-msgatt-inner.cv-msgatt-scroll { overflow-y: auto; background: #fff; }
.cv-msgatt-inner .cv-msgatt-fileblock, .cv-msgatt-inner .cv-msgatt-linkcard, .cv-msgatt-inner .cv-msgatt-card, .cv-msgatt-inner .cv-msgatt-note { width: 100%; max-width: 620px; }
.cv-msgatt-fileblock, .cv-msgatt-linkcard { display: flex; align-items: center; gap: 14px; padding: 18px; border: 1px solid var(--cvf-border, #e4e8ee); border-radius: 12px; background: var(--cvf-bg, #f7f8fc); }
.cv-msgatt-fileico, .cv-msgatt-linkico { font-size: 32px; width: 32px; height: 32px; color: var(--cvf-primary, #1e3a5f); flex: 0 0 auto; }
.cv-msgatt-filemeta, .cv-msgatt-linkbody { flex: 1; display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.cv-msgatt-filemeta strong, .cv-msgatt-linkbody strong { font-size: 14px; color: var(--cvf-text, #2c3e50); word-break: break-word; }
.cv-msgatt-filemeta span, .cv-msgatt-linkbody span { font-size: 12px; color: var(--cvf-text-muted, #5a6c7d); }
.cv-msgatt-dl, .cv-msgatt-linkbtn { display: inline-flex; align-items: center; gap: 6px; background: var(--cvf-primary, #1e3a5f); color: #fff; border: none; border-radius: 9px; padding: 9px 15px; font-size: 13px; font-weight: 600; cursor: pointer; text-decoration: none; white-space: nowrap; }
.cv-msgatt-card { padding: 18px; border-radius: 12px; border: 1px solid var(--cvf-border, #e4e8ee); border-left: 4px solid var(--cvf-primary, #1e3a5f); background: var(--cvf-card, #fff); }
.cv-msgatt-card h3 { margin: 0 0 10px; font-size: 16px; color: var(--cvf-text, #2c3e50); }
.cv-msgatt-cardbody, .cv-msgatt-notebody { font-size: 14px; line-height: 1.6; color: var(--cvf-text, #2c3e50); }
.cv-msgatt-note { padding: 18px; border-radius: 12px; background: #fefce8; border: 1px solid #fde68a; }
.cv-fmatt-flt-none { font-size: 12.5px; color: #94a3b8; padding: 4px 9px; }
.cv-fmatt-facets { display: flex; flex-wrap: wrap; gap: 6px; padding: 10px 18px; border-bottom: 1px solid #eef2f7; background: #fff; }
.cv-fmatt-facet { display: inline-flex; align-items: center; gap: 6px; background: #f1f5f9; border: 1px solid transparent; border-radius: 999px; padding: 5px 11px; font-size: 12px; font-weight: 600; color: #475569; cursor: pointer; }
.cv-fmatt-facet:hover { background: #e8eef5; }
.cv-fmatt-facet.active { background: #1e3a5f; color: #fff; }
.cv-fmatt-facet-n { font-size: 10.5px; font-weight: 700; opacity: .75; }
.cv-fmatt-facet-dot { width: 9px; height: 9px; border-radius: 999px; display: inline-block; }
.cv-fmatt-card-blue.cv-fmatt-facet-dot { background: #2563eb; } .cv-fmatt-card-green.cv-fmatt-facet-dot { background: #16a34a; }
.cv-fmatt-card-orange.cv-fmatt-facet-dot { background: #ea580c; } .cv-fmatt-card-red.cv-fmatt-facet-dot { background: #dc2626; }
.cv-fmatt-card-purple.cv-fmatt-facet-dot { background: #7c3aed; } .cv-fmatt-card-yellow.cv-fmatt-facet-dot { background: #ca8a04; }
.cv-fmatt-body { flex: 1 1 auto; overflow-y: auto; padding: 16px 18px; min-height: 200px; background: #fbfcfe; }
/* Item commun */
.cv-fmatt-item { position: relative; cursor: pointer; border: 1.5px solid #e6ebf2; border-radius: 12px; background: #fff; transition: border-color .12s, box-shadow .12s; }
.cv-fmatt-item:hover { border-color: #c3d2e6; box-shadow: 0 4px 14px rgba(15,23,42,.07); }
.cv-fmatt-item.is-sel { border-color: #1e3a5f; box-shadow: 0 0 0 2px rgba(30,58,95,.18); }
.cv-fmatt-check { position: absolute; top: 8px; right: 8px; width: 22px; height: 22px; border-radius: 999px; background: #fff; border: 1.5px solid #cbd5e1; display: flex; align-items: center; justify-content: center; color: transparent; z-index: 2; }
.cv-fmatt-check .dashicons { font-size: 15px; width: 15px; height: 15px; }
.cv-fmatt-item.is-sel .cv-fmatt-check { background: #1e3a5f; border-color: #1e3a5f; color: #fff; }
.cv-fmatt-ico { display: inline-flex; align-items: center; justify-content: center; color: #64748b; background: #eef2f7; flex: 0 0 auto; }
.cv-fmatt-ico .dashicons { font-size: 22px; width: 22px; height: 22px; }
.cv-fmatt-ico-link { color: #0891b2; background: #ecfeff; }
.cv-fmatt-ico-note { color: #ca8a04; background: #fefce8; }
/* Documents : icônes + couleurs par type REPRISES de la section (cv_file_type / galerie) */
.cv-fmatt-ico.cv-doc-type-img { background: #e9f7ee; }
.cv-fmatt-ico.cv-doc-type-img .dashicons { color: #2f9e44; }
.cv-fmatt-ico.cv-doc-type-pdf { background: #fdecea; }
.cv-fmatt-ico.cv-doc-type-pdf .dashicons { color: #e0413a; }
.cv-fmatt-ico.cv-doc-type-file { background: #eef2f7; }
.cv-fmatt-ico.cv-doc-type-file .dashicons { color: #5b6b7f; }
/* Aperçu image réel chargé : l'image couvre la tuile, on masque l'icône */
.cv-fmatt-docimg { background-size: cover !important; background-position: center !important; }
.cv-fmatt-docimg.cv-fmatt-docimg-on .dashicons { display: none; }
/* Badge extension coloré par type (comme la section) */
.cv-fmatt-ext.cv-doc-type-pdf { background: #e0413a; }
.cv-fmatt-ext.cv-doc-type-img { background: #2f9e44; }
.cv-fmatt-ext.cv-doc-type-file { background: #5b6b7f; }
.cv-fmatt-card-blue { color: #2563eb; background: #eff5ff; } .cv-fmatt-card-green { color: #16a34a; background: #f0fdf4; }
.cv-fmatt-card-orange { color: #ea580c; background: #fff7ed; } .cv-fmatt-card-red { color: #dc2626; background: #fef2f2; }
.cv-fmatt-card-purple { color: #7c3aed; background: #f5f3ff; } .cv-fmatt-card-yellow { color: #ca8a04; background: #fefce8; }
.cv-fmatt-thumb { background-size: cover; background-position: center; background-color: #1e293b; background-image: linear-gradient(135deg, #1a2332 0%, #2d3748 100%); flex: 0 0 auto; }
.cv-fmatt-ext { position: absolute; font-size: 9.5px; font-weight: 800; letter-spacing: .03em; color: #fff; background: #2563eb; padding: 1px 5px; border-radius: 5px; }
.cv-fmatt-i-name { font-weight: 600; color: #1e293b; overflow: hidden; text-overflow: ellipsis; }
.cv-fmatt-i-sub { color: #64748b; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cv-fmatt-i-date { color: #94a3b8; font-size: 11.5px; }
/* Vue LISTE */
.cv-fmatt-vw-list { display: flex; flex-direction: column; gap: 6px; }
.cv-fmatt-vw-list .cv-fmatt-item { display: flex; align-items: center; gap: 12px; padding: 10px 14px; }
.cv-fmatt-vw-list .cv-fmatt-check { position: static; }
.cv-fmatt-vw-list .cv-fmatt-ico, .cv-fmatt-vw-list .cv-fmatt-thumb { width: 40px; height: 40px; border-radius: 9px; }
.cv-fmatt-vw-list .cv-fmatt-ext { position: static; margin-left: 2px; }
.cv-fmatt-vw-list .cv-fmatt-i-body { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 1px; }
.cv-fmatt-vw-list .cv-fmatt-i-name { font-size: 13.5px; white-space: nowrap; }
.cv-fmatt-vw-list .cv-fmatt-i-sub { font-size: 12px; display: inline; }
.cv-fmatt-vw-list .cv-fmatt-i-date { margin-left: auto; flex: 0 0 auto; }
/* Vue GRILLE */
/* GRILLE = cartes VISUELLES : la vignette/cover prend toute la largeur, titre dessous (pas une liste déguisée). */
.cv-fmatt-vw-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: 14px; }
.cv-fmatt-vw-grid .cv-fmatt-item { display: flex; flex-direction: column; align-items: stretch; padding: 0; overflow: hidden; }
.cv-fmatt-vw-grid .cv-fmatt-ico, .cv-fmatt-vw-grid .cv-fmatt-thumb { width: 100%; height: 124px; border-radius: 0; }
.cv-fmatt-vw-grid .cv-fmatt-ico { position: relative; }
.cv-fmatt-vw-grid .cv-fmatt-ico::after { content: ""; position: absolute; inset: 0; background: linear-gradient(160deg, rgba(255,255,255,.30), rgba(255,255,255,0) 55%); pointer-events: none; }
.cv-fmatt-vw-grid .cv-fmatt-ico .dashicons { font-size: 46px; width: 46px; height: 46px; opacity: .92; }
.cv-fmatt-vw-grid .cv-fmatt-ext { top: 10px; left: 10px; }
.cv-fmatt-vw-grid .cv-fmatt-i-body { display: flex; flex-direction: column; gap: 3px; width: 100%; min-width: 0; padding: 11px 13px 13px; box-sizing: border-box; }
.cv-fmatt-vw-grid .cv-fmatt-i-name { font-size: 13.5px; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; white-space: normal; }
.cv-fmatt-vw-grid .cv-fmatt-i-sub { font-size: 12px; }
/* Vue GALERIE — tuiles image-forward (grande couverture + libellé) */
.cv-fmatt-vw-gallery { display: grid; grid-template-columns: repeat(auto-fill, minmax(208px, 1fr)); gap: 16px; }
.cv-fmatt-vw-gallery .cv-fmatt-item { display: flex; flex-direction: column; overflow: hidden; padding: 0; }
.cv-fmatt-vw-gallery .cv-fmatt-ico, .cv-fmatt-vw-gallery .cv-fmatt-thumb { width: 100%; height: 152px; border-radius: 0; }
.cv-fmatt-vw-gallery .cv-fmatt-ico { position: relative; }
.cv-fmatt-vw-gallery .cv-fmatt-ico::after { content: ""; position: absolute; inset: 0; background: linear-gradient(160deg, rgba(255,255,255,.35), rgba(255,255,255,0) 55%); pointer-events: none; }
.cv-fmatt-vw-gallery .cv-fmatt-ico .dashicons { font-size: 52px; width: 52px; height: 52px; opacity: .92; }
.cv-fmatt-vw-gallery .cv-fmatt-ext { top: 12px; left: 12px; font-size: 11.5px; padding: 2px 8px; }
.cv-fmatt-vw-gallery .cv-fmatt-i-body { display: flex; flex-direction: column; gap: 3px; padding: 12px 14px 14px; width: 100%; min-width: 0; }
.cv-fmatt-vw-gallery .cv-fmatt-i-name { font-size: 13.5px; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; white-space: normal; }
.cv-fmatt-vw-gallery .cv-fmatt-i-sub { font-size: 12px; }
/* Pastille lecture sur les vignettes médias (galerie + grille) */
.cv-fmatt-play { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; }
.cv-fmatt-play .dashicons { font-size: 30px; width: 44px; height: 44px; line-height: 44px; color: #fff; background: rgba(15,23,42,.55); border-radius: 999px; }
.cv-fmatt-vw-list .cv-fmatt-play { display: none; }
.cv-fmatt-thumb { position: relative; }
/* Vue GALERIE du picker : bande de miniatures sélectionnables + grande scène d'aperçu */
.cv-fmatt-galwrap { display: flex; flex-direction: column; gap: 14px; height: 100%; min-height: 0; }
.cv-fmatt-galwrap .cv-strip-scroll { flex: 0 0 auto; position: relative; }
.cv-fmatt-galstrip { display: flex; gap: 10px; overflow-x: auto; padding: 4px 2px 10px; }
.cv-fmatt-galstrip .cv-fmatt-item { width: 132px; flex: 0 0 132px; display: flex; flex-direction: column; align-items: flex-start; gap: 8px; padding: 10px; }
.cv-fmatt-galstrip .cv-fmatt-item .cv-fmatt-ico, .cv-fmatt-galstrip .cv-fmatt-item .cv-fmatt-thumb { width: 100%; height: 78px; border-radius: 9px; }
.cv-fmatt-galstrip .cv-fmatt-item .cv-fmatt-ico .dashicons { font-size: 30px; width: 30px; height: 30px; }
.cv-fmatt-galstrip .cv-fmatt-item .cv-fmatt-ext { top: 14px; left: 14px; }
.cv-fmatt-galstrip .cv-fmatt-item .cv-fmatt-i-body { width: 100%; min-width: 0; }
.cv-fmatt-galstrip .cv-fmatt-item .cv-fmatt-i-name { font-size: 12px; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; white-space: normal; }
.cv-fmatt-galstrip .cv-fmatt-item .cv-fmatt-i-sub, .cv-fmatt-galstrip .cv-fmatt-item .cv-fmatt-i-date { display: none; }
.cv-fmatt-galstrip .cv-fmatt-item .cv-fmatt-play .dashicons { display: none; }
.cv-fmatt-galstrip .cv-fmatt-item.cv-fmatt-gactive { border-color: var(--cvf-primary, #1e3a5f); box-shadow: 0 0 0 2px var(--cvf-primary, #1e3a5f); }
.cv-fmatt-galstage { flex: 1 1 auto; min-height: 240px; }
.cv-fmatt-empty { padding: 50px 24px; text-align: center; color: #94a3b8; }
.cv-fmatt-empty .dashicons { font-size: 40px; width: 40px; height: 40px; opacity: .4; }
.cv-fmatt-empty p { margin: 10px 0 0; font-size: 13.5px; }
.cv-fmatt-loading { padding: 40px 24px; text-align: center; color: #94a3b8; font-size: 13.5px; }
.cv-fmatt-loading .dashicons { animation: cv-spin 1s linear infinite; }
@keyframes cv-spin { to { transform: rotate(360deg); } }
.cv-fmatt-foot { display: flex; align-items: center; justify-content: space-between; padding: 14px 20px; border-top: 1px solid #e8edf3; }
.cv-fmatt-count { font-size: 12.5px; color: #1e3a5f; font-weight: 600; display: inline-flex; align-items: center; gap: 5px; }
.cv-fmatt-foot-btns { display: inline-flex; gap: 10px; }
.cv-fmatt-cancel { background: #f1f5f9; color: #475569; border: none; border-radius: 9px; padding: 10px 18px; font-weight: 600; font-size: 13px; cursor: pointer; }
.cv-fmatt-cancel:hover { background: #e2e8f0; }
.cv-fmatt-apply { background: #1e3a5f; color: #fff; border: none; border-radius: 9px; padding: 10px 22px; font-weight: 600; font-size: 13px; cursor: pointer; }
.cv-fmatt-apply:hover { filter: brightness(1.12); }
@media (max-width: 720px) { .cv-fmatt-box { height: 92vh; } .cv-fmatt-tab-lbl { display: none; } }
/* v20.21.16 — message archivé (vue « Archivés » / « Tous ») : aspect estompé + ruban */
.cv-fmsg-item.cv-fmsg-item-archived { background: #fafafa; }
.cv-fmsg-item.cv-fmsg-item-archived .cv-msglist-subject,
.cv-fmsg-item.cv-fmsg-item-archived .cv-msglist-snippet { opacity: .72; }
.cv-fmsg-item.cv-fmsg-item-archived .cv-msglist-ico { background: #e2e8f0; color: #64748b; }

/* ===== v11.86.53 — Multi-sélection : case À COCHER PREMIUM (input natif masqué + boîte stylée) ===== */
.cv-mb-chk { display: inline-flex; align-items: center; justify-content: center; cursor: pointer; position: relative; width: 18px; height: 18px; }
.cv-mb-chk input { position: absolute; inset: 0; opacity: 0; width: 100%; height: 100%; margin: 0; cursor: pointer; }
.cv-mb-box { width: 18px; height: 18px; border-radius: 6px; border: 2px solid #cbd5e1; background: #fff; display: inline-flex; align-items: center; justify-content: center; transition: background .12s ease, border-color .12s ease; box-sizing: border-box; }
.cv-mb-box::after { content: ''; width: 5px; height: 9px; border: solid #fff; border-width: 0 2px 2px 0; transform: rotate(45deg) scale(0); transition: transform .12s ease; margin-top: -1px; }
.cv-mb-chk input:checked + .cv-mb-box { background: var(--cvf-primary, #7c3aed); border-color: var(--cvf-primary, #7c3aed); }
.cv-mb-chk input:checked + .cv-mb-box::after { transform: rotate(45deg) scale(1); }
.cv-mb-chk input:indeterminate + .cv-mb-box { background: var(--cvf-primary, #7c3aed); border-color: var(--cvf-primary, #7c3aed); }
.cv-mb-chk input:indeterminate + .cv-mb-box::after { content: ''; width: 9px; height: 2px; border: none; background: #fff; transform: none; border-radius: 1px; margin: 0; }
.cv-mb-chk:hover .cv-mb-box { border-color: var(--cvf-primary, #7c3aed); }
/* Colonne de sélection (liste) — étroite et discrète, alignée verticalement */
.cv-docs-list table.cv-folder-files-table th.cv-mb-th, .cv-docs-list table.cv-folder-files-table td.cv-mb-td { width: 44px; text-align: center !important; padding-left: 12px !important; padding-right: 2px !important; vertical-align: middle !important; }
/* Grille : case en coin, révélée au survol ou si cochée */
.cv-doc-tile, .cv-folder-embed-item { position: relative; }
.cv-mb-wrap-grid { position: absolute; top: 8px; left: 8px; z-index: 6; opacity: 0; transition: opacity .15s ease; }
.cv-doc-tile:hover .cv-mb-wrap-grid, .cv-folder-embed-item:hover .cv-mb-wrap-grid { opacity: 1; }
.cv-mb-wrap-grid:has(input:checked) { opacity: 1; }
.cv-mb-wrap-grid .cv-mb-box { box-shadow: 0 1px 4px rgba(15,23,42,.2); }
/* Entête du menu Déplacer/Copier */
.cv-mb-folders-head { font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; color: #94a3b8; padding: 4px 10px 6px; }
/* Barre d'actions lot flottante (bas centre) */
.cv-mb-bar { position: fixed; left: 50%; bottom: 24px; transform: translateX(-50%) translateY(20px); z-index: 100002; display: flex; align-items: center; gap: 12px; background: #1e293b; color: #fff; border-radius: 999px; padding: 8px 12px; box-shadow: 0 12px 40px rgba(0,0,0,.4), 0 2px 10px rgba(0,0,0,.25); opacity: 0; pointer-events: none; transition: opacity .2s ease, transform .2s ease; max-width: calc(100vw - 32px); flex-wrap: wrap; justify-content: center; }
/* v11.86.147 — Répondre + Commenter (actions client) + séparateur + composer commentaire. */
.cv-mb-sep { width: 1px; height: 22px; background: rgba(255,255,255,.18); flex: 0 0 auto; }
.cv-mb-act-primary { background: var(--cvf-primary, #2563eb); color: #fff; }
.cv-mb-act-primary:hover { background: var(--cvf-primary, #2563eb); filter: brightness(1.12); }
.cv-mb-commentwrap { position: relative; }
.cv-mb-comment-pop { position: absolute; bottom: calc(100% + 10px); left: 50%; transform: translateX(-50%); width: 260px; background: #fff; border-radius: 12px; box-shadow: 0 12px 40px rgba(0,0,0,.28); padding: 10px; display: flex; flex-direction: column; gap: 8px; z-index: 5; }
.cv-mb-comment-pop textarea { width: 100%; box-sizing: border-box; border: 1px solid var(--cvf-border, #d7dde6); border-radius: 8px; padding: 8px 10px; font-size: 13px; resize: vertical; color: var(--cvf-text, #1f2733); }
.cv-mb-comment-send { align-self: flex-end; background: var(--cvf-primary, #2563eb); color: #fff; border: none; border-radius: 8px; padding: 7px 16px; font-size: 13px; font-weight: 600; cursor: pointer; }
.cv-mb-comment-send:hover { filter: brightness(1.1); }
.cv-mb-comment-send:disabled { opacity: .6; cursor: default; }
.cv-mb-bar.cv-mb-show { opacity: 1; transform: translateX(-50%) translateY(0); pointer-events: auto; }
/* v11.86.148 — toolbar harmonisée avec l'admin (.cv-msb) : pastille compteur, boutons aérés, séparateurs. */
.cv-mb-count { display: inline-flex; align-items: center; gap: 8px; font-size: 13px; font-weight: 500; color: #e2e8f0; white-space: nowrap; padding-left: 4px; }
.cv-mb-count b { display: inline-flex; align-items: center; justify-content: center; min-width: 24px; height: 24px; padding: 0 7px; border-radius: 999px; background: var(--cvf-primary, #2563eb); color: #fff; font-size: 13px; font-weight: 700; }
.cv-mb-actions { display: flex; align-items: center; gap: 4px; flex-wrap: wrap; justify-content: center; }
.cv-mb-act { display: inline-flex; align-items: center; gap: 6px; background: transparent; color: #e2e8f0; border: none; border-radius: 9px; padding: 8px 13px; font-size: 13px; font-weight: 500; cursor: pointer; white-space: nowrap; transition: background .15s, color .15s; }
.cv-mb-act:hover { background: rgba(255,255,255,.12); color: #fff; }
.cv-mb-act-primary { background: var(--cvf-primary, #2563eb); color: #fff; font-weight: 600; }
.cv-mb-act-primary:hover { background: var(--cvf-primary, #2563eb); filter: brightness(1.14); color: #fff; }
.cv-mb-delete { color: #fca5a5; }
.cv-mb-delete:hover { background: rgba(220,38,38,.2); color: #fecaca; }
.cv-mb-act .dashicons { font-size: 17px; width: 17px; height: 17px; }
.cv-mb-clear { background: transparent; border: none; color: #94a3b8; cursor: pointer; display: inline-flex; align-items: center; justify-content: center; width: 30px; height: 30px; border-radius: 8px; margin-left: 2px; }
.cv-mb-clear:hover { color: #fff; background: rgba(255,255,255,.1); }
/* v11.86.148 — Repère visuel « Archivé » sur les vues modernes (liste + grille, docs + médias). */
.cv-arch-badge { display: inline-flex; align-items: center; gap: 4px; margin-left: 8px; padding: 1px 8px 1px 6px; border-radius: 999px; background: #fef3c7; color: #92400e; font-size: 11px; font-weight: 600; vertical-align: middle; white-space: nowrap; }
.cv-arch-badge .dashicons { font-size: 13px; width: 13px; height: 13px; }
.cv-folder-item.cv-doc-archived > td, tr.cv-media-row.cv-doc-archived > td { background: #fffbeb; }
.cv-folder-item.cv-doc-archived > td:first-child, tr.cv-media-row.cv-doc-archived > td:first-child { box-shadow: inset 3px 0 0 #f59e0b; }
.cv-doc-tile.cv-doc-archived, .cv-folder-embed-item.cv-doc-archived { background: #fffbeb; box-shadow: inset 0 0 0 1px #fde68a, inset 3px 0 0 #f59e0b; }
.cv-doc-tile.cv-doc-archived .cv-arch-badge, .cv-folder-embed-item.cv-doc-archived .cv-arch-badge { position: absolute; top: 8px; left: 8px; margin: 0; z-index: 2; }
.cv-doc-tile.cv-doc-archived, .cv-folder-embed-item.cv-doc-archived { position: relative; }
.cv-mb-movewrap { position: relative; }
.cv-mb-folders { position: absolute; bottom: calc(100% + 8px); left: 0; background: #fff; color: #1e293b; border-radius: 10px; box-shadow: 0 14px 44px rgba(15,23,42,.28); padding: 6px; min-width: 210px; max-height: 260px; overflow-y: auto; }
.cv-mb-folder-opt { display: block; width: 100%; text-align: left; background: transparent; border: none; padding: 8px 10px; border-radius: 7px; font-size: 13px; color: #1e293b; cursor: pointer; }
.cv-mb-folder-opt:hover { background: #f1f5f9; }
.cv-mb-folder-empty { padding: 10px; font-size: 12.5px; color: #94a3b8; }
/* Copier vers PLUSIEURS dossiers : lignes à cocher + bouton Valider */
.cv-mb-folder-optc { display: flex; align-items: center; gap: 9px; padding: 7px 10px; border-radius: 7px; font-size: 13px; color: #1e293b; cursor: pointer; }
.cv-mb-folder-optc:hover { background: #f1f5f9; }
.cv-mb-folder-optc .cv-mb-box { width: 16px; height: 16px; }
.cv-mb-folder-optc-name { flex: 1 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cv-mb-folder-apply { width: 100%; margin-top: 6px; background: var(--cvf-primary, #7c3aed); color: #fff; border: none; border-radius: 8px; padding: 9px 12px; font-size: 13px; font-weight: 700; cursor: pointer; }
.cv-mb-folder-apply:hover { filter: brightness(1.06); }
.cv-mb-folder-apply:disabled { opacity: .6; cursor: default; }

/* ===== v11.86.55 / v11.86.72 / v11.86.75 — Bouton « Exporter ce dossier » =====
   Toujours À DROITE du statut (« En progrès »), jamais en dessous. Statut + export groupés
   pour qu'ils restent solidaires même si le titre passe à la ligne. Bouton ghost très discret. */
.cv-folder-detail-hero-top { display: flex; align-items: center; justify-content: flex-start; gap: 8px; }
.cv-folder-detail-hero-titleline { display: flex; align-items: center; gap: 10px; flex-wrap: nowrap; }
/* v11.86.75/77 — groupe statut + deadline + export : inséparables, l'export colle à droite du
   badge, et TOUT le groupe est centré verticalement avec le titre. */
.cv-folder-detail-statusgroup { display: inline-flex; align-items: center; gap: 8px; flex: 0 0 auto; }
.cv-vault-wrap .cv-folder-detail-hero-titleline .cv-folder-detail-statusgroup .cv-folder-detail-status { margin-right: 0; }
/* v11.86.77 — neutraliser le décalage vertical du badge DANS le groupe (sinon l'icône export
   n'est pas alignée avec le statut/titre). */
.cv-vault-wrap .cv-folder-detail-hero-titleline .cv-folder-detail-statusgroup .cv-folder-badge { top: 0; }
/* Bouton ghost discret (sans bordure ni fond), à droite du statut. */
.cv-folder-export-btn {
    display: inline-flex; align-items: center; justify-content: center; gap: 4px;
    padding: 3px 6px; border: 0; border-radius: 6px;
    background: transparent; color: var(--cvf-text-muted, #94a3b8);
    font-size: 11.5px; font-weight: 600; cursor: pointer; white-space: nowrap; flex: 0 0 auto;
    transition: color .15s, background .15s;
}
.cv-folder-export-btn:hover { color: var(--cvf-primary, #1e3a5f); background: rgba(30,58,95,.08); }
.cv-folder-export-btn .cv-folder-export-btn-label { line-height: 1; }
.cv-folder-export-btn[disabled] { opacity: .6; cursor: default; }
/* v11.86.76/77 — variante ICÔNE SEULE : icône SVG « archive téléchargée » plus parlante,
   bouton compact carré, parfaitement centré (vertical + horizontal). */
.cv-folder-export-btn--icon { padding: 5px; border-radius: 8px; gap: 0; line-height: 0; color: var(--cvf-text-muted, #8a98a8); }
.cv-folder-export-btn--icon svg { width: 20px; height: 20px; display: block; }
.cv-folder-export-btn--icon .cv-spinner-sm { width: 16px; height: 16px; }

/* ===== v11.86.77 — Confirmation premium FRONT (variables --cvf-*, toujours au premier plan) ===== */
.cv-front-confirm-ov {
    position: fixed; inset: 0; z-index: 2147483600;
    display: flex; align-items: center; justify-content: center; padding: 20px;
    background: rgba(15, 23, 42, .55); opacity: 0; transition: opacity .18s ease;
}
.cv-front-confirm-ov.cv-front-confirm-show { opacity: 1; }
.cv-front-confirm-box {
    background: var(--cvf-card, #ffffff); color: var(--cvf-text, #1f2937);
    border-radius: 16px; padding: 26px 28px; width: 100%; max-width: 400px;
    box-shadow: 0 24px 70px rgba(15, 23, 42, .28);
    text-align: center; transform: translateY(8px) scale(.98); transition: transform .18s ease;
    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
}
.cv-front-confirm-show .cv-front-confirm-box { transform: none; }
.cv-front-confirm-icon { font-size: 42px; line-height: 1; margin-bottom: 10px; }
.cv-front-confirm-title { font-size: 17px; font-weight: 800; margin: 0 0 8px; color: var(--cvf-text, #1f2937); }
.cv-front-confirm-msg { font-size: 13.5px; line-height: 1.55; color: var(--cvf-text-muted, #64748b); margin: 0 0 22px; }
.cv-front-confirm-actions { display: flex; gap: 10px; justify-content: center; }
.cv-front-confirm-btn { padding: 10px 20px; border-radius: 10px; font-size: 13px; font-weight: 700; cursor: pointer; border: none; transition: filter .15s, background .15s; }
.cv-front-confirm-cancel { background: var(--cvf-bg, #f1f5f9); color: var(--cvf-text-muted, #64748b); border: 1px solid var(--cvf-border, #e2e8f0); }
.cv-front-confirm-cancel:hover { background: #e9eef5; }
.cv-front-confirm-ok { background: var(--cvf-primary, #1e3a5f); color: #fff; }
.cv-front-confirm-ok:hover { filter: brightness(1.10); }

/* ===== v11.86.81 — Tiroir « Activité du coffre » (bouton flottant + panneau, classes dédiées,
   couleurs du thème, survol/clavier premium). ===== */
.cv-act-fab { position: fixed; right: 26px; bottom: 26px; z-index: 99988; width: 72px; height: 72px;
  border-radius: 50%; background: linear-gradient(135deg, var(--cvf-primary, #1e3a5f), var(--cvf-primary-light, #2a5298));
  color: #fff; border: 0; cursor: pointer; box-shadow: 0 14px 34px rgba(30,58,95,.45);
  display: flex; align-items: center; justify-content: center; transition: transform .15s ease, box-shadow .15s ease; }
.cv-act-fab:hover { transform: translateY(-2px) scale(1.05); box-shadow: 0 18px 42px rgba(30,58,95,.55); }
.cv-act-fab:focus-visible { outline: 3px solid var(--cvf-accent, #e8913a); outline-offset: 3px; }
.cv-act-fab svg { width: 30px; height: 30px; }
.cv-act-fab-badge { position: absolute; top: -2px; right: -2px; min-width: 21px; height: 21px; padding: 0 5px; box-sizing: border-box;
  border-radius: 999px; background: var(--cvf-accent, #e8913a); color: #fff; font-size: 11.5px; font-weight: 800; line-height: 1;
  display: flex; align-items: center; justify-content: center; border: 2.5px solid #fff; box-shadow: 0 2px 6px rgba(0,0,0,.25); }
/* v11.86.83 — sous l'aperçu document (#cv-preview-overlay = 99999) pour rester ouvert DERRIÈRE lui. */
.cv-actd-ov { position: fixed; inset: 0; z-index: 99990; visibility: hidden; }
.cv-actd-ov.cv-show { visibility: visible; }
.cv-actd-bd { position: absolute; inset: 0; background: rgba(15,23,42,.45); opacity: 0; transition: opacity .22s ease; }
.cv-actd-ov.cv-show .cv-actd-bd { opacity: 1; }
.cv-actd { position: absolute; top: 0; right: 0; bottom: 0; width: 440px; max-width: 94vw; background: var(--cvf-card, #fff);
  box-shadow: -14px 0 44px rgba(15,23,42,.22); transform: translateX(100%); transition: transform .26s cubic-bezier(.4,0,.2,1);
  display: flex; flex-direction: column; outline: none; }
.cv-actd-ov.cv-show .cv-actd { transform: none; }
.cv-actd-head { display: flex; align-items: center; justify-content: space-between; padding: 18px 20px;
  background: linear-gradient(135deg, var(--cvf-primary, #1e3a5f), var(--cvf-primary-light, #2a5298)); color: #fff; }
.cv-actd-head .cv-actd-sub { margin: 0; font-size: 11.5px; text-transform: uppercase; letter-spacing: .05em; opacity: .85; font-weight: 700; }
.cv-actd-head .cv-actd-title { margin: 2px 0 0; font-size: 17px; font-weight: 700; color: #fff; }
.cv-actd-close { background: rgba(255,255,255,.16); border: 0; color: #fff; width: 34px; height: 34px; border-radius: 9px; font-size: 15px; cursor: pointer; transition: background .15s ease; }
.cv-actd-close:hover { background: rgba(255,255,255,.30); }
.cv-actd-body { overflow: auto; padding: 14px 22px 28px; flex: 1; }
.cv-actfeed-day { font-size: 11.5px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; color: var(--cvf-text-hint, #94a3b8); margin: 16px 0 4px; }
.cv-actfeed-ev { display: flex; gap: 12px; padding: 11px 10px; margin: 0 -10px; border-radius: 12px; align-items: flex-start; cursor: default; transition: background .14s ease, box-shadow .14s ease; outline: none; }
.cv-actfeed-ev + .cv-actfeed-ev { border-top: 1px solid var(--cvf-border, #e8edf3); }
.cv-actfeed-ev:hover { background: var(--cvf-bg, #f1f5f9); }
.cv-actfeed-ev:focus-visible { background: var(--cvf-bg, #f1f5f9); box-shadow: inset 0 0 0 2px var(--cvf-primary, #1e3a5f); }
.cv-actfeed-ico { width: 38px; height: 38px; border-radius: 11px; background: var(--cvf-bg, #f1f5f9); display: flex; align-items: center; justify-content: center; font-size: 18px; flex: 0 0 auto; }
.cv-actfeed-main { min-width: 0; flex: 1; }
.cv-actfeed-t1 { font-size: 14px; margin: 0; color: var(--cvf-text, #1f2937); font-weight: 600; }
.cv-actfeed-t2 { font-size: 12.5px; margin: 2px 0 0; color: var(--cvf-text-muted, #64748b); }
.cv-actfeed-time { font-size: 11.5px; color: var(--cvf-text-hint, #cbd5e1); white-space: nowrap; margin-left: 8px; padding-top: 2px; }
.cv-actfeed-empty { text-align: center; padding: 40px 16px; color: var(--cvf-text-muted, #64748b); }
.cv-actfeed-empty span { font-size: 34px; display: block; margin-bottom: 8px; }
/* v11.86.82 — section épinglée « Derniers documents » en tête du tiroir */
.cv-actd-pinned { background: var(--cvf-bg, #f7f8fc); border: 1px solid var(--cvf-border, #e8edf3); border-radius: 14px; padding: 8px 12px 12px; margin: 12px 0 12px; }
.cv-actd-pinned-h { font-size: 11.5px; font-weight: 800; letter-spacing: .04em; text-transform: uppercase; color: var(--cvf-primary, #1e3a5f); padding: 10px 6px 8px; }
.cv-actd-doc { display: flex; align-items: center; gap: 12px; padding: 12px 10px; border-radius: 11px; text-decoration: none; transition: background .14s ease, box-shadow .14s ease; outline: none; }
/* v11.86.108 — section « À faire » en tête du tiroir : accent chaud pour la distinguer des docs. */
.cv-actd-todo { background: color-mix(in srgb, var(--cvf-accent, #e8913a) 7%, #fff); border-color: color-mix(in srgb, var(--cvf-accent, #e8913a) 24%, #fff); }
.cv-actd-todo .cv-actd-pinned-h { color: var(--cvf-accent, #e8913a); }
.cv-actd-todo .cv-actd-doc-ic { background: color-mix(in srgb, var(--cvf-accent, #e8913a) 14%, #fff); border-color: color-mix(in srgb, var(--cvf-accent, #e8913a) 28%, #fff); }
.cv-actd-todo .cv-actd-doc-arr { color: var(--cvf-accent, #e8913a); }
.cv-actd-doc + .cv-actd-doc { border-top: 1px solid var(--cvf-border, #e8edf3); }
.cv-actd-doc:hover { background: #fff; }
.cv-actd-doc:focus-visible { background: #fff; box-shadow: inset 0 0 0 2px var(--cvf-primary, #1e3a5f); }
.cv-actd-doc-ic { width: 34px; height: 34px; border-radius: 9px; background: #fff; border: 1px solid var(--cvf-border, #e8edf3); display: flex; align-items: center; justify-content: center; font-size: 16px; flex: 0 0 auto; }
.cv-actd-doc-main { min-width: 0; flex: 1; display: flex; flex-direction: column; }
.cv-actd-doc-t { font-size: 13.5px; font-weight: 600; color: var(--cvf-text, #1f2937); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.cv-actd-doc-d { font-size: 11.5px; color: var(--cvf-text-hint, #94a3b8); }
.cv-actd-doc-arr { color: var(--cvf-primary, #1e3a5f); font-size: 15px; flex: 0 0 auto; opacity: .55; transition: transform .14s ease, opacity .14s ease; }
.cv-actd-doc:hover .cv-actd-doc-arr { transform: translateX(2px); opacity: 1; }
.cv-actd-histlabel { margin-top: 18px; }
/* v11.86.83/85 — lignes d'activité cliquables ; la surbrillance « tu es ici » réutilise la
   surbrillance existante du plugin (.cv-deeplink-highlight), pas une nouvelle. */
.cv-actfeed-nav { cursor: pointer; }
.cv-actfeed-nav:hover { background: var(--cvf-bg, #f1f5f9); }
/* Confirmation premium (jamais de confirm() natif) */
.cv-mb-confirm-ov { position: fixed; inset: 0; background: rgba(15,23,42,.5); z-index: 100003; display: flex; align-items: center; justify-content: center; opacity: 0; transition: opacity .2s ease; }
.cv-mb-confirm-ov.cv-mb-confirm-show { opacity: 1; }
.cv-mb-confirm-box { background: #fff; border-radius: 14px; padding: 22px; max-width: 380px; width: calc(100% - 40px); box-shadow: 0 22px 64px rgba(15,23,42,.32); transform: scale(.96); transition: transform .2s ease; }
.cv-mb-confirm-show .cv-mb-confirm-box { transform: scale(1); }
.cv-mb-confirm-msg { display: flex; align-items: flex-start; gap: 10px; font-size: 14.5px; color: #1e293b; line-height: 1.4; }
.cv-mb-confirm-msg .dashicons { color: #dc2626; font-size: 22px; width: 22px; height: 22px; flex: 0 0 auto; }
.cv-mb-confirm-actions { display: flex; justify-content: flex-end; gap: 10px; margin-top: 18px; }
.cv-mb-confirm-cancel { background: #f1f5f9; color: #475569; border: none; border-radius: 9px; padding: 9px 16px; font-size: 13.5px; font-weight: 600; cursor: pointer; }
.cv-mb-confirm-ok { background: #dc2626; color: #fff; border: none; border-radius: 9px; padding: 9px 16px; font-size: 13.5px; font-weight: 600; cursor: pointer; }
.cv-mb-confirm-ok:hover { background: #b91c1c; }

/* ===== v11.86.57 — #6 Modernisation de la barre de filtres ACTIVITÉ (front) ===== */
#cv-panel-activite .cvf-section-filters .cvf-toolbar {
    background: var(--cvf-card, #fff); border: 1px solid var(--cvf-border, #e8edf3);
    border-radius: 16px; padding: 14px 16px; margin-bottom: 16px;
    box-shadow: 0 1px 2px rgba(15,23,42,.04), 0 6px 20px rgba(15,23,42,.05);
    display: flex; flex-direction: column; gap: 12px;
}
#cv-panel-activite .cvf-toolbar-row { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
#cv-panel-activite .cvf-doc-search-wrapper { position: relative; flex: 0 1 280px; min-width: 190px; }
#cv-panel-activite .cvf-doc-search-wrapper .cvf-doc-search-icon { position: absolute; left: 12px; top: 50%; transform: translateY(-50%); color: var(--cvf-text-muted, #94a3b8); font-size: 17px; }
#cv-panel-activite .cvf-doc-search { width: 100%; border: 1px solid var(--cvf-border, #e8edf3); border-radius: 11px; padding: 9px 12px 9px 36px; font-size: 13.5px; background: var(--cvf-bg, #f8fafc); }
#cv-panel-activite .cvf-doc-search:focus { border-color: var(--cvf-primary, #7c3aed); background: #fff; outline: none; }
/* Pastilles de type — modernes, segmentées */
#cv-panel-activite .cv-activity-type-btn {
    display: inline-flex; align-items: center; gap: 5px; border: 1px solid var(--cvf-border, #e8edf3);
    background: var(--cvf-card, #fff); color: var(--cvf-text, #334155); border-radius: 999px;
    padding: 7px 13px; font-size: 12.5px; font-weight: 600; cursor: pointer;
    transition: border-color .15s, background .15s, color .15s;
}
#cv-panel-activite .cv-activity-type-btn:hover { border-color: var(--cvf-primary, #7c3aed); }
#cv-panel-activite .cv-activity-type-btn.active { background: var(--cvf-primary, #7c3aed); border-color: var(--cvf-primary, #7c3aed); color: #fff; }
/* Période */
#cv-panel-activite .cvf-toolbar-label { font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; color: #94a3b8; }
#cv-panel-activite .cvf-period-pills { display: inline-flex; flex-wrap: wrap; gap: 4px; background: var(--cvf-bg, #f1f5f9); border-radius: 12px; padding: 4px; }
#cv-panel-activite .cvf-period-btn { border: none; background: transparent; border-radius: 9px; padding: 6px 11px; font-size: 12.5px; font-weight: 600; color: var(--cvf-text-muted, #64748b); cursor: pointer; }
#cv-panel-activite .cvf-period-btn.active { background: var(--cvf-card, #fff); color: var(--cvf-text, #1e293b); box-shadow: 0 1px 2px rgba(0,0,0,.08); }
#cv-panel-activite .cvf-date-input { border: 1px solid var(--cvf-border, #e8edf3); border-radius: 10px; padding: 8px 11px; font-size: 13px; background: var(--cvf-bg, #f8fafc); }
#cv-panel-activite .cvf-toolbar-sep { color: var(--cvf-border, #cbd5e1); }

/* ═══════════════════════════════════════════════════════════════════════
   v11.86.91 — Accueil v2 · Module orienté action « Mes parcours »
   Charte FRONT (--cvf-*). Cartes de progression cliquables → ouvrent le parcours.
   ═══════════════════════════════════════════════════════════════════════ */
.cv-vault-wrap .cvf-home-module {
    background: var(--cvf-card, #fff);
    border: 1px solid var(--cvf-border, #e8edf3);
    border-radius: 16px;
    padding: 18px 20px 20px;
    margin: 0 0 20px;
    box-shadow: 0 2px 10px rgba(30,58,95,.05);
}
.cv-vault-wrap .cvf-home-module-hdr { display: flex; align-items: center; gap: 10px; margin-bottom: 14px; }
.cv-vault-wrap .cvf-home-module-icon { display: inline-flex; color: var(--cvf-primary, #1e3a5f); }
.cv-vault-wrap .cvf-home-module-title { font-size: 16px; font-weight: 700; color: var(--cvf-text, #1e293b); margin: 0; flex: 1; }
.cv-vault-wrap .cvf-home-module-link { font-size: 13px; font-weight: 600; color: var(--cvf-primary, #1e3a5f); cursor: pointer; white-space: nowrap; }
.cv-vault-wrap .cvf-home-module-link:hover { text-decoration: underline; }
.cv-vault-wrap .cvf-home-module-footer { margin-top: 12px; text-align: center; }

.cv-vault-wrap .cvf-home-parcours-list { display: flex; flex-direction: column; gap: 10px; }
.cv-vault-wrap .cvf-home-parc-card {
    border: 1px solid var(--cvf-border, #e8edf3);
    border-radius: 12px;
    padding: 13px 15px;
    background: var(--cvf-bg, #f8fafc);
    cursor: pointer;
    transition: border-color .15s, box-shadow .15s, transform .15s;
}
.cv-vault-wrap .cvf-home-parc-card:hover,
.cv-vault-wrap .cvf-home-parc-card:focus-visible {
    border-color: var(--cvf-primary, #1e3a5f);
    box-shadow: 0 6px 18px rgba(30,58,95,.12);
    transform: translateY(-2px);
    outline: none;
}
.cv-vault-wrap .cvf-home-parc-top { display: flex; align-items: center; gap: 10px; margin-bottom: 9px; }
.cv-vault-wrap .cvf-home-parc-name { font-size: 14px; font-weight: 650; color: var(--cvf-text, #1e293b); flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cv-vault-wrap .cvf-home-parc-badge { font-size: 11px; font-weight: 700; padding: 3px 9px; border-radius: 999px; white-space: nowrap; }
.cv-vault-wrap .cvf-home-parc-badge.is-active { background: rgba(232,145,58,.14); color: var(--cvf-accent, #e8913a); }
.cv-vault-wrap .cvf-home-parc-badge.is-paused { background: rgba(100,116,139,.14); color: #64748b; }
.cv-vault-wrap .cvf-home-parc-badge.is-done   { background: rgba(34,158,99,.14); color: #16a34a; }
.cv-vault-wrap .cvf-home-parc-bar { height: 7px; border-radius: 999px; background: var(--cvf-border, #e8edf3); overflow: hidden; }
.cv-vault-wrap .cvf-home-parc-fill { height: 100%; border-radius: 999px; background: linear-gradient(90deg, var(--cvf-primary, #1e3a5f), var(--cvf-accent, #e8913a)); transition: width .4s ease; }
.cv-vault-wrap .cvf-home-parc-meta { display: flex; align-items: center; gap: 12px; margin-top: 8px; font-size: 12px; color: var(--cvf-text-muted, #64748b); }
.cv-vault-wrap .cvf-home-parc-pct { font-weight: 700; color: var(--cvf-primary, #1e3a5f); }
.cv-vault-wrap .cvf-home-parc-steps { flex: 1; }
.cv-vault-wrap .cvf-home-parc-cta { font-weight: 700; color: var(--cvf-accent, #e8913a); }

/* v11.86.92 — Accueil v2 · Module « À faire pour vous » */
.cv-vault-wrap .cvf-home-todo-count {
    display: inline-flex; align-items: center; justify-content: center;
    min-width: 22px; height: 22px; padding: 0 7px; border-radius: 999px;
    background: var(--cvf-accent, #e8913a); color: #fff; font-size: 12px; font-weight: 800;
}
.cv-vault-wrap .cvf-home-todo-list { display: flex; flex-direction: column; gap: 8px; }
.cv-vault-wrap .cvf-home-todo-item {
    display: flex; align-items: center; gap: 12px;
    border: 1px solid var(--cvf-border, #e8edf3); border-radius: 12px;
    padding: 12px 14px; background: var(--cvf-bg, #f8fafc);
    cursor: pointer; transition: border-color .15s, box-shadow .15s, transform .15s;
}
.cv-vault-wrap .cvf-home-todo-item:hover,
.cv-vault-wrap .cvf-home-todo-item:focus-visible {
    border-color: var(--cvf-primary, #1e3a5f);
    box-shadow: 0 6px 18px rgba(30,58,95,.12); transform: translateY(-2px); outline: none;
}
.cv-vault-wrap .cvf-home-todo-icon { display: inline-flex; color: var(--cvf-primary, #1e3a5f); flex-shrink: 0; }
.cv-vault-wrap .cvf-home-todo-body { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.cv-vault-wrap .cvf-home-todo-name { font-size: 14px; font-weight: 650; color: var(--cvf-text, #1e293b); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cv-vault-wrap .cvf-home-todo-sub { font-size: 12px; color: var(--cvf-text-muted, #64748b); }
.cv-vault-wrap .cvf-home-todo-badge { font-size: 11px; font-weight: 700; padding: 3px 9px; border-radius: 999px; white-space: nowrap; }
.cv-vault-wrap .cvf-home-todo-badge.is-overdue { background: rgba(220,38,38,.12); color: #dc2626; }
.cv-vault-wrap .cvf-home-todo-badge.is-urgent  { background: rgba(234,88,12,.14); color: #ea580c; }
.cv-vault-wrap .cvf-home-todo-badge.is-soon    { background: rgba(232,145,58,.14); color: var(--cvf-accent, #e8913a); }
.cv-vault-wrap .cvf-home-todo-cta { font-weight: 700; font-size: 13px; color: var(--cvf-accent, #e8913a); white-space: nowrap; }

/* ═══════════════════════════════════════════════════════════════════════
   v11.86.93 — Accueil v2 · Stats du header COMPACTES + intitulé « Aperçu »
   ═══════════════════════════════════════════════════════════════════════ */
/* v11.86.99 — Header RESTAURÉ à l'original : overrides « stats compactes » retirés. */

/* Intitulé de section secondaire : sépare les modules d'action des blocs-résumé */
.cv-vault-wrap .cvf-home-overview-hdr {
    display: flex; align-items: center; gap: 12px;
    margin: 6px 0 16px;
}
.cv-vault-wrap .cvf-home-overview-line {
    flex: 1; height: 1px; background: var(--cvf-border, #e8edf3);
}
.cv-vault-wrap .cvf-home-overview-label {
    font-size: 12px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase;
    color: var(--cvf-text-muted, #94a3b8); white-space: nowrap;
}

/* ═══════════════════════════════════════════════════════════════════════
   v11.86.94 — Accueil v2 · Stats en PUCES BLANCHES sous le hero (prototype)
   + finition des modules orientés action (bordure À faire, badge compteur)
   ═══════════════════════════════════════════════════════════════════════ */
/* v11.86.99 — bloc « puces blanches » retiré : stats remises telles quelles dans le header. */

/* Module « À faire » : bordure d'accent (prototype .module.todo) */
.cv-vault-wrap .cvf-home-todo { border: 2px solid var(--cvf-primary, #1e3a5f); }

/* Badge compteur « Mes parcours » dans l'en-tête (prototype .badge.muted) */
.cv-vault-wrap .cvf-home-module-count {
    font-size: 11.5px; font-weight: 700; padding: 2px 8px; border-radius: 8px;
    color: var(--cvf-text-muted, #64748b); background: #eef1f5;
}

/* ═══════════════════════════════════════════════════════════════════════
   v11.86.95 — Accueil v2 · PASSE PREMIUM (profondeur, hiérarchie, couleur)
   Objectif : sortir du « tout blanc plat ». Médaillons d'icônes colorés,
   CTA en boutons pleins, identité couleur par parcours, puces colorées.
   ═══════════════════════════════════════════════════════════════════════ */

/* — Profondeur & rythme des modules — */
.cv-vault-wrap .cvf-home-module {
    box-shadow: 0 4px 18px rgba(15,23,42,.05);
    padding: 18px 20px 20px;
}
.cv-vault-wrap .cvf-home-module-hdr { margin-bottom: 16px; gap: 11px; }

/* — Médaillon d'icône d'en-tête (carré arrondi teinté) — */
.cv-vault-wrap .cvf-home-module-icon {
    width: 36px; height: 36px; border-radius: 11px;
    display: inline-flex; align-items: center; justify-content: center;
    background: rgba(30,58,95,.09); color: var(--cvf-primary, #1e3a5f);
    flex: 0 0 auto;
}
.cv-vault-wrap .cvf-home-module-icon svg { width: 19px; height: 19px; }
.cv-vault-wrap .cvf-home-todo .cvf-home-module-icon { background: rgba(232,145,58,.15); color: var(--cvf-accent, #e8913a); }

/* — Module « À faire » : carte d'accent (bordure + léger fond chaud en tête) — */
.cv-vault-wrap .cvf-home-todo { border: 2px solid var(--cvf-primary, #1e3a5f); box-shadow: 0 6px 22px rgba(30,58,95,.10); }

/* Lignes À faire : médaillon d'icône + CTA bouton plein accent */
.cv-vault-wrap .cvf-home-todo-item { padding: 12px 14px; gap: 13px; background: var(--cvf-bg, #f8fafc); }
.cv-vault-wrap .cvf-home-todo-icon {
    width: 36px; height: 36px; border-radius: 11px;
    display: inline-flex; align-items: center; justify-content: center;
    background: rgba(232,145,58,.13); color: var(--cvf-accent, #e8913a);
}
.cv-vault-wrap .cvf-home-todo-cta {
    background: var(--cvf-accent, #e8913a); color: #3b2410;
    padding: 8px 15px; border-radius: 10px; font-weight: 800;
    box-shadow: 0 2px 8px rgba(232,145,58,.28);
}

/* — Module « Mes parcours » : sous-cartes définies, couleur propre, CTA bouton — */
.cv-vault-wrap .cvf-home-parcours-list { gap: 11px; }
.cv-vault-wrap .cvf-home-parc-card {
    background: var(--cvf-card, #fff);
    border: 1px solid var(--cvf-border, #e8edf3);
    box-shadow: 0 1px 5px rgba(15,23,42,.04);
    padding: 14px 16px;
}
.cv-vault-wrap .cvf-home-parc-card:hover,
.cv-vault-wrap .cvf-home-parc-card:focus-visible {
    box-shadow: 0 10px 26px rgba(30,58,95,.13);
}
.cv-vault-wrap .cvf-home-parc-top { gap: 9px; margin-bottom: 11px; }
.cv-vault-wrap .cvf-home-parc-dot { width: 9px; height: 9px; border-radius: 50%; flex: 0 0 auto; box-shadow: 0 0 0 3px rgba(30,58,95,.06); }
.cv-vault-wrap .cvf-home-parc-name { font-weight: 700; font-size: 14.5px; }
.cv-vault-wrap .cvf-home-parc-bar { height: 8px; }
.cv-vault-wrap .cvf-home-parc-meta { gap: 12px; margin-top: 10px; align-items: center; }
.cv-vault-wrap .cvf-home-parc-pct { font-size: 13px; font-weight: 800; color: var(--cvf-text, #1f2937); }
.cv-vault-wrap .cvf-home-parc-cta {
    background: var(--cvf-primary, #1e3a5f); color: #fff;
    padding: 7px 15px; border-radius: 10px; font-weight: 700;
    box-shadow: 0 2px 8px rgba(30,58,95,.22);
}
.cv-vault-wrap .cvf-home-parc-card .cvf-home-parc-badge.is-done ~ .cvf-home-parc-meta .cvf-home-parc-cta,
.cv-vault-wrap .cvf-home-parc-card:has(.is-done) .cvf-home-parc-cta { background: #eef1f5; color: var(--cvf-text-muted, #64748b); box-shadow: none; }

/* — Lien « Tout voir » : plus présent — */
.cv-vault-wrap .cvf-home-module-link { color: var(--cvf-primary, #1e3a5f); }

/* v11.86.99 — Overrides du header (95b/97/98 : puces, bouclier, tuiles KPI) retirés.
   Le header reprend EXACTEMENT son rendu d'origine (stats glass + logo bouclier). */

/* ═══════════════════════════════════════════════════════════════════════
   v11.86.100 — Batch accueil (#2,#3,#7) — header coffre INCHANGÉ
   ═══════════════════════════════════════════════════════════════════════ */
/* #2 — compteur collé au titre du module ; « Tout voir » reste à droite */
.cv-vault-wrap .cvf-home-module-title { flex: 0 1 auto; }
.cv-vault-wrap .cvf-home-module-count,
.cv-vault-wrap .cvf-home-todo-count { margin-left: 2px; }
.cv-vault-wrap .cvf-home-module-link { margin-left: auto; }
/* #3 — bordure « À faire » adoucie + couleur du THÈME sélectionné (--cvf-primary) */
.cv-vault-wrap .cvf-home-todo {
    border: 1.5px solid var(--cvf-primary, #1e3a5f);
    border-color: color-mix(in srgb, var(--cvf-primary, #1e3a5f) 38%, #ffffff);
    box-shadow: 0 4px 18px rgba(15,23,42,.05);
}
/* #7 — barre d'onglets rapprochée du header */
.cv-vault-wrap .cv-vault-header { margin-bottom: 14px !important; }
.cv-vault-wrap .cv-tabs { margin-top: 0; }

/* v11.86.100 — Batch #6 · Module « Nouveautés récentes » */
.cv-vault-wrap .cvf-home-news .cvf-home-module-icon { background: rgba(232,145,58,.14); color: var(--cvf-accent, #e8913a); }
.cv-vault-wrap .cvf-home-msg-filters { margin-left: auto; display: inline-flex; gap: 4px; }
/* v20.21.79 — filtres « Derniers messages » : coins modérément arrondis (PAS un cercle/pilule),
   et 3 boutons STRICTEMENT cohérents (même hauteur, même padding, même rayon). Dragan : « pas en cercle ». */
.cv-vault-wrap .cvf-home-msg-filter { font: inherit; font-size: 12px; line-height: 1; padding: 6px 12px; border: 1px solid var(--cvf-border, #e8edf3); background: #fff; color: var(--cvf-text-muted, #64748b); border-radius: 8px; cursor: pointer; transition: all .12s; box-sizing: border-box; display: inline-flex; align-items: center; justify-content: center; }
.cv-vault-wrap .cvf-home-msg-filter:hover { border-color: var(--cvf-primary, #1e3a5f); color: var(--cvf-primary, #1e3a5f); }
.cv-vault-wrap .cvf-home-msg-filter.active { background: var(--cvf-primary, #1e3a5f); border-color: var(--cvf-primary, #1e3a5f); color: #fff; }
.cv-vault-wrap .cvf-home-messages .cvf-home-news-ico .dashicons { color: var(--cvf-primary, #1e3a5f); }
/* v20.21.18 — code couleur « messagerie » (navy) du bloc Derniers messages + état vide */
.cv-vault-wrap .cvf-home-messages .cvf-home-news-ico { background: rgba(30,58,95,.10); }
.cv-vault-wrap .cvf-home-messages .cvf-home-module-count { background: #1e3a5f; color: #fff; }
.cv-vault-wrap .cvf-home-msg-empty { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 6px; padding: 26px 14px; color: #94a3b8; text-align: center; }
.cv-vault-wrap .cvf-home-msg-empty .dashicons { font-size: 26px; width: 26px; height: 26px; color: #cbd5e1; }
.cv-vault-wrap .cvf-home-msg-empty p { margin: 0; font-size: 13px; }
.cv-vault-wrap .cvf-home-news-list { display: flex; flex-direction: column; gap: 2px; }
.cv-vault-wrap .cvf-home-news-item { display: flex; align-items: center; gap: 12px; padding: 10px 6px; border-top: 1px solid var(--cvf-border, #e8edf3); cursor: pointer; border-radius: 8px; transition: background .12s; }
.cv-vault-wrap .cvf-home-news-item:first-child { border-top: 0; }
.cv-vault-wrap .cvf-home-news-item:hover { background: var(--cvf-bg, #f8fafc); }
.cv-vault-wrap .cvf-home-news-icon { display: inline-flex; color: var(--cvf-primary, #1e3a5f); flex: 0 0 auto; }
.cv-vault-wrap .cvf-home-news-icon .dashicons { font-size: 17px; width: 17px; height: 17px; }
.cv-vault-wrap .cvf-home-news-body { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 1px; }
.cv-vault-wrap .cvf-home-news-name { font-size: 13.5px; font-weight: 600; color: var(--cvf-text, #1f2937); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cv-vault-wrap .cvf-home-news-date { font-size: 12px; color: var(--cvf-text-hint, #94a3b8); }

/* ===== v11.86.286 — Nouveautés récentes : design enrichi + couleur par type ===== */
.cv-vault-wrap .cvf-home-news-list { gap: 8px; }
.cv-vault-wrap .cvf-home-news-item {
    gap: 13px; padding: 11px 12px; border-top: 0; border-radius: 13px;
    border: 1px solid var(--cvf-border, #eef1f5); background: var(--cvf-card, #fff);
    position: relative; overflow: hidden; transition: border-color .14s, box-shadow .14s, transform .08s, background .14s;
}
.cv-vault-wrap .cvf-home-news-item::before {
    content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 3px;
    background: var(--cvn-accent, #2563eb); opacity: 0; transition: opacity .14s;
}
.cv-vault-wrap .cvf-home-news-item:hover {
    background: var(--cvf-card, #fff); border-color: var(--cvn-accent, #2563eb);
    box-shadow: 0 6px 18px rgba(15,23,42,.08); transform: translateY(-1px);
}
.cv-vault-wrap .cvf-home-news-item:hover::before { opacity: 1; }
.cv-vault-wrap .cvf-home-news-item:hover .cvf-home-news-chev { opacity: 1; transform: translateX(0); color: var(--cvn-accent, #2563eb); }
/* Médaillon coloré par type */
.cv-vault-wrap .cvf-home-news-ico {
    flex: 0 0 auto; width: 40px; height: 40px; border-radius: 11px;
    display: inline-flex; align-items: center; justify-content: center;
    background: var(--cvn-soft, #e8f0fe); color: var(--cvn-accent, #2563eb);
}
.cv-vault-wrap .cvf-home-news-ico .dashicons { font-size: 20px; width: 20px; height: 20px; }
.cv-vault-wrap .cvf-home-news-name { font-size: 14px; font-weight: 650; }
/* Ligne méta : badge type + auteur + heure */
.cv-vault-wrap .cvf-home-news-meta { display: flex; align-items: center; gap: 7px; margin-top: 3px; flex-wrap: wrap; }
.cv-vault-wrap .cvf-home-news-badge {
    font-size: 10.5px; font-weight: 700; letter-spacing: .02em; text-transform: uppercase;
    padding: 2px 8px; border-radius: 999px; line-height: 1.4;
    background: var(--cvn-soft, #e8f0fe); color: var(--cvn-accent, #2563eb);
}
.cv-vault-wrap .cvf-home-news-author { font-size: 12px; font-weight: 600; color: var(--cvf-text-secondary, #64748b); }
.cv-vault-wrap .cvf-home-news-dot { color: var(--cvf-text-hint, #cbd5e1); font-size: 12px; }
.cv-vault-wrap .cvf-home-news-date { font-size: 12px; color: var(--cvf-text-hint, #94a3b8); }
.cv-vault-wrap .cvf-home-news-chev {
    flex: 0 0 auto; align-self: center; font-size: 18px; width: 18px; height: 18px;
    color: var(--cvf-text-hint, #cbd5e1); opacity: 0; transform: translateX(-4px); transition: all .14s;
}
/* Couleur par type (médaillon + badge + accent) */
.cv-vault-wrap .cvf-home-news-item[data-type="file"]  { --cvn-accent:#2563eb; --cvn-soft:#e8f0fe; }
.cv-vault-wrap .cvf-home-news-item[data-type="embed"] { --cvn-accent:#7c3aed; --cvn-soft:#f1ebfc; }
.cv-vault-wrap .cvf-home-news-item[data-type="card"]  { --cvn-accent:#0e9f6e; --cvn-soft:#e3f6ee; }
.cv-vault-wrap .cvf-home-news-item[data-type="link"]  { --cvn-accent:#4f46e5; --cvn-soft:#eaeafc; }
.cv-vault-wrap .cvf-home-news-item[data-type="note"]  { --cvn-accent:#d97706; --cvn-soft:#fdf0dc; }

/* ═══════════════════════════════════════════════════════════════════════════
   v11.86.104 — Accueil : finitions des 3 modules d'action intégrés à la grille
   déplaçable (header sobre, compteurs/puces unifiés en cercle, bouton discret).
   ═══════════════════════════════════════════════════════════════════════════ */
/* Le bloc ne gère plus le padding vertical : le header (haut) et le body (bas)
   s'en chargent → top/bottom symétriques et aérés. */
.cv-vault-wrap .cvf-home-module { padding-top: 0 !important; padding-bottom: 0 !important; margin-bottom: 0 !important; /* v11.86.106 — pas de marge : seul le gap flex (20px) gère l'espacement */ }
/* Plus de médaillon-icône : header = poignée + titre, aligné à gauche comme les 6 blocs. */
.cv-vault-wrap .cvf-home-module .cvf-home-module-icon { display: none !important; }
/* Header sobre : aucun fond, fine barre très douce, respiration généreuse. */
.cv-vault-wrap .cvf-home-module .cvf-home-module-hdr {
    display: flex !important;
    align-items: center !important;
    gap: 9px !important;
    padding: 18px 16px 16px 0 !important; /* padding-left:0 → titre + poignée alignés à gauche */
    margin: 0 !important;
    background: transparent !important;
    border-bottom: 1px solid rgba(15, 23, 42, .05) !important;
}
/* To-do : on CONSERVE sa bordure d'accent au thème (rule v11.86.100 #3) — préférée par Dragan. */
.cv-vault-wrap .cvf-home-module .cvf-home-module-hdr .cli-drag-handle { color: var(--cvf-text-hint, #b4bdc9); display: inline-flex; flex: 0 0 auto; cursor: grab; }
.cv-vault-wrap .cvf-home-module .cvf-home-module-title { margin: 0 !important; padding: 0 !important; line-height: 1 !important; display: inline-flex; align-items: center; }
.cv-vault-wrap .cvf-home-module .cvf-home-module-link { margin-left: auto; align-self: center; }
/* Body aéré (haut + bas), léger inset horizontal pour ne pas coller aux bords. */
.cv-vault-wrap .cvf-home-module .cvf-home-todo-list,
.cv-vault-wrap .cvf-home-module .cvf-home-news-list,
.cv-vault-wrap .cvf-home-module .cvf-home-parcours-list { padding: 16px 2px 18px !important; }
/* Compteurs de module unifiés : cercle 20px, glyphe parfaitement centré. */
.cv-vault-wrap .cvf-home-todo-count,
.cv-vault-wrap .cvf-home-module-count {
    width: 20px; min-width: 20px; height: 20px; padding: 0;
    border-radius: 999px;
    display: inline-flex; align-items: center; justify-content: center;
    line-height: 1; font-size: 11px; font-weight: 700; text-align: center;
}
/* Bouton « Fournir » discret (la carte entière est cliquable). */
.cv-vault-wrap .cvf-home-todo .cvf-home-todo-cta {
    background: transparent !important;
    color: var(--cvf-primary, #1e3a5f) !important;
    border: 1.5px solid color-mix(in srgb, var(--cvf-primary, #1e3a5f) 26%, #fff) !important;
    box-shadow: none !important;
    font-weight: 600 !important;
    border-radius: 8px !important;
    padding: 6px 14px !important;
}
.cv-vault-wrap .cvf-home-todo .cvf-home-todo-cta:hover { background: color-mix(in srgb, var(--cvf-primary, #1e3a5f) 8%, #fff) !important; }

/* ── Puces de notification unifiées en cercle (onglets + bouton flottant) ── */
.cv-vault-wrap .cv-tabs .cv-tab-count {
    border-radius: 999px !important;
    min-width: 18px; height: 18px; padding: 0 5px;
    display: inline-flex; align-items: center; justify-content: center;
    line-height: 1; font-size: 11px; box-sizing: border-box;
}
.cv-act-fab-badge {
    border-radius: 999px !important;
    width: 22px; min-width: 22px; height: 22px; padding: 0 !important;
    font-size: 10.5px; font-weight: 700; line-height: 1;
    display: flex !important; align-items: center; justify-content: center;
}

/* v11.86.108 — Anti-décalage horizontal : réserver la gouttière de la scrollbar fenêtre, sinon
   la page se recentre/décale quand un onglet plus court fait disparaître la barre de défilement.
   (frontend.css n'est chargé que sur la page coffre → n'affecte pas le reste du site.) */
html { scrollbar-gutter: stable; }

/* v11.86.116 — Visibilité « soft » des blocs d'accueil pilotée en JS (choix client / défaut admin).
   Le masquage « dur » par menu caché reste géré séparément (CSS !important serveur). */
.cli-block.cv-home-soft-hidden { display: none !important; }
/* Note discrète « Enregistrement automatique » sous les cartes de réglages */
.cv-autosave-note { font-style: italic; opacity: .75; }

/* ===== v11.86.155 — Validation de devis (front) ===== */
.cv-devis-block { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin: 8px 0 2px; }
.cv-devis-badge { display: inline-flex; align-items: center; gap: 5px; font-size: 12px; font-weight: 700; padding: 3px 10px; border-radius: 999px; line-height: 1.5; }
.cv-devis-badge .dashicons { font-size: 15px; width: 15px; height: 15px; }
.cv-devis-badge-wait { background: #fef3c7; color: #b45309; border: 1px solid #fcd34d; }
.cv-devis-badge-ok { background: #dcfce7; color: #15803d; border: 1px solid #86efac; }
.cv-devis-signed-tag { display: inline-flex; align-items: center; gap: 5px; font-size: 12px; font-weight: 600; color: var(--cvf-text-soft, #64748b); }
.cv-devis-signed-tag .dashicons { font-size: 15px; width: 15px; height: 15px; }
/* CTA « Valider le devis » — bouton premium, charte front (jamais violet plaqué). */
.cv-devis-validate-btn { display: inline-flex; align-items: center; gap: 6px; background: var(--cvf-primary, #1e3a5f); color: #fff; border: none; border-radius: 9px; padding: 7px 14px; font-size: 13px; font-weight: 700; cursor: pointer; transition: filter .15s ease, transform .1s ease; }
.cv-devis-validate-btn:hover { filter: brightness(1.08); }
.cv-devis-validate-btn:active { transform: translateY(1px); }
.cv-devis-validate-btn .dashicons { font-size: 16px; width: 16px; height: 16px; }
.cv-devis-upload-signed { display: inline-flex; align-items: center; gap: 5px; background: transparent; color: var(--cvf-primary, #1e3a5f); border: 1px solid var(--cvf-border, #d8dee6); border-radius: 9px; padding: 6px 12px; font-size: 12.5px; font-weight: 600; cursor: pointer; }
.cv-devis-upload-signed:hover { background: rgba(0,0,0,.03); }
.cv-devis-upload-signed .dashicons { font-size: 15px; width: 15px; height: 15px; }
/* Tuile grille : le bloc devis s'étale et reste lisible. */
.cv-doc-tile .cv-devis-block { justify-content: center; }

/* v11.86.184 — Bouton de validation pop-up (« J'accepte le devis ») : surbrillance VERTE = réussite au survol, retour visuel positif. */
.cv-preview-guard-validate-btn { transition: background .15s ease, box-shadow .15s ease, transform .12s ease; }
.cv-preview-guard-validate-btn:hover:not(:disabled) { background: var(--cvf-success, #27ae60) !important; box-shadow: 0 8px 22px rgba(39,174,96,.32) !important; }
#cv-front-guard-validate-foot:hover:not(:disabled) { transform: translateY(-2px); }
.cv-preview-guard-validate-btn:disabled { opacity: .5; cursor: not-allowed; box-shadow: none !important; }

/* ===== v11.86.250 — Bloc-notes : composer privé/partagé + pastilles + discussion ===== */
.cv-note-composer #cv-form-notepad{display:block;width:100%;}
.cv-note-composer .cv-note-field{width:100%;box-sizing:border-box;resize:vertical;min-height:46px;border:1px solid var(--cvf-border,#e1e5eb);border-radius:10px;padding:10px 12px;font-size:14px;font-family:inherit;}
.cv-note-composer-foot{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:8px;}
.cv-note-vis{display:inline-flex;border:1px solid var(--cvf-border,#e1e5eb);border-radius:9px;overflow:hidden;}
.cv-note-vis-btn{display:inline-flex;align-items:center;gap:6px;padding:7px 13px;border:none;background:transparent;color:var(--cvf-text-secondary,#475569);font-size:13px;font-weight:600;cursor:pointer;}
.cv-note-vis-btn + .cv-note-vis-btn{border-left:1px solid var(--cvf-border,#eef1f5);}
.cv-note-vis-btn .dashicons{font-size:16px;width:16px;height:16px;}
.cv-note-vis-btn.is-active{background:var(--cvf-primary,#1e3a5f);color:#fff;}
.cv-note-composer .cv-note-send-btn{margin-left:auto;background:var(--cvf-primary,#1e3a5f);color:#fff;border:none;border-radius:9px;padding:9px 18px;font-size:13px;font-weight:600;cursor:pointer;}
.cv-note-vis-hint{display:flex;align-items:center;gap:6px;margin:8px 0 0;font-size:12.5px;color:var(--cvf-text-muted,#64748b);}
.cv-note-vis-hint .dashicons{font-size:15px;width:15px;height:15px;}
.cv-note-vis-pill{display:inline-flex;align-items:center;gap:4px;margin-left:8px;padding:2px 9px;border-radius:999px;font-size:11px;font-weight:600;vertical-align:middle;}
.cv-note-vis-pill .dashicons{font-size:13px;width:13px;height:13px;}
.cv-note-vis-pill--private{background:var(--cvf-bg-alt,#f1f5f9);color:var(--cvf-text-secondary,#475569);}
.cv-note-vis-pill--shared{background:#eef2f7;color:var(--cvf-primary,#1e3a5f);}
.cv-note-discuss{display:inline-flex;align-items:center;gap:6px;margin-top:10px;background:transparent;border:1px solid var(--cvf-border,#e1e5eb);border-radius:8px;padding:6px 12px;font-size:12.5px;font-weight:600;color:var(--cvf-text-secondary,#475569);cursor:pointer;}
.cv-note-discuss:hover{border-color:var(--cvf-primary,#1e3a5f);color:var(--cvf-primary,#1e3a5f);}
.cv-note-discuss .dashicons{font-size:15px;width:15px;height:15px;}
.cv-note-discuss-count{background:var(--cvf-primary,#1e3a5f);color:#fff;border-radius:999px;min-width:16px;height:16px;display:inline-flex;align-items:center;justify-content:center;font-size:10px;padding:0 4px;}
.cv-notepad-msg .cv-comments-panel{margin-top:10px;}

/* ===== v11.86.251 — Bloc-notes : composer proéminent + période sans débordement + aperçu note ===== */
.cv-note-composer{background:#eef2f7;border:1px solid var(--cvf-primary,#1e3a5f);border-left:5px solid var(--cvf-primary,#1e3a5f);border-radius:14px;padding:16px 18px;margin:6px 0 20px;}
.cv-note-composer-title{display:flex;align-items:center;gap:7px;font-size:15px;font-weight:700;color:var(--cvf-primary,#1e3a5f);margin-bottom:10px;}
.cv-note-composer-title .dashicons{font-size:18px;width:18px;height:18px;}
.cv-note-composer .cv-note-field{background:#fff;border:1px solid var(--cvf-border,#cbd5e1);}
.cv-note-composer .cv-note-send-btn{padding:10px 24px;font-size:14px;box-shadow:0 2px 6px rgba(15,23,42,.12);}
.cv-note-composer .cv-note-send-btn:hover{filter:brightness(1.06);}
/* Période : ne déborde plus de la popover (retour à la ligne) */
.cv-amf-popover .cvf-period-pills,.cv-mbar-period,.cv-notepad-mbar .cvf-period-pills{flex-wrap:wrap !important;}
.cv-amf-popover .cv-mbar-dates,.cv-notepad-mbar .cv-mbar-dates{flex-wrap:wrap;}
/* Aperçu d'une note dans la pop-up partagée (à gauche) */
.cv-note-preview{padding:28px 30px;max-width:680px;margin:0 auto;}
.cv-note-preview-meta{display:flex;align-items:center;gap:10px;margin-bottom:14px;color:var(--cvf-text-muted,#64748b);font-size:12.5px;}
.cv-note-preview-text{font-size:16px;line-height:1.7;color:var(--cvf-text-dark,#1e293b);white-space:pre-wrap;word-break:break-word;}

/* v11.86.270 — Fiche / Lien : carte MODERNE — médaillon + grand titre + description,
   barre de séparation, puis CTA pleine largeur en bas (+ domaine en légende discrète). */
.cv-clv-preview{ width: 100%; max-width: 660px; margin: 0 auto; box-sizing: border-box; background: var(--cvf-card, #fff); border: 1px solid var(--cvf-border, #e8ecf0); border-radius: 20px; box-shadow: 0 22px 55px rgba(15,23,42,.16); display: flex; flex-direction: column; text-align: center; overflow: hidden; }
.cv-clv-preview .cv-clv-content{ flex: 0 0 auto; padding: 38px 44px 20px; }
.cv-clv-preview .cv-clv-ico{ width: 46px; height: 46px; border-radius: 13px; display: flex; align-items: center; justify-content: center; margin: 0 auto 10px; background: var(--clv-accent, #2563eb); color: #fff; box-shadow: 0 8px 20px rgba(15,23,42,.20); }
.cv-clv-preview .cv-clv-ico .dashicons{ font-size: 24px; width: 24px; height: 24px; color: #fff; }
.cv-clv-preview .cv-clv-h{ font-size: 22px; font-weight: 700; line-height: 1.25; letter-spacing: -.015em; color: var(--cvf-text-dark, #1e293b); margin: 0 0 7px; word-break: break-word; }
.cv-clv-preview .cv-clv-body{ font-size: 17px; line-height: 1.7; color: var(--cvf-text, #334155); word-break: break-word; max-width: 480px; margin: 0 auto !important; text-align: center; }
.cv-clv-preview .cv-clv-body p{ margin: 0 0 12px; }
.cv-clv-preview .cv-clv-body p:last-child{ margin-bottom: 0; }
.cv-clv-preview .cv-clv-desc{ font-size: 17px; line-height: 1.7; color: var(--cvf-text, #475569); margin: 0 auto !important; max-width: 480px; text-align: center; }
.cv-clv-preview .cv-clv-tags{ margin-top: 16px; display: flex; flex-wrap: wrap; gap: 6px; justify-content: center; }
.cv-clv-preview .cv-clv-tags:empty{ display: none; }
/* Barre de séparation + zone d'action en bas : CTA pleine largeur, domaine en légende. */
.cv-clv-preview .cv-clv-foot{ border-top: 1px solid var(--cvf-border, #eef1f5); padding: 20px 130px 34px; display: flex; flex-direction: column; gap: 11px; }
.cv-clv-preview .cv-clv-openlink{ display: flex; align-items: center; justify-content: center; gap: 11px; width: 100%; background: var(--clv-accent, #2563eb); color: #fff !important; font-weight: 700; font-size: 18px; padding: 16px 28px; border-radius: 12px; text-decoration: none; box-shadow: 0 12px 28px rgba(15,23,42,.22); transition: transform .08s, filter .15s; }
.cv-clv-preview .cv-clv-openlink .dashicons{ color: #fff !important; font-size: 21px; width: 21px; height: 21px; }
.cv-clv-preview .cv-clv-openlink:hover{ filter: brightness(1.07); color: #fff !important; }
.cv-clv-preview .cv-clv-openlink:active{ transform: translateY(1px); }
.cv-clv-preview .cv-clv-host{ display: inline-flex; align-items: center; justify-content: center; gap: 6px; font-size: 13px; color: var(--cvf-text-muted, #94a3b8); word-break: break-all; }
.cv-clv-preview .cv-clv-host .dashicons{ font-size: 14px; width: 14px; height: 14px; opacity: .8; }
.cv-clv-preview .cv-clv-meta{ font-size: 12.5px; color: var(--cvf-text-muted, #64748b); }

/* v11.86.287 — Variante NOTE (bloc-notes) : même carte premium que Fiche/Lien, accent ambré.
   Pas de CTA dans le pied → padding normal + méta centrée (pastille visibilité + heure). */
.cv-clv-preview.cv-clv-preview-notepad .cv-clv-foot{ padding: 16px 40px 26px; flex-direction: row; flex-wrap: wrap; justify-content: center; align-items: center; gap: 10px; }
.cv-clv-preview.cv-clv-preview-notepad .cv-clv-meta{ margin-top: 0; padding-top: 0; border-top: 0; display: inline-flex; align-items: center; gap: 10px; flex-wrap: wrap; justify-content: center; }
.cv-clv-preview.cv-clv-preview-notepad .cv-clv-note-time{ display: inline-flex; align-items: center; gap: 5px; color: var(--cvf-text-muted, #94a3b8); }
.cv-clv-preview.cv-clv-preview-notepad .cv-clv-note-time .dashicons{ font-size: 14px; width: 14px; height: 14px; opacity: .8; }
/* La pastille de visibilité reste lisible dans le pied centré. */
.cv-clv-preview.cv-clv-preview-notepad .cv-clv-meta .cv-note-vis-pill{ display: inline-flex; }

/* ===== v11.86.251 — Bloc-notes : dropdown multi-dossiers du composer ===== */
.cv-note-msel{position:relative;}
.cv-note-msel-toggle{display:inline-flex;align-items:center;gap:6px;height:38px;padding:0 12px;border:1px solid var(--cvf-border,#cbd5e1);background:#fff;border-radius:9px;color:var(--cvf-text-secondary,#475569);font-size:13px;font-weight:600;cursor:pointer;}
.cv-note-msel-toggle .dashicons{font-size:16px;width:16px;height:16px;}
.cv-note-msel-toggle:hover{border-color:var(--cvf-primary,#1e3a5f);}
.cv-note-msel-panel{position:absolute;z-index:30;top:calc(100% + 5px);left:0;min-width:220px;max-height:200px;overflow:auto;background:#fff;border:1px solid var(--cvf-border,#cbd5e1);border-radius:10px;box-shadow:0 14px 34px rgba(15,23,42,.16);padding:6px;display:flex;flex-direction:column;gap:2px;}
.cv-note-msel-panel[hidden]{display:none;}
.cv-note-msel-opt{display:flex;align-items:center;gap:8px;padding:7px 9px;border-radius:7px;font-size:13px;color:var(--cvf-text-secondary,#475569);cursor:pointer;}
.cv-note-msel-opt:hover{background:var(--cvf-bg-alt,#f1f5f9);}

/* ===== v11.86.252 — Bloc-notes : composer impactant + cartes bordées (liste) + respiration grille ===== */
/* Zone de saisie mise en avant : bande tintée + champ blanc focal (style SaaS moderne) */
.cv-vault-wrap .cv-note-composer{background:#eef2f7;border:1px solid #d6deea;border-left:1px solid #d6deea;border-radius:16px;padding:16px;margin:6px 0 24px;box-shadow:0 2px 10px rgba(15,23,42,.06);}
.cv-vault-wrap .cv-note-composer .cv-note-field{background:#fff;border:1px solid #cbd5e1;border-radius:12px;padding:12px 14px;min-height:56px;font-size:15px;line-height:1.6;box-shadow:0 1px 2px rgba(15,23,42,.04);transition:border-color .15s,box-shadow .15s;}
.cv-vault-wrap .cv-note-composer .cv-note-field:focus{outline:none;border-color:var(--cvf-primary,#1e3a5f);box-shadow:0 0 0 3px rgba(30,58,95,.14);}
.cv-vault-wrap .cv-note-composer-foot{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:12px;}
.cv-vault-wrap .cv-note-composer .cv-note-send-btn{margin-left:auto;padding:10px 26px;font-size:14px;border-radius:10px;box-shadow:0 2px 6px rgba(15,23,42,.14);}
/* Notes en LISTE : carte bordée (même style qu'en grille) */
.cv-vault-wrap .cv-notepad-messages:not(.cv-clview-grid) .cv-note-msg{border:1px solid var(--cvf-border,#e8ecf0);border-radius:12px;background:var(--cvf-card,#fff);padding:14px 16px;margin-bottom:12px;box-shadow:0 1px 3px rgba(15,23,42,.05);}
.cv-vault-wrap .cv-notepad-messages:not(.cv-clview-grid) .cv-note-msg:last-child{margin-bottom:0;}
/* Grille : respiration sous la grille + bas de carte */
.cv-vault-wrap .cv-notepad-messages.cv-clview-grid{margin-bottom:20px;}
.cv-vault-wrap .cv-notepad-messages.cv-clview-grid .cv-notepad-msg{padding-bottom:16px;}

/* ===== v11.86.253 — Bloc-notes : alignement composer, carte cliquable, pastilles distinctes ===== */
/* Composer aligné horizontalement avec la barre de filtres et les cartes */
.cv-vault-wrap .cv-note-composer{margin:6px 16px 24px;}
/* Aide privé/partagé : discrète et petite */
.cv-vault-wrap .cv-note-vis-hint{font-size:11.5px;color:var(--cvf-text-muted,#94a3b8);margin-top:7px;}
.cv-vault-wrap .cv-note-vis-hint .dashicons{font-size:13px;width:13px;height:13px;}
/* Pastilles privé/partagé — couleurs nettement distinctes */
.cv-vault-wrap .cv-note-vis-pill--private{background:#f1f5f9;color:#475569;}
.cv-vault-wrap .cv-note-vis-pill--shared{background:#e0f2f1;color:#0f766e;}
/* Notes en liste : plus d'air entre les cartes */
.cv-vault-wrap .cv-notepad-messages:not(.cv-clview-grid) .cv-note-msg{margin-bottom:16px;}
/* Carte de note partagée = cliquable (ouvre la discussion) : indice de survol clair */
.cv-vault-wrap .cv-notepad-msg[data-clickable="1"]{cursor:pointer;transition:border-color .15s,box-shadow .15s,transform .05s;}
.cv-vault-wrap .cv-notepad-msg[data-clickable="1"]:hover{border-color:var(--cvf-primary,#1e3a5f) !important;box-shadow:0 4px 14px rgba(15,23,42,.10) !important;}
.cv-vault-wrap .cv-notepad-msg[data-clickable="1"]:active{transform:translateY(1px);}
/* Indicateur discussion (chat + compteur), non-bouton */
.cv-vault-wrap .cv-note-cc{display:inline-flex;align-items:center;gap:4px;margin-top:8px;color:var(--cvf-text-muted,#64748b);font-size:12px;}
.cv-vault-wrap .cv-note-cc .dashicons{font-size:15px;width:15px;height:15px;}
.cv-vault-wrap .cv-notepad-msg[data-clickable="1"]:hover .cv-note-cc{color:var(--cvf-primary,#1e3a5f);}
.cv-vault-wrap .cv-note-cc-n{background:var(--cvf-primary,#1e3a5f);color:#fff;border-radius:999px;min-width:16px;height:16px;display:inline-flex;align-items:center;justify-content:center;font-size:10px;padding:0 4px;}

/* ===== v11.86.255 — Bloc-notes : période wrap (bat .cv-vault-wrap .cv-mbar .cv-mbar-period nowrap !important) + hint plus discret ===== */
.cv-vault-wrap .cv-mbar .cv-amf-popover .cv-mbar-period,
.cv-vault-wrap .cv-mbar .cv-amf-popover .cvf-period-pills{flex-wrap:wrap !important;}
.cv-vault-wrap .cv-note-vis-hint{font-size:11px !important;color:#9aa6b2 !important;margin-top:6px !important;}
.cv-vault-wrap .cv-note-vis-hint .dashicons{font-size:12px !important;width:12px !important;height:12px !important;}

/* ===== v11.86.255 — Tags en lot (barre de sélection) + bordure dropdown dossiers (filtres) ===== */
.cv-mb-tagwrap { position: relative; }
.cv-mb-tags { position: absolute; bottom: calc(100% + 8px); left: 0; background: #fff; color: #1e293b; border-radius: 10px; box-shadow: 0 14px 44px rgba(15,23,42,.28); padding: 6px; min-width: 210px; max-height: 260px; overflow-y: auto; }
.cv-mb-tags .cv-mb-folders-head { font-weight: 700; font-size: 12px; padding: 6px 8px; color: #475569; }
.cv-mb-tags .cv-mb-folder-optc { display: flex; align-items: center; gap: 8px; padding: 7px 8px; border-radius: 7px; font-size: 13px; cursor: pointer; }
.cv-mb-tags .cv-mb-folder-optc:hover { background: #f1f5f9; }
.cv-mb-tagapply { margin-top: 6px; width: 100%; background: var(--cvf-primary,#1e3a5f); color: #fff; border: none; border-radius: 8px; padding: 8px 10px; font-size: 13px; font-weight: 600; cursor: pointer; }
/* Filtre Dossiers (popover) : bordure visible sur la liste déroulante */
.cv-vault-wrap .cv-notepad-foldfilter .cv-note-msel-toggle { border: 1px solid var(--cvf-border,#cbd5e1) !important; background: #fff; }
.cv-vault-wrap .cv-notepad-foldfilter .cv-note-msel-panel { border: 1px solid var(--cvf-border,#cbd5e1); }

/* ===== v11.86.256 — Menu Tags : barre de filtre moderne (cv-mbar) adaptée aux tags ===== */
.cv-vault-wrap .cv-tags-mbar .cv-mbar-tagseg{display:flex;flex-wrap:wrap;align-items:center;gap:6px;flex:1 1 auto;min-width:0;}
.cv-vault-wrap .cv-tags-mbar .cv-mbar-tagseg .cv-tag-filter-btn{margin:0;}
.cv-vault-wrap .cv-tags-mbar .cv-mbar-search{flex:0 0 220px;max-width:260px;}
@media (max-width:680px){ .cv-vault-wrap .cv-tags-mbar .cv-mbar-search{flex:1 1 100%;max-width:none;} }
/* Flash de mise en évidence quand on arrive sur la gestion des tags */
.cv-vault-wrap .cv-flash-highlight{animation:cvFlashHighlight 1.6s ease;}
@keyframes cvFlashHighlight{0%,100%{box-shadow:0 0 0 0 rgba(30,58,95,0);}30%{box-shadow:0 0 0 3px rgba(30,58,95,.35);}}

/* ===== v11.86.258 — Menu Tags : vue grille + cartes enrichies (commentaires + description) ===== */
/* Entrées liste enrichies */
.cv-vault-wrap .cv-tags-meta-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:3px;}
.cv-vault-wrap .cv-tags-cc{display:inline-flex;align-items:center;gap:3px;font-size:11.5px;color:var(--cvf-text-muted,#64748b);}
.cv-vault-wrap .cv-tags-cc .dashicons{font-size:13px;width:13px;height:13px;}
.cv-vault-wrap .cv-tags-desc{margin-top:4px;font-size:12.5px;color:var(--cvf-text-muted,#64748b);line-height:1.5;overflow:hidden;text-overflow:ellipsis;}
/* Grille de cartes */
.cv-vault-wrap .cv-tags-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px;padding:4px 2px;}
.cv-vault-wrap .cv-tags-card{display:flex;flex-direction:column;border:1px solid var(--cvf-border,#e8ecf0);border-radius:12px;background:var(--cvf-card,#fff);overflow:hidden;cursor:pointer;transition:border-color .15s,box-shadow .15s;}
.cv-vault-wrap .cv-tags-card:hover{border-color:var(--cvf-primary,#1e3a5f);box-shadow:0 4px 14px rgba(15,23,42,.10);}
/* ===== v11.86.260 — Tags : héberge la TUILE DE PRODUCTION (couleurs/icônes/aperçu réels) ===== */
.cv-vault-wrap .cv-tags-card-thumb{height:120px;display:flex;align-items:center;justify-content:center;background:var(--cvf-card,#fff);padding:8px;box-sizing:border-box;}
.cv-vault-wrap .cv-tags-card-thumb .cv-docs-gallery-thumb{border:none;cursor:pointer;margin:0;background:transparent;}
.cv-vault-wrap .cv-tags-card-thumb-media{padding:0;}
.cv-vault-wrap .cv-tags-card-thumb-media .cv-docs-gallery-thumb{width:100%;height:100%;padding:8px;box-sizing:border-box;}
.cv-vault-wrap .cv-tags-card-thumb-media .cv-media-gthumb-pv{width:100%;height:100%;}
.cv-vault-wrap .cv-tags-card-body{padding:11px 13px;display:flex;flex-direction:column;gap:2px;}
.cv-vault-wrap .cv-tags-card-title{font-size:13.5px;font-weight:600;color:var(--cvf-text-dark,#1e293b);line-height:1.35;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;}
/* Pastilles de tags (réutilise les couleurs de tag du front) */
.cv-vault-wrap .cv-tags-chips{display:flex;flex-wrap:wrap;gap:5px;margin-top:7px;}
.cv-vault-wrap .cv-tags-chip{font-size:10.5px;font-weight:600;padding:2px 8px;border-radius:999px;background:var(--cvf-bg-alt,#f1f5f9);color:var(--cvf-text-secondary,#475569);line-height:1.5;}
/* Compteur de résultats */
.cv-vault-wrap .cv-tags-count{font-size:12.5px;color:var(--cvf-text-muted,#64748b);margin:2px 2px 12px;font-weight:600;}

/* ===== v11.86.261 — Onglet Activités : timeline « récit » centrée, animée, très visuelle ===== */
.cv-vault-wrap .cv-activity-tl{max-width:640px;margin:0 auto;padding:4px 0 8px;position:relative;}
/* v11.86.262 — rail continu + remplissage piloté au scroll (style « scroll into view ») */
.cv-vault-wrap .cv-activity-rail{position:absolute;left:18px;top:14px;bottom:24px;width:2px;background:var(--cvf-border,#e8ecf0);border-radius:2px;overflow:hidden;z-index:0;}
.cv-vault-wrap .cv-activity-rail-fill{position:absolute;left:0;top:0;width:100%;height:0;background:linear-gradient(180deg,#2563eb,#6d28d9);}
.cv-vault-wrap .cv-activity-day{text-align:center;margin:20px 0 14px;}
.cv-vault-wrap .cv-activity-group:first-child .cv-activity-day{margin-top:4px;}
.cv-vault-wrap .cv-activity-day-badge{display:inline-block;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--cvf-text-secondary,#475569);background:var(--cvf-bg-alt,#eef2f7);padding:5px 16px;border-radius:999px;}
.cv-vault-wrap .cv-activity-evt{position:relative;display:flex;gap:14px;padding-bottom:16px;}
.cv-vault-wrap .cv-activity-node{flex:0 0 38px;width:38px;height:38px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:var(--evt-tint,#eef2f7);color:var(--evt-color,#1e3a5f);z-index:1;box-shadow:0 0 0 4px var(--cvf-card,#fff);}
.cv-vault-wrap .cv-activity-node .dashicons{font-size:20px;width:20px;height:20px;}
.cv-vault-wrap .cv-activity-bubble{flex:1 1 auto;min-width:0;background:var(--cvf-card,#fff);border:1px solid var(--cvf-border,#e8ecf0);border-left:3px solid var(--evt-color,#1e3a5f);border-radius:12px;padding:12px 16px;transition:box-shadow .15s,transform .06s;}
.cv-vault-wrap .cv-activity-openable{cursor:pointer;}
.cv-vault-wrap .cv-activity-openable:hover .cv-activity-bubble{box-shadow:0 6px 20px rgba(15,23,42,.10);border-color:var(--evt-color,#1e3a5f);}
.cv-vault-wrap .cv-activity-openable:active .cv-activity-bubble{transform:translateY(1px);}
.cv-vault-wrap .cv-activity-line{font-size:15.5px;line-height:1.5;color:var(--cvf-text-dark,#1e293b);}
.cv-vault-wrap .cv-activity-sub{font-size:14px;font-weight:600;color:var(--evt-color,#1e3a5f);margin-top:2px;word-break:break-word;}
.cv-vault-wrap .cv-activity-foot{display:flex;align-items:center;gap:9px;margin-top:9px;font-size:12px;color:var(--cvf-text-muted,#94a3b8);flex-wrap:wrap;}
.cv-vault-wrap .cv-activity-chip{font-size:11px;font-weight:600;padding:2px 9px;border-radius:999px;background:var(--evt-tint,#eef2f7);color:var(--evt-color,#1e3a5f);}
.cv-vault-wrap .cv-activity-by{color:var(--cvf-text-secondary,#475569);}
.cv-vault-wrap .cv-activity-go{margin-left:auto;color:var(--evt-color,#1e3a5f);font-size:18px;width:18px;height:18px;opacity:.5;transition:opacity .15s,transform .15s;}
.cv-vault-wrap .cv-activity-openable:hover .cv-activity-go{opacity:1;transform:translateX(2px);}
/* v20.04.x — contenu supprimé : entrée non cliquable + mention « plus disponible ». */
/* Toute la carte est grisée pour signaler d'un coup d'œil un contenu supprimé. */
.cv-vault-wrap .cv-activity-evt.cv-activity-unavailable{cursor:default;}
.cv-vault-wrap .cv-activity-evt.cv-activity-unavailable .cv-activity-bubble{background:#f1f3f5;border:1px dashed #cbd5e1;box-shadow:none;}
.cv-vault-wrap .cv-activity-evt.cv-activity-unavailable .cv-activity-node{background:#e2e8f0 !important;color:#94a3b8 !important;}
.cv-vault-wrap .cv-activity-evt.cv-activity-unavailable .cv-activity-line{color:#64748b;text-decoration:line-through;text-decoration-color:rgba(148,163,184,.8);}
.cv-vault-wrap .cv-activity-evt.cv-activity-unavailable .cv-activity-sub,.cv-vault-wrap .cv-activity-evt.cv-activity-unavailable .cv-activity-chip{opacity:.6;}
.cv-vault-wrap .cv-activity-unavail{display:inline-flex;align-items:center;gap:4px;font-size:11px;font-weight:700;color:#b42318;background:rgba(180,35,24,.10);padding:3px 9px;border-radius:10px;white-space:nowrap;}
.cv-vault-wrap .cv-activity-unavail .dashicons{font-size:13px;width:13px;height:13px;}
/* Révélation déclenchée au scroll (IntersectionObserver ajoute .cv-in) */
.cv-vault-wrap .cv-activity-evt,.cv-vault-wrap .cv-activity-day{opacity:0;transform:translateY(22px);transition:opacity .6s cubic-bezier(.2,.7,.2,1),transform .6s cubic-bezier(.2,.7,.2,1);}
.cv-vault-wrap .cv-activity-evt.cv-in,.cv-vault-wrap .cv-activity-day.cv-in{opacity:1;transform:none;}
.cv-vault-wrap .cv-activity-noanim{transition:none !important;}
@media (prefers-reduced-motion: reduce){.cv-vault-wrap .cv-activity-evt,.cv-vault-wrap .cv-activity-day{opacity:1;transform:none;transition:none;}}

/* v11.86.262 — vignette de format (réutilise les visuels de production) pour les ajouts */
.cv-vault-wrap .cv-activity-thumb{flex:0 0 auto;width:54px;height:54px;border-radius:10px;overflow:hidden;margin-top:1px;background:var(--cvf-bg-alt,#f1f5f9);box-shadow:0 1px 3px rgba(15,23,42,.08);}
.cv-vault-wrap .cv-activity-thumb .cv-docs-gallery-thumb{width:100%;height:100%;border-radius:10px;}
.cv-vault-wrap .cv-activity-thumb img{width:100%;height:100%;object-fit:cover;display:block;}
.cv-vault-wrap .cv-activity-thumb .cv-docs-gallery-thumb-ext{display:none;}
.cv-vault-wrap .cv-activity-thumb .cv-docs-gallery-thumb-ico .dashicons{font-size:24px;width:24px;height:24px;}
/* Repli teinté média pour vidéo/audio/embed sans miniature (prod laisse ces tuiles neutres car
   elles s'appuient sur un vrai poster ; dans l'activité on garantit un visuel coloré cohérent). */
.cv-vault-wrap .cv-activity-thumb .cv-doc-type-vid .cv-docs-gallery-thumb-ico,
.cv-vault-wrap .cv-activity-thumb .cv-doc-type-aud .cv-docs-gallery-thumb-ico,
.cv-vault-wrap .cv-activity-thumb .cv-doc-type-emb .cv-docs-gallery-thumb-ico{background:#efe9fb;}
.cv-vault-wrap .cv-activity-thumb .cv-doc-type-vid .dashicons,
.cv-vault-wrap .cv-activity-thumb .cv-doc-type-aud .dashicons,
.cv-vault-wrap .cv-activity-thumb .cv-doc-type-emb .dashicons{color:#6d28d9;}
/* v11.86.262 — en-tête de bulle : HEURE proéminente (repère temporel) + chip type */
.cv-vault-wrap .cv-activity-head{display:flex;align-items:center;gap:8px;margin-bottom:8px;}
.cv-vault-wrap .cv-activity-time{display:inline-flex;align-items:center;gap:5px;font-size:15px;font-weight:800;color:var(--evt-color,#1e3a5f);font-variant-numeric:tabular-nums;letter-spacing:.01em;}
.cv-vault-wrap .cv-activity-time .dashicons{font-size:15px;width:15px;height:15px;opacity:.7;}
.cv-vault-wrap .cv-activity-head .cv-activity-chip{margin-left:auto;}
.cv-vault-wrap .cv-activity-body{display:flex;gap:12px;align-items:flex-start;}
.cv-vault-wrap .cv-activity-text{flex:1 1 auto;min-width:0;}

/* ===== v11.86.263 — Timeline ALTERNÉE gauche/droite (zigzag) + slide-in opposés au scroll ===== */
.cv-vault-wrap .cv-activity-tl-zz{max-width:840px;}
.cv-vault-wrap .cv-activity-tl-zz .cv-activity-rail{left:50%;transform:translateX(-50%);}
.cv-vault-wrap .cv-activity-tl-zz .cv-activity-evt{display:block;width:50%;box-sizing:border-box;padding-bottom:24px;}
.cv-vault-wrap .cv-activity-tl-zz .cv-side-left{margin-left:0;padding-right:38px;}
.cv-vault-wrap .cv-activity-tl-zz .cv-side-right{margin-left:50%;padding-left:38px;}
.cv-vault-wrap .cv-activity-tl-zz .cv-activity-node{position:absolute;top:2px;flex:none;}
.cv-vault-wrap .cv-activity-tl-zz .cv-side-left .cv-activity-node{right:-19px;left:auto;}
.cv-vault-wrap .cv-activity-tl-zz .cv-side-right .cv-activity-node{left:-19px;right:auto;}
/* L'accent de bordure pointe toujours vers le rail central */
.cv-vault-wrap .cv-activity-tl-zz .cv-side-left .cv-activity-bubble{border-left-width:1px;border-right:3px solid var(--evt-color,#1e3a5f);}
.cv-vault-wrap .cv-activity-tl-zz .cv-side-right .cv-activity-bubble{border-left:3px solid var(--evt-color,#1e3a5f);}
/* Révélation au scroll : slide depuis la GAUCHE (cards de gauche) / depuis la DROITE (cards de droite) */
.cv-vault-wrap .cv-activity-tl-zz .cv-side-left{opacity:0;transform:translateX(-46px);}
.cv-vault-wrap .cv-activity-tl-zz .cv-side-right{opacity:0;transform:translateX(46px);}
.cv-vault-wrap .cv-activity-tl-zz .cv-activity-evt.cv-in{opacity:1;transform:none;}
@media (prefers-reduced-motion: reduce){.cv-vault-wrap .cv-activity-tl-zz .cv-side-left,.cv-vault-wrap .cv-activity-tl-zz .cv-side-right{opacity:1;transform:none;}}
/* Repli mobile : une seule colonne (rail à gauche), révélation verticale */
@media (max-width:720px){
  .cv-vault-wrap .cv-activity-tl-zz{max-width:640px;}
  .cv-vault-wrap .cv-activity-tl-zz .cv-activity-rail{left:18px;transform:none;}
  .cv-vault-wrap .cv-activity-tl-zz .cv-activity-evt{width:100%;margin-left:0;padding-left:52px;padding-right:0;}
  .cv-vault-wrap .cv-activity-tl-zz .cv-activity-node{left:0;right:auto;}
  .cv-vault-wrap .cv-activity-tl-zz .cv-side-left .cv-activity-bubble{border-right-width:1px;border-left:3px solid var(--evt-color,#1e3a5f);}
  .cv-vault-wrap .cv-activity-tl-zz .cv-side-left,.cv-vault-wrap .cv-activity-tl-zz .cv-side-right{transform:translateY(22px);}
  .cv-vault-wrap .cv-activity-tl-zz .cv-activity-evt.cv-in{transform:none;}
}

/* ═══ v20.22.208 — Cartes dossier « rangement » : contenu d'abord, sans progression ═══ */
.cv-front-folder-card { border-radius: 12px; }
.cv-front-folder-card .cv-folder-card-desc { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.cv-front-folder-card .cv-folder-card-meta { flex-wrap: wrap; gap: 8px 14px; color: var(--cv-text-secondary, #64748b); }
.cv-front-folder-card .cv-folder-items-count,
.cv-front-folder-card .cv-folder-updated,
.cv-front-folder-card .cv-folder-deadline { display: inline-flex; align-items: center; gap: 5px; }
.cv-front-folder-card .cv-folder-items-count svg,
.cv-front-folder-card .cv-folder-updated svg,
.cv-front-folder-card .cv-folder-deadline svg { opacity: .7; flex-shrink: 0; }
.cv-front-folder-card .cv-folder-updated { color: var(--cv-text-hint, #94a3b8); }
.cv-front-folder-card.cv-folder-card-muted { opacity: .72; }
.cv-front-folder-card.cv-folder-card-muted:hover { opacity: 1; }
/* Pastille statut discrète (archivé/clôturé) — plus de badge « actif » permanent */
.cv-front-folder-card .cv-folder-card-meta .cv-folder-badge { padding: 2px 10px; font-size: 11px; font-weight: 600; box-shadow: none; }
.cv-front-folder-card .cv-folder-status-closed { background: rgba(16,163,74,.12); color: #15803d; }
.cv-front-folder-card .cv-folder-status-archived { background: rgba(128,128,128,.14); color: var(--cv-text-secondary,#64748b); }

/* ═══ v20.22.215 — « Pièces à fournir » dans le détail dossier (demandes rattachées) ═══ */
.cv-vault-wrap .cv-folder-reqs{display:flex;flex-direction:column;gap:12px;}
.cv-vault-wrap .cv-folder-req-proj{border:1px solid var(--cvf-border,#e4e8ee);border-radius:12px;padding:12px 14px;background:var(--cvf-card,#fff);}
.cv-vault-wrap .cv-folder-req-proj-head{display:flex;align-items:center;gap:8px;margin-bottom:8px;}
.cv-vault-wrap .cv-folder-req-proj-head strong{font-size:14px;color:var(--cvf-text-dark,#1e293b);}
.cv-vault-wrap .cv-folder-req-badge{margin-left:auto;font-size:12px;font-weight:700;background:var(--cvf-bg-alt,#eef2f7);color:var(--cvf-text-secondary,#475569);padding:2px 10px;border-radius:999px;}
.cv-vault-wrap .cv-folder-req-ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:5px;}
.cv-vault-wrap .cv-folder-req-li{display:flex;align-items:center;gap:7px;font-size:13.5px;color:var(--cvf-text-dark,#334155);}
.cv-vault-wrap .cv-folder-req-li .dashicons{font-size:17px;width:17px;height:17px;color:var(--cvf-text-muted,#94a3b8);flex:0 0 auto;}
.cv-vault-wrap .cv-folder-req-li.is-done{color:var(--cvf-text-muted,#94a3b8);}
.cv-vault-wrap .cv-folder-req-li.is-done .dashicons{color:#15803d;}
.cv-vault-wrap .cv-folder-req-ok{font-size:11px;font-weight:700;color:#15803d;background:rgba(16,163,74,.12);padding:1px 8px;border-radius:999px;margin-left:2px;}
.cv-vault-wrap .cv-folder-req-goto{margin-top:10px;display:inline-flex;align-items:center;gap:6px;border:none;background:var(--cvf-primary,#1e3a5f);color:#fff;font-size:13px;font-weight:600;padding:8px 16px;border-radius:9px;cursor:pointer;transition:filter .15s;}
.cv-vault-wrap .cv-folder-req-goto .dashicons{font-size:16px;width:16px;height:16px;}
.cv-vault-wrap .cv-folder-req-goto:hover{filter:brightness(1.12);}

/* v20.22.221 — Agenda transverse du coffre : barre (légende + toggle), + calendrier ADAPTÉ AU THÈME
   CLAIR du coffre et PLEINE LARGEUR. 🚨 Scopé à .cv-agenda-scope : le calendrier PARCOURS partage
   les classes .cvf-cal-* mais garde son thème sombre — on n'override que dans l'agenda coffre. */
.cv-vault-wrap .cv-agenda-toolbar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px;margin:2px 2px 14px;}
.cv-vault-wrap .cv-agenda-legend{display:flex;flex-wrap:wrap;gap:14px;font-size:12.5px;color:var(--cvf-text-secondary,#475569);}
.cv-vault-wrap .cv-agenda-leg{display:inline-flex;align-items:center;gap:6px;}
.cv-vault-wrap .cv-agenda-dot{width:9px;height:9px;border-radius:50%;flex:0 0 auto;}
.cv-vault-wrap .cv-agenda-viewtoggle{display:inline-flex;border:1px solid var(--cvf-border,#e4e8ee);border-radius:9px;overflow:hidden;}
.cv-vault-wrap .cv-agenda-viewbtn{background:transparent;border:none;padding:6px 14px;font-size:13px;font-weight:600;color:var(--cvf-text-secondary,#475569);cursor:pointer;display:inline-flex;align-items:center;gap:6px;transition:background .12s,color .12s;}
.cv-vault-wrap .cv-agenda-viewbtn .dashicons{font-size:16px;width:16px;height:16px;}
.cv-vault-wrap .cv-agenda-viewbtn.active{background:var(--cvf-primary,#1e3a5f);color:#fff;}
.cv-vault-wrap .cv-agenda-viewbtn + .cv-agenda-viewbtn{border-left:1px solid var(--cvf-border,#e4e8ee);}

/* Calendrier pleine largeur + thème clair (scopé agenda) */
.cv-vault-wrap .cv-agenda-scope #cv-agenda-cal{max-width:none;}
.cv-vault-wrap .cv-agenda-scope .cvf-cal-inner{padding:6px 2px 2px;}
.cv-vault-wrap .cv-agenda-scope .cvf-cal-nav{display:flex;align-items:center;justify-content:center;gap:16px;margin-bottom:14px;}
.cv-vault-wrap .cv-agenda-scope .cvf-cal-nav-btn{background:var(--cvf-bg-alt,#f1f5f9);border:1px solid var(--cvf-border,#e4e8ee);color:var(--cvf-text-secondary,#475569);}
.cv-vault-wrap .cv-agenda-scope .cvf-cal-nav-btn:hover{background:var(--cvf-border,#e4e8ee);border-color:var(--cvf-border,#e4e8ee);}
.cv-vault-wrap .cv-agenda-scope .cvf-cal-month{color:var(--cvf-text-dark,#1e293b);font-size:16px;}
.cv-vault-wrap .cv-agenda-scope .cvf-cal-grid{gap:6px;}
.cv-vault-wrap .cv-agenda-scope .cvf-cal-day-name{color:var(--cvf-text-muted,#94a3b8);font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;padding-bottom:6px;}
.cv-vault-wrap .cv-agenda-scope .cvf-cal-cell{color:var(--cvf-text-secondary,#475569);min-height:66px;justify-content:flex-start;padding:8px 0 0;border:1px solid transparent;font-size:14px;}
.cv-vault-wrap .cv-agenda-scope .cvf-cal-cell.has-events{color:var(--cvf-text-dark,#1e293b);}
.cv-vault-wrap .cv-agenda-scope .cvf-cal-cell.has-events:hover{background:var(--cvf-bg-alt,#f1f5f9);}
.cv-vault-wrap .cv-agenda-scope .cvf-cal-cell.today{background:var(--cvf-primary,#1e3a5f);color:#fff;box-shadow:none;}
.cv-vault-wrap .cv-agenda-scope .cvf-cal-cell.today .cvf-cal-dot{background:#fff !important;}
.cv-vault-wrap .cv-agenda-scope .cvf-cal-cell.selected{background:color-mix(in srgb, var(--cvf-primary,#1e3a5f) 12%, #fff);border:1px solid var(--cvf-primary,#1e3a5f);}
.cv-vault-wrap .cv-agenda-scope .cvf-cal-dots{margin-top:6px;}
.cv-vault-wrap .cv-agenda-scope .cvf-cal-dot{width:7px;height:7px;box-shadow:none;}
.cv-vault-wrap .cv-agenda-scope .cvf-cal-events{margin-top:18px;border-top:1px solid var(--cvf-border,#e4e8ee);padding-top:14px;}
.cv-vault-wrap .cv-agenda-scope .cvf-cal-event{background:var(--cvf-card,#fff);border:1px solid var(--cvf-border,#e4e8ee);border-left-width:3px;border-radius:10px;padding:10px 12px;display:flex;align-items:center;gap:10px;margin-bottom:8px;}
.cv-vault-wrap .cv-agenda-scope .cvf-cal-event:hover{background:var(--cvf-bg-alt,#f1f5f9);}
.cv-vault-wrap .cv-agenda-scope .cvf-cal-event-title{color:var(--cvf-text-dark,#1e293b);font-weight:500;}
.cv-vault-wrap .cv-agenda-scope .cvf-cal-event-date{color:var(--cvf-text-muted,#94a3b8);}
.cv-vault-wrap .cv-agenda-scope .cvf-cal-empty{color:var(--cvf-text-muted,#94a3b8);}

/* Vue LISTE de l'agenda */
.cv-vault-wrap #cv-agenda-list .cv-agenda-list-day{font-size:12px;font-weight:700;color:var(--cvf-text-muted,#94a3b8);text-transform:capitalize;margin:14px 2px 6px;}
.cv-vault-wrap #cv-agenda-list .cv-agenda-list-item{display:flex;align-items:center;gap:10px;padding:11px 13px;background:var(--cvf-card,#fff);border:1px solid var(--cvf-border,#e4e8ee);border-left-width:3px;border-radius:10px;margin-bottom:6px;font-size:14px;color:var(--cvf-text-dark,#1e293b);}
.cv-vault-wrap #cv-agenda-list .cv-agenda-li-date{margin-left:auto;font-size:12px;color:var(--cvf-text-muted,#94a3b8);white-space:nowrap;}

/* v20.22.222 — Agenda coffre : clic vers l'objet, accent RETARD, titres en cellule (grand écran) */
.cv-vault-wrap .cv-agenda-scope .cvf-cal-event.is-clickable,
.cv-vault-wrap #cv-agenda-list .cv-agenda-list-item.is-clickable{cursor:pointer;}
.cv-vault-wrap .cv-agenda-scope .cvf-cal-event.is-clickable:hover,
.cv-vault-wrap #cv-agenda-list .cv-agenda-list-item.is-clickable:hover{background:var(--cvf-bg-alt,#f1f5f9);}
.cv-vault-wrap .cv-agenda-scope .cvf-cal-event.is-past{border-left-color:#dc2626 !important;}
.cv-vault-wrap .cv-agenda-scope .cvf-cal-event.is-past .cvf-cal-event-date{color:#dc2626;}
.cv-vault-wrap #cv-agenda-list .cv-agenda-list-item.is-past{border-left-color:#dc2626 !important;}
.cv-vault-wrap #cv-agenda-list .cv-agenda-list-item.is-past .cv-agenda-li-date{color:#dc2626;font-weight:600;}
.cv-vault-wrap .cv-agenda-scope .cvf-cal-cell-labels{display:none;flex-direction:column;gap:2px;width:100%;margin-top:5px;padding:0 3px;}
.cv-vault-wrap .cv-agenda-scope .cvf-cal-cell-label{font-size:10.5px;line-height:1.3;color:var(--cvf-text-secondary,#475569);padding-left:5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;text-align:left;}
.cv-vault-wrap .cv-agenda-scope .cvf-cal-cell-more{font-size:9px;color:var(--cvf-text-muted,#94a3b8);padding-left:5px;text-align:left;}
@media (min-width:720px){
  .cv-vault-wrap .cv-agenda-scope .cvf-cal-cell-labels{display:flex;}
  .cv-vault-wrap .cv-agenda-scope .cvf-cal-cell.has-events .cvf-cal-dots{display:none;}
  .cv-vault-wrap .cv-agenda-scope .cvf-cal-cell{min-height:84px;}
}

/* ═══ v20.22.223 — Agenda coffre : calendrier plus impactant + filtres cliquables + liste repliable ═══ */
/* Chips de filtre (légende cliquable) */
.cv-vault-wrap .cv-agenda-filt{display:inline-flex;align-items:center;gap:6px;background:var(--cvf-card,#fff);border:1px solid var(--cvf-border,#e4e8ee);border-radius:999px;padding:5px 13px;font-size:12.5px;font-weight:600;color:var(--cvf-text-secondary,#475569);cursor:pointer;transition:opacity .12s,background .12s;}
.cv-vault-wrap .cv-agenda-filt:hover{background:var(--cvf-bg-alt,#f1f5f9);}
.cv-vault-wrap .cv-agenda-filt.is-off{opacity:.42;}
.cv-vault-wrap .cv-agenda-filt.is-off .cv-agenda-dot{filter:grayscale(1);}

/* Calendrier : carte + jours DÉLIMITÉS (lignes de grille) + aujourd'hui plein */
.cv-vault-wrap .cv-agenda-scope #cv-agenda-cal{background:var(--cvf-card,#fff);border:1px solid var(--cvf-border,#e4e8ee);border-radius:14px;padding:16px;box-shadow:0 1px 3px rgba(15,23,42,.05);}
.cv-vault-wrap .cv-agenda-scope .cvf-cal-inner{padding:0;}
.cv-vault-wrap .cv-agenda-scope .cvf-cal-nav{margin-bottom:16px;}
.cv-vault-wrap .cv-agenda-scope .cvf-cal-grid{gap:1px;background:var(--cvf-border,#e4e8ee);border:1px solid var(--cvf-border,#e4e8ee);border-radius:12px;overflow:hidden;}
.cv-vault-wrap .cv-agenda-scope .cvf-cal-day-name{background:var(--cvf-bg-alt,#f8fafc);padding:9px 0;}
.cv-vault-wrap .cv-agenda-scope .cvf-cal-cell{background:var(--cvf-card,#fff);border:none;border-radius:0;min-height:60px;}
.cv-vault-wrap .cv-agenda-scope .cvf-cal-cell.empty{background:var(--cvf-bg-alt,#fafbfc);visibility:visible;}
.cv-vault-wrap .cv-agenda-scope .cvf-cal-cell.has-events:hover{background:var(--cvf-bg-alt,#f1f5f9);}
.cv-vault-wrap .cv-agenda-scope .cvf-cal-cell.today{background:var(--cvf-primary,#1e3a5f);border-radius:0;}
.cv-vault-wrap .cv-agenda-scope .cvf-cal-cell.selected{background:color-mix(in srgb, var(--cvf-primary,#1e3a5f) 12%, #fff);border:none;}
@media (min-width:720px){ .cv-vault-wrap .cv-agenda-scope .cvf-cal-cell{min-height:88px;} }

/* Vue LISTE : jours repliables + événements marqués */
.cv-vault-wrap #cv-agenda-list{display:flex;flex-direction:column;gap:10px;}
.cv-vault-wrap .cv-agenda-daygroup{border:1px solid var(--cvf-border,#e4e8ee);border-radius:12px;overflow:hidden;background:var(--cvf-card,#fff);}
.cv-vault-wrap .cv-agenda-dayhdr{width:100%;display:flex;align-items:center;gap:10px;background:var(--cvf-bg-alt,#f8fafc);border:none;padding:11px 14px;cursor:pointer;font-size:13.5px;font-weight:600;color:var(--cvf-text-dark,#1e293b);text-transform:capitalize;text-align:left;}
.cv-vault-wrap .cv-agenda-dayhdr.is-today{color:var(--cvf-primary,#1e3a5f);}
.cv-vault-wrap .cv-agenda-dayname{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.cv-vault-wrap .cv-agenda-daycount{background:var(--cvf-card,#fff);border:1px solid var(--cvf-border,#e4e8ee);color:var(--cvf-text-secondary,#475569);font-size:11px;font-weight:700;min-width:20px;text-align:center;padding:1px 7px;border-radius:999px;flex:0 0 auto;}
.cv-vault-wrap .cv-agenda-daychev{font-size:18px;width:18px;height:18px;color:var(--cvf-text-muted,#94a3b8);transition:transform .16s;flex:0 0 auto;}
.cv-vault-wrap .cv-agenda-daygroup[data-open="0"] .cv-agenda-daychev{transform:rotate(180deg);}
.cv-vault-wrap .cv-agenda-daybody{padding:8px;}
.cv-vault-wrap .cv-agenda-ev{display:flex;align-items:center;gap:12px;padding:11px 12px;border:1px solid var(--cvf-border,#e4e8ee);border-left:3px solid var(--evc,#94a3b8);border-radius:10px;margin-bottom:8px;background:var(--cvf-card,#fff);transition:background .12s;}
.cv-vault-wrap .cv-agenda-ev:last-child{margin-bottom:0;}
.cv-vault-wrap .cv-agenda-ev.is-clickable{cursor:pointer;}
.cv-vault-wrap .cv-agenda-ev.is-clickable:hover{background:var(--cvf-bg-alt,#f8fafc);}
.cv-vault-wrap .cv-agenda-ev.is-past{border-left-color:#dc2626;}
.cv-vault-wrap .cv-agenda-ev-main{flex:1;min-width:0;}
.cv-vault-wrap .cv-agenda-ev-title{font-size:14px;font-weight:500;color:var(--cvf-text-dark,#1e293b);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.cv-vault-wrap .cv-agenda-ev-meta{display:flex;align-items:center;gap:8px;margin-top:4px;}
.cv-vault-wrap .cv-agenda-ev-cat{font-size:11px;font-weight:700;padding:1px 8px;border-radius:999px;}
.cv-vault-wrap .cv-agenda-ev-time{font-size:12px;color:var(--cvf-text-muted,#94a3b8);}
.cv-vault-wrap .cv-agenda-ev.is-past .cv-agenda-ev-time{color:#dc2626;}
.cv-vault-wrap .cv-agenda-ev-go{color:var(--cvf-text-muted,#94a3b8);font-size:18px;width:18px;height:18px;flex:0 0 auto;}

/* v20.22.224 — Agenda : cases CARRÉES + contenu centré, bordures internes discrètes, sélection = teinte du thème */
.cv-vault-wrap .cv-agenda-scope .cvf-cal-grid{gap:1px;background:#eef1f6;border:1px solid #eef1f6;}
.cv-vault-wrap .cv-agenda-scope .cvf-cal-day-name{background:#f7f9fc;border-bottom:none;}
.cv-vault-wrap .cv-agenda-scope .cvf-cal-cell{aspect-ratio:1;min-height:0;justify-content:center;padding:0;gap:4px;}
.cv-vault-wrap .cv-agenda-scope .cvf-cal-cell > span:first-child{font-size:14px;line-height:1;}
.cv-vault-wrap .cv-agenda-scope .cvf-cal-cell.selected{background:color-mix(in srgb, var(--cvf-primary,#1e3a5f) 13%, #fff);}
@media (min-width:720px){ .cv-vault-wrap .cv-agenda-scope .cvf-cal-cell{min-height:0;} }

/* v20.22.225 — titres RÉTABLIS dans les cellules (rectangulaire assumé) + SÉLECTION clairement teintée thème */
.cv-vault-wrap .cv-agenda-scope .cvf-cal-cell{aspect-ratio:auto;justify-content:center;padding:7px 4px 6px;gap:3px;min-height:64px;}
@media (min-width:720px){ .cv-vault-wrap .cv-agenda-scope .cvf-cal-cell{min-height:96px;} }
.cv-vault-wrap .cv-agenda-scope .cvf-cal-cell.selected{background:color-mix(in srgb, var(--cvf-primary,#1e3a5f) 20%, #fff);box-shadow:inset 0 0 0 2px var(--cvf-primary,#1e3a5f);color:var(--cvf-primary,#1e3a5f);font-weight:700;}
/* v20.22.226 — jusqu'à 3 titres dans la cellule + compteur « +N » */
.cv-vault-wrap .cv-agenda-scope .cvf-cal-cell-more{font-size:10.5px;font-weight:700;color:var(--cvf-text-muted,#94a3b8);margin-top:1px;text-align:center;}
.cv-vault-wrap .cv-agenda-scope .cvf-cal-cell.selected .cvf-cal-cell-more{color:var(--cvf-primary,#1e3a5f);}

/* v20.22.226 — lot « idées validées » : compteurs de filtre, bouton Aujourd'hui, libellés relatifs,
   surlignage de l'événement de parcours ciblé (deep-link). */
.cv-vault-wrap .cv-agenda-filt-n{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;border-radius:999px;background:var(--cvf-bg-alt,#eef1f6);color:var(--cvf-text-secondary,#475569);font-size:11px;font-weight:800;line-height:1;}
.cv-vault-wrap .cv-agenda-filt.is-off .cv-agenda-filt-n{opacity:.7;}
.cv-vault-wrap .cv-agenda-toolbar-actions{display:inline-flex;align-items:center;gap:10px;flex-wrap:wrap;}
.cv-vault-wrap .cv-agenda-today{background:var(--cvf-card,#fff);border:1px solid var(--cvf-border,#e4e8ee);border-radius:9px;padding:6px 13px;font-size:13px;font-weight:600;color:var(--cvf-primary,#1e3a5f);cursor:pointer;display:inline-flex;align-items:center;gap:6px;transition:background .12s;}
.cv-vault-wrap .cv-agenda-today:hover{background:var(--cvf-bg-alt,#f1f5f9);}
.cv-vault-wrap .cv-agenda-dayrel{font-size:11.5px;font-weight:700;padding:1px 9px;border-radius:999px;background:var(--cvf-bg-alt,#eef1f6);color:var(--cvf-text-secondary,#475569);margin-left:8px;}
.cv-vault-wrap .cv-agenda-dayrel.is-today{background:color-mix(in srgb, var(--cvf-primary,#1e3a5f) 16%, #fff);color:var(--cvf-primary,#1e3a5f);}
.cv-vault-wrap .cv-agenda-dayrel.is-past{background:#fdecec;color:#dc2626;}
.cv-vault-wrap .cvf-calendar-body .cvf-cal-event.cv-deeplink-highlight{box-shadow:0 0 0 3px rgba(139,92,246,.55);border-radius:8px;transition:box-shadow .2s;}
/* v20.22.230 — surbrillance de la carte d'événement en VUE LISTE du calendrier parcours (deep-link) */
.cvf-grp-event-card.cv-deeplink-highlight{box-shadow:0 0 0 3px rgba(139,92,246,.6) !important;border-radius:10px;transition:box-shadow .2s;}

/* v20.22.232 — Synchronisation ICS : bouton + pop-up (abonnement sortant + import externe) */
.cv-vault-wrap .cv-agenda-sync-btn{background:var(--cvf-card,#fff);border:1px solid var(--cvf-border,#e4e8ee);border-radius:9px;padding:6px 13px;font-size:13px;font-weight:600;color:var(--cvf-primary,#1e3a5f);cursor:pointer;display:inline-flex;align-items:center;gap:6px;transition:background .12s;}
.cv-vault-wrap .cv-agenda-sync-btn:hover{background:var(--cvf-bg-alt,#f1f5f9);}
.cv-vault-wrap .cv-agenda-sync-overlay{position:fixed;inset:0;z-index:100000;background:rgba(15,23,42,.5);display:flex;align-items:center;justify-content:center;padding:16px;}
.cv-vault-wrap .cv-agenda-sync-box{background:var(--cvf-card,#fff);border-radius:16px;max-width:560px;width:100%;max-height:90vh;overflow:auto;padding:22px 24px;position:relative;box-shadow:0 20px 60px rgba(15,23,42,.25);}
.cv-vault-wrap .cv-agenda-sync-close{position:absolute;top:12px;right:12px;background:transparent;border:none;cursor:pointer;color:var(--cvf-text-muted,#94a3b8);width:30px;height:30px;border-radius:8px;}
.cv-vault-wrap .cv-agenda-sync-close:hover{background:var(--cvf-bg-alt,#f1f5f9);}
.cv-vault-wrap .cv-agenda-sync-h{display:flex;align-items:center;gap:8px;font-size:17px;font-weight:800;color:var(--cvf-primary,#1e3a5f);margin:0 0 6px;}
.cv-vault-wrap .cv-agenda-sync-sec{padding:16px 0;border-top:1px solid var(--cvf-border,#eef1f6);}
.cv-vault-wrap .cv-agenda-sync-sec:first-of-type{border-top:none;}
.cv-vault-wrap .cv-agenda-sync-sec h4{font-size:14px;font-weight:800;color:var(--cvf-text,#1e293b);margin:0 0 4px;}
.cv-vault-wrap .cv-agenda-sync-hint{font-size:11px !important;color:var(--cvf-text-muted,#94a3b8) !important;margin:0 0 9px;line-height:1.4;}
.cv-vault-wrap .cv-agenda-sync-urlrow{display:flex;gap:8px;align-items:stretch;}
.cv-vault-wrap .cv-agenda-sync-url{flex:1 1 auto;min-width:0;border:1px solid var(--cvf-border,#e4e8ee);border-radius:9px;padding:8px 11px;font-size:12.5px;color:var(--cvf-text-secondary,#475569);background:var(--cvf-bg-alt,#f8fafc);}
.cv-vault-wrap .cv-agenda-sync-copy,.cv-vault-wrap .cv-agenda-ext-add{background:var(--cvf-primary,#1e3a5f);border:none;color:#fff;border-radius:9px;padding:8px 13px;font-size:13px;font-weight:600;cursor:pointer;display:inline-flex;align-items:center;gap:5px;white-space:nowrap;}
.cv-vault-wrap .cv-agenda-sync-copy:hover,.cv-vault-wrap .cv-agenda-ext-add:hover{filter:brightness(1.08);}
.cv-vault-wrap .cv-agenda-sync-suback{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px;align-items:center;}
/* v20.22.246 — Google = action de confort mise en avant (aplat primaire, texte blanc) ; Télécharger =
   secondaire discret. !important nécessaire : `.cv-vault-wrap a` force color !important (ligne 314). */
.cv-vault-wrap .cv-agenda-sync-google{display:inline-flex;align-items:center;gap:5px;font-size:12.5px;font-weight:700;color:#fff !important;background:var(--cvf-primary,#1e3a5f);text-decoration:none;padding:8px 13px;border:1px solid var(--cvf-primary,#1e3a5f);border-radius:9px;}
.cv-vault-wrap .cv-agenda-sync-google .dashicons{color:#fff !important;}
.cv-vault-wrap .cv-agenda-sync-google:hover{filter:brightness(1.08);}
.cv-vault-wrap .cv-agenda-sync-download{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:600;color:var(--cvf-text-secondary,#475569) !important;text-decoration:none;padding:7px 11px;border:1px solid var(--cvf-border,#e4e8ee);border-radius:9px;}
.cv-vault-wrap .cv-agenda-sync-download .dashicons{color:var(--cvf-text-secondary,#475569) !important;}
.cv-vault-wrap .cv-agenda-sync-download:hover{background:var(--cvf-bg-alt,#f1f5f9);}
.cv-vault-wrap .cv-agenda-sync-note{font-size:11px !important;color:var(--cvf-text-muted,#94a3b8) !important;margin:9px 0 0;line-height:1.4;}
/* v20.22.255/258 — échéance + expiration côte à côte, alignées À GAUCHE, compactes (pas étirées pleine largeur). */
.cv-vault-wrap .cv-dates-row{display:flex;gap:12px;flex-wrap:wrap;margin:8px 0;align-items:flex-start;justify-content:flex-start;}
.cv-vault-wrap .cv-dates-row>.cv-form-group,.cv-vault-wrap .cv-dates-row>.cv-perfile-cell{flex:0 1 190px;min-width:0;margin:0;}
.cv-vault-wrap .cv-expires-group>label,.cv-vault-wrap .cv-deadline-group>label{display:block;font-size:12px;font-weight:600;color:var(--cvf-text-secondary,#475569);margin-bottom:4px;}
.cv-vault-wrap .cv-expires-input,.cv-vault-wrap .cv-deadline-input{width:100%;border:1px solid var(--cvf-border,#e4e8ee);border-radius:8px;padding:7px 10px;font-size:13px;background:#fff;color:var(--cvf-text,#1e293b);}
.cv-vault-wrap .cv-agenda-sync-regen{background:transparent;border:none;color:var(--cvf-text-muted,#94a3b8) !important;font-size:11px !important;font-weight:600;cursor:pointer;display:inline-flex;align-items:center;gap:4px;padding:0;margin-top:10px;}
.cv-vault-wrap .cv-agenda-sync-regen:hover{color:#dc2626 !important;}
.cv-vault-wrap .cv-agenda-sync-regen .dashicons{color:var(--cvf-text-muted,#94a3b8) !important;}
.cv-vault-wrap .cv-agenda-ext-list{display:flex;flex-direction:column;gap:6px;margin-bottom:10px;}
.cv-vault-wrap .cv-agenda-ext-item{display:flex;align-items:center;gap:9px;padding:8px 10px;border:1px solid var(--cvf-border,#e4e8ee);border-radius:9px;background:var(--cvf-bg-alt,#fafbfc);}
.cv-vault-wrap .cv-agenda-ext-dot{width:11px;height:11px;border-radius:50%;flex:0 0 auto;}
.cv-vault-wrap .cv-agenda-ext-name{flex:1 1 auto;min-width:0;font-size:13px;color:var(--cvf-text,#1e293b);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.cv-vault-wrap .cv-agenda-ext-remove{background:transparent;border:none;cursor:pointer;color:var(--cvf-text-muted,#94a3b8);width:28px;height:28px;border-radius:7px;flex:0 0 auto;}
.cv-vault-wrap .cv-agenda-ext-remove:hover{background:#fdecec;color:#dc2626;}
.cv-vault-wrap .cv-agenda-ext-empty{font-size:12.5px;color:var(--cvf-text-muted,#94a3b8);padding:4px 2px;}
.cv-vault-wrap .cv-agenda-ext-form{display:flex;flex-wrap:wrap;gap:8px;align-items:center;}
.cv-vault-wrap .cv-agenda-ext-url{flex:1 1 200px;min-width:0;border:1px solid var(--cvf-border,#e4e8ee);border-radius:9px;padding:8px 11px;font-size:12.5px;}
.cv-vault-wrap .cv-agenda-ext-label{flex:0 1 130px;min-width:0;border:1px solid var(--cvf-border,#e4e8ee);border-radius:9px;padding:8px 11px;font-size:12.5px;}
.cv-vault-wrap .cv-agenda-ext-color{width:38px;height:38px;padding:2px;border:1px solid var(--cvf-border,#e4e8ee);border-radius:9px;cursor:pointer;flex:0 0 auto;background:#fff;}
.cv-vault-wrap .cv-agenda-ext-msg{margin-top:9px;font-size:12.5px;color:#dc2626;}
/* v20.22.236 — import d'un fichier .ics (sans synchronisation) */
.cv-vault-wrap .cv-agenda-ext-orfile{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin-top:10px;}
.cv-vault-wrap .cv-agenda-ext-orsep{font-size:12px;color:var(--cvf-text-muted,#94a3b8);text-transform:uppercase;letter-spacing:.04em;}
.cv-vault-wrap .cv-agenda-ext-filebtn{display:inline-flex;align-items:center;gap:6px;cursor:pointer;background:var(--cvf-card,#fff);border:1px solid var(--cvf-border,#e4e8ee);border-radius:9px;padding:7px 12px;font-size:12.5px;font-weight:600;color:var(--cvf-primary,#1e3a5f);}
.cv-vault-wrap .cv-agenda-ext-filebtn:hover{background:var(--cvf-bg-alt,#f1f5f9);}
.cv-vault-wrap .cv-agenda-ext-filehint{flex:1 1 100%;font-size:11.5px;color:var(--cvf-text-muted,#94a3b8);line-height:1.4;}
/* v20.22.237 — « Voir plus » : vue liste + détail du jour du calendrier */
.cv-vault-wrap .cv-agenda-loadmore-wrap{text-align:center;margin-top:12px;}
.cv-vault-wrap .cv-agenda-loadmore,.cv-vault-wrap .cv-agenda-scope .cvf-cal-day-more{background:var(--cvf-card,#fff);border:1px solid var(--cvf-border,#e4e8ee);border-radius:9px;padding:7px 16px;font-size:13px;font-weight:600;color:var(--cvf-primary,#1e3a5f);cursor:pointer;transition:background .12s;}
.cv-vault-wrap .cv-agenda-loadmore:hover,.cv-vault-wrap .cv-agenda-scope .cvf-cal-day-more:hover{background:var(--cvf-bg-alt,#f1f5f9);}
.cv-vault-wrap .cv-agenda-scope .cvf-cal-day-more{display:block;width:100%;margin-top:6px;}

/* v20.22.235 — « Ajouter à mon calendrier » par événement (Google + .ics) */
.cv-vault-wrap .cv-agenda-addcal{background:transparent;border:none;cursor:pointer;color:var(--cvf-text-muted,#94a3b8);width:26px;height:26px;border-radius:7px;flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;padding:0;}
.cv-vault-wrap .cv-agenda-addcal:hover{background:var(--cvf-bg-alt,#f1f5f9);color:var(--cvf-primary,#1e3a5f);}
.cv-vault-wrap .cv-agenda-addcal .dashicons{font-size:17px;width:17px;height:17px;}
.cv-vault-wrap .cv-agenda-scope .cvf-cal-event .cv-agenda-addcal{margin-left:auto;}
.cv-vault-wrap .cv-addcal-menu{background:var(--cvf-card,#fff);border:1px solid var(--cvf-border,#e4e8ee);border-radius:10px;box-shadow:0 8px 24px rgba(15,23,42,.16);padding:5px;min-width:190px;}
.cv-vault-wrap .cv-addcal-menu button{display:flex;align-items:center;gap:8px;width:100%;background:transparent;border:none;cursor:pointer;padding:8px 10px;border-radius:7px;font-size:13px;color:var(--cvf-text,#1e293b);text-align:left;}
.cv-vault-wrap .cv-addcal-menu button:hover{background:var(--cvf-bg-alt,#f1f5f9);}
.cv-vault-wrap .cv-addcal-menu .dashicons{font-size:16px;width:16px;height:16px;color:var(--cvf-text-secondary,#475569);}

/* v20.22.229 — Cases CARRÉES (aspect-ratio:1) AVEC les données du jour à l'intérieur : numéro du jour
   en haut CENTRÉ, puis jusqu'à 3 titres d'événements + un « +N » si davantage (desktop ≥720). Sur mobile,
   pastilles couleur (les titres ne rentrent pas dans une petite case). !important pour battre les couches
   v221→v228 accumulées sur ce sélecteur. */
.cv-vault-wrap .cv-agenda-scope .cvf-cal-cell{aspect-ratio:1 !important;min-height:0 !important;justify-content:center !important;align-items:stretch !important;padding:6px 4px 4px !important;gap:2px !important;overflow:hidden;}
.cv-vault-wrap .cv-agenda-scope .cvf-cal-cell > span:first-child{order:0;margin:0;padding:0;width:100%;text-align:center;font-size:14px;line-height:1.1;}
.cv-vault-wrap .cv-agenda-scope .cvf-cal-dots{order:1;justify-content:center;margin-top:2px;}
.cv-vault-wrap .cv-agenda-scope .cvf-cal-cell-labels{order:2;margin-top:3px;}
.cv-vault-wrap .cv-agenda-scope .cvf-cal-cell-label{text-align:left;}
@media (min-width:720px){
  .cv-vault-wrap .cv-agenda-scope .cvf-cal-cell{min-height:0 !important;}
  .cv-vault-wrap .cv-agenda-scope .cvf-cal-cell-labels{display:flex !important;}
  .cv-vault-wrap .cv-agenda-scope .cvf-cal-cell.has-events .cvf-cal-dots{display:none;}
}

/* toggle « événements passés » (vue liste) */

.cv-vault-wrap .cv-agenda-list-ctrl{display:flex;justify-content:flex-end;margin:0 0 10px;}
.cv-vault-wrap .cv-agenda-pasttoggle{background:var(--cvf-card,#fff);border:1px solid var(--cvf-border,#e4e8ee);border-radius:8px;padding:5px 12px;font-size:12.5px;font-weight:600;color:var(--cvf-text-secondary,#475569);cursor:pointer;display:inline-flex;align-items:center;gap:6px;transition:background .12s;}
.cv-vault-wrap .cv-agenda-pasttoggle:hover{background:var(--cvf-bg-alt,#f1f5f9);}
.cv-vault-wrap .cv-agenda-pasttoggle.is-on{color:var(--cvf-primary,#1e3a5f);border-color:color-mix(in srgb, var(--cvf-primary,#1e3a5f) 40%, #fff);}

/* v20.22.228 — Encart « À venir » = module d'accueil (calqué sur « Derniers messages »). La liste
   réutilise les styles .cvf-home-news-* ; ici on ne stylise que le toggle Liste/Calendrier, la
   pastille couleur et le conteneur calendrier. */
.cv-vault-wrap .cvf-home-upcoming .cvf-home-upcoming-toggle{display:inline-flex;border:1px solid var(--cvf-border,#e4e8ee);border-radius:8px;overflow:hidden;margin-left:auto;}
.cv-vault-wrap .cvf-home-upcoming .cv-huv-btn{background:transparent;border:none;padding:4px 9px;font-size:12.5px;font-weight:600;color:var(--cvf-text-secondary,#475569);cursor:pointer;display:inline-flex;align-items:center;transition:background .12s,color .12s;}
.cv-vault-wrap .cvf-home-upcoming .cv-huv-btn .dashicons{font-size:16px;width:16px;height:16px;}
.cv-vault-wrap .cvf-home-upcoming .cv-huv-btn.active{background:var(--cvf-primary,#1e3a5f);color:#fff;}
.cv-vault-wrap .cvf-home-upcoming .cvf-home-module-link{margin-left:10px;}
.cv-vault-wrap .cvf-home-upcoming .cv-home-up-dot{width:9px;height:9px;border-radius:50%;display:inline-block;}
.cv-vault-wrap .cvf-home-upcoming .cv-home-upcoming-cal{margin-top:10px;}

/* v20.22.262 — rangée de presets de dates : FORCER les 5 boutons sur UNE ligne.
   Bat .cv-mbar .cvf-owner-filters{flex-wrap:wrap} et .cvf-owner-filters .cv-seg-btn{padding !important; flex:0 0 auto}
   via la classe composée .cvf-owner-filters.cvf-preset-row (spécificité + !important). */
.cv-vault-wrap .cvf-owner-filters.cvf-preset-row{flex-wrap:nowrap !important;gap:3px !important;}
.cv-vault-wrap .cvf-owner-filters.cvf-preset-row .cv-seg-btn{flex:0 1 auto !important;min-width:0 !important;padding:5px 9px !important;font-size:11.5px !important;line-height:1.2 !important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;height:auto !important;}
/* « Tous » (1er bouton) : compact, ne prend que sa place → libère de l'espace pour les libellés longs */
.cv-vault-wrap .cvf-owner-filters.cvf-preset-row .cv-seg-btn:first-child{flex:0 0 auto !important;padding:5px 7px !important;}

/* v20.22.269 — Agenda : mini menu « Calendriers externes » (dropdown PREMIUM) + barre d'actions compacte */
.cv-vault-wrap .cv-agenda-extmenu{position:relative;display:inline-block;}
.cv-vault-wrap .cv-agenda-extmenu-btn .cv-agenda-extmenu-caret{font-size:16px;width:16px;height:16px;line-height:16px;opacity:.55;margin-left:1px;transition:transform .15s;}
.cv-vault-wrap .cv-agenda-extmenu-panel{position:absolute;top:calc(100% + 8px);left:0;z-index:60;min-width:248px;max-width:320px;background:#fff;border:1px solid var(--cvf-border,#e6eaf0);border-radius:14px;box-shadow:0 16px 40px -8px rgba(15,23,42,.22),0 2px 8px rgba(15,23,42,.08);padding:0;overflow:hidden;}
/* En-tête du menu : titre + toggle « Tous » — pose le menu comme un vrai panneau de contrôle. */
.cv-vault-wrap .cv-agenda-extmenu-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 14px 10px;border-bottom:1px solid #eef1f6;background:linear-gradient(180deg,#f9fafc,#fff);}
.cv-vault-wrap .cv-agenda-extmenu-title{display:flex;align-items:center;gap:7px;font-size:12px;font-weight:700;letter-spacing:.02em;text-transform:uppercase;color:#64748b;}
.cv-vault-wrap .cv-agenda-extmenu-title .dashicons{font-size:16px;width:16px;height:16px;color:#94a3b8;}
.cv-vault-wrap .cv-agenda-extmenu-all{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:600;color:#475569;cursor:pointer;margin:0;padding:3px 6px;border-radius:7px;}
.cv-vault-wrap .cv-agenda-extmenu-all:hover{background:#eef2f7;}
.cv-vault-wrap .cv-agenda-extmenu-all input{margin:0;}
.cv-vault-wrap .cv-agenda-extmenu-list{padding:6px;max-height:280px;overflow:auto;}
.cv-vault-wrap .cv-agenda-extopt{display:flex;align-items:center;gap:9px;padding:8px 10px;border-radius:9px;cursor:pointer;font-size:13px;color:var(--cvf-text,#2d3748);transition:background .12s;}
.cv-vault-wrap .cv-agenda-extopt:hover{background:#f4f7fb;}
.cv-vault-wrap .cv-agenda-extopt input[type=checkbox]{margin:0;flex:0 0 auto;}
.cv-vault-wrap .cv-agenda-extopt .cv-agenda-dot{flex:0 0 auto;width:10px;height:10px;border-radius:50%;box-shadow:0 0 0 3px rgba(15,23,42,.04);}
.cv-vault-wrap .cv-agenda-extopt-name{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:500;}
.cv-vault-wrap .cv-agenda-extopt .cv-agenda-filt-n{flex:0 0 auto;background:#eef2f7;color:#64748b;border-radius:20px;padding:1px 8px;font-size:11px;font-weight:600;}
/* Barre d'actions : Synchroniser + Calendrier + Liste GROUPÉS (segmented), icônes seules. */
.cv-vault-wrap .cv-agenda-viewbtn--icon{padding-left:9px;padding-right:9px;}
.cv-vault-wrap .cv-agenda-viewbtn--icon .dashicons{margin:0;}
.cv-vault-wrap .cv-agenda-viewsep{width:1px;align-self:stretch;margin:4px 2px;background:var(--cvf-border,#e1e5eb);flex:0 0 auto;}

/* v20.22.272 — dates échéance/expiration dans l'éditeur inline (documents + médias) : 2 colonnes */
.cv-vault-wrap .cv-ie-dates{display:flex;gap:12px;flex-wrap:wrap;}
.cv-vault-wrap .cv-ie-dates .cv-ie-datecol{flex:1 1 150px;min-width:0;display:flex;flex-direction:column;}
.cv-vault-wrap .cv-ie-dates .cv-ie-datecol input[type=date]{width:100%;}

/* v20.22.512 — Tuiles repliables + pastille stockage en bout de menu */
/* v20.22.527 — !important OBLIGATOIRE : la règle mobile « ruban swipe » des tuiles est en
   display:flex !important et écrasait le masquage → le réglage semblait ignoré sur mobile. */
.cv-vault-wrap .cv-vault-stats.cv-tiles-hidden { display: none !important; }
/* v20.22.513 — préférence tuiles déplacée dans Paramètres → Apparence */
.cv-vault-wrap .cv-appearance-tiles-pref { margin: 0 0 14px; padding: 12px 14px; background: var(--cvf-bg-soft, #f8fafc); border: 1px solid var(--cvf-border, #e8ecf0); border-radius: 12px; }
.cv-vault-wrap .cv-appearance-tiles-label { display: flex; align-items: center; gap: 10px; font-weight: 600; color: var(--cvf-text, #334155); cursor: pointer; }
.cv-vault-wrap .cv-tab-storage-pill { display: inline-flex; align-items: center; gap: 6px; margin-left: auto; padding: 6px 12px; border-radius: 999px; background: var(--cvf-bg-soft, #f1f5f9); color: var(--cvf-text-muted, #64748b); font-size: 12px; font-weight: 600; white-space: nowrap; align-self: center; }

/* v20.22.514 — Image d'en-tête depuis le COFFRE : posée en background DIRECT sur le header
   (voile sombre + image recadrée automatiquement, centrée, cover). Aucun élément ajouté au flux :
   la hauteur du header reste dictée par son contenu, l'image ne pousse jamais rien. */
.cv-vault-header.cv-hdr-has-img { background: linear-gradient(135deg, rgba(15,23,42,.66) 0%, rgba(15,23,42,.42) 100%), var(--cv-hdr-img) center / cover no-repeat !important; }
/* Bloc « Image d'en-tête » dans Paramètres → Apparence */
.cv-vault-wrap .cv-appearance-hdrimg { margin: 0 0 14px; padding: 12px 14px; background: var(--cvf-bg-soft, #f8fafc); border: 1px solid var(--cvf-border, #e8ecf0); border-radius: 12px; }
.cv-vault-wrap .cv-hdrimg-row { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; margin-top: 10px; }
.cv-vault-wrap .cv-hdrimg-preview { width: 160px; height: 64px; border-radius: 10px; border: 1px dashed var(--cvf-border, #cbd5e1); background-color: var(--cvf-bg, #eef2f7); background-size: cover; background-position: center; display: flex; align-items: center; justify-content: center; color: var(--cvf-text-muted, #94a3b8); }
.cv-vault-wrap .cv-hdrimg-preview.cv-hdrimg-on { border-style: solid; }
.cv-vault-wrap .cv-hdrimg-btns { display: flex; flex-direction: column; gap: 8px; }
/* v20.22.517 — Hauteur du bandeau (petit / moyen / grand). Moyen = comportement actuel. */
.cv-vault-header.cv-hdr-h-small { padding: 16px 20px 14px !important; gap: 14px !important; }
.cv-vault-header.cv-hdr-h-small .cv-vault-header-watermark { display: none !important; }
/* v20.22.518 — Grand : nettement plus haut, contenu ancré en HAUT-GAUCHE, l'image respire dessous. */
.cv-vault-header.cv-hdr-h-large { padding: 34px 30px 42px !important; gap: 30px !important; min-height: 380px !important; justify-content: flex-start !important; }
/* v20.22.520 — Grand : le filigrane (bouclier) prend toute la hauteur du bandeau. */
.cv-vault-header.cv-hdr-h-large .cv-vault-header-watermark { top: 50%; right: -30px; }
.cv-vault-header.cv-hdr-h-large .cv-vault-header-watermark .dashicons { font-size: 400px !important; width: 400px !important; height: 400px !important; }
/* v20.22.525 — Grand : les tuiles (et ce qui les suit) s'ancrent EN BAS du bandeau,
   l'image respire entre l'identité (haut-gauche) et les tuiles. */
.cv-vault-header.cv-hdr-h-large .cv-vault-stats { margin-top: auto !important; }
/* v20.22.525 — Filigrane désactivable (marque blanche) : réglage admin, tous les modes. */
.cv-vault-header.cv-hdr-no-wm .cv-vault-header-watermark { display: none !important; }
/* Sélecteur « Hauteur du bandeau » (Paramètres → Apparence) */
.cv-vault-wrap .cv-appearance-hdrh { margin: 0 0 14px; padding: 12px 14px; background: var(--cvf-bg-soft, #f8fafc); border: 1px solid var(--cvf-border, #e8ecf0); border-radius: 12px; }
.cv-vault-wrap .cv-hdrh-btns { display: flex; gap: 8px; margin-top: 10px; flex-wrap: wrap; }
.cv-vault-wrap .cv-hdrh-btn { padding: 7px 16px; border-radius: 999px; border: 1px solid var(--cvf-border, #d7dee6); background: var(--cvf-card, #fff); color: var(--cvf-text, #334155); font-size: 13px; font-weight: 600; cursor: pointer; transition: all .15s; }
.cv-vault-wrap .cv-hdrh-btn:hover { border-color: var(--cvf-primary, #1e3a5f); }
.cv-vault-wrap .cv-hdrh-btn.active { background: var(--cvf-primary, #1e3a5f); border-color: var(--cvf-primary, #1e3a5f); color: #fff; }

/* ═══ v20.22.521 — Apparence CLIENT : bascule exclusive + aperçu bandeau premium + blocs de hauteur ═══ */
/* v20.22.522 — Tabulations premium : plus hautes, actives en dégradé du thème, tout respire. */
.cv-vault-wrap .cv-apzf-q { font-size: 12px; font-weight: 700; color: var(--cvf-text-muted, #64748b); text-transform: uppercase; letter-spacing: .6px; margin: 14px 0 10px; }
.cv-vault-wrap .cv-apzf-switch { display: flex; align-items: stretch; gap: 6px; padding: 7px; border-radius: 18px; background: var(--cvf-bg-soft, #eef2f7); border: 1px solid var(--cvf-border, #e4e8ee); margin: 0 0 22px; }
.cv-vault-wrap .cv-apzf-btn { flex: 1; display: inline-flex; align-items: center; justify-content: center; gap: 9px; padding: 15px 18px; border-radius: 13px; border: none; background: transparent; font-size: 14px; font-weight: 700; color: var(--cvf-text, #334155); cursor: pointer; transition: all .2s ease; opacity: .55; }
.cv-vault-wrap .cv-apzf-btn .dashicons { font-size: 18px; width: 18px; height: 18px; }
.cv-vault-wrap .cv-apzf-btn:hover { opacity: 1; background: rgba(255,255,255,.6); }
.cv-vault-wrap .cv-apzf-btn.is-active { opacity: 1; background: linear-gradient(135deg, var(--cvf-primary, #1e3a5f) 0%, var(--cvf-primary-light, #2a5298) 100%); color: #fff; box-shadow: 0 4px 14px rgba(var(--cvf-primary-rgb, 30, 58, 95), .35); }
.cv-vault-wrap .cv-apzf-btn.is-active .dashicons { color: #fff; }
.cv-vault-wrap .cv-apzf-or { align-self: center; padding: 0 8px; font-size: 10.5px; font-weight: 800; text-transform: uppercase; color: var(--cvf-text-muted, #94a3b8); flex-shrink: 0; }
/* v20.22.526 — toggle standard ClientVault côté front (identique au cv-switch admin) */
.cv-vault-wrap .cv-fswitch { position: relative; display: inline-block; width: 44px; height: 24px; flex-shrink: 0; }
.cv-vault-wrap .cv-fswitch input { opacity: 0; width: 0; height: 0; position: absolute; }
.cv-vault-wrap .cv-fswitch-slider { position: absolute; cursor: pointer; inset: 0; background: linear-gradient(135deg, #d1d5db 0%, #c4c9d1 100%); border-radius: 24px; transition: background .3s ease, box-shadow .3s ease; box-shadow: inset 0 1px 3px rgba(0,0,0,.1); }
.cv-vault-wrap .cv-fswitch-slider::before { content: ""; position: absolute; height: 18px; width: 18px; left: 3px; bottom: 3px; background: linear-gradient(180deg, #fff 0%, #f3f4f6 100%); border-radius: 50%; transition: transform .3s cubic-bezier(.4,0,.2,1), box-shadow .3s ease; box-shadow: 0 1px 4px rgba(0,0,0,.18); }
.cv-vault-wrap .cv-fswitch input:checked + .cv-fswitch-slider { background: linear-gradient(135deg, #22c55e 0%, #16a34a 100%); box-shadow: inset 0 1px 3px rgba(0,0,0,.08), 0 0 8px rgba(34,197,94,.25); }
.cv-vault-wrap .cv-fswitch input:checked + .cv-fswitch-slider::before { transform: translateX(20px); }
#cv-apzf-themes, #cv-apzf-header { padding-top: 4px; }
#cv-apzf-header > div { margin-bottom: 18px; }
/* Aperçu « bandeau » premium de l'image d'en-tête (identique à l'admin) */
.cv-vault-wrap .cv-hdrimg-hero { position: relative; width: 100%; min-height: 150px; border-radius: 14px; overflow: hidden; background: linear-gradient(135deg, var(--cvf-primary, #1e3a5f) 0%, var(--cvf-primary-light, #2a5298) 100%); background-size: cover; background-position: center; margin: 10px 0 4px; display: flex; align-items: center; justify-content: center; }
.cv-vault-wrap .cv-hdrimg-hero-scrim { position: absolute; inset: 0; background: linear-gradient(180deg, rgba(15,23,42,.05) 40%, rgba(15,23,42,.45) 100%); pointer-events: none; }
.cv-vault-wrap .cv-hdrimg-hero-empty { position: relative; display: flex; flex-direction: column; align-items: center; gap: 6px; color: rgba(255,255,255,.85); font-size: 12.5px; font-weight: 600; text-align: center; padding: 0 18px; }
.cv-vault-wrap .cv-hdrimg-hero-empty .dashicons { font-size: 30px; width: 30px; height: 30px; opacity: .8; }
.cv-vault-wrap .cv-hdrimg-hero-actions { position: absolute; right: 12px; bottom: 12px; display: flex; gap: 8px; flex-wrap: wrap; justify-content: flex-end; }
.cv-vault-wrap .cv-hdrimg-hero-btn { display: inline-flex; align-items: center; gap: 6px; padding: 7px 14px; border-radius: 999px; border: 1px solid rgba(255,255,255,.4); background: rgba(255,255,255,.92); color: var(--cvf-primary, #1e3a5f); font-size: 12px; font-weight: 700; cursor: pointer; transition: all .15s ease; backdrop-filter: blur(4px); -webkit-backdrop-filter: blur(4px); box-shadow: 0 2px 10px rgba(0,0,0,.18); }
.cv-vault-wrap .cv-hdrimg-hero-btn .dashicons { font-size: 14px; width: 14px; height: 14px; }
.cv-vault-wrap .cv-hdrimg-hero-btn:hover { transform: translateY(-1px); box-shadow: 0 4px 14px rgba(0,0,0,.24); }
.cv-vault-wrap .cv-hdrimg-hero-btn-ghost { background: rgba(15,23,42,.45); color: #fff; border-color: rgba(255,255,255,.28); }
.cv-vault-wrap .cv-hdrimg-hero.cv-hdrimg-busy::after { content: ""; position: absolute; inset: 0; margin: auto; width: 24px; height: 24px; border: 3px solid rgba(255,255,255,.35); border-top-color: #fff; border-radius: 50%; animation: cv-hdrimg-spin .8s linear infinite; }
/* Hauteur du bandeau : blocs visuels avec mini-aperçus (mêmes visuels que l'admin) */
.cv-vault-wrap .cv-hdrh-blocks { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; }
.cv-vault-wrap .cv-hdrh-blocks .cv-hdrh-btn { display: flex; flex-direction: column; align-items: flex-start; gap: 3px; text-align: left; padding: 12px 14px; border-radius: 12px; border: 1.5px solid var(--cvf-border, #d7dee6); background: var(--cvf-card, #fff); cursor: pointer; transition: all .15s ease; }
.cv-vault-wrap .cv-hdrh-blocks .cv-hdrh-btn:hover { border-color: var(--cvf-primary, #1e3a5f); transform: translateY(-1px); box-shadow: 0 2px 10px rgba(30,58,95,.08); }
.cv-vault-wrap .cv-hdrh-blocks .cv-hdrh-btn.active { border-color: var(--cvf-primary, #1e3a5f); background: var(--cvf-bg-soft, #f0f5fb); box-shadow: inset 0 0 0 1px var(--cvf-primary, #1e3a5f); }
.cv-vault-wrap .cv-hdrh-mini { display: block; width: 100%; border-radius: 5px; background: linear-gradient(135deg, var(--cvf-primary, #1e3a5f), var(--cvf-primary-light, #2a5298)); margin-bottom: 4px; }
.cv-vault-wrap .cv-hdrh-mini-s { height: 8px; }
.cv-vault-wrap .cv-hdrh-mini-m { height: 16px; }
.cv-vault-wrap .cv-hdrh-mini-l { height: 28px; }
.cv-vault-wrap .cv-hdrh-block-t { font-size: 13px; font-weight: 700; color: var(--cvf-text, #334155); }
.cv-vault-wrap .cv-hdrh-block-d { font-size: 11.5px; color: var(--cvf-text-muted, #8492a6); line-height: 1.4; }
@media (max-width: 700px) { .cv-vault-wrap .cv-hdrh-blocks { grid-template-columns: 1fr; } }

/* v20.22.514 — animation d'attente pendant l'application de l'image */
.cv-vault-wrap .cv-hdrimg-preview.cv-hdrimg-busy::after { content: ""; width: 22px; height: 22px; border: 3px solid rgba(100,116,139,.25); border-top-color: var(--cvf-primary, #1e3a5f); border-radius: 50%; animation: cv-hdrimg-spin .8s linear infinite; }
@keyframes cv-hdrimg-spin { to { transform: rotate(360deg); } }
.cv-vault-wrap .cv-tab-storage-pill .dashicons { font-size: 15px; width: 15px; height: 15px; }
/* v20.22.515 — stockage DISCRET dans le header : mini-jauge + détail.
   Sans bascule Perso/Agence : angle haut-droit (à sa place). Gestionnaire : juste dessous. */
/* v20.22.516 — contour plus net (bulle lisible sur l'image de fond) + cliquable → réglage Stockage */
.cv-vault-wrap .cv-hdr-storage-mini { position: absolute; top: 14px; right: 14px; z-index: 3; display: inline-flex; flex-direction: column; align-items: flex-end; gap: 3px; padding: 5px 10px; border-radius: 9px; background: rgba(15,23,42,.28); border: 1px solid rgba(255,255,255,.35); box-shadow: 0 1px 6px rgba(0,0,0,.18); backdrop-filter: blur(3px); -webkit-backdrop-filter: blur(3px); color: #fff; font-size: 10.5px; font-weight: 600; line-height: 1.2; white-space: nowrap; cursor: pointer; transition: background .15s, border-color .15s; }
.cv-vault-wrap .cv-hdr-storage-mini:hover { background: rgba(15,23,42,.42); border-color: rgba(255,255,255,.55); }
/* Surbrillance du réglage Stockage à l'arrivée dans Paramètres */
.cv-vault-wrap .cv-settings-flash { animation: cv-settings-flash 2.2s ease; }
@keyframes cv-settings-flash { 0% { box-shadow: 0 0 0 3px var(--cvf-accent, #e8913a); } 70% { box-shadow: 0 0 0 3px var(--cvf-accent, #e8913a); } 100% { box-shadow: 0 0 0 0 transparent; } }
.cv-vault-wrap .cv-hdr-storage-mini .dashicons { display: none; }
.cv-vault-wrap .cv-hdr-storage-mini .cv-hdr-storage-txt em { font-style: normal; color: #ffffff99; font-weight: 500; }
.cv-vault-wrap .cv-hdr-storage-mini .cv-hdr-storage-gauge { display: block; width: 92px; height: 4px; border-radius: 3px; background: rgba(255,255,255,.22); overflow: hidden; }
.cv-vault-wrap .cv-hdr-storage-mini .cv-hdr-storage-fill { display: block; height: 100%; border-radius: 3px; transition: width .6s ease; }
.cv-vault-wrap .cv-hdr-storage-mini.cv-hdr-storage-below { top: 54px; }
.cv-vault-wrap .cv-hdr-storage-mini.cv-pill-off { display: none !important; }
/* v20.22.528 — MOBILE : plus de pastille stockage dans le bandeau (elle flottait mal placée) :
   l'info stockage vit désormais dans la mini pop-up ⓘ. La pastille reste sur desktop. */
@media (max-width: 680px) {
    .cv-vault-wrap .cv-hdr-storage-mini,
    .cv-vault-wrap .cv-hdr-storage-mini.cv-hdr-storage-below { display: none !important; }
}
/* Item stockage de la méta : réservé à la pop-up ⓘ mobile (masqué sur desktop, la pastille suffit).
   v20.22.529 — 🚨 préfixe autoritaire OBLIGATOIRE : le bloc durci `html body .cv-app.cv-vault-wrap
   .cv-vault-header-v2 .cv-vault-meta-item-v2 { display:inline-flex !important }` battait la version
   courte → le stockage s'affichait AUSSI dans la ligne méta desktop. */
html body .cv-app.cv-vault-wrap .cv-vault-header-v2 .cv-meta-storage-v2,
html body .cv-vault-wrap .cv-vault-header-v2 .cv-meta-storage-v2,
html body .cv-vault-header-v2 .cv-meta-storage-v2 { display: none !important; }
@media (max-width: 680px) {
    html body .cv-app.cv-vault-wrap .cv-vault-header-v2 span.cv-vault-meta-item-v2.cv-meta-storage-v2,
    html body .cv-vault-wrap .cv-vault-header-v2 span.cv-vault-meta-item-v2.cv-meta-storage-v2,
    html body .cv-vault-header-v2 span.cv-vault-meta-item-v2.cv-meta-storage-v2 { display: inline-flex !important; }
}
/* v20.22.529 — MOBILE : Petit / Moyen / Grand réellement distincts (le padding mobile générique
   aplatissait Petit et Moyen à la même hauteur). Placé APRÈS les règles cv-hdr-h-* desktop. */
@media (max-width: 680px) {
    html body .cv-app.cv-vault-wrap .cv-vault-header.cv-vault-header-v2.cv-hdr-h-small { padding: 10px 13px !important; min-height: 0 !important; }
    html body .cv-app.cv-vault-wrap .cv-vault-header.cv-vault-header-v2.cv-hdr-h-medium { min-height: 120px !important; justify-content: center !important; }
    html body .cv-app.cv-vault-wrap .cv-vault-header.cv-vault-header-v2.cv-hdr-h-large { min-height: 230px !important; padding: 18px 16px 20px !important; justify-content: flex-start !important; }
}
.cv-vault-wrap .cv-tab-storage-pill.cv-pill-off { display: none; }

/* v20.22.537 — Accueil « Derniers messages » : seconde bulle NON LUS (mêmes codes que la pastille rouge du menu). */
.cv-vault-wrap .cvf-home-messages .cvf-home-module-count--unread { background: #ef4444; color: #fff; margin-left: 2px; }
