*{box-sizing:border-box;margin:0;padding:0}
body{font-family:system-ui,-apple-system,"Segoe UI",sans-serif;background:#f5f7f4;color:#1a2a1a;line-height:1.5}
@media(prefers-color-scheme:dark){
  body{background:#1a1f1a;color:#e0e8e0}
  .carte{background:#232a23}
  .table{background:#232a23}
  .table tr:hover{background:#2a342a}
  .champ input,.champ textarea,.champ select{background:#2a342a;color:#e0e8e0;border-color:#3a4a3a}
}
header.site{background:#2d5a2d;color:#fff;padding:1rem 2rem;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:.5rem}
header.site a{color:#fff;text-decoration:none}
header.site .nav a{margin-left:1rem;opacity:.85}
main{max-width:1200px;margin:2rem auto;padding:0 1rem}
.grille{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:1.2rem;margin-top:1.5rem}
.carte{background:#fff;border-radius:10px;overflow:hidden;box-shadow:0 1px 4px rgba(0,0,0,.08);transition:transform .15s}
.carte:hover{transform:translateY(-3px)}
.carte a{color:inherit;text-decoration:none;display:block}
.carte .thumb{aspect-ratio:4/3;background:#e5ebe3}
.carte .thumb img{width:100%;height:100%;object-fit:cover}
.carte .info{padding:.8rem}
.carte h3{font-size:1rem;color:#2d5a2d}
@media(prefers-color-scheme:dark){.carte h3{color:#8fbc8f}}
.carte em{font-size:.85rem;color:#666;display:block;margin-top:.2rem}
.carte .famille{font-size:.8rem;color:#888;margin-top:.4rem}
.carte .tags{display:flex;flex-wrap:wrap;gap:.3rem;margin-top:.4rem}
.carte .tag{background:#eef6ee;color:#2d5a2d;font-size:.7rem;padding:.15rem .5rem;border-radius:10px}
.champ{margin-bottom:1rem}
.champ label{display:block;font-weight:600;margin-bottom:.3rem}
.champ input,.champ textarea,.champ select{width:100%;padding:.55rem;border:1px solid #ccd;border-radius:6px;font-family:inherit;font-size:1rem}
.champ textarea{min-height:120px;resize:vertical}
.btn{display:inline-block;padding:.6rem 1.2rem;border:none;border-radius:6px;background:#2d5a2d;color:#fff;cursor:pointer;font-size:1rem;text-decoration:none}
.btn:hover{background:#1f3f1f}
.btn.danger{background:#a83232}
.btn.secondaire{background:#777}
.alert{padding:1rem;border-radius:6px;margin-bottom:1rem}
.alert.erreur{background:#ffe0e0;color:#800}
.alert.ok{background:#e0ffe0;color:#060}
.alert.info{background:#e6f0ff;color:#044}
.table{width:100%;border-collapse:collapse;background:#fff;border-radius:8px;overflow:hidden}
.table th,.table td{padding:.7rem 1rem;text-align:left;border-bottom:1px solid #eee}
.table th{background:#2d5a2d;color:#fff}
.table tr:hover{background:#f6faf6}
.pagination{margin-top:2rem;text-align:center}
.pagination a,.pagination span{display:inline-block;padding:.4rem .8rem;margin:0 .2rem;border-radius:4px;background:#fff;color:#2d5a2d;text-decoration:none}
.pagination .actif{background:#2d5a2d;color:#fff}
.stats{display:flex;gap:1.5rem;margin-top:1.5rem;flex-wrap:wrap}
.stats .valeur{font-size:1.6rem;color:#2d5a2d;font-weight:700}
.dropzone{border:2px dashed #ccd;border-radius:8px;padding:2rem;text-align:center;cursor:pointer;transition:border-color .2s,background .2s}
.dropzone:hover,.dropzone.drag{border-color:#2d5a2d;background:#f0f7f0}
.previsualisation{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:.8rem;margin-top:1rem}
.previsualisation .item{position:relative;border-radius:6px;overflow:hidden;background:#eef}
.previsualisation img{width:100%;display:block;aspect-ratio:1;object-fit:cover}
.previsualisation .legende{width:100%;border:none;padding:.3rem;font-size:.8rem}
.img-sortable{cursor:grab;user-select:none}
.img-sortable.dragging{opacity:.4}
.img-sortable.drag-over{outline:3px solid #2d5a2d}