/* =========================================================
   Délices de Sihean — « L'Arche Admin » stylesheet
   Design direction: docs/admin-design-direction.md
   Inherits every token from site.css (loaded first). Adds status colours only.
   Classes generated by assets/js/admin-*.js are kept (see §11 of the direction).
   ========================================================= */

:root{
  /* status colours — text always accompanies colour (contrast: direction §5) */
  --ok-ink: oklch(0.44 0.085 152);    /* #28603A */
  --ok-wash: oklch(0.93 0.035 150);   /* #D8EFDC */
  --warn-ink: oklch(0.47 0.095 68);   /* #7D4F12 */
  --warn-wash: oklch(0.93 0.045 85);  /* #F6E6C7 */
  --err-ink: var(--vin-ink);          /* #962228 */
  --err-wash: oklch(0.92 0.035 25);   /* #FBDCD9 */
  --ad-side-w: 16rem;
  --ad-line: oklch(0.281 0.044 22.4 / 0.18);
  --ad-field: oklch(0.975 0.012 88);  /* input surface, a touch lighter than Ivoire */
  --ad-radius: 6px;
}

/* ---------- base ---------- */
body.admin-body{
  min-height:100vh; margin:0; background:var(--ivoire); color:var(--bordeaux);
  font:400 var(--step-0)/1.6 var(--body);
}
.admin-body :focus-visible{ outline:3px solid var(--vin); outline-offset:2px; border-radius:3px }
.admin-body .skip{ z-index:200 }
.ad-sr{ position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap }

