/* =============================================
   BIBLIOTHÈQUE DU TRÉSOR — FRONT CSS v1.3.0
   ============================================= */

/* Variables par défaut (overridées par PHP) */
.bt-library {
  --bt-gold:      #B8963E;
  --bt-gold-pale: rgba(184,150,62,0.12);
  --bt-navy:      #1A1C1E;
  --bt-font:      inherit;
  --bt-ft:        14px;
  --bt-fb:        13px;
  --bt-fm:        11px;
  --bt-fw:        500;
  --bt-border:    rgba(0,0,0,0.08);
  --bt-bg:        #ffffff;
  --bt-bg2:       #f8f8f8;
  --bt-text:      #333333;
  --bt-text2:     #666666;
  --bt-text3:     #999999;
  --bt-radius:    6px;
  /* Sidebar */
  --bt-sb-width:    319px; /* +18% de 270px */
  --bt-sb-font:     inherit;
  --bt-sb-fsize:    13px;
  --bt-sb-fw:       400;
  --bt-sb-color:    #444444;
  --bt-sb-pad-v:    9px;
  --bt-sb-pad-h:    12px;
  --bt-sb-gap:      0px;
  --bt-sb-lh:       1.4;
  --bt-sb-ls:       0em;
  --bt-sb-va:       0px;
  /* Sidebar title */
  --bt-sbt-font:    inherit;
  --bt-sbt-fsize:   10px;
  --bt-sbt-color:   rgba(255,255,255,0.55);
  --bt-sbt-lh:      1.3;
  --bt-sbt-pad-v:   12px;

  font-family: var(--bt-font);
  color:       var(--bt-text);
}

*, *::before, *::after { box-sizing: border-box; }

/* ── STATS ROW ── */
.bt-stats-row {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 10px;
  margin-bottom: 18px;
}
.bt-stat-pill {
  background: var(--bt-bg2);
  border: 0.5px solid var(--bt-border);
  border-radius: var(--bt-radius);
  padding: 12px 14px;
  text-align: center;
}
.bt-snum {
  display: block;
  font-size: 22px;
  font-weight: var(--bt-fw);
  color: var(--bt-gold);
  line-height: 1;
  margin-bottom: 4px;
}
.bt-slbl { font-size: var(--bt-fm); color: var(--bt-text3); }

/* ── TOPBAR ── */
.bt-topbar {
  display: flex !important;
  align-items: center !important;
  gap: 10px !important;
  margin-bottom: 18px;
  flex-wrap: wrap;
}
.bt-search-wrap {
  flex: 1;
  min-width: 200px;
  position: relative;
}
.bt-search-ico {
  position: absolute;
  left: 10px;
  top: 50%;
  transform: translateY(-50%);
  width: 16px;
  height: 16px;
  color: var(--bt-text3);
  pointer-events: none;
}
.bt-search-input {
  width: 100%;
  height: 36px !important;
  padding: 0 12px 0 34px !important;
  border: 0.5px solid var(--bt-border);
  border-radius: var(--bt-radius);
  font-size: var(--bt-fb);
  font-family: var(--bt-font);
  color: var(--bt-text);
  background: var(--bt-bg);
  outline: none;
  transition: border-color .15s;
  box-sizing: border-box !important;
  line-height: 36px !important;
}
.bt-search-input:focus { border-color: var(--bt-gold); }

