/* =========================================================
   All Media Downloader — Styles globaux (Bootstrap 5)
   Thème clair/sombre, tables, code, offcanvas mobile, footer
   Inclut : sidebar sticky desktop, bouton copier fixe (wrapper)
========================================================= */

/* ---------- Thème clair ---------- */
:root {
  --bg:#ffffff; --surface:#f8fafc; --surface-2:#eef2f7;
  --text:#0b1220; --muted:#5b6270;
  --primary:#6C5CE7; --primary-contrast:#ffffff; --link:#3b82f6;
  --ring:transparent; /* ring neutralisé */

  /* Code clair */
  --code-bg:#f5f7fb; --code-text:#0b1220; --code-border:rgba(2,6,23,.12);

  /* Tables clair */
  --tbl-bg:#ffffff; --tbl-head-bg:#f1f5f9; --tbl-border:#e2e8f0;
  --tbl-text:#0b1220; --tbl-muted:#485062; --tbl-stripe:#f8fafc;
  --tbl-hover: color-mix(in oklab, var(--tbl-stripe), transparent 30%);
  --tbl-kbd-bg:#eef2f7;

  /* Scrollbar (clair) */
  --sb-track:#eef2f7;
  --sb-thumb:#cbd5e1;
  --sb-thumb-hover:#94a3b8;

  /* Bootstrap align */
  --bs-body-bg:var(--bg); --bs-body-color:var(--text);
  --bs-secondary-color:var(--muted); --bs-secondary-bg:var(--surface-2);

  --card-border:rgba(2,6,23,.08);
  --shadow:0 10px 30px rgba(2,6,23,.08);
}

