/* ═══════════════════════════════════════════
   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) */
.cv-vault-wrap,
.cv-vault-wrap.cv-theme-navy {
    --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;
    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: 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: 76px !important;
    height: 76px !important;
    min-width: 76px !important;
    min-height: 76px !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: center;
    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;
    padding: 10px 14px 10px 35px !important;
    border: 1.5px solid var(--cvf-border) !important;
    border-radius: 10px !important;
    font-size: 13px !important;
    color: var(--cvf-text) !important;
    background: var(--cvf-card) !important;
    font-family: inherit !important;
    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;
}

/* ─── 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;
}

/* ─── 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 ─── */
.cv-login-wrap { display: flex; justify-content: center; padding: 60px 20px; }
.cv-login-box {
    background: var(--cvf-card); border: 1px solid var(--cvf-border); border-radius: 20px;
    padding: 48px 40px; max-width: 420px; width: 100%; box-shadow: 0 8px 40px rgba(0,0,0,0.08);
    position: relative;
}
.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;
}
.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: 14px; background: linear-gradient(135deg, var(--cvf-primary), var(--cvf-primary-light));
    color: #fff; border: none; border-radius: 10px;
    font-size: 15px; font-weight: 700; cursor: pointer;
    transition: transform .15s, box-shadow .15s;
    display: flex; align-items: center; justify-content: center; gap: 8px;
}
.cv-login-submit:hover:not(:disabled) {
    transform: translateY(-1px); box-shadow: 0 4px 16px rgba(30,58,95,0.3);
}
.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: 24px;
    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;
}
.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);
}
.cv-vault-upload-submit {
    display: inline-flex !important;
    align-items: center !important;
    gap: 8px !important;
    padding: 10px 28px !important;
    background: var(--cvf-primary, #1e3a5f) !important;
    color: #fff !important;
    border: none !important;
    border-radius: 10px !important;
    font-size: 14px !important;
    font-weight: 700 !important;
    font-family: inherit !important;
    cursor: pointer !important;
    transition: all .2s !important;
    box-shadow: 0 3px 12px rgba(30,58,95,.25) !important;
    white-space: nowrap !important;
}
.cv-vault-upload-submit:hover {
    background: #264d7a !important;
    box-shadow: 0 5px 16px rgba(30,58,95,.35) !important;
    transform: translateY(-1px) !important;
}
.cv-vault-upload-submit:disabled {
    opacity: 0.4 !important;
    cursor: not-allowed !important;
    transform: none !important;
    box-shadow: none !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;
}
/* 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: 24px 24px 20px; 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: 24px 24px 20px; 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;
}
.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.7);
    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;
}
.cv-preview-body img {
    max-width: 100%; max-height: 100%; object-fit: contain;
}
.cv-preview-body iframe {
    width: 100%; height: 100%; border: none;
}
.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;
}
.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;
}
.cvf-section-header-actions .cv-add-btn svg {
    width: 12px;
    height: 12px;
}
.cvf-section-filters {
    padding: 10px 16px 0;
}

/* ═══════════════════════════════════════════
   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;
}
/* "Réponses admin" accent variant — more prominent */
.cv-vault-wrap .cv-mtype-btn-reply {
    border: 2px solid var(--cvf-accent, #e8913a) !important;
    color: var(--cvf-accent, #e8913a) !important;
    background: #fef8f0 !important;
    font-weight: 600 !important;
    box-shadow: 0 0 0 1px rgba(232,145,58,.1), 0 1px 3px rgba(232,145,58,.12);
}
.cv-vault-wrap .cv-mtype-btn-reply:hover {
    background: rgba(232, 145, 58, .15) !important;
    box-shadow: 0 0 0 2px rgba(232,145,58,.2), 0 2px 6px rgba(232,145,58,.15);
}
.cv-vault-wrap .cv-mtype-btn-reply.active {
    background: var(--cvf-accent, #e8913a) !important;
    color: #fff !important;
    border-color: var(--cvf-accent, #e8913a) !important;
    box-shadow: 0 2px 8px rgba(232,145,58,.3);
}
/* 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: 20px; }

.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: 20px; 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);
}

/* ── 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-form-tag-btn.cv-form-tag-active {
    color: #fff !important;
    box-shadow: 0 2px 8px rgba(0,0,0,.18);
}
/* 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; }
}

/* ── 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;
}
.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;
}
.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: .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;
}
.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-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; }

/* 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;
}

/* ─── 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 — 2-column CSS Grid with equal row height */
.cv-vault-wrap .cli-dashboard-sortable {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 18px;
}
.cv-vault-wrap .cli-dashboard-sortable > .cli-block {
    min-height: 0;
}
@media (max-width: 768px) {
    .cv-vault-wrap .cli-dashboard-sortable { grid-template-columns: 1fr; }
}
/* 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;
}
/* Header right actions */
.cv-vault-wrap .cli-hdr-actions {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-shrink: 0;
}
/* 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: 8px;
    background: rgba(var(--cvf-primary-rgb), 0.06);
    border-radius: 6px; padding: 2px;
}
.cv-vault-wrap .cli-act-filter-btn {
    font-size: 11px !important; font-weight: 600;
    padding: 3px 10px; 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;
}
.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);
}
.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; }
.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 ─── */
.cv-vault-wrap .cv-profile-section {
    display: flex; flex-direction: column; gap: 16px;
}
.cv-vault-wrap .cv-profile-avatar-wrap {
    display: flex; flex-direction: column; align-items: center; gap: 8px;
    padding-bottom: 16px; border-bottom: 1px solid var(--cvf-separator, #f0f1f3);
}
.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 {
    display: flex; flex-direction: column; gap: 12px;
}
.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 ─── */
.cv-vault-wrap .cv-theme-picker {
    display: flex; flex-wrap: wrap; gap: 10px;
}
.cv-vault-wrap .cv-theme-swatch {
    display: flex; flex-direction: column; align-items: center; gap: 6px;
    padding: 10px 14px; border: 2px solid var(--cvf-border);
    border-radius: 10px; background: #fff; cursor: pointer;
    transition: all 0.15s; min-width: 80px;
}
.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: 32px; height: 32px; border-radius: 50%;
    box-shadow: 0 2px 6px rgba(0,0,0,0.15);
}
.cv-vault-wrap .cv-theme-swatch-label {
    font-size: 11px; font-weight: 600; 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) */
.cv-mu-card {
    background: var(--cvf-card); border: 1.5px solid var(--cvf-border);
    border-radius: 12px; overflow: hidden; 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: 20px; 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;
    }

    /* 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; }
.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; }
/* 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: 4px; }
.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);
}
.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;
}

/* ══════════════════════════════════════════
   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%);
}
.cv-folder-section-arrow {
    margin-left: auto;
    font-size: 16px;
    color: var(--cvf-text-muted, #94a3b8);
    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; }
.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: '📦 ARCHIVÉ';
    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: '📦 ARCHIVÉ';
    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 {
    opacity: 0.55;
    background: #fffbeb !important;
    border-left: 3px solid #d97706 !important;
    position: relative;
}
.cv-content-archived:hover {
    opacity: 0.75;
    background: #fef3c7 !important;
}
/* 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: 76px !important;
    height: 76px !important;
    min-width: 76px !important;
    min-height: 76px !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;
}

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 4px !important;
    padding: 0 !important;
    font-size: 26px !important;
    line-height: 1.25 !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: 14px !important;
    line-height: 1.45 !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;
}

/* Mobile : sur petits écrans, passer en pile verticale (avatar au-dessus) */
@media (max-width: 560px) {
    html body .cv-vault-header-v2 .cv-vault-header-identity-v2 {
        padding: 100px 0 0 !important;
        min-height: 0 !important;
        text-align: center !important;
    }
    html body .cv-vault-header-v2 .cv-vault-avatar-v2 {
        left: 50% !important;
        top: 0 !important;
        transform: translateX(-50%) !important;
    }
    html body .cv-vault-header-v2 .cv-vault-header-text-v2 {
        text-align: center !important;
    }
    html body .cv-vault-header-v2 .cv-vault-header-meta-v2 {
        justify-content: center !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;
}