.bt-toolbar {
  display: flex !important;
  align-items: center !important;
  gap: 8px !important;
  flex-wrap: nowrap !important;
}
.bt-filter-select {
  height: 36px !important;
  padding: 0 28px 0 10px !important;
  border: 0.5px solid var(--bt-border);
  border-radius: var(--bt-radius);
  font-size: var(--bt-fm);
  font-family: var(--bt-font);
  color: var(--bt-text2);
  background: var(--bt-bg);
  cursor: pointer;
  outline: none;
  min-width: 140px;
  max-width: 200px;
  box-sizing: border-box !important;
  line-height: 1 !important;
  appearance: auto !important;
  -webkit-appearance: menulist !important;
  margin: 0 !important;
}
.bt-filter-select:focus { border-color: var(--bt-gold); }
.bt-view-toggle {
  display: inline-flex !important;
  align-items: stretch !important;
  border: 0.5px solid var(--bt-border);
  border-radius: var(--bt-radius);
  overflow: hidden;
  height: 36px !important;
  flex-shrink: 0 !important;
  padding: 0 !important;
  margin: 0 !important;
}
.bt-view-btn {
  height: 36px !important;
  padding: 0 10px !important;
  background: var(--bt-bg);
  border: none;
  cursor: pointer;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  color: var(--bt-text3);
  flex-shrink: 0;
  line-height: 1 !important;
  margin: 0 !important;
  outline: none !important;
}
.bt-view-btn svg { width: 15px !important; height: 15px !important; display: block !important; flex-shrink: 0 !important; }
.bt-view-btn.active { background: var(--bt-navy); color: #fff; }
.bt-view-btn.active svg { stroke: #fff; }

/* ── BODY LAYOUT ── */
.bt-body { display: block; }
.bt-body.has-sidebar {
  display: grid;
  grid-template-columns: var(--bt-sb-width) 1fr;
  gap: 20px;
  align-items: start;
}

/* ── SIDEBAR ── */
.bt-sidebar { position: sticky; top: 80px; }
.bt-sb-section {
  background: var(--bt-bg);
  border: 1px solid var(--bt-border);
  border-radius: 10px;
  box-shadow: 0 1px 4px rgba(0,0,0,0.04);
  overflow: hidden;
  margin-bottom: 14px;
}

/* Sidebar title (bandeau) */
.bt-sb-head {
  background:     var(--bt-navy);
  padding:        var(--bt-sbt-pad-v) 16px;
  font-family:    var(--bt-sbt-font, inherit);
  font-size:      var(--bt-sbt-fsize, 10px);
  font-weight:    700;
  color:          var(--bt-sbt-color, rgba(255,255,255,0.55));
  text-transform: uppercase;
  letter-spacing: 0.12em;
  line-height:    var(--bt-sbt-lh, 1.3);
  display:        flex;
  align-items:    center;
  gap:            7px;
}
.bt-sb-head::before {
  content:    '';
  display:    inline-block;
  width:      14px;
  height:     2px;
  background: var(--bt-gold);
  border-radius: 2px;
  flex-shrink: 0;
}

/* Sidebar nav */
.bt-sb-nav { list-style: none; padding: 0 !important; margin: 0 !important; }
.bt-sb-nav li {
  border-bottom: 1px solid var(--bt-border);
  margin: 0 !important;
  padding: 0 !important;
  margin-bottom: var(--bt-sb-gap, 0px) !important;
}
.bt-sb-nav li:last-child { border-bottom: none; }

/* Sidebar items — centrage vertical forcé */
.bt-sb-link {
  display:        flex !important;
  align-items:    center !important;   /* centrage vertical forcé */
  gap:            10px;
  padding:        var(--bt-sb-pad-v, 9px) var(--bt-sb-pad-h, 12px);
  font-family:    var(--bt-sb-font, inherit);
  font-size:      var(--bt-sb-fsize, 13px);
  font-weight:    var(--bt-sb-fw, 400);
  color:          var(--bt-sb-color, #444);
  text-decoration: none;
  line-height:    var(--bt-sb-lh, 1.4);
  letter-spacing: var(--bt-sb-ls, 0em);
  transition:     background .15s, color .15s, padding-left .1s;
  min-height:     0;
}

/* Texte du lien — correction verticale via translateY */
.bt-sb-link-text {
  display:         inline-block;
  flex:            1;
  min-width:       0;
  overflow:        hidden;
  text-overflow:   ellipsis;
  white-space:     nowrap;
  transform:       translateY(var(--bt-sb-va, 0px));
  vertical-align:  middle;
}

.bt-sb-link svg,
.bt-cat-icon-wrap {
  width:      16px;
  height:     16px;
  flex-shrink: 0;
  color:      var(--bt-gold);
  display:    inline-flex;
  align-items: center;
  justify-content: center;
  transform:  translateY(var(--bt-sb-va, 0px));
}
.bt-cat-icon-wrap svg { width: 100%; height: 100%; }

.bt-sb-link:hover {
  background:   var(--bt-bg2);
  color:        var(--bt-text);
  padding-left: calc(var(--bt-sb-pad-h, 12px) + 4px);
}
.bt-sb-link.active {
  background:   var(--bt-gold-pale);
  color:        var(--bt-gold);
  font-weight:  var(--bt-fw);
  border-left:  3px solid var(--bt-gold);
  padding-left: calc(var(--bt-sb-pad-h, 12px) - 3px);
}
.bt-sb-link.active svg,
.bt-sb-link.active .bt-cat-icon-wrap { color: var(--bt-gold); }

.bt-sb-count {
  margin-left:   auto;
  font-size:     10px;
  padding:       2px 7px;
  background:    var(--bt-bg2);
  border-radius: 20px;
  color:         var(--bt-text3);
  flex-shrink:   0;
  font-weight:   500;
  transform:     translateY(var(--bt-sb-va, 0px));
}
.bt-sb-link.active .bt-sb-count {
  background: rgba(184,150,62,0.15);
  color:      var(--bt-gold);
}

/* ── RESULTS HEADER ── */
.bt-results-header {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 14px;
  min-height: 24px;
}
.bt-results-count { font-size: var(--bt-fm); color: var(--bt-text3); }
.bt-active-cat {
  font-size: var(--bt-fm);
  padding: 2px 10px;
  border-radius: 20px;
  background: var(--bt-gold-pale);
  color: var(--bt-gold);
  font-weight: 500;
  display: none;
}
.bt-active-cat.visible { display: inline-block; }

/* ── LOADING ── */
.bt-loading {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 48px;
  gap: 12px;
  color: var(--bt-text3);
  font-size: var(--bt-fm);
}
.bt-spinner {
  width: 28px; height: 28px;
  border: 2.5px solid var(--bt-border);
  border-top-color: var(--bt-gold);
  border-radius: 50%;
  animation: bt-spin .8s linear infinite;
}
@keyframes bt-spin { to { transform: rotate(360deg); } }

/* ── VUE GRILLE ── */
.bt-view-grid {
  display: grid;
  grid-template-columns: repeat(var(--bt-grid-cols, 4), 1fr);
  gap: 14px;
  align-items: start;
}

/* Carte */
.bt-card {
  background:  var(--bt-bg);
  border:      0.5px solid var(--bt-border);
  border-radius: var(--bt-radius);
  overflow:    hidden;
  transition:  border-color .15s, box-shadow .15s;
  cursor:      pointer;
  display:     flex;
  flex-direction: column;
}
.bt-card:hover {
  border-color: var(--bt-gold);
  box-shadow:   0 4px 16px rgba(0,0,0,0.07);
}
.bt-card-cover {
  width: 100%;
  aspect-ratio: 1/1;
  background: var(--bt-bg2);
  position: relative;
  overflow: hidden;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}
.bt-card-cover img {
  width: 100%; height: 100%;
  object-fit: cover;
  display: block;
}
.bt-card-cover-placeholder {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  width: 100%; height: 100%;
}
.bt-card-cover-placeholder svg { width: 32px; height: 32px; color: var(--bt-text3); }
.bt-type-badge {
  position: absolute;
  top: 7px; left: 7px;
  font-size: 9px;
  font-weight: 600;
  padding: 2px 7px;
  border-radius: 3px;
  text-transform: uppercase;
  letter-spacing: 0.06em;
}
.bt-featured-star {
  position: absolute;
  top: 7px; right: 7px;
  font-size: 13px;
}

/* Card body — même hauteur pour toutes les cartes */
.bt-card-body {
  padding:     10px 11px 6px;
  flex:        1;              /* grandit pour remplir l'espace */
  display:     flex;
  flex-direction: column;
  align-items: flex-start;     /* éléments alignés en haut */
  min-height:  0;
}

/* Titre — 2 lignes max avec tooltip au hover */
.bt-card-title {
  font-size:             var(--bt-ft);
  font-weight:           var(--bt-fw);
  color:                 var(--bt-text);
  line-height:           1.4;
  margin-bottom:         5px;
  display:               -webkit-box;
  -webkit-line-clamp:    2;
  -webkit-box-orient:    vertical;
  overflow:              hidden;
  word-break:            break-word;
  max-height:            calc(1.4em * 2);
  width:                 100%;
}

.bt-card-meta {
  display: flex;
  align-items: center;
  gap: 5px;
  flex-wrap: wrap;
  font-size: var(--bt-fm);
  color: var(--bt-text3);
  margin-top: auto;   /* pousse les meta vers le bas du body */
}
.bt-card-meta svg { width: 12px; height: 12px; flex-shrink: 0; }

/* Card footer — centrage vertical, hauteur uniforme */
.bt-card-footer {
  padding:         0 11px;
  height:          40px;          /* hauteur uniforme pour toutes les cartes */
  min-height:      40px;
  border-top:      0.5px solid var(--bt-border);
  display:         flex !important;
  align-items:     center !important;  /* centrage vertical forcé */
  justify-content: space-between;
  gap:             8px;
  flex-shrink:     0;
}

.bt-dl-btn {
  display:     flex;
  align-items: center;
  gap:         4px;
  font-size:   var(--bt-fm);
  font-weight: 500;
  color:       var(--bt-gold);
  cursor:      pointer;
  background:  none;
  border:      none;
  padding:     0;
  font-family: var(--bt-font);
  line-height: 1;
}
.bt-dl-btn svg { width: 14px; height: 14px; }
.bt-dl-btn:hover { opacity: 0.75; }

.bt-file-info { font-size: 10px; color: var(--bt-text3); }

/* Compteur de téléchargements */
.bt-dl-count {
  font-size:   10px;
  color:       var(--bt-text3);
  white-space: nowrap;
  display:     flex;
  align-items: center;
  gap:         3px;
  line-height: 1;
}
.bt-dl-count svg { width: 10px; height: 10px; flex-shrink: 0; }

/* ── BADGE COULEURS ── */
.bt-badge-rapport     { background: #d4a017; color: #fff; }
.bt-badge-bulletin    { background: #2563eb; color: #fff; }
.bt-badge-decret      { background: #1A1C1E; color: #fff; }
.bt-badge-directive   { background: #16a34a; color: #fff; }
.bt-badge-instruction { background: #ea580c; color: #fff; }
.bt-badge-code        { background: #7c3aed; color: #fff; }
.bt-badge-strategie   { background: #0891b2; color: #fff; }
.bt-badge-loi         { background: #b45309; color: #fff; }
.bt-badge-autre       { background: #6b7280; color: #fff; }

/* ── VUE LISTE ── */
.bt-view-list { display: flex; flex-direction: column; gap: 8px; }
.bt-list-item {
  background: var(--bt-bg);
  border: 0.5px solid var(--bt-border);
  border-radius: var(--bt-radius);
  padding: 12px 14px;
  display: flex;
  align-items: flex-start;
  gap: 12px;
  cursor: pointer;
  transition: border-color .15s;
}
.bt-list-item:hover { border-color: var(--bt-gold); }
.bt-list-thumb {
  width: 44px; height: 56px;
  border-radius: 4px;
  overflow: hidden;
  flex-shrink: 0;
  background: var(--bt-bg2);
  display: flex;
  align-items: center;
  justify-content: center;
}
.bt-list-thumb img { width: 100%; height: 100%; object-fit: cover; }
.bt-list-thumb svg { width: 20px; height: 20px; color: var(--bt-text3); }
.bt-list-info { flex: 1; min-width: 0; }
.bt-list-title {
  font-size: var(--bt-ft);
  font-weight: var(--bt-fw);
  color: var(--bt-text);
  line-height: 1.4;
  margin-bottom: 5px;
  /* Titres sur 2 lignes max en liste aussi */
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.bt-list-meta {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: var(--bt-fm);
  color: var(--bt-text3);
  flex-wrap: wrap;
}
.bt-list-meta span { display: flex; align-items: center; gap: 3px; }
.bt-list-meta svg { width: 11px; height: 11px; }
.bt-list-actions {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-shrink: 0;
}
.bt-icon-btn {
  width: 30px; height: 30px;
  border: 0.5px solid var(--bt-border);
  border-radius: var(--bt-radius);
  background: var(--bt-bg);
  color: var(--bt-text2);
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: border-color .15s, color .15s;
}
.bt-icon-btn svg { width: 14px; height: 14px; }
.bt-icon-btn:hover { border-color: var(--bt-gold); color: var(--bt-gold); }

/* ── EMPTY STATE ── */
.bt-empty {
  text-align: center;
  padding: 48px 20px;
  color: var(--bt-text3);
}
.bt-empty svg { width: 40px; height: 40px; margin: 0 auto 12px; display: block; opacity: 0.4; }
.bt-empty p { font-size: var(--bt-fb); }

/* ── PAGINATION ── */
.bt-pagination {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  margin-top: 20px;
  flex-wrap: wrap;
}
.bt-page-btn {
  min-width: 32px; height: 32px;
  padding: 0 8px;
  border-radius: var(--bt-radius);
  border: 0.5px solid var(--bt-border);
  background: var(--bt-bg);
  font-size: var(--bt-fm);
  font-weight: 500;
  color: var(--bt-text2);
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: background .15s, border-color .15s;
  font-family: var(--bt-font);
}
.bt-page-btn.active { background: var(--bt-navy); border-color: var(--bt-navy); color: #fff; }
.bt-page-btn:hover:not(.active) { border-color: var(--bt-gold); color: var(--bt-gold); }
.bt-page-btn svg { width: 13px; height: 13px; }

/* ── TOAST ── */
.bt-toast {
  position: fixed;
  bottom: 20px;
  right: 20px;
  background: var(--bt-navy);
  color: #fff;
  padding: 12px 20px;
  border-radius: var(--bt-radius);
  font-size: var(--bt-fb);
  box-shadow: 0 4px 16px rgba(0,0,0,0.2);
  z-index: 9999;
  display: flex;
  align-items: center;
  gap: 8px;
  animation: bt-slidein .3s ease;
  border-left: 3px solid var(--bt-gold);
}
@keyframes bt-slidein { from { opacity:0; transform:translateY(10px); } to { opacity:1; transform:translateY(0); } }

/* ── TOOLTIP TITRE ── */
.bt-card-title[title] { cursor: default; }

/* ── VISIONNEUSE PDF — MODAL ── */
.bt-pdf-modal {
  display:  none;
  position: fixed;
  inset:    0;
  z-index:  99999;
}
.bt-pdf-modal.bt-modal-open { display: flex; align-items: center; justify-content: center; }
.bt-pdf-modal-overlay {
  position:   absolute;
  inset:      0;
  background: rgba(10,10,20,0.72);
  backdrop-filter: blur(3px);
  cursor:     pointer;
}
.bt-pdf-modal-box {
  position:      relative;
  z-index:       1;
  width:         90vw;
  max-width:     1100px;
  height:        90vh;
  background:    #fff;
  border-radius: 10px;
  box-shadow:    0 24px 80px rgba(0,0,0,0.35);
  display:       flex;
  flex-direction: column;
  overflow:      hidden;
  animation:     bt-modal-in .22s cubic-bezier(.4,0,.2,1);
}
@keyframes bt-modal-in {
  from { opacity:0; transform: scale(.96) translateY(12px); }
  to   { opacity:1; transform: scale(1)   translateY(0); }
}
.bt-pdf-modal-header {
  display:         flex;
  align-items:     center;
  justify-content: space-between;
  padding:         12px 16px;
  background:      #1A1C1E;
  gap:             12px;
  flex-shrink:     0;
}
.bt-pdf-modal-title {
  font-size:   14px;
  font-weight: 600;
  color:       #fff;
  flex:        1;
  overflow:    hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.bt-pdf-modal-actions {
  display:    flex;
  align-items: center;
  gap:        8px;
  flex-shrink: 0;
}
.bt-pdf-dl-link {
  display:    inline-flex;
  align-items: center;
  gap:        5px;
  font-size:  12px !important;
  padding:    5px 12px !important;
  background: #B8963E !important;
  border:     none !important;
  color:      #fff !important;
  border-radius: 5px !important;
  text-decoration: none;
  line-height: 1 !important;
  height:     30px;
}
.bt-pdf-dl-link:hover { opacity: .88; color: #fff !important; }
.bt-pdf-modal-close {
  width:      32px;
  height:     32px;
  border:     none;
  background: rgba(255,255,255,0.12);
  border-radius: 6px;
  cursor:     pointer;
  display:    flex;
  align-items: center;
  justify-content: center;
  color:      #fff;
  flex-shrink: 0;
  transition: background .15s;
}
.bt-pdf-modal-close:hover { background: rgba(255,255,255,0.22); }
.bt-pdf-modal-body {
  flex:     1;
  position: relative;
  min-height: 0;
}
.bt-pdf-iframe {
  width:  100%;
  height: 100%;
  border: none;
  display: block;
}
.bt-pdf-modal-loading {
  position:       absolute;
  inset:          0;
  display:        flex;
  flex-direction: column;
  align-items:    center;
  justify-content: center;
  gap:            12px;
  background:     #f8f8f8;
  color:          #888;
  font-size:      13px;
  pointer-events: none;
  transition:     opacity .3s;
}
.bt-pdf-modal-loading.bt-loaded { opacity: 0; }

/* Bouton "Voir" dans les cards */
.bt-view-btn-card {
  display:    inline-flex;
  align-items: center;
  gap:        4px;
  font-size:  var(--bt-fm);
  font-weight: 500;
  color:      var(--bt-text2);
  cursor:     pointer;
  background: none;
  border:     none;
  padding:    0;
  font-family: var(--bt-font);
  transition: color .15s;
  line-height: 1;
  flex-shrink: 0;
}
.bt-view-btn-card svg { width: 13px; height: 13px; }
.bt-view-btn-card:hover { color: var(--bt-gold); }

body.bt-modal-active { overflow: hidden; }

/* ── RESPONSIVE ── */
@media (max-width: 1024px) {
  .bt-body.has-sidebar {
    grid-template-columns: minmax(220px, var(--bt-sb-width)) 1fr;
  }
}
@media (max-width: 768px) {
  .bt-body.has-sidebar { grid-template-columns: 1fr; }
  .bt-sidebar          { position: static; }
  .bt-stats-row        { grid-template-columns: repeat(2,1fr); }
  .bt-view-grid        { grid-template-columns: repeat(min(var(--bt-grid-cols, 4), 2), 1fr) !important; }
  .bt-topbar           { flex-direction: column; align-items: stretch; }
  .bt-toolbar          { justify-content: flex-end; }
}
@media (max-width: 480px) {
  .bt-view-grid { grid-template-columns: 1fr 1fr !important; }
  .bt-pdf-modal-box {
    width: 100vw;
    height: 100dvh;
    border-radius: 0;
    max-width: none;
  }
}

/* ── Variables icônes SVG sidebar (v1.3.1) ── */
:root {
  --bt-icon-size: 18px;
  --bt-icon-gap: 8px;
  --bt-icon-valign: 0px;
  --bt-icon-color: var(--bt-gold, #B8963E);
}
.bt-sb-cat-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: var(--bt-icon-size);
  height: var(--bt-icon-size);
  margin-right: var(--bt-icon-gap);
  position: relative;
  top: var(--bt-icon-valign);
  color: var(--bt-icon-color);
  flex-shrink: 0;
}
.bt-sb-cat-icon svg {
  width: 100%;
  height: 100%;
}
