/* =========================================================
   ENT LFIHM — Style global (plus élégant, moins chargé)
   Bleu nuit → violet (charte LFIHM)
   ========================================================= */

/* ---------- Tokens ---------- */
:root{
  /* Brand */
  --brand-ink:#141934;
  --brand-violet:#3b185f;
  --brand-violet-2:#552d82;
  --brand-blue:#244789;
  --brand-sky:#4ca6e8;
  --brand-gold:#d4af37;

  /* Surfaces */
  --bg:#f6f8fc;
  --surface:#ffffff;
  --surface-2:#fbfcff;

  /* Text */
  --text:#1f2937;
  --muted:#6b7280;

  /* Lines & depth */
  --line:rgba(15,23,42,.10);
  --shadow:0 12px 32px rgba(16,21,48,.10);
  --shadow-sm:0 6px 18px rgba(16,21,48,.08);

  /* Radius */
  --r:16px;
  --r-sm:12px;

  /* Focus */
  --focus: rgba(124,58,237,.22);

  /* Status */
  --ok:#0f4a8a; --ok-bg:#eaf4ff; --ok-bd:#cfe3ff;
  --err:#7a1f1f; --err-bg:#fff2f2; --err-bd:#f2c7c7;

  /* Gradient (signature) */
  --grad:linear-gradient(115deg,var(--brand-ink) 0%, var(--brand-violet) 60%, var(--brand-violet-2) 100%);
}

/* ---------- Base ---------- */
html,body{height:100%}
*{box-sizing:border-box}
body{
  margin:0;
  font-family: system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,"Apple Color Emoji","Segoe UI Emoji";
  color:var(--text);
  background:
    radial-gradient(70rem 70rem at -15% -15%, rgba(212,175,55,.10) 0%, transparent 55%),
    radial-gradient(70rem 70rem at 115% 115%, rgba(76,166,232,.10) 0%, transparent 55%),
    var(--bg);
  min-height:100vh;
  display:flex;
  flex-direction:column;
}
a{color:inherit;text-decoration:none}
img{max-width:100%;display:block}
hr{border:0;border-top:1px dashed rgba(15,23,42,.12)}

/* ---------- Layout helpers ---------- */
.container{max-width:1160px;margin:0 auto;padding:0 2.4vw}
.section-encadre{
  background:var(--surface);
  border:1px solid var(--line);
  border-radius:var(--r);
  box-shadow:var(--shadow);
  padding:1.75rem;
  margin:1.6rem auto;
  max-width:1000px;
}
.trait-section{border:0;border-top:1px solid rgba(15,23,42,.08);margin:1.25rem 0}

/* ---------- Ribbon / Titles ---------- */
.section-ribbon,.ruban-titre{
  background:var(--grad);
  color:#fff;
  font-weight:900;
  letter-spacing:.2px;
  border-radius:var(--r-sm) var(--r-sm) 0 0;
  padding:.75rem 1.05rem;
  margin:-1.75rem -1.75rem 1.2rem;
  box-shadow:0 10px 22px rgba(16,21,48,.18);
}

/* ---------- Cards ---------- */
.card{
  background:var(--surface);
  border:1px solid var(--line);
  border-radius:var(--r);
  box-shadow:var(--shadow-sm);
  overflow:hidden;
  margin-bottom:1rem;
}
.card-head{
  background:var(--grad);
  color:#fff;
  padding:.9rem 1rem;
  font-weight:900;
}
.card-body{padding:1rem}

