:root{
  --bg:#0b1020; --bg-2:#0e1428;
  --card:rgba(30,41,59,.62); --card-solid:#161f33;
  --line:rgba(148,163,184,.16); --line-strong:rgba(148,163,184,.28);
  --text:#e8eef7; --muted:#9aa8be; --faint:#6b7890;
  --accent:#6366f1; --accent-2:#22d3ee; --accent-d:#4f46e5;
  --ok:#22c55e; --err:#ef4444; --warn:#f59e0b;
  --inset:#0a0f1e;
  --radius:14px; --radius-sm:9px;
  --shadow:0 10px 30px -12px rgba(0,0,0,.55);
  --shadow-lg:0 24px 60px -20px rgba(2,6,23,.85);
  --ring:0 0 0 3px rgba(99,102,241,.32);
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  margin:0;min-height:100vh;
  font-family:"Inter",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  color:var(--text);line-height:1.55;letter-spacing:.1px;
  background:
    radial-gradient(900px 500px at 12% -8%,rgba(99,102,241,.18),transparent 60%),
    radial-gradient(800px 480px at 100% 0%,rgba(34,211,238,.12),transparent 55%),
    linear-gradient(180deg,var(--bg) 0%,var(--bg-2) 100%);
  background-attachment:fixed;
  -webkit-font-smoothing:antialiased;
}
a{color:var(--accent-2);text-decoration:none;transition:color .15s ease}
a:hover{color:#67e8f9;text-decoration:none}
h1{font-size:1.55rem;font-weight:750;letter-spacing:-.2px;margin:.2rem 0 1rem}
h2{font-weight:680;letter-spacing:-.1px}
::selection{background:rgba(99,102,241,.4);color:#fff}

/* ---------- Barre supérieure ---------- */
.topbar{
  display:flex;align-items:center;gap:1.5rem;padding:.7rem 1.4rem;
  background:rgba(13,19,38,.72);backdrop-filter:blur(14px) saturate(140%);
  -webkit-backdrop-filter:blur(14px) saturate(140%);
  border-bottom:1px solid var(--line);flex-wrap:wrap;
  position:sticky;top:0;z-index:50;box-shadow:0 1px 0 rgba(255,255,255,.03),0 12px 30px -22px rgba(0,0,0,.9);
}
.brand{font-weight:800;font-size:1.12rem;letter-spacing:-.3px;
  background:linear-gradient(90deg,#fff,#c7d2fe);-webkit-background-clip:text;background-clip:text;color:transparent}
.topbar nav{display:flex;gap:.35rem;flex:1}
.topbar nav a{
  padding:.5rem .9rem;border-radius:10px;color:var(--muted);font-weight:550;
  transition:all .18s ease;position:relative}
.topbar nav a:hover{background:rgba(148,163,184,.1);color:var(--text)}
.topbar nav a.active{
  background:linear-gradient(180deg,rgba(99,102,241,.95),var(--accent-d));
  color:#fff;box-shadow:0 6px 18px -8px rgba(99,102,241,.8)}
.user{display:flex;align-items:center;gap:1rem;color:var(--muted);font-size:.92rem}
.user span{display:inline-flex;align-items:center;gap:.4rem}
.logout{color:var(--muted);padding:.4rem .7rem;border-radius:9px;border:1px solid var(--line);transition:all .18s ease}
.logout:hover{color:#fecaca;border-color:rgba(239,68,68,.5);background:rgba(239,68,68,.1)}

.content{max-width:1040px;margin:2rem auto;padding:0 1.2rem;animation:rise .4s ease both}
@keyframes rise{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}

/* ---------- Messages flash ---------- */
.flash{padding:.8rem 1.1rem;border-radius:11px;margin-bottom:1rem;font-weight:500;
  display:flex;align-items:center;gap:.5rem;backdrop-filter:blur(6px);border:1px solid transparent}
.flash.error{background:rgba(239,68,68,.12);border-color:rgba(239,68,68,.4);color:#fecaca}
.flash.success{background:rgba(34,197,94,.12);border-color:rgba(34,197,94,.4);color:#bbf7d0}

/* ---------- Connexion ---------- */
.login-card{
  max-width:380px;margin:12vh auto;background:var(--card);
  padding:2.2rem 2rem;border-radius:20px;border:1px solid var(--line);
  box-shadow:var(--shadow-lg);backdrop-filter:blur(20px) saturate(140%);
  -webkit-backdrop-filter:blur(20px) saturate(140%);
  animation:rise .5s ease both;position:relative;overflow:hidden}
.login-card::before{content:"";position:absolute;inset:0 0 auto 0;height:3px;
  background:linear-gradient(90deg,var(--accent),var(--accent-2))}
.login-card h1{margin:0 0 .25rem;font-size:1.5rem;text-align:center}
.login-card .sub{color:var(--muted);margin:0 0 .5rem;text-align:center;font-size:.92rem}
.login-card label{display:block;margin:1.1rem 0 .35rem;font-size:.85rem;color:var(--muted);font-weight:550}
.login-card input{width:100%;padding:.75rem .85rem;border-radius:11px;border:1px solid var(--line-strong);
  background:var(--inset);color:var(--text);font-size:1rem;transition:border-color .15s,box-shadow .15s}

input,select{font-family:inherit}
input:focus{outline:none;border-color:var(--accent);box-shadow:var(--ring)}

button{
  margin-top:1.3rem;width:100%;padding:.78rem;border:0;border-radius:11px;
  background:linear-gradient(180deg,var(--accent),var(--accent-d));
  color:#fff;font-size:1rem;font-weight:650;cursor:pointer;letter-spacing:.2px;
  box-shadow:0 10px 24px -10px rgba(99,102,241,.75);transition:transform .12s ease,box-shadow .18s ease,filter .15s}
button:hover{filter:brightness(1.07);box-shadow:0 14px 30px -10px rgba(99,102,241,.9)}
button:active{transform:translateY(1px)}

/* ---------- Fil d'Ariane ---------- */
.breadcrumb{margin-bottom:1.2rem;color:var(--muted);font-size:.92rem;
  display:flex;align-items:center;flex-wrap:wrap;gap:.1rem;
  background:var(--card);border:1px solid var(--line);border-radius:11px;
  padding:.55rem .9rem;backdrop-filter:blur(8px)}
.breadcrumb a{color:var(--muted)}.breadcrumb a:hover{color:var(--text)}
.breadcrumb span{margin:0 .35rem;color:var(--faint)}

/* ---------- Tableaux ---------- */
table.files{width:100%;border-collapse:separate;border-spacing:0;background:var(--card);
  border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;
  box-shadow:var(--shadow);backdrop-filter:blur(10px)}
table.files th,table.files td{padding:.72rem 1rem;text-align:left;border-bottom:1px solid var(--line)}
table.files thead th{color:var(--muted);font-weight:600;font-size:.78rem;text-transform:uppercase;
  letter-spacing:.6px;background:rgba(10,15,30,.4)}
table.files tbody tr{transition:background .14s ease}
table.files tbody tr:hover{background:rgba(99,102,241,.07)}
table.files tr:last-child td{border-bottom:0}
table.files code{background:var(--inset);padding:.18rem .45rem;border-radius:6px;
  font-size:.85em;border:1px solid var(--line);color:#c7d2fe}
.size{color:var(--muted);white-space:nowrap;font-variant-numeric:tabular-nums}
.empty{color:var(--muted);text-align:center;padding:2rem}
.btn-sm{display:inline-block;width:auto;margin:0;padding:.35rem .7rem;background:var(--inset);
  border:1px solid var(--line-strong);border-radius:8px;color:var(--text);font-size:.8rem;
  font-weight:550;box-shadow:none;cursor:pointer;transition:all .15s ease}
.btn-sm:hover{filter:none;border-color:var(--accent);background:rgba(99,102,241,.18);
  color:#fff;box-shadow:0 6px 16px -8px rgba(99,102,241,.7);transform:translateY(-1px)}

/* ---------- Cartes ---------- */
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);
  padding:1.4rem;margin-bottom:1.3rem;box-shadow:var(--shadow);backdrop-filter:blur(10px) saturate(130%)}
.card h2{margin-top:0;font-size:1.08rem;display:flex;align-items:center;gap:.5rem}
.current-wp{margin-bottom:1.2rem;color:var(--muted);background:var(--card);border:1px solid var(--line);
  border-radius:11px;padding:.7rem 1rem;backdrop-filter:blur(8px)}
.current-wp code{background:var(--inset);padding:.22rem .5rem;border-radius:6px;
  word-break:break-all;border:1px solid var(--line);color:#c7d2fe}
.upload{display:flex;gap:.8rem;align-items:center;flex-wrap:wrap}
.upload input{flex:1}
.upload input[type=file]{padding:.5rem;border-radius:10px;border:1px dashed var(--line-strong);
  background:var(--inset);color:var(--muted);cursor:pointer}
.upload input[type=file]::file-selector-button{margin-right:.8rem;padding:.45rem .8rem;border:0;border-radius:8px;
  background:rgba(99,102,241,.2);color:#c7d2fe;font-weight:600;cursor:pointer;transition:background .15s}
.upload input[type=file]::file-selector-button:hover{background:rgba(99,102,241,.35)}
.upload button{width:auto;margin:0}

/* ---------- Galerie de fonds d'écran ---------- */
.gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:1.1rem}
.thumb{background:var(--card);border:1px solid var(--line);border-radius:13px;
  padding:.6rem;text-align:center;margin:0;transition:transform .18s ease,box-shadow .18s ease,border-color .18s;
  box-shadow:var(--shadow)}
.thumb:hover{transform:translateY(-4px);border-color:var(--line-strong);box-shadow:var(--shadow-lg)}
.thumb img{width:100%;height:108px;object-fit:cover;border-radius:9px;background:#000;
  border:1px solid var(--line)}
.thumb-name{font-size:.75rem;color:var(--muted);margin:.45rem 0;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.thumb button{margin:0;padding:.4rem;font-size:.82rem}

/* ---------- Section Administration ---------- */
.admin-link{color:#fbbf24 !important}
.admin-link.active{background:linear-gradient(180deg,#f59e0b,#d97706)!important;color:#fff!important;
  box-shadow:0 6px 18px -8px rgba(245,158,11,.8)!important}
.admin-tabs{display:flex;gap:.4rem;flex-wrap:wrap;margin-bottom:1.4rem;
  background:var(--card);border:1px solid var(--line);border-radius:13px;padding:.4rem;
  backdrop-filter:blur(8px)}
.admin-tabs a{padding:.5rem .9rem;border-radius:9px;color:var(--muted);font-weight:550;transition:all .16s ease}
.admin-tabs a:hover{background:rgba(148,163,184,.1);color:var(--text)}
.admin-tabs a.active{background:linear-gradient(180deg,rgba(99,102,241,.95),var(--accent-d));
  color:#fff;box-shadow:0 6px 18px -8px rgba(99,102,241,.8)}
.muted{color:var(--muted)}

.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:1.1rem;margin:1.2rem 0}
.stat-card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:1.3rem;
  box-shadow:var(--shadow);backdrop-filter:blur(10px) saturate(130%);position:relative;overflow:hidden;
  transition:transform .18s ease,border-color .18s}
.stat-card:hover{transform:translateY(-3px);border-color:var(--line-strong)}
.stat-card::before{content:"";position:absolute;inset:0 0 auto 0;height:3px;
  background:linear-gradient(90deg,var(--accent),var(--accent-2));opacity:.85}
.stat-label{color:var(--muted);font-size:.82rem;text-transform:uppercase;letter-spacing:.6px;font-weight:600}
.stat-value{font-size:2.2rem;font-weight:780;margin:.25rem 0;letter-spacing:-1px;
  font-variant-numeric:tabular-nums;
  background:linear-gradient(90deg,#fff,#c7d2fe);-webkit-background-clip:text;background-clip:text;color:transparent}
.bar{height:9px;background:var(--inset);border-radius:6px;overflow:hidden;margin:.6rem 0;
  border:1px solid var(--line)}
.bar span{display:block;height:100%;border-radius:6px;
  background:linear-gradient(90deg,var(--accent),var(--accent-2));
  box-shadow:0 0 12px rgba(34,211,238,.5);transition:width .8s cubic-bezier(.22,1,.36,1)}

.badge{display:inline-flex;align-items:center;gap:.3rem;padding:.2rem .6rem;border-radius:999px;font-size:.74rem;
  font-weight:600;background:var(--inset);border:1px solid var(--line-strong);color:var(--muted)}
.badge.ok{background:rgba(34,197,94,.14);border-color:rgba(34,197,94,.45);color:#bbf7d0}
.badge.ok::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--ok);
  box-shadow:0 0 8px var(--ok)}
.badge.off{background:rgba(245,158,11,.13);border-color:rgba(245,158,11,.4);color:#fed7aa}
.badge.off::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--warn)}

.svc-actions{white-space:nowrap}
.btn-sm.danger{border-color:rgba(239,68,68,.4);color:#fecaca}
.btn-sm.danger:hover{background:rgba(239,68,68,.85);border-color:var(--err);color:#fff;
  box-shadow:0 6px 16px -8px rgba(239,68,68,.8)}

.search{display:flex;gap:.55rem;margin-bottom:1.2rem}
.search input{flex:1;padding:.65rem .9rem;border-radius:11px;border:1px solid var(--line-strong);
  background:var(--card);color:var(--text);backdrop-filter:blur(8px)}
.search button{width:auto;margin:0;padding:.65rem 1.3rem}

.userform{display:flex;gap:.6rem;align-items:center;flex-wrap:wrap}
.userform input[type=text],.userform input:not([type]),.userform input[type=password]{
  padding:.6rem .8rem;border-radius:11px;border:1px solid var(--line-strong);background:var(--inset);color:var(--text)}
.userform .chk{display:flex;align-items:center;gap:.4rem;color:var(--muted);font-size:.9rem;
  padding:.4rem .7rem;border-radius:9px;background:var(--inset);border:1px solid var(--line)}
.userform .chk input{accent-color:var(--accent);width:16px;height:16px}
.userform button{width:auto;margin:0;padding:.6rem 1.3rem}

/* ---------- Responsive ---------- */
@media (max-width:640px){
  .topbar{gap:.8rem;padding:.6rem .9rem}
  .topbar nav{order:3;width:100%;overflow-x:auto}
  .content{margin:1.2rem auto}
  .stat-value{font-size:1.9rem}
  table.files th,table.files td{padding:.6rem .65rem}
}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
