/* ============================================================
   FELICITA de Thoiry — Feuille de styles complète
   Utilisée par : index.html  &  admin/admin.html
   ============================================================ */

/* ── Reset ── */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

/* ── Variables ── */
:root {
  --br:        #6b4c2a;
  --br-dark:   #3b2310;
  --go:        #c9a84c;
  --bd:        #e4ddd3;
  --cream:     #faf7f2;
  --black:     #000000;
  --white:     #FFFFFF;
  --text:      #FFFFFF;
  --admintext: #000000;
  --muted:     #6b6b6b;
  --radius-sm: 6px;
  --radius-md: 10px;
  --radius-lg: 14px;
  --shadow: 0 4px 24px rgba(0,0,0,.07);
  --font-serif: 'Georgia', 'Times New Roman', serif;
  --font-sans:  'Breadley', 'Calligraffitti', 'Segoe UI', system-ui, sans-serif;
  --font-mono:  'Consolas', 'Monaco', monospace;
}

@font-face {
  font-family: 'Breadley';
  src: url('BreadleySans-Regular.ttf') format('truetype');
}
@font-face {
  font-family: 'Calligraffitti';
  src: url('Calligraffitti-Regular.ttf') format('truetype');
}

html { scroll-behavior: smooth; }
body { font-family: var(--font-sans); background: var(--black); color: var(--text); min-height: 100vh; display: flex; flex-direction: column; }