/* ---------- Thème sombre ---------- */
html[data-theme="dark"]{
  --bg:#0b1220; --surface:#0f1629; --surface-2:#111a2f;
  --text:#e6e9ef; --muted:#a9b1c3;
  --primary:#8B7BFF; --primary-contrast:#0b1220; --link:#8ab4ff;
  --ring:transparent; /* ring neutralisé */

  /* Code sombre */
  --code-bg:#0b1220; --code-text:#e6e9ef; --code-border:rgba(148,163,184,.22);

  /* Tables sombre */
  --tbl-bg:#0f1629; --tbl-head-bg:#0c1322; --tbl-border:#23304a;
  --tbl-text:#e6e9ef; --tbl-muted:#a9b1c3; --tbl-stripe:#111a2f;
  --tbl-hover: color-mix(in oklab, #111a2f, transparent 30%);
  --tbl-kbd-bg:#0c1322;

  /* Scrollbar (sombre) */
  --sb-track:#0f1629;
  --sb-thumb:#2a3b5e;
  --sb-thumb-hover:#3a4f7c;

  /* Bootstrap align */
  --bs-body-bg:var(--bg); --bs-body-color:var(--text);
  --bs-secondary-color:var(--muted); --bs-secondary-bg:var(--surface-2);

  --card-border:rgba(148,163,184,.18);
  --shadow:0 10px 30px rgba(0,0,0,.45);
}

/* ---------- Base ---------- */
*{box-sizing:border-box}
html,body{height:100%;max-width:100%;overflow-x:hidden}
body{
  font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,"Helvetica Neue",Arial,"Noto Sans";
  background:var(--bg); color:var(--text); -webkit-text-size-adjust:100%;
}
a{color:var(--link);text-decoration:none} a:hover{text-decoration:underline}
img,svg,video,canvas{max-width:100%;height:auto}
.material-symbols-rounded{font-variation-settings:'FILL' 0,'wght' 500,'GRAD' 0,'opsz' 24}

/* ---------- Topbar ---------- */
.docs-topbar{
  position:sticky; top:0; z-index:1030; backdrop-filter:saturate(180%) blur(8px);
  background: color-mix(in oklab, var(--bg), transparent 10%);
  border-bottom:1px solid var(--card-border);
}
.brand{display:flex;align-items:center;gap:.6rem;font-weight:800;letter-spacing:-.02em}
.brand .logo{
  width:36px;height:36px;border-radius:10px;display:grid;place-items:center;
  background:linear-gradient(135deg,#6C5CE7,#22d3ee);color:#fff;box-shadow:var(--shadow)
}
.nav-icon{
  display:flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:10px;
  border:1px solid var(--card-border); background:linear-gradient(180deg,var(--surface),var(--surface-2));
  color:var(--text); transition:.2s ease;
}
.nav-icon:hover{transform:translateY(-1px);box-shadow:var(--shadow)}

/* ---------- Offcanvas mobile (pro) ---------- */
@keyframes amdSlideIn{from{transform:translateX(-12px);opacity:.0}to{transform:translateX(0);opacity:1}}
@keyframes amdItemIn{from{transform:translateX(-6px);opacity:.0}to{transform:translateX(0);opacity:1}}
.offcanvas.amd-offcanvas{
  background: linear-gradient(180deg, var(--surface), var(--surface-2));
  color: var(--text); border-right:1px solid var(--card-border);
  animation: amdSlideIn .22s ease-out; box-shadow:0 20px 60px rgba(0,0,0,.18);
}
.offcanvas-header{border-bottom:1px solid var(--card-border); background:color-mix(in oklab, var(--surface), var(--primary) 6%)}
.offcanvas .btn-close{filter: invert(var(--btn-close-invert,0))} html[data-theme="dark"] .offcanvas .btn-close{--btn-close-invert:1}
.offcanvas-search .form-control{background:var(--bg);color:var(--text);border-color:var(--card-border)}
.list-title{font-size:.8rem;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin:8px 0 6px}
.divider{height:1px;background:var(--card-border);margin:8px 0 12px}
.amd-navlist{display:flex;flex-direction:column;gap:6px}
.amd-item{
  display:flex;align-items:center;gap:.6rem;padding:12px 14px;border:1px solid var(--card-border);
  border-radius:12px;background:transparent;color:var(--text);text-decoration:none;
  animation:amdItemIn .18s ease both;
}
.amd-item .material-symbols-rounded{font-size:20px}
.amd-item:hover{background:color-mix(in oklab,var(--primary),transparent 85%);transform:translateX(2px);transition:.15s}
.amd-item.active{background:color-mix(in oklab,var(--primary),transparent 80%);border-color:color-mix(in oklab,var(--primary),transparent 60%)}
.offcanvas-backdrop.show{backdrop-filter:blur(4px);background:rgba(2,6,23,.35)}

/* ---------- Layout grid ---------- */
.docs{display:grid;grid-template-columns:290px 1fr;min-height:calc(100vh - 64px);overflow:visible}
.sidebar,.main{min-width:0} .sidebar{z-index:2} .main{position:relative;z-index:1}
@media(max-width:992px){.docs{grid-template-columns:1fr}}

/* ---------- Sidebar desktop (sticky) ---------- */
.sidebar{
  border-right:1px solid var(--card-border); background:linear-gradient(180deg,var(--surface),var(--surface-2));
  max-width:290px;width:100%;
  position: sticky; top: 64px; height: calc(100vh - 64px); overflow: auto;
  -webkit-overflow-scrolling: touch;
}
.sidebar .link-group{padding:10px 16px}
.sidebar .link-title{font-size:.85rem;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin:10px 0 6px}
.sidebar a.nav-link{display:flex;align-items:center;gap:.6rem;padding:.5rem .6rem;border-radius:10px;color:var(--text);text-decoration:none}
.sidebar a.nav-link.active,.sidebar a.nav-link:hover{
  background:color-mix(in oklab,var(--primary),transparent 85%); border:1px solid color-mix(in oklab,var(--primary),transparent 70%);
}

/* ---------- Main ---------- */
.main{padding:16px 24px 96px} @media(max-width:576px){.main{padding:12px 12px 104px}}
.breadcrumb{--bs-breadcrumb-divider:'›'} .breadcrumb .breadcrumb-item a{text-decoration:none}

/* ---------- Sections ---------- */
.section{scroll-margin-top:90px;padding:16px 0;border-bottom:1px solid var(--card-border);margin-bottom:32px}
.section:last-child{border-bottom:0}
.section-title{font-weight:800;letter-spacing:-.02em;margin-bottom:12px}
.lead{color:var(--muted)}

/* ---------- Cards & badges ---------- */
.card{background:linear-gradient(180deg,var(--surface),var(--surface-2));border:1px solid var(--card-border);box-shadow:var(--shadow);border-radius:16px}
.card p,.card li,.card .card-text,.card .mb-0{color:var(--text);overflow-wrap:break-word}
.text-secondary,.text-body-secondary,.card .text-secondary{color:var(--muted)!important}
.badge-soft{border:1px solid var(--card-border);color:var(--muted);background:var(--surface)}

/* ---------- Tabs ---------- */
.nav-pills .nav-link{color:var(--muted);font-weight:600;border:1px solid var(--card-border);border-radius:10px;background:var(--surface)}
.nav-pills .nav-link.active{background:var(--primary);color:var(--primary-contrast);border-color:color-mix(in oklab,var(--primary),transparent 60%)}

/* ---------- Code blocks (wrapper + bouton fixe) ---------- */
.codeblock{position:relative}
.codeblock .copy-btn{
  position:absolute; top:.5rem; right:.5rem; z-index:3;
  border:1px solid var(--code-border); background:color-mix(in oklab,var(--code-bg),transparent 0%);
  color:var(--code-text); border-radius:10px; padding:.35rem .6rem; font-weight:600;
  box-shadow:0 4px 12px rgba(0,0,0,.08);
}
.codeblock pre{
  background:var(--code-bg); color:var(--code-text);
  padding:1rem 1.25rem; border-radius:14px; border:1px solid var(--code-border);
  overflow:auto; position:relative; max-width:100%; padding-right:3.25rem; -webkit-overflow-scrolling:touch;
}
code{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}

/* ---------- Tables ---------- */
.table{
  --bs-table-color:var(--tbl-text); --bs-table-bg:var(--tbl-bg); --bs-table-border-color:var(--tbl-border);
  --bs-table-striped-bg:var(--tbl-stripe); --bs-table-striped-color:var(--tbl-text);
  --bs-table-hover-bg:var(--tbl-hover); --bs-table-hover-color:var(--tbl-text);
  color:var(--tbl-text); background:var(--tbl-bg); border-color:var(--tbl-border);
}
.table thead th{background:var(--tbl-head-bg)!important;color:var(--tbl-muted)!important;border-bottom:1px solid var(--tbl-border)!important}
.table th,.table td{color:var(--tbl-text);vertical-align:middle}
.table td .text-secondary,.table th .text-secondary{color:var(--tbl-muted)!important}
.table code{
  background:color-mix(in oklab,var(--tbl-head-bg),transparent 15%); color:var(--tbl-text);
  padding:.08rem .35rem; border-radius:.35rem; border:1px solid color-mix(in oklab,var(--tbl-border),transparent 30%);
}
.table kbd{
  background:var(--tbl-kbd-bg); color:var(--tbl-text);
  padding:.08rem .35rem; border-radius:.35rem; border:1px solid color-mix(in oklab,var(--tbl-border),transparent 30%); font-size:.85em;
}

/* ---------- Alerts (icônes visibles) ---------- */
.alert{border-color:var(--card-border)}
.alert.alert-info,.alert.alert-secondary{
  color:var(--text)!important; background:var(--surface-2)!important; border-color:var(--card-border)!important;
}
.alert .alert-icon,.alert .material-symbols-rounded{color:var(--text)!important}

/* ---------- Footer riche ---------- */
.site-footer{
  border-top:1px solid var(--card-border);
  background: linear-gradient(180deg, var(--surface), var(--bg));
  color: var(--text);
  padding: 32px 0 20px;
}
.footer-grid{
  display:grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 24px;
}
@media (max-width: 992px){ .footer-grid{ grid-template-columns: repeat(2,1fr); } }
@media (max-width: 576px){ .footer-grid{ grid-template-columns: 1fr; } }
.footer-title{font-weight:800;letter-spacing:.02em;margin-bottom:10px}
.footer-text{ color: var(--muted); margin-bottom: 12px; }
.footer-links{ list-style:none; padding:0; margin:0; }
.footer-links li{ margin: 6px 0; }
.footer-links a{
  color: var(--text); text-decoration: none; display:inline-flex; align-items:center; gap:6px; padding: 2px 0;
  transition: color .15s ease, transform .12s ease;
}
.footer-links a:hover{
  color: color-mix(in oklab, var(--primary), transparent 35%);
  text-decoration: underline;
  text-underline-offset: 3px;
  text-decoration-thickness: 2px;
  transform: translateX(2px);
}
.socials{ display:flex; gap:10px; }
.social-btn{
  width:38px; height:38px; display:grid; place-items:center;
  border-radius:12px; border:1px solid var(--card-border);
  background: linear-gradient(180deg, var(--surface), var(--surface-2));
  color: var(--text);
  transition: transform .15s ease, box-shadow .15s ease, border-color .15s ease, background .15s ease;
}
.social-btn:hover{
  transform: translateY(-2px) scale(1.03);
  box-shadow: 0 10px 24px rgba(2,6,23,.12);
  border-color: color-mix(in oklab, var(--primary), transparent 60%);
  background: linear-gradient(180deg, color-mix(in oklab, var(--surface), var(--primary) 6%), var(--surface-2));
}
.newsletter .newsletter-row{ display:flex; gap:8px; align-items:center; }
.newsletter .form-control{ background: var(--bg); color: var(--text); border-color: var(--card-border); }
.newsletter .btn .material-symbols-rounded{ font-size: 20px; }
.footer-sep{ border-color: var(--card-border); margin: 20px 0; }
.footer-credits{
  display:flex; align-items:center; justify-content:space-between; gap:12px; color: var(--muted); font-size: .95rem;
}
.footer-mini-link{
  color: var(--muted); text-decoration:none; margin-left:12px;
  transition: color .15s ease, text-decoration-color .15s ease;
}
.footer-mini-link:hover{
  color: color-mix(in oklab, var(--primary), transparent 30%);
  text-decoration: underline;
  text-underline-offset: 3px;
  text-decoration-thickness: 2px;
}
.footer-credits .sep{ opacity:.6; margin: 0 6px; }

/* ---------- Mobile bottom nav ---------- */
.mobile-nav{
  position:fixed;bottom:0;left:0;right:0;z-index:998;display:grid;grid-template-columns:repeat(3,1fr);
  background:linear-gradient(180deg,var(--surface),var(--surface-2));border-top:1px solid var(--card-border);
  padding:8px env(safe-area-inset-right) calc(8px + env(safe-area-inset-bottom)) env(safe-area-inset-left);
}
.mobile-btn{
  display:flex;flex-direction:column;align-items:center;gap:4px;border:1px solid var(--card-border);border-radius:12px;
  background:var(--bg);color:var(--text);padding:6px 8px
}
.mobile-btn .material-symbols-rounded{font-size:22px}

/* ---------- Back to top ---------- */
#backToTop{
  position:fixed;bottom:96px;right:22px;z-index:999;width:48px;height:48px;border-radius:14px;
  background:linear-gradient(135deg,#6C5CE7,#22d3ee);color:#fff;opacity:0;transform:translateY(20px);
  transition:.25s ease;display:flex;align-items:center;justify-content:center
}
#backToTop.show{opacity:1;transform:translateY(0)}

/* ---------- Micro fixes xs ---------- */
@media(max-width:576px){
  .brand{flex-wrap:nowrap;min-width:0} .brand div{min-width:0}
  .card,.table-responsive,.table{min-width:0}
}

/* ===== Skeleton loader (léger) ===== */
.skeleton .skeleton-line{
  height: 14px; border-radius: 8px; background: linear-gradient(90deg, rgba(0,0,0,.08), rgba(0,0,0,.04), rgba(0,0,0,.08));
  animation: skel 1.2s infinite ease-in-out;
}
:root[data-theme="dark"] .skeleton .skeleton-line{
  background: linear-gradient(90deg, rgba(255,255,255,.08), rgba(255,255,255,.04), rgba(255,255,255,.08));
}
.skeleton .skeleton-grid{
  display:grid; gap:12px; grid-template-columns: repeat(3,minmax(0,1fr));
}
@media (max-width: 992px){ .skeleton .skeleton-grid{ grid-template-columns:1fr; } }
.skeleton .skeleton-card{
  height: 110px; border-radius: 14px;
  background: linear-gradient(90deg, rgba(0,0,0,.08), rgba(0,0,0,.04), rgba(0,0,0,.08));
  animation: skel 1.2s infinite ease-in-out;
}
:root[data-theme="dark"] .skeleton .skeleton-card{
  background: linear-gradient(90deg, rgba(255,255,255,.08), rgba(255,255,255,.04), rgba(255,255,255,.08));
}
@keyframes skel{ 0%{background-position-x:0} 100%{background-position-x:200%} }

/* =======================================================================
   === Offcanvas + Sidebar Search Enhanced (XAPIFREE)
   ======================================================================= */
.search-enhanced .xf-brand{
  display:flex; align-items:center; gap:.6rem; margin-bottom:.5rem; user-select:none;
}
.search-enhanced .xf-logo{
  width:34px; height:34px; border-radius:10px; display:grid; place-items:center; color:#fff;
  background: linear-gradient(135deg, #6C5CE7, #22d3ee);
  box-shadow: var(--shadow);
  animation: xfPulse 1.8s ease-in-out infinite;
}
.search-enhanced .xf-name{
  font-weight:900; letter-spacing:.18em;
  background: linear-gradient(90deg, #6C5CE7, #22d3ee);
  -webkit-background-clip:text; background-clip:text; color:transparent;
}
@keyframes xfPulse{ 0%,100%{transform:none;box-shadow:var(--shadow)} 50%{transform:translateY(-1px);box-shadow:0 12px 30px rgba(108,92,231,.25)} }

/* Champ */
.search-enhanced .xf-search-wrap{ position:relative; display:flex; align-items:center; }
.search-enhanced .xf-input{
  background: var(--bg); color: var(--text); border:1px solid var(--card-border);
  height:48px; border-radius:12px; padding-left:44px; padding-right:52px;
  transition: border-color .18s ease, background .18s ease;
}
/* Saisie: pas de box-shadow / ring (global) */
.search-enhanced .xf-input:focus,
.search-enhanced .xf-input:not(:placeholder-shown){
  border-color: color-mix(in oklab, var(--primary), transparent 55%) !important;
  box-shadow: none !important; outline: 0;
}
.search-enhanced .xf-icon{ position:absolute; left:12px; color:var(--muted); pointer-events:none; }
.search-enhanced .xf-clear{
  position:absolute; right:8px; top:50%; transform:translateY(-50%);
  width:34px; height:34px; border-radius:10px; display:grid; place-items:center;
  border:1px solid var(--card-border); background: var(--surface); color:inherit;
  opacity:0; transition:.15s ease;
}
.search-enhanced .xf-input:not(:placeholder-shown) ~ .xf-clear,
.search-enhanced .xf-input:focus ~ .xf-clear{ opacity:1; }

/* Desktop sidebar tweaks */
.search-enhanced.is-sidebar .xf-input{ height:42px; }

/* =======================================================================
   === Scrollbars (thème clair/sombre) — sidebar + zone principale + body
   ======================================================================= */
.sidebar, .main, body{
  scrollbar-width: thin; /* Firefox */
  scrollbar-color: var(--sb-thumb) var(--sb-track); /* Firefox */
}
.sidebar::-webkit-scrollbar,
.main::-webkit-scrollbar,
body::-webkit-scrollbar{
  width:10px; height:10px;
}
.sidebar::-webkit-scrollbar-track,
.main::-webkit-scrollbar-track,
body::-webkit-scrollbar-track{
  background: var(--sb-track);
}
.sidebar::-webkit-scrollbar-thumb,
.main::-webkit-scrollbar-thumb,
body::-webkit-scrollbar-thumb{
  background: var(--sb-thumb);
  border-radius: 10px;
  border: 2px solid var(--sb-track);
}
.sidebar::-webkit-scrollbar-thumb:hover,
.main::-webkit-scrollbar-thumb:hover,
body::-webkit-scrollbar-thumb:hover{
  background: var(--sb-thumb-hover);
}

/* =======================================================================
   === Global inputs: suppression des box-shadows anneau focus (BS5)
   ======================================================================= */
.form-control:focus,
.form-select:focus,
.input-group .form-control:focus{
  box-shadow: none !important;
  outline: 0;
  border-color: color-mix(in oklab, var(--primary), transparent 55%);
}

/* Dark tweaks */
html[data-theme="dark"] .search-enhanced .xf-clear{ border-color: var(--card-border); background: var(--surface); }