/* guard screen (shown until check_admin_access() answers) */
.admin-loading-screen{
  position:fixed; inset:0; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:var(--s4);
  background:var(--ivoire); color:var(--cacao); font:500 1rem/1.4 var(--utility); z-index:100;
}
.admin-loading-logo-box{
  display:flex; align-items:center; justify-content:center; margin-bottom:var(--s2);
  animation:ad-pulse 2s ease-in-out infinite;
}
.admin-loading-logo{
  width:84px; height:auto; object-fit:contain;
  filter: drop-shadow(0 4px 14px rgba(93, 24, 40, 0.12));
}
@keyframes ad-pulse{
  0%, 100%{ transform:scale(1); opacity:1; }
  50%{ transform:scale(1.05); opacity:0.88; }
}
.admin-loading-label{
  font-family:var(--display, var(--serif)); font-size:1.05rem; color:var(--bordeaux); letter-spacing:0.02em;
}
.admin-spinner{
  display:inline-block; width:1rem; height:1rem; border-radius:50%;
  border:2px solid currentColor; border-top-color:transparent; animation:ad-spin .8s linear infinite;
}
.admin-loading-screen .admin-spinner{ width:2.2rem; height:2.2rem; border-width:3px; color:var(--bordeaux); border-top-color:var(--or, #c9933e); }
@keyframes ad-spin{ to{ transform:rotate(360deg) } }

/* ================= LOGIN ================= */
.ad-login{ min-height:100vh; display:grid; grid-template-columns:1fr }
.ad-login-aside{ display:none }
.ad-login-main{ display:flex; flex-direction:column; justify-content:center; padding:var(--s7) var(--gutter) var(--s6) }
.ad-login-card{ width:100%; max-width:26rem; margin-inline:auto }
.ad-login-logo{ display:inline-block; margin-bottom:var(--s5) }
.ad-login-logo img{ width:72px; height:auto }
.admin-login-title{ margin:0; font:400 var(--step-4)/1.1 var(--display); color:var(--bordeaux) }
.admin-login-subtitle{ margin:var(--s3) 0 var(--s6); color:var(--cacao); max-width:32ch }
.admin-form{ display:grid; gap:var(--s5) }
.admin-login-btn{ width:100%; min-height:52px; gap:.6rem; font-size:1.05rem }
.admin-login-btn:disabled{ opacity:.75; cursor:progress }
.admin-return-link{ display:inline-block; margin-top:var(--s6); font:500 .95rem/1.4 var(--utility); color:var(--bordeaux) }
.ad-login-help{ margin-top:var(--s5); font-size:var(--step--1); color:var(--cacao); max-width:36ch }

@media (min-width:900px){
  .ad-login{ grid-template-columns:minmax(0,1fr) minmax(0,1fr) }
  .ad-login-aside{
    display:flex; flex-direction:column; justify-content:space-between; gap:var(--s7);
    background:var(--bordeaux); color:var(--ivoire); padding:var(--s7) clamp(2rem, 5vw, 5rem);
  }
  .ad-login-aside-logo img{ width:96px; height:auto }
  .ad-login-arch{ width:min(100%, 300px); align-self:center; position:relative; padding:8px; border-radius:999px 999px 6px 6px }
  .ad-login-arch::before{ content:""; position:absolute; inset:0; border:1px solid oklch(0.943 0.026 90.1 / .7); border-radius:inherit }
  .ad-login-arch::after{ content:""; position:absolute; inset:-7px; border:1px solid var(--ivoire-voile); border-radius:999px 999px 10px 10px }
  .ad-login-arch img{ display:block; width:100%; aspect-ratio:3/4; object-fit:cover; border-radius:999px 999px 3px 3px }
  .ad-login-quote{ margin:0; font:italic 400 var(--step-2)/1.3 var(--display); color:var(--ivoire); max-width:20ch }
  .ad-login-main{ padding:var(--s8) clamp(2rem, 6vw, 6rem) }
  .ad-login-logo{ display:none }
}

/* ---------- fields (login, menus, settings) ---------- */
.admin-field, .ad-field{ display:grid; gap:.4rem; min-width:0 }
.admin-field > label, .ad-field > label, .ad-label{ font:500 .95rem/1.3 var(--utility); color:var(--bordeaux) }
.admin-input{
  width:100%; min-height:48px; padding:.65rem .85rem; box-sizing:border-box;
  background:var(--ad-field); color:var(--bordeaux);
  border:1px solid var(--cacao); border-radius:var(--ad-radius);
  font:400 1rem/1.3 var(--utility); font-variant-numeric:tabular-nums;
  transition:border-color .15s var(--ease), box-shadow .15s var(--ease);
}
.admin-input:hover{ border-color:var(--bordeaux) }
.admin-input:focus-visible{ outline:none; border-color:var(--bordeaux); box-shadow:0 0 0 3px oklch(0.487 0.157 23.1 / .35) }
select.admin-input{ appearance:none; padding-right:2.4rem;
  background-image:linear-gradient(45deg, transparent 50%, var(--bordeaux) 50%), linear-gradient(135deg, var(--bordeaux) 50%, transparent 50%);
  background-position:calc(100% - 1.15rem) 55%, calc(100% - .8rem) 55%; background-size:.35rem .35rem; background-repeat:no-repeat }
.ad-hint, .menu-hint{ margin:0; font:400 var(--step--1)/1.45 var(--body); color:var(--cacao) }
.ad-pass{ position:relative }
.ad-pass .admin-input{ padding-right:7.5rem }
.ad-pass-toggle{
  position:absolute; right:.35rem; top:50%; transform:translateY(-50%);
  min-height:38px; padding:0 .8rem; border:0; border-radius:4px; background:transparent; color:var(--bordeaux);
  font:500 .9rem/1 var(--utility); text-decoration:underline; text-underline-offset:.2em; cursor:pointer;
}
.ad-pass-toggle:hover{ background:var(--lin) }
.ad-caps{ margin:0; font:500 var(--step--1)/1.4 var(--utility); color:var(--warn-ink) }
.ad-caps[hidden]{ display:none }

/* alerts */
.admin-alert{ margin:0 0 var(--s5); padding:.85rem 1rem; border-radius:var(--ad-radius); border:1px solid; font:400 .95rem/1.5 var(--utility) }
.admin-alert-error{ background:var(--err-wash); color:var(--err-ink); border-color:oklch(0.445 0.152 23.5 / .4) }
.admin-alert-info{ background:var(--lin); color:var(--bordeaux); border-color:var(--ad-line) }
.admin-alert-warn{ background:var(--warn-wash); color:var(--warn-ink); border-color:oklch(0.47 0.095 68 / .4) }

/* ================= SHELL ================= */
.ad-shell{ min-height:100vh; flex-direction:column }
.ad-side{
  position:sticky; top:0; z-index:30;
  display:grid; grid-template-columns:minmax(0,1fr) auto; grid-template-areas:"brand user" "nav nav";
  background:var(--bordeaux); color:var(--ivoire);
  box-shadow:0 4px 16px rgba(44,24,16,0.18);
}
.ad-brand{ grid-area:brand; display:flex; align-items:center; gap:.5rem; padding:.5rem var(--gutter); color:var(--ivoire); text-decoration:none; min-width:0 }
.ad-brand img{ width:36px; height:auto; flex:none }
.ad-brand-text{ display:grid; line-height:1.15; min-width:0 }
.ad-brand-name{ font:400 .98rem/1.15 var(--display); white-space:nowrap; overflow:hidden; text-overflow:ellipsis }
.ad-brand-sub{ font:500 .75rem/1.2 var(--utility); color:var(--ivoire-voile) }

.ad-user{ grid-area:user; display:flex; align-items:center; gap:.4rem; padding:.4rem var(--gutter) .4rem 0 }
.admin-user-info{ display:none }
.admin-user-email{ font:500 .9rem/1.3 var(--utility); color:var(--ivoire); overflow-wrap:anywhere }
.admin-user-role{ font:400 .8125rem/1.3 var(--utility); color:var(--ivoire-voile) }
.ad-logout{
  min-height:30px; padding:0 .65rem; border:1px solid oklch(0.943 0.026 90.1 / .45); border-radius:999px;
  background:transparent; color:var(--ivoire); font:500 .78rem/1 var(--utility); cursor:pointer;
  transition:background-color .15s var(--ease), border-color .15s var(--ease);
  white-space:nowrap;
}
.ad-logout:hover{ background:var(--bordeaux-raised); border-color:var(--ivoire) }
.ad-side :focus-visible{ outline-color:var(--ivoire) }
.ad-site-link{ display:none }

@media (max-width:1023px){
  #admin-lang-toggle{
    width:auto !important;
    margin-top:0 !important;
    padding:0.3rem 0.6rem !important;
    font-size:0.75rem !important;
    white-space:nowrap !important;
  }
}

/* the one navigation — a modern pill tab strip on phones, a column on desktop */
.ad-nav{
  grid-area:nav;
  background:rgba(44, 24, 16, 0.96);
  border-top:1px solid rgba(255, 255, 255, 0.08);
  overflow-x:auto;
  -webkit-overflow-scrolling:touch;
  scroll-behavior:smooth;
  scrollbar-width:none;
}
.ad-nav::-webkit-scrollbar{ display:none }
.ad-nav ul{
  display:flex;
  align-items:center;
  gap:.4rem;
  margin:0;
  padding:.4rem var(--gutter);
  list-style:none;
  white-space:nowrap;
}
.ad-nav a{
  position:relative;
  display:inline-flex;
  align-items:center;
  gap:.35rem;
  min-height:36px;
  padding:.35rem .85rem;
  border-radius:999px;
  background:transparent;
  color:var(--ivoire-voile);
  text-decoration:none;
  font:500 .875rem/1.2 var(--utility);
  transition:color .15s var(--ease), background-color .15s var(--ease), transform .15s var(--ease);
  flex-shrink:0;
}
.ad-nav a:hover{ color:var(--ivoire); background:oklch(1 0 0 / .08) }
.ad-nav a:active{ transform:scale(0.97) }
.ad-nav a[aria-current="page"]{
  color:var(--bordeaux);
  background:var(--ivoire);
  font-weight:600;
  box-shadow:0 1px 3px rgba(0,0,0,0.18);
}
.ad-nav a[aria-current="page"]::after{ display:none }
.ad-soon{ font:500 .75rem/1 var(--utility); color:var(--ivoire-voile); border:1px solid oklch(0.812 0.028 72.7 / .55); border-radius:999px; padding:.18rem .45rem }

.ad-main{ flex:1; min-width:0; padding:var(--s6) 0 var(--s8) }
.ad-wrap{ max-width:72rem; margin-inline:auto; padding-inline:var(--gutter) }

@media (min-width:600px){
  .admin-user-info{ display:grid; text-align:right }
}
@media (min-width:1024px){
  .ad-shell{ flex-direction:row; background:linear-gradient(to right, var(--bordeaux) var(--ad-side-w), transparent var(--ad-side-w)) }
  .ad-brand-name{ position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0) }
  .ad-side{
    width:var(--ad-side-w); height:100vh; flex:none; align-self:flex-start;
    display:flex; flex-direction:column; padding:var(--s5) 0 var(--s5);
  }
  .ad-brand{ padding:0 var(--s5) var(--s6); flex-direction:column; align-items:flex-start; gap:.8rem }
  .ad-brand img{ width:76px }
  .ad-nav{ background:transparent; overflow:visible; flex:1 }
  .ad-nav ul{ flex-direction:column; gap:.15rem; padding:0 var(--s3) }
  .ad-nav a{ min-height:46px; padding:0 .9rem; border-radius:var(--ad-radius); justify-content:space-between }
  .ad-nav a:hover{ background:var(--bordeaux-raised) }
  .ad-nav a[aria-current="page"]{ background:var(--ivoire); color:var(--bordeaux) }
  .ad-nav a[aria-current="page"]::after{ display:none }
  .ad-nav a[aria-current="page"] .ad-soon{ color:var(--cacao); border-color:var(--ad-line) }
  .ad-user{ flex-direction:column; align-items:stretch; gap:.75rem; padding:var(--s5) var(--s5) 0; border-top:1px solid var(--line-on-dark) }
  .admin-user-info{ text-align:left }
  .ad-site-link{ display:inline-block; padding-block:.3rem; min-height:24px; font:500 .9rem/1.3 var(--utility); color:var(--ivoire-voile); text-underline-offset:.2em }
  .ad-site-link:hover{ color:var(--ivoire) }
  .ad-main{ padding:var(--s7) 0 var(--s8) }
  .ad-wrap{ padding-inline:clamp(1.5rem, 3vw, 3rem) }
}