/* ── Utilitaires ── */
.muted-text { color: var(--muted); font-size: .85rem; }
.text-muted  { color: var(--muted); }
.menu-loading { color: var(--muted); font-size: .9rem; }
.error-box { padding: 2rem; background: #fff5f5; border-radius: var(--radius-md); border: 1px solid #ffcdd2; color: #c62828; font-size: .9rem; }
.error-box small { color: #888; margin-top: .4rem; display: block; }

/* ============================================================ HEADER ============================================================ */
header { background: var(--black); border-bottom: 1px solid var(--bd); position: sticky; top: 0; z-index: 100; box-shadow: 0 2px 12px rgba(0,0,0,.05); }
.header-inner { max-width: 1080px; margin: 0 auto; padding: 0 1.5rem; height: 100px; display: flex; align-items: center; justify-content: space-between; gap: 1rem; }
.logo { display: flex; align-items: center; gap: .65rem; text-decoration: none; flex-shrink: 0; cursor: pointer; }
.logo-icon { width: 42px; height: 42px; border-radius: 50%; background: var(--br); display: flex; align-items: center; justify-content: center; font-size: 1.2rem; }
.logo-text { font-family: var(--font-sans); font-size: 4.2rem; font-weight: bold; color: var(--white); line-height: 1.1; }
.logo-sub  { font-family: Calligraffitti; font-size: 1.2rem; color: var(--white); letter-spacing: .07em; }
nav ul { list-style: none; display: flex; gap: .2rem; font-family: var(--font-sans); text-transform: uppercase; }
nav a { text-decoration: none; color: var(--white); font-size: 1.5rem; font-weight: 500; padding: .42rem .82rem; border-radius: var(--radius-sm); transition: background .18s, color .18s; white-space: nowrap; }
nav a:hover, nav a.active { background: var(--muted); color: #fff; }

/* ── Sous-menu déroulant ── */
nav > ul > li { position: relative; }

/* Indicateur visuel : flèche sur les items avec sous-menu */
nav > ul > li.has-submenu > a::after {
  content: ' ▾';
  font-size: .85em;
  opacity: .75;
}

.submenu {
  /* Caché par défaut */
  display: block;
  visibility: hidden;
  opacity: 0;
  pointer-events: none;

  /* Positionnement sous le lien parent */
  position: absolute;
  top: 100%;
  left: 0;

  /* Passe par-dessus le carousel et tout le reste */
  z-index: 999;

  /* Apparence */
  background: var(--black);
  border: 1px solid rgba(255,255,255,.15);
  border-radius: var(--radius-md);
  min-width: 200px;
  padding: .4rem 0;
  margin-top: .3rem;
  box-shadow: 0 8px 32px rgba(0,0,0,.55);

  /* Flex en colonne, pas en ligne */
  flex-direction: column;
  gap: 0;

  /* Animation d'apparition vers le bas */
  transform: translateY(-8px);
  transition: opacity .22s ease, transform .22s ease, visibility .22s;
}

/* Items du sous-menu */
.submenu li { width: 100%; }

.submenu a {
  display: block;
  width: 100%;
  padding: .55rem 1.1rem;
  font-size: 1.1rem;
  font-weight: 400;
  color: var(--white);
  border-radius: 0;
  text-transform: uppercase;
  letter-spacing: .06em;
  transition: background .15s, color .15s, padding-left .15s;
  white-space: nowrap;
}

.submenu a:hover {
  background: var(--br);
  color: #fff;
  padding-left: 1.5rem;
}

/* Séparateur subtil entre items */
.submenu li + li a {
  border-top: 1px solid rgba(255,255,255,.06);
}

/* Affichage au survol du li parent */
nav > ul > li.has-submenu:hover .submenu,
nav > ul > li.has-submenu:focus-within .submenu {
  visibility: visible;
  opacity: 1;
  pointer-events: auto;
  transform: translateY(0);
}

/* Pont invisible entre le lien et le sous-menu pour éviter de "sortir" en diagonale */
nav > ul > li.has-submenu::after {
  content: '';
  position: absolute;
  top: 100%;
  left: 0;
  right: 0;
  height: .4rem;
}

.burger { display: none; flex-direction: column; gap: 5px; cursor: pointer; padding: .5rem; border: none; background: none; }
.burger span { display: block; width: 22px; height: 2px; background: var(--text); border-radius: 2px; transition: transform .28s, opacity .28s; }
/* Animations burger — actives dans tous les cas */
body.nav-open .burger span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
body.nav-open .burger span:nth-child(2) { opacity: 0; }
body.nav-open .burger span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }

/* Sous-menu en mobile : affiché en accordéon sous le lien parent */
@media (max-width: 680px) {
  .submenu {
    position: static;
    visibility: visible;
    opacity: 1;
    pointer-events: auto;
    transform: none;
    box-shadow: none;
    border: none;
    border-left: 2px solid var(--br);
    border-radius: 0;
    margin: .2rem 0 .2rem 1rem;
    padding: 0;
    display: none;           /* caché par défaut en mobile */
    background: transparent;
    min-width: unset;
    transition: none;
  }
  /* Affiché quand le li parent a la classe .open (ajoutée par JS) */
  nav > ul > li.has-submenu.open .submenu { display: flex; flex-direction: column; }
  .submenu a { font-size: 1rem; padding: .45rem .85rem; }
  .submenu li + li a { border-top: none; }
}

/* ============================================================ FOOTER ============================================================ */
footer { background: #1a1107; color: #c9b99a; padding: 3rem 1.5rem 1.5rem; margin-top: auto; }
.footer-grid { max-width: 1080px; margin: 0 auto; display: grid; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); gap: 2.5rem; }
.footer-col h4 { font-family: var(--font-serif); font-size: .95rem; color: #fff; margin-bottom: .9rem; padding-bottom: .45rem; border-bottom: 1px solid #3a2d1a; }
.footer-col ul { list-style: none; }
.footer-col li { margin-bottom: .5rem; }
.footer-col a  { color: #c9b99a; text-decoration: none; font-size: .85rem; transition: color .18s; }
.footer-col a:hover { color: var(--go); }
.hours-table { font-size: .85rem; width: 100%; border-collapse: collapse; }
.hours-table td { padding: .24rem 0; vertical-align: top; }
.hours-table td:first-child { color: #fff; font-weight: 600; min-width: 82px; }
.hours-table .closed { color: #e57373; font-style: italic; }
.footer-bottom { max-width: 1080px; margin: 2rem auto 0; padding-top: 1.2rem; border-top: 1px solid #3a2d1a; display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: .7rem; font-size: .78rem; color: #7a6a52; }
.footer-bottom a:hover { color: var(--go); }
.footer-bottom a { color: #7a6a52; text-decoration: none; transition: color .18s; }
.footer-legal { display: flex; gap: 1.2rem; flex-wrap: wrap; }

/* ============================================================ CAROUSEL ============================================================ */
.carousel { position: relative; width: 100%; height: clamp(380px, 60vh, 640px); overflow: hidden; background: #1a1107; outline: none; }
.carousel-track { position: relative; width: 100%; height: 100%; }
.carousel-slide { position: absolute; inset: 0; opacity: 0; transition: opacity .85s cubic-bezier(.4,0,.2,1); pointer-events: none; }
.carousel-slide.active { opacity: 1; pointer-events: auto; }
.carousel-slide img { width: 100%; height: 100%; object-fit: cover; object-position: center; display: block; transform: scale(1.08); transition: transform 6s ease-out; will-change: transform; }
.carousel-slide.active img { transform: scale(1); }
.carousel-overlay { position: absolute; inset: 0; background: linear-gradient(to bottom, rgba(0,0,0,.08) 0%, rgba(0,0,0,.35) 50%, rgba(0,0,0,.72) 100%); display: flex; flex-direction: column; align-items: center; justify-content: flex-end; padding: clamp(1.5rem, 5vw, 3.5rem); color: #fff; }
.carousel-badge { display: inline-block; background: none; color: var(--white); font-size: 2.8rem; font-weight: normal; letter-spacing: .12em; text-transform: uppercase; padding: .28rem .8rem; border-radius: 20px; margin-bottom: 0; opacity: 0; transform: translateY(14px); transition: opacity .55s .2s, transform .55s .2s; }
.carousel-title { font-family: 'Breadley'; font-size: clamp(3.8rem, 8rem, 10rem); font-weight: normal; line-height: .8; margin-bottom: .65rem; max-width: 680px; opacity: 0; transform: translateY(18px); transition: opacity .6s .35s, transform .6s .35s; }
.carousel-sub { font-size: clamp(1.2rem, 2.5vw, 1.8rem); opacity: 0; max-width: 520px; line-height: 1.55; margin-bottom: 1.4rem; transform: translateY(14px); transition: opacity .55s .5s, transform .55s .5s; font-family: 'Calligraffitti'; }
.carousel-cta { display: inline-block; background: var(--go); color: #1a1a1a; font-size: 1.6rem; font-weight: 700; padding: .65rem 1.5rem; border-radius: var(--radius-sm); text-decoration: none; letter-spacing: .04em; opacity: 0; transform: translateY(10px); transition: opacity .5s .65s, transform .5s .65s, background .2s; }
.carousel-cta:hover { background: #d4b55a; transform: translateY(-1px) !important; }
.carousel-slide.active .carousel-badge, .carousel-slide.active .carousel-title, .carousel-slide.active .carousel-sub, .carousel-slide.active .carousel-cta { opacity: 1; transform: translateY(0); }
.carousel-slide.active .carousel-sub { opacity: .88; }
.carousel-arrow { position: absolute; top: 50%; transform: translateY(-50%); z-index: 10; width: 44px; height: 44px; border-radius: 50%; border: 1.5px solid rgba(255,255,255,.45); background: rgba(0,0,0,.28); color: #fff; cursor: pointer; display: flex; align-items: center; justify-content: center; backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px); transition: background .2s, border-color .2s, transform .2s; }
.carousel-arrow:hover { background: rgba(0,0,0,.55); border-color: rgba(255,255,255,.75); transform: translateY(-50%) scale(1.07); }
.carousel-prev { left: 1.25rem; }
.carousel-next { right: 1.25rem; }
.carousel-dots { position: absolute; bottom: 1.15rem; right: 1.5rem; display: flex; gap: .4rem; z-index: 10; }
.carousel-dot { width: 8px; height: 8px; border-radius: 50%; border: 1.5px solid rgba(255,255,255,.6); background: transparent; cursor: pointer; padding: 0; transition: background .25s, transform .25s, border-color .25s; }
.carousel-dot.active { background: #fff; border-color: #fff; transform: scale(1.25); }
.carousel-dot:hover:not(.active) { background: rgba(255,255,255,.45); }
.carousel-progress { position: absolute; bottom: 0; left: 0; right: 0; height: 3px; background: rgba(255,255,255,.18); z-index: 10; }
.carousel-progress-bar { height: 100%; width: 0%; background: var(--white); border-radius: 0 2px 2px 0; }

/* ============================================================ INDEX MENU ============================================================ */
main { flex: 1; max-width: 1080px; margin: 15px auto 0; padding: 3rem 1.5rem; width: 95%; border: thick solid var(--white); }
.right_top_flower { background-image: url(./images/fleures.png); background-size: 12px; float: right; background-repeat: no-repeat; height: 120px; background-size: contain; width: 70px; position: relative; z-index: -1; }
.section-title { font-family: var(--font-sans); font-size: 1.65rem; color: var(--white); margin-bottom: .4rem; }
.section-divider { width: 48px; height: 0; background: var(--black); border-radius: 2px; margin-bottom: 2rem; }
.menu-category { margin-bottom: 3rem;     margin-bottom: 3rem;    background-image: url(./images/fleures.png);/* width: 70px; */ /* position: relative; */background-size: 100px; background-repeat: no-repeat;    background-position-x: right; z-index: -1;}
.menu-anchor {height: 2px}
.category-label { display: inline-flex; flex-direction: column; align-items: center; gap: .45rem; font-size: 2.5rem; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; color: var(--white); margin-bottom: 1.1rem; width: 100%; }
.category-label::after { content: ''; display: block; width: 38px; height: 1px; background: var(--go); }
.dish-list { display: flex; flex-direction: column; gap: .7rem; }
.dish-card { background: none; border: 0 solid var(--bd); border-radius: var(--radius-md); padding: 1.1rem 1.4rem; display: grid; grid-template-columns: 1fr auto; column-gap: 1.5rem; row-gap: .32rem; transition: box-shadow .2s, transform .2s; }
.dish-card:hover { box-shadow: var(--shadow); transform: translateY(-2px); }
.dish-card.unavailable { opacity: .42; pointer-events: none; }
.dish-name { text-transform: uppercase; font-family: var(--font-sans); font-size: 1.98rem; font-weight: bold; color: var(--white); grid-column: 1; grid-row: 1; align-self: center; }
.dish-price { font-size: 1.98rem; font-weight: 700; color: var(--white); grid-column: 2; grid-row: 1; white-space: nowrap; align-self: center; }
.dish-desc { font-size: 1.6rem; color: var(--text); line-height: 1.55; grid-column: 1 / -1; grid-row: 2; }
.dish-tags { display: flex; gap: .38rem; flex-wrap: wrap; grid-column: 1 / -1; grid-row: 3; margin-top: .25rem; }
.tag { font-size: 1rem; font-weight: 700; padding: .18rem .52rem; border-radius: 20px; letter-spacing: .04em; }
.tag-vegetarien { background: #eaf5ea; color: #2e7d32; }
.tag-bio        { background: #e8f4fd; color: #1565c0; }
.tag-nouveau    { background: #fff3cd; color: #a36a00; }
.tag-signature  { background: #fde8e8; color: #c62828; }
.tag-info       { background: #f3e8ff; color: #6b21a8; }

/* ============================================================ ADMIN GÉNÉRAL ============================================================ */
.admin-body { background: #f4f1ec; color: var(--admintext); }
.auth-overlay { position: fixed; inset: 0; background: linear-gradient(135deg, #3b2310, #6b4c2a); display: flex; align-items: center; justify-content: center; z-index: 999; padding: 1.5rem; }
.auth-card { background: #fff; border-radius: var(--radius-lg); padding: 2.5rem 2rem; width: 100%; max-width: 400px; box-shadow: 0 20px 60px rgba(0,0,0,.3); text-align: center; }
.auth-card h2 { font-family: var(--font-serif); font-size: 1.4rem; color: var(--br); margin-bottom: .35rem; }
.auth-card p  { font-size: .875rem; color: var(--muted); margin-bottom: 1.8rem; }
.auth-back    { font-size: .75rem; color: var(--muted); margin-top: 1rem; }
.auth-back a  { color: var(--br); }
.btn-google { display: flex; align-items: center; justify-content: center; gap: .75rem; width: 100%; padding: .75rem 1rem; border: 1.5px solid #dadce0; border-radius: var(--radius-sm); background: #fff; font-size: .9rem; font-weight: 500; color: #3c4043; cursor: pointer; transition: background .18s, box-shadow .18s; }
.btn-google:hover { background: #f8f8f8; box-shadow: 0 1px 6px rgba(0,0,0,.12); }
.btn-google svg { flex-shrink: 0; }
.mfa-step { display: none; }
.mfa-step.visible { display: block; }
.mfa-intro { margin-bottom: 1.5rem; }
.mfa-title { font-size: 1rem; font-weight: 600; color: var(--admintext); margin-bottom: .4rem; }
.mfa-desc  { font-size: .82rem; color: var(--muted); margin-bottom: 1.4rem; }
.otp-inputs { display: flex; gap: .6rem; justify-content: center; margin-bottom: 1.2rem; }
.otp-inputs input { width: 44px; height: 52px; text-align: center; font-size: 1.4rem; font-weight: 600; border: 1.5px solid var(--bd); border-radius: var(--radius-sm); outline: none; transition: border-color .18s; color: var(--admintext); background: #fafafa; }
.otp-inputs input:focus  { border-color: var(--br); background: #fff; }
.otp-inputs input.filled { border-color: var(--br); background: var(--cream); }
.btn-primary { width: 100%; padding: .72rem 1rem; background: var(--br); color: #fff; border: none; border-radius: var(--radius-sm); font-size: .9rem; font-weight: 600; cursor: pointer; transition: opacity .18s; }
.btn-primary:hover    { opacity: .88; }
.btn-primary:disabled { opacity: .45; cursor: not-allowed; }
.auth-error { margin-top: .75rem; font-size: .8rem; color: #c62828; background: #fde8e8; border-radius: var(--radius-sm); padding: .42rem .7rem; display: none; }
.auth-error.visible { display: block; }
.google-picker { display: none; background: #fff; border: 1px solid #dadce0; border-radius: 8px; padding: .75rem; margin-top: 1rem; text-align: left; }
.google-picker.visible { display: block; }
.google-picker-title { font-size: .75rem; color: var(--muted); margin-bottom: .6rem; text-align: center; }
.google-account { display: flex; align-items: center; gap: .65rem; padding: .55rem .6rem; border-radius: 6px; cursor: pointer; transition: background .15s; }
.google-account:hover { background: #f1f3f4; }
.google-account--disabled { opacity: .45; pointer-events: none; cursor: default; }
.google-avatar { width: 36px; height: 36px; border-radius: 50%; background: #4285f4; color: #fff; font-size: .85rem; font-weight: 600; display: flex; align-items: center; justify-content: center; flex-shrink: 0; }
.google-avatar--alt { background: #9c27b0; }
.google-account-info p    { font-size: .875rem; font-weight: 500; line-height: 1.2; }
.google-account-info span { font-size: .78rem; color: var(--muted); }
.admin-layout { display: none; flex: 1; }
.admin-layout.visible { display: flex; flex-direction: column; }
.admin-header { background: #fff; border-bottom: 1px solid var(--bd); padding: 0 1.5rem; height: 60px; display: flex; align-items: center; justify-content: space-between; }
.admin-header-title { display: flex; align-items: center; gap: .7rem; font-family: var(--font-serif); font-size: 1.1rem; color: var(--br); }
.admin-header-title a { font-family: var(--font-serif); font-size: 1.1rem; color: var(--br); text-decoration: none; }
.admin-badge { font-size: .65rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; background: var(--go); color: #1a1a1a; padding: .18rem .55rem; border-radius: 20px; }
.admin-user { display: flex; align-items: center; gap: .6rem; font-size: .85rem; color: var(--muted); }
.user-avatar { width: 32px; height: 32px; border-radius: 50%; background: #4285f4; color: #fff; font-size: .78rem; font-weight: 600; display: flex; align-items: center; justify-content: center; }
.btn-logout { background: none; border: 1px solid var(--bd); border-radius: var(--radius-sm); font-size: .78rem; color: var(--muted); padding: .3rem .65rem; cursor: pointer; transition: border-color .18s, color .18s; }
.btn-logout:hover { border-color: #c62828; color: #c62828; }
.admin-content { max-width: 1080px; margin: 0 auto; padding: 2rem 1.5rem; width: 100%; flex: 1; }
.admin-tabs { display: flex; gap: .35rem; border-bottom: 2px solid var(--bd); margin-bottom: 2rem; flex-wrap: wrap; }
.tab-btn { font-size: .875rem; font-weight: 500; padding: .65rem 1.1rem; background: none; border: none; cursor: pointer; color: var(--muted); border-bottom: 2px solid transparent; margin-bottom: -2px; transition: color .18s, border-color .18s; }
.tab-btn:hover  { color: var(--br); }
.tab-btn.active { color: var(--br); border-bottom-color: var(--br); }
.tab-panel { display: none; }
.tab-panel.active { display: block; }
.btn-sm { font-size: .78rem; padding: .32rem .7rem; border-radius: var(--radius-sm); border: 1px solid var(--bd); background: #fff; color: var(--admintext); cursor: pointer; transition: background .15s; }
.btn-sm:hover        { background: #f4f1ec; }
.btn-sm.accent       { background: var(--br); color: #fff; border-color: var(--br); }
.btn-sm.accent:hover { opacity: .88; }
.btn-sm.danger       { border-color: #f5c4c4; color: #c62828; }
.btn-sm.danger:hover { background: #fde8e8; }
.btn-dashed { margin-top: .75rem; width: 100%; padding: .65rem; border-style: dashed; border-radius: var(--radius-md); }
.stats-bar { display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); gap: 1rem; margin-bottom: 1.75rem; }
.stat-card { background: #fff; border: 1px solid var(--bd); border-radius: var(--radius-md); padding: 1rem 1.2rem; }
.stat-label { font-size: .72rem; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: var(--muted); margin-bottom: .3rem; }
.stat-value { font-family: var(--font-serif); font-size: 1.8rem; color: var(--br); line-height: 1; }
.log-list { display: flex; flex-direction: column; gap: .5rem; }
.log-entry { display: flex; align-items: flex-start; gap: .75rem; font-size: .83rem; padding: .6rem .75rem; background: #fff; border: 1px solid var(--bd); border-radius: var(--radius-sm); }
.log-time   { color: var(--muted); white-space: nowrap; min-width: 80px; font-size: .75rem; }
.log-action { color: var(--admintext); }
.log-dot    { width: 7px; height: 7px; border-radius: 50%; flex-shrink: 0; margin-top: 4px; }
.log-dot.save { background: #2e7d32; }
.log-dot.load { background: #1565c0; }
.log-dot.auth { background: var(--go); }
.preview-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 1rem; }
.preview-card { background: #fff; border: 1px solid var(--bd); border-radius: var(--radius-md); padding: 1rem; }
.preview-cat { font-size: .68rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: var(--go); margin-bottom: .65rem; }
.preview-dish { display: flex; justify-content: space-between; align-items: baseline; gap: .5rem; padding: .42rem 0; border-bottom: 1px solid #f0ece6; font-size: .85rem; }
.preview-dish:last-child { border-bottom: none; }
.preview-dish-name  { color: var(--admintext); font-weight: 500; }
.preview-dish-price { color: var(--br); font-weight: 600; white-space: nowrap; }
.preview-dish.off   { opacity: .4; text-decoration: line-through; }
.save-bar { position: sticky; bottom: 0; background: #fff; border-top: 1px solid var(--bd); padding: .8rem 1.5rem; display: flex; align-items: center; justify-content: space-between; gap: 1rem; flex-wrap: wrap; box-shadow: 0 -4px 16px rgba(0,0,0,.06); z-index: 50; }
.save-status       { font-size: .82rem; color: var(--muted); }
.save-status.dirty { color: #a36a00; font-weight: 600; }
.save-status.ok    { color: #2e7d32; }
.save-actions { display: flex; gap: .55rem; flex-wrap: wrap; }
.panel-toolbar { display: flex; gap: .6rem; margin-bottom: 1.25rem; flex-wrap: wrap; align-items: center; }
.json-editor-wrap { background: #fff; border: 1px solid var(--bd); border-radius: var(--radius-md); overflow: hidden; }
.json-editor-toolbar { display: flex; align-items: center; justify-content: space-between; padding: .75rem 1rem; background: var(--cream); border-bottom: 1px solid var(--bd); flex-wrap: wrap; gap: .5rem; }
.json-editor-toolbar span { font-size: .78rem; color: var(--muted); font-family: var(--font-mono); }
.toolbar-actions { display: flex; gap: .5rem; }
textarea.json-textarea { width: 100%; height: 440px; font-family: var(--font-mono); font-size: .82rem; line-height: 1.6; padding: 1rem 1.25rem; border: none; outline: none; background: #fff; color: var(--admintext); resize: vertical; }
.json-status { padding: .55rem 1rem; font-size: .78rem; border-top: 1px solid var(--bd); display: flex; align-items: center; gap: .5rem; }
.json-status.ok   { color: #2e7d32; background: #eaf5ea; }
.json-status.err  { color: #c62828; background: #fde8e8; }
.json-status.idle { color: var(--muted); }

/* ============================================================ MODAL ============================================================ */
.modal-backdrop { display: none; position: fixed; inset: 0; background: rgba(0,0,0,.45); z-index: 200; align-items: center; justify-content: center; padding: 1rem; }
.modal-backdrop.open { display: flex; }
.modal { background: #fff; border-radius: var(--radius-lg); width: 100%; max-width: 520px; box-shadow: 0 20px 60px rgba(0,0,0,.25); overflow: hidden; position: relative; }
.modal-header { display: flex; align-items: center; justify-content: space-between; padding: 1.1rem 1.4rem; border-bottom: 1px solid var(--bd); background: var(--cream); }
.modal-header h3 { font-family: var(--font-serif); font-size: 1.1rem; color: var(--br); }
.modal-close { width: 30px; height: 30px; border: none; background: none; cursor: pointer; border-radius: 50%; font-size: 1rem; color: var(--muted); display: flex; align-items: center; justify-content: center; transition: background .15s; }
.modal-close:hover { background: #f0ece6; }
.modal-body { padding: 1.4rem; display: flex; flex-direction: column; gap: 1rem; }
.modal-footer { padding: 1rem 1.4rem; border-top: 1px solid var(--bd); display: flex; justify-content: flex-end; gap: .6rem; background: var(--cream); }
.field { display: flex; flex-direction: column; gap: .35rem; }
.field label { font-size: .72rem; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--muted); }
.field label small { font-weight: 400; text-transform: none; margin-left: .25rem; }
.field input[type="text"], .field input[type="password"], .field textarea, .field select { border: 1.5px solid var(--bd); border-radius: var(--radius-sm); padding: .55rem .75rem; font-size: .9rem; font-family: var(--font-sans); color: var(--admintext); background: #fff; outline: none; transition: border-color .18s; width: 100%; }
.field input[type="text"]:focus, .field input[type="password"]:focus, .field textarea:focus, .field select:focus { border-color: var(--br); }
.field textarea { resize: vertical; min-height: 78px; line-height: 1.5; }
.field-row { display: grid; grid-template-columns: 1fr 1fr; gap: .75rem; }
.tags-group   { display: flex; flex-wrap: wrap; gap: .45rem; }
.tags-loading { font-size: .8rem; color: var(--muted); font-style: italic; }
.tag-check { display: flex; align-items: center; gap: .32rem; font-size: .8rem; cursor: pointer; padding: .28rem .65rem; border: 1.5px solid var(--bd); border-radius: 20px; transition: border-color .15s, background .15s; user-select: none; }
.tag-check input { display: none; }
.tag-check.checked { border-color: var(--br); background: var(--cream); }
.tag-dot { width: 7px; height: 7px; border-radius: 50%; background: #ccc; flex-shrink: 0; }
.tag-check.checked .tag-dot { background: var(--br); }
.toggle-wrap { display: flex; align-items: center; justify-content: space-between; padding: .65rem .85rem; background: var(--cream); border: 1.5px solid var(--bd); border-radius: var(--radius-sm); }
.toggle-label { font-size: .88rem; color: var(--admintext); }
.toggle { position: relative; width: 40px; height: 22px; flex-shrink: 0; }
.toggle input { display: none; }
.toggle-track { position: absolute; inset: 0; background: #ccc; border-radius: 11px; cursor: pointer; transition: background .2s; }
.toggle-track::after { content: ''; position: absolute; top: 3px; left: 3px; width: 16px; height: 16px; background: #fff; border-radius: 50%; transition: transform .2s; box-shadow: 0 1px 3px rgba(0,0,0,.2); }
.toggle input:checked + .toggle-track { background: var(--br); }
.toggle input:checked + .toggle-track::after { transform: translateX(18px); }
.confirm-delete { display: none; position: absolute; inset: 0; background: rgba(255,255,255,.96); border-radius: var(--radius-lg); align-items: center; justify-content: center; flex-direction: column; gap: 1rem; text-align: center; padding: 2rem; z-index: 10; }
.confirm-delete.open { display: flex; }
.confirm-delete p strong { color: #c62828; }
.confirm-actions { display: flex; gap: .6rem; }
.url-input { margin-top: .5rem; border: 1.5px solid var(--bd); border-radius: var(--radius-sm); padding: .52rem .75rem; font-size: .85rem; width: 100%; outline: none; transition: border-color .18s; font-family: var(--font-sans); color: var(--admintext); }
.url-input:focus { border-color: var(--br); }
.tag-warning { background: var(--cream); border: 1px solid var(--bd); border-radius: var(--radius-sm); padding: .75rem; font-size: .82rem; color: var(--muted); }

/* ============================================================ ÉDITEUR MENU ============================================================ */
.menu-editor { display: flex; flex-direction: column; gap: 1.25rem; }
.cat-block { background: #fff; border: 1px solid var(--bd); border-radius: var(--radius-md); overflow: hidden; }
.cat-header { display: flex; align-items: center; justify-content: space-between; padding: .8rem 1.1rem; background: var(--cream); border-bottom: 1px solid var(--bd); gap: .65rem; }
.cat-header-left { display: flex; align-items: center; gap: .55rem; flex: 1; min-width: 0; }
.cat-count { font-size: .72rem; color: var(--muted); margin-left: .2rem; }
.cat-name-input { font-family: var(--font-serif); font-size: 1rem; font-weight: bold; color: var(--br); border: 1.5px solid transparent; border-radius: var(--radius-sm); background: transparent; padding: .2rem .4rem; outline: none; flex: 1; min-width: 0; transition: border-color .18s, background .18s; }
.cat-name-input:hover { border-color: var(--bd); background: #fff; }
.cat-name-input:focus { border-color: var(--br); background: #fff; }
.cat-actions { display: flex; gap: .35rem; flex-shrink: 0; }
.drag-handle { color: #bbb; cursor: grab; font-size: .65rem; line-height: 1; flex-shrink: 0; padding: .1rem .2rem; border-radius: 3px; transition: color .15s, background .15s; user-select: none; }
.drag-handle:hover  { color: var(--br); background: #f4f1ec; }
.drag-handle:active { cursor: grabbing; }
.dishes-list { display: flex; flex-direction: column; }
.empty-dishes { padding: .75rem 1.1rem; font-size: .82rem; color: var(--muted); font-style: italic; }
.dish-row { display: grid; grid-template-columns: 20px 1fr auto auto; align-items: center; gap: .65rem; padding: .72rem 1.1rem; border-bottom: 1px solid #f5f0ea; transition: background .15s; }
.dish-row:last-child { border-bottom: none; }
.dish-row:hover      { background: #fdfcfa; }
.dish-row.is-off     { opacity: .48; }
.dish-info { min-width: 0; }
.dish-info-name  { font-weight: 600; font-size: .88rem; color: var(--admintext); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.dish-info-meta  { display: flex; align-items: center; gap: .45rem; margin-top: .15rem; flex-wrap: wrap; }
.dish-info-price { font-size: .78rem; color: var(--br); font-weight: 700; }
.dish-info-desc  { font-size: .75rem; color: var(--muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 220px; }
.dish-tag-pill   { font-size: .6rem; font-weight: 700; padding: .1rem .38rem; border-radius: 20px; }
.avail-badge { font-size: .65rem; padding: .15rem .42rem; border-radius: 20px; font-weight: 600; white-space: nowrap; flex-shrink: 0; }
.badge-on    { background: #eaf5ea; color: #2e7d32; }
.badge-off   { background: #fde8e8; color: #c62828; }
.dish-btn-group { display: flex; gap: .28rem; flex-shrink: 0; }
.icon-btn { width: 28px; height: 28px; border: 1px solid var(--bd); border-radius: var(--radius-sm); background: #fff; cursor: pointer; display: flex; align-items: center; justify-content: center; font-size: .8rem; transition: background .15s, border-color .15s; flex-shrink: 0; }
.icon-btn:hover        { background: #f4f1ec; border-color: #c9b99a; }
.icon-btn.danger:hover { background: #fde8e8; border-color: #f5c4c4; }
.add-dish-btn { display: flex; align-items: center; gap: .5rem; width: 100%; padding: .6rem 1.1rem; border: none; background: none; color: var(--br); font-size: .8rem; font-weight: 600; cursor: pointer; border-top: 1px dashed var(--bd); transition: background .15s; }
.add-dish-btn:hover { background: var(--cream); }
.info-block { background: #fff; border: 1px solid var(--bd); border-radius: var(--radius-md); padding: 1.2rem 1.4rem; display: flex; flex-direction: column; gap: 1rem; margin-bottom: 1.25rem; }
.info-block h3 { font-family: var(--font-serif); font-size: 1rem; color: var(--br); }
.dish-row.dragging, .cat-block.dragging { opacity: .3; pointer-events: none; }
.dish-row.insert-before  { border-top: 2.5px solid var(--go); }
.dish-row.insert-after   { border-bottom: 2.5px solid var(--go); }
.cat-block.insert-before { border-top: 3px solid var(--go); }
.cat-block.insert-after  { border-bottom: 3px solid var(--go); }
.dishes-list.drag-over   { background: #fdf5e6; }
.drag-ghost { position: fixed; z-index: 9999; pointer-events: none; background: #fff; border: 1.5px solid var(--go); border-radius: var(--radius-md); padding: .55rem 1rem; font-size: .85rem; font-weight: 600; color: var(--admintext); box-shadow: 0 8px 24px rgba(0,0,0,.18); max-width: 280px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; opacity: 0; }
.drag-ghost.visible { opacity: 1; }

/* ============================================================ ADMIN CAROUSEL ============================================================ */
.slides-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 1rem; }
.slide-card { background: #fff; border: 1px solid var(--bd); border-radius: var(--radius-md); overflow: hidden; display: flex; flex-direction: column; }
.slide-card.inactive { opacity: .55; }
.slide-card-img { position: relative; height: 140px; background: #1a1107; overflow: hidden; flex-shrink: 0; }
.slide-card-img img { width: 100%; height: 100%; object-fit: cover; display: block; }
.slide-pos-badge    { position: absolute; top: .4rem; left: .4rem; background: rgba(0,0,0,.65); color: #fff; font-size: .65rem; font-weight: 700; padding: .18rem .45rem; border-radius: 4px; }
.slide-status-badge { position: absolute; top: .4rem; right: .4rem; font-size: .62rem; font-weight: 700; padding: .18rem .45rem; border-radius: 4px; }
.slide-status-badge.on  { background: #2e7d32; color: #fff; }
.slide-status-badge.off { background: #c62828; color: #fff; }
.slide-card-body  { padding: .85rem 1rem; flex: 1; display: flex; flex-direction: column; gap: .3rem; }
.slide-card-title { font-weight: 600; font-size: .88rem; color: var(--admintext); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.slide-card-sub   { font-size: .75rem; color: var(--muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.slide-card-badge { display: inline-block; font-size: .62rem; font-weight: 700; background: var(--go); color: #1a1a1a; padding: .12rem .4rem; border-radius: 20px; margin-top: auto; }
.slide-card-actions { display: flex; gap: .35rem; padding: .6rem 1rem; border-top: 1px solid var(--bd); background: var(--cream); }
.upload-zone { border: 2px dashed var(--bd); border-radius: var(--radius-md); padding: 1.5rem; text-align: center; cursor: pointer; transition: border-color .18s, background .18s; position: relative; }
.upload-zone:hover, .upload-zone.dragover { border-color: var(--br); background: var(--cream); }
.upload-zone input[type="file"] { position: absolute; inset: 0; opacity: 0; cursor: pointer; width: 100%; height: 100%; }
.upload-zone-label { font-size: .85rem; color: var(--muted); pointer-events: none; }
.upload-zone-label strong { color: var(--br); }
.upload-zone-label span   { font-size: .75rem; }
.upload-preview { margin-top: .75rem; max-height: 120px; border-radius: var(--radius-sm); object-fit: cover; display: none; max-width: 100%; }
.upload-preview.visible { display: block; }
.upload-progress { height: 4px; background: var(--bd); border-radius: 2px; margin-top: .5rem; display: none; }
.upload-progress.visible { display: block; }
.upload-progress-bar { height: 100%; background: var(--br); border-radius: 2px; width: 0%; transition: width .3s; }

/* ============================================================ ADMIN TAGS ============================================================ */
.tags-admin-list { display: flex; flex-direction: column; gap: .5rem; }
.tag-admin-row { display: grid; grid-template-columns: auto 1fr 1fr 1fr auto; align-items: center; gap: .75rem; padding: .75rem 1rem; background: #fff; border: 1px solid var(--bd); border-radius: var(--radius-md); }
.tag-admin-row:hover { border-color: #c9b99a; }
.tag-admin-swatch  { width: 12px; height: 12px; border-radius: 50%; flex-shrink: 0; }
.tag-admin-label   { font-size: .88rem; font-weight: 600; color: var(--admintext); }
.tag-admin-slug    { font-family: var(--font-mono); font-size: .8rem; color: var(--muted); }
.tag-admin-usage   { font-size: .75rem; color: var(--muted); }
.tag-admin-actions { display: flex; gap: .3rem; flex-shrink: 0; }

/* ============================================================ ADMIN FOOTER EDITOR ============================================================ */
.footer-admin-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 1.25rem; }
.footer-admin-section { background: #fff; border: 1px solid var(--bd); border-radius: var(--radius-md); overflow: hidden; }
.footer-section-header { display: flex; align-items: center; justify-content: space-between; padding: .8rem 1.1rem; background: var(--cream); border-bottom: 1px solid var(--bd); }
.footer-section-header h3 { font-family: var(--font-serif); font-size: .95rem; color: var(--br); }
.footer-row { display: grid; grid-auto-flow: column; grid-template-columns: 0fr 1fr auto; align-items: center; gap: .65rem; padding: .65rem 1.1rem; border-bottom: 1px solid #f5f0ea; font-size: .85rem; color: var(--admintext); }
.footer-row:last-child { border-bottom: none; }
.footer-row:hover      { background: #fdfcfa; }
.footer-row-href { font-size: .78rem; color: var(--muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.horaire-row { display: grid; grid-template-columns: auto 1fr auto auto; align-items: center; gap: .65rem; padding: .65rem 1.1rem; border-bottom: 1px solid #f5f0ea; font-size: .85rem; color: var(--admintext); }
.horaire-row:last-child { border-bottom: none; }
.horaire-row:hover      { background: #fdfcfa; }
.horaire-row.is-closed  { color: #c62828; }
.horaire-row.dragging, .footer-row.dragging { opacity: .3; pointer-events: none; }
.horaire-row.insert-before, .footer-row.insert-before { border-top: 2.5px solid var(--go); }
.horaire-row.insert-after,  .footer-row.insert-after  { border-bottom: 2.5px solid var(--go); }
.horaire-heure        { font-size: .8rem; color: var(--muted); margin-left: .5rem; }
.horaire-closed-badge { font-size: .62rem; font-weight: 700; background: #fde8e8; color: #c62828; padding: .1rem .38rem; border-radius: 20px; }

/* ============================================================ ADMIN CONFIG DB ============================================================ */
.config-panel { display: flex; flex-direction: column; gap: 1.5rem; }
.config-card { background: #fff; border: 1px solid var(--bd); border-radius: var(--radius-md); overflow: hidden; }
.config-card-header { display: flex; align-items: center; justify-content: space-between; padding: .9rem 1.25rem; background: var(--cream); border-bottom: 1px solid var(--bd); }
.config-card-header h3 { font-family: var(--font-serif); font-size: 1rem; color: var(--br); display: flex; align-items: center; gap: .5rem; }
.config-card-body { padding: 1.25rem; display: flex; flex-direction: column; gap: 1rem; }
.config-field-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: .85rem; }
.config-field { display: flex; flex-direction: column; gap: .3rem; }
.config-field--full { grid-column: 1 / -1; }
.config-field label { font-size: .72rem; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--muted); }
.config-field input { border: 1.5px solid var(--bd); border-radius: var(--radius-sm); padding: .52rem .75rem; font-size: .9rem; font-family: var(--font-sans); color: var(--admintext); background: #fff; outline: none; transition: border-color .18s; width: 100%; }
.config-field input:focus { border-color: var(--br); }
.db-status { display: flex; align-items: center; gap: .55rem; font-size: .82rem; padding: .6rem .9rem; border-radius: var(--radius-sm); border: 1px solid var(--bd); background: #f9f9f9; }
.db-status-dot { width: 9px; height: 9px; border-radius: 50%; flex-shrink: 0; background: #ccc; }
.db-status.ok   { border-color: #c8e6c9; background: #f1f8f1; color: #2e7d32; }
.db-status.err  { border-color: #ffcdd2; background: #fff5f5; color: #c62828; }
.db-status.warn { border-color: #ffe0b2; background: #fffbf5; color: #a36a00; }
.db-status.ok   .db-status-dot { background: #2e7d32; }
.db-status.err  .db-status-dot { background: #c62828; }
.db-status.warn .db-status-dot { background: #a36a00; }
.config-actions { display: flex; align-items: center; gap: .65rem; flex-wrap: wrap; }
.config-guide p   { font-size: .85rem; color: var(--admintext); margin-bottom: .4rem; }
.config-guide pre { background: var(--cream); padding: .65rem .9rem; border-radius: 6px; font-size: .8rem; overflow-x: auto; font-family: var(--font-mono); margin-bottom: .85rem; }
.config-note { font-size: .78rem; color: var(--muted); margin-top: .5rem; }



/* ============================================================ ADMIN ÉDITEUR PAGES ============================================================ */
.pages-selector { display:flex;gap:.5rem;margin-bottom:1.25rem;border-bottom:2px solid var(--bd);padding-bottom:.5rem; }
.page-select-btn { padding:.5rem 1.2rem;border:1.5px solid var(--bd);border-radius:var(--radius-sm) var(--radius-sm) 0 0;background:#fff;color:var(--muted);font-size:.875rem;font-weight:500;cursor:pointer;transition:background .15s,color .15s,border-color .15s;border-bottom:none;margin-bottom:-2px; }
.page-select-btn:hover { color:var(--br);border-color:var(--br); }
.page-select-btn.active { background:var(--br);color:#fff;border-color:var(--br); }
.pages-editor-wrap { background:#fff;border:1px solid var(--bd);border-radius:var(--radius-md);overflow:hidden; }
.pages-meta-row { display:flex;gap:.85rem;padding:1rem 1.25rem;background:var(--cream);border-bottom:1px solid var(--bd);flex-wrap:wrap;align-items:flex-start; }
.editor-toolbar { display:flex;align-items:center;gap:.25rem;padding:.5rem .75rem;background:#f9f6f2;border-bottom:1px solid var(--bd);flex-wrap:wrap;min-height:44px; }
.editor-toolbar-group { display:flex;align-items:center;gap:.15rem;padding:0 .35rem;border-right:1px solid var(--bd); }
.editor-toolbar-group:last-child { border-right:none; }
.editor-btn { min-width:30px;height:28px;padding:0 .5rem;border:1px solid transparent;border-radius:4px;background:none;cursor:pointer;font-size:.82rem;color:var(--admintext);display:flex;align-items:center;justify-content:center;transition:background .12s,border-color .12s;white-space:nowrap; }
.editor-btn:hover  { background:var(--bd);border-color:#c9b99a; }
.editor-btn.active { background:var(--br);color:#fff;border-color:var(--br); }
.editor-btn-upload { cursor:pointer;font-size:.78rem;gap:.3rem;padding:0 .65rem;border:1px solid var(--bd); }
.editor-toolbar select { height:28px;border:1px solid var(--bd);border-radius:4px;font-size:.82rem;padding:0 .4rem;background:#fff;color:var(--admintext);cursor:pointer;outline:none; }
.page-editor-area { min-height:420px;max-height:70vh;overflow-y:auto;padding:1.5rem 2rem;outline:none;font-family:var(--font-serif);font-size:1rem;line-height:1.8;color:var(--admintext);cursor:text; }
.page-editor-area:empty::before { content:attr(data-placeholder);color:#bbb;pointer-events:none; }
.page-editor-area h1 { font-size:1.8rem;margin:1.2rem 0 .5rem;color:var(--br); }
.page-editor-area h2 { font-size:1.5rem;margin:1.1rem 0 .45rem;color:var(--br); }
.page-editor-area h3 { font-size:1.25rem;margin:1rem 0 .4rem;color:var(--br); }
.page-editor-area h4,.page-editor-area h5,.page-editor-area h6 { margin:.85rem 0 .35rem; }
.page-editor-area p  { margin-bottom:.75rem; }
.page-editor-area ul,.page-editor-area ol { margin:.5rem 0 .75rem 1.5rem; }
.page-editor-area li { margin-bottom:.3rem; }
.page-editor-area blockquote { border-left:3px solid var(--go);padding:.5rem 1rem;margin:.75rem 0;background:var(--cream);color:var(--muted);font-style:italic; }
.page-editor-area table { border-collapse:collapse;width:100%;margin:.75rem 0; }
.page-editor-area td,.page-editor-area th { border:1px solid var(--bd);padding:.4rem .6rem; }
.page-editor-area th { background:var(--cream);font-weight:600; }
.page-editor-area hr { border:none;border-top:1px solid var(--bd);margin:1rem 0; }
.page-editor-area a  { color:var(--br); }
.page-html-source { width:100%;min-height:420px;max-height:70vh;font-family:var(--font-mono);font-size:.8rem;line-height:1.6;padding:1.25rem 1.5rem;border:none;outline:none;resize:vertical;color:var(--admintext);background:#fafafa; }
.import-progress { display:flex;align-items:center;gap:.75rem;padding:.75rem 1.25rem;background:#fffbf5;border-top:1px solid #ffe0b2;font-size:.85rem;color:#a36a00; }
.pages-save-bar { display:flex;align-items:center;justify-content:space-between;padding:.75rem 1.25rem;background:var(--cream);border-top:1px solid var(--bd);gap:1rem;flex-wrap:wrap; }
.pages-save-status       { font-size:.82rem;color:var(--muted); }
.pages-save-status.dirty { color:#a36a00;font-weight:600; }
.pages-save-status.ok    { color:#2e7d32; }
.pages-save-status.saving{ color:#1565c0; }
.spin { display:inline-block;width:14px;height:14px;border:2px solid currentColor;border-top-color:transparent;border-radius:50%;animation:spin .6s linear infinite;flex-shrink:0; }
@keyframes spin { to { transform:rotate(360deg); } }

/* ============================================================ RESPONSIVE ============================================================ */
@media (max-width: 680px) {
  .burger { display: flex; }
  nav {
    display: none;
    position: fixed;      /* fixed échappe au containing block du header sticky */
    top: 100px;           /* hauteur du header */
    left: 0; right: 0;
    background: var(--black);
    border-bottom: 1px solid var(--bd);
    padding: .7rem 1.5rem 1.1rem;
    box-shadow: 0 8px 20px rgba(0,0,0,.15);
    z-index: 200;         /* au-dessus du carousel */
  }
  /* Ouvrir le nav mobile */
  body.nav-open nav { display: block; }
  nav ul { flex-direction: column; gap: .1rem; }
  nav a  { display: block; padding: .6rem .85rem; }

  /* ── Sous-menu accordéon en mode burger ── */

  /* Annuler le positionnement absolu desktop → flux normal */
  .submenu {
    position: static;
    visibility: visible;
    opacity: 1;
    pointer-events: auto;
    transform: none;
    box-shadow: none;
    border: none;
    border-left: 2px solid var(--go);
    border-radius: 0;
    min-width: 0;
    margin: 0 0 .2rem .85rem;
    padding: 0;
    background: rgba(255,255,255,.04);

    /* Déroulant : replié par défaut */
    max-height: 0;
    overflow: hidden;
    transition: max-height .3s ease;
  }

  /* Déploiement fluide quand .open est présent */
  .has-submenu.open .submenu {
    max-height: 500px;
  }

  /* Items du sous-menu */
  .submenu a {
    padding: .55rem .85rem .55rem 1.4rem;
    font-size: 1rem;
    color: var(--go);
    border-radius: 0;
    transition: background .15s, color .15s;
  }

  /* Changement de fond au survol/tap */
  .submenu a:hover,
  .submenu a:active {
    background: var(--br);
    color: #fff;
    padding-left: 1.4rem;
  }

  .submenu li + li a {
    border-top: 1px solid rgba(255,255,255,.08);
  }

  /* Flèche : ▾ fermé → ▴ ouvert */
  .has-submenu.open > a::after {
    content: ' ▴';
  }
  .logo-sub { display: none; }
  .admin-user span { display: none; }
  .carousel { height: clamp(300px, 65vw, 420px); }
  .carousel-arrow { width: 36px; height: 36px; }
  .carousel-prev { left: .65rem; }
  .carousel-next { right: .65rem; }
  .carousel-overlay { padding: 1.25rem; }
}

@media (max-width: 600px) {
  .dish-row { grid-template-columns: 18px 1fr auto; }
  .avail-badge { display: none; }
  .field-row { grid-template-columns: 1fr; }
  .save-bar { padding: .75rem 1rem; }
  .config-field-grid { grid-template-columns: 1fr; }
  .slides-grid { grid-template-columns: 1fr; }
  .footer-admin-grid { grid-template-columns: 1fr; }
  .tag-admin-row { grid-template-columns: auto 1fr auto; }
  .tag-admin-slug, .tag-admin-usage { display: none; }
}

@media (max-width: 420px) {
  .otp-inputs input { width: 38px; height: 46px; font-size: 1.2rem; }
  .stats-bar { grid-template-columns: 1fr 1fr; }
}
