/* =====================================================================
   DASHBOARD NEXORA — feuille de style
   Thème sombre : moins fatigant, et se distingue des boutiques (claires)
   ===================================================================== */

:root{
  --fond:#0d0f16;
  --fond-2:#12141c;
  --carte:#171a24;
  --carte-2:#1d212d;
  --bord:#262b39;
  --texte:#e8eaf0;
  --texte-2:#9aa3b8;
  --texte-3:#6b7386;
  --bleu:#6c8cff;
  --bleu-f:#5473f0;
  --vert:#2ecb7f;
  --or:#f5b544;
  --rouge:#f2545b;
  --violet:#a78bfa;
  --r:14px;
  --ff:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Arial,sans-serif;
}

*,*::before,*::after{box-sizing:border-box}
body{
  margin:0;font-family:var(--ff);background:var(--fond);color:var(--texte);
  line-height:1.55;-webkit-font-smoothing:antialiased;font-size:15px
}
h1,h2,h3{margin:0;line-height:1.25;letter-spacing:-.02em}
button,input,select,textarea{font-family:inherit;font-size:inherit;color:inherit}
input[type=color]{padding:3px;height:44px;cursor:pointer}
a{color:inherit;text-decoration:none}
[hidden]{display:none !important}

@keyframes apparait{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
@keyframes tourne{to{transform:rotate(360deg)}}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.45}}

/* =====================  CONNEXION  ===================== */
.auth{
  min-height:100vh;display:grid;place-items:center;padding:20px;
  background:radial-gradient(900px 500px at 50% -10%,#1c2340 0%,transparent 60%),var(--fond)
}
.auth-box{
  width:100%;max-width:400px;background:var(--carte);border:1px solid var(--bord);
  border-radius:20px;padding:30px 26px;animation:apparait .4s
}
.auth-logo{display:flex;align-items:center;gap:12px;margin-bottom:24px}
.auth-logo .mark,.cote-logo .mark{
  width:42px;height:42px;flex:0 0 42px;border-radius:12px;background:#1b2136;
  display:grid;place-items:center;border:1px solid #2a3350
}
.auth-logo b{display:block;font-size:19px;letter-spacing:-.03em}
.auth-logo small,.cote-logo small{display:block;font-size:12.5px;color:var(--texte-2)}

.onglets{display:grid;grid-template-columns:1fr 1fr;gap:5px;background:var(--fond-2);
  padding:5px;border-radius:11px;margin-bottom:20px}
.onglets button{
  border:0;background:transparent;padding:10px;border-radius:8px;cursor:pointer;
  font-weight:600;font-size:14px;color:var(--texte-2);transition:.18s
}
.onglets button.on{background:var(--carte-2);color:var(--texte)}

.auth-note{text-align:center;font-size:12.5px;color:var(--texte-3);margin:16px 0 0}

/* =====================  CHAMPS  ===================== */
.champ{margin-bottom:14px}
.champ label{display:block;font-size:13.5px;font-weight:600;margin-bottom:6px;color:var(--texte-2)}
.champ .opt{color:var(--texte-3);font-weight:400}
.champ input,.champ select,.champ textarea{
  width:100%;padding:12px 14px;background:var(--fond-2);border:1.5px solid var(--bord);
  border-radius:10px;transition:border-color .18s,box-shadow .18s
}
.champ input:focus{outline:0;border-color:var(--bleu);box-shadow:0 0 0 3px rgba(108,140,255,.14)}
.champ input::placeholder{color:var(--texte-3)}
.aide{font-size:12.2px;color:var(--texte-3);margin-top:5px}
.f-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}
@media(max-width:600px){.f-row{grid-template-columns:1fr}}

.erreur{
  background:rgba(242,84,91,.12);border:1px solid rgba(242,84,91,.32);color:#ff9096;
  padding:11px 13px;border-radius:10px;font-size:13.5px;margin-bottom:14px
}