/* ================= PAGE HEADER ================= */
.ad-head{ display:flex; flex-wrap:wrap; align-items:flex-end; justify-content:space-between; gap:var(--s4) var(--s6); margin-bottom:var(--s6) }
.ad-head-text{ max-width:44rem }
.admin-page-title{ margin:0; font:400 var(--step-4)/1.1 var(--display); color:var(--bordeaux) }
.admin-page-lede{ margin:var(--s3) 0 0; color:var(--cacao) }
.ad-head-actions{ display:flex; flex-wrap:wrap; gap:var(--s3) }

/* ================= PANELS & PILLS ================= */
.admin-panel{
  background:var(--ivoire); border:1px solid var(--ad-line); border-radius:var(--ad-radius);
  padding:var(--s5); margin-bottom:var(--s5);
}
.admin-panel-header{ display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:var(--s3); margin-bottom:var(--s4) }
.admin-panel-title{ margin:0; font:400 var(--step-2)/1.2 var(--display); color:var(--bordeaux) }
.admin-panel-desc{ margin:0; color:var(--cacao); max-width:60ch }
.ad-panel-sub{ margin:-.5rem 0 var(--s4); color:var(--cacao); font-size:var(--step--1) }

.admin-badge{
  display:inline-flex; align-items:center; gap:.4rem; min-height:28px; padding:.2rem .7rem;
  border-radius:999px; border:1px solid transparent; white-space:nowrap;
  font:500 var(--label)/1.2 var(--utility);
}
.admin-badge::before{ content:""; width:.5rem; height:.5rem; border-radius:50%; background:currentColor; flex:none }
.admin-badge-active{ background:var(--ok-wash); color:var(--ok-ink) }
.admin-badge-warn, .admin-badge-pending{ background:var(--warn-wash); color:var(--warn-ink) }
.admin-badge-error{ background:var(--err-wash); color:var(--err-ink) }
.admin-badge-upcoming{ background:transparent; color:var(--cacao); border-color:var(--ad-line) }
.admin-badge-upcoming::before{ background:transparent; border:1px solid currentColor }