/* ---------- Buttons (unifiés) ---------- */
.btn-ent,.btn-admin,.btn-chip,.btn-cta,.btn-link{
  display:inline-flex;
  align-items:center;
  gap:.5rem;
  font-weight:800;
  border-radius:999px;
  padding:.58rem .95rem;
  border:1px solid transparent;
  cursor:pointer;
  transition:transform .12s ease, filter .12s ease, box-shadow .12s ease, background .12s ease, border-color .12s ease;
  will-change:transform;
}
.btn-ent,.btn-chip{
  background:#fff;
  border-color:rgba(15,23,42,.12);
  box-shadow:0 6px 18px rgba(16,21,48,.08);
  color:#1f2a44;
}
.btn-ent:hover,.btn-chip:hover{transform:translateY(-1px);filter:brightness(1.02)}
.btn-cta{
  background:var(--grad);
  color:#fff;
  box-shadow:0 10px 22px rgba(59,24,95,.22);
}
.btn-cta:hover{transform:translateY(-1px);filter:brightness(1.04)}
.btn-admin{
  background:transparent;
  color:var(--brand-ink);
  border-color:rgba(20,25,52,.55);
}
.btn-admin:hover{background:var(--brand-ink);color:#fff}
.btn-link{
  background:rgba(85,45,130,.08);
  color:var(--brand-violet-2);
  border-color:rgba(85,45,130,.18);
}
.btn-link:hover{background:rgba(85,45,130,.12);transform:translateY(-1px)}
.btn-row{display:flex;flex-wrap:wrap;gap:.6rem}

/* ---------- Badges ---------- */
.badge{
  display:inline-flex;align-items:center;gap:.35rem;
  padding:.18rem .55rem;
  border-radius:999px;
  font-weight:800;
  font-size:.86rem;
  background:rgba(85,45,130,.08);
  color:var(--brand-violet-2);
  border:1px solid rgba(85,45,130,.18);
}
.badge:hover{background:rgba(85,45,130,.12)}

/* ---------- Alerts ---------- */
.success,.alert.ok{
  background:var(--ok-bg);color:var(--ok);
  border:1px solid var(--ok-bd);
  padding:.7rem .9rem;border-radius:var(--r-sm);font-weight:800;
}
.error,.alert.err{
  background:var(--err-bg);color:var(--err);
  border:1px solid var(--err-bd);
  padding:.7rem .9rem;border-radius:var(--r-sm);font-weight:800;
}

/* ---------- Tables ---------- */
table{width:100%;border-collapse:collapse;background:#fff}
thead th{
  background:var(--surface-2);
  color:var(--brand-blue);
  font-weight:900;
  text-align:left;
  padding:.75rem .8rem;
  border-bottom:1px solid rgba(15,23,42,.08);
}
tbody td{
  padding:.7rem .8rem;
  border-bottom:1px solid rgba(15,23,42,.08);
  color:#2b3453;
}
tbody tr:hover{background:rgba(36,71,137,.03)}
th.email-col,td.email-col{width:170px;max-width:220px;min-width:120px;word-break:break-all}
th.pw-col,td.pw-col{width:130px;text-align:center;font-family:Consolas,Menlo,monospace}

/* ---------- Forms ---------- */
form{width:100%}
label{font-weight:900;color:#2b3453;font-size:.95rem;display:block;margin-bottom:.35rem}
input[type=text],input[type=password],input[type=email],input[type=file],select,textarea{
  width:100%;
  background:var(--surface-2);
  color:#1f2a44;
  border:1px solid rgba(15,23,42,.12);
  border-radius:var(--r-sm);
  padding:.62rem .78rem;
  font-size:1rem;
  transition:border-color .12s ease, box-shadow .12s ease, background .12s ease;
}
input:focus,select:focus,textarea:focus{
  outline:none;
  border-color:rgba(124,58,237,.35);
  box-shadow:0 0 0 4px var(--focus);
  background:#fff;
}
.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.8rem}
.form-grid-3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.8rem}
.form-grid-1{display:grid;grid-template-columns:1fr;gap:.8rem}
.help{color:var(--muted);font-size:.9rem;margin-top:.25rem}

/* ---------- ENT icons (favicons) ---------- */
.link-favicon{
  width:20px;height:20px;vertical-align:middle;border-radius:5px;
  box-shadow:0 6px 14px rgba(16,21,48,.10);
  margin-right:.45em;object-fit:contain
}
.link-icon-fallback{color:#8e52d8;font-size:1.14em;vertical-align:middle;margin-right:.39em}

/* ---------- Files / lists ---------- */
.table-files thead th{background:var(--surface-2)}
.small{color:var(--muted);font-size:.9rem}
.icon{width:24px;text-align:center;color:#653D91}
.name{max-width:60vw;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* ---------- Link cards (plus sobres) ---------- */
.link-grid{display:flex;flex-wrap:wrap;justify-content:center;gap:.9rem}
.link-card{
  min-width:220px;max-width:320px;
  display:flex;align-items:center;gap:.7rem;
  background:#fff;
  border:1px solid rgba(15,23,42,.10);
  padding:.7rem 1rem;
  border-radius:var(--r);
  box-shadow:0 10px 22px rgba(16,21,48,.08);
  transition:transform .12s ease, box-shadow .12s ease, border-color .12s ease;
}
.link-card:hover{
  transform:translateY(-2px);
  box-shadow:0 16px 34px rgba(16,21,48,.12);
  border-color:rgba(124,58,237,.20);
}

/* ---------- Stats ---------- */
.stat-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1rem}
.stat-card{
  background:#fff;
  border:1px solid rgba(15,23,42,.10);
  border-radius:var(--r);
  padding:1rem;
  box-shadow:0 10px 22px rgba(16,21,48,.08);
}
.stat-value{font-size:1.6rem;font-weight:950;color:#1f2a44}
.stat-label{color:var(--muted);margin-top:.25rem;font-weight:800}

/* ---------- Banner ---------- */
.banner{
  background:var(--grad);
  color:#fff;
  padding:.65rem .9rem;
  border-radius:var(--r-sm);
  font-weight:850;
  box-shadow:0 10px 22px rgba(16,21,48,.12);
}

/* ---------- Header/footer icon buttons (si utilisés) ---------- */
.icon-btn{
  width:36px;height:36px;display:grid;place-items:center;
  border:1px solid rgba(255,255,255,.30);
  background:rgba(255,255,255,.08);
  color:#fff;border-radius:12px;
  transition:transform .12s ease, background .12s ease, color .12s ease;
}
.icon-btn:hover{
  transform:translateY(-1px);
  background:rgba(255,255,255,.16);
  color:var(--brand-gold);
}

/* ---------- Print ---------- */
@media print{
  .no-print,.btn-ent,.btn-admin,.btn-chip,.btn-cta,header,.site-footer{display:none!important}
  section.section-encadre{box-shadow:none!important;border:0!important}
  body{background:#fff}
  table{font-size:1.01em}
  .id-card{page-break-inside:avoid;border:1.2px solid var(--brand-blue);box-shadow:none}
}

/* ---------- Responsive ---------- */
@media (max-width:1024px){
  .section-encadre{margin:1.2rem auto;padding:1.35rem}
}
@media (max-width:780px){
  .form-grid,.form-grid-3{grid-template-columns:1fr}
  .name{max-width:70vw}
}
@media (max-width:480px){
  .btn-row{gap:.5rem}
  .btn-ent,.btn-admin,.btn-chip,.btn-cta,.btn-link{padding:.54rem .85rem}
}

/* ---------- Utilities ---------- */
.center{text-align:center}
.right{text-align:right}
.mt-0{margin-top:0!important}
.mt-1{margin-top:.5rem!important}
.mt-2{margin-top:1rem!important}
.mt-3{margin-top:1.5rem!important}
.mb-0{margin-bottom:0!important}
.mb-1{margin-bottom:.5rem!important}
.mb-2{margin-bottom:1rem!important}
.mb-3{margin-bottom:1.5rem!important}

/* ---------- Optional ribbons ---------- */
.is-primaire .section-ribbon,.ruban-primaire{
  background:linear-gradient(110deg,var(--brand-blue) 0%, var(--brand-sky) 100%);
}
.is-secondaire .section-ribbon,.ruban-secondaire{
  background:linear-gradient(110deg,#653D91 0%, #8e52d8 100%);
}

/* ---------- Footer ---------- */
.site-footer{margin-top:auto}