/* =====================  BOUTONS  ===================== */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
  border:0;cursor:pointer;font-weight:600;border-radius:10px;padding:12px 20px;
  transition:transform .15s,background .18s,opacity .18s;white-space:nowrap
}
.btn:active{transform:scale(.98)}
.btn-p{background:var(--bleu);color:#0a0d18}
.btn-p:hover{background:var(--bleu-f)}
.btn-s{background:var(--carte-2);color:var(--texte);border:1px solid var(--bord)}
.btn-s:hover{background:#232838}
.btn-v{background:var(--vert);color:#04220f}
.btn-r{background:rgba(242,84,91,.15);color:#ff9096;border:1px solid rgba(242,84,91,.3)}
.btn-full{width:100%}
.btn[disabled]{opacity:.55;cursor:not-allowed;transform:none}

/* =====================  MISE EN PAGE  ===================== */
#app{display:grid;grid-template-columns:250px 1fr;min-height:100vh}

.cote{
  background:var(--fond-2);border-right:1px solid var(--bord);
  display:flex;flex-direction:column;padding:18px 14px;
  position:sticky;top:0;height:100vh
}
.cote-logo{display:flex;align-items:center;gap:11px;padding:4px 6px 20px}
.cote-logo b{display:block;font-size:17px;letter-spacing:-.03em}
.cote nav{display:flex;flex-direction:column;gap:3px;flex:1}
.cote nav button{
  display:flex;align-items:center;gap:11px;border:0;background:transparent;
  padding:11px 12px;border-radius:10px;cursor:pointer;font-weight:500;
  font-size:14.5px;color:var(--texte-2);text-align:left;transition:.16s;width:100%
}
.cote nav button:hover{background:var(--carte);color:var(--texte)}
.cote nav button.on{background:var(--carte-2);color:var(--texte);font-weight:600}
.cote nav button.on svg{color:var(--bleu)}
.pastille{
  margin-left:auto;background:var(--rouge);color:#fff;font-size:11px;font-weight:700;
  min-width:20px;height:20px;border-radius:10px;display:grid;place-items:center;padding:0 6px
}
.cote-bas{border-top:1px solid var(--bord);padding-top:12px;display:grid;gap:4px}
.lien-boutique,.deco{
  display:flex;align-items:center;gap:9px;padding:10px 12px;border-radius:9px;
  font-size:13.5px;color:var(--texte-2);border:0;background:transparent;
  cursor:pointer;transition:.16s;text-align:left;width:100%
}
.lien-boutique:hover{background:var(--carte);color:var(--bleu)}
.deco:hover{background:rgba(242,84,91,.1);color:#ff9096}

.principal{display:flex;flex-direction:column;min-width:0}
.haut{
  display:flex;align-items:center;gap:14px;padding:16px 24px;
  border-bottom:1px solid var(--bord);position:sticky;top:0;
  background:rgba(13,15,22,.85);backdrop-filter:blur(12px);z-index:20
}
.haut h1{font-size:20px;flex:1}
.menu{display:none;background:transparent;border:0;font-size:22px;cursor:pointer;color:var(--texte)}
.badge-plan{
  background:rgba(108,140,255,.14);color:var(--bleu);font-size:12px;font-weight:700;
  padding:5px 11px;border-radius:20px;border:1px solid rgba(108,140,255,.25)
}
.contenu{padding:24px;max-width:1100px;width:100%}
@media(max-width:860px){
  #app{grid-template-columns:1fr}
  .cote{
    position:fixed;left:0;top:0;bottom:0;width:250px;z-index:60;
    transform:translateX(-102%);transition:transform .28s cubic-bezier(.2,.8,.3,1);
    box-shadow:0 0 40px rgba(0,0,0,.5)
  }
  .cote.ouvert{transform:none}
  .menu{display:block}
  .contenu{padding:16px}
}

.vue{display:none;animation:apparait .3s}
.vue.on{display:block}

/* =====================  CARTES  ===================== */
.carte{
  background:var(--carte);border:1px solid var(--bord);border-radius:var(--r);
  padding:20px;margin-bottom:18px
}
.carte h2{font-size:17px;margin-bottom:4px}
.carte .sous{color:var(--texte-2);font-size:14px;margin:0 0 18px}
.carte-h{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:14px}

/* =====================  STATISTIQUES  ===================== */
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:18px}
@media(max-width:900px){.stats{grid-template-columns:repeat(2,1fr)}}
.stat{background:var(--carte);border:1px solid var(--bord);border-radius:var(--r);padding:17px}
.stat .t{display:flex;align-items:center;gap:8px;font-size:12.8px;color:var(--texte-2);margin-bottom:9px}
.stat .v{font-size:26px;font-weight:800;letter-spacing:-.03em;line-height:1}
.stat .s{font-size:12px;color:var(--texte-3);margin-top:5px}
.stat.bleu .t svg{color:var(--bleu)}
.stat.vert .t svg{color:var(--vert)}
.stat.or .t svg{color:var(--or)}
.stat.violet .t svg{color:var(--violet)}

/* =====================  COMMANDES  ===================== */
.filtres{display:flex;gap:7px;flex-wrap:wrap;margin-bottom:16px}
.filtres button{
  background:var(--carte);border:1px solid var(--bord);color:var(--texte-2);
  padding:8px 15px;border-radius:20px;cursor:pointer;font-size:13.5px;
  font-weight:500;transition:.16s
}
.filtres button:hover{border-color:#39415a}
.filtres button.on{background:var(--bleu);border-color:var(--bleu);color:#0a0d18;font-weight:600}

.cmd{
  background:var(--carte);border:1px solid var(--bord);border-radius:var(--r);
  padding:16px;margin-bottom:11px;transition:border-color .18s
}
.cmd:hover{border-color:#39415a}
.cmd-h{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:11px}
.cmd-ref{font-size:12px;color:var(--texte-3);font-family:ui-monospace,monospace}
.cmd-nom{font-size:16px;font-weight:700;margin-top:2px}
.cmd-total{font-size:19px;font-weight:800;color:var(--vert);white-space:nowrap}
.cmd-info{display:grid;gap:6px;font-size:13.7px;color:var(--texte-2);margin-bottom:13px}
.cmd-info div{display:flex;gap:9px;align-items:flex-start}
.cmd-info svg{flex:0 0 15px;margin-top:2px;color:var(--texte-3)}
.cmd-b{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.cmd-b .btn{padding:8px 14px;font-size:13px}

.etat{
  font-size:11.5px;font-weight:700;padding:4px 10px;border-radius:20px;
  text-transform:uppercase;letter-spacing:.04em
}
.etat.nouvelle{background:rgba(108,140,255,.16);color:var(--bleu)}
.etat.confirmee{background:rgba(167,139,250,.16);color:var(--violet)}
.etat.expediee{background:rgba(245,181,68,.16);color:var(--or)}
.etat.livree{background:rgba(46,203,127,.16);color:var(--vert)}
.etat.annulee,.etat.refusee{background:rgba(242,84,91,.14);color:#ff9096}

/* =====================  PRODUITS  ===================== */
.prods{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:14px}
.prod{background:var(--carte);border:1px solid var(--bord);border-radius:var(--r);overflow:hidden}
.prod .img{aspect-ratio:1;background:var(--fond-2);display:grid;place-items:center;overflow:hidden}
.prod .img img{width:100%;height:100%;object-fit:cover}
.prod .bd{padding:14px}
.prod h3{font-size:14.5px;margin-bottom:7px;line-height:1.35}
.prod .pr{font-size:18px;font-weight:800;color:var(--vert)}
.prod .pr s{font-size:12.5px;color:var(--texte-3);margin-left:6px;font-weight:400}
.prod .meta{display:flex;gap:8px;align-items:center;margin-top:9px;font-size:12px;color:var(--texte-3)}

/* =====================  DÉPÔT DE VIDÉO  ===================== */
.depot{
  border:2px dashed var(--bord);border-radius:var(--r);padding:44px 20px;text-align:center;
  cursor:pointer;transition:.2s;display:grid;gap:7px;place-items:center
}
.depot:hover,.depot.survol{border-color:var(--bleu);background:rgba(108,140,255,.05)}
.depot b{font-size:16px}
.depot span{color:var(--texte-2);font-size:14px}
.depot small{color:var(--texte-3);font-size:12.3px;margin-top:4px}

.video-info{display:grid;grid-template-columns:170px 1fr;gap:16px;margin-bottom:18px;align-items:start}
@media(max-width:600px){.video-info{grid-template-columns:1fr}}
.video-info video{width:100%;border-radius:11px;background:#000;max-height:280px}
.video-meta{display:grid;gap:7px;font-size:13.5px;color:var(--texte-2)}
.video-meta b{color:var(--texte)}
.boutons{display:flex;gap:10px;flex-wrap:wrap;margin-top:6px}

/* =====================  PROGRESSION  ===================== */
.barre{height:7px;background:var(--fond-2);border-radius:20px;overflow:hidden;margin:20px 0 16px}
.barre-in{height:100%;width:0;background:linear-gradient(90deg,var(--bleu),var(--violet));
  border-radius:20px;transition:width .4s cubic-bezier(.2,.8,.3,1)}
.etapes{display:grid;gap:9px}
.etape{display:flex;align-items:center;gap:11px;font-size:14px;color:var(--texte-3)}
.etape .pt{
  width:20px;height:20px;flex:0 0 20px;border-radius:50%;border:2px solid var(--bord);
  display:grid;place-items:center
}
.etape.actif{color:var(--texte)}
.etape.actif .pt{border-color:var(--bleu);animation:pulse 1.3s infinite}
.etape.fini{color:var(--texte-2)}
.etape.fini .pt{background:var(--vert);border-color:var(--vert)}
.etape.fini .pt::after{content:'';width:5px;height:9px;border:solid #04220f;
  border-width:0 2px 2px 0;transform:rotate(45deg) translate(-1px,-1px)}

/* =====================  RÉSULTAT IA  ===================== */
.resultat{border-top:1px solid var(--bord);margin-top:22px;padding-top:22px}
.note{display:flex;align-items:center;gap:14px;margin-bottom:18px}
.note .cercle{
  width:62px;height:62px;flex:0 0 62px;border-radius:50%;display:grid;place-items:center;
  font-size:20px;font-weight:800;border:3px solid var(--vert);color:var(--vert)
}
.note .cercle.moyen{border-color:var(--or);color:var(--or)}
.note .cercle.faible{border-color:var(--rouge);color:#ff9096}
.alerte{
  display:flex;gap:9px;padding:11px 13px;border-radius:10px;font-size:13.5px;margin-bottom:8px
}
.alerte.info{background:rgba(108,140,255,.1);color:#a9bcff}
.alerte.important{background:rgba(245,181,68,.11);color:#ffd489}
.apercu-grille{display:grid;grid-template-columns:repeat(auto-fill,minmax(88px,1fr));gap:8px;margin:14px 0}
.apercu-grille img,.apercu-grille video{
  width:100%;aspect-ratio:1;object-fit:cover;border-radius:9px;border:1px solid var(--bord)
}
.bloc-resume{background:var(--fond-2);border-radius:11px;padding:15px;margin-bottom:14px}
.bloc-resume h4{margin:0 0 9px;font-size:14px;color:var(--texte-2)}
.ligne{display:flex;justify-content:space-between;padding:5px 0;font-size:14px;border-bottom:1px solid var(--bord)}
.ligne:last-child{border:0}
.ligne span:last-child{font-weight:600}

/* =====================  DIVERS  ===================== */
.vide{text-align:center;padding:46px 20px;color:var(--texte-3)}
.vide .em{font-size:40px;margin-bottom:12px;opacity:.6}
.vide b{display:block;color:var(--texte-2);margin-bottom:5px;font-size:15.5px}

.protege{
  display:flex;align-items:center;gap:9px;background:rgba(46,203,127,.08);
  border:1px solid rgba(46,203,127,.22);color:#7fe0b0;padding:11px 13px;
  border-radius:10px;font-size:13px;margin-top:12px
}

.toast{
  position:fixed;bottom:22px;left:50%;transform:translate(-50%,150%);z-index:99;
  background:var(--carte-2);border:1px solid var(--bord);padding:13px 20px;
  border-radius:11px;font-weight:500;font-size:14px;box-shadow:0 12px 40px rgba(0,0,0,.5);
  transition:transform .35s cubic-bezier(.2,.8,.3,1);max-width:90vw;text-align:center
}
.toast.on{transform:translate(-50%,0)}
.toast.ok{border-color:rgba(46,203,127,.4);color:#7fe0b0}
.toast.err{border-color:rgba(242,84,91,.4);color:#ff9096}

.spin{
  width:16px;height:16px;border:2px solid rgba(255,255,255,.25);
  border-top-color:currentColor;border-radius:50%;animation:tourne .7s linear infinite
}

/* =====================================================================
   LIENS PARTAGEABLES
   ===================================================================== */
.lien-carte{
  background:linear-gradient(135deg,#1b2136,#171a24);border:1px solid #2a3350;
  border-radius:var(--r);padding:18px;margin-bottom:18px
}
.lien-carte .lc-t{font-size:14px;font-weight:600;color:var(--texte-2);margin-bottom:11px}
.lien-carte input{
  width:100%;padding:12px 14px;background:var(--fond);border:1px solid var(--bord);
  border-radius:10px;color:var(--bleu);font-size:13.5px;font-family:ui-monospace,monospace;
  margin-bottom:11px;cursor:pointer
}
.lien-carte .lc-b{display:flex;gap:9px;flex-wrap:wrap}
.lien-carte .lc-b .btn{padding:10px 17px;font-size:13.8px}

.prod-liens{margin-top:12px;padding-top:12px;border-top:1px solid var(--bord)}
.prod-liens input{
  width:100%;padding:9px 11px;background:var(--fond);border:1px solid var(--bord);
  border-radius:8px;color:var(--bleu);font-size:11.8px;font-family:ui-monospace,monospace;
  margin-bottom:9px;cursor:pointer
}
.prod-btns{display:flex;gap:7px;flex-wrap:wrap}
.prod-btns .btn{padding:8px 12px;font-size:12.5px;flex:1;min-width:78px}

.prod-brouillon{
  margin-top:12px;padding:11px;background:rgba(245,181,68,.1);
  border:1px solid rgba(245,181,68,.24);border-radius:9px;
  font-size:12.5px;color:#ffd489;line-height:1.45
}

/* =====================================================================
   ADMINISTRATION
   ===================================================================== */
.bq{background:var(--carte);border:1px solid var(--bord);border-radius:var(--r);
  padding:17px;margin-bottom:11px}
.bq-h{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;margin-bottom:12px}
.bq-h h3{font-size:16.5px;margin-bottom:3px}
.bq-h .slug{font-size:12.3px;color:var(--bleu);font-family:ui-monospace,monospace}
.bq-info{display:grid;grid-template-columns:repeat(auto-fit,minmax(155px,1fr));gap:9px;
  font-size:13.4px;color:var(--texte-2);margin-bottom:13px}
.bq-info div{display:flex;gap:7px}
.bq-info b{color:var(--texte);font-weight:600}
.bq-b{display:flex;gap:8px;flex-wrap:wrap}
.bq-b .btn{padding:9px 15px;font-size:13px}
.bq-motif{background:rgba(242,84,91,.09);border:1px solid rgba(242,84,91,.22);
  border-radius:9px;padding:10px 12px;font-size:13px;color:#ff9096;margin-bottom:11px}
.etat.en_attente{background:rgba(245,181,68,.16);color:var(--or)}
.etat.validee{background:rgba(46,203,127,.16);color:var(--vert)}
.etat.refusee{background:rgba(242,84,91,.14);color:#ff9096}
.etat.suspendue{background:rgba(155,155,155,.14);color:#9aa3b8}