/* ================= OVERVIEW ================= */
/* signature: the service card */
.ad-service{
  display:grid; gap:var(--s6); align-items:center;
  background:var(--lin); border-radius:var(--ad-radius); padding:var(--s6) var(--s5); margin-bottom:var(--s6);
}
.ad-service-date{ margin:0 0 var(--s3); font:500 1rem/1.3 var(--utility); color:var(--bordeaux) }
.ad-service-date small{ display:block; margin-top:.2rem; font-weight:400; font-size:var(--step--1); color:var(--cacao) }
.ad-service-state{ margin:var(--s3) 0 var(--s3); font:400 var(--step-4)/1.08 var(--display); color:var(--bordeaux); max-width:20ch }
.ad-service-why{ margin:0 0 var(--s4); color:var(--cacao); max-width:52ch }
/* separate operational facts: publication · conditions · cutoff · checkout */
.ad-facts{ list-style:none; margin:0 0 var(--s5); padding:0; display:grid; gap:0; border-top:1px solid var(--ad-line); max-width:34rem }
.ad-fact{ display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:.3rem var(--s3); padding:.5rem 0; border-bottom:1px solid var(--ad-line) }
.ad-fact-label{ font:500 .95rem/1.35 var(--utility) }
.ad-service-actions{ display:flex; flex-wrap:wrap; gap:var(--s3) }
.ad-service-visual{ justify-self:center; width:min(56vw, 240px) }
.ad-arch{ position:relative; padding:8px; border-radius:999px 999px 6px 6px }
.ad-arch::before{ content:""; position:absolute; inset:0; border:1px solid var(--bordeaux); border-radius:inherit; pointer-events:none }
.ad-arch::after{ content:""; position:absolute; inset:-7px; border:1px solid var(--vin); border-radius:999px 999px 10px 10px; pointer-events:none }
.ad-arch img, .ad-arch .ad-arch-empty{ display:block; width:100%; aspect-ratio:3/4; object-fit:cover; border-radius:999px 999px 3px 3px; background:var(--ivoire) }
.ad-arch-empty{ display:grid !important; place-items:center; text-align:center; padding:var(--s4); font:italic 400 var(--step--1)/1.4 var(--display); color:var(--cacao) }
.ad-arch-caption{ margin:var(--s4) 0 0; text-align:center; font:400 1.05rem/1.3 var(--display) }
.ad-arch-caption small{ display:block; font:400 var(--step--1)/1.4 var(--utility); color:var(--cacao) }
@media (min-width:768px){
  .ad-service{ grid-template-columns:minmax(0,1.5fr) minmax(0,.8fr); padding:var(--s7) var(--s7) }
  .ad-service-visual{ width:min(100%, 250px); justify-self:end }
}

/* conditions checklist */
.ad-checks{ list-style:none; margin:0; padding:0; display:grid; gap:0; border-top:1px solid var(--ad-line) }
.ad-checks li{ display:grid; grid-template-columns:2rem minmax(0,1fr); gap:.15rem .6rem; align-items:center; padding:.7rem 0; border-bottom:1px solid var(--ad-line) }
.ad-check-mark{
  display:grid; place-items:center; width:1.6rem; height:1.6rem; border-radius:50%;
  font:600 .9rem/1 var(--utility);
}
.ad-check-ok .ad-check-mark{ background:var(--ok-wash); color:var(--ok-ink) }
.ad-check-no .ad-check-mark{ background:var(--err-wash); color:var(--err-ink) }
.ad-check-soon .ad-check-mark{ background:transparent; color:var(--cacao); border:1px solid var(--ad-line) }
.ad-check-label{ font:500 .98rem/1.35 var(--utility) }
.ad-check-detail{ grid-column:2; font:400 var(--step--1)/1.4 var(--utility); color:var(--cacao) }
@media (min-width:600px){
  .ad-checks li{ grid-template-columns:2rem minmax(0,1fr) auto }
  .ad-check-detail{ grid-column:auto; text-align:right }
}
.ad-check-fix{ font:500 var(--step--1)/1.4 var(--utility) }

