/* ── Single fiche view ── */

.fv-wrap { max-width: 900px; margin: 0 auto; padding: 32px 16px 64px; }

/* Header card */
.fv-header {
    background: var(--card-color);
    border: 1px solid var(--border-color);
    border-radius: 20px;
    padding: 28px 32px;
    margin-bottom: 20px;
}
.fv-type-badge {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: .68rem;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: .06em;
    padding: 3px 10px;
    border-radius: 20px;
    margin-bottom: 12px;
}
.fv-type-text { background: rgba(99,102,241,.12); color: #6366f1; }
.fv-type-pdf  { background: rgba(239,68,68,.12);  color: #ef4444; }
.fv-type-validated { background: rgba(34,197,94,.12); color: #16a34a; margin-left: 4px; }

.fv-title { font-size: 1.6rem; font-weight: 900; color: var(--title-color); margin-bottom: 10px; line-height: 1.25; }
.fv-desc  { font-size: .9rem; color: var(--text-muted-input); margin-bottom: 18px; line-height: 1.5; }

.fv-meta {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 14px;
    font-size: .78rem;
    color: var(--text-muted-input);
    border-top: 1px solid var(--border-color);
    padding-top: 14px;
}
.fv-meta-item { display: flex; align-items: center; gap: 5px; }
.fv-meta-item strong { color: var(--title-color); font-weight: 700; }

.fv-ue-chip {
    font-size: .68rem;
    font-weight: 700;
    padding: 3px 9px;
    border-radius: 20px;
    background: rgba(var(--rgb-underline-color),.1);
    color: var(--underline-color);
}
.fv-tag-chip {
    font-size: .68rem;
    padding: 3px 8px;
    border-radius: 20px;
    background: rgba(var(--rgb-title-color),.06);
    color: var(--text-muted-input);
    transition: background .15s, color .15s;
}
a.fv-tag-chip:hover { background: rgba(var(--rgb-underline-color),.12); color: var(--underline-color); }

/* Status bar */
.fv-status-bar {
    border-radius: 12px;
    padding: 12px 18px;
    margin-bottom: 20px;
    font-size: .83rem;
    font-weight: 600;
    display: flex;
    align-items: center;
    gap: 10px;
}
.fv-status-pending   { background: rgba(245,158,11,.1); color: #d97706; border: 1px solid rgba(245,158,11,.25); }
.fv-status-validated { background: rgba(34,197,94,.1);  color: #16a34a; border: 1px solid rgba(34,197,94,.25); }
.fv-status-rejected  { background: rgba(239,68,68,.1);  color: #dc2626; border: 1px solid rgba(239,68,68,.25); }

/* Admin actions bar */
.fv-admin-bar {
    background: rgba(var(--rgb-underline-color),.05);
    border: 1px solid rgba(var(--rgb-underline-color),.2);
    border-radius: 12px;
    padding: 14px 18px;
    margin-bottom: 20px;
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    align-items: center;
}

/* Content card */
.fv-content {
    background: var(--card-color);
    border: 1px solid var(--border-color);
    border-radius: 20px;
    padding: 32px;
    margin-bottom: 20px;
}

/* Markdown rendered output */
.fv-markdown {
    color: var(--text-color);
    font-size: .93rem;
    line-height: 1.75;
}
.fv-markdown h1,.fv-markdown h2,.fv-markdown h3 { color: var(--title-color); font-weight: 800; margin-top: 1.5em; margin-bottom: .5em; }
.fv-markdown h1 { font-size: 1.5rem; }
.fv-markdown h2 { font-size: 1.25rem; border-bottom: 1px solid var(--border-color); padding-bottom: 6px; }
.fv-markdown h3 { font-size: 1.05rem; }
.fv-markdown p  { margin-bottom: 1em; }
.fv-markdown ul,.fv-markdown ol { padding-left: 1.5em; margin-bottom: 1em; }
.fv-markdown li { margin-bottom: .3em; }
.fv-markdown strong { color: var(--title-color); }
.fv-markdown code { background: rgba(var(--rgb-title-color),.08); padding: 2px 6px; border-radius: 5px; font-size: .85em; font-family: monospace; }
.fv-markdown pre  { background: rgba(var(--rgb-title-color),.07); padding: 16px; border-radius: 10px; overflow-x: auto; margin-bottom: 1em; }
.fv-markdown pre code { background: none; padding: 0; font-size: .88rem; }
.fv-markdown blockquote { border-left: 3px solid var(--underline-color); padding-left: 16px; color: var(--text-muted-input); margin: 1em 0; }
.fv-markdown table { width: 100%; border-collapse: collapse; margin-bottom: 1em; font-size: .88rem; }
.fv-markdown th   { background: rgba(var(--rgb-title-color),.06); font-weight: 700; }
.fv-markdown td,.fv-markdown th { border: 1px solid var(--border-color); padding: 7px 12px; }
.fv-markdown a    { color: var(--underline-color); }
.fv-markdown hr   { border: none; border-top: 1px solid var(--border-color); margin: 1.5em 0; }

/* Accounting entry table (inserted via the TinyMCE "écriture comptable" tool) */
.fv-markdown table.fiche-acct-table th:nth-child(3), .fv-markdown table.fiche-acct-table td:nth-child(3),
.fv-markdown table.fiche-acct-table th:nth-child(4), .fv-markdown table.fiche-acct-table td:nth-child(4) {
    text-align: right; font-family: monospace;
}
.fv-markdown table.fiche-acct-table tfoot td { font-weight: 800; color: var(--title-color); border-top: 2px solid var(--border-color); }

/* PDF viewer */
.fv-pdf-embed { width: 100%; height: 75vh; min-height: 500px; border: none; border-radius: 10px; display: block; }

/* Password gate */
.fv-pw-gate {
    max-width: 420px;
    margin: 60px auto;
    background: var(--card-color);
    border: 1px solid var(--border-color);
    border-radius: 20px;
    padding: 36px;
    text-align: center;
}
.fv-pw-gate i   { font-size: 2.5rem; color: var(--underline-color); margin-bottom: 16px; }
.fv-pw-gate h2  { font-size: 1.2rem; font-weight: 800; color: var(--title-color); margin-bottom: 8px; }
.fv-pw-gate p   { font-size: .85rem; color: var(--text-muted-input); margin-bottom: 20px; }

/* Owner actions */
.fv-owner-panel {
    background: var(--card-color);
    border: 1px solid var(--border-color);
    border-radius: 14px;
    padding: 16px 20px;
    display: flex;
    align-items: center;
    gap: 12px;
    flex-wrap: wrap;
    margin-bottom: 20px;
}
.fv-settings-wrap { position: relative; }
.fv-settings-dd {
    position: absolute; top: calc(100% + 6px); left: 0; z-index: 60; min-width: 220px;
    background: var(--card-color); border: 1px solid var(--border-color); border-radius: 10px;
    box-shadow: 0 8px 24px rgba(0,0,0,.14); padding: 6px; overflow: hidden;
}
.fv-settings-item {
    display: flex; align-items: center; width: 100%; padding: 9px 12px; border: none; background: none;
    font-size: .82rem; font-weight: 600; color: var(--title-color); border-radius: 7px; cursor: pointer;
    text-align: left; transition: background .15s, color .15s;
}
.fv-settings-item:hover { background: rgba(var(--rgb-title-color),.06); }
.fv-settings-item-danger { color: #ef4444; }
.fv-settings-item-danger:hover { background: rgba(239,68,68,.1); color: #ef4444; }

/* Add to FicheList */
.fv-add-fichelist { margin: 20px 0; }
.fv-fl-btn { background: none; border: 1.5px solid var(--underline-color); color: var(--underline-color); border-radius: 30px; padding: 7px 18px; font-size: .84rem; font-weight: 700; cursor: pointer; font-family: inherit; transition: background .15s; }
.fv-fl-btn:hover { background: rgba(var(--rgb-underline-color),.08); }
.fv-fl-btn:disabled { opacity: .6; cursor: not-allowed; }

/* FicheList modal */
.fv-modal-overlay {
    position: fixed; inset: 0; background: rgba(0,0,0,.45); z-index: 1000;
    display: flex; align-items: center; justify-content: center; padding: 20px;
}
.fv-modal {
    background: var(--card-color); border: 1px solid var(--border-color); border-radius: 14px;
    padding: 28px; max-width: 460px; width: 100%; position: relative;
}
.fv-modal-close { position: absolute; top: 14px; right: 14px; background: none; border: none; font-size: 1rem; color: var(--text-muted-input); cursor: pointer; }
.fv-modal-title { font-size: 1.05rem; font-weight: 800; color: var(--title-color); margin: 0 0 14px; }

.fv-fl-search-wrap { position: relative; margin-bottom: 10px; }
.fv-fl-search-icon { position: absolute; left: 12px; top: 50%; transform: translateY(-50%); color: var(--text-muted-input); font-size: .8rem; }
.fv-fl-search-input {
    width: 100%; padding: 8px 12px 8px 34px; border: 1.5px solid var(--border-color); border-radius: 8px;
    background: var(--background-secondary); color: var(--title-color); font-size: .86rem; outline: none;
    transition: border-color .15s; box-sizing: border-box; font-family: inherit;
}
.fv-fl-search-input:focus { border-color: var(--underline-color); }

.fv-fl-filter-row { display: flex; gap: 6px; margin-bottom: 12px; flex-wrap: wrap; }
.fv-fl-filter-btn {
    background: none; border: 1.5px solid var(--border-color); color: var(--text-muted-input);
    border-radius: 20px; padding: 4px 12px; font-size: .75rem; font-weight: 700; cursor: pointer;
    font-family: inherit; transition: border-color .15s, color .15s, background .15s;
}
.fv-fl-filter-btn:hover { border-color: var(--underline-color); color: var(--underline-color); }
.fv-fl-filter-btn.active { background: var(--underline-color); border-color: var(--underline-color); color: #fff; }

.fv-fl-list { max-height: 260px; overflow-y: auto; margin-bottom: 12px; border: 1px solid var(--border-color); border-radius: 8px; }
.fv-fl-loading, .fv-fl-empty { padding: 18px; text-align: center; font-size: .84rem; color: var(--text-muted-input); }
.fv-fl-row {
    display: flex; align-items: center; gap: 10px; padding: 10px 14px; cursor: pointer;
    border-bottom: 1px solid var(--border-color); transition: background .15s;
}
.fv-fl-row:last-child { border-bottom: none; }
.fv-fl-row:hover { background: rgba(var(--rgb-underline-color), .05); }
.fv-fl-row.selected { background: rgba(var(--rgb-underline-color), .1); }
.fv-fl-icon { color: var(--text-muted-input); font-size: .82rem; width: 16px; flex-shrink: 0; }
.fv-fl-name { flex: 1; font-size: .88rem; color: var(--title-color); font-weight: 600; }
.fv-fl-count { font-size: .75rem; color: var(--text-muted-input); white-space: nowrap; }
.fv-fl-check { color: #27ae60; font-size: .8rem; }
.fv-fl-row.added .fv-fl-name { color: var(--text-muted-input); }
.fv-fl-row.added { cursor: default; }
.fv-fl-cb { font-size: .9rem; color: var(--text-muted-input); width: 16px; flex-shrink: 0; }
.fv-fl-row.selected .fv-fl-cb { color: var(--underline-color); }
.fv-fl-row.added .fv-fl-cb { color: #27ae60; }
.fv-fl-selectall-btn { display: inline-flex; align-items: center; }

.fv-fl-new { display: flex; gap: 8px; margin-bottom: 12px; }
.fv-fl-new-input {
    flex: 1; padding: 8px 12px; border: 1.5px solid var(--border-color); border-radius: 8px;
    background: var(--background-secondary); color: var(--title-color); font-size: .86rem; outline: none;
    transition: border-color .15s; font-family: inherit;
}
.fv-fl-new-input:focus { border-color: var(--underline-color); }
.fv-fl-new-btn {
    padding: 8px 14px; background: var(--underline-color); color: #fff; border: none; border-radius: 8px;
    font-size: .88rem; cursor: pointer; transition: opacity .15s; flex-shrink: 0;
}
.fv-fl-new-btn:hover { opacity: .88; }
.fv-fl-new-btn:disabled { opacity: .5; cursor: not-allowed; }

.fv-btn-fl-confirm {
    width: 100%; padding: 10px; background: var(--underline-color); color: #fff; border: none; border-radius: 8px;
    font-size: .9rem; font-weight: 700; cursor: pointer; transition: opacity .15s;
}
.fv-btn-fl-confirm:hover { opacity: .9; }
.fv-btn-fl-confirm:disabled { opacity: .4; cursor: not-allowed; }

.fv-owner-panel select.form-select,
.fv-owner-panel input.form-control {
    background: var(--bg-input);
    color: var(--text-color);
    border: 1px solid var(--border-color);
    border-radius: 10px;
}
.fv-owner-panel select.form-select:focus,
.fv-owner-panel input.form-control:focus {
    border-color: var(--underline-color);
    box-shadow: 0 0 0 .15rem rgba(var(--rgb-underline-color), .15);
}

@media (max-width: 600px) {
    .fv-header { padding: 20px; }
    .fv-content { padding: 20px; }
    .fv-title { font-size: 1.2rem; }
}

@media (max-width: 575.98px) {
    .fv-wrap { padding: 16px 12px 48px; }
    .fv-admin-bar { flex-direction: column; }
    .fv-owner-panel { padding: 14px 16px; }
}
