:root{
  --bg:#f3f1ec;
  --panel:#fff;
  --accent:#ffd45c;
  --text:#1f1f1f;
}
*{box-sizing:border-box}
html,body{margin:0;min-height:100%;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--text)}
a{color:inherit}
.home-body{overflow:hidden}
.screen{height:100vh;display:grid;grid-template-rows:minmax(0,72vh) minmax(0,28vh)}
.hero{position:relative;background-image:var(--hero);background-size:cover;background-position:center;overflow:hidden;border-radius:0 0 24px 24px;min-height:0}
.shade{position:absolute;inset:0;background:linear-gradient(90deg,rgba(0,0,0,.84),rgba(0,0,0,.56) 40%,rgba(0,0,0,.08) 76%)}
.hero-content{position:relative;z-index:2;width:min(46%,720px);height:100%;padding:28px 34px;color:white;display:flex;flex-direction:column;justify-content:center}
.eyebrow{font-size:clamp(.85rem,1.2vw,1.15rem);font-weight:800;color:var(--accent);margin-bottom:10px}
h1{font-size:clamp(2.2rem,4vw,4.2rem);line-height:1.02;margin:0 0 16px}
.ingredients{background:rgba(0,0,0,.30);padding:12px 16px;border-radius:16px;max-width:520px}
.ingredients h2,.detail-content h2{font-size:1rem;text-transform:uppercase;margin:0 0 6px}
.ingredients ul,.detail-content ul{margin:0;padding-left:20px;font-size:clamp(.92rem,1.15vw,1.08rem);line-height:1.4}
.feedback{display:flex;gap:10px;flex-wrap:wrap;margin-top:14px}
.feedback button{border:0;border-radius:999px;padding:11px 16px;font-size:clamp(.88rem,1vw,1rem);font-weight:750;background:#fff;cursor:pointer}
.feedback button.selected{outline:4px solid var(--accent)}
.date-weather{position:absolute;z-index:3;top:20px;right:24px;text-align:right;color:white;text-decoration:none;background:rgba(0,0,0,.30);padding:12px 16px;border-radius:16px}
.date-weather .date{font-size:1.2rem;font-weight:850}
.date-weather .weather{margin-top:4px;font-size:1rem}
.others{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;padding:12px 14px 14px;min-height:0}
.card{display:grid;grid-template-rows:minmax(0,1fr) auto;background:#fff;border-radius:16px;overflow:hidden;text-decoration:none;box-shadow:0 3px 12px #0002;min-height:0}
.card img{width:100%;height:100%;object-fit:cover;display:block;min-height:0}
.card-body{padding:8px 10px 10px}
.day{font-size:.82rem;font-weight:800;color:#8d6400;text-transform:uppercase}
.card h3{font-size:clamp(.95rem,1.15vw,1.15rem);line-height:1.12;margin:3px 0 0;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.detail{min-height:100vh;padding:14px}
.back{display:inline-block;margin-bottom:12px;text-decoration:none;font-weight:800}
.detail-card{display:grid;grid-template-columns:minmax(340px,48%) 1fr;background:white;border-radius:24px;overflow:hidden;box-shadow:0 4px 18px #0002}
.detail-image{width:100%;height:calc(100vh - 72px);object-fit:cover}
.detail-content{padding:32px}
.detail-content h1{font-size:clamp(2rem,3.5vw,4rem)}
.calendar-page{padding:20px;min-height:100vh}
.calendar-header{display:flex;align-items:center;gap:20px;margin-bottom:12px}
.calendar-nav{display:grid;grid-template-columns:48px 1fr 48px;align-items:center;max-width:720px;margin:0 auto;width:100%}
.calendar-nav a{text-decoration:none;font-size:2rem;text-align:center;font-weight:800}
.calendar-nav h1{font-size:2rem;text-align:center;margin:0}
.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:8px}
.calendar-weekdays{font-weight:800;text-align:center;margin-bottom:8px}
.calendar-cell{position:relative;min-height:135px;background:#fff;border-radius:14px;padding:8px;overflow:hidden;box-shadow:0 2px 9px #0001}
.calendar-cell.other-month{opacity:.35}
.calendar-cell.today-cell{outline:3px solid var(--accent)}
.day-number{font-weight:800;margin-bottom:6px}
.calendar-recipe{display:block;text-decoration:none}
.calendar-recipe img{width:100%;height:78px;object-fit:cover;border-radius:10px;display:block}
.calendar-recipe span{display:block;font-size:.78rem;line-height:1.1;font-weight:700;margin-top:4px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.empty{padding:50px}
@media(max-width:900px){
  .home-body{overflow:auto}
  .screen{height:auto;grid-template-rows:auto auto}
  .hero{min-height:720px}
  .hero-content{width:100%;padding:32px}
  .others{grid-template-columns:1fr}
  .date-weather{top:12px;right:12px}
  .detail-card{grid-template-columns:1fr}
  .detail-image{height:42vh}
  .calendar-cell{min-height:105px}
}


/* v2.1 — correction ciblée du hero, sans toucher aux cartes du bas */
.hero-content{
  justify-content:flex-start;
  padding-top:34px;
  padding-bottom:18px;
  overflow:hidden;
}
.hero-content h1{
  font-size:clamp(1.75rem,3.15vw,3.35rem);
  line-height:1.03;
  margin:0 0 12px;
  max-width:680px;
}
.hero-content .eyebrow{
  margin-bottom:8px;
}
.hero-content .ingredients{
  padding:10px 15px;
}
.hero-content .ingredients ul{
  line-height:1.30;
}
.hero-content .feedback{
  margin-top:11px;
}
.hero-content .feedback button{
  padding:9px 14px;
}

/* Avis directement sur la vignette du calendrier */
.calendar-photo{
  position:relative;
}
.calendar-photo img{
  width:100%;
  height:78px;
  object-fit:cover;
  border-radius:10px;
  display:block;
}
.feedback-badge{
  position:absolute;
  top:5px;
  right:5px;
  display:flex;
  align-items:center;
  justify-content:center;
  width:32px;
  height:32px;
  border-radius:50%;
  background:rgba(255,255,255,.94);
  box-shadow:0 2px 8px rgba(0,0,0,.28);
  font-size:18px;
  line-height:1;
}

/* L'historique n'est jamais masqué : les mois passés restent navigables. */


/* v2.2 — calendrier : avis discret directement sur la photo */
.feedback-badge{
  top:5px;
  right:7px;
  width:auto;
  height:auto;
  padding:0;
  border-radius:0;
  background:transparent;
  box-shadow:none;
  font-size:21px;
  line-height:1;
  text-shadow:
    0 1px 2px rgba(255,255,255,.95),
    0 0 5px rgba(255,255,255,.85),
    0 1px 5px rgba(0,0,0,.50);
}

/* Les trois cartes du bas gardent exactement la même hauteur de texte,
   donc exactement la même hauteur d'image. */
.card{
  grid-template-rows:minmax(0,1fr) 78px;
}
.card-body{
  height:78px;
  overflow:hidden;
}

/* Alignement du hero avec les cartes + respiration en haut */
.hero {
    margin: 10px 10px 0;
    width: calc(100% - 20px);

    border-radius: 18px;
    overflow: hidden;
}

/* V3 admin uniquement — conserver le CSS visuel actuel */
.admin-page{max-width:1050px;margin:0 auto;padding:24px}.admin-page h1{font-size:2.2rem}.admin-panel,.admin-list{background:#fff;border-radius:20px;padding:20px;margin-bottom:18px;box-shadow:0 3px 14px #0001}.meal-form{display:grid;grid-template-columns:180px 1fr auto;gap:14px;align-items:end}.meal-form label{font-weight:750;display:grid;gap:6px}.meal-form input,.meal-form select,.search-form input{width:100%;padding:12px;border:1px solid #ccc;border-radius:10px;font-size:1rem;background:#fff}.meal-form button,.search-form button,.admin-meal button{border:0;border-radius:10px;padding:12px 18px;font-weight:800;cursor:pointer}.search-form{display:flex;gap:10px;margin-top:14px}.search-form input{flex:1}.admin-meal{display:flex;justify-content:space-between;align-items:center;padding:12px 4px;border-bottom:1px solid #eee}.admin-meal div{display:flex;gap:18px;align-items:center}@media(max-width:760px){.meal-form{grid-template-columns:1fr}
}

/* V3.1 — bibliothèque visuelle admin */
.admin-top{display:flex;gap:24px;align-items:flex-start;margin-bottom:16px}
.admin-top h1{margin:0 0 4px;font-size:2.2rem}
.admin-top p{margin:0;color:#666}
.admin-search{margin-bottom:22px}
.recipe-section{margin:0 0 28px}
.section-heading{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:10px}
.section-heading h2{margin:0;font-size:1.55rem}
.section-heading span{color:#777;font-size:.95rem}
.recipe-gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:16px}
.admin-recipe-card{background:#fff;border-radius:18px;overflow:hidden;box-shadow:0 3px 14px #0002;min-width:0}
.admin-photo{height:160px;position:relative;background:#ddd}
.admin-photo img{width:100%;height:100%;object-fit:cover;display:block}
.badge{position:absolute;top:9px;padding:6px 9px;border-radius:999px;font-size:.78rem;font-weight:900;box-shadow:0 2px 7px #0003}
.badge-new {
    left: 9px;
    background: #ff4757;
    color: white;
    font-size: .72rem;
    font-weight: 900;
    padding: 5px 8px;
    letter-spacing: .04em;
}

.badge-new::after {
    content: "NEW";
}

.badge-count{right:9px;background:rgba(255,255,255,.94);color:#222}
.admin-card-body{padding:12px}
.admin-card-body h3{font-size:1.04rem;line-height:1.2;margin:0 0 10px;min-height:2.5em}
.reaction-summary{display:flex;gap:14px;font-weight:750;margin-bottom:12px;color:#444}
.quick-plan{display:grid;grid-template-columns:1fr auto;gap:8px}
.quick-plan input{min-width:0;padding:9px;border:1px solid #ccc;border-radius:9px}
.quick-plan button{border:0;border-radius:9px;padding:9px 12px;font-weight:800;cursor:pointer}
@media(max-width:700px){.recipe-gallery{grid-template-columns:1fr 1fr}.quick-plan{grid-template-columns:1fr}.admin-photo{height:130px}}
@media(max-width:460px){.recipe-gallery{grid-template-columns:1fr}
}

.stat-fav::before {
    content: "\2764\FE0F  ";
}

.stat-like::before {
    content: "\1F642  ";
}

.stat-dislike::before {
    content: "\1F44E  ";
}

.badge-count::before {
    content: "\1F37D\FE0F  ";
}

/* V3.2 — préparation hebdomadaire */
.next-four{background:#fff;border-radius:20px;padding:16px;margin:0 0 18px;box-shadow:0 3px 14px #0001}
.next-four .section-heading a{text-decoration:none;font-weight:750;color:#6b6b6b}
.next-four-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
.next-meal{position:relative;background:#f7f5f1;border-radius:14px;overflow:hidden;display:grid;grid-template-columns:86px 1fr auto;min-height:82px}
.next-meal img{width:86px;height:82px;object-fit:cover}
.next-meal>div{padding:9px 8px;min-width:0}
.next-meal strong{display:block;font-size:.86rem;color:#8d6400;text-transform:uppercase}
.next-meal span{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;font-size:.9rem;font-weight:750;line-height:1.18;margin-top:3px}
.next-meal form{padding:5px}
.next-meal button{border:0;background:transparent;font-size:1.35rem;cursor:pointer;color:#777}
.empty-week{grid-column:1/-1;padding:18px;text-align:center;color:#777}
.recipe-filters{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 16px}
.recipe-filters a{text-decoration:none;background:#fff;border-radius:999px;padding:9px 14px;font-weight:800;box-shadow:0 2px 9px #0001}
.recipe-filters a.active{background:#222;color:#fff}
.recipe-filters span{opacity:.7;margin-left:4px}

/* Pas d'emoji brut dans le HTML : évite les soucis d'encodage DSM */
.badge-new::after{content:"NEW"}
.badge-count::before{content:"\1F37D\FE0F  "}
.stat-fav::before{content:"\2764\FE0F  "}
.stat-like::before{content:"\1F642  "}
.stat-dislike::before{content:"\1F44E  "}

@media(max-width:1000px){.next-four-grid{grid-template-columns:1fr 1fr}}
@media(max-width:580px){.next-four-grid{grid-template-columns:1fr}}


/* V3.3 — planning éditable + fiche statistique */
.badge-planned{
  left:9px;
  top:42px;
  background:#222;
  color:#fff;
}
.recipe-stats-link{color:inherit;text-decoration:none}
.recipe-stats-link:hover{text-decoration:underline}

.calendar-cell{position:relative}
.calendar-manage{
  position:absolute;
  z-index:4;
  top:4px;
  right:4px;
  width:28px;
  height:25px;
  display:flex;
  align-items:center;
  justify-content:center;
  border-radius:9px;
  text-decoration:none;
  background:rgba(255,255,255,.92);
  color:#333;
  font-size:1.15rem;
  font-weight:900;
  box-shadow:0 2px 7px #0002;
}
.calendar-photo .feedback-badge{right:34px}

.stats-shortcut{
  display:inline-block;
  margin:-14px 0 22px;
  font-weight:750;
  color:#6a6a6a;
  text-decoration:none;
}
.stats-shortcut:hover{text-decoration:underline}

.stats-detail-page,.manage-meal-page{
  max-width:1100px;
  margin:0 auto;
  padding:24px;
}
.stats-hero{
  display:grid;
  grid-template-columns:380px 1fr;
  gap:28px;
  background:#fff;
  border-radius:22px;
  overflow:hidden;
  box-shadow:0 4px 18px #0002;
  margin-bottom:20px;
}
.stats-hero>img{
  width:100%;
  height:100%;
  min-height:330px;
  object-fit:cover;
}
.stats-hero>div{padding:28px 28px 28px 0}
.stats-hero h1{font-size:2.25rem;margin:0 0 22px}
.stats-kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
.stats-kpis>div{
  background:#f6f4ef;
  border-radius:14px;
  padding:13px;
  text-align:center;
}
.stats-kpis strong{display:block;font-size:1.7rem}
.stats-kpis span{font-size:.83rem;color:#666}
.stats-meta{display:flex;flex-wrap:wrap;gap:8px 18px;margin-top:18px;color:#555}
.history-panel{
  background:#fff;
  border-radius:20px;
  padding:20px;
  box-shadow:0 3px 14px #0001;
}
.history-panel h2{margin-top:0}
.history-row{
  display:flex;
  justify-content:space-between;
  align-items:center;
  border-top:1px solid #eee;
  padding:12px 2px;
}
.history-row>div{display:flex;gap:18px;align-items:center}
.history-row a{font-weight:750;text-decoration:none}
.history-vote{min-width:130px}
.muted{color:#888}

.manage-card{
  display:grid;
  grid-template-columns:420px 1fr;
  background:#fff;
  border-radius:24px;
  overflow:hidden;
  box-shadow:0 4px 18px #0002;
}
.manage-card>img{width:100%;height:100%;min-height:430px;object-fit:cover}
.manage-content{padding:34px}
.eyebrow-dark{font-weight:900;color:#8d6400;letter-spacing:.04em}
.manage-content h1{font-size:2.4rem;margin:8px 0 16px}
.change-date-form{display:flex;gap:12px;align-items:end;margin-top:28px}
.change-date-form label{display:grid;gap:6px;font-weight:750}
.change-date-form input{padding:11px;border:1px solid #ccc;border-radius:10px}
.change-date-form button,.remove-meal-form button{
  border:0;
  border-radius:10px;
  padding:12px 16px;
  font-weight:850;
  cursor:pointer;
}
.remove-meal-form{margin-top:16px}
.remove-meal-form button{background:#f1e2df;color:#8b2f25}
.manage-error{margin-top:16px;padding:12px;border-radius:10px;background:#fff0d6;color:#7b5200}

@media(max-width:800px){
  .stats-hero,.manage-card{grid-template-columns:1fr}
  .stats-hero>img{height:300px;min-height:0}
  .manage-card>img{height:320px;min-height:0}
  .stats-hero>div{padding:24px}
  .stats-kpis{grid-template-columns:1fr 1fr}
}

/* =========================================================
   V3.3.1 — Responsive smartphone / tablette
   À ajouter À LA FIN du style.css existant
   ========================================================= */

.calendar-mobile{display:none}

/* Tablette */
@media (max-width: 1050px){
  .admin-page{padding-left:16px!important;padding-right:16px!important}
  .recipe-gallery{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  .next-four-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  .calendar-page{padding-left:12px!important;padding-right:12px!important}
}

/* Smartphone */
@media (max-width: 700px){
  html,body{max-width:100%;overflow-x:hidden}

  /* ---------- Calendrier ---------- */
  .calendar-page{padding:12px!important}
  .calendar-header{
    display:block!important;
    margin-bottom:12px!important;
  }
  .calendar-header>.back{
    display:inline-block;
    margin-bottom:10px;
    min-height:40px;
    line-height:40px;
  }
  .calendar-nav{
    display:grid!important;
    grid-template-columns:48px 1fr 48px;
    align-items:center;
    width:100%;
    gap:6px;
  }
  .calendar-nav h1{
    font-size:1.55rem!important;
    text-align:center;
    margin:0!important;
  }
  .calendar-nav a{
    display:flex!important;
    align-items:center;
    justify-content:center;
    min-width:48px;
    min-height:48px;
    border-radius:14px;
    background:#fff;
    text-decoration:none;
    font-size:2rem;
    box-shadow:0 2px 9px #0001;
  }

  .calendar-desktop{display:none!important}
  .calendar-mobile{display:grid;gap:8px}

  .mobile-day{
    position:relative;
    display:grid;
    grid-template-columns:62px 1fr 42px;
    align-items:center;
    min-height:92px;
    background:#fff;
    border-radius:16px;
    overflow:hidden;
    box-shadow:0 2px 10px #00000012;
  }
  .mobile-day.mobile-empty{
    min-height:58px;
    opacity:.72;
  }
  .mobile-today{
    outline:3px solid #f0bd35;
    outline-offset:-3px;
  }
  .mobile-date{
    align-self:stretch;
    display:flex;
    flex-direction:column;
    align-items:center;
    justify-content:center;
    background:#f4f1eb;
    padding:6px 3px;
  }
  .mobile-weekday{
    font-size:.66rem;
    font-weight:900;
    text-transform:uppercase;
    color:#8d6400;
  }
  .mobile-date strong{
    font-size:1.55rem;
    line-height:1.05;
    margin-top:3px;
  }
  .mobile-recipe{
    min-width:0;
    display:grid;
    grid-template-columns:104px 1fr;
    align-items:stretch;
    color:inherit;
    text-decoration:none;
  }
  .mobile-recipe img{
    width:104px;
    height:92px;
    object-fit:cover;
  }
  .mobile-recipe-info{
    min-width:0;
    padding:9px 10px;
    display:flex;
    flex-direction:column;
    justify-content:center;
  }
  .mobile-recipe-title{
    display:-webkit-box;
    -webkit-box-orient:vertical;
    -webkit-line-clamp:3;
    overflow:hidden;
    font-size:.93rem;
    line-height:1.15;
    font-weight:850;
  }
  .mobile-feedback{
    margin-top:6px;
    font-size:.78rem;
    font-weight:750;
  }
  .mobile-muted{color:#888}
  .mobile-manage{
    display:flex;
    align-items:center;
    justify-content:center;
    min-width:42px;
    min-height:56px;
    font-size:1.45rem;
    color:#555;
    text-decoration:none;
  }
  .mobile-no-meal{
    padding-left:14px;
    color:#aaa;
  }

  /* ---------- Administration ---------- */
  .admin-page{padding:10px!important}
  .admin-top{
    display:block!important;
    margin-bottom:12px!important;
  }
  .admin-top .back{
    display:inline-block;
    min-height:40px;
    line-height:40px;
  }
  .admin-top h1{
    font-size:1.65rem!important;
    line-height:1.08!important;
    margin:.2rem 0!important;
  }
  .admin-top p{font-size:.9rem!important}

  .next-four{padding:12px!important;border-radius:16px!important}
  .next-four .section-heading{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:10px;
  }
  .next-four .section-heading h2{font-size:1.15rem!important}
  .next-four-grid{grid-template-columns:1fr!important}
  .next-meal{grid-template-columns:96px 1fr 44px!important}
  .next-meal img{width:96px!important;height:88px!important}
  .next-meal button{min-width:40px;min-height:40px}

  .admin-search{
    display:grid!important;
    grid-template-columns:1fr;
    gap:8px;
  }
  .admin-search input,.admin-search button{
    width:100%!important;
    min-height:46px;
    box-sizing:border-box;
  }

  .recipe-filters{
    flex-wrap:nowrap!important;
    overflow-x:auto;
    padding:2px 1px 8px;
    scrollbar-width:none;
  }
  .recipe-filters::-webkit-scrollbar{display:none}
  .recipe-filters a{
    flex:0 0 auto;
    min-height:42px;
    display:flex;
    align-items:center;
  }

  .recipe-gallery{
    grid-template-columns:1fr!important;
    gap:12px!important;
  }
  .admin-recipe-card{
    display:grid!important;
    grid-template-columns:42% 58%;
    min-height:185px;
  }
  .admin-photo{
    height:100%!important;
    min-height:185px;
  }
  .admin-photo>img{
    width:100%!important;
    height:100%!important;
    object-fit:cover!important;
  }
  .admin-card-body{
    padding:12px!important;
    min-width:0;
    display:flex;
    flex-direction:column;
  }
  .admin-card-body h3{
    font-size:1rem!important;
    line-height:1.15!important;
    margin:0 0 8px!important;
  }
  .reaction-summary{margin-top:auto!important;margin-bottom:9px!important}
  .quick-plan{
    display:grid!important;
    grid-template-columns:1fr;
    gap:7px!important;
  }
  .quick-plan input,.quick-plan button{
    width:100%!important;
    min-height:42px;
    box-sizing:border-box;
  }

  /* ---------- Fiches / gestion ---------- */
  .stats-detail-page,.manage-meal-page{padding:12px!important}
  .stats-hero,.manage-card{grid-template-columns:1fr!important}
  .stats-hero>img,.manage-card>img{
    height:240px!important;
    min-height:0!important;
  }
  .stats-hero>div,.manage-content{padding:18px!important}
  .stats-hero h1,.manage-content h1{
    font-size:1.65rem!important;
    line-height:1.1!important;
  }
  .stats-kpis{grid-template-columns:1fr 1fr!important}
  .history-row{
    align-items:flex-start!important;
    gap:10px;
  }
  .history-row>div{
    display:grid!important;
    gap:4px!important;
  }
  .change-date-form{
    display:grid!important;
    grid-template-columns:1fr;
  }
  .change-date-form input,
  .change-date-form button,
  .remove-meal-form button{
    width:100%;
    min-height:48px;
    box-sizing:border-box;
  }
}

/* Très petits téléphones */
@media (max-width: 430px){
  .mobile-day{grid-template-columns:56px 1fr 38px}
  .mobile-recipe{grid-template-columns:86px 1fr}
  .mobile-recipe img{width:86px;height:92px}
  .admin-recipe-card{grid-template-columns:38% 62%}
  .badge-count{font-size:.66rem!important}
}

@media (max-width: 700px) {
  .feedback {
    flex-wrap: nowrap !important;
    gap: 6px !important;
  }

  .feedback button {
    flex: 1 1 0;
    min-width: 0;
    padding: 10px 8px !important;
    font-size: .82rem !important;
    white-space: nowrap;
  }
}

/* V3.3.2 — authentification admin */
.login-page{
  min-height:100vh;display:flex;align-items:center;justify-content:center;
  padding:20px;background:#f2efe9;box-sizing:border-box
}
.login-card{
  width:min(420px,100%);background:#fff;border-radius:22px;padding:30px;
  box-shadow:0 8px 32px #0002;box-sizing:border-box
}
.login-lock{
  display:inline-block;background:#222;color:#fff;border-radius:999px;
  padding:6px 10px;font-size:.72rem;font-weight:900;letter-spacing:.08em
}
.login-card h1{font-size:2rem;margin:12px 0 4px}
.login-card p{color:#666;margin:0 0 24px}
.login-card form{display:grid;gap:9px}
.login-card label{font-weight:800}
.login-card input{
  width:100%;box-sizing:border-box;min-height:48px;border:1px solid #bbb;
  border-radius:11px;padding:10px 12px;font-size:1rem
}
.login-card button{
  min-height:48px;border:0;border-radius:11px;margin-top:5px;
  font-weight:900;cursor:pointer
}
.login-error{
  background:#fff0e8;color:#842e1d;border-radius:10px;
  padding:11px;margin-bottom:16px;font-weight:700
}
.login-home{display:inline-block;margin-top:18px;color:#666;text-decoration:none;font-weight:700}
.admin-logout,
.admin-logout:hover,
.admin-logout:visited {
  text-decoration: none;
  color: inherit;
  display:inline-flex;align-items:center;border:0;background:#eee;border-radius:999px;
  padding:8px 12px;font-weight:800;cursor:pointer
}

/* V3.4 — statistiques globales */
.stats-page{max-width:1200px;margin:0 auto;padding:24px}
.stats-page-head{display:flex;gap:26px;align-items:flex-start;margin-bottom:18px}
.stats-page-head h1{font-size:2.35rem;margin:0}
.stats-page-head p{margin:3px 0 0;color:#666}
.stats-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:16px}
.stats-summary article{background:#fff;border-radius:18px;padding:18px;box-shadow:0 3px 14px #0001}
.stats-summary strong{display:block;font-size:2rem}
.stats-summary span{font-size:.9rem;color:#666}
.stats-two-col{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:16px}
.stats-panel{background:#fff;border-radius:20px;padding:20px;box-shadow:0 3px 14px #0001}
.stats-panel h2{margin:0 0 16px;font-size:1.35rem}
.pie-wrap{display:flex;align-items:center;gap:28px}
.stats-pie{
  width:190px;height:190px;border-radius:50%;
  background:conic-gradient(
    #df3d63 0 calc(var(--fav)*1%),
    #e8a928 calc(var(--fav)*1%) calc((var(--fav) + var(--like))*1%),
    #777 calc((var(--fav) + var(--like))*1%) 100%
  );
  box-shadow:inset 0 0 0 34px #fff;
}
.pie-legend{display:grid;gap:12px;font-size:1.05rem;font-weight:800}
.pie-legend small{color:#777;font-weight:600;margin-left:5px}
.monthly-bars{display:grid;gap:10px}
.month-row{display:grid;grid-template-columns:92px 1fr 34px;gap:9px;align-items:center}
.month-row>span{font-size:.88rem}
.month-track{height:13px;background:#eee;border-radius:999px;overflow:hidden}
.month-track i{display:block;height:100%;background:#222;border-radius:999px}
.month-row strong{text-align:right}
.ranking-list{display:grid;gap:8px}
.rank-row{display:grid;grid-template-columns:28px 56px 1fr auto;gap:10px;align-items:center;text-decoration:none;color:inherit;padding:8px;border-radius:12px}
.rank-row:hover{background:#f7f5f1}
.rank{font-weight:900;color:#8d6400;text-align:center}
.rank-row img{width:56px;height:48px;object-fit:cover;border-radius:9px}
.rank-row div{min-width:0}
.rank-row div strong{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rank-row div small{display:block;color:#777;margin-top:2px}
.rank-votes,.served-count{font-weight:800;white-space:nowrap}
.stats-table-panel{margin-bottom:30px}
.stats-table-wrap{overflow-x:auto}
.stats-table{width:100%;border-collapse:collapse}
.stats-table th,.stats-table td{text-align:left;padding:10px;border-bottom:1px solid #eee}
.stats-table th{font-size:.85rem;text-transform:uppercase;color:#666}
.stats-table td:not(:first-child),.stats-table th:not(:first-child){text-align:center}
.stats-table a{color:inherit;font-weight:750;text-decoration:none}
.stats-table a:hover{text-decoration:underline}
@media(max-width:800px){
  .stats-page{padding:12px}
  .stats-page-head{display:block}
  .stats-page-head h1{font-size:1.8rem}
  .stats-summary{grid-template-columns:1fr 1fr}
  .stats-two-col{grid-template-columns:1fr}
  .pie-wrap{flex-direction:column}
  .stats-pie{width:170px;height:170px}
  .rank-row{grid-template-columns:24px 50px 1fr}
  .rank-votes,.served-count{grid-column:3}
}

/* V3.4 - Informations nutritionnelles */
.nutrition-line {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 18px;
  margin: 10px 0 16px;
  padding: 10px 14px;
  background: #f6f7f5;
  border-radius: 12px;
  font-size: 0.95rem;
}

.nutrition-line span {
  white-space: nowrap;
}

.nutrition-line b {
  font-weight: 700;
}

@media (max-width: 700px) {
  .nutrition-line {
    gap: 8px 14px;
  }

  .nutrition-line span {
    white-space: normal;
  }
}

/* V3.4 - Repères nutritionnels statistiques */

.nutrition-stats {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
  margin: 18px 0;
  width: 100%;
  max-width: 100%;
  box-sizing: border-box;
}

.nutrition-stat-card {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 14px 16px;
  min-width: 0;
  box-sizing: border-box;
  background: #fff;
  border-radius: 18px;
  text-decoration: none;
  color: inherit;
  box-shadow: 0 4px 18px rgba(0,0,0,.06);
}

.nutrition-stat-card:hover {
  text-decoration: none;
}

.nutrition-stat-icon {
  font-size: 1.8rem;
}

.nutrition-stat-card div {
  min-width: 0;
  display: flex;
  flex-direction: column;
}

.nutrition-stat-card small {
  color: #6d6d6d;
  margin-bottom: 3px;
}

.nutrition-stat-card strong {
  font-size: 1.35rem;
}

.nutrition-stat-card div > span {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  max-width: 100%;
  margin-top: 3px;
}

@media (max-width: 800px) {
  .nutrition-stats {
    grid-template-columns: 1fr;
  }
}

.days-since {
  color: #777;
  white-space: nowrap;
}

.person-feedback {
  margin-top: 12px;
}

.person-feedback > strong {
  display: block;
  margin-bottom: 6px;
  font-size: .95rem;
}

.person-stats {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-top: 12px;
}

.person-stats span {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 8px 12px;
  background: rgba(0, 0, 0, .04);
  border-radius: 12px;
}

.person-positive {
  margin: 12px 0 0;
  color: #666;
  font-size: .9rem;
}

.votes-total {
  grid-column: 1 / -1;
  margin: 0;
  text-align: center;
  color: #777;
  font-size: .9rem;
}

.history-person-votes {
  display: flex;
  flex-wrap: wrap;
  gap: 10px 18px;
  margin-top: 8px;
}

.history-person {
  display: inline-flex;
  align-items: center;
  gap: 7px;
}

.history-person > b {
  min-width: 52px;
}