/* two-column dashboard grid */
.ad-grid{ display:grid; gap:var(--s5); align-items:start }
@media (min-width:1100px){ .ad-grid{ grid-template-columns:minmax(0,1.35fr) minmax(0,1fr) } }
.ad-grid > .admin-panel{ margin-bottom:0 }

/* dish rows */
.ad-dishes{ list-style:none; margin:0; padding:0; border-top:1px solid var(--ad-line) }
.ad-dish{ display:grid; grid-template-columns:56px minmax(0,1fr); gap:.4rem var(--s4); align-items:start; padding:.9rem 0; border-bottom:1px solid var(--ad-line) }
.ad-dish img{ width:56px; height:56px; object-fit:cover; border-radius:4px; background:var(--lin) }
.ad-dish-name{ margin:0; font:400 1.12rem/1.25 var(--display) }
.ad-dish-meta{ margin:.15rem 0 0; font:400 var(--step--1)/1.4 var(--utility); color:var(--cacao) }
.ad-dish-side{ grid-column:2; display:flex; flex-wrap:wrap; align-items:center; gap:.3rem .6rem }
.ad-opt{ white-space:nowrap }
@media (min-width:1280px){
  .ad-dish{ grid-template-columns:56px minmax(0,1fr) auto; align-items:center }
  .ad-dish-side{ grid-column:auto; display:grid; justify-items:end; text-align:right }
}
.ad-dish .price{ font-size:.98rem }
.ad-illus{ font:italic 400 .8125rem/1.3 var(--body); color:var(--cacao) }

/* week strip */
.ad-week{ display:grid; grid-template-columns:repeat(7, minmax(0,1fr)); gap:.35rem }
.ad-day{
  display:grid; justify-items:center; gap:.25rem; min-height:76px; padding:.55rem .2rem;
  border:1px solid var(--ad-line); border-radius:var(--ad-radius); background:var(--ivoire);
  color:var(--bordeaux); text-decoration:none; font:500 .8125rem/1.15 var(--utility); text-align:center; cursor:pointer;
  transition:border-color .15s var(--ease), background-color .15s var(--ease);
}
.ad-day:hover{ border-color:var(--bordeaux) }
.ad-day-name{ color:var(--cacao) }
.ad-day-num{ font:400 1.35rem/1 var(--display); color:var(--bordeaux) }
.ad-day-dot{ width:.55rem; height:.55rem; border-radius:50%; border:1px solid var(--cacao) }
.ad-day[data-status="published"] .ad-day-dot{ background:var(--ok-ink); border-color:var(--ok-ink) }
.ad-day[data-status="draft"] .ad-day-dot{ background:var(--warn-ink); border-color:var(--warn-ink) }
.ad-day[data-today="true"]{ border-color:var(--bordeaux); border-width:2px }
.ad-day[aria-pressed="true"], .ad-day[aria-current="date"]{ background:var(--bordeaux); border-color:var(--bordeaux) }
.ad-day[aria-pressed="true"] *, .ad-day[aria-current="date"] *{ color:var(--ivoire) }
.ad-day[aria-pressed="true"] .ad-day-dot{ border-color:var(--ivoire) }
.ad-legend{ display:flex; flex-wrap:wrap; gap:.4rem var(--s4); margin:var(--s3) 0 0; padding:0; list-style:none; font:400 var(--step--1)/1.4 var(--utility); color:var(--cacao) }
.ad-legend li{ display:flex; align-items:center; gap:.4rem }
.ad-legend .ad-day-dot{ display:inline-block }
.ad-legend .is-pub{ background:var(--ok-ink); border-color:var(--ok-ink) }
.ad-legend .is-draft{ background:var(--warn-ink); border-color:var(--warn-ink) }

/* upcoming modules */
.ad-modules{ display:grid; gap:var(--s4); grid-template-columns:repeat(auto-fit, minmax(15rem, 1fr)) }
.ad-module{ display:grid; gap:var(--s3); align-content:start; padding:var(--s5); border:1px dashed var(--cacao); border-radius:var(--ad-radius); color:var(--bordeaux); text-decoration:none }
.ad-module:hover{ background:var(--lin) }
.ad-module h3{ margin:0; font:400 1.2rem/1.25 var(--display) }
.ad-module p{ margin:0; font-size:var(--step--1); color:var(--cacao) }

