/* ============================================================
   Lien Retrouvé — Plateforme (espace bénévoles)
   ============================================================ */
:root{
  --bg:#F4F7FA; --surface:#FFFFFF; --ink:#26323C; --ink-soft:#5A5F63;
  --teal:#2C67A3; --teal-700:#234F7D; --teal-100:#DCE7F1;
  --thread:#F26C33; --border:#E2E8EE;
  --danger:#9A3B2E; --danger-bg:#FBECE9; --ok:#1E6B4F; --ok-bg:#E6F2EC;
  --crit:#9A3B2E; --eleve:#B5621A; --modere:#1E6B4F; --faible:#5A5F63;
  --radius:12px;
}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--ink);font-family:"Open Sans",system-ui,sans-serif;font-size:15.5px;line-height:1.6;-webkit-font-smoothing:antialiased}
a{color:var(--teal);text-decoration:none}
a:hover{text-decoration:underline}
h1,h2,h3{font-family:"Roboto",system-ui,sans-serif}
h1{font-size:26px;margin:0 0 4px;font-weight:700}
h2{font-size:19px;margin:0 0 12px}
:focus-visible{outline:3px solid var(--thread);outline-offset:2px;border-radius:4px}

.app{display:grid;grid-template-columns:248px 1fr;min-height:100vh}
.side{background:#223247;color:#C7D6D2;display:flex;flex-direction:column;padding:22px 16px;position:sticky;top:0;height:100vh}
.side-brand{display:flex;align-items:center;gap:10px;color:#fff;font-weight:600;font-size:17px;margin-bottom:26px}
.side-nav{display:grid;gap:4px}
.side-nav a{color:#BBD0CB;padding:10px 12px;border-radius:9px;font-weight:500}
.side-nav a:hover{background:rgba(255,255,255,.07);text-decoration:none}
.side-nav a.actif{background:rgba(255,255,255,.12);color:#fff}
.side-foot{margin-top:auto;padding-top:18px;border-top:1px solid rgba(255,255,255,.12);display:grid;gap:2px;font-size:14px}
.side-foot small{color:#8FA7A2;text-transform:capitalize}
.side-foot a{color:#F4A07A;margin-top:8px;font-weight:500}

.content{padding:30px 36px 60px;max-width:1080px}
.page-top{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:24px;flex-wrap:wrap}
.page-top p{margin:0;color:var(--ink-soft)}

.btn{display:inline-flex;align-items:center;gap:7px;font-weight:600;font-size:14.5px;padding:9px 16px;border-radius:9px;border:1px solid transparent;cursor:pointer;font-family:inherit}
.btn-primary{background:var(--teal);color:#fff}
.btn-primary:hover{background:var(--teal-700);text-decoration:none}
.btn-ghost{background:#fff;color:var(--teal);border-color:var(--border)}
.btn-ghost:hover{background:#fff;border-color:var(--teal-100);text-decoration:none}
.btn-sm{padding:6px 12px;font-size:13.5px}

.cards-stat{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:28px}
.stat{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:18px 20px}
.stat .n{font-size:30px;font-weight:600;line-height:1}
.stat .l{color:var(--ink-soft);font-size:14px;margin-top:6px}

.panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:4px 0;margin-bottom:24px;overflow:hidden}
.panel .panel-head{padding:16px 20px;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;align-items:center}
.panel .panel-head h2{margin:0}

table{width:100%;border-collapse:collapse}
th,td{text-align:left;padding:12px 20px;border-bottom:1px solid var(--border);vertical-align:top}
th{font-size:12.5px;text-transform:uppercase;letter-spacing:.04em;color:var(--ink-soft);font-weight:600}
tr:last-child td{border-bottom:none}
tbody tr:hover{background:#FAFBFA}
.mono{font-variant-numeric:tabular-nums;color:var(--ink-soft);font-size:13.5px}

.badge{display:inline-block;font-size:12.5px;font-weight:600;padding:2px 10px;border-radius:20px}
.badge-crit{background:#FBECE9;color:var(--crit)}
.badge-eleve{background:#FBF1E2;color:var(--eleve)}
.badge-modere{background:#E6F2EC;color:var(--modere)}
.badge-faible{background:#EEF0ED;color:var(--faible)}
.badge-new{background:#E6F2EC;color:var(--ok)}
.badge-neutre{background:#EEF0ED;color:var(--ink-soft)}

.alert{border-radius:10px;padding:12px 16px;margin-bottom:20px;font-size:15px}
.alert-ok{background:var(--ok-bg);border:1px solid #BFE0CE;color:#1B5A41}
.alert-danger{background:var(--danger-bg);border:1px solid #E7C3BB;color:#7C2C20}

/* Connexion */
.login-wrap{display:flex;align-items:center;justify-content:center;min-height:100vh;background:#223247;padding:20px}
.login-card{background:#fff;border-radius:16px;padding:34px 32px;width:100%;max-width:400px}
.login-card .brand{display:flex;align-items:center;gap:10px;font-weight:600;font-size:19px;margin-bottom:6px}
.login-card p.sub{color:var(--ink-soft);margin:0 0 22px;font-size:14.5px}

.field{margin-bottom:18px}
.field label{display:block;font-weight:600;margin-bottom:6px;font-size:14.5px}
.field input,.field select,.field textarea{width:100%;font-family:inherit;font-size:15.5px;padding:10px 12px;border:1px solid var(--border);border-radius:9px;background:#fff;color:var(--ink)}
.field textarea{min-height:90px;resize:vertical}
.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--teal);outline:none;box-shadow:0 0 0 3px rgba(20,82,76,.12)}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:14px}

.detail-grid{display:grid;grid-template-columns:1.6fr 1fr;gap:24px;align-items:start}
.kv{display:grid;grid-template-columns:auto 1fr;gap:8px 16px;font-size:14.5px}
.kv dt{color:var(--ink-soft)}
.kv dd{margin:0}
.timeline{list-style:none;margin:0;padding:0}
.timeline li{padding:12px 0;border-bottom:1px solid var(--border)}
.timeline li:last-child{border-bottom:none}
.timeline .date{color:var(--thread);font-weight:600;font-size:13.5px}
.muted{color:var(--ink-soft)}
.empty{padding:26px 20px;color:var(--ink-soft);text-align:center}

@media(max-width:860px){
  .app{grid-template-columns:1fr}
  .side{position:static;height:auto;flex-direction:row;flex-wrap:wrap;align-items:center;gap:12px}
  .side-nav{grid-auto-flow:column;margin-left:auto}
  .side-foot{width:100%;margin-top:8px}
  .cards-stat{grid-template-columns:1fr 1fr}
  .detail-grid{grid-template-columns:1fr}
  .content{padding:22px}
}