/* error / loading inside panels */
.ad-loading{ display:flex; align-items:center; gap:.6rem; color:var(--cacao); font:500 .95rem/1.4 var(--utility) }
.ad-load-error{ color:var(--err-ink); font:500 .95rem/1.5 var(--utility) }

/* ================= EMPTY / UPCOMING STATES ================= */
.ad-empty{
  display:grid; justify-items:start; gap:var(--s3); padding:var(--s6) var(--s5);
  border:1px dashed var(--cacao); border-radius:var(--ad-radius); background:var(--ivoire);
}
.ad-empty h3, .ad-empty h2{ margin:0; font:400 var(--step-2)/1.2 var(--display) }
.ad-empty p{ margin:0; color:var(--cacao); max-width:60ch }
.ad-steps{ list-style:disc; margin:var(--s2) 0 0; padding-left:1.2rem; color:var(--bordeaux); font:400 var(--step--1)/1.6 var(--body) }

/* future tables: header row only + empty message (no sample data) */
.ad-table-wrap{ overflow-x:auto; border:1px solid var(--ad-line); border-radius:var(--ad-radius); background:var(--ivoire) }
.ad-table{ width:100%; border-collapse:collapse; min-width:40rem; font:400 .95rem/1.4 var(--utility) }
.ad-table th{ text-align:left; padding:.8rem 1rem; font:500 .875rem/1.3 var(--utility); color:var(--cacao); background:var(--lin); border-bottom:1px solid var(--ad-line); white-space:nowrap }
.ad-table td{ padding:1.4rem 1rem; color:var(--cacao) }
.ad-table td.ad-table-empty{ text-align:center; font-style:italic; font-family:var(--body) }
@media (max-width:599px){
  .ad-table{ min-width:580px; font-size:.875rem }
  .ad-table th{ white-space:nowrap; padding:.7rem .6rem; font-size:.8125rem }
  .ad-table td{ padding:.9rem .6rem }
}
.ad-filters{ display:flex; flex-wrap:wrap; gap:.4rem; margin-bottom:var(--s4) }
.ad-filter{ min-height:40px; padding:0 .9rem; border:1px solid var(--ad-line); border-radius:999px; background:var(--ivoire); color:var(--cacao); font:500 .9rem/1 var(--utility) }
.ad-filter[aria-current="true"]{ background:var(--bordeaux); color:var(--ivoire); border-color:var(--bordeaux) }
.ad-filter:disabled{ cursor:not-allowed }

/* catering board */
.ad-board{ display:grid; gap:var(--s4); grid-template-columns:repeat(auto-fit, minmax(13rem, 1fr)) }
.ad-col{ border:1px solid var(--ad-line); border-radius:var(--ad-radius); background:var(--ivoire); min-height:12rem; display:grid; grid-template-rows:auto 1fr }
.ad-col-head{ display:flex; align-items:center; justify-content:space-between; gap:.5rem; padding:.8rem 1rem; border-bottom:1px solid var(--ad-line); background:var(--lin) }
.ad-col-head h3{ margin:0; font:500 .98rem/1.3 var(--utility) }
.ad-col-body{ display:grid; place-items:center; padding:var(--s5) var(--s4); text-align:center; font:italic 400 var(--step--1)/1.5 var(--body); color:var(--cacao) }

/* ================= FORMS: SWITCH ================= */
.ad-switch{ position:relative; display:flex; align-items:flex-start; gap:.85rem; cursor:pointer; min-height:44px }
.ad-switch > input{
  position:absolute; left:0; top:0; width:3.1rem; height:1.75rem; margin:0; opacity:0; cursor:pointer; z-index:1;
}
.ad-switch-track{
  position:relative; flex:none; width:3.1rem; height:1.75rem; border-radius:999px;
  background:var(--ivoire-voile); border:1px solid var(--cacao); transition:background-color .18s var(--ease), border-color .18s var(--ease);
}
.ad-switch-track::after{
  content:""; position:absolute; top:2px; left:2px; width:calc(1.75rem - 6px); height:calc(1.75rem - 6px); border-radius:50%;
  background:var(--ivoire); box-shadow:0 1px 2px oklch(0.281 0.044 22.4 / .35); transition:transform .18s var(--ease);
}
.ad-switch > input:checked + .ad-switch-track{ background:var(--ok-ink); border-color:var(--ok-ink) }
.ad-switch > input:checked + .ad-switch-track::after{ transform:translateX(1.35rem) }
.ad-switch.is-danger > input:checked + .ad-switch-track{ background:var(--err-ink); border-color:var(--err-ink) }
.ad-switch > input:focus-visible + .ad-switch-track{ outline:3px solid var(--vin); outline-offset:2px }
.ad-switch-text{ display:grid; gap:.2rem; padding-top:.15rem }
.ad-switch-title{ font:500 1rem/1.35 var(--utility); color:var(--bordeaux) }
.ad-switch-hint{ font:400 var(--step--1)/1.45 var(--body); color:var(--cacao) }

/* ================= MENU EDITOR (Gate E, redesigned) ================= */
.menu-layout{ display:grid; gap:var(--s5); align-items:start }
@media (min-width:1100px){ .menu-layout{ grid-template-columns:minmax(0,1fr) 20rem } }
.menu-layout > * > .admin-panel:last-child{ margin-bottom:0 }

/* date navigator */
.menu-datebar{ display:grid; gap:var(--s4); margin-bottom:var(--s5) }
.menu-datenav{ display:flex; flex-wrap:wrap; align-items:flex-end; gap:var(--s3) }
.menu-datenav .admin-field{ flex:1 1 12rem }
.menu-date-input{ font-size:1.05rem }
.ad-step{ min-height:48px; padding:0 1rem }
.menu-status-line{ display:flex; flex-wrap:wrap; align-items:center; gap:.6rem; font:500 .95rem/1.3 var(--utility); color:var(--cacao) }
#menu-status-badge{ font-size:.9rem }

.menu-config-grid{ display:grid; gap:var(--s5) }
@media (min-width:768px){ .menu-config-grid{ grid-template-columns:minmax(0,1fr) minmax(0,1fr) } .menu-config-grid .menu-config-wide{ grid-column:1 / -1 } }
.menu-config-item{ min-width:0 }
.menu-mini-label{ display:block; margin:0 0 .45rem; font:500 .95rem/1.3 var(--utility); color:var(--bordeaux) }

/* dish cards generated by admin-menus.js */
.menu-items-list{ display:grid; gap:var(--s4) }
.menu-item-card{ border:1px solid var(--ad-line); border-radius:var(--ad-radius); background:var(--ad-field); padding:var(--s4) }
.menu-item-top{ display:grid; grid-template-columns:64px minmax(0,1fr); gap:var(--s4); align-items:end }
.menu-item-thumb{ width:64px; height:64px; object-fit:cover; border-radius:4px; background:var(--lin) }
.menu-item-top .menu-remove-btn{ grid-column:1 / -1; justify-self:start }
@media (min-width:600px){ .menu-item-top{ grid-template-columns:64px minmax(0,1fr) auto } .menu-item-top .menu-remove-btn{ grid-column:auto } }
.menu-item-header{ display:grid; gap:var(--s4); margin-top:var(--s4); padding-top:var(--s4); border-top:1px solid var(--ad-line); align-items:end }
@media (min-width:600px){ .menu-item-header{ grid-template-columns:repeat(2, minmax(0,1fr)) } }
@media (min-width:900px){ .menu-item-header{ grid-template-columns:minmax(0,1.3fr) minmax(0,.6fr) minmax(0,.9fr) auto } }
.menu-field{ display:grid; gap:.35rem; min-width:0 }
.menu-field > label{ font:500 .9rem/1.3 var(--utility); color:var(--bordeaux) }
.menu-field .menu-hint{ font-size:.8125rem }
.menu-remove-btn{ min-height:44px; padding:0 1rem; font-size:.95rem }
.menu-remove-btn:hover{ background:var(--err-wash); color:var(--err-ink); border-color:var(--err-ink) }

.menu-variants{ margin:var(--s4) 0 0; padding:var(--s4) 0 0; border:0; border-top:1px solid var(--ad-line); display:flex; flex-wrap:wrap; gap:.5rem }
.menu-variants > .menu-mini-label, .menu-variants > legend{ width:100%; padding:0; margin-bottom:.2rem }
.menu-check-label{ display:inline-flex; align-items:center; gap:.55rem; cursor:pointer; font:500 .95rem/1.3 var(--utility) }
.menu-variant-label{
  position:relative; min-height:44px; padding:0 .9rem 0 .7rem; border:1px solid var(--cacao); border-radius:var(--ad-radius); background:var(--ivoire);
  transition:background-color .15s var(--ease), border-color .15s var(--ease);
}
.menu-variant-label:has(input:checked){ background:var(--bordeaux); border-color:var(--bordeaux); color:var(--ivoire) }
.menu-variant-label:has(input:checked) .price{ color:var(--ivoire-voile) }
.menu-variant-label .price{ font-size:.9rem }
.menu-sold.menu-check-label{ display:flex; align-items:flex-start; min-height:48px; padding-top:.35rem }
.menu-check{ width:1.15rem; height:1.15rem; margin:0; accent-color:var(--bordeaux); flex:none }
.menu-variant-label .menu-check{ accent-color:var(--ivoire) }

/* save bar: sticky at the bottom on phones */
.menu-savebar{
  position:sticky; bottom:0; z-index:20; display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:var(--s3);
  margin-top:var(--s5); padding:var(--s4) var(--s5); background:var(--ivoire);
  border:1px solid var(--ad-line); border-radius:var(--ad-radius) var(--ad-radius) 0 0; box-shadow:0 -6px 18px oklch(0.281 0.044 22.4 / .08);
}
.menu-savebar .btn{ min-height:48px }
.save-status{ display:inline-flex; align-items:center; gap:.5rem; font:500 .95rem/1.4 var(--utility); min-height:28px }
.save-status::before{ content:""; width:.55rem; height:.55rem; border-radius:50%; background:currentColor; flex:none }
.save-status-clean{ color:var(--ok-ink) }
.save-status-dirty, .save-status-warn{ color:var(--warn-ink) }
.save-status-working{ color:var(--cacao) }
.save-status-working::before{ background:transparent; border:2px solid currentColor; border-top-color:transparent; animation:ad-spin .8s linear infinite }
.save-status-error{ color:var(--err-ink) }

/* global rules panel */
.ad-rules{ list-style:none; margin:var(--s4) 0 0; padding:0; display:grid; gap:.45rem; font:400 var(--step--1)/1.45 var(--body); color:var(--bordeaux) }
.ad-rules li{ display:grid; grid-template-columns:1.2rem 1fr; gap:.4rem }
.ad-rules li::before{ content:"·"; font-weight:700; color:var(--vin-ink); text-align:center }

/* ================= SETTINGS ================= */
.ad-settings-row{ display:grid; gap:var(--s4); align-items:end }
@media (min-width:700px){ .ad-settings-row{ grid-template-columns:minmax(0,16rem) auto auto; justify-content:start } }
.ad-kv{ margin:0; display:grid; gap:0; border-top:1px solid var(--ad-line) }
.ad-kv > div{ display:grid; grid-template-columns:minmax(0,1fr) auto; gap:var(--s4); padding:.75rem 0; border-bottom:1px solid var(--ad-line); align-items:baseline }
.ad-kv dt{ font:500 .95rem/1.4 var(--utility) }
.ad-kv dd{ margin:0; font:400 .95rem/1.4 var(--utility); color:var(--cacao); text-align:right }

/* target size (WCAG 2.2 AA, 24 px minimum) for small text links */
.ad-check-fix, .menu-hint a, .admin-return-link{ display:inline-block; padding-block:.3rem; min-height:24px }

/* ================= ADMIN TABS & RESPONSIVE PANELS ================= */
.admin-tabs{
  display:flex;
  gap:0.5rem;
  margin-bottom:var(--s4);
  border-bottom:1px solid var(--lin, #e2d9cf);
}
.admin-tabs button{
  flex:1 1 0;
  text-align:center;
  white-space:nowrap;
  justify-content:center;
  font-size:0.92rem;
  padding:0.7rem 1rem;
}
@media (max-width:540px){
  .admin-tabs{
    flex-direction:column;
    border-bottom:none;
    gap:0.4rem;
  }
  .admin-tabs button{
    width:100%;
    border-radius:var(--radius) !important;
    margin-bottom:0 !important;
  }
}

/* ================= CARTE & DISHES MANAGER WOW STYLES ================= */
.ad-chip{
  display:inline-block;
  padding:0.2rem 0.55rem;
  border-radius:999px;
  background:var(--lin, #faf7f2);
  border:1px solid var(--ad-line, rgba(44,24,16,0.15));
  font-size:0.78rem;
  font-weight:500;
  color:var(--cacao);
  margin:1px 2px;
}
.carte-formula-badge{
  display:inline-flex;
  align-items:center;
  gap:0.4rem;
  padding:0.22rem 0.5rem;
  background:#fff;
  border:1px solid var(--ad-line, rgba(44,24,16,0.15));
  border-radius:6px;
  font-size:0.82rem;
  box-shadow:0 1px 3px rgba(44,24,16,0.04);
}
.carte-price-input{
  width:5.4rem;
  padding:0.18rem 0.35rem;
  font-size:0.82rem;
  font-weight:600;
  text-align:right;
  color:var(--bordeaux);
  background:var(--ad-field, #faf7f2);
  border:1px solid var(--ad-line, #ccc);
  border-radius:4px;
  transition:all 0.2s var(--ease);
}
.carte-price-input:focus{
  background:#fff;
  border-color:var(--vin);
  outline:none;
  box-shadow:0 0 0 2px rgba(139,30,30,0.15);
}
.btn-danger-subtle{
  background:transparent;
  color:var(--err-ink, #962228);
  border:1px solid rgba(150,34,40,0.25);
  border-radius:var(--radius);
  padding:0.25rem 0.55rem;
  font-size:0.78rem;
  font-weight:600;
  cursor:pointer;
  transition:all 0.18s var(--ease);
}
.btn-danger-subtle:hover{
  background:var(--err-wash, #fbdcd9);
  border-color:var(--err-ink, #962228);
  transform:scale(1.02);
}
.carte-dish-row{
  transition:background-color 0.15s var(--ease);
}
.carte-dish-row:hover{
  background:rgba(255, 255, 255, 0.7);
}

/* ================= MOTION ================= */
@media (prefers-reduced-motion: reduce){
  .admin-body *, .admin-body *::before, .admin-body *::after{ transition:none !important; animation-duration:1.5s !important }
  .ad-switch-track::after{ transition:none !important }
}
