/* =========================================================================
   LoopMenu v2 — Brand System (LOCKED v3 — matches landing page)
   Bright, social, sticker-energy. Cream + butter + tomato + basil + ink.
   Bricolage Grotesque for display, Inter for body.
   Class names preserved from v2 — values swapped.
   ========================================================================= */

@import url("https://fonts.googleapis.com/css2?family=Bricolage+Grotesque:opsz,wght@12..96,500;12..96,600;12..96,700;12..96,800&family=Inter:wght@400;500;600;700&display=swap");

:root {
  /* ===== Brand palette (locked) ===== */
  --lm-cream: #FBF7EE;             /* page bg */
  --lm-butter: #FFE85C;            /* yellow accent */
  --lm-butter-soft: #FFF4A8;       /* yellow tint surfaces */
  --lm-butter-ink: #2B2300;        /* readable text on yellow */
  --lm-ink: #18170F;               /* primary ink — borders, text */
  --lm-ink-soft: #3B392C;          /* secondary text */
  --lm-tomato: #FF4B2B;            /* CTA red */
  --lm-tomato-deep: #E63525;       /* hover */
  --lm-basil: #1F5E37;             /* success green */
  --lm-basil-light: #B8D9C4;       /* basil tint */
  --lm-cocoa: #5A3A1E;             /* warm brown accent */

  /* ===== Aliases (keep existing var names working) ===== */
  --lm-yellow: var(--lm-butter);
  --lm-yellow-hover: #F5D43A;
  --lm-yellow-soft: var(--lm-butter-soft);
  --lm-yellow-ink: var(--lm-butter-ink);

  --lm-dark: var(--lm-ink);
  --lm-dark-2: #25241A;
  --lm-dark-3: #3B392C;

  --lm-white: #FFFFFF;
  --lm-bg: var(--lm-cream);
  --lm-surface: #FFFDF8;
  --lm-surface-2: #F4EFE2;
  --lm-surface-3: #E9E2D0;
  --lm-line: rgba(24,23,15,0.14);
  --lm-line-strong: var(--lm-ink);

  --lm-text: var(--lm-ink);
  --lm-text-2: var(--lm-ink-soft);
  --lm-text-muted: #7A7868;
  --lm-text-dim: #ACAA98;
  --lm-text-on-dark: var(--lm-cream);
  --lm-text-on-dark-muted: rgba(251,247,238,0.65);

  --lm-success: var(--lm-basil);
  --lm-success-soft: var(--lm-basil-light);
  --lm-warning: #C26A1E;
  --lm-warning-soft: #FFE0B8;
  --lm-danger: var(--lm-tomato);
  --lm-danger-soft: #FFD7CB;
  --lm-info: #1E6FD9;
  --lm-info-soft: #DCE9FB;

  /* ===== Spacing ===== */
  --sp-1: 4px;  --sp-2: 8px;  --sp-3: 12px;  --sp-4: 16px;
  --sp-5: 24px; --sp-6: 32px; --sp-7: 48px;  --sp-8: 64px;

  /* ===== Radius ===== */
  --r-sm: 8px;
  --r-md: 14px;
  --r-lg: 20px;
  --r-xl: 28px;
  --r-pill: 999px;

  /* ===== Shadow (sticker / pop) ===== */
  --shadow-sm: 2px 2px 0 var(--lm-ink);
  --shadow-md: 4px 4px 0 var(--lm-ink);
  --shadow-pop: 6px 6px 0 var(--lm-ink);
  --shadow-soft: 0 2px 12px rgba(24,23,15,0.06);

  /* ===== Type ===== */
  --font-sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
  --font-display: "Bricolage Grotesque", -apple-system, BlinkMacSystemFont, sans-serif;
}

/* =========================================================================
   Reset
   ========================================================================= */
*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; }
body {
  font-family: var(--font-sans);
  background: var(--lm-cream);
  color: var(--lm-ink);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  min-height: 100vh;
  line-height: 1.55;
}
::selection { background: var(--lm-butter); color: var(--lm-ink); }
img, video { max-width: 100%; display: block; }
button { font: inherit; cursor: pointer; border: 0; background: none; color: inherit; }
input, textarea, select { font: inherit; color: inherit; }
a { color: var(--lm-ink); text-decoration: none; font-weight: 600; }
a:hover { text-decoration: underline; text-underline-offset: 3px; }

/* =========================================================================
   Typography — Bricolage display, Inter body
   ========================================================================= */
h1, h2, h3, h4 {
  font-family: var(--font-display);
  font-weight: 700;
  line-height: 1.05;
  letter-spacing: -0.025em;
  margin: 0;
  color: var(--lm-ink);
}
h1 { font-size: clamp(2rem, 4vw, 2.75rem); }
h2 { font-size: clamp(1.5rem, 2.6vw, 2rem); }
h3 { font-size: 1.25rem; letter-spacing: -0.02em; }
h4 { font-size: 1rem; letter-spacing: -0.015em; }
p  { line-height: 1.55; margin: 0; color: var(--lm-ink-soft); }
.muted { color: var(--lm-text-muted); }
.dim   { color: var(--lm-text-dim); }

/* =========================================================================
   Layout helpers
   ========================================================================= */
.lm-container { max-width: 1280px; margin: 0 auto; padding: 0 var(--sp-5); }
.lm-stack > * + * { margin-top: var(--sp-4); }
.lm-row { display: flex; gap: var(--sp-3); align-items: center; }
.lm-col { display: flex; flex-direction: column; gap: var(--sp-3); }
.lm-grid { display: grid; gap: var(--sp-4); }
button:disabled, .btn:disabled { opacity: 0.5; cursor: not-allowed; }

/* =========================================================================
   Buttons — pill, 2px ink border, sticker drop shadow
   ========================================================================= */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--sp-2);
  padding: 12px 20px;
  border-radius: var(--r-pill);
  font-family: var(--font-display);
  font-weight: 600;
  font-size: 0.9375rem;
  letter-spacing: -0.01em;
  white-space: nowrap;
  user-select: none;
  border: 2px solid var(--lm-ink);
  background: var(--lm-surface);
  color: var(--lm-ink);
  transition: transform 0.15s ease, box-shadow 0.15s ease,
              background 0.15s ease, opacity 0.15s ease;
  box-shadow: var(--shadow-sm);
}
.btn:hover { transform: translate(-1px,-1px); box-shadow: 3px 3px 0 var(--lm-ink); }
.btn:active { transform: translate(1px,1px); box-shadow: 1px 1px 0 var(--lm-ink); }
.btn:disabled { opacity: 0.5; cursor: not-allowed; box-shadow: var(--shadow-sm); transform: none; }

.btn-primary {
  background: var(--lm-ink);
  color: var(--lm-cream);
}
.btn-primary:hover { background: #25241A; }

.btn-secondary,
.btn-yellow {
  background: var(--lm-butter);
  color: var(--lm-ink);
}
.btn-secondary:hover, .btn-yellow:hover { background: #FFD42E; }

.btn-tomato,
.btn-danger {
  background: var(--lm-tomato);
  color: var(--lm-cream);
}
.btn-tomato:hover, .btn-danger:hover { background: var(--lm-tomato-deep); }

.btn-success {
  background: var(--lm-basil);
  color: var(--lm-cream);
}
.btn-success:hover { background: #154A28; }

.btn-ghost {
  background: transparent;
  color: var(--lm-ink);
  box-shadow: none;
}
.btn-ghost:hover { background: var(--lm-ink); color: var(--lm-cream); transform: none; box-shadow: none; }

.btn-sm { padding: 8px 14px; font-size: 0.875rem; }
.btn-lg { padding: 16px 26px; font-size: 1.0625rem; }
.btn-block { width: 100%; }

/* =========================================================================
   Cards — sticker-style with ink borders
   ========================================================================= */
.card {
  background: var(--lm-surface);
  border: 2px solid var(--lm-ink);
  border-radius: var(--r-lg);
  padding: var(--sp-5);
  box-shadow: var(--shadow-sm);
}
.card-pad-sm { padding: var(--sp-4); }
.card-pad-lg { padding: var(--sp-6); }
.card-hero {
  background: var(--lm-butter);
  border: 2px solid var(--lm-ink);
  box-shadow: var(--shadow-md);
}

/* =========================================================================
   Inputs — clean ink-bordered fields
   ========================================================================= */
.input, .select, .textarea,
input[type="text"], input[type="email"], input[type="password"],
input[type="number"], input[type="tel"], input[type="search"],
input[type="url"], input[type="date"], input[type="time"],
textarea, select {
  width: 100%;
  padding: 11px 14px;
  background: var(--lm-surface);
  border: 2px solid var(--lm-ink);
  border-radius: var(--r-md);
  color: var(--lm-ink);
  outline: none;
  font-size: 0.9375rem;
  font-family: var(--font-sans);
  transition: box-shadow 0.15s ease, border-color 0.15s ease;
}
.input:focus, .select:focus, .textarea:focus,
input:focus, textarea:focus, select:focus {
  border-color: var(--lm-ink);
  box-shadow: 3px 3px 0 var(--lm-butter);
}
.input::placeholder, input::placeholder, textarea::placeholder {
  color: var(--lm-text-dim);
}
.field-label {
  display: block;
  font-family: var(--font-display);
  font-size: 0.75rem;
  font-weight: 600;
  color: var(--lm-ink-soft);
  margin-bottom: var(--sp-1);
  text-transform: uppercase;
  letter-spacing: 0.06em;
}

/* =========================================================================
   Pills / Badges — chip-style with ink border
   ========================================================================= */
.pill {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 4px 12px;
  border-radius: var(--r-pill);
  font-family: var(--font-display);
  font-size: 0.75rem;
  font-weight: 600;
  letter-spacing: 0.02em;
  background: var(--lm-surface);
  border: 1.5px solid var(--lm-ink);
  color: var(--lm-ink);
}
.pill-yellow  { background: var(--lm-butter); color: var(--lm-ink); }
.pill-success { background: var(--lm-basil-light); color: var(--lm-basil); }
.pill-warning { background: var(--lm-warning-soft); color: #5C2F00; }
.pill-danger  { background: var(--lm-tomato); color: var(--lm-cream); }
.pill-info    { background: #B8E5FF; color: #0A4A8A; }

/* Pickup / Delivery action chips on the diner home tenant cards */
.chip-cta {
  appearance: none;
  border: 2px solid var(--lm-ink);
  background: var(--lm-cream);
  color: var(--lm-ink);
  font-family: var(--font-display);
  font-weight: 700;
  font-size: 14px;
  letter-spacing: -0.01em;
  padding: 8px 16px;
  border-radius: 999px;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  transition: transform 0.12s ease, box-shadow 0.12s ease, background 0.12s ease;
  box-shadow: 2px 2px 0 var(--lm-ink);
}
.chip-cta:hover { transform: translate(-1px,-1px); box-shadow: 3px 3px 0 var(--lm-ink); }
.chip-cta:active { transform: translate(1px,1px); box-shadow: 1px 1px 0 var(--lm-ink); }
.chip-cta .chip-dot { width: 8px; height: 8px; border-radius: 50%; display: inline-block; flex-shrink: 0; }
.chip-pickup { background: var(--lm-basil-light); }
.chip-pickup .chip-dot { background: var(--lm-basil); }
.chip-pickup:hover { background: #C8E6B4; }
.chip-delivery { background: var(--lm-warning-soft); }
.chip-delivery .chip-dot { background: var(--lm-warning); }
.chip-delivery:hover { background: #FFD9A3; }

/* =========================================================================
   Home featured carousel (swipeable)
   ========================================================================= */
.lm-carousel {
  display: flex;
  gap: var(--sp-3);
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: none;
  padding: var(--sp-2) var(--sp-4) var(--sp-4);
  margin: 0 calc(var(--sp-4) * -1);
  scroll-padding-left: var(--sp-4);
}
.lm-carousel::-webkit-scrollbar { display: none; }

.lm-carousel-skeleton {
  flex: 0 0 78%;
  height: 220px;
  border-radius: var(--r-lg);
  background: linear-gradient(135deg, var(--lm-cream) 0%, #F0EBDD 50%, var(--lm-cream) 100%);
  background-size: 200% 100%;
  animation: lm-shimmer 1.4s linear infinite;
  scroll-snap-align: start;
}
@keyframes lm-shimmer {
  0% { background-position: 100% 0; }
  100% { background-position: -100% 0; }
}

.lm-slide {
  appearance: none;
  flex: 0 0 78%;
  scroll-snap-align: start;
  text-align: left;
  background: var(--lm-cream);
  border: 2px solid var(--lm-ink);
  border-radius: var(--r-lg);
  box-shadow: 4px 4px 0 var(--lm-ink);
  overflow: hidden;
  position: relative;
  cursor: pointer;
  padding: 0;
  color: var(--lm-ink);
  display: flex;
  flex-direction: column;
  transition: transform 0.12s ease, box-shadow 0.12s ease;
}
.lm-slide:hover { transform: translate(-1px,-1px); box-shadow: 5px 5px 0 var(--lm-ink); }
.lm-slide:active { transform: translate(2px,2px); box-shadow: 2px 2px 0 var(--lm-ink); }

.lm-slide-photo {
  width: 100%;
  aspect-ratio: 16 / 10;
  background-size: cover;
  background-position: center;
  background-color: var(--lm-cream);
  border-bottom: 2px solid var(--lm-ink);
}
.lm-slide-photo--fallback {
  display: flex;
  align-items: center;
  justify-content: center;
  background-image:
    repeating-linear-gradient(135deg, rgba(24,23,15,0.06) 0 14px, transparent 14px 28px);
}
.lm-slide-mark {
  font-family: var(--font-display);
  font-weight: 800;
  font-size: clamp(48px, 12vw, 72px);
  letter-spacing: -0.04em;
  color: var(--lm-ink);
  line-height: 1;
  text-shadow: 2px 2px 0 rgba(255,255,255,0.6);
}

.lm-slide-badge {
  position: absolute;
  top: var(--sp-3);
  left: var(--sp-3);
  background: var(--lm-ink);
  color: var(--lm-butter);
  font-family: var(--font-display);
  font-weight: 700;
  font-size: 10px;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  padding: 5px 10px;
  border-radius: 999px;
  box-shadow: 2px 2px 0 var(--lm-ink);
}

.lm-slide-body {
  padding: var(--sp-3) var(--sp-4) var(--sp-4);
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.lm-slide-title {
  font-family: var(--font-display);
  font-weight: 700;
  font-size: 17px;
  line-height: 1.2;
  letter-spacing: -0.01em;
  color: var(--lm-ink);
}
.lm-slide-sub {
  font-size: 13px;
  color: var(--lm-ink-soft);
  line-height: 1.35;
}

.lm-carousel-dots {
  display: flex;
  justify-content: center;
  gap: 6px;
  padding: 0 var(--sp-4);
  margin-top: calc(var(--sp-2) * -1);
}
.lm-dot {
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: rgba(24,23,15,0.18);
  transition: width 0.2s ease, background 0.2s ease;
}
.lm-dot.is-active { width: 18px; border-radius: 4px; background: var(--lm-ink); }

/* Slightly tighter slide width on larger screens so 2 + peek of a 3rd are visible. */
@media (min-width: 560px) {
  .lm-slide, .lm-carousel-skeleton { flex-basis: 46%; }
}
@media (min-width: 820px) {
  .lm-slide, .lm-carousel-skeleton { flex-basis: 32%; }
}

/* =========================================================================
   Nav — now CREAM (was dark)
   ========================================================================= */
.lm-nav {
  position: sticky; top: 0; z-index: 50;
  background: var(--lm-cream);
  border-bottom: 2px solid var(--lm-ink);
  padding: var(--sp-3) 0;
  color: var(--lm-ink);
}
.lm-nav { color: var(--lm-ink); }
.lm-nav a:not(.btn) { color: var(--lm-ink); }
.lm-nav .muted { color: var(--lm-text-muted); }
/* Buttons in nav keep their own contrast colors (btn-primary = cream on ink, etc.) */
.lm-nav .btn-primary { color: var(--lm-cream); }
.lm-nav .btn-tomato, .lm-nav .btn-danger, .lm-nav .btn-success { color: var(--lm-cream); }
.lm-logo {
  font-family: var(--font-display);
  font-weight: 800;
  font-size: 1.375rem;
  letter-spacing: -0.035em;
  color: var(--lm-ink);
  display: inline-flex;
  align-items: center;
}
.lm-logo .lm-logo-yellow {
  background: var(--lm-butter);
  padding: 2px 8px;
  border-radius: 8px;
  border: 1.5px solid var(--lm-ink);
  margin-right: 2px;
  color: var(--lm-ink);
}

/* Stacked logo + subtitle (used by app.html diner + dashboard.html owner)
   Subtitle makes it instantly obvious which app you're in and reinforces
   that 'Menu' and 'Loop' are two separate products that don't cross-link. */
.lm-logo.lm-logo--stacked {
  display: inline-flex;
  flex-direction: column;
  align-items: flex-start;
  line-height: 1;
  text-decoration: none;
  gap: 4px;
}
.lm-logo.lm-logo--stacked .lm-logo-row {
  display: inline-flex;
  align-items: center;
}
.lm-logo .lm-logo-subtitle {
  font-family: var(--font-body, var(--font-display));
  font-weight: 500;
  font-size: 11px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--lm-text-muted, #3B392C);
  padding-left: 2px;
}
/* Diner nav uses ink theme + cream-ish subtitle for contrast on cream bg */
.lm-nav--diner .lm-logo-subtitle { color: var(--lm-text-muted, #3B392C); }
.lm-nav--owner .lm-logo-subtitle { color: var(--lm-text-muted, #3B392C); }
@media (max-width: 480px) {
  .lm-logo .lm-logo-subtitle { font-size: 10px; letter-spacing: 0.06em; }
}
/* Reset old nav-ghost override */
.lm-nav .btn-ghost {
  background: transparent;
  color: var(--lm-ink);
  border: 2px solid var(--lm-ink);
}
.lm-nav .btn-ghost:hover { background: var(--lm-ink); color: var(--lm-cream); }

/* =========================================================================
   Utility
   ========================================================================= */
.hidden { display: none !important; }
.flex { display: flex; }
.flex-1 { flex: 1 1 0; }
.center { display: flex; align-items: center; justify-content: center; }
.between { display: flex; align-items: center; justify-content: space-between; }
.gap-1 { gap: var(--sp-1); }
.gap-2 { gap: var(--sp-2); }
.gap-3 { gap: var(--sp-3); }
.gap-4 { gap: var(--sp-4); }
.mt-1 { margin-top: var(--sp-1); }
.mt-2 { margin-top: var(--sp-2); }
.mt-3 { margin-top: var(--sp-3); }
.mt-4 { margin-top: var(--sp-4); }
.mt-5 { margin-top: var(--sp-5); }
.mt-6 { margin-top: var(--sp-6); }
.mb-2 { margin-bottom: var(--sp-2); }
.mb-3 { margin-bottom: var(--sp-3); }
.mb-4 { margin-bottom: var(--sp-4); }
.text-sm { font-size: 0.875rem; }
.text-xs { font-size: 0.75rem; }
.text-lg { font-size: 1.125rem; }
.text-xl { font-size: 1.375rem; }
.text-center { text-align: center; }
.font-bold { font-weight: 700; }
.font-black { font-weight: 800; font-family: var(--font-display); }
.cursor-pointer { cursor: pointer; }
.wrap { flex-wrap: wrap; }

/* =========================================================================
   Toast
   ========================================================================= */
.lm-toast {
  position: fixed;
  top: calc(env(safe-area-inset-top, 0px) + var(--sp-4));
  left: 50%;
  transform: translateX(-50%);
  background: var(--lm-ink);
  color: var(--lm-cream);
  padding: 12px 22px;
  border-radius: var(--r-pill);
  font-family: var(--font-display);
  font-weight: 600;
  font-size: 0.9375rem;
  border: 2px solid var(--lm-ink);
  box-shadow: var(--shadow-md);
  z-index: 3000;
  animation: lm-toast-in 0.2s ease;
  max-width: calc(100vw - var(--sp-6));
  text-align: center;
}
@keyframes lm-toast-in {
  from { transform: translate(-50%, -12px); opacity: 0; }
  to   { transform: translate(-50%, 0);    opacity: 1; }
}

/* =========================================================================
   Tables
   ========================================================================= */
table { width: 100%; border-collapse: separate; border-spacing: 0; }
thead th {
  text-align: left;
  font-family: var(--font-display);
  font-size: 0.75rem;
  font-weight: 600;
  color: var(--lm-ink-soft);
  text-transform: uppercase;
  letter-spacing: 0.06em;
  padding: 12px 14px;
  border-bottom: 2px solid var(--lm-ink);
  background: var(--lm-butter-soft);
}
tbody td {
  padding: 14px;
  border-bottom: 1px solid var(--lm-line);
  color: var(--lm-ink-soft);
  font-size: 0.9375rem;
}
tbody tr:hover td { background: var(--lm-butter-soft); }

/* =========================================================================
   Code
   ========================================================================= */
code {
  background: var(--lm-surface-2);
  color: var(--lm-ink);
  padding: 2px 8px;
  border-radius: var(--r-sm);
  font-size: 0.875em;
  font-family: ui-monospace, "SF Mono", Menlo, monospace;
  border: 1px solid var(--lm-line);
}
pre {
  background: var(--lm-surface-2);
  color: var(--lm-ink);
  padding: var(--sp-4);
  border-radius: var(--r-md);
  overflow: auto;
  border: 1.5px solid var(--lm-ink);
}
pre code { background: transparent; border: 0; padding: 0; }

/* =========================================================================
   Responsive
   ========================================================================= */
@media (max-width: 640px) {
  h1 { font-size: 1.75rem; }
  h2 { font-size: 1.375rem; }
  .card { padding: var(--sp-4); }
  .lm-container { padding: 0 var(--sp-4); }
}

/* =========================================================================
   M2.2 Menu Manager — restyled in new system
   ========================================================================= */

/* Tabs */
.lm-tabs {
  display: flex;
  gap: 4px;
  border-bottom: 2px solid var(--lm-ink);
  padding-bottom: 0;
}
.lm-tab {
  background: transparent;
  border: 0;
  padding: 10px 18px;
  font-family: var(--font-display);
  font-weight: 600;
  font-size: 0.9375rem;
  color: var(--lm-text-muted);
  cursor: pointer;
  border-bottom: 3px solid transparent;
  margin-bottom: -2px;
  transition: color 120ms, border-color 120ms;
}
.lm-tab:hover { color: var(--lm-ink); }
.lm-tab.is-active {
  color: var(--lm-ink);
  border-bottom-color: var(--lm-butter);
}

/* Category chip filter */
.chip {
  background: var(--lm-surface);
  border: 1.5px solid var(--lm-ink);
  color: var(--lm-ink);
  padding: 6px 14px;
  border-radius: var(--r-pill);
  font-family: var(--font-display);
  font-size: 13px;
  font-weight: 600;
  letter-spacing: 0.02em;
  cursor: pointer;
  transition: all 120ms;
}
.chip:hover { background: var(--lm-butter-soft); }
.chip-active {
  background: var(--lm-butter);
  color: var(--lm-ink);
  border-color: var(--lm-ink);
  box-shadow: 2px 2px 0 var(--lm-ink);
}

.chip-check {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 6px 12px;
  background: var(--lm-surface);
  border: 1.5px solid var(--lm-ink);
  border-radius: var(--r-pill);
  font-family: var(--font-display);
  font-size: 13px;
  font-weight: 600;
  cursor: pointer;
  user-select: none;
}
.chip-check input { margin: 0; }
.chip-check-on {
  background: var(--lm-butter);
  border-color: var(--lm-ink);
}

/* Items grid */
.menu-items-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  gap: 18px;
}
.menu-item-card {
  background: var(--lm-surface);
  border: 2px solid var(--lm-ink);
  border-radius: var(--r-md);
  overflow: hidden;
  transition: transform 0.15s ease, box-shadow 0.15s ease;
  box-shadow: var(--shadow-sm);
}
.menu-item-card:hover {
  transform: translate(-2px,-2px);
  box-shadow: 4px 4px 0 var(--lm-ink);
}
.menu-item-photo {
  aspect-ratio: 4 / 3;
  background: var(--lm-butter-soft);
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  border-bottom: 2px solid var(--lm-ink);
}
.menu-item-photo:has(.ph-photo) {
  background: repeating-linear-gradient(45deg, var(--lm-cream) 0 10px, #F3EFE5 10px 20px);
  aspect-ratio: 16 / 5;
}
.menu-item-photo img { width: 100%; height: 100%; object-fit: cover; }
.ph-photo { color: var(--lm-text-muted); font-size: 12px; font-family: var(--font-display); font-weight: 500; letter-spacing: 0.04em; text-transform: uppercase; opacity: 0.75; }
.menu-item-body { padding: 14px; }

.status-dot {
  width: 10px; height: 10px; border-radius: 50%;
  display: inline-block;
  flex-shrink: 0;
}
.status-on  { background: var(--lm-basil); box-shadow: 0 0 0 3px var(--lm-basil-light); }
.status-off { background: var(--lm-tomato);  box-shadow: 0 0 0 3px var(--lm-danger-soft); }

.danger-text { color: var(--lm-tomato) !important; }

/* Item editor slide-in panel */
.lm-panel { position: fixed; inset: 0; z-index: 1000; }
.lm-panel-backdrop {
  position: absolute; inset: 0;
  background: rgba(24,23,15,0.45);
  animation: lm-fade 160ms ease;
}
.lm-panel-body {
  position: absolute;
  top: 0; right: 0; bottom: 0;
  width: 100%; max-width: 560px;
  background: var(--lm-cream);
  padding: var(--sp-5);
  overflow-y: auto;
  border-left: 2px solid var(--lm-ink);
  animation: lm-slide-in 200ms ease;
}
@keyframes lm-fade { from { opacity: 0; } to { opacity: 1; } }
@keyframes lm-slide-in { from { transform: translateX(100%); } to { transform: translateX(0); } }

.item-photo-preview {
  width: 120px; height: 120px;
  border-radius: var(--r-md);
  background: var(--lm-butter-soft);
  border: 2px solid var(--lm-ink);
  overflow: hidden;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}
.item-photo-preview img { width: 100%; height: 100%; object-fit: cover; }

.req { color: var(--lm-tomato); font-weight: 700; }

/* Category list */
.cat-list { display: flex; flex-direction: column; gap: 8px; }
.cat-row {
  background: var(--lm-surface);
  border: 2px solid var(--lm-ink);
  border-radius: var(--r-md);
  padding: 12px 16px;
  display: flex;
  justify-content: space-between;
  align-items: center;
  box-shadow: var(--shadow-sm);
}
.cat-handle {
  color: var(--lm-text-muted);
  font-size: 18px;
  cursor: grab;
}

/* Modifier groups grid */
.mod-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(360px, 1fr));
  gap: 16px;
}
.mod-group { display: flex; flex-direction: column; }
.mod-options { display: flex; flex-direction: column; gap: 8px; }
/* Admin-side modifier editor row (dashboard menu manager) — has data-mod-row */
.mod-option[data-mod-row] {
  display: grid;
  grid-template-columns: 1fr auto auto auto;
  gap: 8px;
  align-items: center;
  padding: 10px;
  background: var(--lm-butter-soft);
  border: 1.5px solid var(--lm-ink);
  border-radius: var(--r-sm);
  min-height: 0;
  cursor: default;
  border-bottom: 1.5px solid var(--lm-ink);
}
.mod-option[data-mod-row] input[type="text"],
.mod-option[data-mod-row] input[type="number"] {
  padding: 6px 10px;
  font-size: 13px;
  border-width: 1.5px;
}

/* =========================================================================
   Diner app — order flow surfaces
   ========================================================================= */

/* Hero banner on diner home */
.diner-hero {
  background: var(--lm-butter);
  border: 2px solid var(--lm-ink);
  border-radius: var(--r-lg);
  padding: var(--sp-6);
  box-shadow: var(--shadow-pop);
  position: relative;
}
.diner-hero h1 { font-size: clamp(1.75rem, 4vw, 2.5rem); margin-bottom: var(--sp-2); }
.diner-hero p { color: var(--lm-ink-soft); font-size: 1rem; }

/* Cart drawer / bottom bar */
.cart-bar {
  position: fixed;
  bottom: 0; left: 0; right: 0;
  background: var(--lm-ink);
  color: var(--lm-cream);
  border-top: 2px solid var(--lm-ink);
  padding: var(--sp-4) var(--sp-5);
  padding-bottom: calc(var(--sp-4) + env(safe-area-inset-bottom, 0px));
  z-index: 60;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--sp-4);
  font-family: var(--font-display);
  font-weight: 700;
  font-size: 1rem;
  cursor: pointer;
  box-shadow: 0 -6px 20px rgba(24,23,15,0.15);
  transition: transform 0.2s ease;
}
.cart-bar:active { transform: translateY(1px); }
.cart-bar .btn { box-shadow: none; }

/* Diner menu — photo-first item cards */
.menu-card {
  background: var(--lm-cream);
  border: 2px solid var(--lm-ink);
  border-radius: var(--r-lg);
  overflow: hidden;
  box-shadow: var(--shadow-pop);
  position: relative;
  cursor: pointer;
  transition: transform 0.15s ease, box-shadow 0.15s ease;
}
.menu-card:active { transform: translateY(1px); box-shadow: 2px 2px 0 var(--lm-ink); }
/* no-photo cards: let .menu-card-body provide all padding (avoid double-padding) */
.menu-card.no-photo { padding: 0; }
/* M16.3: reserve top space on no-photo cards so absolute-positioned badges (FEATURED / N% OFF) don’t cover the item name */
.menu-card.no-photo .menu-card-body { padding-top: calc(var(--sp-4) + 22px); }
.menu-card-photo {
  width: 100%;
  aspect-ratio: 4 / 3;
  object-fit: cover;
  display: block;
  background: var(--lm-butter-soft);
  border-bottom: 2px solid var(--lm-ink);
}
.menu-card-body {
  padding: var(--sp-4) var(--sp-5);
  position: relative;
}
.menu-card-name {
  font-family: var(--font-display);
  font-weight: 700;
  font-size: 1.1rem;
  line-height: 1.2;
  color: var(--lm-ink);
  margin: 0 0 4px 0;
  padding-right: 60px; /* room for floating add btn */
}
.menu-card-desc {
  color: var(--lm-ink-soft);
  font-size: 0.875rem;
  line-height: 1.4;
  margin: 0 0 var(--sp-2) 0;
  padding-right: 60px;
}
.menu-card-price {
  font-family: var(--font-display);
  font-weight: 700;
  font-size: 1rem;
  color: var(--lm-ink);
}
.menu-card-add {
  position: absolute;
  bottom: var(--sp-4);
  right: var(--sp-4);
  width: 44px;
  height: 44px;
  border-radius: 50%;
  background: var(--lm-butter);
  color: var(--lm-ink);
  border: 2px solid var(--lm-ink);
  font-size: 1.5rem;
  font-weight: 700;
  line-height: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: 3px 3px 0 var(--lm-ink);
  cursor: pointer;
  transition: transform 0.1s ease, box-shadow 0.1s ease;
  padding: 0;
}
.menu-card-add:active {
  transform: translate(2px, 2px);
  box-shadow: 1px 1px 0 var(--lm-ink);
}

/* Required pill — tomato red for high visibility */
.pill-required {
  background: var(--lm-tomato);
  color: #fff;
  border-color: var(--lm-tomato);
  font-weight: 700;
  font-size: 0.7rem;
  letter-spacing: 0.02em;
  text-transform: uppercase;
}

/* Modifier option rows — bigger tap targets */
.mod-option {
  display: flex;
  align-items: center;
  gap: var(--sp-3);
  padding: var(--sp-3) var(--sp-2);
  border-bottom: 1px solid var(--lm-line);
  cursor: pointer;
  min-height: 48px;
}
.mod-option:last-child { border-bottom: none; }
.mod-option input { accent-color: var(--lm-yellow); width: 20px; height: 20px; flex-shrink: 0; }
.mod-option-name { flex: 1; font-size: 0.95rem; }
.mod-option-price { color: var(--lm-ink-soft); font-size: 0.875rem; }

/* Modal qty stepper — bigger touch targets */
.qty-btn {
  width: 40px;
  height: 40px;
  border-radius: 50%;
  border: 2px solid var(--lm-ink);
  background: var(--lm-cream);
  font-size: 1.25rem;
  font-weight: 700;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 0;
}
.qty-btn:active { background: var(--lm-butter-soft); }

/* Order status dots */
.order-status-step {
  display: flex; align-items: center; gap: var(--sp-3);
  padding: var(--sp-3);
  border-radius: var(--r-md);
  border: 1.5px solid var(--lm-line);
}
.order-status-step.is-active {
  background: var(--lm-butter-soft);
  border-color: var(--lm-ink);
}
.order-status-step.is-done {
  background: var(--lm-basil-light);
  border-color: var(--lm-ink);
}

/* =========================================================================
   Tablet — order board
   ========================================================================= */
.tablet-board {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  gap: var(--sp-4);
}
.tablet-ticket {
  background: var(--lm-surface);
  border: 2px solid var(--lm-ink);
  border-radius: var(--r-md);
  padding: var(--sp-4);
  box-shadow: var(--shadow-sm);
  display: flex;
  flex-direction: column;
  gap: var(--sp-3);
}
.tablet-ticket.is-new { background: var(--lm-butter); }
.tablet-ticket.is-preparing { background: var(--lm-butter-soft); }
.tablet-ticket.is-ready { background: var(--lm-basil-light); }
.tablet-ticket-head {
  display: flex; justify-content: space-between; align-items: baseline;
  font-family: var(--font-display);
  font-weight: 700;
}
.tablet-ticket-num {
  font-size: 1.5rem;
  letter-spacing: -0.03em;
}

/* =========================================================================
   Sticker accent — used sparingly on key CTAs/banners
   ========================================================================= */
.sticker {
  display: inline-block;
  background: var(--lm-tomato);
  color: var(--lm-cream);
  border: 2px solid var(--lm-ink);
  border-radius: var(--r-pill);
  padding: 6px 14px;
  font-family: var(--font-display);
  font-weight: 700;
  font-size: 0.75rem;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  transform: rotate(-3deg);
  box-shadow: 3px 3px 0 var(--lm-ink);
}
.sticker.yellow { background: var(--lm-butter); color: var(--lm-ink); transform: rotate(2deg); }
.sticker.basil { background: var(--lm-basil); color: var(--lm-cream); }

/* Small responsive tweaks */
@media (max-width: 600px) {
  .lm-panel-body { padding: var(--sp-4); }
  .menu-items-grid { grid-template-columns: 1fr; }
  .mod-option { grid-template-columns: 1fr; }
}

@media (prefers-reduced-motion: reduce) {
  * { transition: none !important; animation: none !important; }
}

/* ===== Orders inbox (M19) ===== */
@keyframes lm-order-flash {
  0%   { box-shadow: 0 0 0 0 rgba(255, 232, 92, 0.8); background: #FFF4A8; }
  60%  { box-shadow: 0 0 0 12px rgba(255, 232, 92, 0); background: #FFF4A8; }
  100% { box-shadow: 0 0 0 0 rgba(255, 232, 92, 0); background: transparent; }
}
.lm-order-flash {
  animation: lm-order-flash 1.6s ease-out;
}

/* ============================================================
   Modal (M3) — used by refund modal in orders inbox
   ============================================================ */
.lm-modal-overlay {
  position: fixed; inset: 0;
  background: rgba(24,23,15,0.55);
  display: flex; align-items: center; justify-content: center;
  z-index: 1000; padding: 16px;
}
.lm-modal {
  background: #FBF7EE; color: #18170F;
  border: 1px solid #18170F; border-radius: 16px;
  width: 100%; max-width: 480px;
  max-height: calc(100vh - 32px); overflow: hidden;
  display: flex; flex-direction: column;
  box-shadow: 0 24px 48px rgba(24,23,15,0.25);
}
.lm-modal-head {
  display: flex; align-items: center; justify-content: space-between;
  padding: 14px 16px; border-bottom: 1px solid #EEE9DA;
}
.lm-modal-head h2 { font-family: 'Bricolage Grotesque', sans-serif; font-size: 18px; }
.lm-modal-body { padding: 16px; overflow-y: auto; }
.lm-modal-foot { padding: 12px 16px; border-top: 1px solid #EEE9DA; background: #FFF8E1; }
.lm-modal .icon-btn {
  width: 32px; height: 32px; border-radius: 50%;
  border: none; background: transparent; cursor: pointer;
  font-size: 22px; line-height: 1; color: #3B392C;
}
.lm-modal .icon-btn:hover { background: #EEE9DA; }

/* ============================================================
   Impersonation banner (M12) — sticky red bar at top of body
   ============================================================ */
#lm-impersonation-banner {
  position: sticky; top: 0; left: 0; right: 0; z-index: 1100;
  background: var(--lm-tomato);
  color: #FFFFFF;
  border-bottom: 2px solid #18170F;
  font-family: Inter, system-ui, sans-serif;
  box-shadow: 0 4px 16px rgba(255, 75, 43, 0.25);
}
body.lm-impersonating .lm-nav { top: 0; }
.lm-imp-banner__inner {
  display: flex; align-items: center; justify-content: space-between;
  gap: 16px; padding: 10px 20px; max-width: 1400px; margin: 0 auto;
  flex-wrap: wrap;
}
.lm-imp-banner__left, .lm-imp-banner__right {
  display: flex; align-items: center; gap: 12px;
}
.lm-imp-banner__pill {
  background: #18170F; color: #FFE85C;
  font-family: 'Bricolage Grotesque', sans-serif;
  font-weight: 700; font-size: 11px; letter-spacing: 1px;
  padding: 4px 10px; border-radius: 999px;
  box-shadow: 2px 2px 0 rgba(255,255,255,0.25);
}
.lm-imp-banner__tenant {
  font-family: 'Bricolage Grotesque', sans-serif;
  font-weight: 600; font-size: 15px;
}
.lm-imp-banner__slug {
  background: rgba(255,255,255,0.18); color: #FFFFFF;
  padding: 2px 8px; border-radius: 4px; font-size: 12px;
  font-family: ui-monospace, SFMono-Regular, monospace;
}
.lm-imp-banner__timer {
  display: inline-flex; align-items: baseline; gap: 6px;
  background: rgba(24, 23, 15, 0.25); padding: 6px 12px; border-radius: 8px;
  font-variant-numeric: tabular-nums;
}
.lm-imp-banner__timer-label { font-size: 11px; opacity: 0.85; text-transform: uppercase; letter-spacing: 0.5px; }
.lm-imp-banner__timer-value { font-weight: 700; font-size: 14px; }
.lm-imp-banner__exit {
  background: #FFFFFF; color: var(--lm-tomato);
  border: 2px solid #18170F; border-radius: 8px;
  padding: 6px 14px; font-weight: 600; font-size: 13px;
  cursor: pointer; font-family: inherit;
  box-shadow: 2px 2px 0 #18170F;
  transition: transform 0.1s, box-shadow 0.1s;
}
.lm-imp-banner__exit:hover { transform: translate(-1px,-1px); box-shadow: 3px 3px 0 #18170F; }
.lm-imp-banner__exit:active { transform: translate(1px,1px); box-shadow: 1px 1px 0 #18170F; }

/* Tenants row button — Impersonate */
.admin-table .btn-impersonate {
  background: #FFFFFF; color: var(--lm-tomato);
  border: 1.5px solid var(--lm-tomato);
  padding: 4px 10px; font-size: 12px; border-radius: 6px;
  font-weight: 600; cursor: pointer;
}
.admin-table .btn-impersonate:hover { background: var(--lm-tomato); color: #FFFFFF; }

/* =====================================================
   M22 — Owner new-order banner + chime mute toggle
   ===================================================== */

.lm-owner-order-banner {
  position: fixed;
  top: 100px; /* sits below the 66px sticky nav (24+66+10 buffer) */
  right: 16px;
  z-index: 9999;
  width: min(460px, calc(100vw - 32px));
  background: var(--lm-cream, #FBF7EE);
  border: 2px solid var(--lm-ink, #18170F);
  border-radius: 12px;
  box-shadow: 6px 6px 0 var(--lm-ink, #18170F);
  transform: translateX(420px);
  opacity: 0;
  transition: transform 0.32s cubic-bezier(0.2, 0.8, 0.2, 1), opacity 0.24s ease-out;
  font-family: 'Inter', system-ui, sans-serif;
}
.lm-owner-order-banner.is-visible {
  transform: translateX(0);
  opacity: 1;
}
.lm-owner-order-banner-inner {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 12px 14px;
}
.lm-owner-order-banner-icon {
  font-size: 26px;
  line-height: 1;
  animation: lm-owner-banner-ring 0.9s ease-out 1;
}
@keyframes lm-owner-banner-ring {
  0%   { transform: rotate(0); }
  20%  { transform: rotate(-18deg); }
  40%  { transform: rotate(14deg); }
  60%  { transform: rotate(-10deg); }
  80%  { transform: rotate(6deg); }
  100% { transform: rotate(0); }
}
.lm-owner-order-banner-text {
  flex: 1;
  min-width: 0;
}
.lm-owner-order-banner-title {
  font-family: 'Bricolage Grotesque', 'Inter', sans-serif;
  font-weight: 700;
  font-size: 15px;
  color: var(--lm-ink, #18170F);
  letter-spacing: -0.01em;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.lm-owner-order-banner-sub {
  font-size: 12.5px;
  color: var(--lm-ink-soft, #3B392C);
  margin-top: 1px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.lm-owner-order-banner-cta {
  flex-shrink: 0;
  text-decoration: none;
}
.lm-owner-order-banner-close {
  background: transparent;
  border: 0;
  font-size: 22px;
  line-height: 1;
  color: var(--lm-ink-soft, #3B392C);
  cursor: pointer;
  padding: 0 2px;
  margin-left: -4px;
}
.lm-owner-order-banner-close:hover { color: var(--lm-ink, #18170F); }

/* Chime mute toggle in the owner nav */
.lm-chime-toggle {
  background: transparent;
  border: 1px solid var(--lm-ink-soft, #3B392C);
  border-radius: 6px;
  padding: 4px 8px;
  font-size: 13px;
  cursor: pointer;
  color: var(--lm-ink, #18170F);
  font-family: inherit;
}
.lm-chime-toggle:hover { background: var(--lm-butter-soft, #FFF4A8); }
.lm-chime-toggle[data-muted="1"] { opacity: 0.55; }

@media (max-width: 480px) {
  .lm-owner-order-banner {
    top: 80px;
    right: 8px;
    left: 8px;
    width: auto;
  }
  .lm-owner-order-banner-inner { padding: 10px 12px; gap: 10px; }
  .lm-owner-order-banner-icon { font-size: 22px; }
  .lm-owner-order-banner-title { font-size: 14px; }
  .lm-owner-order-banner-sub { font-size: 12px; }
  .lm-owner-order-banner-cta-label-long { display: none; }
}
.lm-owner-order-banner-cta-label-short { display: none; }
@media (max-width: 480px) {
  .lm-owner-order-banner-cta-label-short { display: inline; }
}

/* =========================================================
   M23 — Overview KPI strip
   ========================================================= */
.lm-kpi-strip {
  background: linear-gradient(180deg, var(--lm-cream, #FBF7EE) 0%, #FFFDF6 100%);
  border-top: 4px solid var(--lm-butter, #FFE85C);
}
.lm-kpi-strip--empty {
  background: var(--lm-cream, #FBF7EE);
  padding: 18px 16px;
}
.lm-kpi-grid {
  display: grid;
  grid-template-columns: repeat(6, minmax(0, 1fr));
  gap: 10px;
}
.lm-kpi-tile {
  background: #fff;
  border: 1px solid var(--lm-line, #D4D1CA);
  border-radius: 10px;
  padding: 12px 12px 10px;
  display: flex;
  flex-direction: column;
  min-height: 96px;
  transition: transform 120ms ease, box-shadow 120ms ease, border-color 120ms ease;
}
.lm-kpi-tile:hover {
  transform: translateY(-1px);
  box-shadow: 0 6px 16px rgba(24, 23, 15, 0.08);
  border-color: var(--lm-ink-soft, #3B392C);
}
.lm-kpi-tile--primary {
  background: var(--lm-ink, #18170F);
  color: #fff;
  border-color: var(--lm-ink, #18170F);
}
.lm-kpi-tile--primary .lm-kpi-tile-label { color: rgba(255, 255, 255, 0.7); }
.lm-kpi-tile--primary .lm-kpi-tile-value { color: var(--lm-butter, #FFE85C); }
/* M46: butter KPI tile used for driver tip totals */
.lm-kpi-tile--butter {
  background: var(--lm-butter, #FFE85C);
  border-color: var(--lm-ink, #18170F);
  color: var(--lm-ink, #18170F);
}
.lm-kpi-tile--butter .lm-kpi-tile-label { color: var(--lm-ink-soft, #3B392C); }
.lm-kpi-tile--butter .lm-kpi-tile-value { color: var(--lm-ink, #18170F); }
/* M46: inline 'Tip $X' pill on driver order card */
.lm-driver-tip {
  display: inline-block;
  padding: 0 6px;
  border-radius: 6px;
  background: var(--lm-butter, #FFE85C);
  color: var(--lm-ink, #18170F);
  font-weight: 700;
  cursor: help;
}
.lm-kpi-tile-label {
  font-size: 11px;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--lm-ink-soft, #3B392C);
  font-weight: 600;
  margin-bottom: 6px;
  line-height: 1.2;
}
.lm-kpi-tile-value {
  font-family: 'Bricolage Grotesque', sans-serif;
  font-size: 26px;
  font-weight: 800;
  line-height: 1;
  color: var(--lm-ink, #18170F);
  margin-bottom: 4px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.lm-kpi-tile-foot {
  margin-top: auto;
  font-size: 11px;
  line-height: 1.3;
}
.lm-kpi-delta {
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.01em;
}
.lm-kpi-delta--up    { color: var(--lm-basil, #1F5E37); }
.lm-kpi-delta--down  { color: var(--lm-tomato, #FF4B2B); }
.lm-kpi-delta--neutral { color: var(--lm-ink-soft, #3B392C); }
.lm-kpi-tile--primary .lm-kpi-delta--up    { color: #7BD89E; }
.lm-kpi-tile--primary .lm-kpi-delta--down  { color: #FFB3A3; }
.lm-kpi-tile--primary .lm-kpi-delta--neutral { color: rgba(255,255,255,0.75); }
.lm-kpi-tile--spark .lm-kpi-spark {
  display: block;
  width: 100%;
  height: 44px;
  margin: 2px 0 2px;
}
.lm-kpi-spark-empty {
  height: 44px;
  display: flex;
  align-items: center;
  justify-content: center;
}

/* 3-up at tablet, 2-up at mobile */
@media (max-width: 900px) {
  .lm-kpi-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (max-width: 560px) {
  .lm-kpi-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
  .lm-kpi-tile { padding: 10px 10px 8px; min-height: 84px; }
  .lm-kpi-tile-value { font-size: 22px; }
}

/* ============================================================
   M24 — Customer detail drawer
   ============================================================ */

/* Animations */
@keyframes lm-fade-in {
  from { opacity: 0; }
  to   { opacity: 1; }
}
@keyframes lm-slide-in {
  from { transform: translateX(24px); opacity: 0; }
  to   { transform: translateX(0);    opacity: 1; }
}
@keyframes lm-skel-pulse {
  0%, 100% { opacity: 0.55; }
  50%      { opacity: 1; }
}

/* Overlay + shell */
.lm-cust-drawer-overlay {
  position: fixed;
  inset: 0;
  background: rgba(24, 23, 15, 0.42);
  backdrop-filter: blur(2px);
  -webkit-backdrop-filter: blur(2px);
  display: flex;
  justify-content: flex-end;
  z-index: 1000;
  animation: lm-fade-in 160ms ease-out;
}
.lm-cust-drawer {
  position: relative;
  width: min(560px, 96vw);
  height: 100vh;
  background: var(--lm-cream, #FBF7EE);
  box-shadow: -16px 0 48px rgba(24, 23, 15, 0.22);
  overflow-y: auto;
  animation: lm-slide-in 220ms cubic-bezier(0.22, 0.61, 0.36, 1);
  display: flex;
  flex-direction: column;
}
.lm-cust-drawer-close {
  position: absolute;
  top: 12px;
  right: 12px;
  width: 36px;
  height: 36px;
  border-radius: 999px;
  border: 0;
  background: rgba(255, 255, 255, 0.78);
  color: var(--lm-ink, #18170F);
  font-size: 24px;
  line-height: 1;
  cursor: pointer;
  z-index: 5;
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: 0 2px 6px rgba(24, 23, 15, 0.12);
  transition: background 120ms ease, transform 120ms ease;
}
.lm-cust-drawer-close:hover {
  background: #fff;
  transform: scale(1.05);
}
.lm-cust-drawer-body {
  flex: 1;
  display: flex;
  flex-direction: column;
}

/* Skeleton loader */
.lm-cust-drawer-loading {
  padding: 24px;
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.lm-cust-drawer-skel-band {
  height: 96px;
  border-radius: 12px;
  background: linear-gradient(90deg, #EFEAD9 0%, #F6F2E5 50%, #EFEAD9 100%);
  animation: lm-skel-pulse 1.4s ease-in-out infinite;
}
.lm-cust-drawer-skel-line {
  height: 14px;
  border-radius: 6px;
  background: #EFEAD9;
  animation: lm-skel-pulse 1.4s ease-in-out infinite;
}
.lm-cust-drawer-skel-tiles {
  margin-top: 8px;
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 8px;
}
.lm-cust-drawer-skel-tiles > div {
  height: 84px;
  border-radius: 12px;
  background: #EFEAD9;
  animation: lm-skel-pulse 1.4s ease-in-out infinite;
}

/* Hero band */
.lm-cust-drawer-hero {
  position: relative;
  padding: 0 24px 16px;
  background: #fff;
  border-bottom: 1px solid var(--lm-line, rgba(24,23,15,0.14));
}
.lm-cust-drawer-hero-band {
  height: 88px;
  margin: 0 -24px 0;
  background:
    linear-gradient(135deg, var(--lm-cust-accent, var(--lm-ink, #18170F)) 0%, rgba(24,23,15,0.85) 100%);
}
.lm-cust-drawer-hero-inner {
  display: flex;
  align-items: flex-end;
  gap: 14px;
  margin-top: -34px;
  position: relative;
  z-index: 2;
}
.lm-cust-drawer-id { min-width: 0; padding-bottom: 4px; }
.lm-cust-drawer-name {
  margin: 6px 0 2px;
  font-family: 'Bricolage Grotesque', Inter, system-ui, sans-serif;
  font-size: 22px;
  font-weight: 700;
  color: var(--lm-ink, #18170F);
  line-height: 1.15;
  word-break: break-word;
}
.lm-cust-drawer-contact {
  margin: 0;
  font-size: 13px;
  color: var(--lm-ink-soft, #3B392C);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.lm-cust-drawer-loc {
  margin: 2px 0 0;
  font-size: 12px;
  color: var(--lm-ink-soft, #3B392C);
}
.lm-cust-drawer-pills {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-top: 12px;
}
.lm-cust-rank-pill {
  font-weight: 700;
  letter-spacing: 0.04em;
  font-size: 11px;
}

/* Avatar */
.lm-cust-avatar {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 999px;
  background: var(--lm-ink, #18170F);
  color: var(--lm-butter, #FFE85C);
  font-family: 'Bricolage Grotesque', Inter, system-ui, sans-serif;
  font-weight: 700;
  letter-spacing: 0.02em;
  border: 3px solid #fff;
  box-shadow: 0 4px 10px rgba(24, 23, 15, 0.18);
  flex-shrink: 0;
}
.lm-cust-avatar--lg {
  width: 68px;
  height: 68px;
  font-size: 24px;
}
.lm-cust-avatar--sm {
  width: 32px;
  height: 32px;
  font-size: 12px;
  border-width: 2px;
  box-shadow: 0 1px 3px rgba(24, 23, 15, 0.18);
}

/* Drawer sections */
.lm-cust-drawer-section {
  padding: 16px 24px;
  border-bottom: 1px solid var(--lm-line, rgba(24,23,15,0.10));
}
.lm-cust-drawer-section:last-child { border-bottom: 0; }
.lm-cust-drawer-h4 {
  margin: 0 0 10px;
  font-family: 'Bricolage Grotesque', Inter, system-ui, sans-serif;
  font-size: 13px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--lm-ink-soft, #3B392C);
}
.lm-cust-drawer-h4-count {
  font-weight: 500;
  opacity: 0.7;
  text-transform: none;
  letter-spacing: 0;
}

/* KPI tiles (mini, inside drawer) */
/* Default to 2x2 — drawer is 560px max and tiles need room to breathe. */
.lm-cust-kpi-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
}
.lm-cust-kpi-tile {
  background: #fff;
  border: 1px solid var(--lm-line, rgba(24,23,15,0.12));
  border-radius: 12px;
  padding: 12px 14px;
  min-height: 88px;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  gap: 6px;
  min-width: 0;
  overflow: hidden;
}
.lm-cust-kpi-tile--primary {
  background: var(--lm-ink, #18170F);
  border-color: var(--lm-ink, #18170F);
  color: var(--lm-butter, #FFE85C);
}
.lm-cust-kpi-tile--primary .lm-cust-kpi-label,
.lm-cust-kpi-tile--primary .lm-cust-kpi-foot {
  color: rgba(255, 232, 92, 0.78);
}
.lm-cust-kpi-tile--primary .lm-cust-kpi-value {
  color: var(--lm-butter, #FFE85C);
}
.lm-cust-kpi-label {
  font-size: 11px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--lm-ink-soft, #3B392C);
}
.lm-cust-kpi-value {
  font-family: 'Bricolage Grotesque', Inter, system-ui, sans-serif;
  font-size: 24px;
  font-weight: 700;
  color: var(--lm-ink, #18170F);
  font-variant-numeric: tabular-nums;
  line-height: 1.1;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.lm-cust-kpi-foot {
  font-size: 11px;
  color: var(--lm-ink-soft, #3B392C);
  opacity: 0.85;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* Action row */
.lm-cust-drawer-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  padding: 12px 24px 16px;
  border-bottom: 1px solid var(--lm-line, rgba(24,23,15,0.10));
}

/* Meta (timeline) grid */
.lm-cust-meta-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px 16px;
}
.lm-cust-meta-k {
  font-size: 11px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--lm-ink-soft, #3B392C);
}
.lm-cust-meta-v {
  font-size: 14px;
  font-weight: 600;
  color: var(--lm-ink, #18170F);
  font-variant-numeric: tabular-nums;
}

/* Order rows (recent orders + loyalty events) */
.lm-cust-orders-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.lm-cust-order-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 10px 12px;
  background: #fff;
  border: 1px solid var(--lm-line, rgba(24,23,15,0.10));
  border-radius: 10px;
}
.lm-cust-order-row-main { min-width: 0; flex: 1; }
.lm-cust-order-row-id {
  font-size: 13px;
  font-weight: 700;
  color: var(--lm-ink, #18170F);
  font-variant-numeric: tabular-nums;
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 4px;
}
.lm-cust-order-row-meta {
  font-size: 12px;
  color: var(--lm-ink-soft, #3B392C);
  margin-top: 2px;
}
.lm-cust-order-row-amt {
  text-align: right;
  font-variant-numeric: tabular-nums;
  flex-shrink: 0;
}
.lm-cust-order-row-total {
  font-size: 14px;
  font-weight: 700;
  color: var(--lm-ink, #18170F);
}
.lm-cust-order-row-tip,
.lm-cust-order-row-refund {
  font-size: 11px;
  color: var(--lm-ink-soft, #3B392C);
  margin-top: 1px;
}
.lm-cust-order-row-refund { color: var(--lm-tomato, #FF4B2B); }

/* Roster row avatar wrapper (M24 polish) */
.lm-cust-row-id-wrap {
  display: flex;
  align-items: center;
  gap: 10px;
  min-width: 0;
}
.lm-cust-row-rank {
  display: inline-block;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.04em;
  padding: 2px 6px;
  border-radius: 999px;
  margin-left: 6px;
  vertical-align: middle;
}

/* Mobile breakpoint */
@media (max-width: 560px) {
  .lm-cust-drawer {
    width: 100vw;
    height: 100vh;
  }
  .lm-cust-drawer-overlay { justify-content: stretch; }
  .lm-cust-drawer-section { padding: 14px 16px; }
  .lm-cust-drawer-hero { padding: 0 16px 14px; }
  .lm-cust-drawer-hero-band { margin: 0 -16px 0; height: 76px; }
  .lm-cust-drawer-actions { padding: 12px 16px 14px; }
  .lm-cust-kpi-grid { gap: 6px; }
  .lm-cust-kpi-tile { min-height: 80px; padding: 10px 12px; }
  .lm-cust-kpi-value { font-size: 20px; }
  .lm-cust-drawer-name { font-size: 19px; }
  .lm-cust-avatar--lg { width: 56px; height: 56px; font-size: 20px; }
  .lm-cust-drawer-hero-inner { margin-top: -28px; gap: 10px; }
  .lm-cust-meta-grid { gap: 8px 12px; }
}

/* ============================================================
   M25 — Owner analytics page hardening
   ============================================================ */

/* Tomato soft tint for negative-variance backgrounds */
:root {
  --lm-tomato-soft: #FCE4EC;
}

/* Shell */
.lm-analytics-shell {
  max-width: 1080px;
  margin: 0 auto;
}
.lm-analytics-header {
  align-items: center;
  flex-wrap: wrap;
  gap: 12px;
}
.lm-analytics-controls {
  align-items: center;
  flex-wrap: wrap;
}
.lm-analytics-blurb {
  margin: 0;
  font-size: 13px;
  color: var(--lm-ink-soft, #3B392C);
}

/* Range tabs — make the active state visually unmistakable */
#lm-range button[role="tab"] { transition: background 120ms ease, color 120ms ease; }
#lm-range button[aria-selected="true"] { box-shadow: inset 0 -2px 0 0 var(--lm-ink, #18170F); }

/* KPI cards spacing on the row */
.lm-analytics-kpi-row { row-gap: 12px; }
.lm-analytics-kpi { min-height: 96px; }

/* Card header row (title + CSV/meta) */
.lm-analytics-card-head {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 12px;
  margin-bottom: 10px;
  flex-wrap: wrap;
}
.lm-analytics-card-head h3 {
  font-family: 'Bricolage Grotesque', Inter, system-ui, sans-serif;
}

/* CSV button */
.lm-csv-btn {
  font-size: 12px;
  padding: 4px 10px;
  flex-shrink: 0;
}
.lm-csv-btn:disabled {
  opacity: 0.4;
  cursor: not-allowed;
}

/* Hour-of-day bar hover affordance */
.lm-hour-bar { transition: filter 120ms ease, transform 120ms ease; }
.lm-hour-bar:hover { filter: brightness(1.05); transform: scaleY(1.02); transform-origin: bottom; }

/* New-vs-returning callout */
.lm-analytics-callout {
  margin-top: 12px;
  padding: 10px;
  background: var(--lm-cream, #FBF7EE);
  border-radius: 8px;
  font-size: 13px;
}

/* POS recon tiles */
.lm-analytics-recon-tile {
  flex: 1;
  min-width: 160px;
  padding: 10px;
  background: var(--lm-cream, #FBF7EE);
  border-radius: 8px;
}

/* Revenue chart hover */
.lm-revenue-wrap {
  position: relative;
  overflow-x: auto;
}
.lm-revenue-tooltip {
  position: absolute;
  bottom: 100%;
  margin-bottom: 4px;
  transform: translateX(-50%);
  background: var(--lm-ink, #18170F);
  color: var(--lm-cream, #FBF7EE);
  padding: 6px 10px;
  border-radius: 6px;
  font-size: 12px;
  white-space: nowrap;
  pointer-events: none;
  box-shadow: 0 4px 12px rgba(24, 23, 15, 0.22);
  z-index: 5;
}
.lm-revenue-tooltip .muted {
  color: rgba(251, 247, 238, 0.7) !important;
}

/* Error card */
.lm-analytics-error {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  padding: 48px 24px;
  background: #fff;
  border: 1px solid var(--lm-line, rgba(24,23,15,0.14));
  border-radius: 12px;
}
.lm-analytics-error-icon {
  font-size: 36px;
  color: var(--lm-tomato, #FF4B2B);
  margin-bottom: 10px;
}
.lm-analytics-error h3 {
  font-family: 'Bricolage Grotesque', Inter, system-ui, sans-serif;
  color: var(--lm-ink, #18170F);
}

/* Skeleton loader (shared with analytics view) */
@keyframes lm-skel-shimmer {
  0%, 100% { opacity: 0.55; }
  50%      { opacity: 1; }
}
.lm-skel-row {
  display: grid;
  grid-template-columns: repeat(5, minmax(160px, 1fr));
  gap: 12px;
  margin-bottom: 16px;
}
@media (max-width: 900px) {
  .lm-skel-row { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 560px) {
  .lm-skel-row { grid-template-columns: 1fr; }
}
.lm-skel-tile {
  background: #fff;
  border: 1px solid var(--lm-line, rgba(24,23,15,0.10));
  border-radius: 12px;
  padding: 16px;
  min-height: 96px;
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.lm-skel-block {
  margin: 0 0 16px;
  background: linear-gradient(90deg, #EFEAD9 0%, #F6F2E5 50%, #EFEAD9 100%);
  animation: lm-skel-shimmer 1.4s ease-in-out infinite;
  border: 0;
}
.lm-skel-line {
  height: 12px;
  border-radius: 6px;
  background: #EFEAD9;
  animation: lm-skel-shimmer 1.4s ease-in-out infinite;
}
.lm-skel-line--label { width: 50%; }
.lm-skel-line--value { width: 70%; height: 22px; }
.lm-skel-line--foot  { width: 40%; height: 10px; }

/* ============================================================
   M26 — Settings & Billing flow hardening
   ============================================================ */

/* ---------- M26 · Settings shell ---------- */
.lm-settings-shell {
  max-width: 980px;
  margin: 0 auto;
  width: 100%;
}
.lm-settings-headcard {
  display: flex;
  justify-content: space-between;
  align-items: flex-end;
  flex-wrap: wrap;
  gap: 12px;
}
.lm-settings-title {
  margin: 0;
  font-family: 'Bricolage Grotesque', sans-serif;
  font-size: 28px;
  letter-spacing: -0.01em;
}
.lm-settings-sub {
  margin: 4px 0 0 0;
  color: var(--lm-text-2);
  font-size: 14px;
}

/* ---------- M26 · Tablist (a11y) ---------- */
.lm-settings-tabs {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  padding: 4px;
  background: var(--lm-surface-2);
  border: 1px solid var(--lm-line);
  border-radius: 12px;
}
.lm-settings-tab {
  appearance: none;
  border: 0;
  background: transparent;
  color: var(--lm-text-2);
  font: inherit;
  font-weight: 600;
  padding: 8px 14px;
  border-radius: 8px;
  cursor: pointer;
  transition: background .12s ease, color .12s ease;
}
.lm-settings-tab:hover {
  background: var(--lm-surface);
  color: var(--lm-text);
}
.lm-settings-tab:focus-visible {
  outline: 2px solid var(--lm-ink);
  outline-offset: 2px;
}
.lm-settings-tab--active {
  background: var(--lm-ink);
  color: var(--lm-cream);
}
.lm-settings-tab--active:hover {
  background: var(--lm-ink);
  color: var(--lm-cream);
}

/* Skeleton tablist (no interactivity) */
.lm-settings-tabs-skel {
  display: flex;
  gap: 6px;
  padding: 4px;
  background: var(--lm-surface-2);
  border: 1px solid var(--lm-line);
  border-radius: 12px;
}
.lm-settings-tab-skel {
  height: 32px;
  width: 88px;
  border-radius: 8px;
  background: #EFEAD9;
  animation: lm-skel-shimmer 1.4s ease-in-out infinite;
}

/* ---------- M26 · Panel ---------- */
.lm-settings-panel {
  display: flex;
  flex-direction: column;
  gap: 14px;
}
.lm-settings-row-2,
.lm-settings-row-3 {
  display: grid;
  gap: 12px;
}
.lm-settings-row-2 { grid-template-columns: repeat(2, 1fr); }
.lm-settings-row-3 { grid-template-columns: repeat(3, 1fr); }
@media (max-width: 760px) {
  .lm-settings-row-2,
  .lm-settings-row-3 { grid-template-columns: 1fr; }
}

/* ---------- M26 · Color picker ---------- */
.lm-settings-color-row {
  display: grid;
  grid-template-columns: 48px 1fr 60px;
  gap: 10px;
  align-items: center;
}
@media (min-width: 760px) {
  .lm-settings-color-row {
    grid-template-columns: 48px 1fr 110px;
  }
}
.lm-settings-color-picker {
  width: 48px;
  height: 38px;
  padding: 0;
  border: 1px solid var(--lm-line-strong);
  border-radius: 8px;
  background: transparent;
  cursor: pointer;
  overflow: hidden;
}
.lm-settings-color-picker::-webkit-color-swatch-wrapper { padding: 0; }
.lm-settings-color-picker::-webkit-color-swatch { border: 0; border-radius: 6px; }
.lm-settings-color-text {
  font-family: ui-monospace, 'SF Mono', Menlo, Consolas, monospace;
  text-transform: uppercase;
  min-width: 0; /* allow grid item to shrink */
  width: 100%;
}
.lm-settings-color-preview {
  height: 38px;
  border-radius: 8px;
  border: 1px solid var(--lm-line);
  background: var(--lm-settings-color, var(--lm-surface-2));
}

/* ---------- M26 · Form error ---------- */
.lm-form-error {
  display: block;
  font-size: 12px;
  color: var(--lm-tomato);
  margin-top: 4px;
  min-height: 14px;
}
.lm-form-input--err {
  border-color: var(--lm-tomato) !important;
  background: var(--lm-danger-soft);
}

/* ---------- M26 · Logo card ---------- */
.lm-settings-logo-row {
  display: flex;
  align-items: center;
  gap: 16px;
  flex-wrap: wrap;
}
.lm-settings-logo-preview {
  width: 96px;
  height: 96px;
  border-radius: 16px;
  border: 1px solid var(--lm-line);
  background: var(--lm-surface);
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
}
.lm-settings-logo-preview img {
  max-width: 100%;
  max-height: 100%;
  object-fit: contain;
}
.lm-settings-logo-empty {
  color: var(--lm-text-muted);
  font-size: 12px;
  text-align: center;
  padding: 8px;
}
.lm-settings-logo-actions {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
}

/* ---------- M26 · Fulfillment toggles ---------- */
.lm-settings-fulfillment {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 10px;
}
@media (max-width: 640px) {
  .lm-settings-fulfillment { grid-template-columns: 1fr; }
}

/* ---------- M26 · Hours editor ---------- */
.lm-settings-hours-row {
  display: grid;
  grid-template-columns: 110px 80px 1fr 1fr;
  gap: 10px;
  align-items: center;
  padding: 8px 0;
  border-bottom: 1px solid var(--lm-line);
}
.lm-settings-hours-row:last-child { border-bottom: 0; }
.lm-settings-hours-day {
  font-weight: 600;
  color: var(--lm-text);
}
.lm-settings-hours-closed {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 13px;
  color: var(--lm-text-2);
}
.lm-settings-hours-time input {
  width: 100%;
}
.lm-settings-hours-row.is-closed .lm-settings-hours-time input { opacity: .5; pointer-events: none; }
@media (max-width: 640px) {
  .lm-settings-hours-row {
    grid-template-columns: 1fr 1fr;
  }
  .lm-settings-hours-day { grid-column: 1 / -1; }
  .lm-settings-hours-closed { grid-column: 1 / -1; }
}

/* ---------- M26 · Pause-ordering card ---------- */
.lm-settings-pause-card {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding: 16px;
  border-radius: 12px;
  border: 1px solid var(--lm-line);
  background: var(--lm-surface);
  flex-wrap: wrap;
}
.lm-settings-pause-card.is-on {
  background: var(--lm-basil-light);
  border-color: var(--lm-basil);
}
.lm-settings-pause-card.is-off {
  background: var(--lm-danger-soft);
  border-color: var(--lm-tomato);
}
.lm-settings-pause-status {
  font-weight: 700;
  font-family: 'Bricolage Grotesque', sans-serif;
  font-size: 18px;
}
.lm-settings-pause-card.is-on .lm-settings-pause-status { color: var(--lm-basil); }
.lm-settings-pause-card.is-off .lm-settings-pause-status { color: var(--lm-tomato); }
.lm-settings-pause-btn--off {
  background: var(--lm-tomato);
  color: var(--lm-white);
  border-color: var(--lm-tomato);
}
.lm-settings-pause-btn--off:hover {
  background: var(--lm-tomato-deep);
  border-color: var(--lm-tomato-deep);
}

/* ---------- M26 · Refunds list ---------- */
.lm-settings-refund-list {
  display: flex;
  flex-direction: column;
  border: 1px solid var(--lm-line);
  border-radius: 12px;
  background: var(--lm-surface);
}
.lm-settings-refund-row {
  display: grid;
  grid-template-columns: 1fr 1fr 120px 100px;
  gap: 10px;
  padding: 12px 14px;
  align-items: center;
  border-bottom: 1px solid var(--lm-line);
}
.lm-settings-refund-row:last-child { border-bottom: 0; }
.lm-settings-refund-id {
  font-family: ui-monospace, 'SF Mono', Menlo, Consolas, monospace;
  font-size: 12px;
  color: var(--lm-text-2);
}
.lm-settings-refund-meta {
  font-size: 12px;
  color: var(--lm-text-muted);
}
.lm-settings-refund-amount {
  font-weight: 700;
  text-align: right;
}
.lm-settings-refund-value { font-variant-numeric: tabular-nums; }
.lm-settings-refund-status {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 11px;
  font-weight: 700;
  padding: 4px 10px;
  border-radius: 999px;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  width: fit-content;
  justify-self: end;
}
.lm-settings-refund-status.is-success {
  background: var(--lm-basil-light);
  color: var(--lm-basil);
}
.lm-settings-refund-status.is-failed {
  background: var(--lm-danger-soft);
  color: var(--lm-tomato);
}
.lm-settings-refund-status.is-pending {
  background: var(--lm-butter-soft);
  color: var(--lm-butter-ink);
}
@media (max-width: 640px) {
  .lm-settings-refund-row {
    grid-template-columns: 1fr 1fr;
  }
  .lm-settings-refund-amount { text-align: left; }
  .lm-settings-refund-status { justify-self: start; }
}

/* ---------- M26 · Empty state ---------- */
.lm-settings-empty {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  padding: 32px 16px;
  color: var(--lm-text-2);
  gap: 6px;
}
.lm-settings-empty-icon {
  font-size: 28px;
  opacity: .7;
  margin-bottom: 4px;
}
.lm-settings-empty-hint {
  color: var(--lm-text-muted);
  font-size: 13px;
}

/* ---------- M26 · Staff list ---------- */
.lm-settings-staff-list {
  display: flex;
  flex-direction: column;
  border: 1px solid var(--lm-line);
  border-radius: 12px;
  background: var(--lm-surface);
  overflow: hidden;
}
.lm-settings-staff-row {
  display: grid;
  grid-template-columns: 1fr 130px 110px;
  gap: 12px;
  padding: 12px 14px;
  align-items: center;
  border-bottom: 1px solid var(--lm-line);
}
.lm-settings-staff-row:last-child { border-bottom: 0; }
.lm-settings-staff-name {
  font-weight: 600;
  display: flex;
  align-items: center;
  gap: 8px;
}
.lm-settings-staff-email {
  font-size: 12px;
  color: var(--lm-text-muted);
}
.lm-settings-staff-self {
  font-size: 10px;
  padding: 2px 6px;
  border-radius: 4px;
  background: var(--lm-butter-soft);
  color: var(--lm-butter-ink);
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.04em;
}
.lm-settings-staff-rolepill {
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  padding: 4px 10px;
  border-radius: 999px;
  letter-spacing: 0.04em;
  background: var(--lm-surface-2);
  color: var(--lm-text);
  width: fit-content;
}
.lm-settings-staff-toggle {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 12px;
  color: var(--lm-text-2);
}
.lm-settings-staff-perm {
  font-size: 12px;
  color: var(--lm-text-muted);
  text-align: right;
}
@media (max-width: 640px) {
  .lm-settings-staff-row {
    grid-template-columns: 1fr;
  }
  .lm-settings-staff-perm { text-align: left; }
}

/* ---------- M26 · Form actions ---------- */
.lm-settings-actions {
  display: flex;
  gap: 10px;
  justify-content: flex-end;
  flex-wrap: wrap;
  padding-top: 8px;
  border-top: 1px solid var(--lm-line);
}

/* ---------- M26 · Settings error message ---------- */
.lm-settings-error-msg {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 10px 14px;
  border-radius: 10px;
  background: var(--lm-danger-soft);
  color: var(--lm-tomato);
  font-weight: 600;
  font-size: 13px;
}

/* ---------- M26 · Inline confirm card ---------- */
.lm-inline-confirm {
  margin-top: 10px;
  padding: 14px 16px;
  border-radius: 12px;
  background: var(--lm-butter-soft);
  border: 1px solid var(--lm-butter);
  color: var(--lm-butter-ink);
  display: flex;
  flex-direction: column;
  gap: 10px;
  animation: lm-inline-confirm-in .14s ease-out;
}
.lm-inline-confirm.lm-inline-confirm--danger {
  background: var(--lm-danger-soft);
  border-color: var(--lm-tomato);
  color: var(--lm-ink);
}
.lm-inline-confirm-body {
  font-size: 14px;
}
.lm-inline-confirm-body strong {
  display: block;
  font-family: 'Bricolage Grotesque', sans-serif;
  font-size: 15px;
  margin-bottom: 2px;
}
.lm-inline-confirm-actions {
  display: flex;
  gap: 8px;
  justify-content: flex-end;
}
.lm-inline-confirm-danger-btn,
.btn.lm-inline-confirm-danger-btn {
  background: var(--lm-tomato);
  color: var(--lm-white);
  border-color: var(--lm-tomato);
}
.lm-inline-confirm-danger-btn:hover,
.btn.lm-inline-confirm-danger-btn:hover {
  background: var(--lm-tomato-deep);
  border-color: var(--lm-tomato-deep);
}
@keyframes lm-inline-confirm-in {
  from { opacity: 0; transform: translateY(-4px); }
  to   { opacity: 1; transform: translateY(0); }
}

/* ============================================================
   M26 — Billing
   ============================================================ */
.lm-billing-shell {
  max-width: 1040px;
  margin: 0 auto;
  width: 100%;
}
.lm-billing-head {
  align-items: flex-end;
  flex-wrap: wrap;
  gap: 12px;
}
.lm-billing-title {
  margin: 0;
  font-family: 'Bricolage Grotesque', sans-serif;
  font-size: 28px;
  letter-spacing: -0.01em;
}
.lm-billing-sub {
  margin: 4px 0 0 0;
  color: var(--lm-text-2);
  font-size: 14px;
}

/* Current-plan card */
.lm-billing-current {
  border-left: 4px solid var(--lm-billing-accent, var(--lm-ink));
}
.lm-billing-current--no-plan {
  background: var(--lm-butter-soft);
  border: 2px solid var(--lm-ink);
  border-left: 2px solid var(--lm-ink);
}
.lm-billing-current-row {
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
}
.lm-billing-current-head {
  align-items: center;
  flex-wrap: wrap;
}
.lm-billing-current-title {
  margin: 0;
  font-family: 'Bricolage Grotesque', sans-serif;
  font-size: 18px;
}
.lm-billing-current-sub {
  margin: 0;
  color: var(--lm-text-2);
  font-size: 13px;
}
.lm-billing-status-pill { font-size: 11px; }
.lm-billing-no-plan-pill {
  background: var(--lm-ink);
  color: var(--lm-butter);
  font-size: 11px;
}
.lm-billing-current-foot {
  margin: 6px 0 0 0;
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}
.lm-billing-foot {
  font-size: 13px;
  color: var(--lm-text-2);
}
.lm-billing-renews-in {
  display: inline-flex;
  align-items: center;
  padding: 2px 8px;
  border-radius: 999px;
  font-size: 11px;
  font-weight: 700;
  background: var(--lm-basil-light);
  color: var(--lm-basil);
  text-transform: uppercase;
  letter-spacing: 0.04em;
}

/* Plan grid + cards */
.lm-billing-grid {
  flex-wrap: wrap;
  align-items: stretch;
}
.lm-billing-plan-card {
  flex: 1 1 260px;
  min-width: 260px;
  display: flex;
  flex-direction: column;
  transition: transform .18s ease, box-shadow .18s ease, border-color .18s ease;
  border: 1px solid var(--lm-line);
}
.lm-billing-plan-card--popular {
  border: 2px solid var(--lm-billing-accent, var(--lm-tomato));
}
.lm-billing-plan-card--current {
  background: var(--lm-surface-2);
}
@media (hover: hover) {
  .lm-billing-plan-card:not(.lm-billing-plan-card--current):hover {
    transform: translateY(-3px);
    box-shadow: 0 8px 24px rgba(24,23,15,0.08);
    border-color: var(--lm-billing-accent, var(--lm-ink));
  }
}
.lm-billing-plan-head {
  align-items: flex-start;
  gap: 8px;
}
.lm-billing-plan-name {
  margin: 0;
  font-family: 'Bricolage Grotesque', sans-serif;
  font-size: 18px;
}
.lm-billing-plan-tagline {
  margin: 4px 0 0 0;
  color: var(--lm-text-2);
  font-size: 13px;
}
.lm-billing-popular-pill {
  background: var(--lm-billing-accent, var(--lm-tomato));
  color: var(--lm-white);
  font-size: 10px;
}
.lm-billing-price {
  margin: 14px 0 12px 0;
  display: flex;
  align-items: baseline;
  gap: 4px;
}
.lm-billing-price-amt {
  font-size: 36px;
  font-weight: 800;
  font-family: 'Bricolage Grotesque', sans-serif;
  line-height: 1;
}
.lm-billing-price-per {
  font-size: 13px;
  color: var(--lm-text-2);
}
.lm-billing-features {
  list-style: none;
  padding: 0;
  margin: 0 0 16px 0;
  flex: 1;
}
.lm-billing-feature {
  padding: 5px 0;
  font-size: 13px;
  display: flex;
  gap: 8px;
  align-items: flex-start;
}
.lm-billing-feature-check {
  color: var(--lm-billing-accent, var(--lm-basil));
  font-weight: 700;
  flex-shrink: 0;
}
.lm-billing-cta { width: 100%; }

/* Billing skeleton variants — no accent border in skeleton */
.lm-billing-current--skel {
  pointer-events: none;
  border-left: 4px solid var(--lm-line);
}
.lm-billing-plan-card--skel {
  pointer-events: none;
  min-height: 280px;
  border: 1px solid var(--lm-line);
}

/* Current-plan card CTA — soft tint instead of dark */
.lm-billing-plan-card--current .lm-billing-cta {
  background: var(--lm-surface);
  color: var(--lm-text);
  border: 1px solid var(--lm-line);
  opacity: 0.7;
}

/* Billing note card */
.lm-billing-note {
  background: var(--lm-surface-2);
  border: none;
}
.lm-billing-note-title {
  margin: 0 0 6px 0;
  font-size: 15px;
}
.lm-billing-note-body {
  margin: 0;
  font-size: 13px;
  color: var(--lm-text-2);
}

/* ---------- M26 · Missing styling polish ---------- */
.lm-settings-header {
  display: flex;
  justify-content: space-between;
  align-items: flex-end;
  flex-wrap: wrap;
  gap: 12px;
  margin-bottom: 4px;
}
.lm-settings-subtitle {
  margin: 4px 0 0 0;
  color: var(--lm-text-2);
  font-size: 14px;
}
.lm-settings-panel-blurb {
  margin: 0 0 4px 0;
  color: var(--lm-text-2);
  font-size: 13px;
}
.lm-form-hint {
  display: block;
  font-size: 12px;
  color: var(--lm-text-muted);
  margin-top: 4px;
}
.lm-settings-check {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-size: 14px;
  cursor: pointer;
  user-select: none;
}
.lm-settings-check input[type="checkbox"] {
  width: 16px;
  height: 16px;
  accent-color: var(--lm-ink);
}
.lm-settings-fulfillment-toggles {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 12px;
}
@media (max-width: 640px) {
  .lm-settings-fulfillment-toggles { grid-template-columns: 1fr; }
}
.lm-settings-delivery-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
  margin-top: 6px;
}
@media (max-width: 640px) {
  .lm-settings-delivery-row { grid-template-columns: 1fr; }
}
.lm-settings-time {
  font-variant-numeric: tabular-nums;
}
.lm-settings-logo-box {
  width: 96px;
  height: 96px;
  border-radius: 16px;
  border: 1px solid var(--lm-line);
  background: var(--lm-surface);
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
}
.lm-settings-logo-box img {
  max-width: 100%;
  max-height: 100%;
  object-fit: contain;
}
.lm-settings-logo-btn { cursor: pointer; }
.lm-settings-logo-remove {
  color: var(--lm-tomato);
}
.lm-settings-pause-sub {
  font-size: 13px;
  color: var(--lm-text-2);
  margin: 4px 0 0 0;
}
.lm-settings-staff-rolepill-wrap {
  display: flex;
  align-items: center;
  gap: 6px;
}
.lm-settings-danger {
  border: 1px solid var(--lm-tomato);
  background: var(--lm-danger-soft);
  padding: 16px;
  border-radius: 12px;
}
.lm-inline-confirm-title {
  font-family: 'Bricolage Grotesque', sans-serif;
  font-weight: 700;
  font-size: 15px;
  margin-bottom: 2px;
}

/* =========================================================================
   M27 — Owner orders inbox
   ========================================================================= */

.lm-orders-shell {
  max-width: 840px;
  margin: 0 auto;
  display: flex;
  flex-direction: column;
  gap: 16px;
}

.lm-orders-head {
  background: var(--lm-surface);
  border: 1px solid var(--lm-line);
  border-radius: 14px;
  padding: 20px;
  box-shadow: 0 1px 0 rgba(24, 23, 15, 0.04);
}

.lm-orders-head-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
}

.lm-orders-title {
  margin: 0;
  font-family: 'Bricolage Grotesque', sans-serif;
  font-weight: 700;
  font-size: 28px;
  color: var(--lm-ink);
  letter-spacing: -0.01em;
}

.lm-orders-sub {
  margin: 4px 0 0 0;
  font-size: 13px;
  color: var(--lm-text-2);
}

/* Diner-id filter banner */
.lm-orders-diner-banner {
  margin-top: 12px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 10px 14px;
  background: var(--lm-butter-soft);
  border: 1px solid var(--lm-butter);
  border-radius: 10px;
  font-size: 13px;
  color: var(--lm-butter-ink);
}
.lm-orders-diner-banner[hidden] { display: none; }

.lm-orders-diner-banner-text {
  font-weight: 600;
}

.lm-orders-diner-banner-clear {
  background: transparent;
  border: 1px solid var(--lm-ink);
  color: var(--lm-ink);
  padding: 4px 10px;
  border-radius: 999px;
  font-size: 12px;
  font-weight: 600;
  cursor: pointer;
}

.lm-orders-diner-banner-clear:hover {
  background: var(--lm-ink);
  color: var(--lm-butter);
}

/* Filter chips */
.lm-orders-filter {
  margin-top: 12px;
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
}

.lm-orders-chip {
  background: var(--lm-cream);
  color: var(--lm-ink);
  border: 1px solid var(--lm-line);
  padding: 8px 14px;
  border-radius: 999px;
  font-family: 'Inter', sans-serif;
  font-size: 13px;
  font-weight: 600;
  cursor: pointer;
  transition: background .14s ease, color .14s ease, border-color .14s ease;
}

.lm-orders-chip:hover {
  border-color: var(--lm-ink);
}

.lm-orders-chip:focus-visible {
  outline: 2px solid var(--lm-ink);
  outline-offset: 2px;
}

.lm-orders-chip--active {
  background: var(--lm-ink);
  color: var(--lm-butter);
  border-color: var(--lm-ink);
}

/* M92 — Scheduled orders toggle chip (sits between diner banner and date chips) */
.lm-orders-scheduled-bar {
  margin-top: 12px;
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
}

.lm-orders-scheduled-chip {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  background: var(--lm-cream);
  color: var(--lm-ink);
  border: 1px solid var(--lm-line);
  padding: 8px 14px;
  border-radius: 999px;
  font-family: 'Inter', sans-serif;
  font-size: 13px;
  font-weight: 600;
  cursor: pointer;
  transition: background .14s ease, color .14s ease, border-color .14s ease;
}

.lm-orders-scheduled-chip:hover { border-color: var(--lm-ink); }
.lm-orders-scheduled-chip:focus-visible {
  outline: 2px solid var(--lm-ink);
  outline-offset: 2px;
}

.lm-orders-scheduled-chip--active {
  background: var(--lm-ink);
  color: var(--lm-butter);
  border-color: var(--lm-ink);
}

.lm-orders-scheduled-chip-count {
  display: inline-block;
  min-width: 18px;
  height: 18px;
  padding: 0 6px;
  border-radius: 999px;
  background: var(--lm-butter);
  color: var(--lm-ink);
  font-size: 11px;
  font-weight: 700;
  line-height: 18px;
  text-align: center;
}
.lm-orders-scheduled-chip--active .lm-orders-scheduled-chip-count {
  background: var(--lm-butter);
  color: var(--lm-ink);
}
.lm-orders-scheduled-chip-count[hidden] { display: none; }

/* Scheduled-status pill + card accent (M92) */
.lm-orders-status-pill--scheduled {
  background: var(--lm-butter, #fef6e0);
  color: var(--lm-ink, #2a261f);
  border: 1px solid var(--lm-cream-line, #eee5cc);
}
.lm-orders-card--scheduled {
  border-left-color: var(--lm-cream-line, #eee5cc);
}

/* List */
.lm-orders-list {
  display: flex;
  flex-direction: column;
  gap: 12px;
}

/* Card */
.lm-orders-card {
  background: var(--lm-surface);
  border: 1px solid var(--lm-line);
  border-left: 4px solid var(--lm-ink-soft);
  border-radius: 14px;
  padding: 16px 18px;
  box-shadow: 0 1px 0 rgba(24, 23, 15, 0.04);
}

/* Status accent on card left edge */
.lm-orders-card--attention { border-left-color: var(--lm-tomato); }
.lm-orders-card--warning   { border-left-color: var(--lm-warning); }
.lm-orders-card--preparing { border-left-color: var(--lm-cocoa); }
.lm-orders-card--ready     { border-left-color: var(--lm-basil); }
.lm-orders-card--done      { border-left-color: var(--lm-ink-soft); }
.lm-orders-card--terminal  { border-left-color: var(--lm-text-muted); }

.lm-orders-card--needs-attention {
  box-shadow: 0 0 0 1px var(--lm-tomato), 0 1px 0 rgba(24, 23, 15, 0.04);
}

.lm-orders-card-head {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 12px;
  flex-wrap: wrap;
}

.lm-orders-card-head-main {
  flex: 1;
  min-width: 200px;
}

.lm-orders-pills {
  display: flex;
  gap: 6px;
  align-items: center;
  flex-wrap: wrap;
}

.lm-orders-num {
  font-family: 'Bricolage Grotesque', sans-serif;
  font-weight: 700;
  font-size: 17px;
  color: var(--lm-ink);
}

.lm-orders-status-pill {
  display: inline-flex;
  align-items: center;
  padding: 3px 10px;
  border-radius: 999px;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.3px;
  text-transform: uppercase;
  color: #fff;
  background: var(--lm-ink-soft);
}

.lm-orders-status-pill--attention { background: var(--lm-tomato); }
.lm-orders-status-pill--warning   { background: var(--lm-warning); }
.lm-orders-status-pill--preparing { background: var(--lm-cocoa); }
.lm-orders-status-pill--ready     { background: var(--lm-basil); }
.lm-orders-status-pill--done      { background: var(--lm-ink-soft); }
.lm-orders-status-pill--terminal  { background: var(--lm-text-muted); }

.lm-orders-pay-pill {
  display: inline-flex;
  align-items: center;
  padding: 3px 10px;
  border-radius: 999px;
  font-size: 11px;
  font-weight: 800;
  letter-spacing: 0.5px;
  background: var(--lm-ink);
  color: var(--lm-butter);
}

.lm-orders-type-pill {
  display: inline-flex;
  align-items: center;
  padding: 3px 10px;
  border-radius: 999px;
  font-size: 11px;
  font-weight: 600;
  background: var(--lm-cream);
  color: var(--lm-ink-soft);
  border: 1px solid var(--lm-line);
}
/* M46: 'to driver' tag inline with the Tip line on owner order cards */
.lm-orders-tip-tag {
  display: inline-block;
  margin-left: 4px;
  padding: 1px 8px;
  border-radius: 999px;
  background: var(--lm-butter, #FFE85C);
  color: var(--lm-ink, #18170F);
  border: 1px solid var(--lm-ink, #18170F);
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  vertical-align: middle;
  cursor: help;
}

/* M45: scheduled-order pill on owner order cards */
.lm-orders-type-pill--scheduled {
  background: var(--lm-butter, #FFE85C);
  color: var(--lm-ink, #18170F);
  border-color: var(--lm-ink, #18170F);
  font-weight: 700;
}

/* M116: Square POS sync badge on owner order cards */
.lm-orders-square-badge {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 2px 8px;
  border-radius: 999px;
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.02em;
  text-transform: uppercase;
  border: 1px solid transparent;
  cursor: help;
  vertical-align: middle;
}
.lm-orders-square-badge--synced {
  background: #E8F8EE;
  color: #1A6D3A;
  border-color: #1A6D3A;
}
.lm-orders-square-badge--pending {
  background: #FFF6E0;
  color: #8A6A12;
  border-color: #C9A23B;
}
.lm-orders-square-badge--failed {
  background: #FDECEC;
  color: #9A1F1F;
  border-color: #9A1F1F;
}
.lm-orders-square-retry-btn {
  color: #9A1F1F;
  border-color: #9A1F1F;
}
.lm-orders-meta--scheduled {
  color: var(--lm-ink, #18170F);
  font-weight: 600;
  margin-top: 4px;
}
.lm-orders-meta--scheduled strong {
  font-weight: 700;
}

.lm-orders-meta {
  margin: 6px 0 0 0;
  font-size: 13px;
  color: var(--lm-text-2);
}

.lm-orders-addr {
  margin: 4px 0 0 0;
  font-size: 13px;
  color: var(--lm-text-2);
}

.lm-orders-note {
  margin: 8px 0 0 0;
  padding: 8px 10px;
  background: var(--lm-butter-soft);
  color: var(--lm-butter-ink);
  border-radius: 6px;
  font-size: 13px;
}

.lm-orders-total {
  text-align: right;
  flex-shrink: 0;
  font-variant-numeric: tabular-nums;
}

.lm-orders-total-amount {
  font-size: 22px;
  font-weight: 800;
  font-family: 'Bricolage Grotesque', sans-serif;
  line-height: 1;
  color: var(--lm-ink);
}

.lm-orders-total-count {
  font-size: 11px;
  margin-top: 2px;
  color: var(--lm-text-muted);
}

/* Item list */
.lm-orders-items {
  list-style: none;
  padding: 0;
  margin: 12px 0 0 0;
  font-size: 14px;
}

.lm-orders-item-row {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  padding: 2px 0;
  color: var(--lm-ink);
}

.lm-orders-item-name {
  flex: 1;
  min-width: 0;
}

.lm-orders-item-price {
  font-variant-numeric: tabular-nums;
  color: var(--lm-text-2);
  flex-shrink: 0;
}

.lm-orders-mods {
  font-size: 12px;
  margin-top: 2px;
  color: var(--lm-text-muted);
}

/* Foot row */
.lm-orders-foot {
  display: flex;
  justify-content: space-between;
  margin-top: 12px;
  padding-top: 10px;
  border-top: 1px solid var(--lm-surface-3);
  font-size: 13px;
}

.lm-orders-foot-totals {
  color: var(--lm-text-2);
  font-variant-numeric: tabular-nums;
}

/* Refunded row */
.lm-orders-refunded-row {
  display: flex;
  justify-content: space-between;
  margin-top: 6px;
  padding: 8px 10px;
  background: var(--lm-danger-soft);
  border-radius: 6px;
  font-size: 13px;
  font-variant-numeric: tabular-nums;
}

.lm-orders-refunded-label {
  color: var(--lm-tomato);
  font-weight: 600;
}

.lm-orders-refunded-amount {
  color: var(--lm-tomato);
  font-weight: 700;
}

/* Actions */
.lm-orders-actions {
  display: flex;
  gap: 8px;
  margin-top: 12px;
  flex-wrap: wrap;
}

.lm-orders-reject-btn,
.btn.lm-orders-reject-btn {
  color: var(--lm-tomato);
}

.lm-orders-refund-btn,
.btn.lm-orders-refund-btn {
  color: var(--lm-tomato);
  border-color: var(--lm-tomato);
}

/* Empty */
.lm-orders-empty {
  text-align: center;
  padding: 40px 16px;
  background: var(--lm-surface);
  border: 1px dashed var(--lm-line);
  border-radius: 14px;
}

.lm-orders-empty-title {
  margin: 0 0 6px 0;
  color: var(--lm-text-2);
  font-weight: 600;
}

.lm-orders-empty-sub {
  margin: 0;
  color: var(--lm-text-muted);
  font-size: 13px;
}

/* Refund modal */
.lm-orders-refund-modal {
  max-width: 420px;
}

.lm-orders-refund-modal-title {
  margin: 0;
  font-family: 'Bricolage Grotesque', sans-serif;
  font-weight: 700;
  font-size: 20px;
  color: var(--lm-ink);
}

.lm-orders-refund-modal-meta {
  margin: 0 0 12px 0;
  font-size: 13px;
  color: var(--lm-text-2);
}

.lm-orders-refund-modal-label {
  display: block;
  font-size: 13px;
  font-weight: 600;
  color: var(--lm-ink);
  margin: 12px 0 4px 0;
}

.lm-orders-refund-modal-label:first-of-type {
  margin-top: 0;
}

.lm-orders-refund-modal-input {
  width: 100%;
  font-variant-numeric: tabular-nums;
}

.lm-orders-refund-modal-hint {
  margin: 4px 0 0 0;
  font-size: 12px;
  color: var(--lm-text-muted);
}

.lm-orders-refund-modal-foot {
  display: flex;
  gap: 8px;
  justify-content: flex-end;
}

.lm-orders-refund-modal-confirm,
.btn.lm-orders-refund-modal-confirm {
  background: var(--lm-tomato);
  color: #fff;
  border-color: var(--lm-tomato);
}

.lm-orders-refund-modal-confirm:hover,
.btn.lm-orders-refund-modal-confirm:hover {
  background: var(--lm-tomato-deep);
  border-color: var(--lm-tomato-deep);
}

/* Flash animation when new order arrives */
.lm-order-flash {
  animation: lm-order-flash-anim 1.6s ease-out;
}

@keyframes lm-order-flash-anim {
  0%   { box-shadow: 0 0 0 0 var(--lm-butter), 0 1px 0 rgba(24, 23, 15, 0.04); background: var(--lm-butter-soft); }
  40%  { box-shadow: 0 0 0 6px rgba(255, 232, 92, 0.45), 0 1px 0 rgba(24, 23, 15, 0.04); background: var(--lm-butter-soft); }
  100% { box-shadow: 0 1px 0 rgba(24, 23, 15, 0.04); background: var(--lm-surface); }
}

/* Skeleton card variant */
.lm-orders-card.lm-skel-card {
  border-left-color: var(--lm-surface-3);
}

/* Responsive — mobile tightening */
@media (max-width: 580px) {
  .lm-orders-head { padding: 16px; }
  .lm-orders-title { font-size: 24px; }
  .lm-orders-card { padding: 14px; }
  .lm-orders-total-amount { font-size: 19px; }
  .lm-orders-chip { padding: 7px 12px; font-size: 12px; }
}

@media (max-width: 390px) {
  .lm-orders-card-head { flex-direction: column; align-items: stretch; }
  .lm-orders-total { text-align: left; }
  .lm-orders-actions .btn { flex: 1; min-width: 0; }
}

/* =========================================================================
   M28 — Owner menu manager
   ========================================================================= */

.lm-menu-shell {
  max-width: 1080px;
  margin: 0 auto;
  display: flex;
  flex-direction: column;
  gap: 16px;
}

.lm-menu-head {
  background: var(--lm-surface);
  border: 1px solid var(--lm-line);
  border-radius: 14px;
  padding: 20px;
  box-shadow: 0 1px 0 rgba(24, 23, 15, 0.04);
}

.lm-menu-head-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
}

.lm-menu-title {
  margin: 0;
  font-family: 'Bricolage Grotesque', sans-serif;
  font-weight: 700;
  font-size: 28px;
  color: var(--lm-ink);
  letter-spacing: -0.01em;
}

.lm-menu-sub {
  margin: 4px 0 0 0;
  font-size: 13px;
  color: var(--lm-text-2);
}

/* Top tabs */
.lm-menu-tabs {
  margin-top: 14px;
  display: flex;
  gap: 6px;
  border-bottom: 1px solid var(--lm-line);
  flex-wrap: wrap;
}

.lm-menu-tab {
  background: transparent;
  color: var(--lm-text-2);
  border: 0;
  border-bottom: 3px solid transparent;
  padding: 10px 14px;
  font-family: 'Inter', sans-serif;
  font-size: 14px;
  font-weight: 600;
  cursor: pointer;
  transition: color .14s ease, border-color .14s ease;
  margin-bottom: -1px;
}

.lm-menu-tab:hover {
  color: var(--lm-ink);
}

.lm-menu-tab:focus-visible {
  outline: 2px solid var(--lm-ink);
  outline-offset: -4px;
  border-radius: 4px;
}

.lm-menu-tab--active {
  color: var(--lm-ink);
  border-bottom-color: var(--lm-butter);
}

/* Section heads */
.lm-menu-section-head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
  margin-bottom: 14px;
}

.lm-menu-section-title {
  margin: 0;
  font-family: 'Bricolage Grotesque', sans-serif;
  font-weight: 700;
  font-size: 20px;
  color: var(--lm-ink);
}

/* Items tab head */
.lm-menu-items-head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
  margin-bottom: 14px;
}
.lm-menu-items-head-actions {
  display: flex;
  gap: 8px;
  align-items: center;
  flex-wrap: wrap;
}

.lm-menu-cat-chips {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
}

.lm-menu-cat-chip {
  background: var(--lm-cream);
  color: var(--lm-ink);
  border: 1px solid var(--lm-line);
  padding: 7px 13px;
  border-radius: 999px;
  font-family: 'Inter', sans-serif;
  font-size: 13px;
  font-weight: 600;
  cursor: pointer;
  transition: background .14s ease, color .14s ease, border-color .14s ease;
}

.lm-menu-cat-chip:hover { border-color: var(--lm-ink); }
.lm-menu-cat-chip:focus-visible { outline: 2px solid var(--lm-ink); outline-offset: 2px; }

.lm-menu-cat-chip--active {
  background: var(--lm-ink);
  color: var(--lm-butter);
  border-color: var(--lm-ink);
}

/* Item grid */
.lm-menu-items-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  gap: 16px;
}

.lm-menu-item-card {
  background: var(--lm-surface);
  border: 1px solid var(--lm-line);
  border-radius: 14px;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  box-shadow: 0 1px 0 rgba(24, 23, 15, 0.04);
}

.lm-menu-item-photo {
  width: 100%;
  aspect-ratio: 4/3;
  background: var(--lm-surface-3);
  overflow: hidden;
}

.lm-menu-item-photo img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.lm-menu-photo-empty {
  width: 100%;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--lm-surface-3);
  color: var(--lm-text-muted);
  font-size: 13px;
  font-weight: 600;
}

.lm-menu-item-body {
  padding: 14px;
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.lm-menu-item-head {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 8px;
}

.lm-menu-item-head-main { flex: 1; min-width: 0; }

.lm-menu-item-name {
  margin: 0;
  font-family: 'Bricolage Grotesque', sans-serif;
  font-weight: 700;
  font-size: 16px;
  color: var(--lm-ink);
}

.lm-menu-item-meta {
  margin: 2px 0 0 0;
  color: var(--lm-text-2);
  font-size: 12px;
}

.lm-menu-item-desc {
  margin: 0;
  font-size: 13px;
  color: var(--lm-text-muted);
}

.lm-menu-item-actions {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
  margin-top: 4px;
}

/* Status dot */
.lm-menu-status-dot {
  width: 10px;
  height: 10px;
  border-radius: 999px;
  flex-shrink: 0;
  margin-top: 6px;
}

.lm-menu-status-dot--on  { background: var(--lm-basil); }
.lm-menu-status-dot--off { background: var(--lm-tomato); }

/* Danger button text color (delete actions) */
.lm-menu-danger-btn,
.btn.lm-menu-danger-btn {
  color: var(--lm-tomato);
}

/* Empty state */
.lm-menu-empty {
  background: var(--lm-surface);
  border: 1px dashed var(--lm-line);
  border-radius: 14px;
  padding: 32px 20px;
  text-align: center;
  color: var(--lm-text-2);
}

.lm-menu-empty-title {
  margin: 0 0 12px 0;
  font-weight: 600;
}

.lm-menu-hint {
  margin: 0;
  font-size: 13px;
  color: var(--lm-text-muted);
  line-height: 1.4;
}

/* Categories tab */
.lm-menu-cat-list {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.lm-menu-cat-row {
  background: var(--lm-surface);
  border: 1px solid var(--lm-line);
  border-radius: 12px;
  padding: 14px 16px;
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
}

.lm-menu-cat-row-main {
  display: flex;
  align-items: center;
  gap: 10px;
  min-width: 0;
  flex: 1;
}

.lm-menu-cat-handle {
  color: var(--lm-text-muted);
  font-size: 18px;
  user-select: none;
  cursor: grab;
}

.lm-menu-cat-name {
  color: var(--lm-ink);
  font-family: 'Bricolage Grotesque', sans-serif;
  font-weight: 700;
}

.lm-menu-cat-desc {
  font-size: 12px;
  color: var(--lm-text-muted);
  margin-top: 2px;
}

.lm-menu-cat-row-actions {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-wrap: wrap;
}

.lm-menu-cat-count {
  font-size: 12px;
  color: var(--lm-text-muted);
  margin-right: 4px;
}

/* New-cat / new-group form card */
.lm-menu-form-card {
  background: var(--lm-surface);
  border: 1px solid var(--lm-line);
  border-radius: 12px;
  padding: 14px 16px;
  margin-bottom: 14px;
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.lm-menu-form-actions {
  display: flex;
  gap: 8px;
}

.lm-menu-row-fields {
  display: flex;
  gap: 12px;
  flex-wrap: wrap;
}

.lm-menu-row-fields > .lm-menu-field { flex: 1; min-width: 120px; }

.lm-menu-field {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.lm-menu-field > label {
  font-size: 13px;
  font-weight: 600;
  color: var(--lm-ink);
}

.lm-menu-sm-label {
  font-size: 12px;
}

.lm-menu-req {
  color: var(--lm-tomato);
  font-weight: 700;
}

.lm-menu-checkbox-row {
  flex-direction: row;
  align-items: center;
  gap: 8px;
}

.lm-menu-checkbox-row label {
  margin: 0;
  font-weight: 500;
  font-size: 13px;
}

/* Inline rename form */
.lm-menu-inline-rename {
  flex-basis: 100%;
  margin-top: 12px;
  padding: 12px;
  background: var(--lm-cream);
  border: 1px solid var(--lm-line);
  border-radius: 10px;
  display: flex;
  flex-direction: column;
  gap: 8px;
}

/* Modifier groups */
.lm-menu-mod-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 14px;
}

@media (min-width: 880px) {
  .lm-menu-mod-grid { grid-template-columns: 1fr 1fr; }
}

.lm-menu-mod-group {
  background: var(--lm-surface);
  border: 1px solid var(--lm-line);
  border-radius: 14px;
  padding: 16px 18px;
  box-shadow: 0 1px 0 rgba(24, 23, 15, 0.04);
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.lm-menu-mod-head {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 12px;
  flex-wrap: wrap;
}

.lm-menu-mod-head-actions {
  display: flex;
  gap: 6px;
  flex-shrink: 0;
}

.lm-menu-mod-name {
  margin: 0;
  font-family: 'Bricolage Grotesque', sans-serif;
  font-weight: 700;
  font-size: 16px;
  color: var(--lm-ink);
}

.lm-menu-mod-meta {
  margin: 4px 0 0 0;
  font-size: 12px;
  color: var(--lm-text-muted);
}

.lm-menu-mod-options {
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.lm-menu-mod-option {
  display: grid;
  grid-template-columns: 1fr auto auto auto;
  gap: 8px;
  align-items: center;
}

.lm-menu-mod-option-name {
  width: 100%;
  min-width: 0;
}

.lm-menu-mod-option-price {
  display: flex;
  align-items: center;
  gap: 4px;
  font-size: 13px;
  color: var(--lm-text-2);
}

.lm-menu-mod-option-price-input {
  width: 80px;
  font-variant-numeric: tabular-nums;
}

.lm-menu-mod-option-confirm {
  margin-top: 4px;
}

.lm-menu-mod-new-form {
  display: grid;
  grid-template-columns: 1fr auto auto;
  gap: 8px;
  align-items: center;
  padding-top: 10px;
  border-top: 1px solid var(--lm-surface-3);
}

.lm-menu-mod-new-name { width: 100%; }

/* Item editor panel form */
.lm-menu-editor-head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 12px;
}

.lm-menu-editor-title {
  margin: 0;
  font-family: 'Bricolage Grotesque', sans-serif;
  font-weight: 700;
  font-size: 22px;
  color: var(--lm-ink);
}

.lm-menu-editor-form {
  display: flex;
  flex-direction: column;
  gap: 14px;
  margin-top: 16px;
}

.lm-menu-photo-row {
  display: flex;
  gap: 16px;
  align-items: flex-start;
  flex-wrap: wrap;
}

.lm-menu-photo-preview {
  width: 140px;
  height: 105px;
  border-radius: 10px;
  overflow: hidden;
  background: var(--lm-surface-3);
  flex-shrink: 0;
}

.lm-menu-photo-preview img {
  width: 100%; height: 100%; object-fit: cover; display: block;
}

.lm-menu-photo-controls {
  display: flex;
  flex-direction: column;
  gap: 6px;
  flex: 1;
  min-width: 200px;
}

.lm-menu-attach-chips {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
}

.lm-menu-attach-chip {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 6px 12px;
  background: var(--lm-cream);
  border: 1px solid var(--lm-line);
  border-radius: 999px;
  font-size: 13px;
  cursor: pointer;
  user-select: none;
}

.lm-menu-attach-chip input { margin: 0; }

.lm-menu-attach-chip--on {
  background: var(--lm-butter-soft);
  border-color: var(--lm-butter);
  color: var(--lm-butter-ink);
}

.lm-menu-attach-count {
  color: var(--lm-text-muted);
  font-size: 11px;
}

.lm-menu-editor-actions {
  display: flex;
  gap: 8px;
  margin-top: 4px;
}

/* Skeleton helpers for menu */
.lm-menu-skel-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 14px;
}

.lm-menu-skel-grid {
  /* uses lm-menu-items-grid styles */
}

.lm-menu-skel-card {
  background: var(--lm-surface);
  border: 1px solid var(--lm-line);
  border-radius: 14px;
  padding: 14px;
}

.lm-menu-skel-row-card {
  background: var(--lm-surface);
  border: 1px solid var(--lm-line);
  border-radius: 12px;
  padding: 14px 16px;
  margin-bottom: 8px;
}

/* Mobile tightening */
@media (max-width: 580px) {
  .lm-menu-head { padding: 16px; }
  .lm-menu-title { font-size: 24px; }
  .lm-menu-mod-option {
    grid-template-columns: 1fr;
    grid-auto-flow: row;
  }
  .lm-menu-mod-option-price { justify-self: start; }
  .lm-menu-mod-new-form { grid-template-columns: 1fr; }
  .lm-menu-photo-preview { width: 100%; height: 180px; }
}

@media (max-width: 390px) {
  .lm-menu-cat-row { flex-direction: column; align-items: stretch; }
  .lm-menu-cat-row-actions { justify-content: flex-end; }
}

/* =========================================================================
   M29.1 — Diner menuView hardening
   ========================================================================= */

.lm-diner-menu-wrap {
  max-width: 960px;
  margin: 0 auto;
  padding: 24px 20px 120px;
  color: var(--lm-ink);
  font-family: 'Inter', system-ui, sans-serif;
}

.lm-diner-menu-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 16px;
}

.lm-diner-menu-hero {
  background: var(--lm-surface);
  border: 1px solid var(--lm-line);
  border-radius: 18px;
  padding: 20px 22px;
  margin-bottom: 18px;
}

.lm-diner-menu-hero-title {
  font-family: 'Bricolage Grotesque', system-ui, sans-serif;
  font-size: 28px;
  font-weight: 800;
  margin: 0 0 4px;
  color: var(--lm-ink);
  letter-spacing: -0.01em;
}

.lm-diner-menu-hero-sub {
  margin: 0;
  color: var(--lm-text-muted);
  font-size: 14px;
}

/* Sticky category tab strip */
.lm-diner-cat-tabs {
  position: sticky;
  top: 0;
  z-index: 30;
  display: flex;
  gap: 8px;
  flex-wrap: nowrap;
  overflow-x: auto;
  background: var(--lm-cream);
  border-bottom: 1px solid var(--lm-line);
  padding: 10px 4px;
  margin: 0 -4px 18px;
  scrollbar-width: thin;
}

.lm-diner-cat-tabs::-webkit-scrollbar { height: 6px; }
.lm-diner-cat-tabs::-webkit-scrollbar-thumb {
  background: var(--lm-line);
  border-radius: 999px;
}

.lm-diner-cat-tabs--skel { pointer-events: none; }

.lm-diner-cat-tab {
  flex: 0 0 auto;
  padding: 8px 16px;
  background: var(--lm-surface);
  border: 1px solid var(--lm-line);
  border-radius: 999px;
  font-family: inherit;
  font-size: 14px;
  font-weight: 600;
  color: var(--lm-ink-soft);
  cursor: pointer;
  white-space: nowrap;
  transition: background 0.12s ease, color 0.12s ease, border-color 0.12s ease;
}

.lm-diner-cat-tab:hover {
  background: var(--lm-butter-soft);
  color: var(--lm-butter-ink);
  border-color: var(--lm-butter);
}

.lm-diner-cat-tab:focus-visible {
  outline: 2px solid var(--lm-butter);
  outline-offset: 2px;
}

.lm-diner-cat-tab--active {
  background: var(--lm-butter);
  color: var(--lm-butter-ink);
  border-color: var(--lm-butter);
}

.lm-diner-cat-tab-skel {
  width: 96px;
  height: 36px;
  border-radius: 999px;
  flex: 0 0 auto;
}

/* Sections */
.lm-diner-menu-section {
  margin-bottom: 28px;
  scroll-margin-top: 80px;
}

.lm-diner-menu-section-title {
  font-family: 'Bricolage Grotesque', system-ui, sans-serif;
  font-size: 22px;
  font-weight: 700;
  margin: 0 0 12px;
  color: var(--lm-ink);
  letter-spacing: -0.005em;
}

.lm-diner-menu-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
  gap: 14px;
}

/* Cards */
.lm-diner-menu-card {
  position: relative;
  background: var(--lm-surface);
  border: 1px solid var(--lm-line);
  border-radius: 16px;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  cursor: pointer;
  transition: transform 0.12s ease, box-shadow 0.12s ease, border-color 0.12s ease;
}

.lm-diner-menu-card:hover {
  transform: translateY(-1px);
  border-color: var(--lm-butter);
  box-shadow: 0 6px 18px rgba(24, 23, 15, 0.06);
}

.lm-diner-menu-card:focus-visible {
  outline: 2px solid var(--lm-butter);
  outline-offset: 2px;
}

.lm-diner-menu-card-photo {
  width: 100%;
  aspect-ratio: 16 / 10;
  object-fit: cover;
  background: var(--lm-surface-3);
  display: block;
}

.lm-diner-menu-card-photo--empty {
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: 'Bricolage Grotesque', system-ui, sans-serif;
  font-size: 44px;
  font-weight: 800;
  color: var(--lm-butter-ink);
  background: var(--lm-butter-soft);
}

.lm-diner-menu-card--no-photo .lm-diner-menu-card-photo--empty {
  aspect-ratio: 16 / 7;
  font-size: 36px;
}

.lm-diner-menu-card-body {
  padding: 12px 14px 16px;
  display: flex;
  flex-direction: column;
  gap: 6px;
  flex: 1;
}

.lm-diner-menu-card-name {
  font-family: 'Bricolage Grotesque', system-ui, sans-serif;
  font-size: 16px;
  font-weight: 700;
  margin: 0;
  color: var(--lm-ink);
  line-height: 1.25;
}

.lm-diner-menu-card-desc {
  font-size: 13px;
  color: var(--lm-text-2);
  margin: 0;
  line-height: 1.4;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.lm-diner-menu-price {
  font-size: 15px;
  font-weight: 700;
  color: var(--lm-ink);
  margin-top: auto;
  padding-top: 4px;
}

.lm-diner-menu-price--deal {
  display: flex;
  align-items: baseline;
  gap: 8px;
}

.lm-diner-menu-price-now {
  color: var(--lm-tomato);
  font-weight: 800;
}

.lm-diner-menu-price-was {
  font-size: 13px;
  font-weight: 500;
  color: var(--lm-text-muted);
  text-decoration: line-through;
}

.lm-diner-menu-badges {
  position: absolute;
  top: 10px;
  left: 10px;
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  pointer-events: none;
}

.lm-diner-menu-badge {
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.04em;
  padding: 4px 8px;
  border-radius: 999px;
  text-transform: uppercase;
  background: var(--lm-ink);
  color: var(--lm-cream);
}

.lm-diner-menu-badge--featured {
  background: var(--lm-butter);
  color: var(--lm-butter-ink);
}

.lm-diner-menu-badge--flash {
  background: var(--lm-tomato);
  color: #fff;
}

.lm-diner-menu-countdown {
  font-size: 11px;
  font-weight: 600;
  color: var(--lm-tomato);
  margin-top: 2px;
}

.lm-diner-menu-card-add {
  position: absolute;
  bottom: 10px;
  right: 10px;
  width: 36px;
  height: 36px;
  border-radius: 50%;
  border: none;
  background: var(--lm-ink);
  color: var(--lm-butter);
  font-size: 22px;
  font-weight: 700;
  line-height: 1;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: transform 0.12s ease, background 0.12s ease;
}

.lm-diner-menu-card-add:hover {
  background: var(--lm-tomato);
  color: #fff;
  transform: scale(1.08);
}

.lm-diner-menu-card-add:focus-visible {
  outline: 2px solid var(--lm-butter);
  outline-offset: 2px;
}

/* Skeleton card */
.lm-diner-menu-card-skel {
  background: var(--lm-surface);
  border: 1px solid var(--lm-line);
  border-radius: 16px;
  overflow: hidden;
}

.lm-diner-menu-card-skel-photo {
  width: 100%;
  aspect-ratio: 16 / 10;
}

.lm-diner-menu-card-skel-body {
  padding: 12px 14px 16px;
  display: flex;
  flex-direction: column;
  gap: 8px;
}

/* Empty / error helpers */
.lm-diner-menu-empty {
  background: var(--lm-surface);
  border: 1px dashed var(--lm-line);
  border-radius: 14px;
  padding: 28px 20px;
  text-align: center;
  color: var(--lm-text-muted);
  font-size: 14px;
}

.lm-diner-menu-empty-hint {
  color: var(--lm-text-muted);
  font-size: 13px;
  margin: 0;
  padding: 8px 4px;
}

/* Menu-wide flash banner */
.lm-diner-flash-banner {
  background: linear-gradient(135deg, var(--lm-tomato), #ff7d5b);
  color: #fff;
  border-radius: 14px;
  padding: 14px 16px;
  margin-bottom: 16px;
  box-shadow: 0 4px 14px rgba(255, 75, 43, 0.18);
}

.lm-diner-flash-banner-title {
  display: block;
  font-family: 'Bricolage Grotesque', system-ui, sans-serif;
  font-size: 16px;
  font-weight: 800;
}

.lm-diner-flash-banner-desc {
  font-size: 13px;
  opacity: 0.95;
  margin-top: 2px;
}

.lm-diner-flash-banner-countdown {
  font-size: 12px;
  font-weight: 600;
  margin-top: 4px;
  opacity: 0.95;
}

/* NFC tap-context banners */
.lm-diner-nfc-flash {
  border-radius: 14px;
  padding: 12px 14px;
  margin-bottom: 14px;
  display: flex;
  align-items: flex-start;
  gap: 10px;
  border: 1px solid var(--lm-line);
}

.lm-diner-nfc-flash--awarded {
  background: var(--lm-basil-light);
  border-color: var(--lm-basil);
}

.lm-diner-nfc-flash--nudge {
  background: var(--lm-butter-soft);
  border-color: var(--lm-butter);
}

.lm-diner-nfc-flash-title {
  display: block;
  font-family: 'Bricolage Grotesque', system-ui, sans-serif;
  font-size: 15px;
  font-weight: 700;
  color: var(--lm-ink);
}

.lm-diner-nfc-flash-sub {
  font-size: 13px;
  color: var(--lm-ink-soft);
  margin-top: 2px;
}

/* Cart bar */
.lm-diner-cart-bar {
  position: fixed;
  left: 50%;
  bottom: 16px;
  transform: translateX(-50%);
  background: var(--lm-ink);
  color: var(--lm-butter);
  border-radius: 999px;
  padding: 12px 20px;
  display: flex;
  align-items: center;
  gap: 12px;
  box-shadow: 0 8px 24px rgba(24, 23, 15, 0.24);
  font-family: 'Inter', system-ui, sans-serif;
  font-weight: 600;
  font-size: 14px;
  z-index: 40;
  cursor: pointer;
  border: none;
}

.lm-diner-cart-bar:hover { background: var(--lm-tomato); color: #fff; }
.lm-diner-cart-bar:focus-visible { outline: 2px solid var(--lm-butter); outline-offset: 2px; }
.lm-diner-cart-bar[hidden] { display: none !important; }

/* Mobile tuning */
@media (max-width: 580px) {
  .lm-diner-menu-wrap { padding: 16px 14px 100px; }
  .lm-diner-menu-hero { padding: 16px; }
  .lm-diner-menu-hero-title { font-size: 22px; }
  .lm-diner-menu-grid { grid-template-columns: 1fr 1fr; gap: 10px; }
  .lm-diner-menu-card-name { font-size: 14px; }
  .lm-diner-menu-card-desc { font-size: 12px; -webkit-line-clamp: 2; }
  .lm-diner-menu-price { font-size: 14px; }
  .lm-diner-menu-section-title { font-size: 19px; }
  .lm-diner-cat-tab { padding: 7px 12px; font-size: 13px; }
  .lm-diner-menu-card-add { width: 32px; height: 32px; font-size: 20px; }
}

@media (max-width: 390px) {
  .lm-diner-menu-grid { grid-template-columns: 1fr; }
  .lm-diner-menu-card-photo { aspect-ratio: 16 / 9; }
  .lm-diner-menu-card--no-photo .lm-diner-menu-card-photo--empty { aspect-ratio: 16 / 6; }
  .lm-diner-menu-hero-title { font-size: 20px; }
}

/* =========================================================================
   M29.2 — Diner checkoutView hardening
   ========================================================================= */

.lm-diner-checkout-wrap {
  max-width: 720px;
  margin: 0 auto;
  padding: 20px 18px 80px;
  font-family: 'Inter', system-ui, sans-serif;
  color: var(--lm-ink);
}

.lm-diner-checkout-back {
  background: transparent;
  border: none;
  color: var(--lm-ink-soft);
  font-family: inherit;
  font-size: 14px;
  font-weight: 600;
  padding: 6px 10px;
  border-radius: 8px;
  cursor: pointer;
  margin-bottom: 8px;
}
.lm-diner-checkout-back:hover { background: var(--lm-surface-3); color: var(--lm-ink); }
.lm-diner-checkout-back:focus-visible { outline: 2px solid var(--lm-butter); outline-offset: 2px; }

.lm-diner-checkout-title {
  font-family: 'Bricolage Grotesque', system-ui, sans-serif;
  font-size: 28px;
  font-weight: 800;
  letter-spacing: -0.01em;
  margin: 0 0 16px;
  color: var(--lm-ink);
}

.lm-diner-checkout-empty {
  background: var(--lm-surface);
  border: 1px dashed var(--lm-line);
  border-radius: 14px;
  padding: 32px 20px;
  text-align: center;
  color: var(--lm-text-muted);
  display: flex;
  flex-direction: column;
  gap: 14px;
  align-items: center;
}

/* Cards */
.lm-diner-checkout-card {
  background: var(--lm-surface);
  border: 1px solid var(--lm-line);
  border-radius: 14px;
  padding: 16px 18px;
  margin-bottom: 14px;
}

.lm-diner-checkout-card-title {
  font-family: 'Bricolage Grotesque', system-ui, sans-serif;
  font-size: 17px;
  font-weight: 700;
  margin: 0 0 12px;
  color: var(--lm-ink);
}

.lm-diner-checkout-muted {
  color: var(--lm-text-muted);
  font-weight: 500;
}

/* M43: small help text under inputs */
.lm-diner-checkout-help {
  font-size: 11.5px;
  color: var(--lm-ink-soft);
  margin: 4px 2px 0;
}

/* M43: Save-my-account checkbox in checkout */
.lm-diner-checkout-save-account {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  margin-top: 10px;
  padding: 12px;
  background: var(--lm-butter-soft, #FFF4A8);
  border: 1.5px solid var(--lm-ink);
  border-radius: 12px;
  cursor: pointer;
}
.lm-diner-checkout-save-account input[type="checkbox"] {
  margin-top: 3px;
  width: 16px;
  height: 16px;
  accent-color: var(--lm-ink);
}
.lm-diner-checkout-save-account span {
  display: flex;
  flex-direction: column;
  gap: 2px;
  font-size: 13px;
  color: var(--lm-ink);
}
.lm-diner-checkout-save-account strong { font-weight: 700; }
.lm-diner-checkout-save-account small {
  font-size: 11.5px;
  color: var(--lm-ink-soft);
  font-weight: 500;
}

.lm-diner-checkout-card--skel {
  /* skeletons are absolute siblings of the populated layout — same outer chrome */
}

.lm-diner-checkout-skel-row {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
}

/* Pill buttons (fulfillment, tip, pay method) */
.lm-diner-checkout-pills {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.lm-diner-checkout-pill {
  background: var(--lm-cream);
  color: var(--lm-ink-soft);
  border: 1px solid var(--lm-line);
  padding: 8px 14px;
  border-radius: 999px;
  font-family: inherit;
  font-size: 14px;
  font-weight: 600;
  cursor: pointer;
  transition: background 0.12s ease, color 0.12s ease, border-color 0.12s ease;
}
.lm-diner-checkout-pill:hover {
  background: var(--lm-butter-soft);
  border-color: var(--lm-butter);
  color: var(--lm-butter-ink);
}
.lm-diner-checkout-pill:focus-visible {
  outline: 2px solid var(--lm-butter);
  outline-offset: 2px;
}
.lm-diner-checkout-pill:disabled {
  opacity: 0.55;
  cursor: not-allowed;
}
.lm-diner-checkout-pill--active {
  background: var(--lm-butter);
  border-color: var(--lm-butter);
  color: var(--lm-butter-ink);
}

/* M118.18.3 — prominent two-up pickup / delivery selector at the top of
   checkout. Replaces the old small pill row so customers can't miss which
   fulfillment they're picking. */
.lm-diner-checkout-fulfill-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
}
@media (max-width: 420px) {
  .lm-diner-checkout-fulfill-grid { grid-template-columns: 1fr; }
}
.lm-diner-checkout-fulfill {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 4px;
  text-align: left;
  background: var(--lm-cream);
  color: var(--lm-ink-soft);
  border: 1.5px solid var(--lm-line);
  padding: 14px 16px;
  border-radius: 14px;
  font-family: inherit;
  cursor: pointer;
  transition: background 0.12s ease, color 0.12s ease, border-color 0.12s ease, transform 0.08s ease;
  min-height: 88px;
}
.lm-diner-checkout-fulfill:hover {
  background: var(--lm-butter-soft);
  border-color: var(--lm-butter);
  color: var(--lm-butter-ink);
}
.lm-diner-checkout-fulfill:active { transform: scale(0.99); }
.lm-diner-checkout-fulfill:focus-visible {
  outline: 2px solid var(--lm-butter);
  outline-offset: 2px;
}
.lm-diner-checkout-fulfill--active {
  background: var(--lm-butter);
  border-color: var(--lm-butter);
  color: var(--lm-butter-ink);
}
.lm-diner-checkout-fulfill-icon {
  font-size: 24px;
  line-height: 1;
}
.lm-diner-checkout-fulfill-label {
  font-size: 17px;
  font-weight: 700;
}
.lm-diner-checkout-fulfill-sub {
  font-size: 13px;
  font-weight: 500;
  opacity: 0.85;
}

/* Form fields */
.lm-diner-checkout-field {
  display: flex;
  flex-direction: column;
  gap: 4px;
  margin-bottom: 10px;
}
.lm-diner-checkout-field:last-child { margin-bottom: 0; }

.lm-diner-checkout-label {
  font-size: 13px;
  font-weight: 600;
  color: var(--lm-ink-soft);
}

.lm-diner-checkout-input {
  width: 100%;
  padding: 9px 12px;
  border: 1px solid var(--lm-line);
  border-radius: 10px;
  font-family: inherit;
  font-size: 15px;
  color: var(--lm-ink);
  background: var(--lm-cream);
  transition: border-color 0.12s ease, box-shadow 0.12s ease;
}
.lm-diner-checkout-input:focus {
  outline: none;
  border-color: var(--lm-butter);
  box-shadow: 0 0 0 3px var(--lm-butter-soft);
}

.lm-diner-checkout-textarea {
  resize: vertical;
  min-height: 60px;
  font-family: inherit;
}

.lm-diner-checkout-row {
  display: flex;
  gap: 10px;
}

.lm-diner-checkout-deliv {
  margin-top: 12px;
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.lm-diner-checkout-deliv-fee {
  margin: 6px 0 0;
  font-size: 13px;
  color: var(--lm-text-muted);
}

.lm-diner-checkout-custom-tip {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-top: 10px;
  color: var(--lm-ink-soft);
  font-weight: 600;
}

.lm-diner-checkout-hint {
  margin: 0 0 8px;
  font-size: 13px;
  color: var(--lm-text-muted);
}
.lm-diner-checkout-hint--small {
  font-size: 12px;
  margin: 8px 0 0;
}

/* Promo */
.lm-diner-checkout-promo-row {
  display: flex;
  gap: 8px;
  align-items: center;
}
.lm-diner-checkout-promo-input {
  flex: 1;
  text-transform: uppercase;
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  letter-spacing: 0.05em;
}
.lm-diner-checkout-promo-applied {
  background: var(--lm-basil-light);
  border: 1px solid var(--lm-basil);
  color: var(--lm-ink);
  padding: 8px 12px;
  border-radius: 10px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  font-size: 14px;
}
.lm-diner-checkout-link-btn {
  background: transparent;
  border: none;
  color: var(--lm-cocoa);
  font-family: inherit;
  font-size: 13px;
  font-weight: 600;
  cursor: pointer;
  padding: 4px 8px;
  border-radius: 6px;
  text-decoration: underline;
}
.lm-diner-checkout-link-btn:hover { background: rgba(0,0,0,0.04); color: var(--lm-ink); }

/* Order summary */
.lm-diner-checkout-summary-items {
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.lm-diner-checkout-summary-totals {
  border-top: 1px solid var(--lm-line);
  padding-top: 12px;
  margin-top: 12px;
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.lm-diner-checkout-row-between {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 12px;
  font-size: 14px;
}
.lm-diner-checkout-discount {
  color: var(--lm-basil);
  font-weight: 700;
}
.lm-diner-checkout-discount--flash {
  color: var(--lm-tomato);
}
.lm-diner-checkout-total {
  font-size: 17px;
  font-weight: 800;
  color: var(--lm-ink);
  margin-top: 6px;
}

/* Primary CTA (Place order / Pay $X) */
.lm-diner-checkout-cta {
  width: 100%;
  background: var(--lm-ink);
  color: var(--lm-butter);
  border: none;
  border-radius: 12px;
  padding: 14px 20px;
  font-family: 'Bricolage Grotesque', system-ui, sans-serif;
  font-size: 17px;
  font-weight: 700;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  transition: background 0.12s ease, transform 0.06s ease;
  margin-top: 4px;
}
.lm-diner-checkout-cta:hover {
  background: var(--lm-tomato);
  color: #fff;
}
.lm-diner-checkout-cta:focus-visible {
  outline: 2px solid var(--lm-butter);
  outline-offset: 2px;
}
.lm-diner-checkout-cta:disabled {
  opacity: 0.8;
  cursor: progress;
}
.lm-diner-checkout-cta--busy {
  background: var(--lm-ink-soft);
}
.lm-diner-checkout-cta-spinner {
  width: 16px;
  height: 16px;
  border-radius: 50%;
  border: 2px solid currentColor;
  border-right-color: transparent;
  animation: lm-diner-checkout-spin 0.7s linear infinite;
  display: inline-block;
}
.lm-diner-checkout-cta-spinner[hidden] { display: none; }
@keyframes lm-diner-checkout-spin {
  to { transform: rotate(360deg); }
}

/* Stripe element host */
#stripe-payment-element {
  background: var(--lm-cream);
  padding: 4px 0;
  border-radius: 8px;
  min-height: 40px;
}

/* Mobile */
@media (max-width: 580px) {
  .lm-diner-checkout-wrap { padding: 14px 14px 80px; }
  .lm-diner-checkout-title { font-size: 24px; }
  .lm-diner-checkout-card { padding: 14px 14px; }
  .lm-diner-checkout-row { flex-direction: row; gap: 8px; }
  .lm-diner-checkout-cta { padding: 13px 18px; font-size: 16px; }
}
@media (max-width: 390px) {
  .lm-diner-checkout-pill { padding: 7px 12px; font-size: 13px; }
  .lm-diner-checkout-promo-row { flex-direction: column; align-items: stretch; }
}

/* ===================================================== */
/* M30.1 — lm-diner-order-* (hardened order status view) */
/* ===================================================== */

.lm-diner-order-wrap {
  max-width: 640px;
  margin: 0 auto;
  padding: var(--sp-4);
}

.lm-diner-order-back {
  appearance: none;
  background: transparent;
  border: 0;
  color: var(--lm-ink);
  font: inherit;
  font-size: 14px;
  cursor: pointer;
  padding: 6px 10px 6px 0;
  margin-bottom: var(--sp-3);
  display: inline-flex;
  align-items: center;
  gap: 4px;
}
.lm-diner-order-back:hover { color: var(--lm-tomato); }

.lm-diner-order-card {
  background: var(--lm-surface, #FFFDF8);
  border: 1px solid var(--lm-line);
  border-radius: 14px;
  padding: var(--sp-4);
  margin-bottom: var(--sp-3);
}
.lm-diner-order-card--cancel {
  border-color: var(--lm-danger);
  background: var(--lm-danger-soft, #FCE4EC);
}

.lm-diner-order-card-head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: var(--sp-3);
  margin-bottom: var(--sp-3);
}

.lm-diner-order-card-title {
  font-family: 'Bricolage Grotesque', serif;
  font-weight: 700;
  font-size: 18px;
  color: var(--lm-ink);
  margin: 0 0 var(--sp-2);
}

/* ---------- Banner (just-paid) ---------- */
.lm-diner-order-banner {
  background: var(--lm-butter-soft, #FFF4A8);
  border: 2px solid var(--lm-ink);
  border-radius: 14px;
  box-shadow: 4px 4px 0 var(--lm-ink);
  padding: var(--sp-4);
  margin-bottom: var(--sp-4);
}
.lm-diner-order-banner-title {
  font-family: 'Bricolage Grotesque', serif;
  font-weight: 700;
  font-size: 20px;
  margin: 0 0 4px;
  color: var(--lm-ink);
}
.lm-diner-order-banner-sub {
  margin: 0;
  color: var(--lm-text-2, var(--lm-ink-soft));
  font-size: 14px;
}

/* ---------- Pill (status) ---------- */
.lm-diner-order-pill {
  display: inline-block;
  padding: 4px 12px;
  border-radius: 999px;
  font-size: 12px;
  font-weight: 700;
  border: 1px solid var(--lm-line);
  background: var(--lm-surface-2, #fff);
  color: var(--lm-ink);
  white-space: nowrap;
}
.lm-diner-order-pill--progress {
  background: var(--lm-butter-soft, #FFF4A8);
  border-color: var(--lm-butter, #FFE85C);
}
.lm-diner-order-pill--ready {
  background: var(--lm-butter, #FFE85C);
  border-color: var(--lm-ink);
  color: var(--lm-ink);
}
.lm-diner-order-pill--success {
  background: var(--lm-basil-light, #B8D9C4);
  border-color: var(--lm-basil);
  color: var(--lm-basil);
}
.lm-diner-order-pill--danger {
  background: var(--lm-danger-soft, #FCE4EC);
  border-color: var(--lm-danger);
  color: var(--lm-danger);
}
.lm-diner-order-pill--scheduled {
  background: var(--lm-butter-soft, #FFF4A8);
  border-color: var(--lm-ink);
  color: var(--lm-ink);
}

/* M92 — Scheduled-state banner + countdown */
.lm-diner-order-banner--scheduled {
  background: var(--lm-butter-soft, #FFF4A8);
}
.lm-diner-order-countdown {
  margin: 10px 0 0;
  font-family: 'Inter', sans-serif;
  font-size: 14px;
  color: var(--lm-ink);
  font-variant-numeric: tabular-nums;
}
.lm-diner-order-countdown strong {
  font-weight: 700;
  font-size: 15px;
}

/* ---------- M45: Scheduled-for badge ---------- */
.lm-diner-order-scheduled {
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 12px 0 4px;
  padding: 10px 14px;
  border-radius: 12px;
  background: var(--lm-butter-soft, #FFF4A8);
  border: 1px solid var(--lm-butter, #FFE85C);
  color: var(--lm-ink, #18170F);
}
.lm-diner-order-scheduled-icon {
  font-size: 18px;
  line-height: 1;
}
.lm-diner-order-scheduled-text {
  display: flex;
  flex-direction: column;
  gap: 2px;
  font-size: 14px;
  line-height: 1.25;
}
.lm-diner-order-scheduled-text strong {
  font-weight: 700;
  font-size: 12px;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--lm-ink-soft, #3B392C);
}

/* ---------- Timeline ---------- */
.lm-diner-order-timeline {
  display: flex;
  flex-direction: column;
  gap: 0;
}
.lm-diner-order-step {
  display: flex;
  align-items: flex-start;
  gap: 12px;
}
.lm-diner-order-step-dot {
  width: 28px;
  height: 28px;
  flex-shrink: 0;
  border-radius: 50%;
  background: var(--lm-cream);
  border: 2px solid var(--lm-ink);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 12px;
  font-weight: 800;
  color: var(--lm-ink-soft);
  box-shadow: 2px 2px 0 var(--lm-ink);
}
.lm-diner-order-step--done .lm-diner-order-step-dot {
  background: var(--lm-basil);
  color: #fff;
}
.lm-diner-order-step--current .lm-diner-order-step-dot {
  background: var(--lm-tomato);
  color: #fff;
}
.lm-diner-order-step-body { flex: 1; padding-top: 2px; }
.lm-diner-order-step-label {
  margin: 0;
  font-size: 14px;
  color: var(--lm-text-2, var(--lm-ink-soft));
}
.lm-diner-order-step--done .lm-diner-order-step-label,
.lm-diner-order-step--current .lm-diner-order-step-label {
  font-weight: 700;
  color: var(--lm-ink);
}
.lm-diner-order-step--current .lm-diner-order-step-label {
  color: var(--lm-tomato);
}
.lm-diner-order-step-eta {
  margin: 2px 0 0;
  font-size: 12px;
  color: var(--lm-text-2, var(--lm-ink-soft));
}
.lm-diner-order-connector {
  width: 2px;
  height: 20px;
  background: var(--lm-line);
  margin-left: 13px;
}
.lm-diner-order-connector--done { background: var(--lm-ink); }

/* ---------- Items + totals rows ---------- */
.lm-diner-order-items {
  display: flex;
  flex-direction: column;
  gap: var(--sp-2);
}
.lm-diner-order-totals {
  display: flex;
  flex-direction: column;
  gap: var(--sp-2);
}
.lm-diner-order-row {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: var(--sp-3);
  font-size: 14px;
}
.lm-diner-order-row--total {
  font-weight: 800;
  font-size: 16px;
  padding-top: var(--sp-2);
  border-top: 1px solid var(--lm-line);
}
.lm-diner-order-muted { color: var(--lm-text-2, var(--lm-ink-soft)); }

/* ---------- Cancel card ---------- */
.lm-diner-order-cancel-title {
  font-weight: 800;
  color: var(--lm-danger);
  margin: 0 0 4px;
  font-size: 16px;
}
.lm-diner-order-cancel-sub {
  margin: 0;
  color: var(--lm-text-2, var(--lm-ink-soft));
  font-size: 14px;
}

/* ---------- CTAs ---------- */
.lm-diner-order-cta {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  width: 100%;
  padding: 14px 18px;
  border-radius: 999px;
  border: 2px solid var(--lm-ink);
  font-family: 'Bricolage Grotesque', sans-serif;
  font-weight: 600;
  font-size: 15px;
  cursor: pointer;
  text-decoration: none;
  background: var(--lm-surface, #FFFDF8);
  color: var(--lm-ink);
  margin-top: var(--sp-3);
  transition: transform 0.08s ease, box-shadow 0.08s ease;
}
.lm-diner-order-cta:hover { transform: translateY(-1px); }
.lm-diner-order-cta:active { transform: translateY(0); }

.lm-diner-order-cta--wallet {
  background: var(--lm-ink);
  color: var(--lm-cream);
  box-shadow: 2px 2px 0 var(--lm-butter);
}
.lm-diner-order-cta--secondary {
  background: var(--lm-butter);
  color: var(--lm-ink);
  box-shadow: 2px 2px 0 var(--lm-ink);
}
.lm-diner-order-cta--ghost {
  background: transparent;
  border-color: var(--lm-line);
  color: var(--lm-ink);
  box-shadow: none;
  margin-top: var(--sp-2);
}
.lm-diner-order-cta--ghost:hover {
  background: var(--lm-surface-2, #fff);
  border-color: var(--lm-ink);
}

.lm-diner-order-cta--busy {
  opacity: 0.85;
  cursor: progress;
  pointer-events: none;
}
.lm-diner-order-cta-spinner {
  width: 14px;
  height: 14px;
  border-radius: 50%;
  border: 2px solid currentColor;
  border-right-color: transparent;
  animation: lm-diner-order-spin 0.7s linear infinite;
  display: inline-block;
}
@keyframes lm-diner-order-spin {
  to { transform: rotate(360deg); }
}

.lm-diner-order-fineprint {
  margin-top: var(--sp-2);
  text-align: center;
  font-size: 12px;
  color: var(--lm-text-2, var(--lm-ink-soft));
}

/* ---------- Skeleton primitives (used by order skeleton) ---------- */
.lm-diner-order-card--skel {
  background: var(--lm-cream);
  border-color: var(--lm-line);
}
.lm-skel-line--xs { width: 30%; height: 12px; margin-bottom: 12px; }
.lm-skel-line--sm { width: 60%; height: 12px; }
.lm-skel-line--md { width: 50%; height: 14px; margin-bottom: 10px; }
.lm-skel-pill {
  width: 70px;
  height: 22px;
  border-radius: 999px;
  background: var(--lm-surface-2, #fff);
  border: 1px solid var(--lm-line);
  animation: lm-skel-pulse 1.4s ease-in-out infinite;
}
.lm-skel-dot {
  width: 28px;
  height: 28px;
  border-radius: 50%;
  background: var(--lm-surface-2, #fff);
  border: 2px solid var(--lm-line);
  flex-shrink: 0;
  animation: lm-skel-pulse 1.4s ease-in-out infinite;
}
@keyframes lm-skel-pulse {
  0%, 100% { opacity: 1; }
  50%      { opacity: 0.55; }
}
.lm-diner-order-skel-head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: var(--sp-4);
}
.lm-diner-order-skel-timeline {
  display: flex;
  flex-direction: column;
  gap: 14px;
}
.lm-diner-order-skel-step {
  display: flex;
  align-items: center;
  gap: 12px;
}

/* ---------- Mobile ---------- */
@media (max-width: 580px) {
  .lm-diner-order-wrap { padding: var(--sp-3); }
  .lm-diner-order-card { padding: var(--sp-3); }
  .lm-diner-order-card-title { font-size: 17px; }
}
@media (max-width: 390px) {
  .lm-diner-order-card-head { flex-wrap: wrap; }
  .lm-diner-order-banner-title { font-size: 18px; }
  .lm-diner-order-cta { font-size: 14px; padding: 12px 14px; }
}

/* =============================================================
   M30.2 — Diner Me view (lm-diner-me-*)
   Hero greeting, lifetime stats, loyalty rows w/ rewards catalog,
   passport slot, referral card, notification toggles, order list,
   redeem modal + 15min countdown. Token-driven.
   ============================================================= */

.lm-diner-me-shell {
  max-width: 720px;
  margin: 0 auto;
  padding: var(--sp-4);
}
.lm-diner-me-topbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: var(--sp-4);
}

/* ---------- Anonymous-user sign-in prompt ---------- */
.lm-diner-me-signin-prompt {
  background: var(--lm-surface, #FFFDF8);
  border: 1.5px solid var(--lm-ink);
  box-shadow: 4px 4px 0 var(--lm-ink);
  border-radius: 10px;
  padding: var(--sp-5);
  text-align: center;
}
.lm-diner-me-signin-prompt__glyph {
  font-size: 40px;
  line-height: 1;
  margin-bottom: 10px;
}
.lm-diner-me-signin-prompt__title {
  margin: 0 0 6px 0;
  font-family: 'Bricolage Grotesque', serif;
  font-size: 22px;
  font-weight: 800;
  color: var(--lm-ink);
}
.lm-diner-me-signin-prompt__copy {
  margin: 0 0 16px 0;
  color: var(--lm-ink-soft);
  font-size: 14px;
}

/* ---------- Empty / no-profile state ---------- */
.lm-diner-me-empty {
  background: var(--lm-surface);
  border: 1.5px solid var(--lm-ink);
  box-shadow: 2px 2px 0 var(--lm-ink);
  border-radius: 10px;
  padding: var(--sp-5);
  text-align: center;
}
.lm-diner-me-empty__glyph { font-size: 36px; margin-bottom: 8px; }
.lm-diner-me-empty__title {
  margin: 0 0 6px 0;
  font-family: 'Bricolage Grotesque', serif;
  font-size: 20px;
  font-weight: 800;
}
.lm-diner-me-empty__copy { margin: 0; color: var(--lm-ink-soft); font-size: 14px; }

/* ---------- Hero ---------- */
.lm-diner-me-hero {
  background: var(--lm-butter-soft, #FFF4A8);
  border: 1.5px solid var(--lm-ink);
  box-shadow: 4px 4px 0 var(--lm-ink);
  border-radius: 12px;
  padding: var(--sp-5);
  margin-bottom: var(--sp-4);
}
.lm-diner-me-hero__title {
  margin: 0;
  font-family: 'Bricolage Grotesque', serif;
  font-size: 28px;
  font-weight: 800;
  color: var(--lm-ink);
  line-height: 1.1;
}
.lm-diner-me-hero__sub {
  margin: var(--sp-2) 0 0 0;
  color: var(--lm-ink-soft);
  font-size: 14px;
}
.lm-diner-me-stats {
  display: flex;
  flex-wrap: wrap;
  gap: var(--sp-3);
  margin-top: var(--sp-4);
}
.lm-diner-me-stat {
  min-width: 120px;
  flex: 1 1 120px;
  background: var(--lm-cream);
  border: 1.5px solid var(--lm-ink);
  box-shadow: 2px 2px 0 var(--lm-ink);
  padding: var(--sp-3);
  border-radius: 8px;
}
.lm-diner-me-stat__label {
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--lm-text-muted, var(--lm-ink-soft));
  font-weight: 600;
}
.lm-diner-me-stat__value {
  font-family: 'Bricolage Grotesque', serif;
  font-size: 22px;
  font-weight: 800;
  margin-top: 4px;
  color: var(--lm-ink);
  line-height: 1.1;
}

/* ---------- Generic me-card ---------- */
.lm-diner-me-card {
  background: var(--lm-surface, #FFFDF8);
  border: 1.5px solid var(--lm-ink);
  box-shadow: 2px 2px 0 var(--lm-ink);
  border-radius: 10px;
  padding: var(--sp-4);
  margin-bottom: var(--sp-4);
}
.lm-diner-me-card__title {
  margin: 0 0 var(--sp-3) 0;
  font-family: 'Bricolage Grotesque', serif;
  font-size: 18px;
  font-weight: 800;
  color: var(--lm-ink);
}

/* ---------- Loyalty ---------- */
.lm-diner-me-loyalty-stack {
  display: flex;
  flex-direction: column;
  gap: var(--sp-3);
}
.lm-diner-me-loyalty {
  border-left: 4px solid var(--lm-loyalty-accent, var(--lm-butter));
  padding: var(--sp-2) var(--sp-3);
}
.lm-diner-me-loyalty__head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
}
.lm-diner-me-loyalty__points {
  display: inline-block;
  padding: 3px 10px;
  background: var(--lm-loyalty-accent, var(--lm-butter));
  color: var(--lm-ink);
  font-weight: 700;
  border-radius: 999px;
  font-size: 13px;
}
.lm-diner-me-loyalty__bar {
  height: 6px;
  background: var(--lm-line);
  border-radius: 999px;
  margin-top: 8px;
  overflow: hidden;
}
.lm-diner-me-loyalty__bar-fill {
  height: 100%;
  background: var(--lm-loyalty-accent, var(--lm-butter));
  transition: width 0.4s ease;
}
.lm-diner-me-loyalty__next {
  margin-top: 4px;
  font-size: 12px;
  color: var(--lm-ink-soft);
}
.lm-diner-me-loyalty__next a { color: var(--lm-basil); font-weight: 600; }
.lm-diner-me-loyalty__earned {
  font-weight: 700;
  color: var(--lm-basil);
}
.lm-diner-me-loyalty__rewards {
  margin-top: 10px;
  padding-top: 10px;
  border-top: 1px dashed var(--lm-line);
}
.lm-diner-me-loyalty__rewards-title {
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  font-weight: 700;
  margin-bottom: 6px;
  color: var(--lm-ink);
}
.lm-diner-me-loyalty__rewards-stack {
  display: flex;
  flex-direction: column;
  gap: 6px;
}

/* ---------- Engagement nudge / 2x boost ---------- */
.lm-diner-me-engagement-nudge {
  margin-top: 6px;
  font-size: 12px;
  color: var(--lm-ink-soft);
}
.lm-diner-me-engagement-boost {
  display: inline-block;
  margin-top: 6px;
  padding: 3px 10px;
  background: var(--lm-tomato);
  color: var(--lm-cream);
  font-size: 11px;
  font-weight: 700;
  border-radius: 999px;
  letter-spacing: 0.02em;
}

/* ---------- Reward row ---------- */
.lm-diner-me-reward-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  padding: 8px 10px;
  border: 1px solid var(--lm-line);
  border-radius: 6px;
  background: var(--lm-surface);
}
.lm-diner-me-reward-row__body {
  flex: 1 1 auto;
  min-width: 0;
}
.lm-diner-me-reward-row__name {
  font-weight: 600;
  color: var(--lm-ink);
  font-size: 14px;
}
.lm-diner-me-reward-row__badge {
  font-size: 12px;
  color: var(--lm-text-muted, var(--lm-ink-soft));
  font-weight: 400;
}
.lm-diner-me-reward-row__desc {
  font-size: 12px;
  color: var(--lm-ink-soft);
  margin-top: 2px;
}
.lm-diner-me-reward-row__cta {
  text-align: right;
  white-space: nowrap;
}
.lm-diner-me-reward-row__cost {
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  color: var(--lm-ink);
  font-size: 13px;
  margin-bottom: 4px;
}
.lm-diner-me-reward-row__block {
  font-size: 11px;
  color: var(--lm-text-muted, var(--lm-ink-soft));
}

/* ---------- Passport slot ---------- */
.lm-diner-me-passport {
  border: 1.5px solid var(--lm-ink);
  box-shadow: 2px 2px 0 var(--lm-ink);
  border-radius: 10px;
  padding: var(--sp-4);
  margin-bottom: var(--sp-4);
}
.lm-diner-me-passport--active {
  background: var(--lm-surface);
  border-left: 4px solid var(--lm-basil);
}
.lm-diner-me-passport--upsell {
  background: var(--lm-butter-soft);
}
.lm-diner-me-passport__head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
}
.lm-diner-me-passport__copy {
  margin: 6px 0 8px 0;
  font-size: 14px;
  color: var(--lm-ink-soft);
}

/* ---------- Referral card ---------- */
.lm-diner-me-referral {
  background: var(--lm-butter-soft);
  border: 1.5px solid var(--lm-ink);
  box-shadow: 2px 2px 0 var(--lm-ink);
  border-radius: 10px;
  padding: var(--sp-4);
  margin-bottom: var(--sp-4);
}
.lm-diner-me-referral__head { }
.lm-diner-me-referral__title {
  font-family: 'Bricolage Grotesque', serif;
  font-size: 18px;
  font-weight: 800;
  color: var(--lm-ink);
}
.lm-diner-me-referral__copy {
  margin: 4px 0 10px 0;
  font-size: 14px;
  color: var(--lm-ink-soft);
}
.lm-diner-me-referral__row {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: center;
}
.lm-diner-me-referral__code {
  background: var(--lm-butter);
  border: 1.5px solid var(--lm-ink);
  border-radius: 6px;
  padding: 8px 12px;
  font-family: 'JetBrains Mono', 'Courier New', monospace;
  font-size: 15px;
  font-weight: 700;
  letter-spacing: 0.04em;
  color: var(--lm-ink);
  user-select: all;
}
.lm-diner-me-referral__stats {
  margin-top: 10px;
  font-size: 12px;
  color: var(--lm-ink-soft);
}
.lm-diner-me-referral__stats strong { color: var(--lm-ink); }

/* ---------- Notification toggles ---------- */
.lm-diner-me-toggle {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: var(--sp-2) 0;
  cursor: pointer;
  color: var(--lm-ink);
  font-size: 14px;
}
.lm-diner-me-toggle--bordered {
  border-top: 1px solid var(--lm-line);
}
.lm-diner-me-toggle input[type="checkbox"] {
  width: 18px;
  height: 18px;
  accent-color: var(--lm-basil);
  cursor: pointer;
}
.lm-diner-me-toggle-note {
  margin: var(--sp-2) 0 0 0;
  font-size: 11px;
  color: var(--lm-text-muted, var(--lm-ink-soft));
}

/* ---------- Orders ---------- */
.lm-diner-me-order-stack {
  display: flex;
  flex-direction: column;
  gap: var(--sp-2);
}
.lm-diner-me-order-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: var(--sp-2) var(--sp-3);
  border-radius: 8px;
  border: 1px solid var(--lm-line);
  background: var(--lm-surface);
  gap: var(--sp-3);
  cursor: pointer;
  transition: transform 0.12s ease, box-shadow 0.12s ease;
}
.lm-diner-me-order-row:hover {
  transform: translate(-1px, -1px);
  box-shadow: 2px 2px 0 var(--lm-ink);
}
.lm-diner-me-order-row__body {
  border-left: 3px solid var(--lm-order-accent, var(--lm-butter));
  padding-left: var(--sp-3);
  flex: 1 1 auto;
  min-width: 0;
}
.lm-diner-me-order-row__head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
}
.lm-diner-me-order-row__head strong {
  color: var(--lm-ink);
  font-size: 14px;
}
.lm-diner-me-order-row__total {
  font-size: 14px;
  color: var(--lm-ink-soft);
}
.lm-diner-me-order-row__meta {
  font-size: 12px;
  color: var(--lm-ink-soft);
  margin-top: 2px;
}
.lm-diner-me-orders-empty {
  text-align: center;
}
.lm-diner-me-orders-empty__glyph { font-size: 30px; margin-bottom: 6px; }
.lm-diner-me-orders-empty__copy {
  margin: 0;
  color: var(--lm-ink-soft);
  font-size: 14px;
}
.lm-diner-me-orders-empty__copy a { color: var(--lm-basil); font-weight: 600; }

/* ---------- Redeem modal ---------- */
.lm-diner-me-modal-overlay {
  position: fixed;
  inset: 0;
  background: rgba(24, 23, 15, 0.55);
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 9999;
  padding: 16px;
}
.lm-diner-me-modal-body {
  max-width: 420px;
  width: 100%;
  background: var(--lm-cream);
  border: 2px solid var(--lm-ink);
  box-shadow: 4px 4px 0 var(--lm-ink);
  border-radius: 10px;
  padding: var(--sp-4);
}
.lm-diner-me-modal-title {
  margin: 0 0 6px 0;
  font-family: 'Bricolage Grotesque', serif;
  font-size: 20px;
  font-weight: 800;
  color: var(--lm-ink);
}
.lm-diner-me-modal-copy {
  margin: 0 0 12px 0;
  color: var(--lm-ink-soft);
  font-size: 14px;
}
.lm-diner-me-modal-line {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 10px;
  background: var(--lm-surface);
  border: 1px dashed var(--lm-line);
  border-radius: 6px;
  margin-top: 8px;
  font-size: 14px;
  color: var(--lm-ink);
}
.lm-diner-me-modal-line:first-of-type { margin-top: 0; }
.lm-diner-me-modal-line strong { color: var(--lm-ink); }
.lm-diner-me-modal-note {
  margin: 10px 0 0;
  font-size: 11px;
  color: var(--lm-text-muted, var(--lm-ink-soft));
}
.lm-diner-me-modal-actions {
  display: flex;
  gap: 8px;
  justify-content: flex-end;
  margin-top: 14px;
}

/* Button busy state for redeem CTA */
.lm-diner-me-cta {
  position: relative;
}
.lm-diner-me-cta--busy {
  cursor: progress;
  opacity: 0.85;
}
.lm-diner-me-cta--busy .lm-diner-me-cta__label::after {
  content: '';
  display: inline-block;
  width: 11px;
  height: 11px;
  margin-left: 8px;
  border: 2px solid currentColor;
  border-top-color: transparent;
  border-radius: 50%;
  vertical-align: -1px;
  animation: lm-diner-me-spin 0.7s linear infinite;
}
@keyframes lm-diner-me-spin {
  to { transform: rotate(360deg); }
}

/* ---------- Redeem success ---------- */
.lm-diner-me-success {
  text-align: center;
}
.lm-diner-me-success__glyph {
  font-size: 40px;
  margin-bottom: 8px;
  line-height: 1;
}
.lm-diner-me-success__title {
  margin: 0 0 4px 0;
  font-family: 'Bricolage Grotesque', serif;
  font-size: 22px;
  font-weight: 800;
  color: var(--lm-ink);
}
.lm-diner-me-success__copy {
  margin: 0 0 16px 0;
  color: var(--lm-ink-soft);
  font-size: 14px;
}
.lm-diner-me-success__code {
  font-family: ui-monospace, Menlo, monospace;
  font-size: 34px;
  font-weight: 800;
  letter-spacing: 0.18em;
  padding: 14px;
  background: var(--lm-butter);
  border: 2px solid var(--lm-ink);
  border-radius: 8px;
  margin-bottom: 12px;
  color: var(--lm-ink);
}
.lm-diner-me-success__countdown {
  font-size: 14px;
  margin-bottom: 6px;
  color: var(--lm-ink);
}
.lm-diner-me-success__countdown strong {
  font-variant-numeric: tabular-nums;
  color: var(--lm-ink);
}
.lm-diner-me-success__expired {
  color: var(--lm-tomato);
  font-weight: 700;
}
.lm-diner-me-success__meta {
  font-size: 12px;
  color: var(--lm-ink-soft);
  margin-bottom: 12px;
}

/* ---------- Skeleton ---------- */
.lm-diner-me-skel { }
.lm-diner-me-skel-hero {
  background: var(--lm-butter-soft);
  border: 1.5px solid var(--lm-ink);
  box-shadow: 4px 4px 0 var(--lm-ink);
  border-radius: 12px;
  padding: var(--sp-5);
  margin-bottom: var(--sp-4);
}
.lm-diner-me-skel-stats {
  display: flex;
  flex-wrap: wrap;
  gap: var(--sp-3);
  margin-top: var(--sp-4);
}
.lm-diner-me-skel-stat {
  min-width: 120px;
  flex: 1 1 120px;
  height: 64px;
  background: var(--lm-cream);
  border: 1.5px solid var(--lm-ink);
  box-shadow: 2px 2px 0 var(--lm-ink);
  border-radius: 8px;
  animation: lm-skel-pulse 1.4s ease-in-out infinite;
}
.lm-diner-me-skel-card {
  background: var(--lm-surface);
  border: 1.5px solid var(--lm-ink);
  box-shadow: 2px 2px 0 var(--lm-ink);
  border-radius: 10px;
  padding: var(--sp-4);
  margin-bottom: var(--sp-4);
}
.lm-diner-me-skel-row {
  height: 44px;
  background: var(--lm-surface-2, #F4EFE4);
  border-radius: 8px;
  animation: lm-skel-pulse 1.4s ease-in-out infinite;
}

/* ---------- Mobile ---------- */
@media (max-width: 580px) {
  .lm-diner-me-shell { padding: var(--sp-3); }
  .lm-diner-me-hero { padding: var(--sp-4); }
  .lm-diner-me-hero__title { font-size: 24px; }
  .lm-diner-me-card { padding: var(--sp-3); }
  .lm-diner-me-passport { padding: var(--sp-3); }
  .lm-diner-me-referral { padding: var(--sp-3); }
  .lm-diner-me-stat { min-width: 0; flex: 1 1 calc(50% - var(--sp-3)); }
  .lm-diner-me-success__code { font-size: 28px; letter-spacing: 0.14em; }
}
@media (max-width: 390px) {
  .lm-diner-me-hero__title { font-size: 22px; }
  .lm-diner-me-stat__value { font-size: 20px; }
  .lm-diner-me-modal-body { padding: var(--sp-3); }
  .lm-diner-me-success__code { font-size: 24px; letter-spacing: 0.10em; }
  .lm-diner-me-referral__row { flex-direction: column; align-items: stretch; }
  .lm-diner-me-referral__row .btn { width: 100%; }
  .lm-diner-me-order-row { flex-wrap: wrap; }
}

/* =============================================================
   M31.1 — Diner Home view (lm-diner-home-*)
   Header (signed/anon), passport strip (3 states), streak strip
   (active/idle + freeze chip), live-now flash deals rail with pulse,
   featured carousel section, tenant list w/ skeleton + retry.
   ============================================================= */

.lm-diner-home-shell {
  max-width: 720px;
  margin: 0 auto;
}

/* ---------- Header ---------- */
.lm-diner-home-header {
  display: flex;
  align-items: center;
  margin-top: var(--sp-3);
}
.lm-diner-home-header--signed { justify-content: space-between; }
.lm-diner-home-header--anon { justify-content: space-between; gap: 12px; flex-wrap: wrap; }
.lm-diner-home-header__welcome { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.lm-diner-home-header__welcome strong { font-size: 14px; color: var(--lm-ink); font-weight: 700; }
.lm-diner-home-header__welcome span { font-size: 12px; color: var(--lm-ink-soft); }
.lm-diner-home-anon-pill {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 8px 14px;
  border-radius: 999px;
  border: 1.5px solid var(--lm-ink);
  background: var(--lm-butter);
  color: var(--lm-ink);
  font-weight: 700;
  font-size: 13px;
  cursor: pointer;
  box-shadow: 2px 2px 0 var(--lm-ink);
  transition: transform 0.1s;
}
.lm-diner-home-anon-pill:hover { transform: translate(-1px, -1px); box-shadow: 3px 3px 0 var(--lm-ink); }
.lm-diner-home-anon-pill:active { transform: translate(1px, 1px); box-shadow: 1px 1px 0 var(--lm-ink); }
.lm-diner-home-anon-nudge {
  margin-top: 10px;
  padding: 12px 14px;
  border: 1.5px solid var(--lm-ink);
  background: var(--lm-cream, #FBF7EE);
  border-radius: 14px;
  box-shadow: 2px 2px 0 var(--lm-ink);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}
.lm-diner-home-anon-nudge__body { display: flex; flex-direction: column; gap: 2px; min-width: 0; flex: 1; }
.lm-diner-home-anon-nudge__body strong { font-size: 13px; color: var(--lm-ink); }
.lm-diner-home-anon-nudge__body span { font-size: 12px; color: var(--lm-ink-soft); line-height: 1.35; }
.lm-diner-home-anon-nudge__actions { display: flex; align-items: center; gap: 6px; flex-shrink: 0; }
.lm-diner-home-anon-nudge__close {
  background: transparent;
  border: 0;
  font-size: 22px;
  line-height: 1;
  color: var(--lm-ink-soft);
  cursor: pointer;
  padding: 4px 8px;
  border-radius: 999px;
}
.lm-diner-home-anon-nudge__close:hover { background: rgba(0,0,0,0.05); color: var(--lm-ink); }
@media (max-width: 480px) {
  .lm-diner-home-anon-nudge { flex-direction: column; align-items: stretch; }
  .lm-diner-home-anon-nudge__actions { justify-content: flex-end; }
}
.lm-diner-home-header__greeting {
  font-size: 13px;
  color: var(--lm-ink-soft);
}
.lm-diner-home-header__greeting strong {
  color: var(--lm-ink);
  font-weight: 700;
}
.lm-diner-home-header__actions {
  display: flex;
  align-items: center;
  gap: 8px;
}
.lm-diner-home-header__points {
  display: inline-block;
  padding: 3px 10px;
  background: var(--lm-butter);
  color: var(--lm-ink);
  font-weight: 700;
  border-radius: 999px;
  font-size: 12px;
}

/* ---------- Passport strip (3 states) ---------- */
.lm-diner-home-passport {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--sp-3);
  width: 100%;
  border: 1.5px solid var(--lm-ink);
  box-shadow: 2px 2px 0 var(--lm-ink);
  border-radius: 10px;
  padding: var(--sp-3) var(--sp-4);
  margin-top: var(--sp-3);
  text-align: left;
  cursor: pointer;
  font-family: inherit;
  transition: transform 0.12s ease, box-shadow 0.12s ease;
}
.lm-diner-home-passport:hover {
  transform: translate(-1px, -1px);
  box-shadow: 3px 3px 0 var(--lm-ink);
}
.lm-diner-home-passport--active {
  background: var(--lm-basil-light, #B8D9C4);
}
.lm-diner-home-passport--launched {
  background: linear-gradient(135deg, var(--lm-butter) 0%, var(--lm-butter-soft) 100%);
}
.lm-diner-home-passport--waitlist {
  background: var(--lm-surface-2, #F4EFE4);
}
.lm-diner-home-passport__body { flex: 1 1 auto; min-width: 0; }
.lm-diner-home-passport__title {
  font-family: 'Bricolage Grotesque', serif;
  font-size: 16px;
  font-weight: 800;
  color: var(--lm-ink);
}
.lm-diner-home-passport__sub {
  font-size: 13px;
  margin-top: 2px;
  color: var(--lm-ink-soft);
}
.lm-diner-home-passport__chevron {
  font-size: 22px;
  color: var(--lm-ink);
  flex: 0 0 auto;
}

/* ---------- Streak strip ---------- */
.lm-diner-home-streak {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--sp-3);
  width: 100%;
  background: var(--lm-cream);
  border: 1.5px solid var(--lm-ink);
  box-shadow: 2px 2px 0 var(--lm-ink);
  border-radius: 10px;
  padding: var(--sp-3) var(--sp-4);
  margin-top: var(--sp-3);
  text-align: left;
  cursor: pointer;
  font-family: inherit;
  transition: transform 0.12s ease, box-shadow 0.12s ease;
}
.lm-diner-home-streak:hover {
  transform: translate(-1px, -1px);
  box-shadow: 3px 3px 0 var(--lm-ink);
}
.lm-diner-home-streak__body { flex: 1 1 auto; min-width: 0; }
.lm-diner-home-streak__head {
  display: flex;
  align-items: center;
  gap: 8px;
}
.lm-diner-home-streak__flame {
  font-size: 24px;
  line-height: 1;
}
.lm-diner-home-streak--active .lm-diner-home-streak__flame {
  color: var(--lm-tomato);
  animation: lm-diner-home-flame 1.4s ease-in-out infinite;
}
.lm-diner-home-streak--idle .lm-diner-home-streak__flame {
  color: var(--lm-cocoa);
  opacity: 0.55;
}
@keyframes lm-diner-home-flame {
  0%, 100% { transform: scale(1) rotate(-2deg); }
  50% { transform: scale(1.12) rotate(3deg); }
}
.lm-diner-home-streak__title {
  font-family: 'Bricolage Grotesque', serif;
  font-size: 16px;
  font-weight: 800;
  color: var(--lm-ink);
}
.lm-diner-home-streak__freeze {
  display: inline-block;
  padding: 2px 8px;
  background: var(--lm-butter-soft);
  color: var(--lm-ink-soft);
  font-weight: 700;
  font-size: 11px;
  border-radius: 999px;
}
.lm-diner-home-streak__sub {
  font-size: 13px;
  margin-top: 6px;
  color: var(--lm-ink-soft);
}
.lm-diner-home-streak__bar {
  margin-top: 8px;
  height: 6px;
  background: rgba(24, 23, 15, 0.08);
  border-radius: 3px;
  overflow: hidden;
}
.lm-diner-home-streak__bar-fill {
  height: 100%;
  background: linear-gradient(90deg, var(--lm-tomato) 0%, var(--lm-butter) 100%);
  transition: width 0.4s ease;
}
.lm-diner-home-streak__chevron {
  font-size: 22px;
  color: var(--lm-ink);
  flex: 0 0 auto;
}

/* ---------- Live-now flash deals ---------- */
.lm-diner-home-live {
  margin-top: var(--sp-4);
}
.lm-diner-home-live__head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0 var(--sp-1);
  margin-bottom: var(--sp-2);
}
.lm-diner-home-live__title {
  margin: 0;
  display: flex;
  align-items: center;
  gap: 8px;
  font-family: 'Bricolage Grotesque', serif;
  font-size: 18px;
  font-weight: 800;
  color: var(--lm-ink);
}
.lm-diner-home-live__pulse {
  display: inline-block;
  width: 10px;
  height: 10px;
  border-radius: 50%;
  background: var(--lm-tomato);
  box-shadow: 0 0 0 3px rgba(255, 75, 43, 0.25);
  animation: lm-diner-home-pulse 1.6s ease-in-out infinite;
}
@keyframes lm-diner-home-pulse {
  0%, 100% { transform: scale(1); opacity: 1; }
  50%      { transform: scale(1.15); opacity: 0.7; }
}
.lm-diner-home-live__count {
  font-size: 12px;
  color: var(--lm-text-muted, var(--lm-ink-soft));
}
.lm-diner-home-live__rail {
  display: flex;
  gap: var(--sp-3);
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  padding: var(--sp-1) var(--sp-1) var(--sp-2);
  scrollbar-width: none;
}
.lm-diner-home-live__rail::-webkit-scrollbar { display: none; }

.lm-diner-home-deal {
  flex: 0 0 240px;
  text-align: left;
  background: var(--lm-tomato);
  color: var(--lm-cream);
  border: 2px solid var(--lm-ink);
  box-shadow: 2px 2px 0 var(--lm-ink);
  border-radius: 12px;
  padding: var(--sp-3) var(--sp-4);
  cursor: pointer;
  display: flex;
  flex-direction: column;
  gap: 4px;
  scroll-snap-align: start;
  font-family: inherit;
  transition: transform 0.12s ease;
}
.lm-diner-home-deal:hover { transform: translate(-1px, -1px); box-shadow: 3px 3px 0 var(--lm-ink); }
.lm-diner-home-deal__head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
}
.lm-diner-home-deal__badge {
  display: inline-block;
  padding: 3px 8px;
  background: var(--lm-cream);
  color: var(--lm-tomato);
  font-weight: 800;
  font-size: 11px;
  letter-spacing: 0.5px;
  border-radius: 999px;
}
.lm-diner-home-deal__ttl {
  font-size: 13px;
  font-weight: 600;
  opacity: 0.95;
}
.lm-diner-home-deal__title {
  font-family: 'Bricolage Grotesque', serif;
  font-size: 16px;
  line-height: 1.2;
  margin-top: 6px;
  color: var(--lm-cream);
}
.lm-diner-home-deal__sub {
  font-size: 13px;
  opacity: 0.92;
}
.lm-diner-home-deal__remaining {
  font-size: 13px;
  font-weight: 700;
  opacity: 0.95;
  margin-top: 2px;
}

/* ---------- Featured carousel section ---------- */
.lm-diner-home-hero-section {
  margin-top: var(--sp-4);
}
.lm-diner-home-hero-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0 var(--sp-1);
  margin-bottom: var(--sp-2);
}
.lm-diner-home-hero-title {
  margin: 0;
  font-family: 'Bricolage Grotesque', serif;
  font-size: 18px;
  font-weight: 800;
  color: var(--lm-ink);
}

/* ---------- Tenant list ---------- */
.lm-diner-home-tenant-list {
  margin-top: var(--sp-5);
}
.lm-diner-home-tenant-list__title {
  margin: 0 0 var(--sp-2) 0;
  font-family: 'Bricolage Grotesque', serif;
  font-size: 18px;
  font-weight: 800;
  color: var(--lm-ink);
}
.lm-diner-home-tenant-stack {
  display: flex;
  flex-direction: column;
  gap: var(--sp-3);
}
.lm-diner-home-tenant {
  background: var(--lm-surface, #FFFDF8);
  border: 1.5px solid var(--lm-ink);
  box-shadow: 2px 2px 0 var(--lm-ink);
  border-radius: 10px;
  border-left: 4px solid var(--lm-tenant-accent, var(--lm-butter));
  padding: var(--sp-3) var(--sp-4);
  display: flex;
  flex-direction: column;
  gap: var(--sp-3);
}
.lm-diner-home-tenant__name {
  margin: 0;
  font-family: 'Bricolage Grotesque', serif;
  font-size: 17px;
  font-weight: 800;
  color: var(--lm-ink);
}
.lm-diner-home-tenant__loc {
  margin: 4px 0 0 0;
  font-size: 13px;
  color: var(--lm-ink-soft);
}
.lm-diner-home-tenant__actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
}
.lm-diner-home-tenant__pts {
  display: inline-block;
  padding: 3px 10px;
  background: var(--lm-butter-soft);
  color: var(--lm-ink-soft);
  font-weight: 700;
  border-radius: 999px;
  font-size: 12px;
}
.lm-diner-home-tenant__chips {
  display: flex;
  gap: 8px;
  margin-top: 10px;
  flex-wrap: wrap;
}
.lm-diner-home-tenant__chips .chip-cta {
  flex: 0 0 auto;
}

/* ---------- Tenant skeleton + empty ---------- */
.lm-diner-home-tenant-skel-card {
  background: var(--lm-surface);
  border: 1.5px solid var(--lm-ink);
  box-shadow: 2px 2px 0 var(--lm-ink);
  border-radius: 10px;
  height: 90px;
  margin-top: var(--sp-3);
  animation: lm-skel-pulse 1.4s ease-in-out infinite;
}
.lm-diner-home-tenant-empty {
  background: var(--lm-surface);
  border: 1.5px solid var(--lm-ink);
  box-shadow: 2px 2px 0 var(--lm-ink);
  border-radius: 10px;
  padding: var(--sp-5);
  text-align: center;
}
.lm-diner-home-tenant-empty__glyph { font-size: 36px; margin-bottom: 8px; }
.lm-diner-home-tenant-empty__copy { margin: 0; color: var(--lm-ink-soft); font-size: 14px; }

/* ---------- Mobile ---------- */
@media (max-width: 580px) {
  .lm-diner-home-shell { padding: 0 var(--sp-3); }
  .lm-diner-home-streak__title { font-size: 15px; }
  .lm-diner-home-passport__title { font-size: 15px; }
  .lm-diner-home-deal { flex-basis: 220px; }
}
@media (max-width: 390px) {
  .lm-diner-home-header--signed { flex-wrap: wrap; gap: 8px; }
  .lm-diner-home-header__actions { flex-wrap: wrap; }
  .lm-diner-home-deal { flex-basis: 200px; padding: var(--sp-3); }
  .lm-diner-home-tenant__actions { flex-direction: column; align-items: stretch; }
  .lm-diner-home-tenant__pts { align-self: flex-start; }
}
@media (max-width: 580px) {
  .lm-diner-home-tenant__chips { gap: 6px; }
  .lm-diner-home-tenant__chips .chip-cta { flex: 1 1 calc(50% - 6px); justify-content: center; }
}

/* ===========================================================
 * M31.2 — Diner NFC redirect view (lm-diner-nfc-*)
 * Transient view shown while NFC tap is resolved and logged.
 * =========================================================== */

.lm-diner-nfc-shell {
  min-height: 70vh;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 32px 20px;
  background: var(--lm-surface-2);
}

/* --- Loading card --- */
.lm-diner-nfc-card {
  background: var(--lm-surface);
  border: 1px solid var(--lm-line);
  border-radius: 14px;
  padding: 36px 28px;
  text-align: center;
  max-width: 360px;
  width: 100%;
  box-shadow: 4px 4px 0 var(--lm-ink);
}

.lm-diner-nfc-spinner {
  width: 48px;
  height: 48px;
  border: 3px solid var(--lm-cream);
  border-top-color: var(--lm-tomato);
  border-radius: 50%;
  animation: lm-diner-nfc-spin 0.9s linear infinite;
  margin: 0 auto 18px;
}

@keyframes lm-diner-nfc-spin {
  to { transform: rotate(360deg); }
}

.lm-diner-nfc-copy {
  font-family: 'Inter', sans-serif;
  font-size: 15px;
  color: var(--lm-ink-soft);
  margin: 0;
  line-height: 1.4;
}

/* --- Error card --- */
.lm-diner-nfc-error {
  background: var(--lm-surface);
  border: 2px solid var(--lm-ink);
  border-radius: 14px;
  padding: 32px 24px;
  text-align: center;
  max-width: 420px;
  width: 100%;
  box-shadow: 4px 4px 0 var(--lm-ink);
}

.lm-diner-nfc-error__glyph {
  font-size: 36px;
  margin-bottom: 8px;
}

.lm-diner-nfc-error__title {
  font-family: 'Bricolage Grotesque', serif;
  font-size: 26px;
  font-weight: 700;
  color: var(--lm-ink);
  margin: 0 0 10px;
  line-height: 1.15;
}

.lm-diner-nfc-error__copy {
  font-family: 'Inter', sans-serif;
  font-size: 14px;
  color: var(--lm-ink-soft);
  margin: 0 0 22px;
  line-height: 1.5;
}

/* --- Mobile --- */
@media (max-width: 580px) {
  .lm-diner-nfc-shell { padding: 24px 16px; min-height: 60vh; }
  .lm-diner-nfc-card { padding: 28px 22px; }
  .lm-diner-nfc-error { padding: 26px 20px; }
  .lm-diner-nfc-error__title { font-size: 22px; }
}

@media (max-width: 390px) {
  .lm-diner-nfc-card { padding: 24px 18px; }
  .lm-diner-nfc-error { padding: 22px 16px; }
  .lm-diner-nfc-error__title { font-size: 20px; }
  .lm-diner-nfc-error__copy { font-size: 13px; }
}

/* ===========================================================
 * M37.3 — Diner NFC tap-in landing (photo-first hero)
 * Replaces the M31.2 spinner card as the primary state.
 * Error shell above is preserved for the 404 path.
 * =========================================================== */

.lm-diner-nfc-tapin {
  min-height: 100vh;
  background: var(--lm-cream);
  display: flex;
  flex-direction: column;
  align-items: stretch;
}

.lm-diner-nfc-tapin__photo {
  position: relative;
  width: 100%;
  aspect-ratio: 1 / 1;
  max-height: 56vh;
  background: var(--lm-surface-2);
  overflow: hidden;
  display: flex;
  align-items: center;
  justify-content: center;
}
.lm-diner-nfc-tapin__photo img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.lm-diner-nfc-tapin__photo--logo img {
  width: auto;
  height: auto;
  max-width: 60%;
  max-height: 60%;
  object-fit: contain;
  padding: 24px;
}
.lm-diner-nfc-tapin__photo--glyph {
  background: linear-gradient(135deg, var(--lm-butter-soft) 0%, var(--lm-tomato-soft) 100%);
}
.lm-diner-nfc-tapin__photo-glyph {
  font-size: 96px;
  line-height: 1;
  filter: drop-shadow(0 4px 0 rgba(24, 23, 15, 0.08));
}
.lm-diner-nfc-tapin__photo--skel {
  background: linear-gradient(
    90deg,
    var(--lm-surface-2) 0%,
    var(--lm-surface-3) 50%,
    var(--lm-surface-2) 100%
  );
  background-size: 200% 100%;
  animation: lm-diner-nfc-tapin-shimmer 1.4s linear infinite;
}

@keyframes lm-diner-nfc-tapin-shimmer {
  0% { background-position: 200% 0; }
  100% { background-position: -200% 0; }
}

.lm-diner-nfc-tapin__meta {
  padding: 28px 22px 36px;
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  gap: 8px;
}

.lm-diner-nfc-tapin__eyebrow {
  font-family: 'Inter', sans-serif;
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--lm-text-muted);
  margin: 0;
}

.lm-diner-nfc-tapin__name {
  font-family: 'Bricolage Grotesque', serif;
  font-size: 32px;
  font-weight: 700;
  color: var(--lm-ink);
  margin: 0;
  line-height: 1.1;
  letter-spacing: -0.01em;
}

.lm-diner-nfc-tapin__tagline {
  font-family: 'Inter', sans-serif;
  font-size: 15px;
  color: var(--lm-ink-soft);
  margin: 4px 0 0;
  line-height: 1.4;
  font-style: italic;
}

.lm-diner-nfc-tapin__award {
  margin-top: 14px;
  width: 100%;
  display: flex;
  justify-content: center;
}
.lm-diner-nfc-tapin__award-badge {
  display: inline-block;
  padding: 6px 14px;
  background: var(--lm-butter);
  color: var(--lm-ink);
  font-family: 'Inter', sans-serif;
  font-size: 14px;
  font-weight: 700;
  border-radius: 999px;
  border: 1.5px solid var(--lm-ink);
  box-shadow: 2px 2px 0 var(--lm-ink);
  animation: lm-diner-nfc-tapin-pop 0.32s ease-out;
}

@keyframes lm-diner-nfc-tapin-pop {
  0% { transform: scale(0.6); opacity: 0; }
  60% { transform: scale(1.08); opacity: 1; }
  100% { transform: scale(1); opacity: 1; }
}

.lm-diner-nfc-tapin__cta {
  margin-top: 18px;
  font-size: 17px;
  padding: 14px 26px;
  display: inline-flex;
  align-items: center;
  gap: 10px;
  min-width: 200px;
  justify-content: center;
}
.lm-diner-nfc-tapin__cta-arrow {
  transition: transform 0.18s ease-out;
}
.lm-diner-nfc-tapin__cta:hover .lm-diner-nfc-tapin__cta-arrow {
  transform: translateX(4px);
}

.lm-diner-nfc-tapin__hint {
  font-family: 'Inter', sans-serif;
  font-size: 12px;
  color: var(--lm-text-faint);
  margin: 10px 0 0;
  letter-spacing: 0.04em;
}

/* Skeleton lines (pre-resolve) */
.lm-diner-nfc-tapin__skel-line {
  height: 16px;
  border-radius: 6px;
  background: linear-gradient(
    90deg,
    var(--lm-surface-2) 0%,
    var(--lm-surface-3) 50%,
    var(--lm-surface-2) 100%
  );
  background-size: 200% 100%;
  animation: lm-diner-nfc-tapin-shimmer 1.4s linear infinite;
}
.lm-diner-nfc-tapin__skel-line--name { width: 60%; height: 28px; margin-top: 4px; }
.lm-diner-nfc-tapin__skel-line--tagline { width: 75%; height: 14px; margin-top: 14px; }
.lm-diner-nfc-tapin__skel-line--cta { width: 200px; height: 44px; border-radius: 999px; margin-top: 28px; }

@media (max-width: 580px) {
  .lm-diner-nfc-tapin__photo { max-height: 50vh; }
  .lm-diner-nfc-tapin__name { font-size: 28px; }
  .lm-diner-nfc-tapin__meta { padding: 24px 18px 32px; }
  .lm-diner-nfc-tapin__photo-glyph { font-size: 80px; }
}

@media (max-width: 390px) {
  .lm-diner-nfc-tapin__name { font-size: 24px; }
  .lm-diner-nfc-tapin__tagline { font-size: 14px; }
  .lm-diner-nfc-tapin__cta { font-size: 16px; padding: 13px 22px; min-width: 0; width: 100%; }
  .lm-diner-nfc-tapin__photo-glyph { font-size: 72px; }
}

/* Desktop: center the hero card with a max width so it doesn't span 1400px */
@media (min-width: 760px) {
  .lm-diner-nfc-tapin {
    max-width: 520px;
    margin: 0 auto;
    min-height: auto;
    margin-top: 48px;
    margin-bottom: 48px;
    border: 2px solid var(--lm-ink);
    border-radius: 18px;
    overflow: hidden;
    box-shadow: 6px 6px 0 var(--lm-ink);
    background: var(--lm-surface);
  }
  .lm-diner-nfc-tapin__photo { aspect-ratio: 1 / 1; max-height: none; }
}

/* ===========================================================
 * M31.3 — Form input/label base + Diner signin view
 * .lm-form-input + .lm-form-label finally get tokenized base
 * styles (previously only `--err` modifier existed).
 * =========================================================== */

.lm-form-label {
  display: block;
  font-family: 'Inter', sans-serif;
  font-size: 12px;
  font-weight: 600;
  color: var(--lm-ink-soft);
  letter-spacing: 0.02em;
  text-transform: uppercase;
  margin-bottom: 6px;
}

.lm-form-input {
  display: block;
  width: 100%;
  box-sizing: border-box;
  font-family: 'Inter', sans-serif;
  font-size: 15px;
  color: var(--lm-ink);
  background: var(--lm-surface);
  border: 1px solid var(--lm-line);
  border-radius: 10px;
  padding: 12px 14px;
  line-height: 1.4;
  outline: none;
  transition: border-color 120ms ease, background 120ms ease, box-shadow 120ms ease;
}

.lm-form-input::placeholder {
  color: var(--lm-text-muted);
}

.lm-form-input:hover:not(:disabled) {
  border-color: var(--lm-ink-soft);
}

.lm-form-input:focus,
.lm-form-input:focus-visible {
  border-color: var(--lm-ink);
  box-shadow: 0 0 0 3px var(--lm-butter-soft);
}

.lm-form-input:disabled {
  opacity: 0.6;
  cursor: not-allowed;
  background: var(--lm-surface-2);
}

/* ---------- Diner signin view ---------- */

.lm-diner-signin-shell {
  min-height: 70vh;
  display: flex;
  align-items: flex-start;
  justify-content: center;
  padding: 48px 20px 32px;
  background: var(--lm-surface-2);
}

.lm-diner-signin-card {
  background: var(--lm-surface);
  border: 2px solid var(--lm-ink);
  border-radius: 14px;
  padding: 32px 28px;
  max-width: 420px;
  width: 100%;
  box-shadow: 4px 4px 0 var(--lm-ink);
}

.lm-diner-signin-header {
  text-align: center;
  margin-bottom: 24px;
}

.lm-diner-signin-header .lm-logo {
  margin-bottom: 12px;
}

.lm-diner-signin-title {
  font-family: 'Bricolage Grotesque', serif;
  font-size: 26px;
  font-weight: 700;
  color: var(--lm-ink);
  margin: 0 0 8px;
  line-height: 1.15;
}

.lm-diner-signin-sub {
  font-family: 'Inter', sans-serif;
  font-size: 14px;
  color: var(--lm-ink-soft);
  margin: 0;
  line-height: 1.5;
}

.lm-diner-signin-sub strong {
  color: var(--lm-ink);
  font-weight: 600;
}

.lm-diner-signin-form {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.lm-diner-signin-form .lm-form-input {
  margin-bottom: 4px;
}

.lm-diner-signin-submit {
  margin-top: 12px;
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
}

.lm-diner-signin-submit.--busy {
  cursor: not-allowed;
  opacity: 0.85;
}

.lm-diner-signin-submit__spin {
  width: 14px;
  height: 14px;
  border: 2px solid currentColor;
  border-top-color: transparent;
  border-radius: 50%;
  display: inline-block;
  animation: lm-diner-signin-spin 0.8s linear infinite;
}

@keyframes lm-diner-signin-spin {
  to { transform: rotate(360deg); }
}

.lm-diner-signin-hint {
  font-family: 'Inter', sans-serif;
  font-size: 12px;
  color: var(--lm-text-muted);
  margin: 8px 0 0;
  text-align: center;
}

.lm-diner-signin-legal {
  font-family: 'Inter', sans-serif;
  font-size: 12px;
  color: var(--lm-text-muted);
  text-align: center;
  margin: 18px 0 0;
}

.lm-diner-signin-legal a {
  color: var(--lm-ink-soft);
  text-decoration: underline;
}

.lm-diner-signin-legal a:hover {
  color: var(--lm-ink);
}

/* ---------- Success panel ---------- */

.lm-diner-signin-success {
  text-align: center;
  padding: 8px 0 4px;
}

.lm-diner-signin-success__glyph {
  font-size: 40px;
  margin-bottom: 10px;
}

.lm-diner-signin-success__title {
  font-family: 'Bricolage Grotesque', serif;
  font-size: 22px;
  font-weight: 700;
  color: var(--lm-ink);
  margin: 0 0 10px;
}

.lm-diner-signin-success__copy {
  font-family: 'Inter', sans-serif;
  font-size: 14px;
  color: var(--lm-ink-soft);
  margin: 0 0 18px;
  line-height: 1.5;
}

.lm-diner-signin-success__copy strong {
  color: var(--lm-ink);
  font-weight: 600;
  word-break: break-all;
}

.lm-diner-signin-success__actions {
  display: flex;
  gap: 8px;
  justify-content: center;
  flex-wrap: wrap;
}

/* ---------- Mobile ---------- */
@media (max-width: 580px) {
  .lm-diner-signin-shell { padding: 32px 16px 24px; }
  .lm-diner-signin-card { padding: 28px 22px; }
  .lm-diner-signin-title { font-size: 22px; }
}

@media (max-width: 390px) {
  .lm-diner-signin-card { padding: 24px 18px; }
  .lm-diner-signin-title { font-size: 20px; }
  .lm-diner-signin-sub { font-size: 13px; }
}

/* ===========================================================
 * M48 — Diner Legal pages (Terms / Privacy)
 * Reuses the signin shell visual language so the page feels native.
 * =========================================================== */
.lm-diner-legal-shell {
  min-height: 70vh;
  display: flex;
  justify-content: center;
  padding: 32px 20px 48px;
  background: var(--lm-surface-2);
}

.lm-diner-legal-card {
  background: var(--lm-surface);
  border: 2px solid var(--lm-ink);
  border-radius: 14px;
  padding: 28px 28px 24px;
  max-width: 720px;
  width: 100%;
  box-shadow: 4px 4px 0 var(--lm-ink);
}

.lm-diner-legal-toolbar {
  margin-bottom: 20px;
  gap: 12px;
  flex-wrap: wrap;
}

.lm-diner-legal-tabs {
  display: inline-flex;
  gap: 4px;
  padding: 4px;
  background: var(--lm-surface-2);
  border: 1.5px solid var(--lm-ink);
  border-radius: 999px;
}

.lm-diner-legal-tab {
  font-family: 'Inter', sans-serif;
  font-size: 13px;
  font-weight: 600;
  padding: 6px 14px;
  border-radius: 999px;
  text-decoration: none !important;
  color: var(--lm-ink-soft);
  transition: background 120ms ease, color 120ms ease;
}
.lm-diner-legal-tab:hover { color: var(--lm-ink); }
.lm-diner-legal-tab.is-active {
  background: var(--lm-ink);
  color: #FFE85C;
}

.lm-diner-legal-header {
  margin-bottom: 20px;
  padding-bottom: 16px;
  border-bottom: 1.5px solid var(--lm-line, #e9e6da);
}

.lm-diner-legal-title {
  font-family: 'Bricolage Grotesque', serif;
  font-size: 30px;
  font-weight: 700;
  color: var(--lm-ink);
  margin: 0 0 8px;
  line-height: 1.1;
}

.lm-diner-legal-sub {
  font-family: 'Inter', sans-serif;
  font-size: 14px;
  color: var(--lm-ink-soft);
  margin: 0;
  line-height: 1.5;
}

.lm-diner-legal-body {
  font-family: 'Inter', sans-serif;
  color: var(--lm-ink);
  font-size: 15px;
  line-height: 1.65;
}

.lm-diner-legal-body h2 {
  font-family: 'Bricolage Grotesque', serif;
  font-size: 18px;
  font-weight: 700;
  margin: 28px 0 10px;
  color: var(--lm-ink);
  line-height: 1.2;
}

.lm-diner-legal-body p {
  margin: 0 0 12px;
}

.lm-diner-legal-body ul {
  margin: 0 0 12px;
  padding-left: 20px;
}

.lm-diner-legal-body li {
  margin-bottom: 6px;
}

.lm-diner-legal-body a {
  color: var(--lm-ink);
  text-decoration: underline;
  text-decoration-thickness: 1.5px;
  text-underline-offset: 2px;
}
.lm-diner-legal-body a:hover { color: #1F5E37; }

.lm-diner-legal-body strong { font-weight: 600; }
.lm-diner-legal-body em { font-style: italic; color: var(--lm-ink-soft); }

.lm-diner-legal-foot {
  margin-top: 28px;
  padding-top: 16px;
  border-top: 1.5px solid var(--lm-line, #e9e6da);
  font-family: 'Inter', sans-serif;
  font-size: 12px;
  color: var(--lm-ink-soft);
  text-align: center;
}
.lm-diner-legal-foot a {
  color: var(--lm-ink);
  text-decoration: underline;
}

@media (max-width: 580px) {
  .lm-diner-legal-shell { padding: 24px 14px 32px; }
  .lm-diner-legal-card { padding: 22px 20px; }
  .lm-diner-legal-title { font-size: 24px; }
  .lm-diner-legal-body { font-size: 14px; }
  .lm-diner-legal-body h2 { font-size: 17px; margin-top: 22px; }
}

/* ===========================================================
 * M32.1 — Restaurant settingsView polish
 * DRY the inline-style h3/h1/p patterns into semantic classes.
 * =========================================================== */

.lm-settings-page-title {
  font-family: 'Bricolage Grotesque', serif;
  font-size: 28px;
  font-weight: 700;
  color: var(--lm-ink);
  margin: 0;
  line-height: 1.15;
}

.lm-settings-section-title {
  font-family: 'Bricolage Grotesque', serif;
  font-size: 18px;
  font-weight: 700;
  color: var(--lm-ink);
  margin: 0 0 4px 0;
  line-height: 1.2;
}

/* M46: tip-policy pills + locked chip on the Tips settings tab */
.lm-tippol-pill {
  display: inline-flex;
  align-items: center;
  padding: 3px 10px;
  border-radius: 999px;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.02em;
  border: 1px solid var(--lm-ink, #18170F);
}
.lm-tippol-pill--delivery {
  background: var(--lm-butter, #FFE85C);
  color: var(--lm-ink, #18170F);
}
.lm-tippol-pill--pickup {
  background: var(--lm-basil-light, #B8D9C4);
  color: var(--lm-basil-deep, #143F25);
  border-color: var(--lm-basil-deep, #143F25);
}
.lm-tippol-locked {
  display: inline-flex;
  align-items: center;
  padding: 3px 10px;
  border-radius: 999px;
  background: var(--lm-cream, #FBF7EE);
  border: 1px solid var(--lm-line, #E5E0D2);
  color: var(--lm-ink-soft, #3B392C);
  font-size: 11px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  white-space: nowrap;
  flex-shrink: 0;
}

.lm-settings-error-title {
  font-family: 'Bricolage Grotesque', serif;
  font-size: 18px;
  font-weight: 700;
  color: var(--lm-ink);
  margin: 0;
  line-height: 1.2;
}

.lm-settings-refund-total {
  margin: 0;
  font-size: 13px;
  color: var(--lm-text-2);
}

@media (max-width: 580px) {
  .lm-settings-page-title { font-size: 24px; }
  .lm-settings-section-title { font-size: 17px; }
}

/* =========================================================
   M32.2 — Restaurant signupView hardening
   ========================================================= */
.lm-rest-signup {
  max-width: 760px;
  margin: 0 auto;
  padding: 24px 16px 48px;
  display: flex;
  flex-direction: column;
  gap: 20px;
}
.lm-rest-signup-hero {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  gap: 10px;
  padding: 8px 0 4px;
}
.lm-rest-signup-eyebrow { align-self: center; }
.lm-rest-signup-title {
  font-family: 'Bricolage Grotesque', system-ui, sans-serif;
  font-weight: 700;
  font-size: clamp(28px, 5vw, 42px);
  line-height: 1.1;
  margin: 0;
  color: var(--lm-ink);
}
.lm-rest-signup-sub {
  margin: 0;
  font-size: 16px;
  color: var(--lm-text-2);
  max-width: 560px;
}
.lm-rest-signup-form {
  display: flex;
  flex-direction: column;
  gap: 16px;
}
.lm-rest-signup-card {
  background: var(--lm-surface);
  border: 1px solid var(--lm-line);
  border-radius: 18px;
  padding: 22px;
  box-sizing: border-box;
}
.lm-rest-signup-card-title {
  font-family: 'Bricolage Grotesque', system-ui, sans-serif;
  font-weight: 700;
  font-size: 18px;
  margin: 0 0 14px 0;
  color: var(--lm-ink);
}
.lm-rest-signup-grid {
  display: grid;
  gap: 12px;
}
.lm-rest-signup-grid--2 { grid-template-columns: 1fr 1fr; }
.lm-rest-signup-grid--3 { grid-template-columns: 1fr 1fr 1fr; }
.lm-rest-signup-field {
  display: flex;
  flex-direction: column;
  gap: 6px;
  min-width: 0;
}
.lm-rest-signup-field--full { grid-column: 1 / -1; }
.lm-rest-signup-field--span2 { grid-column: span 2; }
.lm-rest-signup-field .lm-form-input { width: 100%; box-sizing: border-box; }
.lm-rest-signup-optional {
  text-transform: none;
  font-weight: 500;
  font-style: normal;
  color: var(--lm-text-faint);
  letter-spacing: 0;
}
.lm-rest-signup-checks {
  display: flex;
  flex-wrap: wrap;
  gap: 18px;
  margin-top: 14px;
  padding-top: 14px;
  border-top: 1px dashed var(--lm-line);
}
.lm-rest-signup-check {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  cursor: pointer;
  font-size: 14px;
  color: var(--lm-ink);
}
.lm-rest-signup-check input[type="checkbox"] {
  accent-color: var(--lm-ink);
  width: 16px;
  height: 16px;
}
.lm-rest-signup-submit-row {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 10px;
  padding: 8px 0;
}
.lm-rest-signup-submit {
  position: relative;
  min-width: 280px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
}
.lm-rest-signup-submit-spinner {
  display: none;
  width: 14px;
  height: 14px;
  border: 2px solid rgba(24, 23, 15, 0.25);
  border-top-color: var(--lm-ink);
  border-radius: 50%;
  animation: lm-rest-signup-spin 0.7s linear infinite;
}
.lm-rest-signup-submit--busy .lm-rest-signup-submit-spinner {
  display: inline-block;
}
.lm-rest-signup-submit--busy {
  opacity: 0.85;
  cursor: progress;
}
@keyframes lm-rest-signup-spin {
  to { transform: rotate(360deg); }
}
.lm-rest-signup-fine {
  margin: 4px 0 0;
  font-size: 13px;
  color: var(--lm-text-muted);
  text-align: center;
}
.lm-rest-signup-link {
  color: var(--lm-ink);
  text-decoration: underline;
}
/* Success panel */
.lm-rest-signup-success {
  margin-top: 8px;
  background: var(--lm-surface);
  border: 1px solid var(--lm-line);
  border-left: 4px solid var(--lm-success);
  border-radius: 18px;
  padding: 24px 22px;
  text-align: center;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
}
.lm-rest-signup-success-glyph {
  font-size: 36px;
  line-height: 1;
  margin-bottom: 2px;
}
.lm-rest-signup-success-title {
  font-family: 'Bricolage Grotesque', system-ui, sans-serif;
  font-weight: 700;
  font-size: 22px;
  margin: 0;
  color: var(--lm-ink);
}
.lm-rest-signup-success-body {
  margin: 0;
  font-size: 15px;
  color: var(--lm-text-2);
  line-height: 1.5;
  max-width: 480px;
}
.lm-rest-signup-success-body strong { color: var(--lm-ink); }
.lm-rest-signup-success-hint {
  margin: 6px 0 0;
  font-size: 13px;
  color: var(--lm-text-muted);
}
.lm-rest-signup-resend {
  background: none;
  border: none;
  padding: 0;
  font: inherit;
  color: var(--lm-ink);
  text-decoration: underline;
  cursor: pointer;
}
.lm-rest-signup-resend:hover { color: var(--lm-tomato); }
.lm-rest-signup-resend:disabled,
.lm-rest-signup-resend--busy { opacity: 0.6; cursor: progress; }
/* Error panel */
.lm-rest-signup-error {
  margin-top: 8px;
  background: var(--lm-danger-soft);
  border: 1px solid var(--lm-danger);
  border-left: 4px solid var(--lm-danger);
  border-radius: 18px;
  padding: 18px 20px;
  display: flex;
  gap: 14px;
  align-items: flex-start;
}
.lm-rest-signup-error-glyph {
  font-size: 24px;
  line-height: 1;
  flex-shrink: 0;
}
.lm-rest-signup-error-body { flex: 1; min-width: 0; }
.lm-rest-signup-error-title {
  font-family: 'Bricolage Grotesque', system-ui, sans-serif;
  font-weight: 700;
  font-size: 16px;
  margin: 0 0 4px 0;
  color: var(--lm-ink);
}
.lm-rest-signup-error-msg {
  margin: 0;
  font-size: 14px;
  color: var(--lm-ink-soft);
  word-break: break-word;
}

/* Mobile collapse — single column at 580px */
@media (max-width: 580px) {
  .lm-rest-signup { padding: 16px 12px 40px; }
  .lm-rest-signup-card { padding: 18px 16px; border-radius: 14px; }
  .lm-rest-signup-grid--2,
  .lm-rest-signup-grid--3 { grid-template-columns: 1fr; }
  .lm-rest-signup-field--span2,
  .lm-rest-signup-field--full { grid-column: 1 / -1; }
  .lm-rest-signup-title { font-size: 28px; }
  .lm-rest-signup-sub { font-size: 15px; }
  .lm-rest-signup-submit { min-width: 0; width: 100%; }
  .lm-rest-signup-success { padding: 20px 16px; border-radius: 14px; }
  .lm-rest-signup-success-title { font-size: 20px; }
  .lm-rest-signup-error { padding: 14px 16px; border-radius: 14px; }
}
@media (max-width: 390px) {
  .lm-rest-signup { padding: 12px 10px 32px; }
  .lm-rest-signup-card { padding: 16px 14px; }
  .lm-rest-signup-title { font-size: 26px; line-height: 1.15; }
  .lm-rest-signup-card-title { font-size: 17px; }
  .lm-rest-signup-checks { gap: 14px; }
}

/* =========================================================
   M33.1 — Restaurant signinView hardening
   ========================================================= */
.lm-rest-signin {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 80vh;
  padding: 24px 16px;
  box-sizing: border-box;
}
.lm-rest-signin-card {
  background: var(--lm-surface);
  border: 1px solid var(--lm-line);
  border-radius: 18px;
  padding: 28px 28px 24px;
  max-width: 440px;
  width: 100%;
  box-sizing: border-box;
}
.lm-rest-signin-eyebrow { display: inline-block; margin-bottom: 16px; }
.lm-rest-signin-title {
  font-family: 'Bricolage Grotesque', system-ui, sans-serif;
  font-weight: 700;
  font-size: 28px;
  line-height: 1.15;
  margin: 12px 0 4px 0;
  color: var(--lm-ink);
}
.lm-rest-signin-sub {
  margin: 0 0 22px 0;
  font-size: 15px;
  color: var(--lm-text-2);
}
.lm-rest-signin-google {
  position: relative;
  width: 100%;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
}
.lm-rest-signin-google-spinner {
  display: none;
  width: 14px;
  height: 14px;
  border: 2px solid rgba(24, 23, 15, 0.2);
  border-top-color: var(--lm-ink);
  border-radius: 50%;
  animation: lm-rest-signin-spin 0.7s linear infinite;
}
.lm-rest-signin-google--busy .lm-rest-signin-google-spinner { display: inline-block; }
.lm-rest-signin-google--busy .lm-rest-signin-google-icon { display: none; }
.lm-rest-signin-google--busy { opacity: 0.85; cursor: progress; }
.lm-rest-signin-divider {
  display: flex;
  align-items: center;
  gap: 12px;
  margin: 20px 0;
}
.lm-rest-signin-divider-line {
  flex: 1;
  height: 1.5px;
  background: var(--lm-line);
}
.lm-rest-signin-divider-text {
  font-family: 'Bricolage Grotesque', system-ui, sans-serif;
  font-weight: 600;
  font-size: 12px;
  letter-spacing: 0.08em;
  color: var(--lm-text-muted);
}
.lm-rest-signin-form {
  display: flex;
  flex-direction: column;
  gap: 14px;
}
.lm-rest-signin-field {
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.lm-rest-signin-field .lm-form-input { width: 100%; box-sizing: border-box; }
.lm-rest-signin-submit {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  margin-top: 4px;
}
.lm-rest-signin-submit-spinner {
  display: none;
  width: 14px;
  height: 14px;
  border: 2px solid rgba(24, 23, 15, 0.25);
  border-top-color: var(--lm-ink);
  border-radius: 50%;
  animation: lm-rest-signin-spin 0.7s linear infinite;
}
.lm-rest-signin-submit--busy .lm-rest-signin-submit-spinner { display: inline-block; }
.lm-rest-signin-submit--busy { opacity: 0.85; cursor: progress; }
@keyframes lm-rest-signin-spin {
  to { transform: rotate(360deg); }
}
.lm-rest-signin-fine {
  margin: 16px 0 0;
  font-size: 13px;
  color: var(--lm-text-muted);
  text-align: center;
}
.lm-rest-signin-remember {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  margin: 14px 0 0;
  padding: 12px 14px;
  background: var(--lm-bg-soft, #faf7f1);
  border: 1px solid var(--lm-border, #eadfca);
  border-radius: 12px;
  cursor: pointer;
  text-align: left;
}
.lm-rest-signin-remember input[type="checkbox"] {
  flex-shrink: 0;
  width: 18px;
  height: 18px;
  margin-top: 2px;
  accent-color: var(--lm-primary, #f59e0b);
  cursor: pointer;
}
.lm-rest-signin-remember-label {
  display: flex;
  flex-direction: column;
  gap: 2px;
  font-size: 14px;
  color: var(--lm-ink);
  line-height: 1.35;
}
.lm-rest-signin-remember-label strong {
  font-weight: 600;
}
.lm-rest-signin-remember-hint {
  font-size: 12px;
  color: var(--lm-ink-soft, var(--lm-text-muted));
  font-weight: 400;
}
.lm-rest-signin-error {
  margin-top: 16px;
  background: var(--lm-danger-soft);
  border: 1px solid var(--lm-danger);
  border-left: 4px solid var(--lm-danger);
  border-radius: 14px;
  padding: 14px 16px;
  display: flex;
  gap: 12px;
  align-items: flex-start;
}
.lm-rest-signin-error-glyph {
  font-size: 22px;
  line-height: 1;
  flex-shrink: 0;
}
.lm-rest-signin-error-body { flex: 1; min-width: 0; }
.lm-rest-signin-error-title {
  font-family: 'Bricolage Grotesque', system-ui, sans-serif;
  font-weight: 700;
  font-size: 15px;
  margin: 0 0 4px 0;
  color: var(--lm-ink);
}
.lm-rest-signin-error-msg {
  margin: 0;
  font-size: 14px;
  color: var(--lm-ink-soft);
  word-break: break-word;
}
@media (max-width: 580px) {
  .lm-rest-signin { padding: 16px 12px; min-height: 70vh; }
  .lm-rest-signin-card { padding: 22px 20px; border-radius: 14px; }
  .lm-rest-signin-title { font-size: 26px; }
}
@media (max-width: 390px) {
  .lm-rest-signin-card { padding: 20px 16px; }
  .lm-rest-signin-title { font-size: 24px; }
  .lm-rest-signin-sub { font-size: 14px; }
}

/* =========================================================
   M93 — Restaurant signin magic-link panel
   ========================================================= */
.lm-rest-signin-magic {
  display: flex;
  flex-direction: column;
  gap: 10px;
  margin: 4px 0 4px;
}
.lm-rest-signin-magic .lm-form-input { width: 100%; box-sizing: border-box; }
.lm-rest-signin-magic-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  min-height: 44px;
}
.lm-rest-signin-magic-btn-spinner {
  display: none;
  width: 14px;
  height: 14px;
  border-radius: 50%;
  border: 2px solid rgba(24, 23, 15, 0.25);
  border-top-color: var(--lm-ink);
  animation: lm-rest-signin-spin 0.7s linear infinite;
}
.lm-rest-signin-magic-btn--busy .lm-rest-signin-magic-btn-spinner { display: inline-block; }
.lm-rest-signin-magic-btn--busy { opacity: 0.85; cursor: progress; }
.lm-rest-signin-magic-hint {
  margin: 2px 0 0;
  font-size: 12px;
  color: var(--lm-ink-soft);
  text-align: center;
}
.lm-rest-signin-magic-sent {
  display: flex;
  gap: 12px;
  align-items: flex-start;
  padding: 14px 14px;
  border: 1px solid var(--lm-line);
  border-radius: 12px;
  background: var(--lm-surface-2, #fafaf7);
  margin: 4px 0;
}
.lm-rest-signin-magic-sent-glyph {
  font-size: 22px;
  line-height: 1;
  flex-shrink: 0;
}
.lm-rest-signin-magic-sent-body { flex: 1; min-width: 0; }
.lm-rest-signin-magic-sent-title {
  margin: 0 0 4px;
  font-size: 15px;
  font-weight: 700;
  color: var(--lm-ink);
}
.lm-rest-signin-magic-sent-copy {
  margin: 0 0 10px;
  font-size: 13px;
  color: var(--lm-ink-soft);
  line-height: 1.45;
  word-break: break-word;
}
.lm-rest-signin-magic-sent-copy strong { color: var(--lm-ink); }
.lm-rest-signin-magic-sent-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

/* =========================================================
   M94 — Restaurant signin forgot-password panel
   ========================================================= */
.lm-rest-signin-link-btn {
  appearance: none;
  background: none;
  border: none;
  padding: 0;
  margin: 0 2px;
  color: var(--lm-ink);
  font: inherit;
  text-decoration: underline;
  text-underline-offset: 2px;
  cursor: pointer;
}
.lm-rest-signin-link-btn:hover { color: var(--lm-tomato, #FF4B2B); }
.lm-rest-signin-link-btn:focus-visible {
  outline: 2px solid var(--lm-butter, #FFE85C);
  outline-offset: 2px;
  border-radius: 2px;
}
.lm-rest-signin-reset {
  margin-top: 14px;
  padding: 16px 16px 14px;
  border: 1px solid var(--lm-line);
  border-radius: 12px;
  background: var(--lm-surface-2, #fafaf7);
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.lm-rest-signin-reset-header {
  display: flex;
  align-items: center;
  gap: 10px;
}
.lm-rest-signin-reset-glyph {
  font-size: 20px;
  line-height: 1;
}
.lm-rest-signin-reset-title {
  margin: 0;
  font-size: 15px;
  font-weight: 700;
  color: var(--lm-ink);
}
.lm-rest-signin-reset-copy {
  margin: 0;
  font-size: 13px;
  line-height: 1.45;
  color: var(--lm-ink-soft);
  word-break: break-word;
}
.lm-rest-signin-reset-copy strong { color: var(--lm-ink); }
.lm-rest-signin-reset .lm-rest-signin-field { margin: 0; }
.lm-rest-signin-reset .lm-form-input { width: 100%; box-sizing: border-box; }
.lm-rest-signin-reset-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
.lm-rest-signin-reset-actions .btn { flex: 0 0 auto; }

/* =========================================================
   M33.2 — Restaurant signupCompleteView (magic-link callback)
   ========================================================= */
.lm-rest-signup-complete {
  max-width: 560px;
  margin: 0 auto;
  padding: 60px 16px 40px;
  box-sizing: border-box;
}
.lm-rest-signup-complete-card {
  background: var(--lm-surface);
  border: 1px solid var(--lm-line);
  border-radius: 18px;
  padding: 36px 28px 32px;
  text-align: center;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 10px;
}
.lm-rest-signup-complete-card--loading {
  border-left: 4px solid var(--lm-butter);
}
.lm-rest-signup-complete-card--error {
  border-left: 4px solid var(--lm-danger);
  background: var(--lm-danger-soft);
}
.lm-rest-signup-complete-card--error[data-variant="exists"] {
  border-left-color: var(--lm-butter);
  background: var(--lm-surface);
}
.lm-rest-signup-complete-spinner {
  width: 48px;
  height: 48px;
  border-radius: 50%;
  border: 4px solid rgba(24, 23, 15, 0.12);
  border-top-color: var(--lm-butter);
  animation: lm-rest-signup-complete-spin 0.9s linear infinite;
  margin-bottom: 6px;
}
@keyframes lm-rest-signup-complete-spin {
  to { transform: rotate(360deg); }
}
.lm-rest-signup-complete-glyph {
  font-size: 36px;
  line-height: 1;
  margin-bottom: 2px;
}
.lm-rest-signup-complete-title {
  font-family: 'Bricolage Grotesque', system-ui, sans-serif;
  font-weight: 700;
  font-size: 22px;
  margin: 0;
  color: var(--lm-ink);
}
.lm-rest-signup-complete-sub {
  margin: 0;
  font-size: 15px;
  line-height: 1.55;
  color: var(--lm-text-2);
  max-width: 440px;
}
.lm-rest-signup-complete-actions {
  margin-top: 12px;
  display: flex;
  justify-content: center;
}
.lm-rest-signup-complete-cta {
  min-width: 200px;
}
@media (max-width: 580px) {
  .lm-rest-signup-complete { padding: 40px 12px 32px; }
  .lm-rest-signup-complete-card { padding: 28px 20px; border-radius: 14px; }
  .lm-rest-signup-complete-title { font-size: 20px; }
  .lm-rest-signup-complete-sub { font-size: 14px; }
  .lm-rest-signup-complete-cta { min-width: 0; width: 100%; }
}
@media (max-width: 390px) {
  .lm-rest-signup-complete { padding: 32px 10px 28px; }
  .lm-rest-signup-complete-card { padding: 24px 16px; }
  .lm-rest-signup-complete-title { font-size: 19px; }
  .lm-rest-signup-complete-spinner { width: 42px; height: 42px; }
}

/* ============================================================
   M33.3 — Restaurant wizardView (4-step onboarding)
   ============================================================ */
.lm-wizard {
  max-width: 720px;
  margin: 0 auto;
  padding: 48px 16px 56px;
  display: flex;
  flex-direction: column;
  gap: 24px;
}
.lm-wizard-header {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 14px;
}
.lm-wizard-hero {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
  text-align: center;
}
.lm-wizard-eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 5px 12px;
  border-radius: 999px;
  background: var(--lm-butter);
  color: var(--lm-butter-ink);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}
.lm-wizard-title {
  font-family: 'Bricolage Grotesque', system-ui, sans-serif;
  font-weight: 700;
  font-size: clamp(24px, 4vw, 32px);
  line-height: 1.15;
  margin: 0;
  color: var(--lm-ink);
}
.lm-wizard-stepper {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  flex-wrap: wrap;
}
.lm-wizard-step {
  display: inline-flex;
  align-items: center;
  gap: 8px;
}
.lm-wizard-step-bubble {
  width: 28px;
  height: 28px;
  border-radius: 50%;
  border: 2px solid var(--lm-ink);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-family: 'Bricolage Grotesque', system-ui, sans-serif;
  font-weight: 700;
  font-size: 13px;
  background: transparent;
  color: var(--lm-ink);
  transition: background 0.15s ease, color 0.15s ease;
}
.lm-wizard-step-label {
  font-size: 13px;
  font-weight: 600;
  color: var(--lm-ink);
  letter-spacing: 0.01em;
}
.lm-wizard-step-sep {
  font-size: 16px;
  color: var(--lm-text-faint);
  user-select: none;
}
.lm-wizard-step--active .lm-wizard-step-bubble {
  background: var(--lm-butter);
  color: var(--lm-butter-ink);
}
.lm-wizard-step--done .lm-wizard-step-bubble {
  background: var(--lm-ink);
  color: var(--lm-cream);
}
.lm-wizard-step--pending {
  opacity: 0.45;
}
.lm-wizard-step--pending .lm-wizard-step-bubble {
  border-color: var(--lm-text-faint);
  color: var(--lm-text-faint);
}
.lm-wizard-card {
  background: var(--lm-surface);
  border: 1px solid var(--lm-line);
  border-radius: 18px;
  padding: 24px;
  display: flex;
  flex-direction: column;
  gap: 16px;
  box-shadow: 0 4px 16px rgba(24, 23, 15, 0.04);
}
.lm-wizard-card--skeleton {
  gap: 14px;
}
.lm-wizard-card--error {
  background: var(--lm-danger-soft);
  border-color: var(--lm-tomato);
  border-left-width: 4px;
  flex-direction: row;
  align-items: flex-start;
  gap: 14px;
}
.lm-wizard-card-title {
  font-family: 'Bricolage Grotesque', system-ui, sans-serif;
  font-weight: 700;
  font-size: 22px;
  line-height: 1.2;
  margin: 0;
  color: var(--lm-ink);
}
.lm-wizard-card-title-optional {
  font-family: 'Inter', system-ui, sans-serif;
  font-weight: 500;
  font-size: 13px;
  color: var(--lm-text-faint);
  margin-left: 8px;
  letter-spacing: 0.02em;
}
.lm-wizard-card-sub {
  margin: 0;
  font-size: 15px;
  line-height: 1.55;
  color: var(--lm-text-2);
}
.lm-wizard-form {
  display: flex;
  flex-direction: column;
  gap: 14px;
}
.lm-wizard-field {
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.lm-wizard-field-hint {
  font-size: 12px;
  color: var(--lm-text-muted);
  line-height: 1.45;
}
.lm-wizard-grid {
  display: grid;
  gap: 12px;
}
.lm-wizard-grid--csz {
  grid-template-columns: 2fr 1fr 1fr;
}
.lm-wizard-grid--2 {
  grid-template-columns: 1fr 1fr;
}
.lm-wizard-grid--invite {
  grid-template-columns: 2fr 2fr 1fr;
  align-items: end;
}
.lm-wizard-checks {
  display: flex;
  flex-wrap: wrap;
  gap: 14px 18px;
}
.lm-wizard-check {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  cursor: pointer;
  font-size: 14px;
  color: var(--lm-ink);
}
.lm-wizard-check input[type="checkbox"] {
  width: 16px;
  height: 16px;
  accent-color: var(--lm-tomato);
  cursor: pointer;
}
.lm-wizard-textarea {
  resize: vertical;
  min-height: 84px;
  font-family: 'Inter', system-ui, sans-serif;
}
.lm-wizard-actions {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 12px;
  margin-top: 6px;
  flex-wrap: wrap;
}
.lm-wizard-skip {
  /* uses .lm-btn .lm-btn--ghost baseline */
}
.lm-wizard-submit {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  min-width: 180px;
}
.lm-wizard-submit-spinner {
  display: none;
  width: 14px;
  height: 14px;
  border-radius: 50%;
  border: 2px solid rgba(24, 23, 15, 0.25);
  border-top-color: var(--lm-ink);
  animation: lm-wizard-spin 0.85s linear infinite;
}
.lm-wizard-submit-label {
  line-height: 1;
}
.lm-wizard-submit--busy {
  opacity: 0.88;
  cursor: progress;
}
.lm-wizard-submit--busy .lm-wizard-submit-spinner {
  display: inline-block;
}
@keyframes lm-wizard-spin {
  to { transform: rotate(360deg); }
}
.lm-wizard-skel {
  background: linear-gradient(
    90deg,
    var(--lm-surface-2) 0%,
    var(--lm-line) 50%,
    var(--lm-surface-2) 100%
  );
  background-size: 200% 100%;
  border-radius: 10px;
  animation: lm-wizard-shimmer 1.4s ease-in-out infinite;
}
@keyframes lm-wizard-shimmer {
  0% { background-position: 200% 0; }
  100% { background-position: -200% 0; }
}
.lm-wizard-skel--title { width: 60%; height: 28px; }
.lm-wizard-skel--sub { width: 80%; height: 14px; }
.lm-wizard-skel--row { width: 100%; height: 48px; border-radius: 10px; }
.lm-wizard-error-glyph {
  font-size: 22px;
  line-height: 1;
  flex: 0 0 auto;
  margin-top: 2px;
}
.lm-wizard-error-body {
  display: flex;
  flex-direction: column;
  gap: 6px;
  flex: 1 1 auto;
}
.lm-wizard-error-title {
  font-family: 'Bricolage Grotesque', system-ui, sans-serif;
  font-weight: 700;
  font-size: 16px;
  margin: 0;
  color: var(--lm-ink);
}
.lm-wizard-error-msg {
  margin: 0;
  font-size: 14px;
  line-height: 1.5;
  color: var(--lm-ink-soft);
}
.lm-wizard-error-cta {
  margin-top: 8px;
  align-self: flex-start;
}
.lm-wizard-done {
  text-align: center;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 10px;
  padding: 16px 8px;
}
.lm-wizard-done-glyph {
  font-size: 48px;
  line-height: 1;
}
.lm-wizard-done-title {
  font-family: 'Bricolage Grotesque', system-ui, sans-serif;
  font-weight: 700;
  font-size: 24px;
  margin: 0;
  color: var(--lm-ink);
}
.lm-wizard-done-sub {
  margin: 0;
  font-size: 15px;
  line-height: 1.55;
  color: var(--lm-text-2);
  max-width: 440px;
}
.lm-wizard-done-actions {
  display: flex;
  justify-content: center;
  gap: 12px;
  margin-top: 12px;
  flex-wrap: wrap;
}
@media (max-width: 580px) {
  .lm-wizard { padding: 32px 12px 40px; gap: 18px; }
  .lm-wizard-card { padding: 20px; border-radius: 14px; }
  .lm-wizard-card-title { font-size: 20px; }
  .lm-wizard-grid--csz,
  .lm-wizard-grid--2,
  .lm-wizard-grid--invite { grid-template-columns: 1fr; align-items: stretch; }
  .lm-wizard-stepper { gap: 6px; }
  .lm-wizard-step-label { display: none; }
  .lm-wizard-actions { flex-direction: column-reverse; align-items: stretch; }
  .lm-wizard-actions .lm-btn { width: 100%; }
  .lm-wizard-submit { width: 100%; min-width: 0; }
  .lm-wizard-done-actions { flex-direction: column; align-items: stretch; }
  .lm-wizard-done-actions .lm-btn { width: 100%; }
}
@media (max-width: 390px) {
  .lm-wizard { padding: 24px 10px 32px; }
  .lm-wizard-card { padding: 16px; }
  .lm-wizard-title { font-size: 22px; }
  .lm-wizard-card-title { font-size: 18px; }
  .lm-wizard-done-glyph { font-size: 40px; }
}

/* ============================================================
   M33.4 — Restaurant provisionView (platform admin)
   ============================================================ */
.lm-rest-provision {
  max-width: 880px;
  margin: 0 auto;
  padding: 32px 16px 56px;
  display: flex;
  flex-direction: column;
  gap: 20px;
}
.lm-rest-provision-header {
  display: flex;
  justify-content: space-between;
  align-items: flex-end;
  gap: 16px;
  flex-wrap: wrap;
}
.lm-rest-provision-hero {
  display: flex;
  flex-direction: column;
  gap: 6px;
  min-width: 0;
  flex: 1 1 320px;
}
.lm-rest-provision-eyebrow {
  display: inline-flex;
  align-self: flex-start;
  padding: 5px 12px;
  border-radius: 999px;
  background: var(--lm-butter);
  color: var(--lm-butter-ink);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}
.lm-rest-provision-title {
  font-family: 'Bricolage Grotesque', system-ui, sans-serif;
  font-weight: 700;
  font-size: clamp(22px, 3.4vw, 30px);
  line-height: 1.15;
  margin: 4px 0 0;
  color: var(--lm-ink);
}
.lm-rest-provision-sub {
  margin: 0;
  font-size: 14px;
  line-height: 1.5;
  color: var(--lm-text-2);
  max-width: 520px;
}
.lm-rest-provision-actions {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
}
.lm-rest-provision-card {
  background: var(--lm-surface);
  border: 1px solid var(--lm-line);
  border-radius: 18px;
  padding: 24px;
  display: flex;
  flex-direction: column;
  gap: 22px;
  box-shadow: 0 4px 16px rgba(24, 23, 15, 0.04);
}
.lm-rest-provision-section {
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.lm-rest-provision-section-title {
  font-family: 'Bricolage Grotesque', system-ui, sans-serif;
  font-weight: 700;
  font-size: 17px;
  margin: 0;
  color: var(--lm-ink);
  letter-spacing: 0.01em;
}
.lm-rest-provision-section-sub {
  font-family: 'Inter', system-ui, sans-serif;
  font-weight: 500;
  font-size: 12px;
  color: var(--lm-text-faint);
  margin-left: 6px;
  letter-spacing: 0.02em;
  text-transform: none;
}
.lm-rest-provision-req {
  color: var(--lm-tomato);
  font-weight: 700;
}
.lm-rest-provision-optional {
  color: var(--lm-text-faint);
  font-weight: 500;
  font-size: 11px;
  margin-left: 4px;
}
.lm-rest-provision-grid {
  display: grid;
  gap: 12px;
}
.lm-rest-provision-grid--2 {
  grid-template-columns: 1fr 1fr;
}
.lm-rest-provision-grid--csz {
  grid-template-columns: 2fr 1fr 1fr;
  grid-column: 1 / -1;
}
.lm-rest-provision-field--full {
  grid-column: 1 / -1;
}
.lm-rest-provision-form-actions {
  display: flex;
  justify-content: flex-end;
  align-items: center;
  gap: 12px;
  margin-top: 6px;
  flex-wrap: wrap;
}
.lm-rest-provision-submit {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  min-width: 200px;
}
.lm-rest-provision-submit-spinner {
  display: none;
  width: 14px;
  height: 14px;
  border-radius: 50%;
  border: 2px solid rgba(24, 23, 15, 0.25);
  border-top-color: var(--lm-ink);
  animation: lm-rest-provision-spin 0.85s linear infinite;
}
.lm-rest-provision-submit-label { line-height: 1; }
.lm-rest-provision-submit--busy { opacity: 0.88; cursor: progress; }
.lm-rest-provision-submit--busy .lm-rest-provision-submit-spinner { display: inline-block; }
@keyframes lm-rest-provision-spin {
  to { transform: rotate(360deg); }
}
.lm-rest-provision-result {
  display: flex;
  align-items: flex-start;
  gap: 14px;
  padding: 20px 22px;
  border-radius: 14px;
  border: 1px solid var(--lm-line);
  background: var(--lm-surface);
}
.lm-rest-provision-result--success {
  background: var(--lm-basil-light);
  border-color: var(--lm-basil);
  border-left-width: 4px;
}
.lm-rest-provision-result--error {
  background: var(--lm-danger-soft);
  border-color: var(--lm-tomato);
  border-left-width: 4px;
}
.lm-rest-provision-result-glyph {
  font-size: 22px;
  line-height: 1;
  flex: 0 0 auto;
  margin-top: 2px;
}
.lm-rest-provision-result--success .lm-rest-provision-result-glyph { color: var(--lm-basil); }
.lm-rest-provision-result--error .lm-rest-provision-result-glyph { color: var(--lm-tomato); }
.lm-rest-provision-result-body {
  display: flex;
  flex-direction: column;
  gap: 6px;
  flex: 1 1 auto;
  min-width: 0;
}
.lm-rest-provision-result-title {
  font-family: 'Bricolage Grotesque', system-ui, sans-serif;
  font-weight: 700;
  font-size: 17px;
  margin: 0;
  color: var(--lm-ink);
}
.lm-rest-provision-result-msg {
  margin: 0;
  font-size: 14px;
  line-height: 1.5;
  color: var(--lm-ink-soft);
}
.lm-rest-provision-result-sub {
  margin: 0;
  font-size: 13px;
  line-height: 1.5;
  color: var(--lm-text-2);
}
.lm-rest-provision-result-link {
  color: var(--lm-tomato-deep, var(--lm-tomato));
  font-weight: 600;
  text-decoration: underline;
  text-underline-offset: 2px;
  word-break: break-all;
}
.lm-rest-provision-result-details {
  margin-top: 4px;
}
.lm-rest-provision-result-summary {
  font-size: 12px;
  color: var(--lm-text-muted);
  cursor: pointer;
  user-select: none;
}
.lm-rest-provision-result-pre {
  margin: 8px 0 0;
  padding: 10px 12px;
  background: var(--lm-surface);
  border: 1px solid var(--lm-line);
  border-radius: 8px;
  font-size: 12px;
  line-height: 1.45;
  overflow-x: auto;
  color: var(--lm-ink-soft);
}
.lm-rest-provision-list-card {
  background: var(--lm-surface);
  border: 1px solid var(--lm-line);
  border-radius: 14px;
  padding: 18px 20px;
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.lm-rest-provision-list-title {
  font-family: 'Bricolage Grotesque', system-ui, sans-serif;
  font-weight: 700;
  font-size: 16px;
  margin: 0;
  color: var(--lm-ink);
  display: flex;
  align-items: center;
  gap: 8px;
}
.lm-rest-provision-list-count {
  display: inline-flex;
  align-items: center;
  padding: 2px 8px;
  border-radius: 999px;
  background: var(--lm-surface-2);
  color: var(--lm-text-2);
  font-family: 'Inter', system-ui, sans-serif;
  font-size: 12px;
  font-weight: 600;
}
.lm-rest-provision-list-error {
  margin: 0;
  font-size: 14px;
  color: var(--lm-tomato-deep, var(--lm-tomato));
}
.lm-rest-provision-list-empty {
  margin: 0;
  font-size: 14px;
  color: var(--lm-text-muted);
}
.lm-rest-provision-list-skel-label {
  font-size: 12px;
  color: var(--lm-text-muted);
}
.lm-rest-provision-skel {
  background: linear-gradient(
    90deg,
    var(--lm-surface-2) 0%,
    var(--lm-line) 50%,
    var(--lm-surface-2) 100%
  );
  background-size: 200% 100%;
  border-radius: 8px;
  animation: lm-rest-provision-shimmer 1.4s ease-in-out infinite;
}
@keyframes lm-rest-provision-shimmer {
  0% { background-position: 200% 0; }
  100% { background-position: -200% 0; }
}
.lm-rest-provision-skel--title { width: 40%; height: 18px; }
.lm-rest-provision-skel--row { width: 100%; height: 36px; }
.lm-rest-provision-table-wrap {
  overflow-x: auto;
  border: 1px solid var(--lm-line);
  border-radius: 10px;
}
.lm-rest-provision-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 14px;
}
.lm-rest-provision-table th,
.lm-rest-provision-table td {
  text-align: left;
  padding: 10px 12px;
  border-bottom: 1px solid var(--lm-line);
  vertical-align: middle;
}
.lm-rest-provision-table th {
  background: var(--lm-surface-2);
  font-family: 'Inter', system-ui, sans-serif;
  font-weight: 700;
  font-size: 12px;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--lm-text-muted);
}
.lm-rest-provision-table tbody tr:last-child td { border-bottom: none; }
.lm-rest-provision-table-muted {
  font-size: 12px;
  color: var(--lm-text-muted);
}
.lm-rest-provision-table-link {
  color: var(--lm-tomato-deep, var(--lm-tomato));
  font-weight: 600;
  text-decoration: underline;
  text-underline-offset: 2px;
}
.lm-rest-provision-code {
  font-family: ui-monospace, 'SF Mono', Menlo, monospace;
  font-size: 12px;
  padding: 2px 6px;
  border-radius: 6px;
  background: var(--lm-surface-2);
  color: var(--lm-ink-soft);
}
.lm-rest-provision-pill {
  display: inline-flex;
  align-items: center;
  padding: 3px 10px;
  border-radius: 999px;
  background: var(--lm-surface-2);
  color: var(--lm-ink-soft);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}
.lm-rest-provision-pill--success { background: var(--lm-basil-light); color: var(--lm-basil); }
.lm-rest-provision-pill--warning { background: var(--lm-butter-soft); color: var(--lm-butter-ink); }
.lm-rest-provision-pill--danger  { background: var(--lm-danger-soft); color: var(--lm-tomato-deep, var(--lm-tomato)); }
.lm-rest-provision-pill--paid    { background: var(--lm-butter); color: var(--lm-butter-ink); }
.lm-rest-provision-kits {
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.lm-rest-provision-kit {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 14px;
  padding: 14px 16px;
  border: 1px solid var(--lm-line);
  border-radius: 12px;
  background: var(--lm-surface);
}
.lm-rest-provision-kit-main {
  display: flex;
  flex-direction: column;
  gap: 6px;
  flex: 1 1 auto;
  min-width: 0;
}
.lm-rest-provision-kit-head {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}
.lm-rest-provision-kit-tenant {
  font-family: 'Bricolage Grotesque', system-ui, sans-serif;
  font-weight: 700;
  font-size: 15px;
  color: var(--lm-ink);
}
.lm-rest-provision-kit-meta {
  margin: 0;
  font-size: 13px;
  color: var(--lm-text-muted);
  line-height: 1.45;
}
.lm-rest-provision-kit-ship {
  margin: 0;
  font-size: 13px;
  color: var(--lm-ink-soft);
  line-height: 1.5;
}
.lm-rest-provision-kit-tracking {
  margin: 0;
  font-size: 13px;
  color: var(--lm-ink-soft);
}
.lm-rest-provision-kit-action {
  flex-shrink: 0;
}
@media (max-width: 720px) {
  .lm-rest-provision { padding: 24px 12px 40px; }
  .lm-rest-provision-card { padding: 20px; border-radius: 14px; }
  .lm-rest-provision-grid--2,
  .lm-rest-provision-grid--csz {
    grid-template-columns: 1fr;
  }
  .lm-rest-provision-form-actions { flex-direction: column-reverse; align-items: stretch; }
  .lm-rest-provision-form-actions .lm-btn { width: 100%; }
  .lm-rest-provision-submit { width: 100%; min-width: 0; }
  .lm-rest-provision-kit { flex-direction: column; }
  .lm-rest-provision-kit-action { width: 100%; }
  .lm-rest-provision-kit-action .lm-btn { width: 100%; }
}
@media (max-width: 390px) {
  .lm-rest-provision { padding: 18px 10px 32px; }
  .lm-rest-provision-card { padding: 16px; }
  .lm-rest-provision-title { font-size: 22px; }
  .lm-rest-provision-section-title { font-size: 16px; }
}

/* ============================================================
   M34.1 — Restaurant teamView hardening
   ============================================================ */

.lm-rest-team {
  max-width: 840px;
  margin: 0 auto;
  padding: 32px 16px 56px;
  display: flex;
  flex-direction: column;
  gap: 20px;
  color: var(--lm-ink);
}

.lm-rest-team-header {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 16px;
  flex-wrap: wrap;
}

.lm-rest-team-hero {
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.lm-rest-team-eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  align-self: flex-start;
  background: var(--lm-butter);
  color: var(--lm-butter-ink, var(--lm-ink));
  font-family: 'Inter', system-ui, sans-serif;
  font-weight: 700;
  font-size: 12px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  padding: 5px 12px;
  border-radius: 999px;
}

.lm-rest-team-title {
  font-family: 'Bricolage Grotesque', 'Inter', system-ui, sans-serif;
  font-weight: 700;
  font-size: clamp(22px, 3.4vw, 30px);
  line-height: 1.18;
  color: var(--lm-ink);
  margin: 0;
}

.lm-rest-team-sub {
  font-family: 'Inter', system-ui, sans-serif;
  font-size: 14px;
  line-height: 1.55;
  color: var(--lm-text-2);
  max-width: 520px;
  margin: 0;
}

.lm-rest-team-card {
  background: var(--lm-surface);
  border: 1px solid var(--lm-line);
  border-radius: 18px;
  padding: 24px;
  display: flex;
  flex-direction: column;
  gap: 16px;
  box-shadow: 0 1px 0 rgba(24,23,15,0.02), 0 8px 24px -16px rgba(24,23,15,0.08);
}

.lm-rest-team-card--gate {
  align-items: center;
  text-align: center;
  padding: 40px 24px;
}

.lm-rest-team-card-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  flex-wrap: wrap;
}

.lm-rest-team-card-title {
  font-family: 'Bricolage Grotesque', 'Inter', system-ui, sans-serif;
  font-weight: 700;
  font-size: 18px;
  color: var(--lm-ink);
  margin: 0;
  display: inline-flex;
  align-items: center;
  gap: 10px;
}

.lm-rest-team-card-sub {
  font-family: 'Inter', system-ui, sans-serif;
  font-size: 14px;
  color: var(--lm-text-2);
  margin: 0;
}

.lm-rest-team-count {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 26px;
  height: 22px;
  padding: 0 8px;
  background: var(--lm-butter-soft);
  color: var(--lm-butter-ink, var(--lm-ink));
  font-family: 'Inter', system-ui, sans-serif;
  font-weight: 700;
  font-size: 12px;
  border-radius: 999px;
}

.lm-rest-team-form {
  display: flex;
  flex-direction: column;
  gap: 14px;
}

.lm-rest-team-grid {
  display: grid;
  gap: 12px;
}

.lm-rest-team-grid--2to1 {
  grid-template-columns: 2fr 1fr;
}

.lm-rest-team-req {
  color: var(--lm-tomato);
  font-weight: 700;
  margin-left: 4px;
}

.lm-rest-team-optional {
  color: var(--lm-text-faint);
  font-weight: 500;
  font-size: 11px;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  margin-left: 6px;
}

.lm-rest-team-form-actions {
  display: flex;
  justify-content: flex-end;
  gap: 12px;
  margin-top: 6px;
}

.lm-rest-team-submit {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  min-width: 180px;
}

.lm-rest-team-submit-spinner {
  width: 14px;
  height: 14px;
  border-radius: 50%;
  border: 2px solid currentColor;
  border-top-color: transparent;
  display: none;
  animation: lm-rest-team-spin 0.85s linear infinite;
}

.lm-rest-team-submit-label {
  display: inline-flex;
}

.lm-rest-team-submit--busy {
  cursor: progress;
  opacity: 0.88;
}

.lm-rest-team-submit--busy .lm-rest-team-submit-spinner {
  display: inline-block;
}

@keyframes lm-rest-team-spin {
  to { transform: rotate(360deg); }
}

.lm-rest-team-skel {
  background: linear-gradient(90deg,
    rgba(24,23,15,0.06) 0%,
    rgba(24,23,15,0.12) 50%,
    rgba(24,23,15,0.06) 100%);
  background-size: 200% 100%;
  animation: lm-rest-team-shimmer 1.4s linear infinite;
  border-radius: 8px;
}

.lm-rest-team-skel--eyebrow { width: 80px; height: 16px; border-radius: 999px; }
.lm-rest-team-skel--title { width: 60%; height: 28px; }
.lm-rest-team-skel--sub { width: 80%; height: 14px; }
.lm-rest-team-skel--row { width: 100%; height: 56px; border-radius: 12px; }

@keyframes lm-rest-team-shimmer {
  0% { background-position: 200% 0; }
  100% { background-position: -200% 0; }
}

.lm-rest-team-empty {
  text-align: center;
  padding: 28px 16px;
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.lm-rest-team-empty-msg {
  font-family: 'Inter', system-ui, sans-serif;
  font-size: 16px;
  font-weight: 600;
  color: var(--lm-ink);
}

.lm-rest-team-empty-sub {
  font-family: 'Inter', system-ui, sans-serif;
  font-size: 14px;
  color: var(--lm-text-muted);
}

.lm-rest-team-list {
  display: flex;
  flex-direction: column;
}

.lm-rest-team-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  padding: 14px 0;
  border-bottom: 1px solid var(--lm-line);
}

.lm-rest-team-row:last-child {
  border-bottom: none;
}

.lm-rest-team-row-main {
  display: flex;
  flex-direction: column;
  gap: 4px;
  min-width: 0;
  flex: 1;
}

.lm-rest-team-row-head {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px;
}

.lm-rest-team-row-name {
  font-family: 'Bricolage Grotesque', 'Inter', system-ui, sans-serif;
  font-weight: 700;
  font-size: 15px;
  color: var(--lm-ink);
}

.lm-rest-team-row-meta {
  font-family: 'Inter', system-ui, sans-serif;
  font-size: 13px;
  color: var(--lm-text-muted);
  word-break: break-word;
}

.lm-rest-team-row-tag {
  font-family: 'Inter', system-ui, sans-serif;
  font-size: 12px;
  color: var(--lm-text-faint);
  font-style: italic;
}

.lm-rest-team-row-action {
  flex-shrink: 0;
}

.lm-rest-team-remove {
  color: var(--lm-tomato) !important;
  border-color: var(--lm-tomato) !important;
}

.lm-rest-team-remove:hover {
  background: var(--lm-tomato) !important;
  color: var(--lm-cream) !important;
}

.lm-rest-team-pill {
  display: inline-flex;
  align-items: center;
  padding: 3px 10px;
  border-radius: 999px;
  font-family: 'Inter', system-ui, sans-serif;
  font-weight: 700;
  font-size: 11px;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  line-height: 1.4;
}

.lm-rest-team-pill--owner {
  background: var(--lm-ink);
  color: var(--lm-butter);
}

.lm-rest-team-pill--manager {
  background: var(--lm-basil);
  color: var(--lm-cream);
}

.lm-rest-team-pill--staff {
  background: var(--lm-butter-soft);
  color: var(--lm-butter-ink, var(--lm-ink));
}

.lm-rest-team-pill--platform_admin {
  background: var(--lm-cocoa);
  color: var(--lm-cream);
}

.lm-rest-team-pill--pending {
  background: var(--lm-butter);
  color: var(--lm-butter-ink, var(--lm-ink));
}

.lm-rest-team-gate-glyph {
  font-size: 48px;
  line-height: 1;
}

.lm-rest-team-gate-body {
  display: flex;
  flex-direction: column;
  gap: 10px;
  align-items: center;
  max-width: 420px;
}

@media (max-width: 580px) {
  .lm-rest-team {
    padding: 24px 14px 48px;
    gap: 16px;
  }
  .lm-rest-team-header {
    flex-direction: column;
    align-items: flex-start;
  }
  .lm-rest-team-card {
    padding: 20px;
    border-radius: 16px;
  }
  .lm-rest-team-grid--2to1 {
    grid-template-columns: 1fr;
  }
  .lm-rest-team-form-actions {
    justify-content: stretch;
  }
  .lm-rest-team-submit {
    width: 100%;
  }
  .lm-rest-team-row {
    flex-direction: column;
    align-items: flex-start;
    gap: 10px;
  }
  .lm-rest-team-row-action {
    width: 100%;
  }
  .lm-rest-team-remove {
    width: 100%;
  }
}

@media (max-width: 390px) {
  .lm-rest-team-card {
    padding: 16px;
  }
  .lm-rest-team-title { font-size: 22px; }
  .lm-rest-team-card-title { font-size: 16px; }
  .lm-rest-team-gate-glyph { font-size: 40px; }
}

/* ============================================================
   M34.2 — Restaurant payoutsView hardening
   ============================================================ */

.lm-rest-payouts {
  max-width: 1040px;
  margin: 0 auto;
  padding: 32px 16px 56px;
  display: flex;
  flex-direction: column;
  gap: 20px;
  color: var(--lm-ink);
}

.lm-rest-payouts-header {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 16px;
  flex-wrap: wrap;
}

.lm-rest-payouts-hero {
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.lm-rest-payouts-eyebrow {
  display: inline-flex;
  align-self: flex-start;
  background: var(--lm-butter);
  color: var(--lm-butter-ink, var(--lm-ink));
  font-family: 'Inter', system-ui, sans-serif;
  font-weight: 700;
  font-size: 12px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  padding: 5px 12px;
  border-radius: 999px;
}

.lm-rest-payouts-title {
  font-family: 'Bricolage Grotesque', 'Inter', system-ui, sans-serif;
  font-weight: 700;
  font-size: clamp(24px, 3.6vw, 32px);
  line-height: 1.18;
  color: var(--lm-ink);
  margin: 0;
}

.lm-rest-payouts-sub {
  font-family: 'Inter', system-ui, sans-serif;
  font-size: 14px;
  line-height: 1.55;
  color: var(--lm-text-2);
  max-width: 560px;
  margin: 0;
}

.lm-rest-payouts-kpis {
  display: grid;
  grid-template-columns: 2fr 1fr 1fr 1fr;
  gap: 12px;
}

.lm-rest-payouts-kpi {
  background: var(--lm-surface);
  border: 1px solid var(--lm-line);
  border-radius: 16px;
  padding: 18px 18px 16px;
  display: flex;
  flex-direction: column;
  gap: 6px;
  min-width: 0;
}

.lm-rest-payouts-kpi--hero {
  border-left: 4px solid var(--lm-basil);
  padding-left: 22px;
}

.lm-rest-payouts-kpi-label {
  font-family: 'Inter', system-ui, sans-serif;
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--lm-text-muted);
}

.lm-rest-payouts-kpi-num {
  font-family: 'Bricolage Grotesque', 'Inter', system-ui, sans-serif;
  font-weight: 700;
  font-size: 24px;
  line-height: 1.1;
  color: var(--lm-ink);
}

.lm-rest-payouts-kpi-num--hero {
  font-size: 42px;
}

.lm-rest-payouts-kpi-num--neg {
  color: var(--lm-cocoa);
}

.lm-rest-payouts-kpi-sub {
  font-family: 'Inter', system-ui, sans-serif;
  font-size: 12px;
  color: var(--lm-text-muted);
}

.lm-rest-payouts-card {
  background: var(--lm-surface);
  border: 1px solid var(--lm-line);
  border-radius: 18px;
  padding: 22px 22px 18px;
  display: flex;
  flex-direction: column;
  gap: 14px;
  box-shadow: 0 1px 0 rgba(24,23,15,0.02), 0 8px 24px -16px rgba(24,23,15,0.08);
}

.lm-rest-payouts-card--info {
  background: var(--lm-surface-3, #F4F1E4);
  border: none;
  box-shadow: none;
  gap: 6px;
}

.lm-rest-payouts-card--gate {
  align-items: center;
  text-align: center;
  padding: 40px 24px;
}

.lm-rest-payouts-card--error {
  border-left: 4px solid var(--lm-tomato);
  flex-direction: row;
  gap: 14px;
  align-items: flex-start;
}

.lm-rest-payouts-error-glyph {
  font-size: 28px;
  line-height: 1;
}

.lm-rest-payouts-error-body {
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.lm-rest-payouts-card-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  flex-wrap: wrap;
}

.lm-rest-payouts-card-title {
  font-family: 'Bricolage Grotesque', 'Inter', system-ui, sans-serif;
  font-weight: 700;
  font-size: 18px;
  margin: 0;
  display: inline-flex;
  align-items: center;
  gap: 10px;
  color: var(--lm-ink);
}

.lm-rest-payouts-count {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 26px;
  height: 22px;
  padding: 0 8px;
  background: var(--lm-butter-soft);
  color: var(--lm-butter-ink, var(--lm-ink));
  font-family: 'Inter', system-ui, sans-serif;
  font-weight: 700;
  font-size: 12px;
  border-radius: 999px;
}

.lm-rest-payouts-info-title {
  font-family: 'Bricolage Grotesque', 'Inter', system-ui, sans-serif;
  font-weight: 700;
  font-size: 15px;
  margin: 0;
  color: var(--lm-ink);
}

.lm-rest-payouts-info-body {
  font-family: 'Inter', system-ui, sans-serif;
  font-size: 13px;
  line-height: 1.55;
  color: var(--lm-text-2);
  margin: 0;
}

.lm-rest-payouts-empty {
  text-align: center;
  padding: 22px 12px;
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.lm-rest-payouts-empty-msg {
  font-family: 'Inter', system-ui, sans-serif;
  font-size: 16px;
  font-weight: 600;
  color: var(--lm-ink);
  margin: 0;
}

.lm-rest-payouts-empty-sub {
  font-family: 'Inter', system-ui, sans-serif;
  font-size: 13px;
  color: var(--lm-text-muted);
  margin: 0;
}

.lm-rest-payouts-list {
  display: flex;
  flex-direction: column;
}

.lm-rest-payouts-row {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 14px;
  padding: 14px 0;
  border-bottom: 1px solid var(--lm-line);
}

.lm-rest-payouts-row:last-child {
  border-bottom: none;
}

.lm-rest-payouts-row-main {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 3px;
}

.lm-rest-payouts-row-range {
  font-family: 'Bricolage Grotesque', 'Inter', system-ui, sans-serif;
  font-weight: 700;
  font-size: 15px;
  color: var(--lm-ink);
}

.lm-rest-payouts-row-meta {
  font-family: 'Inter', system-ui, sans-serif;
  font-size: 13px;
  color: var(--lm-text-muted);
}

.lm-rest-payouts-row-method {
  font-family: 'Inter', system-ui, sans-serif;
  font-size: 12px;
  color: var(--lm-text-faint);
  letter-spacing: 0.04em;
}

.lm-rest-payouts-row-notes {
  font-family: 'Inter', system-ui, sans-serif;
  font-size: 12px;
  color: var(--lm-text-2);
  font-style: italic;
}

.lm-rest-payouts-row-amount {
  text-align: right;
  min-width: 140px;
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 4px;
}

.lm-rest-payouts-row-net {
  font-family: 'Bricolage Grotesque', 'Inter', system-ui, sans-serif;
  font-weight: 700;
  font-size: 18px;
  color: var(--lm-ink);
}

.lm-rest-payouts-row-paid-at {
  font-family: 'Inter', system-ui, sans-serif;
  font-size: 12px;
  color: var(--lm-text-muted);
}

.lm-rest-payouts-pill {
  display: inline-flex;
  align-items: center;
  padding: 3px 10px;
  border-radius: 999px;
  font-family: 'Inter', system-ui, sans-serif;
  font-weight: 700;
  font-size: 11px;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  line-height: 1.4;
}

.lm-rest-payouts-pill--paid {
  background: var(--lm-basil-light);
  color: var(--lm-basil);
}

.lm-rest-payouts-pill--pending {
  background: var(--lm-butter);
  color: var(--lm-butter-ink, var(--lm-ink));
}

.lm-rest-payouts-pill--void {
  background: var(--lm-danger-soft, var(--lm-tomato-soft, #FCE4EC));
  color: var(--lm-danger, var(--lm-tomato));
}

.lm-rest-payouts-skel {
  background: linear-gradient(90deg,
    rgba(24,23,15,0.06) 0%,
    rgba(24,23,15,0.12) 50%,
    rgba(24,23,15,0.06) 100%);
  background-size: 200% 100%;
  animation: lm-rest-payouts-shimmer 1.4s linear infinite;
  border-radius: 8px;
}

.lm-rest-payouts-skel--eyebrow { width: 80px; height: 16px; border-radius: 999px; }
.lm-rest-payouts-skel--title { width: 60%; height: 30px; }
.lm-rest-payouts-skel--sub { width: 80%; height: 14px; }
.lm-rest-payouts-skel--num { width: 50%; height: 28px; }
.lm-rest-payouts-skel--row { width: 100%; height: 56px; border-radius: 12px; }

@keyframes lm-rest-payouts-shimmer {
  0% { background-position: 200% 0; }
  100% { background-position: -200% 0; }
}

.lm-rest-payouts-gate-glyph {
  font-size: 48px;
  line-height: 1;
}

.lm-rest-payouts-gate-body {
  display: flex;
  flex-direction: column;
  gap: 10px;
  align-items: center;
  max-width: 420px;
}

@media (max-width: 880px) {
  .lm-rest-payouts-kpis {
    grid-template-columns: 1fr 1fr;
  }
  .lm-rest-payouts-kpi--hero {
    grid-column: 1 / -1;
  }
}

@media (max-width: 580px) {
  .lm-rest-payouts {
    padding: 24px 14px 48px;
    gap: 16px;
  }
  .lm-rest-payouts-header {
    flex-direction: column;
    align-items: flex-start;
  }
  .lm-rest-payouts-kpis {
    grid-template-columns: 1fr;
  }
  .lm-rest-payouts-card {
    padding: 18px;
    border-radius: 16px;
  }
  .lm-rest-payouts-row {
    flex-direction: column;
    align-items: flex-start;
    gap: 10px;
  }
  .lm-rest-payouts-row-amount {
    text-align: left;
    align-items: flex-start;
    min-width: 0;
  }
}

@media (max-width: 390px) {
  .lm-rest-payouts-title { font-size: 22px; }
  .lm-rest-payouts-kpi-num--hero { font-size: 34px; }
  .lm-rest-payouts-card { padding: 16px; }
}

/* ============================================================
   M34.3 — Restaurant reviewsView hardening
   ============================================================ */

.lm-rest-reviews {
  max-width: 880px;
  margin: 0 auto;
  padding: 32px 16px 56px;
  display: flex;
  flex-direction: column;
  gap: 20px;
  color: var(--lm-ink);
}

.lm-rest-reviews-header {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 16px;
  flex-wrap: wrap;
}

.lm-rest-reviews-hero {
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.lm-rest-reviews-eyebrow {
  display: inline-flex;
  align-self: flex-start;
  background: var(--lm-butter);
  color: var(--lm-butter-ink, var(--lm-ink));
  font-family: 'Inter', system-ui, sans-serif;
  font-weight: 700;
  font-size: 12px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  padding: 5px 12px;
  border-radius: 999px;
}

.lm-rest-reviews-title {
  font-family: 'Bricolage Grotesque', 'Inter', system-ui, sans-serif;
  font-weight: 700;
  font-size: clamp(22px, 3.4vw, 30px);
  line-height: 1.18;
  color: var(--lm-ink);
  margin: 0;
}

.lm-rest-reviews-sub {
  font-family: 'Inter', system-ui, sans-serif;
  font-size: 14px;
  line-height: 1.55;
  color: var(--lm-text-2);
  max-width: 560px;
  margin: 0;
}

.lm-rest-reviews-card {
  background: var(--lm-surface);
  border: 1px solid var(--lm-line);
  border-radius: 18px;
  padding: 24px;
  display: flex;
  flex-direction: column;
  gap: 16px;
  box-shadow: 0 1px 0 rgba(24,23,15,0.02), 0 8px 24px -16px rgba(24,23,15,0.08);
}

.lm-rest-reviews-card--gate {
  align-items: center;
  text-align: center;
  padding: 40px 24px;
}

.lm-rest-reviews-card--error {
  flex-direction: row;
  align-items: flex-start;
  gap: 14px;
  border-left: 4px solid var(--lm-tomato);
}

.lm-rest-reviews-error-glyph {
  font-size: 28px;
  line-height: 1;
}

.lm-rest-reviews-error-body {
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.lm-rest-reviews-card-head {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.lm-rest-reviews-card-title {
  font-family: 'Bricolage Grotesque', 'Inter', system-ui, sans-serif;
  font-weight: 700;
  font-size: 18px;
  margin: 0;
  display: inline-flex;
  align-items: center;
  gap: 10px;
  color: var(--lm-ink);
}

.lm-rest-reviews-card-sub {
  font-family: 'Inter', system-ui, sans-serif;
  font-size: 14px;
  color: var(--lm-text-2);
  margin: 0;
  line-height: 1.5;
}

.lm-rest-reviews-count {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 26px;
  height: 22px;
  padding: 0 8px;
  background: var(--lm-butter-soft);
  color: var(--lm-butter-ink, var(--lm-ink));
  font-family: 'Inter', system-ui, sans-serif;
  font-weight: 700;
  font-size: 12px;
  border-radius: 999px;
}

.lm-rest-reviews-form {
  display: flex;
  flex-direction: column;
  gap: 14px;
}

.lm-rest-reviews-form-actions {
  display: flex;
  justify-content: flex-end;
  gap: 12px;
  margin-top: 4px;
}

.lm-rest-reviews-submit {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  min-width: 160px;
}

.lm-rest-reviews-submit-spinner {
  width: 14px;
  height: 14px;
  border-radius: 50%;
  border: 2px solid currentColor;
  border-top-color: transparent;
  display: none;
  animation: lm-rest-reviews-spin 0.85s linear infinite;
}

.lm-rest-reviews-submit-label {
  display: inline-flex;
}

.lm-rest-reviews-submit--busy {
  cursor: progress;
  opacity: 0.88;
}

.lm-rest-reviews-submit--busy .lm-rest-reviews-submit-spinner {
  display: inline-block;
}

@keyframes lm-rest-reviews-spin {
  to { transform: rotate(360deg); }
}

.lm-rest-reviews-empty {
  text-align: center;
  padding: 22px 12px;
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.lm-rest-reviews-empty-msg {
  font-family: 'Inter', system-ui, sans-serif;
  font-size: 16px;
  font-weight: 600;
  color: var(--lm-ink);
  margin: 0;
}

.lm-rest-reviews-empty-sub {
  font-family: 'Inter', system-ui, sans-serif;
  font-size: 13px;
  color: var(--lm-text-muted);
  margin: 0;
}

.lm-rest-reviews-table-wrap {
  overflow-x: auto;
  margin: -4px -4px;
  padding: 4px 4px;
}

.lm-rest-reviews-table {
  width: 100%;
  border-collapse: collapse;
  font-family: 'Inter', system-ui, sans-serif;
  font-size: 14px;
  color: var(--lm-ink);
}

.lm-rest-reviews-table thead tr {
  text-align: left;
  border-bottom: 2px solid var(--lm-line);
}

.lm-rest-reviews-table thead th {
  padding: 10px 8px;
  font-family: 'Inter', system-ui, sans-serif;
  font-weight: 700;
  font-size: 11px;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--lm-text-muted);
}

.lm-rest-reviews-table tbody tr {
  border-bottom: 1px solid var(--lm-line);
}

.lm-rest-reviews-table tbody tr:last-child {
  border-bottom: none;
}

.lm-rest-reviews-table tbody td {
  padding: 10px 8px;
  vertical-align: middle;
}

.lm-rest-reviews-td-platform {
  text-transform: capitalize;
  font-weight: 600;
}

.lm-rest-reviews-td-meta {
  color: var(--lm-text-muted);
  font-size: 13px;
  white-space: nowrap;
}

.lm-rest-reviews-td-notes {
  color: var(--lm-text-2);
  font-size: 12px;
  font-style: italic;
  max-width: 220px;
  word-break: break-word;
}

.lm-rest-reviews-pill {
  display: inline-flex;
  align-items: center;
  padding: 3px 10px;
  border-radius: 999px;
  font-family: 'Inter', system-ui, sans-serif;
  font-weight: 700;
  font-size: 11px;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  line-height: 1.4;
}

.lm-rest-reviews-pill--queued {
  background: var(--lm-butter-soft);
  color: var(--lm-butter-ink, var(--lm-ink));
}

.lm-rest-reviews-pill--sent {
  background: var(--lm-basil);
  color: var(--lm-cream);
}

.lm-rest-reviews-pill--failed {
  background: var(--lm-tomato);
  color: var(--lm-cream);
}

.lm-rest-reviews-pill--skipped {
  background: var(--lm-line);
  color: var(--lm-text-2);
}

.lm-rest-reviews-pill--cancelled {
  background: var(--lm-line);
  color: var(--lm-text-2);
}

.lm-rest-reviews-skel {
  background: linear-gradient(90deg,
    rgba(24,23,15,0.06) 0%,
    rgba(24,23,15,0.12) 50%,
    rgba(24,23,15,0.06) 100%);
  background-size: 200% 100%;
  animation: lm-rest-reviews-shimmer 1.4s linear infinite;
  border-radius: 8px;
}

.lm-rest-reviews-skel--eyebrow { width: 80px; height: 16px; border-radius: 999px; }
.lm-rest-reviews-skel--title { width: 60%; height: 26px; }
.lm-rest-reviews-skel--sub { width: 80%; height: 14px; }
.lm-rest-reviews-skel--input { width: 100%; height: 44px; border-radius: 10px; }
.lm-rest-reviews-skel--row { width: 100%; height: 44px; border-radius: 10px; }

@keyframes lm-rest-reviews-shimmer {
  0% { background-position: 200% 0; }
  100% { background-position: -200% 0; }
}

.lm-rest-reviews-gate-glyph {
  font-size: 48px;
  line-height: 1;
}

.lm-rest-reviews-gate-body {
  display: flex;
  flex-direction: column;
  gap: 10px;
  align-items: center;
  max-width: 420px;
}

@media (max-width: 580px) {
  .lm-rest-reviews {
    padding: 24px 14px 48px;
    gap: 16px;
  }
  .lm-rest-reviews-header {
    flex-direction: column;
    align-items: flex-start;
  }
  .lm-rest-reviews-card {
    padding: 20px;
    border-radius: 16px;
  }
  .lm-rest-reviews-form-actions {
    justify-content: stretch;
  }
  .lm-rest-reviews-submit {
    width: 100%;
  }
  .lm-rest-reviews-table thead th {
    padding: 8px 6px;
    font-size: 10px;
  }
  .lm-rest-reviews-table tbody td {
    padding: 10px 6px;
  }
  .lm-rest-reviews-td-notes {
    max-width: 160px;
  }
}

@media (max-width: 390px) {
  .lm-rest-reviews-title { font-size: 22px; }
  .lm-rest-reviews-card-title { font-size: 16px; }
  .lm-rest-reviews-card { padding: 16px; }
}

/* ============================================================
   M35.1 — Restaurant dealsView hardening
   Tokenized shell, tabs, list table, kind chip selector, form,
   status pills (live/scheduled/paused/expired/maxed), skeleton.
   ============================================================ */

.lm-rest-deals {
  max-width: 960px;
  margin: 0 auto;
  padding: 32px 16px 56px;
  display: flex;
  flex-direction: column;
  gap: 20px;
  color: var(--lm-ink);
}

.lm-rest-deals-header {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 16px;
  flex-wrap: wrap;
}

.lm-rest-deals-hero {
  display: flex;
  flex-direction: column;
  gap: 6px;
  flex: 1;
  min-width: 240px;
}

.lm-rest-deals-eyebrow {
  display: inline-flex;
  align-self: flex-start;
  background: var(--lm-butter);
  color: var(--lm-butter-ink, var(--lm-ink));
  font-family: 'Inter', system-ui, sans-serif;
  font-weight: 700;
  font-size: 12px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  padding: 5px 12px;
  border-radius: 999px;
}

.lm-rest-deals-title {
  font-family: 'Bricolage Grotesque', 'Inter', system-ui, sans-serif;
  font-weight: 700;
  font-size: clamp(22px, 3.4vw, 30px);
  line-height: 1.18;
  color: var(--lm-ink);
  margin: 0;
}

.lm-rest-deals-sub {
  font-family: 'Inter', system-ui, sans-serif;
  font-size: 14px;
  line-height: 1.55;
  color: var(--lm-text-2);
  max-width: 560px;
  margin: 0;
}

.lm-rest-deals-header-actions {
  display: flex;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
}

.lm-rest-deals-count {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 26px;
  height: 22px;
  padding: 0 10px;
  background: var(--lm-butter-soft);
  color: var(--lm-butter-ink, var(--lm-ink));
  font-family: 'Inter', system-ui, sans-serif;
  font-weight: 700;
  font-size: 12px;
  border-radius: 999px;
  letter-spacing: 0.02em;
  white-space: nowrap;
}

.lm-rest-deals-tabs {
  display: flex;
  align-items: stretch;
  gap: 4px;
  border-bottom: 1px solid var(--lm-line);
  margin: -4px 0 0;
}

.lm-rest-deals-tab {
  appearance: none;
  background: transparent;
  border: 0;
  border-bottom: 2px solid transparent;
  padding: 10px 14px;
  font-family: 'Inter', system-ui, sans-serif;
  font-size: 14px;
  font-weight: 500;
  color: var(--lm-text-2);
  cursor: pointer;
  transition: color 120ms ease, border-color 120ms ease;
  margin-bottom: -1px;
}

.lm-rest-deals-tab:hover {
  color: var(--lm-ink);
}

.lm-rest-deals-tab--active {
  color: var(--lm-ink);
  border-bottom-color: var(--lm-ink);
  font-weight: 700;
}

.lm-rest-deals-card {
  background: var(--lm-surface);
  border: 1px solid var(--lm-line);
  border-radius: 18px;
  padding: 24px;
  display: flex;
  flex-direction: column;
  gap: 16px;
  box-shadow: 0 1px 0 rgba(24,23,15,0.02), 0 8px 24px -16px rgba(24,23,15,0.08);
}

.lm-rest-deals-card--form {
  gap: 18px;
}

.lm-rest-deals-card--empty {
  align-items: center;
  text-align: center;
  padding: 36px 24px;
}

.lm-rest-deals-card--gate {
  align-items: center;
  text-align: center;
  padding: 40px 24px;
}

.lm-rest-deals-gate-glyph {
  font-size: 48px;
  line-height: 1;
}

.lm-rest-deals-gate-body {
  display: flex;
  flex-direction: column;
  gap: 10px;
  align-items: center;
  max-width: 420px;
}

.lm-rest-deals-card-head {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.lm-rest-deals-card-title {
  font-family: 'Bricolage Grotesque', 'Inter', system-ui, sans-serif;
  font-weight: 700;
  font-size: 18px;
  margin: 0;
  display: inline-flex;
  align-items: center;
  gap: 10px;
  color: var(--lm-ink);
}

.lm-rest-deals-card-sub {
  font-family: 'Inter', system-ui, sans-serif;
  font-size: 14px;
  color: var(--lm-text-2);
  margin: 0;
  line-height: 1.5;
}

.lm-rest-deals-empty {
  display: flex;
  flex-direction: column;
  gap: 8px;
  align-items: center;
}

.lm-rest-deals-empty-msg {
  font-family: 'Inter', system-ui, sans-serif;
  font-size: 16px;
  font-weight: 700;
  color: var(--lm-ink);
  margin: 0;
}

.lm-rest-deals-empty-sub {
  font-family: 'Inter', system-ui, sans-serif;
  font-size: 13px;
  color: var(--lm-text-muted);
  margin: 0 0 8px;
}

.lm-rest-deals-table-wrap {
  overflow-x: auto;
  margin: -4px;
  padding: 4px;
}

.lm-rest-deals-table {
  width: 100%;
  border-collapse: collapse;
  font-family: 'Inter', system-ui, sans-serif;
  font-size: 14px;
  color: var(--lm-ink);
}

.lm-rest-deals-table thead tr {
  text-align: left;
  border-bottom: 2px solid var(--lm-line);
}

.lm-rest-deals-table thead th {
  padding: 10px 8px;
  font-family: 'Inter', system-ui, sans-serif;
  font-weight: 700;
  font-size: 11px;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--lm-text-muted);
}

.lm-rest-deals-table tbody tr {
  border-bottom: 1px solid var(--lm-line);
}

.lm-rest-deals-table tbody tr:last-child {
  border-bottom: none;
}

.lm-rest-deals-table tbody td {
  padding: 12px 8px;
  vertical-align: middle;
}

.lm-rest-deals-td-code {
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-weight: 700;
  font-size: 13px;
  letter-spacing: 0.02em;
  color: var(--lm-ink);
}

.lm-rest-deals-td-name {
  font-family: 'Inter', system-ui, sans-serif;
  font-weight: 400;
  font-size: 12px;
  color: var(--lm-text-muted);
  margin-top: 2px;
}

.lm-rest-deals-td-type {
  text-transform: capitalize;
  color: var(--lm-text-2);
}

.lm-rest-deals-td-meta {
  color: var(--lm-text-muted);
  font-size: 13px;
  white-space: nowrap;
}

.lm-rest-deals-td-num {
  text-align: right;
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}

.lm-rest-deals-td-actions {
  text-align: right;
  white-space: nowrap;
}

.lm-rest-deals-pill {
  display: inline-flex;
  align-items: center;
  padding: 3px 10px;
  border-radius: 999px;
  font-family: 'Inter', system-ui, sans-serif;
  font-weight: 700;
  font-size: 11px;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  line-height: 1.4;
  white-space: nowrap;
}

.lm-rest-deals-pill--live {
  background: var(--lm-basil);
  color: var(--lm-cream);
}

.lm-rest-deals-pill--scheduled {
  background: var(--lm-cocoa);
  color: var(--lm-cream);
}

.lm-rest-deals-pill--paused {
  background: var(--lm-line);
  color: var(--lm-text-2);
}

.lm-rest-deals-pill--expired {
  background: var(--lm-line);
  color: var(--lm-text-2);
}

.lm-rest-deals-pill--maxed {
  background: var(--lm-butter-soft);
  color: var(--lm-butter-ink, var(--lm-ink));
}

.lm-rest-deals-form {
  display: flex;
  flex-direction: column;
  gap: 16px;
}

.lm-rest-deals-form-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 14px;
}

.lm-rest-deals-required {
  color: var(--lm-tomato);
  font-weight: 700;
}

.lm-rest-deals-optional {
  color: var(--lm-text-muted);
  font-weight: 400;
  font-size: 12px;
  letter-spacing: 0.01em;
}

.lm-rest-deals-input-code {
  text-transform: uppercase;
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-weight: 700;
  letter-spacing: 0.04em;
}

.lm-rest-deals-kind-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.lm-rest-deals-kind-chip {
  appearance: none;
  background: var(--lm-surface);
  border: 1.5px solid var(--lm-line);
  border-radius: 999px;
  padding: 8px 16px;
  font-family: 'Inter', system-ui, sans-serif;
  font-size: 13px;
  font-weight: 600;
  color: var(--lm-text-2);
  cursor: pointer;
  transition: all 140ms ease;
  line-height: 1.2;
}

.lm-rest-deals-kind-chip:hover {
  border-color: var(--lm-ink);
  color: var(--lm-ink);
}

.lm-rest-deals-kind-chip--active {
  background: var(--lm-ink);
  border-color: var(--lm-ink);
  color: var(--lm-butter);
}

.lm-rest-deals-kind-chip--active:hover {
  background: var(--lm-ink-soft);
  border-color: var(--lm-ink-soft);
  color: var(--lm-butter);
}

.lm-rest-deals-toggle {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  cursor: pointer;
  font-family: 'Inter', system-ui, sans-serif;
  font-size: 14px;
  color: var(--lm-ink);
  user-select: none;
}

.lm-rest-deals-toggle input[type="checkbox"] {
  width: 18px;
  height: 18px;
  accent-color: var(--lm-ink);
  cursor: pointer;
}

.lm-rest-deals-form-actions {
  display: flex;
  justify-content: flex-end;
  align-items: center;
  gap: 12px;
  margin-top: 6px;
  flex-wrap: wrap;
}

.lm-rest-deals-submit {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  min-width: 160px;
}

.lm-rest-deals-submit-spinner {
  width: 14px;
  height: 14px;
  border-radius: 50%;
  border: 2px solid currentColor;
  border-top-color: transparent;
  display: none;
  animation: lm-rest-deals-spin 0.85s linear infinite;
}

.lm-rest-deals-submit-label {
  display: inline-flex;
}

.lm-rest-deals-submit--busy {
  cursor: progress;
  opacity: 0.88;
}

.lm-rest-deals-submit--busy .lm-rest-deals-submit-spinner {
  display: inline-block;
}

@keyframes lm-rest-deals-spin {
  to { transform: rotate(360deg); }
}

.lm-rest-deals-delete {
  color: var(--lm-tomato);
}

.lm-rest-deals-delete:hover {
  color: var(--lm-tomato-deep, var(--lm-tomato));
}

.lm-rest-deals-skel {
  background: linear-gradient(90deg,
    rgba(24,23,15,0.06) 0%,
    rgba(24,23,15,0.12) 50%,
    rgba(24,23,15,0.06) 100%);
  background-size: 200% 100%;
  animation: lm-rest-deals-shimmer 1.4s linear infinite;
  border-radius: 8px;
}

.lm-rest-deals-skel--eyebrow { width: 80px; height: 16px; border-radius: 999px; }
.lm-rest-deals-skel--title { width: 60%; height: 26px; }
.lm-rest-deals-skel--sub { width: 80%; height: 14px; }
.lm-rest-deals-skel--row { width: 100%; height: 44px; border-radius: 10px; }

@keyframes lm-rest-deals-shimmer {
  0% { background-position: 200% 0; }
  100% { background-position: -200% 0; }
}

@media (max-width: 720px) {
  .lm-rest-deals-form-grid {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 580px) {
  .lm-rest-deals {
    padding: 24px 14px 48px;
    gap: 16px;
  }
  .lm-rest-deals-header {
    flex-direction: column;
    align-items: flex-start;
  }
  .lm-rest-deals-header-actions {
    width: 100%;
    justify-content: space-between;
  }
  .lm-rest-deals-card {
    padding: 20px;
    border-radius: 16px;
  }
  .lm-rest-deals-tabs {
    overflow-x: auto;
  }
  .lm-rest-deals-tab {
    padding: 10px 12px;
    white-space: nowrap;
  }
  .lm-rest-deals-form-actions {
    justify-content: stretch;
  }
  .lm-rest-deals-submit {
    width: 100%;
  }
  .lm-rest-deals-table thead th {
    padding: 8px 6px;
    font-size: 10px;
  }
  .lm-rest-deals-table tbody td {
    padding: 10px 6px;
  }
}

@media (max-width: 390px) {
  .lm-rest-deals-title { font-size: 22px; }
  .lm-rest-deals-card-title { font-size: 16px; }
  .lm-rest-deals-card { padding: 16px; }
  .lm-rest-deals-kind-chip { padding: 6px 12px; font-size: 12px; }
}

/* ============================================================
   M35.2 — Restaurant flashDealsView hardening
   Tokenized shell, list table, scope chip selector, form,
   status pills (draft/scheduled/live/expired/exhausted), skeleton.
   ============================================================ */

.lm-rest-flash {
  max-width: 960px;
  margin: 0 auto;
  padding: 32px 16px 56px;
  display: flex;
  flex-direction: column;
  gap: 20px;
  color: var(--lm-ink);
}

.lm-rest-flash-header {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 16px;
  flex-wrap: wrap;
}

.lm-rest-flash-hero {
  display: flex;
  flex-direction: column;
  gap: 6px;
  flex: 1;
  min-width: 240px;
}

.lm-rest-flash-eyebrow {
  display: inline-flex;
  align-self: flex-start;
  background: var(--lm-butter);
  color: var(--lm-butter-ink, var(--lm-ink));
  font-family: 'Inter', system-ui, sans-serif;
  font-weight: 700;
  font-size: 12px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  padding: 5px 12px;
  border-radius: 999px;
}

.lm-rest-flash-title {
  font-family: 'Bricolage Grotesque', 'Inter', system-ui, sans-serif;
  font-weight: 700;
  font-size: clamp(22px, 3.4vw, 30px);
  line-height: 1.18;
  color: var(--lm-ink);
  margin: 0;
}

.lm-rest-flash-sub {
  font-family: 'Inter', system-ui, sans-serif;
  font-size: 14px;
  line-height: 1.55;
  color: var(--lm-text-2);
  max-width: 600px;
  margin: 0;
}

.lm-rest-flash-header-actions {
  display: flex;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
}

.lm-rest-flash-count {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 26px;
  height: 22px;
  padding: 0 10px;
  background: var(--lm-butter-soft);
  color: var(--lm-butter-ink, var(--lm-ink));
  font-family: 'Inter', system-ui, sans-serif;
  font-weight: 700;
  font-size: 12px;
  border-radius: 999px;
  white-space: nowrap;
}

.lm-rest-flash-card {
  background: var(--lm-surface);
  border: 1px solid var(--lm-line);
  border-radius: 18px;
  padding: 24px;
  display: flex;
  flex-direction: column;
  gap: 16px;
  box-shadow: 0 1px 0 rgba(24,23,15,0.02), 0 8px 24px -16px rgba(24,23,15,0.08);
}

.lm-rest-flash-card--form {
  gap: 18px;
}

.lm-rest-flash-card--empty {
  align-items: center;
  text-align: center;
  padding: 36px 24px;
}

.lm-rest-flash-card--gate {
  align-items: center;
  text-align: center;
  padding: 40px 24px;
}

.lm-rest-flash-gate-glyph {
  font-size: 48px;
  line-height: 1;
}

.lm-rest-flash-gate-body {
  display: flex;
  flex-direction: column;
  gap: 10px;
  align-items: center;
  max-width: 420px;
}

.lm-rest-flash-card-head {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.lm-rest-flash-card-title {
  font-family: 'Bricolage Grotesque', 'Inter', system-ui, sans-serif;
  font-weight: 700;
  font-size: 18px;
  margin: 0;
  display: inline-flex;
  align-items: center;
  gap: 10px;
  color: var(--lm-ink);
}

.lm-rest-flash-card-sub {
  font-family: 'Inter', system-ui, sans-serif;
  font-size: 14px;
  color: var(--lm-text-2);
  margin: 0;
  line-height: 1.5;
}

.lm-rest-flash-empty {
  display: flex;
  flex-direction: column;
  gap: 8px;
  align-items: center;
}

.lm-rest-flash-empty-msg {
  font-family: 'Inter', system-ui, sans-serif;
  font-size: 16px;
  font-weight: 700;
  color: var(--lm-ink);
  margin: 0;
}

.lm-rest-flash-empty-sub {
  font-family: 'Inter', system-ui, sans-serif;
  font-size: 13px;
  color: var(--lm-text-muted);
  margin: 0 0 8px;
  max-width: 420px;
}

.lm-rest-flash-table-wrap {
  overflow-x: auto;
  margin: -4px;
  padding: 4px;
}

.lm-rest-flash-table {
  width: 100%;
  border-collapse: collapse;
  font-family: 'Inter', system-ui, sans-serif;
  font-size: 14px;
  color: var(--lm-ink);
}

.lm-rest-flash-table thead tr {
  text-align: left;
  border-bottom: 2px solid var(--lm-line);
}

.lm-rest-flash-table thead th {
  padding: 10px 8px;
  font-family: 'Inter', system-ui, sans-serif;
  font-weight: 700;
  font-size: 11px;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--lm-text-muted);
}

.lm-rest-flash-table tbody tr {
  border-bottom: 1px solid var(--lm-line);
}

.lm-rest-flash-table tbody tr:last-child {
  border-bottom: none;
}

.lm-rest-flash-table tbody td {
  padding: 12px 8px;
  vertical-align: middle;
}

.lm-rest-flash-td-title {
  font-family: 'Inter', system-ui, sans-serif;
  font-weight: 600;
  color: var(--lm-ink);
}

.lm-rest-flash-td-scope {
  color: var(--lm-text-2);
  white-space: nowrap;
}

.lm-rest-flash-td-meta {
  color: var(--lm-text-muted);
  font-size: 13px;
  white-space: nowrap;
}

.lm-rest-flash-td-num {
  text-align: right;
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}

.lm-rest-flash-td-actions {
  text-align: right;
  white-space: nowrap;
  display: flex;
  gap: 6px;
  justify-content: flex-end;
}

.lm-rest-flash-pill {
  display: inline-flex;
  align-items: center;
  padding: 3px 10px;
  border-radius: 999px;
  font-family: 'Inter', system-ui, sans-serif;
  font-weight: 700;
  font-size: 11px;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  line-height: 1.4;
  white-space: nowrap;
}

.lm-rest-flash-pill--draft {
  background: var(--lm-line);
  color: var(--lm-text-2);
}

.lm-rest-flash-pill--scheduled {
  background: var(--lm-cocoa);
  color: var(--lm-cream);
}

.lm-rest-flash-pill--live {
  background: var(--lm-basil);
  color: var(--lm-cream);
}

.lm-rest-flash-pill--expired {
  background: var(--lm-line);
  color: var(--lm-text-2);
}

.lm-rest-flash-pill--exhausted {
  background: var(--lm-tomato);
  color: var(--lm-cream);
}

.lm-rest-flash-form {
  display: flex;
  flex-direction: column;
  gap: 16px;
}

.lm-rest-flash-form-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 14px;
}

.lm-rest-flash-required {
  color: var(--lm-tomato);
  font-weight: 700;
}

.lm-rest-flash-optional {
  color: var(--lm-text-muted);
  font-weight: 400;
  font-size: 12px;
}

.lm-rest-flash-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.lm-rest-flash-chip {
  appearance: none;
  background: var(--lm-surface);
  border: 1.5px solid var(--lm-line);
  border-radius: 999px;
  padding: 8px 16px;
  font-family: 'Inter', system-ui, sans-serif;
  font-size: 13px;
  font-weight: 600;
  color: var(--lm-text-2);
  cursor: pointer;
  transition: all 140ms ease;
  line-height: 1.2;
}

.lm-rest-flash-chip:hover:not(:disabled) {
  border-color: var(--lm-ink);
  color: var(--lm-ink);
}

.lm-rest-flash-chip--active {
  background: var(--lm-ink);
  border-color: var(--lm-ink);
  color: var(--lm-butter);
}

.lm-rest-flash-chip:disabled {
  opacity: 0.6;
  cursor: not-allowed;
}

.lm-rest-flash-status-row {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  padding: 12px 14px;
  background: var(--lm-surface-2, var(--lm-cream));
  border: 1px dashed var(--lm-line);
  border-radius: 12px;
  flex-wrap: wrap;
}

.lm-rest-flash-status-label {
  font-family: 'Inter', system-ui, sans-serif;
  font-size: 12px;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  font-weight: 700;
  color: var(--lm-text-muted);
}

.lm-rest-flash-status-meta {
  font-family: 'Inter', system-ui, sans-serif;
  font-size: 13px;
  color: var(--lm-text-muted);
}

.lm-rest-flash-form-actions {
  display: flex;
  justify-content: flex-end;
  align-items: center;
  gap: 12px;
  margin-top: 6px;
  flex-wrap: wrap;
}

.lm-rest-flash-submit {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  min-width: 160px;
}

.lm-rest-flash-submit-spinner {
  width: 14px;
  height: 14px;
  border-radius: 50%;
  border: 2px solid currentColor;
  border-top-color: transparent;
  display: none;
  animation: lm-rest-flash-spin 0.85s linear infinite;
}

.lm-rest-flash-submit-label {
  display: inline-flex;
}

.lm-rest-flash-submit--busy {
  cursor: progress;
  opacity: 0.88;
}

.lm-rest-flash-submit--busy .lm-rest-flash-submit-spinner {
  display: inline-block;
}

@keyframes lm-rest-flash-spin {
  to { transform: rotate(360deg); }
}

.lm-rest-flash-end {
  color: var(--lm-tomato);
}

.lm-rest-flash-skel {
  background: linear-gradient(90deg,
    rgba(24,23,15,0.06) 0%,
    rgba(24,23,15,0.12) 50%,
    rgba(24,23,15,0.06) 100%);
  background-size: 200% 100%;
  animation: lm-rest-flash-shimmer 1.4s linear infinite;
  border-radius: 8px;
}

.lm-rest-flash-skel--eyebrow { width: 80px; height: 16px; border-radius: 999px; }
.lm-rest-flash-skel--title { width: 60%; height: 26px; }
.lm-rest-flash-skel--sub { width: 80%; height: 14px; }
.lm-rest-flash-skel--row { width: 100%; height: 44px; border-radius: 10px; }

@keyframes lm-rest-flash-shimmer {
  0% { background-position: 200% 0; }
  100% { background-position: -200% 0; }
}

@media (max-width: 720px) {
  .lm-rest-flash-form-grid {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 580px) {
  .lm-rest-flash {
    padding: 24px 14px 48px;
    gap: 16px;
  }
  .lm-rest-flash-header {
    flex-direction: column;
    align-items: flex-start;
  }
  .lm-rest-flash-header-actions {
    width: 100%;
    justify-content: space-between;
  }
  .lm-rest-flash-card {
    padding: 20px;
    border-radius: 16px;
  }
  .lm-rest-flash-form-actions {
    justify-content: stretch;
  }
  .lm-rest-flash-submit {
    width: 100%;
  }
  .lm-rest-flash-table thead th {
    padding: 8px 6px;
    font-size: 10px;
  }
  .lm-rest-flash-table tbody td {
    padding: 10px 6px;
  }
  .lm-rest-flash-td-actions {
    flex-direction: column;
    align-items: stretch;
  }
}

@media (max-width: 390px) {
  .lm-rest-flash-title { font-size: 22px; }
  .lm-rest-flash-card-title { font-size: 16px; }
  .lm-rest-flash-card { padding: 16px; }
  .lm-rest-flash-chip { padding: 6px 12px; font-size: 12px; }
}

/* =============================================================
   M35.3 — Restaurant campaignsView hardening
   Tokenized shell: header, tabs, list table, form, status pills,
   stats grid, skeleton, gate, empty state. All colors consume
   :root tokens — no inline hex.
============================================================= */

.lm-rest-camp {
  display: flex;
  flex-direction: column;
  gap: 20px;
  max-width: 1040px;
  margin: 0 auto;
  padding: 24px 16px;
  font-family: 'Inter', system-ui, sans-serif;
  color: var(--lm-ink);
}

.lm-rest-camp-header {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 20px;
  flex-wrap: wrap;
}
.lm-rest-camp-hero { display: flex; flex-direction: column; gap: 6px; flex: 1; min-width: 0; }
.lm-rest-camp-eyebrow {
  display: inline-flex; align-self: flex-start;
  background: var(--lm-butter); color: var(--lm-ink);
  padding: 3px 10px; border-radius: 999px;
  font-weight: 700; font-size: 11px; letter-spacing: 0.08em; text-transform: uppercase;
}
.lm-rest-camp-title {
  font-family: 'Bricolage Grotesque', 'Inter', system-ui, sans-serif;
  font-weight: 700; font-size: 28px; line-height: 1.15; margin: 0; color: var(--lm-ink);
}
.lm-rest-camp-sub { margin: 0; color: var(--lm-text-2); font-size: 14px; line-height: 1.5; max-width: 56ch; }

.lm-rest-camp-header-actions { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.lm-rest-camp-count {
  display: inline-flex; align-items: center;
  background: var(--lm-surface-2); color: var(--lm-text-2);
  padding: 4px 10px; border-radius: 999px;
  font-weight: 600; font-size: 12px;
}

/* Tabs */
.lm-rest-camp-tabs {
  display: flex; gap: 4px; border-bottom: 1px solid var(--lm-line);
}
.lm-rest-camp-tab {
  appearance: none; background: transparent; border: 0;
  border-bottom: 2px solid transparent;
  color: var(--lm-text-2); font-family: inherit; font-weight: 500; font-size: 14px;
  padding: 10px 14px; cursor: pointer; transition: color .12s, border-color .12s;
}
.lm-rest-camp-tab:hover { color: var(--lm-ink); }
.lm-rest-camp-tab--active { color: var(--lm-ink); font-weight: 700; border-bottom-color: var(--lm-ink); }
.lm-rest-camp-tab:focus-visible { outline: 2px solid var(--lm-ink); outline-offset: 2px; border-radius: 2px; }

/* Card shell */
.lm-rest-camp-card {
  background: var(--lm-cream);
  border: 1px solid var(--lm-line);
  border-radius: 16px;
  overflow: hidden;
}
.lm-rest-camp-card--form { padding: 24px; }
.lm-rest-camp-card--form .lm-rest-camp-form { display: flex; flex-direction: column; gap: 18px; margin-top: 12px; }
.lm-rest-camp-card--empty { padding: 48px 24px; }
.lm-rest-camp-card--gate {
  padding: 40px 24px;
  display: flex; align-items: center; gap: 20px; justify-content: center;
}
.lm-rest-camp-gate-glyph {
  width: 56px; height: 56px; flex-shrink: 0;
  display: flex; align-items: center; justify-content: center;
  background: var(--lm-butter-soft); border-radius: 50%; font-size: 24px;
}
.lm-rest-camp-gate-body { display: flex; flex-direction: column; gap: 4px; }

.lm-rest-camp-card-head { padding: 20px 24px 0 24px; display: flex; flex-direction: column; gap: 4px; }
.lm-rest-camp-card-title {
  font-family: 'Bricolage Grotesque', 'Inter', system-ui, sans-serif;
  font-weight: 700; font-size: 18px; margin: 0; color: var(--lm-ink);
}
.lm-rest-camp-card-sub { margin: 0; color: var(--lm-text-2); font-size: 13px; }

/* Empty */
.lm-rest-camp-empty { display: flex; flex-direction: column; align-items: center; gap: 10px; text-align: center; }
.lm-rest-camp-empty-msg { margin: 0; font-weight: 700; font-size: 16px; color: var(--lm-ink); }
.lm-rest-camp-empty-sub { margin: 0 0 6px 0; color: var(--lm-text-2); font-size: 14px; }

/* Table */
.lm-rest-camp-table-wrap { overflow-x: auto; padding: 0 0 8px 0; }
.lm-rest-camp-table { width: 100%; border-collapse: collapse; font-size: 13px; }
.lm-rest-camp-table thead { background: var(--lm-surface-2); }
.lm-rest-camp-table th {
  text-align: left; padding: 10px 16px;
  font-weight: 600; font-size: 11px; letter-spacing: 0.06em; text-transform: uppercase;
  color: var(--lm-text-2);
}
.lm-rest-camp-table tbody tr { border-top: 1px solid var(--lm-line); }
.lm-rest-camp-table td { padding: 12px 16px; vertical-align: top; }
.lm-rest-camp-td-name { font-weight: 600; color: var(--lm-ink); }
.lm-rest-camp-td-meta { color: var(--lm-text-2); font-size: 12px; }
.lm-rest-camp-td-num { text-align: right; font-variant-numeric: tabular-nums; }
.lm-rest-camp-table th.lm-rest-camp-td-num { text-align: right; }
.lm-rest-camp-td-actions { text-align: right; white-space: nowrap; }

/* Status pills — 6 states */
.lm-rest-camp-pill {
  display: inline-flex; align-items: center;
  padding: 2px 10px; border-radius: 999px;
  font-weight: 700; font-size: 11px; letter-spacing: 0.04em;
}
.lm-rest-camp-pill--draft { background: var(--lm-line); color: var(--lm-text-2); }
.lm-rest-camp-pill--queued { background: var(--lm-cocoa); color: var(--lm-cream); }
.lm-rest-camp-pill--sending { background: var(--lm-butter-soft); color: var(--lm-ink); }
.lm-rest-camp-pill--sent { background: var(--lm-basil); color: var(--lm-cream); }
.lm-rest-camp-pill--failed { background: var(--lm-tomato); color: var(--lm-cream); }
.lm-rest-camp-pill--cancelled { background: var(--lm-line); color: var(--lm-text-2); }

/* Form */
.lm-rest-camp-required { color: var(--lm-tomato); font-weight: 700; }
.lm-rest-camp-optional { color: var(--lm-text-muted); font-weight: 400; font-size: 12px; }
.lm-rest-camp-textarea { min-height: 180px; resize: vertical; font-family: inherit; line-height: 1.5; }

/* Stats grid (sent campaign) */
.lm-rest-camp-stats {
  display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px;
  background: var(--lm-surface-2); border: 1px solid var(--lm-line);
  border-radius: 12px; padding: 16px;
}
.lm-rest-camp-stat { display: flex; flex-direction: column; gap: 2px; align-items: flex-start; }
.lm-rest-camp-stat-value {
  font-family: 'Bricolage Grotesque', 'Inter', system-ui, sans-serif;
  font-weight: 700; font-size: 22px; color: var(--lm-ink);
  font-variant-numeric: tabular-nums;
}
.lm-rest-camp-stat-label {
  color: var(--lm-text-2); font-size: 11px; letter-spacing: 0.06em; text-transform: uppercase; font-weight: 600;
}

/* Status row card */
.lm-rest-camp-status-row {
  display: flex; align-items: center; gap: 12px; flex-wrap: wrap;
  background: var(--lm-surface-2); border: 1px solid var(--lm-line);
  border-radius: 12px; padding: 12px 16px;
}
.lm-rest-camp-status-label { font-weight: 600; color: var(--lm-text-2); font-size: 12px; text-transform: uppercase; letter-spacing: 0.06em; }
.lm-rest-camp-status-meta { color: var(--lm-text-2); font-size: 13px; margin-left: auto; }

.lm-rest-camp-dryrun-note {
  margin: 0; color: var(--lm-text-2); font-size: 12px; font-style: italic;
  border-left: 3px solid var(--lm-butter); padding-left: 10px;
}

/* Form actions + busy submit */
.lm-rest-camp-form-actions {
  display: flex; gap: 8px; flex-wrap: wrap; align-items: center;
  border-top: 1px solid var(--lm-line); padding-top: 16px; margin-top: 4px;
}
.lm-rest-camp-submit { position: relative; }
.lm-rest-camp-delete { color: var(--lm-tomato); }
.lm-rest-camp-submit-spinner {
  display: none; width: 14px; height: 14px; border-radius: 50%;
  border: 2px solid currentColor; border-right-color: transparent;
  animation: lm-rest-camp-spin .8s linear infinite;
  margin-right: 8px; vertical-align: -2px;
}
.lm-rest-camp-submit--busy { pointer-events: none; opacity: .85; }
.lm-rest-camp-submit--busy .lm-rest-camp-submit-spinner { display: inline-block; }
@keyframes lm-rest-camp-spin { to { transform: rotate(360deg); } }

/* Skeleton */
.lm-rest-camp-skel {
  background: linear-gradient(90deg, var(--lm-surface-2) 0%, var(--lm-line) 50%, var(--lm-surface-2) 100%);
  background-size: 200% 100%;
  animation: lm-rest-camp-shimmer 1.4s ease-in-out infinite;
  border-radius: 8px;
}
.lm-rest-camp-skel--eyebrow { width: 80px; height: 18px; border-radius: 999px; }
.lm-rest-camp-skel--title { width: 260px; height: 30px; }
.lm-rest-camp-skel--sub { width: 360px; max-width: 80%; height: 14px; }
.lm-rest-camp-skel--row { height: 56px; margin: 12px 16px; }
@keyframes lm-rest-camp-shimmer { 0% { background-position: 200% 0; } 100% { background-position: -200% 0; } }

/* Responsive */
@media (max-width: 720px) {
  .lm-rest-camp-stats { grid-template-columns: repeat(2, 1fr); }
  .lm-rest-camp-table th, .lm-rest-camp-table td { padding: 10px 12px; }
}
@media (max-width: 580px) {
  .lm-rest-camp { padding: 16px 12px; gap: 16px; }
  .lm-rest-camp-header { flex-direction: column; align-items: stretch; }
  .lm-rest-camp-header-actions { justify-content: space-between; }
  .lm-rest-camp-title { font-size: 22px; }
  .lm-rest-camp-card--form { padding: 18px; }
  .lm-rest-camp-form-actions { flex-direction: column-reverse; align-items: stretch; }
  .lm-rest-camp-form-actions .btn { width: 100%; }
}
@media (max-width: 390px) {
  .lm-rest-camp-title { font-size: 20px; }
  .lm-rest-camp-card-head { padding: 16px 16px 0 16px; }
  .lm-rest-camp-table { font-size: 12px; }
  .lm-rest-camp-stats { grid-template-columns: 1fr; }
}

/* =============================================================
   M35.4 — Restaurant promoteView hardening
   Tokenized shell: header, tabs, boost list rows, flash list cards,
   how-it-works strip, Stripe modal, form, status pills, skeleton, gate.
   All colors consume :root tokens — no inline hex.
============================================================= */

.lm-rest-promote {
  display: flex;
  flex-direction: column;
  gap: 20px;
  max-width: 960px;
  margin: 0 auto;
  padding: 24px 16px;
  font-family: 'Inter', system-ui, sans-serif;
  color: var(--lm-ink);
}

.lm-rest-promote-header {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 20px;
  flex-wrap: wrap;
}
.lm-rest-promote-hero { display: flex; flex-direction: column; gap: 6px; flex: 1; min-width: 0; }
.lm-rest-promote-eyebrow {
  display: inline-flex; align-self: flex-start;
  background: var(--lm-butter); color: var(--lm-ink);
  padding: 3px 10px; border-radius: 999px;
  font-weight: 700; font-size: 11px; letter-spacing: 0.08em; text-transform: uppercase;
}
.lm-rest-promote-title {
  font-family: 'Bricolage Grotesque', 'Inter', system-ui, sans-serif;
  font-weight: 700; font-size: 28px; line-height: 1.15; margin: 0; color: var(--lm-ink);
}
.lm-rest-promote-sub { margin: 0; color: var(--lm-text-2); font-size: 14px; line-height: 1.5; max-width: 56ch; }

.lm-rest-promote-header-actions { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.lm-rest-promote-count {
  display: inline-flex; align-items: center;
  background: var(--lm-surface-2); color: var(--lm-text-2);
  padding: 4px 10px; border-radius: 999px;
  font-weight: 600; font-size: 12px;
}

/* Tabs */
.lm-rest-promote-tabs {
  display: flex; gap: 4px; border-bottom: 1px solid var(--lm-line);
}
.lm-rest-promote-tab {
  appearance: none; background: transparent; border: 0;
  border-bottom: 2px solid transparent;
  color: var(--lm-text-2); font-family: inherit; font-weight: 500; font-size: 14px;
  padding: 10px 14px; cursor: pointer; transition: color .12s, border-color .12s;
}
.lm-rest-promote-tab:hover { color: var(--lm-ink); }
.lm-rest-promote-tab--active { color: var(--lm-ink); font-weight: 700; border-bottom-color: var(--lm-ink); }
.lm-rest-promote-tab:focus-visible { outline: 2px solid var(--lm-ink); outline-offset: 2px; border-radius: 2px; }

/* Card shell */
.lm-rest-promote-card {
  background: var(--lm-cream);
  border: 1px solid var(--lm-line);
  border-radius: 16px;
  overflow: hidden;
}
.lm-rest-promote-card--form { padding: 24px; }
.lm-rest-promote-card--empty { padding: 48px 24px; }
.lm-rest-promote-card--gate {
  padding: 40px 24px;
  display: flex; align-items: center; gap: 20px; justify-content: center;
}
.lm-rest-promote-gate-glyph {
  width: 56px; height: 56px; flex-shrink: 0;
  display: flex; align-items: center; justify-content: center;
  background: var(--lm-butter-soft); border-radius: 50%; font-size: 24px;
}
.lm-rest-promote-gate-body { display: flex; flex-direction: column; gap: 4px; }
.lm-rest-promote-card-head { display: flex; flex-direction: column; gap: 4px; }
.lm-rest-promote-card-title {
  font-family: 'Bricolage Grotesque', 'Inter', system-ui, sans-serif;
  font-weight: 700; font-size: 18px; margin: 0; color: var(--lm-ink);
}
.lm-rest-promote-card-sub { margin: 0; color: var(--lm-text-2); font-size: 13px; }

/* How-it-works strip */
.lm-rest-promote-howto {
  display: flex; align-items: center; justify-content: space-between; gap: 16px;
  background: var(--lm-butter-soft); border: 1px solid var(--lm-line);
  border-radius: 16px; padding: 18px 22px;
}
.lm-rest-promote-howto-body { display: flex; flex-direction: column; gap: 4px; flex: 1; min-width: 0; }
.lm-rest-promote-howto-title {
  font-family: 'Bricolage Grotesque', 'Inter', system-ui, sans-serif;
  font-weight: 700; font-size: 16px; margin: 0; color: var(--lm-ink);
}
.lm-rest-promote-howto-sub { margin: 0; color: var(--lm-ink-soft); font-size: 13px; line-height: 1.5; }
.lm-rest-promote-howto-price {
  display: flex; flex-direction: column; align-items: flex-end; flex-shrink: 0;
  padding-left: 16px; border-left: 1px solid var(--lm-line);
}
.lm-rest-promote-howto-amount {
  font-family: 'Bricolage Grotesque', 'Inter', system-ui, sans-serif;
  font-weight: 800; font-size: 30px; line-height: 1; color: var(--lm-ink);
  font-variant-numeric: tabular-nums;
}
.lm-rest-promote-howto-period { color: var(--lm-text-2); font-size: 12px; font-weight: 600; }

/* Boost list rows */
.lm-rest-promote-list, .lm-rest-promote-flash-list {
  list-style: none; margin: 0; padding: 0;
  display: flex; flex-direction: column; gap: 8px;
}
.lm-rest-promote-row {
  display: flex; align-items: center; gap: 12px;
  background: var(--lm-cream); border: 1px solid var(--lm-line);
  border-radius: 12px; padding: 12px 14px;
}
.lm-rest-promote-thumb {
  width: 56px; height: 56px; border-radius: 10px; flex-shrink: 0;
  background-color: var(--lm-butter-soft); background-size: cover; background-position: center;
}
.lm-rest-promote-thumb--glyph {
  display: flex; align-items: center; justify-content: center; font-size: 20px;
}
.lm-rest-promote-row-body { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.lm-rest-promote-row-name { font-weight: 700; color: var(--lm-ink); }
.lm-rest-promote-row-meta { color: var(--lm-text-2); font-size: 13px; }
.lm-rest-promote-muted { color: var(--lm-text-muted); }
.lm-rest-promote-row-actions {
  display: flex; align-items: center; gap: 8px; flex-shrink: 0; flex-wrap: wrap; justify-content: flex-end;
}

/* Countdown text */
.lm-rest-promote-countdown {
  color: var(--lm-text-2); font-size: 12px; font-variant-numeric: tabular-nums;
}
.lm-rest-promote-countdown--card { margin-top: 4px; }

/* Status pills */
.lm-rest-promote-pill {
  display: inline-flex; align-items: center;
  padding: 3px 10px; border-radius: 999px;
  font-weight: 700; font-size: 11px; letter-spacing: 0.04em; text-transform: uppercase;
}
.lm-rest-promote-pill--featured { background: var(--lm-basil); color: var(--lm-cream); }
.lm-rest-promote-pill--active { background: var(--lm-tomato); color: var(--lm-cream); }
.lm-rest-promote-pill--ended { background: var(--lm-line); color: var(--lm-text-2); }
.lm-rest-promote-pill--cancelled { background: var(--lm-line); color: var(--lm-text-2); }

/* Flash card */
.lm-rest-promote-flash-card {
  display: flex; align-items: flex-start; justify-content: space-between; gap: 12px;
  background: var(--lm-cream); border: 1px solid var(--lm-line);
  border-radius: 12px; padding: 14px 16px;
}
.lm-rest-promote-flash-list--past .lm-rest-promote-flash-card { opacity: 0.85; }
.lm-rest-promote-flash-body { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 4px; }
.lm-rest-promote-flash-header { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.lm-rest-promote-flash-title {
  font-family: 'Bricolage Grotesque', 'Inter', system-ui, sans-serif;
  font-weight: 700; font-size: 15px; color: var(--lm-ink);
}
.lm-rest-promote-flash-meta { color: var(--lm-text-2); font-size: 12px; }
.lm-rest-promote-flash-desc { margin: 6px 0 0 0; color: var(--lm-text-2); font-size: 13px; line-height: 1.5; }

/* Sections */
.lm-rest-promote-section { display: flex; flex-direction: column; gap: 10px; }
.lm-rest-promote-section-title {
  font-family: 'Bricolage Grotesque', 'Inter', system-ui, sans-serif;
  font-weight: 700; font-size: 15px; margin: 8px 0 0 0; color: var(--lm-ink);
}
.lm-rest-promote-section-title--muted { color: var(--lm-text-2); }

/* Empty state */
.lm-rest-promote-empty { display: flex; flex-direction: column; align-items: center; gap: 8px; text-align: center; }
.lm-rest-promote-empty-msg { margin: 0; font-weight: 700; font-size: 16px; color: var(--lm-ink); }
.lm-rest-promote-empty-sub { margin: 0 0 6px 0; color: var(--lm-text-2); font-size: 14px; }

/* Form */
.lm-rest-promote-form { display: flex; flex-direction: column; gap: 14px; margin-top: 12px; }
.lm-rest-promote-form-row { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.lm-rest-promote-required { color: var(--lm-tomato); font-weight: 700; }
.lm-rest-promote-optional { color: var(--lm-text-muted); font-weight: 400; font-size: 12px; }
.lm-rest-promote-textarea { min-height: 64px; resize: vertical; font-family: inherit; line-height: 1.5; }

.lm-rest-promote-form-actions {
  display: flex; gap: 8px; flex-wrap: wrap; align-items: center; justify-content: flex-end;
  border-top: 1px solid var(--lm-line); padding-top: 16px; margin-top: 4px;
}
.lm-rest-promote-submit { position: relative; }
.lm-rest-promote-submit-spinner {
  display: none; width: 14px; height: 14px; border-radius: 50%;
  border: 2px solid currentColor; border-right-color: transparent;
  animation: lm-rest-promote-spin .8s linear infinite;
  margin-right: 8px; vertical-align: -2px;
}
.lm-rest-promote-submit--busy { pointer-events: none; opacity: .85; }
.lm-rest-promote-submit--busy .lm-rest-promote-submit-spinner { display: inline-block; }
@keyframes lm-rest-promote-spin { to { transform: rotate(360deg); } }

/* ===== Stripe Boost Modal ===== */
.lm-rest-promote-modal-overlay {
  position: fixed; inset: 0; z-index: 1000;
  background: rgba(24, 23, 15, 0.55);
  display: flex; align-items: center; justify-content: center;
  padding: 16px;
  animation: lm-rest-promote-fade-in 0.16s ease-out;
}
@keyframes lm-rest-promote-fade-in { from { opacity: 0; } to { opacity: 1; } }
.lm-rest-promote-modal-card {
  background: var(--lm-cream); border: 1px solid var(--lm-line); border-radius: 16px;
  max-width: 520px; width: 100%; max-height: 90vh; overflow-y: auto;
  box-shadow: 0 20px 60px rgba(24, 23, 15, 0.3);
}
.lm-rest-promote-modal-header {
  display: flex; align-items: flex-start; justify-content: space-between; gap: 12px;
  padding: 20px 22px 0 22px;
}
.lm-rest-promote-modal-headline { display: flex; flex-direction: column; gap: 6px; flex: 1; min-width: 0; }
.lm-rest-promote-modal-title {
  font-family: 'Bricolage Grotesque', 'Inter', system-ui, sans-serif;
  font-weight: 700; font-size: 20px; margin: 0; color: var(--lm-ink);
}
.lm-rest-promote-modal-sub { margin: 0; color: var(--lm-text-2); font-size: 13px; }
.lm-rest-promote-modal-body { padding: 16px 22px 22px 22px; }

.lm-rest-promote-modal-summary {
  background: var(--lm-surface-2); border: 1px solid var(--lm-line);
  border-radius: 12px; padding: 14px 16px; margin-bottom: 16px;
}
.lm-rest-promote-modal-summary-row {
  display: flex; align-items: center; justify-content: space-between;
  color: var(--lm-ink-soft); font-size: 14px;
}
.lm-rest-promote-modal-summary-row--total {
  margin-top: 8px; padding-top: 8px; border-top: 1px solid var(--lm-line);
  font-weight: 700; color: var(--lm-ink);
}
.lm-rest-promote-modal-element { margin: 8px 0 14px 0; }
.lm-rest-promote-modal-error {
  margin: 0 0 12px 0; padding: 10px 12px;
  background: var(--lm-danger-soft); border: 1px solid var(--lm-danger);
  border-radius: 10px; color: var(--lm-danger); font-size: 13px;
}
.lm-rest-promote-modal-actions {
  display: flex; gap: 8px; align-items: center; justify-content: flex-end;
}
.lm-rest-promote-modal-actions .btn-primary { flex: 1; }
.lm-rest-promote-modal-loading {
  display: flex; flex-direction: column; align-items: center; gap: 12px;
  padding: 28px 16px; color: var(--lm-text-2);
}
.lm-rest-promote-modal-loading p { margin: 0; font-size: 13px; }
.lm-rest-promote-modal-spinner {
  width: 32px; height: 32px; border-radius: 50%;
  border: 3px solid var(--lm-ink); border-top-color: transparent;
  animation: lm-rest-promote-spin .8s linear infinite;
}
.lm-rest-promote-modal-submit { position: relative; }
.lm-rest-promote-modal-spinner-inline {
  display: none; width: 14px; height: 14px; border-radius: 50%;
  border: 2px solid currentColor; border-right-color: transparent;
  animation: lm-rest-promote-spin .8s linear infinite;
  margin-right: 8px; vertical-align: -2px;
}
.lm-rest-promote-modal-submit--busy { pointer-events: none; opacity: .85; }
.lm-rest-promote-modal-submit--busy .lm-rest-promote-modal-spinner-inline { display: inline-block; }

/* Skeleton */
.lm-rest-promote-skel {
  background: linear-gradient(90deg, var(--lm-surface-2) 0%, var(--lm-line) 50%, var(--lm-surface-2) 100%);
  background-size: 200% 100%;
  animation: lm-rest-promote-shimmer 1.4s ease-in-out infinite;
  border-radius: 8px;
}
.lm-rest-promote-skel--eyebrow { width: 80px; height: 18px; border-radius: 999px; }
.lm-rest-promote-skel--title { width: 260px; height: 30px; }
.lm-rest-promote-skel--sub { width: 360px; max-width: 80%; height: 14px; }
.lm-rest-promote-skel--tabs { width: 220px; height: 38px; }
.lm-rest-promote-skel--row { width: 100%; height: 56px; }
@keyframes lm-rest-promote-shimmer { 0% { background-position: 200% 0; } 100% { background-position: -200% 0; } }

/* Responsive */
@media (max-width: 720px) {
  .lm-rest-promote-form-row { grid-template-columns: 1fr; }
  .lm-rest-promote-howto { flex-wrap: wrap; }
  .lm-rest-promote-howto-price { border-left: 0; padding-left: 0; align-items: flex-start; }
}
@media (max-width: 580px) {
  .lm-rest-promote { padding: 16px 12px; gap: 16px; }
  .lm-rest-promote-header { flex-direction: column; align-items: stretch; }
  .lm-rest-promote-header-actions { justify-content: space-between; }
  .lm-rest-promote-title { font-size: 22px; }
  .lm-rest-promote-card--form { padding: 18px; }
  .lm-rest-promote-form-actions { flex-direction: column-reverse; align-items: stretch; }
  .lm-rest-promote-form-actions .btn { width: 100%; }
  .lm-rest-promote-row { flex-wrap: wrap; }
  .lm-rest-promote-row-actions { width: 100%; justify-content: flex-end; }
  .lm-rest-promote-flash-card { flex-direction: column; align-items: stretch; }
}
@media (max-width: 390px) {
  .lm-rest-promote-title { font-size: 20px; }
  .lm-rest-promote-row { padding: 10px; }
  .lm-rest-promote-thumb { width: 48px; height: 48px; }
  .lm-rest-promote-howto-title { font-size: 15px; }
  .lm-rest-promote-howto-amount { font-size: 24px; }
}

/* =============================================================
   M36.1 — Restaurant importsView hardening
   Tokenized shell: header, source picker grid, dropzone card,
   submit + result, history table, skeleton, gate.
   All colors consume :root tokens — no inline hex.
============================================================= */

.lm-rest-imports {
  display: flex;
  flex-direction: column;
  gap: 20px;
  max-width: 960px;
  margin: 0 auto;
  padding: 24px 16px;
  font-family: 'Inter', system-ui, sans-serif;
  color: var(--lm-ink);
}

.lm-rest-imports-header {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 20px;
  flex-wrap: wrap;
}
.lm-rest-imports-hero { display: flex; flex-direction: column; gap: 6px; flex: 1; min-width: 0; }
.lm-rest-imports-eyebrow {
  display: inline-flex; align-self: flex-start;
  background: var(--lm-butter); color: var(--lm-ink);
  padding: 3px 10px; border-radius: 999px;
  font-weight: 700; font-size: 11px; letter-spacing: 0.08em; text-transform: uppercase;
}
.lm-rest-imports-title {
  font-family: 'Bricolage Grotesque', 'Inter', system-ui, sans-serif;
  font-weight: 700; font-size: 28px; line-height: 1.15; margin: 0; color: var(--lm-ink);
}
.lm-rest-imports-sub { margin: 0; color: var(--lm-text-2); font-size: 14px; line-height: 1.5; max-width: 60ch; }

.lm-rest-imports-header-actions { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.lm-rest-imports-count {
  display: inline-flex; align-items: center;
  background: var(--lm-surface-2); color: var(--lm-text-2);
  padding: 4px 10px; border-radius: 999px;
  font-weight: 600; font-size: 12px;
}

/* Card shell */
.lm-rest-imports-card {
  background: var(--lm-cream);
  border: 1px solid var(--lm-line);
  border-radius: 16px;
  overflow: hidden;
}
.lm-rest-imports-card--gate {
  padding: 40px 24px;
  display: flex; align-items: center; gap: 20px; justify-content: center;
}
.lm-rest-imports-gate-glyph {
  width: 56px; height: 56px; flex-shrink: 0;
  display: flex; align-items: center; justify-content: center;
  background: var(--lm-butter-soft); border-radius: 50%; font-size: 24px;
}
.lm-rest-imports-gate-body { display: flex; flex-direction: column; gap: 6px; }

.lm-rest-imports-card-head {
  padding: 20px 24px 0 24px;
  display: flex; flex-direction: column; gap: 4px;
}
.lm-rest-imports-step {
  display: inline-flex; align-self: flex-start;
  background: var(--lm-butter-soft); color: var(--lm-ink-soft);
  padding: 2px 10px; border-radius: 999px;
  font-weight: 700; font-size: 10px; letter-spacing: 0.08em; text-transform: uppercase;
  margin-bottom: 2px;
}
.lm-rest-imports-card-title {
  font-family: 'Bricolage Grotesque', 'Inter', system-ui, sans-serif;
  font-weight: 700; font-size: 18px; margin: 0; color: var(--lm-ink);
}
.lm-rest-imports-card-sub { margin: 0; color: var(--lm-text-2); font-size: 13px; line-height: 1.5; }

.lm-rest-imports-card-body { padding: 16px 24px 24px 24px; }
.lm-rest-imports-card-body--flush { padding: 16px 0 0 0; }

/* Source picker grid */
.lm-rest-imports-source-grid {
  list-style: none; margin: 0; padding: 0;
  display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px;
}
.lm-rest-imports-source-grid > li { display: flex; }
.lm-rest-imports-source {
  appearance: none; background: var(--lm-surface); border: 1px solid var(--lm-line);
  border-radius: 12px; padding: 14px 14px;
  display: flex; flex-direction: column; gap: 6px; align-items: flex-start;
  text-align: left; cursor: pointer; flex: 1;
  font-family: inherit; color: var(--lm-ink);
  transition: border-color .12s, background .12s, transform .12s;
}
.lm-rest-imports-source:hover { border-color: var(--lm-ink-soft); }
.lm-rest-imports-source:focus-visible { outline: 2px solid var(--lm-ink); outline-offset: 2px; }
.lm-rest-imports-source--active {
  background: var(--lm-butter); border-color: var(--lm-ink);
}
.lm-rest-imports-source-label {
  font-family: 'Bricolage Grotesque', 'Inter', system-ui, sans-serif;
  font-weight: 700; font-size: 15px; color: var(--lm-ink);
}
.lm-rest-imports-source-blurb {
  color: var(--lm-text-2); font-size: 12px; line-height: 1.4;
}
.lm-rest-imports-source--active .lm-rest-imports-source-blurb { color: var(--lm-ink-soft); }
.lm-rest-imports-optional { color: var(--lm-text-muted); font-weight: 400; font-size: 12px; }

/* Dropzone */
.lm-rest-imports-drop {
  border: 2px dashed var(--lm-line);
  border-radius: 14px;
  padding: 28px 20px;
  text-align: center;
  cursor: pointer;
  background: var(--lm-surface);
  display: flex; flex-direction: column; gap: 8px; align-items: center; justify-content: center;
  transition: background .15s, border-color .15s;
}
.lm-rest-imports-drop:hover { border-color: var(--lm-ink-soft); background: var(--lm-surface-2); }
.lm-rest-imports-drop--active { background: var(--lm-butter-soft); border-color: var(--lm-ink); }
.lm-rest-imports-drop--ready {
  cursor: default; border-style: solid; border-color: var(--lm-basil);
  background: var(--lm-basil-light);
}
.lm-rest-imports-drop-glyph { font-size: 26px; }
.lm-rest-imports-drop-headline {
  font-family: 'Bricolage Grotesque', 'Inter', system-ui, sans-serif;
  font-weight: 700; font-size: 15px; margin: 0; color: var(--lm-ink);
}
.lm-rest-imports-drop-sub { margin: 0; color: var(--lm-text-2); font-size: 13px; }
.lm-rest-imports-drop-link {
  appearance: none; background: transparent; border: 0; padding: 0;
  font: inherit; color: var(--lm-ink); text-decoration: underline; cursor: pointer;
}
.lm-rest-imports-drop-ready-row {
  display: flex; align-items: center; justify-content: center; gap: 10px; flex-wrap: wrap;
}
.lm-rest-imports-drop-filename { font-weight: 700; color: var(--lm-ink); }
.lm-rest-imports-drop-meta { color: var(--lm-ink-soft); font-size: 12px; }

/* Paste */
.lm-rest-imports-paste { margin-top: 14px; }
.lm-rest-imports-paste > summary {
  cursor: pointer; color: var(--lm-text-2); font-size: 13px;
  list-style: none; padding: 4px 0;
}
.lm-rest-imports-paste > summary::-webkit-details-marker { display: none; }
.lm-rest-imports-paste > summary::before { content: "▸ "; color: var(--lm-text-2); }
.lm-rest-imports-paste[open] > summary::before { content: "▾ "; }
.lm-rest-imports-textarea {
  margin-top: 8px;
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  font-size: 12px; min-height: 120px; resize: vertical;
}
.lm-rest-imports-paste-hint {
  margin: 6px 0 0 0; color: var(--lm-text-muted); font-size: 12px;
}

/* Submit + busy */
.lm-rest-imports-submit { position: relative; }
.lm-rest-imports-submit-spinner {
  display: none; width: 14px; height: 14px; border-radius: 50%;
  border: 2px solid currentColor; border-right-color: transparent;
  animation: lm-rest-imports-spin .8s linear infinite;
  margin-right: 8px; vertical-align: -2px;
}
.lm-rest-imports-submit--busy { pointer-events: none; opacity: .85; }
.lm-rest-imports-submit--busy .lm-rest-imports-submit-spinner { display: inline-block; }
@keyframes lm-rest-imports-spin { to { transform: rotate(360deg); } }

.lm-rest-imports-error {
  margin: 14px 0 0 0; padding: 10px 12px;
  background: var(--lm-danger-soft); border: 1px solid var(--lm-danger);
  border-radius: 10px; color: var(--lm-danger); font-size: 13px;
}

/* Status pills */
.lm-rest-imports-pill {
  display: inline-flex; align-items: center;
  padding: 3px 10px; border-radius: 999px;
  font-weight: 700; font-size: 11px; letter-spacing: 0.04em; text-transform: uppercase;
}
.lm-rest-imports-pill--ready { background: var(--lm-basil); color: var(--lm-cream); }
.lm-rest-imports-pill--parsed { background: var(--lm-basil); color: var(--lm-cream); }
.lm-rest-imports-pill--failed { background: var(--lm-tomato); color: var(--lm-cream); }
.lm-rest-imports-pill--discarded { background: var(--lm-line); color: var(--lm-text-2); }
.lm-rest-imports-pill--default { background: var(--lm-surface-2); color: var(--lm-text-2); }

/* Result card */
.lm-rest-imports-result {
  margin-top: 16px; padding: 18px 20px;
  background: var(--lm-butter-soft); border: 1px solid var(--lm-ink);
  border-radius: 14px;
}
.lm-rest-imports-result-head {
  display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
}
.lm-rest-imports-result-title {
  font-family: 'Bricolage Grotesque', 'Inter', system-ui, sans-serif;
  font-weight: 700; font-size: 18px; margin: 0; color: var(--lm-ink);
}

.lm-rest-imports-stats {
  margin: 14px 0 0 0; padding: 0;
  display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px;
}
.lm-rest-imports-stat {
  display: flex; flex-direction: column; gap: 2px;
}
.lm-rest-imports-stat--wide { grid-column: 1 / -1; }
.lm-rest-imports-stat dt {
  color: var(--lm-ink-soft); font-size: 10px;
  text-transform: uppercase; letter-spacing: 0.08em; font-weight: 700;
}
.lm-rest-imports-stat dd {
  margin: 0; color: var(--lm-ink);
  font-variant-numeric: tabular-nums; font-size: 14px;
}
.lm-rest-imports-stat-strong {
  font-family: 'Bricolage Grotesque', 'Inter', system-ui, sans-serif;
  font-weight: 700; font-size: 20px; line-height: 1;
}

.lm-rest-imports-warnings {
  margin-top: 14px; padding-top: 12px;
  border-top: 1px solid var(--lm-line);
}
.lm-rest-imports-warnings > summary {
  cursor: pointer; color: var(--lm-cocoa);
  font-size: 12px; font-weight: 700; list-style: none;
}
.lm-rest-imports-warnings > summary::-webkit-details-marker { display: none; }
.lm-rest-imports-warnings > summary::before { content: "▸ "; }
.lm-rest-imports-warnings[open] > summary::before { content: "▾ "; }
.lm-rest-imports-warnings ul {
  margin: 8px 0 0 0; padding-left: 20px;
  color: var(--lm-cocoa); font-size: 12px;
}

/* History table */
.lm-rest-imports-table-wrap { overflow-x: auto; padding: 0 0 8px 0; }
.lm-rest-imports-table { width: 100%; border-collapse: collapse; font-size: 13px; }
.lm-rest-imports-table thead { background: var(--lm-surface-2); }
.lm-rest-imports-table th {
  text-align: left; padding: 10px 16px;
  font-weight: 600; font-size: 11px; letter-spacing: 0.06em; text-transform: uppercase;
  color: var(--lm-text-2);
}
.lm-rest-imports-table tbody tr { border-top: 1px solid var(--lm-line); }
.lm-rest-imports-table td { padding: 12px 16px; vertical-align: top; }
.lm-rest-imports-td-source { text-transform: capitalize; font-weight: 600; }
.lm-rest-imports-td-meta { color: var(--lm-text-2); font-size: 12px; }
.lm-rest-imports-td-num { text-align: right; font-variant-numeric: tabular-nums; }
.lm-rest-imports-table th.lm-rest-imports-td-num { text-align: right; }

/* Empty */
.lm-rest-imports-empty {
  display: flex; flex-direction: column; align-items: center; gap: 6px; text-align: center;
  padding: 36px 24px;
}
.lm-rest-imports-empty-msg { margin: 0; font-weight: 700; font-size: 16px; color: var(--lm-ink); }
.lm-rest-imports-empty-sub { margin: 0; color: var(--lm-text-2); font-size: 14px; }

/* Skeleton */
.lm-rest-imports-skel {
  background: linear-gradient(90deg, var(--lm-surface-2) 0%, var(--lm-line) 50%, var(--lm-surface-2) 100%);
  background-size: 200% 100%;
  animation: lm-rest-imports-shimmer 1.4s ease-in-out infinite;
  border-radius: 8px;
}
.lm-rest-imports-skel--eyebrow { width: 80px; height: 18px; border-radius: 999px; }
.lm-rest-imports-skel--title { width: 260px; height: 30px; }
.lm-rest-imports-skel--sub { width: 360px; max-width: 80%; height: 14px; }
.lm-rest-imports-skel--step { width: 60px; height: 14px; border-radius: 999px; }
.lm-rest-imports-skel--card-title { width: 180px; height: 20px; }
.lm-rest-imports-skel--row { width: 100%; height: 80px; }
@keyframes lm-rest-imports-shimmer { 0% { background-position: 200% 0; } 100% { background-position: -200% 0; } }

/* Responsive */
@media (max-width: 840px) {
  .lm-rest-imports-source-grid { grid-template-columns: repeat(2, 1fr); }
  .lm-rest-imports-stats { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 580px) {
  .lm-rest-imports { padding: 16px 12px; gap: 16px; }
  .lm-rest-imports-header { flex-direction: column; align-items: stretch; }
  .lm-rest-imports-header-actions { justify-content: space-between; }
  .lm-rest-imports-title { font-size: 22px; }
  .lm-rest-imports-card-head { padding: 18px 18px 0 18px; }
  .lm-rest-imports-card-body { padding: 14px 18px 18px 18px; }
  .lm-rest-imports-submit { width: 100%; }
  .lm-rest-imports-result { padding: 16px; }
  .lm-rest-imports-table th, .lm-rest-imports-table td { padding: 10px 12px; }
}
@media (max-width: 390px) {
  .lm-rest-imports-title { font-size: 20px; }
  .lm-rest-imports-source-grid { grid-template-columns: 1fr; }
  .lm-rest-imports-stats { grid-template-columns: 1fr; }
}

/* ============================================================
   M36.2 — Restaurant orderKitView (NFC kit checkout)
   ============================================================ */
.lm-rest-orderkit {
  max-width: 680px;
  margin: 0 auto;
  padding: 24px 16px 48px 16px;
  display: flex;
  flex-direction: column;
  gap: 20px;
  color: var(--lm-ink);
}
.lm-rest-orderkit-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 16px;
  background: var(--lm-butter-soft);
  border: 2px solid var(--lm-ink);
  border-radius: 16px;
  padding: 18px 20px;
}
.lm-rest-orderkit-hero { display: flex; flex-direction: column; gap: 6px; flex: 1; min-width: 0; }
.lm-rest-orderkit-eyebrow {
  display: inline-flex; align-self: flex-start;
  background: var(--lm-ink); color: var(--lm-cream);
  padding: 4px 10px; border-radius: 999px;
  font-weight: 700; font-size: 11px; letter-spacing: 0.08em; text-transform: uppercase;
}
.lm-rest-orderkit-title {
  margin: 4px 0 0 0;
  font-family: 'Bricolage Grotesque', 'Inter', system-ui, sans-serif;
  font-weight: 700; font-size: 22px; line-height: 1.2;
}
.lm-rest-orderkit-sub { margin: 0; color: var(--lm-ink-soft); font-size: 13px; line-height: 1.5; max-width: 48ch; }
.lm-rest-orderkit-price { text-align: right; flex-shrink: 0; }
.lm-rest-orderkit-price-amount {
  font-family: 'Bricolage Grotesque', 'Inter', system-ui, sans-serif;
  font-weight: 800; font-size: 30px; line-height: 1; color: var(--lm-ink);
}
.lm-rest-orderkit-price-unit { color: var(--lm-ink-soft); font-size: 12px; margin-top: 2px; }

/* Stepper */
.lm-rest-orderkit-stepper {
  display: flex; align-items: center; gap: 14px; flex-wrap: wrap;
  padding: 4px 4px;
}
.lm-rest-orderkit-step {
  display: inline-flex; align-items: center; gap: 8px;
  color: var(--lm-text-muted); font-size: 13px;
}
.lm-rest-orderkit-step--active { color: var(--lm-ink); font-weight: 700; }
.lm-rest-orderkit-step--done { color: var(--lm-ink); }
.lm-rest-orderkit-step-dot {
  display: inline-flex; align-items: center; justify-content: center;
  width: 24px; height: 24px; border-radius: 50%;
  border: 2px solid var(--lm-ink); background: var(--lm-surface);
  font-weight: 700; font-size: 12px; color: var(--lm-ink);
}
.lm-rest-orderkit-step--active .lm-rest-orderkit-step-dot { background: var(--lm-butter); }
.lm-rest-orderkit-step--done .lm-rest-orderkit-step-dot { background: var(--lm-ink); color: var(--lm-cream); }
.lm-rest-orderkit-step-label { white-space: nowrap; }

/* Cards */
.lm-rest-orderkit-card {
  background: var(--lm-surface);
  border: 1px solid var(--lm-line);
  border-radius: 16px;
  overflow: hidden;
}
.lm-rest-orderkit-card--gate {
  padding: 32px 24px;
  display: flex; flex-direction: column; align-items: center; gap: 12px; text-align: center;
}
.lm-rest-orderkit-card--success {
  background: var(--lm-butter);
  border: 2px solid var(--lm-ink);
  padding: 28px 24px;
  text-align: center;
}
.lm-rest-orderkit-gate-glyph { font-size: 36px; line-height: 1; }
.lm-rest-orderkit-gate-body { display: flex; flex-direction: column; gap: 6px; align-items: center; }

.lm-rest-orderkit-card-head {
  padding: 16px 20px 0 20px;
  display: flex; flex-direction: column; gap: 4px;
}
.lm-rest-orderkit-card-title {
  margin: 0;
  font-family: 'Bricolage Grotesque', 'Inter', system-ui, sans-serif;
  font-weight: 700; font-size: 18px; color: var(--lm-ink);
}
.lm-rest-orderkit-title--danger { color: var(--lm-danger); }
.lm-rest-orderkit-card-sub { margin: 0; color: var(--lm-text-2); font-size: 13px; line-height: 1.5; }
.lm-rest-orderkit-card-body { padding: 14px 20px 20px 20px; display: flex; flex-direction: column; gap: 14px; }

/* Qty stepper */
.lm-rest-orderkit-qty {
  display: flex; align-items: center; justify-content: center; gap: 10px;
  padding: 12px 0;
}
.lm-rest-orderkit-qty-btn {
  width: 48px; height: 48px; border-radius: 12px;
  border: 1px solid var(--lm-line); background: var(--lm-surface-2);
  font-size: 22px; font-weight: 700; color: var(--lm-ink); cursor: pointer;
  display: inline-flex; align-items: center; justify-content: center;
}
.lm-rest-orderkit-qty-btn:hover { border-color: var(--lm-ink-soft); }
.lm-rest-orderkit-qty-input {
  width: 96px; height: 48px;
  text-align: center;
  font-size: 24px; font-weight: 700;
  font-family: 'Bricolage Grotesque', 'Inter', system-ui, sans-serif;
  background: var(--lm-surface);
  border: 1px solid var(--lm-line); border-radius: 12px;
  color: var(--lm-ink);
}
.lm-rest-orderkit-qty-input::-webkit-outer-spin-button,
.lm-rest-orderkit-qty-input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }

/* Summary */
.lm-rest-orderkit-summary {
  margin: 4px 0 0 0;
  padding: 14px 0 0 0;
  border-top: 2px solid var(--lm-ink);
  display: flex; flex-direction: column; gap: 6px;
}
.lm-rest-orderkit-summary-row {
  display: flex; justify-content: space-between; align-items: baseline;
  font-size: 15px;
}
.lm-rest-orderkit-summary-row dt { margin: 0; color: var(--lm-ink); }
.lm-rest-orderkit-summary-row dd { margin: 0; font-weight: 700; font-size: 18px; }
.lm-rest-orderkit-help { margin: 0; color: var(--lm-text-2); font-size: 12px; }
.lm-rest-orderkit-cta { width: 100%; }

/* Shipping row layout */
.lm-rest-orderkit-row { display: flex; gap: 10px; }
.lm-rest-orderkit-row-city { flex: 2; }
.lm-rest-orderkit-row-state { flex: 1; }
.lm-rest-orderkit-row-zip { flex: 1; }
.lm-rest-orderkit-input-upper { text-transform: uppercase; }
.lm-rest-orderkit-optional { color: var(--lm-text-muted); font-weight: 400; font-size: 12px; }

.lm-rest-orderkit-actions { display: flex; gap: 10px; align-items: center; }
.lm-rest-orderkit-actions--center { justify-content: center; }
.lm-rest-orderkit-actions-primary { flex: 1; }

/* Receipt */
.lm-rest-orderkit-receipt {
  background: var(--lm-surface-2);
  border: 1px solid var(--lm-line);
  border-radius: 12px;
  padding: 12px 14px;
  display: flex; flex-direction: column; gap: 6px;
  font-size: 14px;
}
.lm-rest-orderkit-receipt-row {
  display: flex; justify-content: space-between; align-items: baseline;
}
.lm-rest-orderkit-receipt-row--meta { color: var(--lm-text-2); font-size: 12px; }
.lm-rest-orderkit-receipt-row--total {
  margin-top: 6px; padding-top: 8px;
  border-top: 1px solid var(--lm-line);
  font-weight: 700; font-size: 15px;
}

/* Stripe element wrapper */
.lm-rest-orderkit-stripe {
  background: var(--lm-surface);
  border: 1px solid var(--lm-line);
  border-radius: 12px;
  padding: 12px;
  min-height: 80px;
}

/* Error message */
.lm-rest-orderkit-error {
  margin: 0;
  color: var(--lm-danger);
  background: var(--lm-danger-soft);
  border: 1px solid var(--lm-danger);
  border-radius: 10px;
  padding: 10px 12px;
  font-size: 13px;
}
.lm-rest-orderkit-error--hidden { display: none; }

/* Pay button busy state */
.lm-rest-orderkit-pay { position: relative; }
.lm-rest-orderkit-pay-spinner {
  display: none;
  width: 14px; height: 14px;
  border: 2px solid currentColor; border-top-color: transparent;
  border-radius: 50%;
  margin-right: 8px;
  vertical-align: -2px;
  animation: lm-rest-orderkit-spin .8s linear infinite;
}
.lm-rest-orderkit-pay--busy { pointer-events: none; opacity: .85; }
.lm-rest-orderkit-pay--busy .lm-rest-orderkit-pay-spinner { display: inline-block; }
@keyframes lm-rest-orderkit-spin { to { transform: rotate(360deg); } }

/* Generic loading row (init payment) */
.lm-rest-orderkit-loading {
  display: flex; align-items: center; justify-content: center; gap: 10px;
  padding: 24px 0;
  color: var(--lm-text-2);
}
.lm-rest-orderkit-spinner {
  display: inline-block;
  width: 24px; height: 24px;
  border: 3px solid var(--lm-ink); border-top-color: transparent;
  border-radius: 50%;
  animation: lm-rest-orderkit-spin .8s linear infinite;
}
.lm-rest-orderkit-loading-label { font-size: 14px; font-weight: 600; }

/* Success */
.lm-rest-orderkit-success-glyph { font-size: 48px; line-height: 1; }
.lm-rest-orderkit-success-title {
  margin: 12px 0 4px 0;
  font-family: 'Bricolage Grotesque', 'Inter', system-ui, sans-serif;
  font-weight: 700; font-size: 22px; color: var(--lm-ink);
}
.lm-rest-orderkit-success-body { margin: 0 0 12px 0; color: var(--lm-ink); font-size: 14px; }
.lm-rest-orderkit-success-id { margin: 0 0 16px 0; color: var(--lm-ink-soft); font-size: 12px; }
.lm-rest-orderkit-success-id code {
  background: var(--lm-cream);
  border: 1px solid var(--lm-ink);
  border-radius: 6px; padding: 2px 6px;
  font-size: 11px;
}

.lm-rest-orderkit-foot { padding: 4px 4px; }

/* Skeletons */
.lm-rest-orderkit-skel {
  background: linear-gradient(90deg, var(--lm-surface-2), var(--lm-surface-3), var(--lm-surface-2));
  background-size: 200% 100%;
  animation: lm-rest-orderkit-shimmer 1.4s ease-in-out infinite;
  border-radius: 8px;
}
@keyframes lm-rest-orderkit-shimmer { 0% { background-position: 200% 0; } 100% { background-position: -200% 0; } }
.lm-rest-orderkit-skel--eyebrow { width: 80px; height: 18px; border-radius: 999px; }
.lm-rest-orderkit-skel--title { width: 260px; max-width: 80%; height: 28px; }
.lm-rest-orderkit-skel--sub { width: 360px; max-width: 80%; height: 14px; }
.lm-rest-orderkit-skel--price { width: 72px; height: 36px; }
.lm-rest-orderkit-skel--stepper { width: 100%; max-width: 420px; height: 28px; border-radius: 999px; }
.lm-rest-orderkit-skel--card-title { width: 200px; height: 22px; }
.lm-rest-orderkit-skel--row { width: 100%; height: 80px; }

/* Mobile breakpoints */
@media (max-width: 580px) {
  .lm-rest-orderkit-header { flex-direction: column; align-items: flex-start; }
  .lm-rest-orderkit-price { text-align: left; }
  .lm-rest-orderkit-row { flex-direction: column; gap: 8px; }
  .lm-rest-orderkit-row-city,
  .lm-rest-orderkit-row-state,
  .lm-rest-orderkit-row-zip { flex: 1; }
  .lm-rest-orderkit-actions { flex-direction: column; align-items: stretch; }
  .lm-rest-orderkit-actions-primary { width: 100%; }
}
@media (max-width: 390px) {
  .lm-rest-orderkit-title { font-size: 20px; }
  .lm-rest-orderkit-stepper { gap: 10px; }
  .lm-rest-orderkit-step-label { font-size: 12px; }
}


/* ==========================================================================
   M37.0 — Diner photo-first feed tokens
   Full-bleed Instagram-style menu feed. Consumed by diner menuView, homeView,
   itemModal (M37.1–M37.4). One dish per row: square 1:1 photo on top,
   name + price + 4–7 word tagline below. Falls back to a tomato/butter
   placeholder for items missing photo_url.
   ========================================================================== */

.lm-diner-feed {
  display: flex;
  flex-direction: column;
  gap: 24px;
  width: 100%;
  max-width: 520px;
  margin: 0 auto;
  padding: 16px 0 96px;
  background: var(--lm-cream);
}

.lm-diner-feed-item {
  display: flex;
  flex-direction: column;
  background: var(--lm-surface);
  border-radius: 16px;
  overflow: hidden;
  box-shadow: 0 1px 2px rgba(24, 23, 15, 0.04), 0 4px 16px rgba(24, 23, 15, 0.06);
  cursor: pointer;
  transition: transform 0.15s ease, box-shadow 0.15s ease;
}

.lm-diner-feed-item:hover {
  transform: translateY(-2px);
  box-shadow: 0 2px 4px rgba(24, 23, 15, 0.06), 0 8px 24px rgba(24, 23, 15, 0.1);
}

.lm-diner-feed-item:active {
  transform: translateY(0);
}

.lm-diner-feed-item--unavailable {
  opacity: 0.55;
  cursor: not-allowed;
}

.lm-diner-feed-item--unavailable:hover {
  transform: none;
}

/* Square 1:1 photo container */
.lm-diner-feed-photo {
  position: relative;
  width: 100%;
  aspect-ratio: 1 / 1;
  background: var(--lm-surface-2);
  overflow: hidden;
}

.lm-diner-feed-photo img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

/* Placeholder for items missing photo_url */
.lm-diner-feed-photo--placeholder {
  display: flex;
  align-items: center;
  justify-content: center;
  background: linear-gradient(135deg, var(--lm-butter-soft) 0%, var(--lm-tomato-soft) 100%);
  color: var(--lm-ink);
}

.lm-diner-feed-photo--placeholder-glyph {
  font-size: 64px;
  line-height: 1;
  opacity: 0.55;
}

/* Loading shimmer over photo region */
.lm-diner-feed-photo--loading {
  background: linear-gradient(90deg, var(--lm-surface-2), var(--lm-surface-3), var(--lm-surface-2));
  background-size: 200% 100%;
  animation: lm-diner-feed-shimmer 1.4s ease-in-out infinite;
}

@keyframes lm-diner-feed-shimmer {
  0% { background-position: 200% 0; }
  100% { background-position: -200% 0; }
}

/* Badge overlay (e.g. flash deal, sold out) */
.lm-diner-feed-photo-badge {
  position: absolute;
  top: 12px;
  left: 12px;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 6px 12px;
  background: var(--lm-tomato);
  color: var(--lm-cream);
  font-family: var(--lm-font-display, 'Bricolage Grotesque', sans-serif);
  font-weight: 700;
  font-size: 12px;
  letter-spacing: 0.5px;
  text-transform: uppercase;
  border-radius: 999px;
  box-shadow: 0 2px 8px rgba(24, 23, 15, 0.18);
}

.lm-diner-feed-photo-badge--basil {
  background: var(--lm-basil);
}

.lm-diner-feed-photo-badge--butter {
  background: var(--lm-butter);
  color: var(--lm-ink);
}

.lm-diner-feed-photo-badge--ink {
  background: var(--lm-ink);
  color: var(--lm-butter);
}

/* Meta region below photo: name + price + tagline */
.lm-diner-feed-meta {
  display: flex;
  flex-direction: column;
  gap: 6px;
  padding: 16px 18px 18px;
}

.lm-diner-feed-meta-row {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 12px;
}

.lm-diner-feed-name {
  font-family: var(--lm-font-display, 'Bricolage Grotesque', sans-serif);
  font-weight: 700;
  font-size: 20px;
  line-height: 1.2;
  color: var(--lm-ink);
  margin: 0;
  flex: 1;
  letter-spacing: -0.01em;
}

.lm-diner-feed-price {
  font-family: var(--lm-font-display, 'Bricolage Grotesque', sans-serif);
  font-weight: 700;
  font-size: 18px;
  line-height: 1.2;
  color: var(--lm-tomato);
  white-space: nowrap;
  letter-spacing: -0.01em;
}

.lm-diner-feed-price--strike {
  font-size: 14px;
  font-weight: 500;
  color: var(--lm-text-muted);
  text-decoration: line-through;
  margin-right: 6px;
}

.lm-diner-feed-tagline {
  font-family: var(--lm-font-body, 'Inter', sans-serif);
  font-weight: 400;
  font-size: 14px;
  line-height: 1.4;
  color: var(--lm-text-2);
  margin: 0;
  font-style: italic;
}

.lm-diner-feed-tagline--empty {
  color: var(--lm-text-faint);
  font-style: normal;
}

/* Add-to-cart button affordance (optional inline action) */
.lm-diner-feed-action {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  margin-top: 12px;
  padding: 10px 16px;
  background: var(--lm-ink);
  color: var(--lm-cream);
  font-family: var(--lm-font-body, 'Inter', sans-serif);
  font-weight: 600;
  font-size: 14px;
  border: none;
  border-radius: 999px;
  cursor: pointer;
  transition: background 0.15s ease;
}

.lm-diner-feed-action:hover {
  background: var(--lm-ink-soft);
}

.lm-diner-feed-action--busy {
  opacity: 0.65;
  cursor: progress;
}

/* Skeleton card for loading state */
.lm-diner-feed-skel {
  display: flex;
  flex-direction: column;
  background: var(--lm-surface);
  border-radius: 16px;
  overflow: hidden;
  box-shadow: 0 1px 2px rgba(24, 23, 15, 0.04);
}

.lm-diner-feed-skel-photo {
  width: 100%;
  aspect-ratio: 1 / 1;
  background: linear-gradient(90deg, var(--lm-surface-2), var(--lm-surface-3), var(--lm-surface-2));
  background-size: 200% 100%;
  animation: lm-diner-feed-shimmer 1.4s ease-in-out infinite;
}

.lm-diner-feed-skel-meta {
  display: flex;
  flex-direction: column;
  gap: 10px;
  padding: 16px 18px 18px;
}

.lm-diner-feed-skel-line {
  height: 16px;
  border-radius: 8px;
  background: linear-gradient(90deg, var(--lm-surface-2), var(--lm-surface-3), var(--lm-surface-2));
  background-size: 200% 100%;
  animation: lm-diner-feed-shimmer 1.4s ease-in-out infinite;
}

.lm-diner-feed-skel-line--name { width: 60%; height: 20px; }
.lm-diner-feed-skel-line--price { width: 25%; height: 18px; align-self: flex-end; margin-top: -28px; }
.lm-diner-feed-skel-line--tagline { width: 85%; height: 14px; }

/* Section header (e.g. category name above a sub-feed) */
.lm-diner-feed-section-header {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 12px;
  padding: 16px 8px 4px;
  margin-top: 12px;
}

.lm-diner-feed-section-title {
  font-family: var(--lm-font-display, 'Bricolage Grotesque', sans-serif);
  font-weight: 700;
  font-size: 22px;
  line-height: 1.1;
  color: var(--lm-ink);
  margin: 0;
  letter-spacing: -0.02em;
}

.lm-diner-feed-section-count {
  font-family: var(--lm-font-body, 'Inter', sans-serif);
  font-size: 13px;
  color: var(--lm-text-muted);
}

/* Empty-state slot */
.lm-diner-feed-empty {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 12px;
  padding: 64px 24px;
  background: var(--lm-surface);
  border-radius: 16px;
  text-align: center;
}

.lm-diner-feed-empty-glyph {
  font-size: 48px;
  line-height: 1;
  opacity: 0.6;
}

.lm-diner-feed-empty-title {
  font-family: var(--lm-font-display, 'Bricolage Grotesque', sans-serif);
  font-weight: 700;
  font-size: 18px;
  color: var(--lm-ink);
  margin: 0;
}

.lm-diner-feed-empty-body {
  font-family: var(--lm-font-body, 'Inter', sans-serif);
  font-size: 14px;
  line-height: 1.45;
  color: var(--lm-text-muted);
  margin: 0;
  max-width: 320px;
}

/* Full-bleed mode for hero/nfc landing — fills entire viewport width */
.lm-diner-feed--bleed {
  max-width: none;
  padding: 0 0 96px;
  gap: 0;
}

.lm-diner-feed--bleed .lm-diner-feed-item {
  border-radius: 0;
  box-shadow: none;
  border-bottom: 1px solid var(--lm-line);
}

.lm-diner-feed--bleed .lm-diner-feed-item:hover {
  transform: none;
  box-shadow: none;
}

/* Mobile breakpoints — 390 is the canonical diner viewport */
@media (max-width: 580px) {
  .lm-diner-feed {
    padding: 8px 0 96px;
    gap: 16px;
    border-radius: 0;
  }
  .lm-diner-feed-item {
    border-radius: 12px;
  }
  .lm-diner-feed-name { font-size: 18px; }
  .lm-diner-feed-price { font-size: 16px; }
  .lm-diner-feed-tagline { font-size: 13px; }
}

@media (max-width: 390px) {
  .lm-diner-feed {
    max-width: 100%;
    padding: 0 0 96px;
    gap: 0;
  }
  .lm-diner-feed-item {
    border-radius: 0;
    box-shadow: none;
    border-bottom: 1px solid var(--lm-line);
  }
  .lm-diner-feed-item:hover {
    transform: none;
    box-shadow: none;
  }
  .lm-diner-feed-meta {
    padding: 14px 16px 16px;
  }
  .lm-diner-feed-name { font-size: 17px; }
  .lm-diner-feed-section-header {
    padding: 12px 16px 4px;
  }
}

/* =====================================================
   M37.4 — Diner item modal (photo-first)
   ===================================================== */
.lm-diner-item-modal {
  position: fixed;
  inset: 0;
  z-index: 220;
  display: flex;
  align-items: flex-end;
  justify-content: center;
}
.lm-diner-item-modal__backdrop {
  position: absolute;
  inset: 0;
  background: rgba(24, 23, 15, 0.55);
  animation: lm-item-modal-fade 180ms ease-out;
}
@keyframes lm-item-modal-fade {
  from { opacity: 0; }
  to   { opacity: 1; }
}
.lm-diner-item-modal__panel {
  position: relative;
  z-index: 1;
  display: flex;
  flex-direction: column;
  background: var(--lm-cream);
  color: var(--lm-ink);
  width: 100%;
  max-width: 640px;
  max-height: 100vh;
  height: 100vh;
  overflow: hidden;
  animation: lm-item-modal-slide 220ms cubic-bezier(0.16, 1, 0.3, 1);
}
@keyframes lm-item-modal-slide {
  from { transform: translateY(24px); opacity: 0; }
  to   { transform: translateY(0);    opacity: 1; }
}

/* Hero photo region — full-bleed 1:1 */
.lm-diner-item-modal__hero {
  position: relative;
  flex-shrink: 0;
}
.lm-diner-item-modal__photo {
  width: 100%;
  aspect-ratio: 1 / 1;
  max-height: 56vh;
  background: var(--lm-butter-soft);
  overflow: hidden;
  position: relative;
}
.lm-diner-item-modal__photo img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.lm-diner-item-modal__photo--placeholder {
  display: flex;
  align-items: center;
  justify-content: center;
  background: linear-gradient(160deg, var(--lm-butter-soft) 0%, var(--lm-butter) 100%);
}
.lm-diner-item-modal__photo-glyph {
  font-size: clamp(72px, 18vw, 128px);
  line-height: 1;
  filter: drop-shadow(0 4px 8px rgba(24, 23, 15, 0.12));
}

/* Floating close button overlaying the photo */
.lm-diner-item-modal__close {
  position: absolute;
  top: max(14px, env(safe-area-inset-top, 0px));
  right: 14px;
  width: 40px;
  height: 40px;
  border-radius: 50%;
  background: rgba(251, 247, 238, 0.96);
  border: 2px solid var(--lm-ink);
  font-size: 1rem;
  font-weight: 700;
  color: var(--lm-ink);
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 0;
  box-shadow: 0 2px 0 var(--lm-ink);
  transition: transform 0.1s ease, box-shadow 0.1s ease;
  z-index: 2;
}
.lm-diner-item-modal__close:active {
  transform: translate(1px, 1px);
  box-shadow: 1px 1px 0 var(--lm-ink);
}
.lm-diner-item-modal__close:focus-visible {
  outline: 3px solid var(--lm-butter);
  outline-offset: 2px;
}

/* Scrollable body between hero and footer */
.lm-diner-item-modal__body {
  flex: 1 1 auto;
  overflow-y: auto;
  padding: var(--sp-5) var(--sp-5) var(--sp-4);
  -webkit-overflow-scrolling: touch;
}
.lm-diner-item-modal__header {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--sp-4);
  margin: 0;
}
.lm-diner-item-modal__name {
  font-family: var(--font-display);
  font-size: clamp(1.5rem, 5vw, 1.875rem);
  font-weight: 700;
  line-height: 1.15;
  margin: 0;
  color: var(--lm-ink);
  letter-spacing: -0.01em;
  flex: 1 1 auto;
  min-width: 0;
}
.lm-diner-item-modal__price {
  font-family: var(--font-display);
  font-size: 1.25rem;
  font-weight: 700;
  color: var(--lm-ink);
  flex-shrink: 0;
}
.lm-diner-item-modal__tagline {
  margin: var(--sp-2) 0 0 0;
  font-size: 1rem;
  line-height: 1.45;
  color: var(--lm-ink-soft);
  font-style: italic;
  letter-spacing: 0.005em;
}
.lm-diner-item-modal__description {
  margin: var(--sp-3) 0 0 0;
  font-size: 0.9375rem;
  line-height: 1.55;
  color: var(--lm-text-2, var(--lm-ink-soft));
}
.lm-diner-item-modal__mods {
  margin-top: var(--sp-5);
}
.lm-diner-item-modal__mod-group {
  margin-bottom: var(--sp-5);
}
.lm-diner-item-modal__mod-group:last-child {
  margin-bottom: 0;
}
.lm-diner-item-modal__mod-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--sp-3);
  margin-bottom: var(--sp-2);
}
.lm-diner-item-modal__mod-name {
  font-family: var(--font-display);
  font-size: 1rem;
  font-weight: 700;
  color: var(--lm-ink);
}

/* Sticky bottom action bar */
.lm-diner-item-modal__footer {
  flex-shrink: 0;
  display: flex;
  align-items: center;
  gap: var(--sp-3);
  padding: var(--sp-3) var(--sp-5);
  padding-bottom: calc(var(--sp-3) + env(safe-area-inset-bottom, 0px));
  background: var(--lm-cream);
  border-top: 2px solid var(--lm-ink);
  box-shadow: 0 -6px 0 var(--lm-ink);
}
.lm-diner-item-modal__qty {
  display: flex;
  align-items: center;
  gap: var(--sp-2);
  flex-shrink: 0;
}
.lm-diner-item-modal__qty-display {
  min-width: 28px;
  text-align: center;
  font-family: var(--font-display);
  font-weight: 700;
  font-size: 1.125rem;
  color: var(--lm-ink);
}
.lm-diner-item-modal__add {
  flex: 1 1 auto;
  min-width: 0;
  min-height: 48px;
  font-size: 0.95rem;
  font-weight: 700;
  letter-spacing: 0.01em;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* Desktop ≥ 760px — centered card with bordered shell */
@media (min-width: 760px) {
  .lm-diner-item-modal {
    align-items: center;
    padding: var(--sp-4);
  }
  .lm-diner-item-modal__panel {
    height: auto;
    max-height: 92vh;
    border: 2px solid var(--lm-ink);
    border-radius: var(--r-xl);
    box-shadow: 0 8px 0 var(--lm-ink);
  }
  .lm-diner-item-modal__photo {
    max-height: 50vh;
  }
}

/* =====================================================
   M37.5 — Restaurant menu editor: tagline + AI photo
   ===================================================== */
.lm-menu-hint-inline {
  font-weight: 400;
  font-size: 0.8125rem;
  color: var(--lm-text-muted, var(--lm-ink-soft));
  margin-left: var(--sp-2);
}
.lm-menu-photo-actions {
  display: flex;
  flex-wrap: wrap;
  gap: var(--sp-2);
  margin-top: var(--sp-2);
}
.lm-menu-ai-btn {
  background: var(--lm-butter-soft);
  border: 2px solid var(--lm-ink);
  color: var(--lm-ink);
  font-weight: 700;
  box-shadow: 0 2px 0 var(--lm-ink);
  transition: transform 0.1s ease, box-shadow 0.1s ease, opacity 0.15s ease;
}
.lm-menu-ai-btn:hover:not(:disabled) {
  background: var(--lm-butter);
}
.lm-menu-ai-btn:active:not(:disabled) {
  transform: translate(1px, 1px);
  box-shadow: 1px 1px 0 var(--lm-ink);
}
.lm-menu-ai-btn:disabled {
  opacity: 0.55;
  cursor: not-allowed;
  box-shadow: 0 1px 0 var(--lm-ink);
}

/* =====================================================
   M37.6 — Diner cart / checkout / order photo thumbnails
   ===================================================== */

/* ---- Cart row with thumbnail ---- */
.lm-diner-cart-row {
  display: flex;
  align-items: center;
  gap: var(--sp-3);
  padding: var(--sp-3);
  background: #fff;
  border: 2px solid var(--lm-ink);
  border-radius: 14px;
  box-shadow: 4px 4px 0 var(--lm-ink);
}
.lm-diner-cart-thumb {
  flex: 0 0 64px;
  width: 64px;
  height: 64px;
  border-radius: 12px;
  overflow: hidden;
  border: 2px solid var(--lm-ink);
  background: var(--lm-cream);
  position: relative;
}
.lm-diner-cart-thumb img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.lm-diner-cart-thumb--placeholder {
  background: linear-gradient(135deg, var(--lm-butter-soft) 0%, var(--lm-butter) 100%);
  display: flex;
  align-items: center;
  justify-content: center;
}
.lm-diner-cart-thumb-glyph {
  font-size: 28px;
  line-height: 1;
}
.lm-diner-cart-body {
  flex: 1 1 0;
  min-width: 0;
}
.lm-diner-cart-name {
  font-weight: 700;
  font-size: 0.95rem;
  color: var(--lm-ink);
  margin: 0;
  line-height: 1.25;
  overflow: hidden;
  text-overflow: ellipsis;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
}
.lm-diner-cart-mods {
  color: var(--lm-ink-soft);
  font-size: 0.75rem;
  margin: 4px 0 0;
  line-height: 1.3;
}
.lm-diner-cart-price {
  font-weight: 600;
  font-size: 0.875rem;
  color: var(--lm-ink);
  margin: 6px 0 0;
}
.lm-diner-cart-actions {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 6px;
  flex: 0 0 auto;
}
.lm-diner-cart-qty {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  background: var(--lm-cream);
  border: 2px solid var(--lm-ink);
  border-radius: 999px;
  padding: 2px;
}
.lm-diner-cart-qty-btn {
  width: 28px;
  height: 28px;
  border-radius: 999px;
  border: none;
  background: transparent;
  color: var(--lm-ink);
  font-weight: 700;
  cursor: pointer;
  line-height: 1;
  font-size: 1rem;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
.lm-diner-cart-qty-btn:hover {
  background: var(--lm-butter-soft);
}
.lm-diner-cart-qty-display {
  min-width: 22px;
  text-align: center;
  font-weight: 700;
  color: var(--lm-ink);
  font-size: 0.875rem;
}
.lm-diner-cart-remove {
  width: 32px;
  height: 32px;
  border-radius: 999px;
  border: 2px solid var(--lm-ink);
  background: #fff;
  color: var(--lm-tomato);
  cursor: pointer;
  font-weight: 700;
  font-size: 0.9rem;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
.lm-diner-cart-remove:hover {
  background: var(--lm-tomato);
  color: #fff;
}

/* ---- Checkout order summary thumbnails ---- */
.lm-diner-checkout-summary-row {
  display: flex;
  align-items: center;
  gap: var(--sp-3);
  padding: 8px 0;
}
.lm-diner-checkout-summary-row + .lm-diner-checkout-summary-row {
  border-top: 1px dashed rgba(24, 23, 15, 0.12);
}
.lm-diner-checkout-summary-thumb {
  flex: 0 0 56px;
  width: 56px;
  height: 56px;
  border-radius: 10px;
  overflow: hidden;
  border: 2px solid var(--lm-ink);
  background: var(--lm-cream);
}
.lm-diner-checkout-summary-thumb img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.lm-diner-checkout-summary-thumb--placeholder {
  background: linear-gradient(135deg, var(--lm-butter-soft) 0%, var(--lm-butter) 100%);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 24px;
  line-height: 1;
}
.lm-diner-checkout-summary-text {
  flex: 1 1 0;
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: var(--sp-2);
  min-width: 0;
}
.lm-diner-checkout-summary-name {
  font-weight: 600;
  color: var(--lm-ink);
  font-size: 0.875rem;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  flex: 1 1 0;
}
.lm-diner-checkout-summary-price {
  font-weight: 700;
  color: var(--lm-ink);
  font-size: 0.875rem;
  flex: 0 0 auto;
}

/* ---- Order items list thumbnails ---- */
.lm-diner-order-item-row {
  display: flex;
  align-items: center;
  gap: var(--sp-3);
  padding: 8px 0;
}
.lm-diner-order-item-row + .lm-diner-order-item-row {
  border-top: 1px dashed rgba(24, 23, 15, 0.12);
}
.lm-diner-order-thumb {
  flex: 0 0 56px;
  width: 56px;
  height: 56px;
  border-radius: 10px;
  overflow: hidden;
  border: 2px solid var(--lm-ink);
  background: var(--lm-cream);
}
.lm-diner-order-thumb img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.lm-diner-order-thumb--placeholder {
  background: linear-gradient(135deg, var(--lm-butter-soft) 0%, var(--lm-butter) 100%);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 24px;
  line-height: 1;
}
.lm-diner-order-item-text {
  flex: 1 1 0;
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: var(--sp-2);
  min-width: 0;
}
.lm-diner-order-item-name {
  font-weight: 600;
  color: var(--lm-ink);
  font-size: 0.875rem;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  flex: 1 1 0;
}

/* =====================================================
   M38.1 — Restaurant overviewView hardening
   ===================================================== */

.lm-overview {
  display: flex;
  flex-direction: column;
  gap: 18px;
  max-width: 960px;
  margin: 0 auto;
}

/* ----- Header ----- */
.lm-overview-header {
  background: #fff;
  border: 1px solid var(--lm-line, #D4D1CA);
  border-top: 4px solid var(--lm-overview-accent, var(--lm-butter, #FFE85C));
  border-radius: 14px;
  padding: 18px 20px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  flex-wrap: wrap;
}
.lm-overview-header-text { min-width: 0; flex: 1 1 220px; }
.lm-overview-title {
  font-family: 'Bricolage Grotesque', sans-serif;
  font-size: 26px;
  line-height: 1.15;
  margin: 0;
  color: var(--lm-ink, #18170F);
  word-break: break-word;
}
.lm-overview-meta {
  margin: 6px 0 0 0;
  font-size: 13px;
  color: var(--lm-ink-soft, #3B392C);
  display: flex;
  align-items: center;
  gap: 6px;
  flex-wrap: wrap;
}
.lm-overview-meta-label { font-weight: 600; opacity: 0.7; }
.lm-overview-slug {
  background: var(--lm-cream, #FBF7EE);
  border: 1px solid var(--lm-line, #D4D1CA);
  border-radius: 6px;
  padding: 2px 8px;
  font-size: 12px;
}
.lm-overview-meta-dot { opacity: 0.4; }
.lm-overview-status {
  text-transform: capitalize;
  font-weight: 600;
  font-size: 12px;
  padding: 2px 8px;
  border-radius: 999px;
  background: var(--lm-cream, #FBF7EE);
  border: 1px solid var(--lm-line, #D4D1CA);
}
.lm-overview-status--active {
  background: rgba(31, 94, 55, 0.12);
  border-color: rgba(31, 94, 55, 0.3);
  color: var(--lm-basil, #1F5E37);
}
.lm-overview-diner-link { white-space: nowrap; flex-shrink: 0; }

/* ----- Section title ----- */
.lm-overview-section {
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.lm-overview-section-title {
  font-family: 'Bricolage Grotesque', sans-serif;
  font-size: 13px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  font-weight: 700;
  color: var(--lm-ink-soft, #3B392C);
  margin: 4px 0 0 4px;
}

/* ----- Quick action grid ----- */
.lm-overview-actions-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
}
@media (max-width: 900px) {
  .lm-overview-actions-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 560px) {
  .lm-overview-actions-grid { grid-template-columns: 1fr; }
}

.lm-overview-action {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 14px 16px;
  background: #fff;
  border: 1px solid var(--lm-line, #D4D1CA);
  border-left: 4px solid var(--lm-ink-soft, #3B392C);
  border-radius: 12px;
  text-decoration: none !important;
  color: var(--lm-ink, #18170F);
  transition: transform 120ms ease, box-shadow 120ms ease, border-color 120ms ease;
  min-height: 76px;
}
.lm-overview-action,
.lm-overview-action:hover,
.lm-overview-action:focus,
.lm-overview-action:focus-visible,
.lm-overview-action:active {
  text-decoration: none !important;
}
.lm-overview-action * {
  text-decoration: none !important;
}
.lm-overview-action:hover {
  transform: translateY(-2px);
  box-shadow: 0 6px 18px rgba(24, 23, 15, 0.08);
  border-color: var(--lm-ink, #18170F);
}
.lm-overview-action:focus-visible {
  outline: 2px solid var(--lm-tomato, #FF4B2B);
  outline-offset: 2px;
}
.lm-overview-action--butter { border-left-color: var(--lm-butter, #FFE85C); }
.lm-overview-action--tomato { border-left-color: var(--lm-tomato, #FF4B2B); }
.lm-overview-action--basil  { border-left-color: var(--lm-basil, #1F5E37); }
.lm-overview-action--cocoa  { border-left-color: var(--lm-cocoa, #5A3A1E); }
.lm-overview-action--ink    { border-left-color: var(--lm-ink, #18170F); }

.lm-overview-action--primary {
  background: linear-gradient(135deg, #fff 0%, var(--lm-butter-soft, #FFF4A8) 100%);
}

.lm-overview-action-glyph {
  font-size: 28px;
  line-height: 1;
  flex-shrink: 0;
  width: 44px;
  height: 44px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--lm-cream, #FBF7EE);
  border-radius: 10px;
  border: 1px solid var(--lm-line, #D4D1CA);
}
.lm-overview-action-text { flex: 1; min-width: 0; }
.lm-overview-action-title {
  font-family: 'Bricolage Grotesque', sans-serif;
  font-weight: 700;
  font-size: 15px;
  line-height: 1.2;
  color: var(--lm-ink, #18170F);
  margin-bottom: 2px;
}
.lm-overview-action-body {
  font-size: 12.5px;
  color: var(--lm-ink-soft, #3B392C);
  line-height: 1.35;
  overflow: hidden;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
}
.lm-overview-action-arrow {
  font-size: 18px;
  color: var(--lm-ink-soft, #3B392C);
  opacity: 0.5;
  flex-shrink: 0;
  transition: transform 120ms ease, opacity 120ms ease;
}
.lm-overview-action:hover .lm-overview-action-arrow {
  transform: translateX(2px);
  opacity: 1;
}

/* ----- KPI strip refinements ----- */
.lm-overview-kpi-head {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  margin-bottom: 14px;
  flex-wrap: wrap;
  gap: 8px;
}
.lm-overview-kpi-title {
  font-family: 'Bricolage Grotesque', sans-serif;
  margin: 0;
}
.lm-overview-kpi-asof {
  color: var(--lm-ink-soft, #3B392C);
  font-size: 12px;
}
.lm-overview-kpi-foot-sub { font-size: 11px; }
.lm-overview-kpi-empty {
  margin: 0;
  text-align: center;
  font-size: 13px;
}

/* ----- Hero photo card ----- */
.lm-overview-hero { padding: 18px 20px; }
.lm-overview-hero-head {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 12px;
  flex-wrap: wrap;
}
.lm-overview-hero-text { flex: 1; min-width: 220px; }
.lm-overview-hero-help { margin: 0 0 12px 0; font-size: 13px; }
.lm-overview-hero-actions {
  display: flex;
  gap: 8px;
  flex-shrink: 0;
}
.lm-overview-hero-preview {
  display: block;
  width: 100%;
  aspect-ratio: 16 / 9;
  border-radius: 10px;
  background-size: cover;
  background-position: center;
  border: 1px solid var(--lm-line, #D4D1CA);
  margin-top: 14px;
}
.lm-overview-hero-empty {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 10px;
  width: 100%;
  aspect-ratio: 16 / 9;
  border-radius: 10px;
  background: repeating-linear-gradient(135deg, var(--lm-cream, #FBF7EE), var(--lm-cream, #FBF7EE) 10px, #F1ECDE 10px, #F1ECDE 20px);
  border: 2px dashed var(--lm-line, #D4D1CA);
  color: var(--lm-ink-soft, #3B392C);
  font-size: 14px;
  margin-top: 14px;
}
.lm-overview-hero-empty[hidden] { display: none; }
.lm-overview-hero-empty-glyph { font-size: 36px; opacity: 0.5; }
.lm-overview-hero-empty-label { font-weight: 500; }
.lm-overview-hero-status {
  margin: 10px 0 0 0;
  font-size: 13px;
  min-height: 1.2em;
}
.lm-overview-hero-status--err { color: var(--lm-tomato, #FF4B2B); }
.lm-overview-hero-status--ok  { color: var(--lm-basil, #1F5E37); }

/* ----- Locations card ----- */
.lm-overview-locations { padding: 16px 20px; }
.lm-overview-card-title {
  margin: 0 0 12px 0;
  font-family: 'Bricolage Grotesque', sans-serif;
  font-size: 16px;
  display: inline-flex;
  align-items: center;
  gap: 8px;
}
.lm-overview-card-count {
  background: var(--lm-butter-soft, #FFF4A8);
  border: 1px solid var(--lm-ink, #18170F);
  border-radius: 999px;
  padding: 1px 8px;
  font-size: 11px;
  font-weight: 600;
}
.lm-overview-location-list {
  list-style: none;
  padding: 0;
  margin: 0;
}
.lm-overview-location {
  padding: 10px 0;
  border-bottom: 1px solid var(--lm-line, #D4D1CA);
}
.lm-overview-location:last-child { border-bottom: none; }
.lm-overview-location-name { font-weight: 600; }
.lm-overview-location-addr {
  color: var(--lm-ink-soft, #3B392C);
  font-size: 13px;
  margin-top: 2px;
}
.lm-overview-locations-empty { margin: 0; }

/* ----- NFC Kit card ----- */
.lm-overview-kit {
  padding: 18px 20px;
  display: flex;
  align-items: flex-start;
  gap: 16px;
}
.lm-overview-kit--cta {
  background: var(--lm-butter-soft, #FFF4A8);
  border: 2px solid var(--lm-ink, #18170F);
}
.lm-overview-kit--status-shipped { border-left: 4px solid var(--lm-basil, #1F5E37); }
.lm-overview-kit--status-refunded { border-left: 4px solid var(--lm-tomato, #FF4B2B); }
.lm-overview-kit--status-paid { border-left: 4px solid var(--lm-ink, #18170F); }
.lm-overview-kit-body { flex: 1; }
.lm-overview-kit-row { display: flex; align-items: center; gap: 8px; }
.lm-overview-kit-pill {
  display: inline-block;
  padding: 2px 8px;
  border-radius: 999px;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.05em;
  color: #fff;
  background: var(--lm-ink, #18170F);
}
.lm-overview-kit-pill--shipped  { background: var(--lm-basil, #1F5E37); }
.lm-overview-kit-pill--refunded { background: var(--lm-tomato, #FF4B2B); }
.lm-overview-kit-title {
  margin: 8px 0 4px 0;
  font-family: 'Bricolage Grotesque', sans-serif;
  font-size: 18px;
}
.lm-overview-kit-help { margin: 0 0 12px 0; font-size: 13.5px; }
.lm-overview-kit-tracking { margin: 8px 0 0 0; font-size: 13px; }
.lm-overview-kit-price {
  text-align: right;
  flex-shrink: 0;
}
.lm-overview-kit-price-num {
  font-size: 36px;
  font-weight: 800;
  font-family: 'Bricolage Grotesque', sans-serif;
  line-height: 1;
  color: var(--lm-ink, #18170F);
}
.lm-overview-kit-price-sub { font-size: 11px; color: var(--lm-ink-soft, #3B392C); }

/* ----- Import + Live card ----- */
.lm-overview-import {
  padding: 16px 20px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  flex-wrap: wrap;
  border-left: 4px solid var(--lm-cocoa, #5A3A1E);
}
.lm-overview-import-text { flex: 1; min-width: 200px; }
.lm-overview-import-meta { margin: 0; font-size: 13px; }
.lm-overview-live { padding: 16px 20px; }
.lm-overview-live-help { margin: 0 0 8px 0; font-size: 13px; }
.lm-overview-live-url {
  display: block;
  padding: 10px 12px;
  background: var(--lm-cream, #FBF7EE);
  border: 1px solid var(--lm-line, #D4D1CA);
  border-radius: 8px;
  font-size: 12.5px;
  word-break: break-all;
  color: var(--lm-ink-soft, #3B392C);
}

/* ----- Error state ----- */
.lm-overview-error {
  text-align: center;
  padding: 40px 24px;
}
.lm-overview-error-icon { font-size: 44px; line-height: 1; margin-bottom: 14px; }
.lm-overview-error-title {
  font-family: 'Bricolage Grotesque', sans-serif;
  font-size: 22px;
  margin: 0 0 8px 0;
}
.lm-overview-error-body {
  color: var(--lm-ink-soft, #3B392C);
  margin: 0 0 18px 0;
  font-size: 14px;
}
.lm-overview-empty { padding: 40px 20px; text-align: center; }

/* ----- Skeleton ----- */
.lm-overview-header--skel {
  border-top-color: var(--lm-line, #D4D1CA);
  background: #fff;
}
.lm-overview-skel-title,
.lm-overview-skel-meta,
.lm-overview-skel-strip-head,
.lm-overview-skel-tile,
.lm-overview-skel-card {
  position: relative;
  overflow: hidden;
  background: linear-gradient(90deg, #F0EBDC 0%, #F8F4E5 50%, #F0EBDC 100%);
  background-size: 200% 100%;
  border-radius: 8px;
  animation: lm-overview-shimmer 1.4s ease-in-out infinite;
}
.lm-overview-skel-title  { width: 60%; height: 28px; }
.lm-overview-skel-meta   { width: 40%; height: 14px; margin-top: 8px; }
.lm-overview-skel-strip-head { width: 50%; height: 18px; margin-bottom: 14px; }
.lm-overview-skel-tile   { height: 96px; }
.lm-overview-skel-card   {
  height: 76px;
  border-radius: 12px;
}

@keyframes lm-overview-shimmer {
  0%   { background-position: 200% 0; }
  100% { background-position: -200% 0; }
}

@media (prefers-reduced-motion: reduce) {
  .lm-overview-skel-title,
  .lm-overview-skel-meta,
  .lm-overview-skel-strip-head,
  .lm-overview-skel-tile,
  .lm-overview-skel-card {
    animation: none;
  }
  .lm-overview-action,
  .lm-overview-action-arrow {
    transition: none;
  }
}

/* ============================================================
   M38.2 — Restaurant analyticsView hardening
   Inline-style sweep: every helper section now uses tokens.
   Structural M25 hardening (skeleton, error+retry, range tabs,
   URL sync, CSV export, chart hover) is preserved.
   ============================================================ */

/* ---------- Layout grids reused across the page ---------- */
.lm-analytics-grid {
  display: flex;
  flex-wrap: wrap;
  gap: 16px;
  align-items: stretch;
}
.lm-analytics-col--main { flex: 2; min-width: 360px; }
.lm-analytics-col--side { flex: 1; min-width: 260px; }
.lm-analytics-col--half { flex: 1; min-width: 340px; }
@media (max-width: 480px) {
  .lm-analytics-col--main,
  .lm-analytics-col--side,
  .lm-analytics-col--half { min-width: 0; flex: 1 1 100%; }
}

/* ---------- Card head sub-elements ---------- */
.lm-analytics-card-title {
  margin: 0 0 4px 0;
  font-family: 'Bricolage Grotesque', Inter, system-ui, sans-serif;
}
.lm-analytics-card-subtitle {
  margin: 0;
  font-size: 13px;
  color: var(--lm-ink-soft, #3B392C);
}
.lm-analytics-card-meta {
  font-size: 12px;
  color: var(--lm-ink-soft, #3B392C);
}
.lm-analytics-meta-row {
  display: flex;
  gap: 8px;
  align-items: center;
}

/* ---------- KPI cards ---------- */
.lm-analytics-kpi {
  flex: 1;
  min-width: 180px;
}
.lm-kpi-label {
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--lm-ink-soft, #3B392C);
}
.lm-kpi-value {
  font-size: 26px;
  font-weight: 700;
  margin-top: 4px;
  font-variant-numeric: tabular-nums;
  line-height: 1.1;
}
.lm-kpi-delta-row { margin-top: 4px; }
.lm-kpi-delta {
  font-size: 12px;
  font-weight: 600;
  font-variant-numeric: tabular-nums;
}
.lm-kpi-delta--up   { color: var(--lm-basil, #1F5E37); }
.lm-kpi-delta--down { color: #B23B1E; }
.lm-kpi-delta--flat { color: #7A7974; }
.lm-kpi-delta--empty {
  color: var(--lm-ink-soft, #3B392C);
  font-size: 12px;
  font-weight: 400;
}
.lm-kpi-tip-suffix {
  color: var(--lm-ink-soft, #3B392C);
  font-size: 13px;
  font-weight: 500;
}

/* ---------- Hour of day bars ---------- */
.lm-hour-bars {
  display: flex;
  align-items: flex-end;
  gap: 2px;
  height: 120px;
  padding: 4px 0 0 0;
}
.lm-hour-bar {
  flex: 1;
  border-radius: 3px 3px 0 0;
  background: var(--lm-butter, #FFE85C);
  transition: filter 120ms ease, transform 120ms ease;
}
.lm-hour-bar:hover {
  filter: brightness(1.05);
  transform: scaleY(1.02);
  transform-origin: bottom;
}
.lm-hour-bar--hot { background: var(--lm-tomato, #FF4B2B); }
.lm-hour-bar--zero {
  background: #E6E2D4;
  height: 2px !important;
}
.lm-hour-axis {
  display: flex;
  gap: 2px;
  margin-top: 6px;
}
.lm-hour-axis-tick {
  flex: 1;
  text-align: center;
  font-size: 9px;
  color: #7A7974;
}

/* ---------- New vs returning ---------- */
.lm-nvr-bar {
  display: flex;
  height: 14px;
  border-radius: 7px;
  overflow: hidden;
  background: #F4EFDE;
}
.lm-nvr-seg--new { background: var(--lm-tomato, #FF4B2B); }
.lm-nvr-seg--ret { background: var(--lm-basil, #1F5E37); }
.lm-nvr-legend {
  display: flex;
  gap: 16px;
  flex-wrap: wrap;
  margin-top: 10px;
}
.lm-nvr-legend-item {
  display: flex;
  gap: 6px;
  align-items: center;
  font-size: 13px;
}
.lm-nvr-swatch {
  display: inline-block;
  width: 10px;
  height: 10px;
  border-radius: 2px;
}
.lm-nvr-swatch--new { background: var(--lm-tomato, #FF4B2B); }
.lm-nvr-swatch--ret { background: var(--lm-basil, #1F5E37); }
.lm-nvr-legend-name { font-weight: 600; }
.lm-nvr-legend-meta { color: var(--lm-ink-soft, #3B392C); }

/* ---------- POS recon ---------- */
.lm-recon-header {
  display: flex;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 8px;
}
.lm-recon-source { font-weight: 600; }
.lm-recon-source-meta {
  color: var(--lm-ink-soft, #3B392C);
  font-size: 12px;
}
.lm-recon-tiles {
  display: flex;
  gap: 16px;
  flex-wrap: wrap;
  margin-top: 14px;
}
.lm-recon-tile-label {
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--lm-ink-soft, #3B392C);
}
.lm-recon-tile-value {
  font-size: 20px;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  margin-top: 2px;
}
.lm-recon-tile-sub {
  color: var(--lm-ink-soft, #3B392C);
  font-size: 11px;
  margin-top: 2px;
  font-variant-numeric: tabular-nums;
}
.lm-recon-tile--variance-pos { background: var(--lm-basil-light, #B8D9C4); }
.lm-recon-tile--variance-neg { background: var(--lm-tomato-soft, #FCE4EC); }
.lm-recon-footnote {
  color: var(--lm-ink-soft, #3B392C);
  font-size: 12px;
  margin: 10px 0 0 0;
}
.lm-recon-empty {
  color: var(--lm-ink-soft, #3B392C);
}
.lm-recon-empty-link {
  color: inherit;
  text-decoration: underline;
}

/* ---------- NFC funnel ---------- */
.lm-funnel-row { margin-bottom: 10px; }
.lm-funnel-head {
  display: flex;
  justify-content: space-between;
  font-size: 13px;
  margin-bottom: 2px;
}
.lm-funnel-value {
  font-weight: 600;
  font-variant-numeric: tabular-nums;
}
.lm-funnel-track {
  height: 10px;
  background: #F4EFDE;
  border-radius: 6px;
  overflow: hidden;
}
.lm-funnel-fill {
  height: 100%;
  border-radius: 6px;
}
.lm-funnel-fill--taps    { background: var(--lm-butter, #FFE85C); }
.lm-funnel-fill--unique  { background: #FFC553; }
.lm-funnel-fill--orders  { background: var(--lm-basil, #1F5E37); }
.lm-funnel-summary {
  border-top: 1px solid var(--lm-line, #E6E2D4);
  margin-top: 12px;
  padding-top: 10px;
  display: flex;
  justify-content: space-between;
  font-size: 13px;
}
.lm-funnel-summary-row {
  display: flex;
  justify-content: space-between;
  font-size: 13px;
  margin-top: 4px;
}
.lm-funnel-summary-label { color: var(--lm-ink-soft, #3B392C); }
.lm-funnel-summary-value {
  font-weight: 700;
  font-variant-numeric: tabular-nums;
}

/* ---------- Top items ---------- */
.lm-top-items-list {
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.lm-top-item-head {
  display: flex;
  justify-content: space-between;
  font-size: 13px;
  margin-bottom: 2px;
}
.lm-top-item-name { font-weight: 600; }
.lm-top-item-meta {
  color: var(--lm-ink-soft, #3B392C);
  font-variant-numeric: tabular-nums;
}
.lm-top-item-track {
  height: 8px;
  background: #F4EFDE;
  border-radius: 5px;
  overflow: hidden;
}
.lm-top-item-fill {
  height: 100%;
  background: var(--lm-tomato, #FF4B2B);
  border-radius: 5px;
}

/* ---------- Top diners table ---------- */
.lm-diners-wrap {
  overflow-x: auto;
}
.lm-diners-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 13px;
}
.lm-diners-table thead tr {
  text-align: left;
  border-bottom: 2px solid var(--lm-line, #E6E2D4);
}
.lm-diners-table th {
  padding: 6px 4px;
}
.lm-diners-th--right { text-align: right; }
.lm-diners-table tbody tr {
  border-bottom: 1px solid var(--lm-line, #E6E2D4);
}
.lm-diners-table td {
  padding: 6px 4px;
}
.lm-diners-td--right {
  text-align: right;
  font-variant-numeric: tabular-nums;
}
.lm-diners-td--money {
  font-weight: 600;
}
.lm-diners-name { font-weight: 600; }
.lm-diners-phone {
  color: var(--lm-ink-soft, #3B392C);
  font-size: 11px;
}

/* ---------- Order channels (stacked bar) ---------- */
.lm-channels-bar {
  display: flex;
  height: 14px;
  border-radius: 7px;
  overflow: hidden;
  background: #F4EFDE;
}
.lm-channels-legend {
  display: flex;
  gap: 16px;
  flex-wrap: wrap;
  margin-top: 10px;
}
.lm-channels-legend-item {
  display: flex;
  gap: 6px;
  align-items: center;
  font-size: 13px;
}
.lm-channels-swatch {
  display: inline-block;
  width: 10px;
  height: 10px;
  border-radius: 2px;
}
.lm-channels-legend-name { font-weight: 600; }
.lm-channels-legend-meta { color: var(--lm-ink-soft, #3B392C); }

/* ---------- Revenue chart ---------- */
.lm-revenue-svg {
  display: block;
  max-width: 100%;
  height: auto;
}

/* ---------- Skeleton extras ---------- */
.lm-skel-grid {
  display: flex;
  flex-wrap: wrap;
  gap: 16px;
}

/* ---------- Reduced motion ---------- */
@media (prefers-reduced-motion: reduce) {
  .lm-hour-bar { transition: none; }
  .lm-hour-bar:hover { transform: none; filter: none; }
}

/* Content loading veil + error title/msg (M38.2 supplement) */
.lm-analytics-content--loading {
  opacity: 0.45;
  pointer-events: none;
  transition: opacity 140ms ease;
}
.lm-analytics-error-title {
  margin: 0;
}
.lm-analytics-error-msg {
  margin: 8px 0 16px;
  font-size: 14px;
  max-width: 420px;
  color: var(--lm-ink-soft, #3B392C);
}

/* Header title + as-of stamp (M38.2) */
.lm-analytics-title { margin: 0; }
.lm-analytics-asof {
  margin: 4px 0 0 0;
  font-size: 12px;
  color: var(--lm-ink-soft, #3B392C);
}

/* =====================================================
   M38.3 — Restaurant customersView hardening
   ===================================================== */

/* Shell + header */
.lm-cust-shell {
  display: flex;
  flex-direction: column;
  gap: 16px;
  max-width: 1080px;
  margin: 0 auto;
}
.lm-cust-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  flex-wrap: wrap;
  gap: 12px;
}
.lm-cust-header-right { text-align: right; }
.lm-cust-title {
  margin: 0;
  font-family: 'Bricolage Grotesque', sans-serif;
}
.lm-cust-subtitle {
  margin: 4px 0 0 0;
  font-size: 13px;
  color: var(--lm-ink-soft, #3B392C);
}

/* Segment chip strip */
.lm-cust-seg-wrap { padding: 10px 12px; }
.lm-cust-seg-strip {
  display: flex;
  gap: 8px;
  overflow-x: auto;
  padding: 2px 2px 6px 2px;
  scrollbar-width: thin;
}
.lm-cust-seg-chip {
  flex: 0 0 auto;
  padding: 6px 12px;
  border: 1px solid var(--lm-ink, #18170F);
  border-radius: 999px;
  background: #fff;
  color: var(--lm-ink, #18170F);
  font-size: 13px;
  font-weight: 600;
  cursor: pointer;
  white-space: nowrap;
  font-family: inherit;
  transition: background 120ms ease, color 120ms ease;
}
.lm-cust-seg-chip:hover { background: var(--lm-cream, #FBF7EE); }
.lm-cust-seg-chip[aria-pressed="true"] {
  background: var(--lm-ink, #18170F);
  color: var(--lm-butter, #FFE85C);
}
.lm-cust-seg-chip[aria-pressed="true"]:hover { background: var(--lm-ink, #18170F); }

/* Search + summary bar */
.lm-cust-toolbar {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  flex-wrap: wrap;
  align-items: center;
}
.lm-cust-search-input {
  flex: 1;
  min-width: 240px;
  padding: 10px 12px;
  border: 1px solid var(--lm-ink, #18170F);
  border-radius: 8px;
  font-size: 14px;
  background: #fff;
  font-family: inherit;
  color: var(--lm-ink, #18170F);
}
.lm-cust-search-input::placeholder { color: var(--lm-ink-soft, #3B392C); opacity: .65; }
.lm-cust-summary {
  font-size: 13px;
  font-variant-numeric: tabular-nums;
  color: var(--lm-ink-soft, #3B392C);
}
.lm-cust-email-audience-btn { /* visibility toggled by .is-hidden */ }
.lm-cust-email-audience-btn.is-hidden { display: none !important; }

/* List card */
.lm-cust-list-card { padding: 0; overflow: hidden; }
.lm-cust-list-loading,
.lm-cust-list-error,
.lm-cust-list-empty {
  padding: 16px;
  margin: 0;
  font-size: 13px;
}
.lm-cust-list-empty { padding: 32px 16px; text-align: center; }
.lm-cust-list-error { color: var(--lm-tomato, #FF4B2B); }

/* Table head + rows — shared grid template via custom property */
.lm-cust-table { --lm-cust-cols: 1.5fr 1fr 0.6fr 0.7fr 0.6fr 0.6fr 0.6fr; }
.lm-cust-thead {
  display: grid;
  grid-template-columns: var(--lm-cust-cols);
  gap: 12px;
  padding: 10px 16px;
  font-size: 12px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--lm-ink-soft, #3B392C);
  background: var(--lm-cream, #FBF7EE);
  border-bottom: 1px solid var(--lm-line, #D4D1CA);
}
.lm-cust-th--right { text-align: right; }
.lm-cust-row {
  display: grid;
  grid-template-columns: var(--lm-cust-cols);
  gap: 12px;
  align-items: center;
  padding: 14px 16px;
  width: 100%;
  text-align: left;
  background: #fff;
  border: 0;
  border-bottom: 1px solid var(--lm-line, #D4D1CA);
  cursor: pointer;
  font-family: inherit;
  font-size: 14px;
  color: var(--lm-ink, #18170F);
  transition: background 120ms ease;
}
.lm-cust-row:hover { background: var(--lm-cream, #FBF7EE); }
.lm-cust-row:last-child { border-bottom: 0; }
.lm-cust-row:focus-visible { outline: 2px solid var(--lm-butter, #FFE85C); outline-offset: -2px; }

.lm-cust-row-name {
  font-weight: 600;
  color: var(--lm-ink, #18170F);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.lm-cust-row-subline {
  font-size: 12px;
  color: var(--lm-ink-soft, #3B392C);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.lm-cust-row-cell { font-size: 13px; }
.lm-cust-row-cell--num {
  text-align: right;
  font-variant-numeric: tabular-nums;
}
.lm-cust-row-cell--money {
  text-align: right;
  font-variant-numeric: tabular-nums;
  font-weight: 600;
}
.lm-cust-row-empty {
  font-size: 13px;
  color: var(--lm-ink-soft, #3B392C);
}
.lm-cust-row-tag {
  font-size: 11px;
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  color: var(--lm-ink, #18170F);
}

/* Status + passport pills used in the table cells */
.lm-cust-pill {
  display: inline-flex;
  align-items: center;
  padding: 2px 8px;
  border-radius: 999px;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.02em;
}
.lm-cust-pill--passport { background: var(--lm-basil, #1F5E37); color: #fff; }
.lm-cust-pill--status { color: #fff; font-size: 10px; margin-left: 6px; }
.lm-cust-pill--status[data-status="delivered"],
.lm-cust-pill--status[data-status="picked_up"] { background: var(--lm-basil, #1F5E37); }
.lm-cust-pill--status[data-status="refunded"],
.lm-cust-pill--status[data-status="rejected"],
.lm-cust-pill--status[data-status="cancelled"] { background: var(--lm-tomato, #FF4B2B); }
.lm-cust-pill--status[data-status="ready"],
.lm-cust-pill--status[data-status="preparing"],
.lm-cust-pill--status[data-status="accepted"] { background: var(--lm-cocoa, #5A3A1E); }
.lm-cust-pill--status:not([data-status="delivered"]):not([data-status="picked_up"]):not([data-status="refunded"]):not([data-status="rejected"]):not([data-status="cancelled"]):not([data-status="ready"]):not([data-status="preparing"]):not([data-status="accepted"]) { background: var(--lm-ink-soft, #3B392C); }

/* Loyalty delta colour */
.lm-cust-loyalty-delta--pos { color: var(--lm-basil, #1F5E37); }
.lm-cust-loyalty-delta--neg { color: var(--lm-tomato, #FF4B2B); }

/* Pager */
.lm-cust-pager {
  display: flex;
  justify-content: center;
  gap: 8px;
}
.lm-cust-pager-page {
  font-size: 13px;
  align-self: center;
  font-variant-numeric: tabular-nums;
  color: var(--lm-ink-soft, #3B392C);
}

/* Mobile reflow — promotes hidden header + 2-column row layout */
@media (max-width: 720px) {
  .lm-cust-thead { display: none; }
  .lm-cust-table {
    --lm-cust-cols: 1fr 1fr;
  }
  .lm-cust-row {
    grid-template-areas:
      "name name"
      "last orders"
      "ltv points"
      "passport via";
  }
  .lm-cust-row > :nth-child(1) { grid-area: name; }
  .lm-cust-row > :nth-child(2) { grid-area: last; }
  .lm-cust-row > :nth-child(3) { grid-area: orders; }
  .lm-cust-row > :nth-child(4) { grid-area: ltv; }
  .lm-cust-row > :nth-child(5) { grid-area: passport; }
  .lm-cust-row > :nth-child(6) { grid-area: points; }
  .lm-cust-row > :nth-child(7) { grid-area: via; }
}

@media (prefers-reduced-motion: reduce) {
  .lm-cust-seg-chip,
  .lm-cust-row { transition: none; }
}

/* M38.3 supplement — row id text wrap + drawer pill variants + section empty */
.lm-cust-row-id-text {
  min-width: 0;
  flex: 1;
}
.lm-cust-pill--loyalty { background: var(--lm-butter, #FFE85C); color: var(--lm-ink, #18170F); }
.lm-cust-pill--nfc { background: var(--lm-ink, #18170F); color: #fff; }
.lm-cust-section-empty { margin: 0; font-size: 13px; }

/* =========================================================
   M38.4 — ordersView hardening (live ops + photo thumbs)
   ---------------------------------------------------------
   New tokens for:
     - lm-orders-item-thumb  — 48px photo thumbnail with placeholder gradient fallback
     - lm-orders-item-instr  — special_instructions row under each line item
     - lm-skel-line--w-*      — pure-CSS skeleton width variants (replaces inline style="width:...%")
   ========================================================= */

:root {
  --lm-order-thumb-size: 44px;
  --lm-order-thumb-radius: 8px;
  --lm-order-thumb-bg: var(--lm-surface-3);
  --lm-order-thumb-placeholder: linear-gradient(135deg, var(--lm-butter-soft) 0%, var(--lm-tomato) 100%);
  --lm-order-instr-color: var(--lm-cocoa, #5A3A1E);
  --lm-order-instr-bg: rgba(90, 58, 30, 0.06);
}

/* Adjust item row to host thumbnail + name column + price */
.lm-orders-item-row {
  align-items: flex-start;
}

/* Thumbnail */
.lm-orders-item-thumb {
  width: var(--lm-order-thumb-size);
  height: var(--lm-order-thumb-size);
  border-radius: var(--lm-order-thumb-radius);
  background-color: var(--lm-order-thumb-bg);
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  flex-shrink: 0;
  position: relative;
  overflow: hidden;
  /* When --lm-order-item-photo is set inline, use it. Otherwise show placeholder. */
  background-image: var(--lm-order-item-photo, var(--lm-order-thumb-placeholder));
}

.lm-orders-item-thumb[data-no-photo="true"] {
  background-image: var(--lm-order-thumb-placeholder);
}

/* Tiny "no photo" mark for accessibility/affordance — only renders via aria-label, visually hidden */
.lm-orders-item-thumb-fallback {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 18px;
  color: var(--lm-ink);
  opacity: 0.45;
  pointer-events: none;
}

/* Special instructions row */
.lm-orders-item-instr {
  display: block;
  margin-top: 4px;
  padding: 4px 8px;
  font-size: 12px;
  color: var(--lm-order-instr-color);
  background: var(--lm-order-instr-bg);
  border-radius: 6px;
  font-style: italic;
}

.lm-orders-item-instr::before {
  content: "✎ ";
  font-style: normal;
  margin-right: 2px;
}

/* Mobile reflow: keep thumb size smaller on narrow viewports */
@media (max-width: 540px) {
  :root {
    --lm-order-thumb-size: 36px;
  }
  .lm-orders-item-row {
    gap: 8px;
  }
}

/* ---------------------------------------------------------
   Skeleton width variants — pure-CSS, replaces inline style attrs
   --------------------------------------------------------- */
.lm-skel-line--w-30 { width: 30%; }
.lm-skel-line--w-35 { width: 35%; }
.lm-skel-line--w-40 { width: 40%; }
.lm-skel-line--w-50 { width: 50%; }
.lm-skel-line--w-55 { width: 55%; }
.lm-skel-line--mt-8 { margin-top: 8px; }
.lm-skel-line--mt-12 { margin-top: 12px; }
.lm-skel-block--h-48 { height: 48px; margin-top: 12px; }
.lm-skel-block--h-64 { height: 64px; margin-top: 12px; }

/* =========================================================
   M38.5 — Restaurant loyaltyView hardening
   ---------------------------------------------------------
   Tokens for:
     - lm-loyalty-page              — page shell
     - lm-loyalty-tabs              — tab strip + buttons + active state
     - lm-loyalty-panel             — tab panel ([hidden] -> display:none)
     - [data-save-status]           — save/error feedback color via data attr
     - lm-loyalty-rule-box          — dashed-border rule container
     - lm-loyalty-table             — standardized td/th padding + numeric font
     - lm-loyalty-kpi-card          — KPI card + accent variant
     - lm-loyalty-tier-pill         — tier pills via [data-tier]
     - lm-loyalty-type-pill         — event-type pills via [data-type]
   Replaces 163 inline style="..." attributes + 8 .style.color mutations
   ========================================================= */

/* --- Page shell ---------------------------------------- */
.lm-loyalty-page {
  max-width: 960px;
  margin: 0 auto;
  padding: 16px;
}
.lm-loyalty-page h2 {
  font-family: var(--lm-display, "Bricolage Grotesque", sans-serif);
  margin: 0 0 12px 0;
}
.lm-loyalty-section {
  margin: 24px 0;
}
.lm-loyalty-section-title {
  font-family: var(--lm-display, "Bricolage Grotesque", sans-serif);
  font-size: 18px;
  margin: 0 0 12px 0;
  color: var(--lm-ink);
}

/* --- Save / error status (replaces 8 .style.color mutations) -- */
[data-save-status] {
  font-size: 13px;
  min-height: 18px;
  margin-top: 6px;
}
[data-save-status][data-status=""],
[data-save-status]:not([data-status]) {
  color: var(--lm-ink-soft);
}
[data-save-status][data-status="ok"] {
  color: var(--lm-basil);
}
[data-save-status][data-status="error"] {
  color: var(--lm-tomato);
}

/* --- Tab strip ----------------------------------------- */
.lm-loyalty-tabs {
  display: flex;
  gap: 4px;
  border-bottom: 1px solid var(--lm-line);
  margin: 16px 0 12px 0;
  flex-wrap: wrap;
}
.lm-loyalty-tab {
  background: transparent;
  border: 0;
  border-bottom: 2px solid transparent;
  padding: 8px 12px;
  font: inherit;
  color: var(--lm-ink-soft);
  cursor: pointer;
  border-radius: 0;
}
.lm-loyalty-tab:hover {
  color: var(--lm-ink);
}
.lm-loyalty-tab[aria-selected="true"] {
  color: var(--lm-ink);
  border-bottom-color: var(--lm-ink);
  font-weight: 600;
}

/* --- Tab panels --------------------------------------- */
.lm-loyalty-panel {
  margin-top: 8px;
}
.lm-loyalty-panel[hidden] {
  display: none !important;
}

/* --- Rules / settings form ---------------------------- */
.lm-loyalty-rule-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
}
@media (max-width: 720px) {
  .lm-loyalty-rule-grid {
    grid-template-columns: 1fr;
  }
}
.lm-loyalty-rule-box {
  border: 1px dashed var(--lm-line-strong, var(--lm-ink));
  border-radius: 10px;
  padding: 12px;
  background: var(--lm-cream);
}
.lm-loyalty-rule-box--plain {
  background: #fff;
  border-style: solid;
  border-color: var(--lm-line);
}
.lm-loyalty-rule-box-title {
  font-weight: 600;
  font-size: 13px;
  margin: 0 0 8px 0;
  color: var(--lm-ink);
}
.lm-loyalty-rule-label {
  display: block;
  font-size: 12px;
  color: var(--lm-ink-soft);
  margin-bottom: 4px;
}
.lm-loyalty-rule-input,
.lm-loyalty-rule-select {
  width: 100%;
  padding: 8px 10px;
  border: 1px solid var(--lm-line);
  border-radius: 8px;
  font: inherit;
  background: #fff;
  color: var(--lm-ink);
}
.lm-loyalty-rule-row {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  align-items: center;
}
.lm-loyalty-rule-hint {
  font-size: 12px;
  color: var(--lm-ink-soft);
  margin: 4px 0 0 0;
}

/* --- KPI cards (streak/referral) ---------------------- */
.lm-loyalty-kpi-row {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 8px;
  margin: 8px 0 12px 0;
}
@media (max-width: 720px) {
  .lm-loyalty-kpi-row {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
.lm-loyalty-kpi-card {
  background: var(--lm-cream);
  border: 1px solid var(--lm-line);
  border-radius: 10px;
  padding: 10px 12px;
}
.lm-loyalty-kpi-card--accent {
  background: var(--lm-butter-soft);
  border-color: var(--lm-butter);
}
.lm-loyalty-kpi-label {
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--lm-ink-soft);
  margin: 0 0 4px 0;
}
.lm-loyalty-kpi-value {
  font-family: var(--lm-display, "Bricolage Grotesque", sans-serif);
  font-size: 22px;
  font-weight: 700;
  color: var(--lm-ink);
  font-variant-numeric: tabular-nums;
}

/* --- Tables (members / events / rewards) -------------- */
.lm-loyalty-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 13px;
}
.lm-loyalty-table th,
.lm-loyalty-table td {
  padding: 8px 6px;
  text-align: left;
  border-bottom: 1px solid var(--lm-line);
  vertical-align: middle;
}
.lm-loyalty-table th {
  font-weight: 600;
  color: var(--lm-ink-soft);
  background: var(--lm-cream);
  position: sticky;
  top: 0;
}
.lm-loyalty-table td.num,
.lm-loyalty-table th.num {
  text-align: right;
  font-variant-numeric: tabular-nums;
}
.lm-loyalty-table-empty {
  padding: 16px 8px;
  color: var(--lm-ink-soft);
  font-style: italic;
  text-align: center;
}
.lm-loyalty-table-wrap {
  border: 1px solid var(--lm-line);
  border-radius: 10px;
  overflow: hidden;
}

/* --- Tier pills (replaces tierPill hex map) ---------- */
.lm-loyalty-tier-pill {
  display: inline-block;
  padding: 2px 8px;
  border-radius: 999px;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.02em;
  text-transform: capitalize;
  background: var(--lm-butter-soft);
  color: var(--lm-ink-soft);
  white-space: nowrap;
}
.lm-loyalty-tier-pill[data-tier="bronze"] {
  background: var(--lm-cream);
  color: var(--lm-cocoa);
  border: 1px solid var(--lm-cocoa);
}
.lm-loyalty-tier-pill[data-tier="silver"] {
  background: #B7B5AA;
  color: var(--lm-ink);
}
.lm-loyalty-tier-pill[data-tier="gold"] {
  background: var(--lm-butter);
  color: var(--lm-ink);
}
.lm-loyalty-tier-pill[data-tier="platinum"] {
  background: var(--lm-basil);
  color: var(--lm-cream);
}

/* --- Event type pills (replaces typePill hex map) ---- */
.lm-loyalty-type-pill {
  display: inline-block;
  padding: 2px 8px;
  border-radius: 999px;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.02em;
  background: var(--lm-butter-soft);
  color: var(--lm-ink-soft);
  white-space: nowrap;
}
.lm-loyalty-type-pill[data-type="tier_promotion"] {
  background: var(--lm-basil);
  color: var(--lm-cream);
}
.lm-loyalty-type-pill[data-type="birthday"] {
  background: var(--lm-butter);
  color: var(--lm-ink);
}
.lm-loyalty-type-pill[data-type="expiration"] {
  background: var(--lm-tomato);
  color: #fff;
}
.lm-loyalty-type-pill[data-type="expiration_warning"] {
  background: var(--lm-ink-soft);
  color: var(--lm-cream);
}

/* --- Reward form / preview --------------------------- */
.lm-loyalty-reward-preview {
  background: var(--lm-butter-soft);
  border: 1px solid var(--lm-butter);
  border-radius: 10px;
  padding: 10px 12px;
  margin: 8px 0;
  font-size: 13px;
  color: var(--lm-ink);
}
.lm-loyalty-reward-actions {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  margin-top: 8px;
}

/* --- Adjust points modal ----------------------------- */
.lm-loyalty-adjust-modal {
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.lm-loyalty-adjust-row {
  display: flex;
  gap: 8px;
  align-items: center;
  flex-wrap: wrap;
}

/* M38.5 Phase 5 — table cell variants */
.lm-loyalty-table td.strong,
.lm-loyalty-table th.strong {
  font-weight: 700;
}
.lm-loyalty-table td.muted-cell,
.lm-loyalty-table th.muted-cell {
  color: var(--lm-ink-soft);
}
.lm-loyalty-table td.actions,
.lm-loyalty-table th.actions {
  text-align: right;
  white-space: nowrap;
}
.lm-loyalty-table .lm-loyalty-events-delta {
  font-weight: 600;
  font-variant-numeric: tabular-nums;
  text-align: right;
}
.lm-loyalty-table .lm-loyalty-events-delta[data-status="ok"] { color: var(--lm-basil); }
.lm-loyalty-table .lm-loyalty-events-delta[data-status="error"] { color: var(--lm-tomato); }
.lm-loyalty-table .mono {
  font-family: ui-monospace, Menlo, monospace;
  font-weight: 700;
  letter-spacing: 0.04em;
}
.lm-loyalty-rewards-cell-name { font-weight: 600; }
.lm-loyalty-rewards-cell-desc { font-size: 12px; color: var(--lm-ink-soft); margin-top: 2px; }
.lm-loyalty-rewards-status-pill {
  display: inline-block;
  padding: 2px 8px;
  border-radius: 999px;
  font-size: 11px;
  font-weight: 600;
}
.lm-loyalty-rewards-status-pill[data-active="true"] {
  background: var(--lm-basil);
  color: var(--lm-cream);
}
.lm-loyalty-rewards-status-pill[data-active="false"] {
  background: #D4D1CA;
  color: var(--lm-ink-soft);
}

/* M38.5 supplement — allow horizontal scroll on the wrap when used inline */
.lm-loyalty-table-wrap[style*="overflow-x"] { overflow: visible; }
.lm-loyalty-page small, .lm-loyalty-page .lbl { color: var(--lm-ink-soft); font-size: 12px; }

/* ============================================================
 * M41 — Diner location bar, distance chip, location modal
 * ============================================================ */
.lm-diner-home-loc {
  display: flex;
  align-items: center;
  gap: 12px;
  background: var(--lm-butter-soft, #FFF4A8);
  border: 1px solid rgba(24,23,15,0.08);
  border-radius: 14px;
  padding: 12px 14px;
  margin: 0 0 14px;
}
.lm-diner-home-loc--prompt { background: var(--lm-cream, #FBF7EE); border-style: dashed; }
.lm-diner-home-loc__pin { font-size: 20px; line-height: 1; }
.lm-diner-home-loc__body { flex: 1 1 auto; display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.lm-diner-home-loc__label { font-size: 12px; color: var(--lm-ink-soft, #3B392C); text-transform: uppercase; letter-spacing: 0.4px; }
.lm-diner-home-loc__addr {
  font-family: 'Bricolage Grotesque', sans-serif;
  font-size: 15px;
  color: var(--lm-ink, #18170F);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.lm-diner-home-loc__sub { font-size: 13px; color: var(--lm-ink-soft, #3B392C); }
.lm-diner-home-loc .btn { flex: 0 0 auto; }

/* distance chip on tenant card (top-right of photo) */
.lm-diner-feed-photo-badge--dist {
  left: auto;
  right: 12px;
  background: rgba(24,23,15,0.78);
  color: var(--lm-cream, #FBF7EE);
  text-transform: none;
  letter-spacing: 0;
  font-size: 12px;
  padding: 5px 10px;
}

/* Location modal (M41) */
.lm-modal-backdrop {
  position: fixed; inset: 0;
  background: rgba(24,23,15,0.55);
  display: flex; align-items: center; justify-content: center;
  z-index: 1000; padding: 18px;
}
.lm-loc-modal__card {
  background: var(--lm-cream, #FBF7EE);
  border: 2px solid var(--lm-ink, #18170F);
  border-radius: 18px;
  width: 100%; max-width: 460px;
  padding: 24px;
  position: relative;
  box-shadow: 0 24px 60px rgba(0,0,0,0.28);
  max-height: calc(100vh - 36px);
  overflow-y: auto;
}
.lm-modal__close {
  position: absolute; top: 12px; right: 14px;
  width: 32px; height: 32px;
  border: none; background: transparent;
  font-size: 26px; line-height: 1;
  cursor: pointer; color: var(--lm-ink, #18170F);
  border-radius: 8px;
}
.lm-modal__close:hover { background: rgba(24,23,15,0.06); }
.lm-modal__title {
  font-family: 'Bricolage Grotesque', sans-serif;
  font-size: 22px;
  margin: 0 0 6px;
  color: var(--lm-ink, #18170F);
}
.lm-modal__sub { color: var(--lm-ink-soft, #3B392C); font-size: 14px; margin: 0 0 18px; }
.lm-loc-modal__actions { display: flex; }
.lm-loc-modal__actions .btn { width: 100%; }
.lm-loc-modal__divider {
  display: flex; align-items: center; gap: 10px;
  color: var(--lm-ink-soft, #3B392C);
  font-size: 12px; text-transform: uppercase; letter-spacing: 0.5px;
  margin: 16px 0 10px;
}
.lm-loc-modal__divider::before,
.lm-loc-modal__divider::after {
  content: ''; flex: 1 1 auto; height: 1px; background: rgba(24,23,15,0.15);
}
.lm-loc-suggest {
  list-style: none; padding: 0; margin: 8px 0 0;
  max-height: 240px; overflow-y: auto;
  border-radius: 12px;
}
.lm-loc-suggest__row {
  display: flex; flex-direction: column; gap: 2px;
  padding: 10px 12px;
  cursor: pointer;
  border-radius: 10px;
}
.lm-loc-suggest__row:hover,
.lm-loc-suggest__row:focus-visible {
  background: var(--lm-butter-soft, #FFF4A8);
  outline: none;
}
.lm-loc-suggest__primary { font-size: 15px; color: var(--lm-ink, #18170F); }
.lm-loc-suggest__secondary { font-size: 12px; color: var(--lm-ink-soft, #3B392C); }
.lm-loc-modal__searchrow {
  display: flex; gap: 8px;
  margin-top: 4px;
}
.lm-loc-modal__input {
  flex: 1 1 auto;
  min-width: 0;
}
.lm-loc-modal__search {
  flex: 0 0 auto;
  padding: 12px 20px;
  font-size: 15px;
  white-space: nowrap;
}
.lm-loc-modal__search:disabled { opacity: 0.6; cursor: wait; }
.lm-loc-modal__status {
  min-height: 18px;
  font-size: 13px;
  color: var(--lm-ink-soft, #3B392C);
  margin: 10px 2px 0;
}
.lm-loc-modal__footer {
  display: flex; justify-content: space-between; gap: 12px;
  margin-top: 18px;
}

/* =====================================================
   PWA Install button — appears on Android/Chrome via
   beforeinstallprompt, or on iOS as an "Add to Home Screen" tip.
   ===================================================== */
button.lm-install-chip,
.lm-install-chip {
  display: inline-flex !important;
  align-items: center;
  gap: 8px;
  padding: 8px 14px !important;
  border-radius: 999px !important;
  background: var(--lm-butter, #FFE85C) !important;
  color: var(--lm-ink, #18170F) !important;
  border: 1px solid var(--lm-ink, #18170F) !important;
  font-weight: 700 !important;
  font-size: 13px !important;
  line-height: 1 !important;
  cursor: pointer;
  white-space: nowrap;
  transition: transform 80ms ease, box-shadow 80ms ease;
  text-decoration: none;
}
.lm-install-chip:hover { transform: translateY(-1px); box-shadow: 0 2px 0 var(--lm-ink, #18170F); }
.lm-install-chip:active { transform: translateY(0); box-shadow: none; }

.lm-install-cta {
  display: inline-flex; align-items: center; gap: 10px;
  padding: 14px 22px;
  border-radius: 14px;
  background: var(--lm-ink, #18170F);
  color: var(--lm-butter, #FFE85C);
  border: 2px solid var(--lm-butter, #FFE85C);
  font-weight: 800;
  font-size: 15px;
  cursor: pointer;
}
.lm-install-cta:hover { filter: brightness(1.08); }

/* Diner side flips the chip palette to ink-on-butter inverted */
button[data-lm-install="diner"].lm-install-chip,
[data-lm-install="diner"].lm-install-chip {
  background: var(--lm-ink, #18170F) !important;
  color: var(--lm-butter, #FFE85C) !important;
  border-color: var(--lm-butter, #FFE85C) !important;
}
[data-lm-install="diner"].lm-install-chip:hover {
  box-shadow: 0 2px 0 var(--lm-butter, #FFE85C);
}

/* =====================================================
   M49 — Marketplace tab (Surprise Bags)
   Palette: cream #FBF7EE / butter #FFE85C / ink #18170F
            basil #1F5E37 / basil-deep #143F25 / basil-light #B8D9C4
   ===================================================== */

/* ---- iOS-style toggle ---- */
.lm-mp-toggle-row {
  display: flex;
  align-items: center;
  gap: 14px;
  flex-wrap: wrap;
  padding: 4px 0 8px 0;
}
.lm-mp-toggle {
  position: relative;
  display: inline-flex;
  align-items: center;
  gap: 12px;
  cursor: pointer;
  user-select: none;
}
.lm-mp-toggle input[type="checkbox"] {
  position: absolute;
  opacity: 0;
  width: 0;
  height: 0;
  pointer-events: none;
}
.lm-mp-toggle-slider {
  position: relative;
  display: inline-block;
  width: 50px;
  height: 28px;
  background: #D9D5C6;
  border-radius: 999px;
  transition: background 0.18s ease;
  flex-shrink: 0;
}
.lm-mp-toggle-slider::before {
  content: "";
  position: absolute;
  top: 3px;
  left: 3px;
  width: 22px;
  height: 22px;
  background: #FBF7EE;
  border-radius: 50%;
  box-shadow: 0 1px 2px rgba(24,23,15,0.18);
  transition: transform 0.18s ease;
}
.lm-mp-toggle input:checked + .lm-mp-toggle-slider {
  background: #1F5E37;
}
.lm-mp-toggle input:checked + .lm-mp-toggle-slider::before {
  transform: translateX(22px);
}
.lm-mp-toggle input:focus-visible + .lm-mp-toggle-slider {
  outline: 2px solid #FFE85C;
  outline-offset: 2px;
}
.lm-mp-toggle-label {
  font-weight: 600;
  color: #18170F;
  font-size: 14px;
  letter-spacing: 0.01em;
}
.lm-mp-toggle-hint {
  color: #6B6855;
  font-size: 13px;
}

/* ---- Form grid (responsive 2-col → 1-col under 720px) ---- */
.lm-form-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 14px 16px;
  margin-top: 4px;
}
.lm-form-field {
  display: flex;
  flex-direction: column;
  gap: 6px;
  min-width: 0;
}
.lm-form-field--wide {
  grid-column: 1 / -1;
}
.lm-form-label {
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: #3B392C;
}
.lm-form-hint {
  font-size: 12px;
  color: #6B6855;
  margin-top: 2px;
}
.lm-form-actions {
  grid-column: 1 / -1;
  display: flex;
  justify-content: flex-end;
  gap: 10px;
  margin-top: 4px;
}
@media (max-width: 720px) {
  .lm-form-grid { grid-template-columns: 1fr; }
  .lm-form-actions { justify-content: stretch; }
  .lm-form-actions .btn { flex: 1; }
}

/* ---- Bag list ---- */
.lm-mp-bag-list {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.lm-mp-bag-row {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 14px 16px;
  background: #FFF;
  border: 1px solid #E8E2CC;
  border-radius: 12px;
  transition: border-color 0.12s ease, box-shadow 0.12s ease;
}
.lm-mp-bag-row:hover {
  border-color: #18170F;
  box-shadow: 0 2px 0 #18170F;
}
.lm-mp-bag-row__main {
  flex: 1;
  min-width: 0;
}
.lm-mp-bag-row__title {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
  margin-bottom: 4px;
}
.lm-mp-bag-row__title strong {
  font-size: 15px;
  color: #18170F;
}
.lm-mp-bag-row__desc {
  margin: 2px 0 4px 0;
  font-size: 13px;
  color: #3B392C;
  line-height: 1.4;
}
.lm-mp-bag-row__meta {
  margin: 0;
  font-size: 12px;
  color: #6B6855;
  letter-spacing: 0.01em;
}
.lm-mp-bag-row__actions {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-shrink: 0;
}

/* ---- Status chips ---- */
.lm-mp-bag-status {
  display: inline-block;
  padding: 2px 9px;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  border-radius: 999px;
  background: #EDE7D2;
  color: #3B392C;
  line-height: 1.6;
}
.lm-mp-bag-status--live {
  background: #B8D9C4;
  color: #143F25;
}
.lm-mp-bag-status--paused {
  background: #EDE7D2;
  color: #6B6855;
}
.lm-mp-bag-status--expired {
  background: #F0EAD3;
  color: #6B6855;
  text-decoration: line-through;
}
.lm-mp-bag-status--done {
  background: #143F25;
  color: #B8D9C4;
}

/* ---- Reservations table ---- */
.lm-mp-reservations-table {
  width: 100%;
  border-collapse: collapse;
  margin-top: 4px;
  font-size: 13px;
}
.lm-mp-reservations-table thead th {
  text-align: left;
  font-size: 11px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: #3B392C;
  padding: 8px 10px;
  border-bottom: 1px solid #E8E2CC;
  background: transparent;
}
.lm-mp-reservations-table tbody td {
  padding: 10px;
  border-bottom: 1px solid #F0EAD3;
  vertical-align: middle;
}
.lm-mp-reservations-table tbody tr:last-child td {
  border-bottom: none;
}
.lm-mp-code {
  display: inline-block;
  font-family: ui-monospace, "SF Mono", Menlo, Consolas, monospace;
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 0.14em;
  background: #FFF4A8;
  color: #18170F;
  padding: 2px 8px;
  border-radius: 6px;
  border: 1px solid #FFE85C;
}

/* ---- Big pickup-code input ---- */
.lm-mp-pickup-input {
  font-family: ui-monospace, "SF Mono", Menlo, Consolas, monospace;
  font-size: 22px;
  font-weight: 700;
  letter-spacing: 0.32em;
  text-align: center;
  text-transform: uppercase;
  padding: 12px 14px;
}
.lm-mp-pickup-input::placeholder {
  letter-spacing: 0.32em;
  color: #C4BFAD;
}

/* ---- Mobile tweaks ---- */
@media (max-width: 720px) {
  .lm-mp-bag-row {
    flex-direction: column;
    align-items: stretch;
    gap: 10px;
  }
  .lm-mp-bag-row__actions {
    justify-content: flex-end;
  }
  .lm-mp-reservations-table {
    font-size: 12px;
  }
  .lm-mp-reservations-table thead th,
  .lm-mp-reservations-table tbody td {
    padding: 8px 6px;
  }
}

/* =====================================================
   M49 — Surprise Bags (diner side)
   ===================================================== */

/* ---- Bag chip on tenant feed card ---- */
.lm-diner-home-tenant__bags {
  margin: 8px 0 6px 0;
  display: flex;
}
.lm-diner-feed-bag-chip {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 8px 12px 8px 10px;
  background: #FFE85C;
  border: 2px solid #18170F;
  color: #18170F;
  border-radius: 999px;
  font-weight: 700;
  font-size: 13px;
  letter-spacing: 0.01em;
  cursor: pointer;
  box-shadow: 0 2px 0 #18170F;
  transition: transform 0.08s ease, box-shadow 0.08s ease, background 0.12s ease;
}
.lm-diner-feed-bag-chip:hover,
.lm-diner-feed-bag-chip:focus-visible {
  background: #FFF4A8;
  transform: translateY(-1px);
  box-shadow: 0 3px 0 #18170F;
  outline: none;
}
.lm-diner-feed-bag-chip:active {
  transform: translateY(1px);
  box-shadow: 0 1px 0 #18170F;
}
.lm-diner-feed-bag-chip__icon {
  font-size: 15px;
  line-height: 1;
}
.lm-diner-feed-bag-chip__label {
  font-size: 13px;
}
.lm-diner-feed-bag-chip__price {
  background: #18170F;
  color: #FFE85C;
  padding: 2px 8px;
  border-radius: 999px;
  font-size: 12px;
  letter-spacing: 0.02em;
}

/* ---- Modal overlay + shell ---- */
.lm-sb-overlay {
  position: fixed;
  inset: 0;
  background: rgba(24, 23, 15, 0.55);
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 9000;
  padding: 16px;
  animation: lm-sb-fadein 0.16s ease-out;
}
@keyframes lm-sb-fadein {
  from { opacity: 0; }
  to { opacity: 1; }
}
.lm-sb-modal {
  position: relative;
  background: #FBF7EE;
  border: 2px solid #18170F;
  border-radius: 18px;
  box-shadow: 0 8px 0 #18170F, 0 24px 60px rgba(24,23,15,0.4);
  max-width: 460px;
  width: 100%;
  max-height: calc(100vh - 32px);
  overflow-y: auto;
  animation: lm-sb-rise 0.2s ease-out;
}
@keyframes lm-sb-rise {
  from { opacity: 0; transform: translateY(8px); }
  to   { opacity: 1; transform: translateY(0); }
}
.lm-sb-close {
  position: absolute;
  top: 10px;
  right: 12px;
  width: 32px;
  height: 32px;
  border-radius: 50%;
  border: none;
  background: transparent;
  color: #18170F;
  font-size: 22px;
  line-height: 1;
  cursor: pointer;
  font-weight: 400;
  transition: background 0.12s ease;
}
.lm-sb-close:hover { background: #EDE7D2; }
.lm-sb-body {
  padding: 22px 22px 20px 22px;
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.lm-sb-chip {
  display: inline-block;
  align-self: flex-start;
  background: #FFE85C;
  color: #18170F;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  padding: 4px 12px;
  border-radius: 999px;
  border: 1.5px solid #18170F;
}
.lm-sb-chip--success {
  background: #B8D9C4;
  color: #143F25;
  border-color: #143F25;
}
.lm-sb-title {
  margin: 4px 0 2px 0;
  font-size: 24px;
  font-weight: 800;
  color: #18170F;
  line-height: 1.15;
}
.lm-sb-sub {
  margin: 0;
  color: #3B392C;
  font-size: 14px;
}
.lm-sb-tenant {
  margin: 0;
  color: #3B392C;
  font-size: 14px;
  font-weight: 600;
}
.lm-sb-desc {
  margin: 6px 0 0 0;
  color: #18170F;
  font-size: 15px;
  line-height: 1.45;
}
.lm-sb-price-row {
  display: flex;
  align-items: baseline;
  gap: 10px;
  margin: 8px 0 4px 0;
}
.lm-sb-price {
  font-size: 30px;
  font-weight: 800;
  color: #1F5E37;
  letter-spacing: -0.01em;
}
.lm-sb-value {
  font-size: 13px;
  color: #6B6855;
}
.lm-sb-facts {
  list-style: none;
  padding: 12px 14px;
  margin: 6px 0;
  background: #FFF;
  border: 1px solid #E8E2CC;
  border-radius: 10px;
  display: flex;
  flex-direction: column;
  gap: 6px;
  font-size: 13px;
  color: #3B392C;
}
.lm-sb-facts li strong { color: #18170F; font-weight: 600; }
.lm-sb-fact-note {
  font-size: 12px;
  color: #6B6855;
  font-style: italic;
  margin-top: 2px;
}
.lm-sb-actions {
  display: flex;
  flex-direction: column;
  gap: 8px;
  margin-top: 10px;
}
.lm-sb-actions .btn {
  width: 100%;
}
.lm-sb-fineprint {
  margin: 8px 0 0 0;
  font-size: 12px;
  color: #6B6855;
  text-align: center;
  line-height: 1.5;
}

/* ---- Confirmation: big pickup code ---- */
.lm-sb-code-block {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
  margin: 14px 0;
  padding: 18px 16px 22px 16px;
  background: #FFF4A8;
  border: 2px dashed #18170F;
  border-radius: 14px;
}
.lm-sb-code-label {
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: #3B392C;
}
.lm-sb-code {
  font-family: ui-monospace, "SF Mono", Menlo, Consolas, monospace;
  font-size: 38px;
  font-weight: 800;
  letter-spacing: 0.18em;
  color: #18170F;
  margin: 0;
  padding-left: 0.18em; /* visually center accounting for trailing letter-spacing */
}

/* ---- Me view: reservations card ---- */
.lm-diner-me-bag-list {
  display: flex;
  flex-direction: column;
  gap: 10px;
  margin-top: 4px;
}
.lm-diner-me-bag-row {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 12px 14px;
  background: #FFF;
  border: 1px solid #E8E2CC;
  border-radius: 12px;
}
.lm-diner-me-bag-row__main {
  flex: 1;
  min-width: 0;
}
.lm-diner-me-bag-row__title strong {
  font-size: 15px;
  color: #18170F;
}
.lm-diner-me-bag-row__tenant {
  margin: 2px 0 4px 0;
  font-size: 13px;
  color: #3B392C;
}
.lm-diner-me-bag-row__meta {
  margin: 0;
  font-size: 12px;
  color: #6B6855;
}
.lm-diner-me-bag-row__code-wrap {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 4px;
  flex-shrink: 0;
}
.lm-diner-me-bag-row__code-label {
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: #6B6855;
}
.lm-diner-me-bag-row__code {
  display: inline-block;
  font-family: ui-monospace, "SF Mono", Menlo, Consolas, monospace;
  font-size: 16px;
  font-weight: 700;
  letter-spacing: 0.14em;
  background: #FFF4A8;
  color: #18170F;
  padding: 4px 10px;
  border-radius: 8px;
  border: 1px solid #FFE85C;
}

@media (max-width: 560px) {
  .lm-diner-me-bag-row {
    flex-direction: column;
    align-items: stretch;
  }
  .lm-diner-me-bag-row__code-wrap {
    flex-direction: row;
    align-items: center;
    justify-content: space-between;
    margin-top: 6px;
  }
}

/* ============================================================
   M50 — Boost-a-Dish: featured dishes rail (diner home)
   ============================================================ */
.lm-diner-home-featured-dishes {
  margin: 0 0 24px 0;
}
.lm-diner-featured-rail {
  display: grid;
  grid-auto-flow: column;
  grid-auto-columns: 78%;
  gap: 14px;
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  -webkit-overflow-scrolling: touch;
  padding: 4px 4px 12px 4px;
  scrollbar-width: thin;
}
@media (min-width: 720px) {
  .lm-diner-featured-rail { grid-auto-columns: 320px; }
}
.lm-diner-featured-card {
  scroll-snap-align: start;
  background: var(--lm-cream, #FBF7EE);
  border: 1px solid rgba(24,23,15,0.08);
  border-radius: 16px;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  cursor: pointer;
  outline: none;
  transition: transform .12s ease, box-shadow .12s ease, border-color .12s ease;
  box-shadow: 0 1px 0 rgba(24,23,15,0.04);
}
.lm-diner-featured-card:hover,
.lm-diner-featured-card:focus-visible {
  transform: translateY(-2px);
  box-shadow: 0 6px 18px -6px rgba(24,23,15,0.18);
  border-color: var(--lm-butter, #FFE85C);
}
.lm-diner-featured-card__photo {
  aspect-ratio: 4 / 3;
  background-size: cover;
  background-position: center;
  background-color: #efe9d8;
}
.lm-diner-featured-card__photo--ph {
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 42px;
  background-image:
    linear-gradient(135deg, rgba(255,232,92,0.18), rgba(255,232,92,0)) ,
    radial-gradient(at 30% 20%, rgba(24,23,15,0.04), transparent 60%);
}
.lm-diner-featured-card__body {
  padding: 12px 14px 14px;
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.lm-diner-featured-card__chip {
  align-self: flex-start;
  background: var(--lm-butter, #FFE85C);
  color: var(--lm-ink, #18170F);
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.4px;
  padding: 3px 8px;
  border-radius: 999px;
}
.lm-diner-featured-card__name {
  font-weight: 700;
  font-size: 16px;
  color: var(--lm-ink, #18170F);
  line-height: 1.25;
}
.lm-diner-featured-card__tagline {
  color: var(--lm-ink-soft, #3B392C);
  font-size: 13px;
  line-height: 1.35;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.lm-diner-featured-card__foot {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  margin-top: 4px;
  gap: 8px;
}
.lm-diner-featured-card__rest {
  color: var(--lm-ink-soft, #3B392C);
  font-size: 12px;
  font-weight: 600;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.lm-diner-featured-card__price {
  color: var(--lm-ink, #18170F);
  font-weight: 700;
  font-size: 14px;
}

/* M50 — Boost activation modal: duration radio chips */
.lm-rest-promote-modal-duration {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  border: 0;
  padding: 0;
  margin: 8px 0 12px 0;
}
.lm-rest-promote-modal-duration legend {
  font-size: 12px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.4px;
  color: var(--lm-ink-soft, #3B392C);
  margin-bottom: 6px;
  width: 100%;
}
.lm-rest-promote-modal-duration-opt {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 8px 14px;
  border: 1.5px solid rgba(24,23,15,0.14);
  border-radius: 999px;
  background: #fff;
  font-size: 14px;
  cursor: pointer;
  user-select: none;
  transition: border-color .12s ease, background .12s ease;
}
.lm-rest-promote-modal-duration-opt input { accent-color: var(--lm-ink, #18170F); }
.lm-rest-promote-modal-duration-opt--on {
  background: var(--lm-butter, #FFE85C);
  border-color: var(--lm-ink, #18170F);
  font-weight: 600;
}
.lm-rest-promote-modal-note {
  color: var(--lm-ink-soft, #3B392C);
  font-size: 13px;
  line-height: 1.4;
  margin: 4px 0 12px 0;
}

/* =====================================================
   M51 — Auto-Draft Marketing inbox (Pending / Approved / Rejected)
   ===================================================== */

.lm-rest-marketing {
  display: flex;
  flex-direction: column;
  gap: 18px;
  padding: 22px 0 32px;
}

.lm-rest-marketing-header {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 16px;
  flex-wrap: wrap;
}

.lm-rest-marketing-hero {
  display: flex;
  flex-direction: column;
  gap: 6px;
  flex: 1;
  min-width: 240px;
}

.lm-rest-marketing-eyebrow {
  display: inline-flex;
  align-self: flex-start;
  background: var(--lm-butter);
  color: var(--lm-butter-ink, var(--lm-ink));
  font-family: 'Inter', system-ui, sans-serif;
  font-weight: 700;
  font-size: 12px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  padding: 5px 12px;
  border-radius: 999px;
}

.lm-rest-marketing-title {
  font-family: 'Bricolage Grotesque', 'Inter', system-ui, sans-serif;
  font-weight: 700;
  font-size: clamp(22px, 3.4vw, 30px);
  line-height: 1.18;
  color: var(--lm-ink);
  margin: 0;
}

.lm-rest-marketing-sub {
  font-family: 'Inter', system-ui, sans-serif;
  font-size: 14px;
  line-height: 1.55;
  color: var(--lm-text-2);
  max-width: 600px;
  margin: 0;
}

.lm-rest-marketing-header-actions {
  display: flex;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
}

.lm-rest-marketing-tabs {
  display: flex;
  align-items: stretch;
  gap: 4px;
  border-bottom: 1px solid var(--lm-line);
  margin: -4px 0 0;
}

.lm-rest-marketing-tab {
  appearance: none;
  background: transparent;
  border: 0;
  border-bottom: 2px solid transparent;
  padding: 10px 14px;
  font-family: 'Inter', system-ui, sans-serif;
  font-size: 14px;
  font-weight: 500;
  color: var(--lm-text-2);
  cursor: pointer;
  transition: color 120ms ease, border-color 120ms ease;
  margin-bottom: -1px;
  display: inline-flex;
  align-items: center;
  gap: 8px;
}
.lm-rest-marketing-tab:hover { color: var(--lm-ink); }
.lm-rest-marketing-tab--active {
  color: var(--lm-ink);
  border-bottom-color: var(--lm-ink);
  font-weight: 700;
}
.lm-rest-marketing-tab-count {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 22px;
  height: 20px;
  padding: 0 7px;
  background: var(--lm-butter-soft);
  color: var(--lm-butter-ink, var(--lm-ink));
  font-size: 11px;
  font-weight: 700;
  border-radius: 999px;
}

.lm-rest-marketing-skeleton {
  height: 200px;
  background: linear-gradient(90deg, rgba(24,23,15,0.04), rgba(24,23,15,0.08), rgba(24,23,15,0.04));
  background-size: 200% 100%;
  border-radius: 14px;
  animation: lm-skel 1.4s ease-in-out infinite;
}
@keyframes lm-skel { 0% { background-position: 200% 0; } 100% { background-position: -200% 0; } }

.lm-rest-marketing-empty {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 12px;
  padding: 56px 24px;
  background: var(--lm-surface);
  border: 1px dashed var(--lm-line);
  border-radius: 18px;
  text-align: center;
  color: var(--lm-text-2);
}
.lm-rest-marketing-empty-glyph { font-size: 36px; }

.lm-rest-marketing-list {
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.lm-rest-marketing-row {
  background: var(--lm-surface);
  border: 1px solid var(--lm-line);
  border-radius: 16px;
  padding: 18px 20px;
  display: flex;
  flex-direction: column;
  gap: 10px;
  box-shadow: 0 1px 0 rgba(24,23,15,0.02), 0 8px 24px -16px rgba(24,23,15,0.08);
}
.lm-rest-marketing-row--generating { border-style: dashed; }
.lm-rest-marketing-row--failed { border-color: rgba(255, 75, 43, 0.45); background: rgba(255, 75, 43, 0.04); }
.lm-rest-marketing-row--approved { border-color: rgba(31, 94, 55, 0.35); }
.lm-rest-marketing-row--rejected { opacity: 0.78; }

.lm-rest-marketing-row-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  flex-wrap: wrap;
}
.lm-rest-marketing-row-meta {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  flex-wrap: wrap;
}
.lm-rest-marketing-channel-chip,
.lm-rest-marketing-tone-chip {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 3px 9px;
  border-radius: 999px;
  font-family: 'Inter', system-ui, sans-serif;
  font-size: 11px;
  font-weight: 600;
  color: var(--lm-ink);
  background: var(--lm-butter-soft);
}
.lm-rest-marketing-tone-chip {
  background: rgba(24,23,15,0.06);
  color: var(--lm-text-2);
}
.lm-rest-marketing-status-pill {
  display: inline-flex;
  align-items: center;
  padding: 3px 9px;
  border-radius: 999px;
  font-family: 'Inter', system-ui, sans-serif;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}
.lm-rest-marketing-status-pill--pending { background: var(--lm-butter); color: var(--lm-ink); }
.lm-rest-marketing-status-pill--generating { background: rgba(24,23,15,0.08); color: var(--lm-text-2); }
.lm-rest-marketing-status-pill--approved { background: rgba(31, 94, 55, 0.14); color: var(--lm-basil-deep, #143F25); }
.lm-rest-marketing-status-pill--rejected { background: rgba(24,23,15,0.08); color: var(--lm-text-2); }
.lm-rest-marketing-status-pill--failed { background: rgba(255, 75, 43, 0.14); color: var(--lm-tomato, #FF4B2B); }

.lm-rest-marketing-row-time {
  font-size: 12px;
  color: var(--lm-text-2);
  font-family: 'Inter', system-ui, sans-serif;
}
.lm-rest-marketing-row-topic {
  font-family: 'Inter', system-ui, sans-serif;
  font-size: 13px;
  color: var(--lm-text-2);
}
.lm-rest-marketing-row-topic > span { font-weight: 700; color: var(--lm-ink); margin-right: 4px; }
.lm-rest-marketing-row-subject {
  font-family: 'Bricolage Grotesque', 'Inter', system-ui, sans-serif;
  font-weight: 700;
  font-size: 17px;
  line-height: 1.3;
  color: var(--lm-ink);
  margin: 0;
}
.lm-rest-marketing-row-body {
  font-family: 'Inter', system-ui, sans-serif;
  font-size: 14px;
  line-height: 1.55;
  color: var(--lm-text-1, var(--lm-ink));
  margin: 0;
  white-space: pre-wrap;
}
.lm-rest-marketing-row-error {
  font-family: 'Inter', system-ui, sans-serif;
  font-size: 13px;
  color: var(--lm-tomato, #FF4B2B);
  margin: 0;
}
.lm-rest-marketing-row-actions {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  margin-top: 4px;
}

/* Modal */
.lm-rest-marketing-modal-backdrop {
  position: fixed;
  inset: 0;
  background: rgba(24,23,15,0.55);
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 16px;
  z-index: 9000;
  animation: lm-fade-in 140ms ease;
}
@keyframes lm-fade-in { from { opacity: 0; } to { opacity: 1; } }
.lm-rest-marketing-modal {
  background: var(--lm-surface);
  border-radius: 18px;
  width: min(560px, 100%);
  max-height: calc(100vh - 32px);
  overflow: auto;
  box-shadow: 0 24px 60px -12px rgba(24,23,15,0.32);
  border: 1px solid var(--lm-line);
}
.lm-rest-marketing-modal-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 18px 22px 8px;
}
.lm-rest-marketing-modal-header h2 {
  font-family: 'Bricolage Grotesque', 'Inter', system-ui, sans-serif;
  font-weight: 700;
  font-size: 20px;
  color: var(--lm-ink);
  margin: 0;
}
.lm-rest-marketing-modal-close {
  appearance: none;
  background: transparent;
  border: 0;
  font-size: 24px;
  line-height: 1;
  color: var(--lm-text-2);
  cursor: pointer;
  padding: 4px 8px;
  border-radius: 8px;
}
.lm-rest-marketing-modal-close:hover { background: rgba(24,23,15,0.06); color: var(--lm-ink); }
.lm-rest-marketing-modal-form {
  display: flex;
  flex-direction: column;
  gap: 16px;
  padding: 8px 22px 22px;
}
.lm-rest-marketing-modal-form .lm-form-label {
  display: flex;
  flex-direction: column;
  gap: 8px;
  font-family: 'Inter', system-ui, sans-serif;
  font-size: 13px;
  font-weight: 600;
  color: var(--lm-ink);
}
.lm-rest-marketing-modal-form textarea {
  width: 100%;
  padding: 12px 14px;
  border-radius: 12px;
  border: 1px solid var(--lm-line);
  background: var(--lm-surface);
  font-family: 'Inter', system-ui, sans-serif;
  font-size: 14px;
  line-height: 1.5;
  color: var(--lm-ink);
  resize: vertical;
  min-height: 96px;
}
.lm-rest-marketing-modal-form textarea:focus {
  outline: 2px solid var(--lm-butter);
  outline-offset: 1px;
}
.lm-rest-marketing-chip-row {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
.lm-rest-marketing-chip {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 8px 12px;
  border-radius: 999px;
  border: 1px solid var(--lm-line);
  background: var(--lm-surface);
  font-family: 'Inter', system-ui, sans-serif;
  font-size: 13px;
  font-weight: 500;
  color: var(--lm-text-2);
  cursor: pointer;
  transition: background 120ms ease, border-color 120ms ease, color 120ms ease;
}
.lm-rest-marketing-chip:hover { color: var(--lm-ink); border-color: var(--lm-ink); }
.lm-rest-marketing-chip input { display: none; }
.lm-rest-marketing-chip--active {
  background: var(--lm-butter);
  border-color: var(--lm-butter);
  color: var(--lm-butter-ink, var(--lm-ink));
  font-weight: 700;
}
.lm-rest-marketing-modal-actions {
  display: flex;
  justify-content: flex-end;
  gap: 8px;
  padding-top: 4px;
}

.lm-rest-marketing-card--gate {
  background: var(--lm-surface);
  border: 1px solid var(--lm-line);
  border-radius: 18px;
  padding: 32px;
  text-align: center;
}
.lm-rest-marketing-gate-glyph { font-size: 28px; }

/* ============================================================
 * M52 — Cloud Printers (CloudPRNT)
 * ============================================================ */
.lm-rest-printers {
  display: flex;
  flex-direction: column;
  gap: var(--lm-space-5, 20px);
  padding: var(--lm-space-5, 20px) var(--lm-space-6, 24px) var(--lm-space-8, 40px);
  max-width: 1080px;
  margin: 0 auto;
}
.lm-rest-printers-skeleton {
  height: 240px;
  background: linear-gradient(90deg, rgba(24, 23, 15, 0.06) 0%, rgba(24, 23, 15, 0.12) 50%, rgba(24, 23, 15, 0.06) 100%);
  background-size: 200% 100%;
  border-radius: 18px;
  animation: lm-skel 1.2s ease-in-out infinite;
}
.lm-rest-printers-header {
  display: flex;
  flex-wrap: wrap;
  gap: var(--lm-space-4, 16px);
  align-items: flex-start;
  justify-content: space-between;
}
.lm-rest-printers-hero {
  flex: 1 1 360px;
  min-width: 0;
}
.lm-rest-printers-eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 4px 10px;
  background: var(--lm-butter-soft, #FFF4A8);
  border-radius: 999px;
  font-size: 12px;
  font-weight: 600;
  color: var(--lm-ink, #18170F);
  letter-spacing: 0.02em;
}
.lm-rest-printers-title {
  font-size: clamp(24px, 3.2vw, 32px);
  font-weight: 800;
  margin: 10px 0 6px;
  color: var(--lm-ink, #18170F);
  letter-spacing: -0.01em;
}
.lm-rest-printers-sub {
  font-size: 15px;
  line-height: 1.5;
  color: var(--lm-ink-soft, #3B392C);
  max-width: 60ch;
  margin: 0;
}
.lm-rest-printers-header-actions { flex: 0 0 auto; }

.lm-rest-printers-card {
  background: var(--lm-cream, #FBF7EE);
  border: 1px solid rgba(24, 23, 15, 0.08);
  border-radius: 18px;
  padding: 20px 22px;
}
.lm-rest-printers-card--gate { text-align: center; padding: 48px 24px; }
.lm-rest-printers-gate-glyph { font-size: 40px; }

.lm-rest-printers-setup {
  background: var(--lm-butter-soft, #FFF4A8);
  border: 1px solid rgba(24, 23, 15, 0.08);
  border-radius: 18px;
  padding: 18px 22px;
}
.lm-rest-printers-setup h2 {
  margin: 0 0 10px;
  font-size: 16px;
  font-weight: 700;
  color: var(--lm-ink, #18170F);
}
.lm-rest-printers-steps {
  margin: 0;
  padding-left: 20px;
  display: flex;
  flex-direction: column;
  gap: 8px;
  color: var(--lm-ink-soft, #3B392C);
  font-size: 14px;
  line-height: 1.5;
}
.lm-rest-printers-steps strong { color: var(--lm-ink, #18170F); }
.lm-rest-printers-bring-your-own {
  margin: 10px 0 0;
  font-size: 12px;
  color: var(--lm-ink-soft, #3B392C);
  opacity: 0.82;
}

.lm-rest-printers-list {
  display: flex;
  flex-direction: column;
  gap: 14px;
}
.lm-rest-printers-list--retired { opacity: 0.78; }

.lm-rest-printers-row {
  background: #ffffff;
  border: 1px solid rgba(24, 23, 15, 0.08);
  border-radius: 16px;
  padding: 18px 20px;
  display: flex;
  flex-direction: column;
  gap: 14px;
}
.lm-rest-printers-row--retired { background: rgba(24, 23, 15, 0.03); }

.lm-rest-printers-row-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
  flex-wrap: wrap;
}
.lm-rest-printers-row-title h3 {
  margin: 0 0 4px;
  font-size: 17px;
  font-weight: 700;
  color: var(--lm-ink, #18170F);
}
.lm-rest-printers-row-meta {
  display: flex;
  gap: 10px;
  align-items: center;
  font-size: 12px;
  color: var(--lm-ink-soft, #3B392C);
}
.lm-rest-printers-mac {
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  background: rgba(24, 23, 15, 0.06);
  padding: 2px 8px;
  border-radius: 6px;
  font-size: 12px;
}
.lm-rest-printers-paper { font-weight: 500; }

.lm-rest-printers-pill {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 4px 10px;
  border-radius: 999px;
  font-size: 12px;
  font-weight: 600;
  white-space: nowrap;
}
.lm-rest-printers-pill--online {
  background: var(--lm-basil-light, #B8D9C4);
  color: var(--lm-basil-deep, #143F25);
}
.lm-rest-printers-pill--offline {
  background: rgba(24, 23, 15, 0.08);
  color: var(--lm-ink-soft, #3B392C);
}
.lm-rest-printers-pill--retired {
  background: rgba(24, 23, 15, 0.08);
  color: var(--lm-ink-soft, #3B392C);
}

.lm-rest-printers-row-stats {
  display: flex;
  gap: 24px;
  flex-wrap: wrap;
}
.lm-rest-printers-stat { display: flex; flex-direction: column; gap: 2px; }
.lm-rest-printers-stat-label {
  font-size: 11px;
  color: var(--lm-ink-soft, #3B392C);
  text-transform: uppercase;
  letter-spacing: 0.04em;
  font-weight: 600;
}
.lm-rest-printers-stat-value {
  font-size: 14px;
  color: var(--lm-ink, #18170F);
  font-weight: 600;
}

.lm-rest-printers-row-endpoint {
  background: var(--lm-cream, #FBF7EE);
  border: 1px solid rgba(24, 23, 15, 0.08);
  border-radius: 12px;
  padding: 12px 14px;
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.lm-rest-printers-endpoint-label {
  font-size: 12px;
  font-weight: 600;
  color: var(--lm-ink-soft, #3B392C);
}
.lm-rest-printers-endpoint-box {
  display: flex;
  align-items: center;
  gap: 8px;
  background: #ffffff;
  border: 1px solid rgba(24, 23, 15, 0.08);
  border-radius: 8px;
  padding: 8px 10px;
}
.lm-rest-printers-endpoint-url {
  flex: 1 1 auto;
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  font-size: 12px;
  color: var(--lm-ink, #18170F);
  overflow-wrap: anywhere;
  word-break: break-all;
}
.lm-rest-printers-endpoint-key {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 12px;
  color: var(--lm-ink-soft, #3B392C);
}
.lm-rest-printers-endpoint-key code {
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  background: #ffffff;
  border: 1px solid rgba(24, 23, 15, 0.08);
  padding: 2px 8px;
  border-radius: 6px;
  color: var(--lm-ink, #18170F);
}
.lm-rest-printers-mini-btn {
  background: transparent;
  border: 1px solid rgba(24, 23, 15, 0.16);
  color: var(--lm-ink, #18170F);
  padding: 2px 8px;
  font-size: 11px;
  border-radius: 6px;
  cursor: pointer;
  font-weight: 600;
}
.lm-rest-printers-mini-btn:hover { background: rgba(24, 23, 15, 0.04); }

.lm-rest-printers-row-actions {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
}
.lm-rest-printers-danger { color: var(--lm-tomato, #FF4B2B); }
.lm-rest-printers-danger:hover { color: var(--lm-tomato, #FF4B2B); background: rgba(255, 75, 43, 0.08); }

.lm-rest-printers-empty {
  background: var(--lm-cream, #FBF7EE);
  border: 1px dashed rgba(24, 23, 15, 0.16);
  border-radius: 16px;
  padding: 36px 24px;
  text-align: center;
  color: var(--lm-ink-soft, #3B392C);
}
.lm-rest-printers-empty-glyph { font-size: 36px; margin-bottom: 8px; }

.lm-rest-printers-retired {
  margin-top: 8px;
}
.lm-rest-printers-retired summary {
  cursor: pointer;
  font-size: 13px;
  color: var(--lm-ink-soft, #3B392C);
  padding: 8px 0;
  font-weight: 600;
}

/* Modal */
.lm-rest-printers-modal-backdrop {
  position: fixed;
  inset: 0;
  background: rgba(24, 23, 15, 0.5);
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 20px;
  z-index: 60;
  animation: lm-fade-in 0.18s ease-out;
}
.lm-rest-printers-modal {
  background: var(--lm-cream, #FBF7EE);
  border-radius: 18px;
  width: 100%;
  max-width: 520px;
  max-height: 92vh;
  overflow-y: auto;
  display: flex;
  flex-direction: column;
  box-shadow: 0 24px 60px rgba(0, 0, 0, 0.25);
}
.lm-rest-printers-modal-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 18px 22px;
  border-bottom: 1px solid rgba(24, 23, 15, 0.08);
}
.lm-rest-printers-modal-header h2 {
  margin: 0;
  font-size: 18px;
  font-weight: 700;
  color: var(--lm-ink, #18170F);
}
.lm-rest-printers-modal-close {
  background: transparent;
  border: 0;
  font-size: 24px;
  cursor: pointer;
  color: var(--lm-ink-soft, #3B392C);
  line-height: 1;
  padding: 4px 8px;
  border-radius: 6px;
}
.lm-rest-printers-modal-close:hover { background: rgba(24, 23, 15, 0.06); }
.lm-rest-printers-modal-form {
  padding: 18px 22px 22px;
  display: flex;
  flex-direction: column;
  gap: 14px;
}
.lm-rest-printers-modal-form .lm-form-label > span {
  display: block;
  font-size: 13px;
  font-weight: 600;
  color: var(--lm-ink, #18170F);
  margin-bottom: 6px;
}
.lm-rest-printers-modal-form input[type="text"] {
  width: 100%;
  padding: 10px 12px;
  font-size: 14px;
  border: 1px solid rgba(24, 23, 15, 0.16);
  border-radius: 10px;
  background: #ffffff;
  color: var(--lm-ink, #18170F);
}
.lm-rest-printers-modal-form input[type="text"]:focus {
  outline: 2px solid var(--lm-butter, #FFE85C);
  outline-offset: 1px;
  border-color: rgba(24, 23, 15, 0.32);
}
.lm-rest-printers-hint {
  display: block;
  margin-top: 4px;
  font-size: 12px;
  color: var(--lm-ink-soft, #3B392C);
}

.lm-rest-printers-chip-row {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
}
.lm-rest-printers-chip {
  display: inline-flex;
  align-items: center;
  padding: 8px 12px;
  border: 1px solid rgba(24, 23, 15, 0.16);
  background: #ffffff;
  border-radius: 999px;
  cursor: pointer;
  font-size: 13px;
  color: var(--lm-ink, #18170F);
  font-weight: 500;
  transition: background 0.12s ease, border-color 0.12s ease;
}
.lm-rest-printers-chip:hover { background: rgba(255, 232, 92, 0.18); }
.lm-rest-printers-chip input { display: none; }
.lm-rest-printers-chip--active {
  background: var(--lm-butter, #FFE85C);
  border-color: var(--lm-butter, #FFE85C);
  color: var(--lm-ink, #18170F);
  font-weight: 600;
}

.lm-rest-printers-modal-actions {
  display: flex;
  justify-content: flex-end;
  gap: 8px;
  margin-top: 8px;
  padding-top: 12px;
  border-top: 1px solid rgba(24, 23, 15, 0.08);
}

/* ==========================================================================
   M54 — 86-list (sold-out) styling
   ========================================================================== */

/* Sold-out menu manager card: dim photo, dim name, keep actions clickable. */
.lm-menu-item-card.lm-menu-item-card--86 .lm-menu-item-photo,
.lm-menu-item-card.lm-menu-item-card--86 .lm-menu-item-name,
.lm-menu-item-card.lm-menu-item-card--86 .lm-menu-item-meta,
.lm-menu-item-card.lm-menu-item-card--86 .lm-menu-item-desc {
  opacity: 0.55;
}

.lm-menu-item-86-hint {
  display: inline-block;
  margin-top: 4px;
  padding: 2px 8px;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.02em;
  color: var(--lm-ink);
  background: var(--lm-butter);
  border-radius: 999px;
}

/* 86 picker popover lives inside the item card; reuse lm-inline-confirm base. */
.lm-86-picker {
  text-align: left;
}

.lm-86-picker-grid {
  margin-top: 10px;
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 6px;
}

.lm-86-opt {
  width: 100%;
  justify-content: center;
}

@media (max-width: 480px) {
  .lm-86-picker-grid {
    grid-template-columns: 1fr;
  }
}

/* ============================================================
 * M55 — Inventory v1 styles
 * ============================================================ */

/* hints row wrapper holds 86 hint + stock pill side by side */
.lm-menu-item-hints {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-top: 4px;
}

/* stock pill on owner item cards */
.lm-menu-item-stock-pill {
  display: inline-flex;
  align-items: center;
  padding: 3px 9px;
  border-radius: 999px;
  font-size: 0.72rem;
  font-weight: 600;
  letter-spacing: 0.01em;
  background: rgba(132, 161, 119, 0.18); /* basil tint */
  color: #4a6b3d;
  border: 1px solid rgba(132, 161, 119, 0.45);
  cursor: pointer;
  transition: background 120ms ease;
  user-select: none;
}
.lm-menu-item-stock-pill:hover {
  background: rgba(132, 161, 119, 0.32);
}
.lm-menu-item-stock-pill--low {
  background: rgba(255, 232, 92, 0.55); /* butter — warning */
  color: #6b5a1f;
  border-color: rgba(212, 175, 55, 0.6);
}
.lm-menu-item-stock-pill--zero {
  background: rgba(214, 90, 49, 0.18); /* tomato tint */
  color: #8a2f15;
  border-color: rgba(214, 90, 49, 0.45);
}

/* "+ track stock" ghost button on items with stock_qty=null */
.lm-menu-item-stock-track-btn {
  display: inline-flex;
  align-items: center;
  padding: 2px 8px;
  border-radius: 999px;
  font-size: 0.7rem;
  font-weight: 500;
  background: transparent;
  color: #777;
  border: 1px dashed rgba(0, 0, 0, 0.22);
  cursor: pointer;
  transition: all 120ms ease;
}
.lm-menu-item-stock-track-btn:hover {
  color: #333;
  border-color: rgba(0, 0, 0, 0.4);
  background: rgba(0, 0, 0, 0.03);
}

/* stock editor popover (reuses lm-inline-confirm chrome) */
.lm-stock-editor .lm-stock-editor-row {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-top: 6px;
}
.lm-stock-editor .lm-stock-editor-label {
  font-size: 0.85rem;
  color: #555;
  flex-shrink: 0;
}
.lm-stock-editor .lm-stock-editor-input {
  flex: 1;
  max-width: 100px;
  padding: 6px 10px;
  border: 1px solid rgba(0, 0, 0, 0.18);
  border-radius: 8px;
  font-size: 0.95rem;
  font-weight: 600;
  font-variant-numeric: tabular-nums;
}
.lm-stock-editor .lm-stock-editor-input:focus {
  outline: 2px solid #ffe85c;
  outline-offset: 1px;
  border-color: #d4af37;
}
.lm-stock-editor .lm-stock-editor-quick {
  display: flex;
  gap: 6px;
  margin-top: 8px;
  flex-wrap: wrap;
}
.lm-stock-editor .lm-stock-quick {
  min-width: 44px;
  font-variant-numeric: tabular-nums;
}
.lm-stock-editor .lm-stock-editor-hint {
  display: block;
  margin-top: 8px;
  font-size: 0.74rem;
  color: #888;
  line-height: 1.35;
}

/* diner "Only N left" badge uses tomato (urgent) */
.lm-diner-feed-photo-badge--tomato {
  background: rgba(214, 90, 49, 0.92);
  color: #fff;
  text-shadow: 0 1px 1px rgba(0, 0, 0, 0.25);
}

/* =====================================================
 * M56 — Counter / Kitchen Order Station (KOS)
 * Full-screen 3-column queue board. Tap-to-advance.
 * ===================================================== */

/* When KOS is mounted we let it own the viewport. */
body.lm-kos-fullscreen {
  background: var(--lm-cream);
}
body.lm-kos-fullscreen .lm-nav {
  display: none;
}
body.lm-kos-fullscreen [data-app-root] {
  max-width: none;
  margin: 0;
  padding: 0;
}

.lm-kos {
  display: flex;
  flex-direction: column;
  min-height: 100vh;
  min-height: 100dvh;
  background: var(--lm-cream);
}

.lm-kos-bar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding: 14px 20px;
  border-bottom: 2px solid var(--lm-ink);
  background: var(--lm-butter);
  position: sticky;
  top: 0;
  z-index: 10;
}
.lm-kos-bar-left {
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.lm-kos-title {
  margin: 0;
  font-size: 22px;
  font-weight: 800;
  letter-spacing: -0.01em;
  color: var(--lm-ink);
}
.lm-kos-bar-sub {
  font-size: 13px;
  color: var(--lm-butter-ink);
  opacity: 0.75;
}
.lm-kos-bar-right {
  display: flex;
  align-items: center;
  gap: 10px;
}
.lm-kos-mute,
.lm-kos-exit {
  font-family: inherit;
  font-size: 14px;
  font-weight: 700;
  padding: 8px 14px;
  border: 2px solid var(--lm-ink);
  background: var(--lm-cream);
  color: var(--lm-ink);
  border-radius: 10px;
  cursor: pointer;
  text-decoration: none;
  line-height: 1;
  box-shadow: 2px 2px 0 var(--lm-ink);
  transition: transform 80ms ease, box-shadow 80ms ease;
}
.lm-kos-mute {
  font-size: 18px;
  padding: 6px 12px;
}
.lm-kos-mute[aria-pressed="true"] {
  background: var(--lm-ink);
  color: var(--lm-cream);
}
.lm-kos-mute:active,
.lm-kos-exit:active {
  transform: translate(2px, 2px);
  box-shadow: 0 0 0 var(--lm-ink);
}

.lm-kos-board {
  flex: 1;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 14px;
  padding: 16px;
  align-items: stretch;
}
@media (max-width: 1100px) {
  .lm-kos-board { gap: 10px; padding: 12px; }
}
@media (max-width: 820px) {
  .lm-kos-board {
    grid-template-columns: 1fr;
  }
}

.lm-kos-col {
  display: flex;
  flex-direction: column;
  min-height: 60vh;
  background: #fff;
  border: 2px solid var(--lm-ink);
  border-radius: 14px;
  overflow: hidden;
  box-shadow: 3px 3px 0 var(--lm-ink);
}
.lm-kos-col-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 12px 14px;
  border-bottom: 2px solid var(--lm-ink);
}
.lm-kos-col--tomato .lm-kos-col-head { background: var(--lm-tomato); color: #fff; }
.lm-kos-col--butter .lm-kos-col-head { background: var(--lm-butter); color: var(--lm-butter-ink); }
.lm-kos-col--basil  .lm-kos-col-head { background: var(--lm-basil);  color: #fff; }

.lm-kos-col-title {
  margin: 0;
  font-size: 18px;
  font-weight: 800;
  letter-spacing: 0.02em;
  text-transform: uppercase;
}
.lm-kos-col-count {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 30px;
  height: 26px;
  padding: 0 8px;
  border-radius: 13px;
  font-size: 14px;
  font-weight: 800;
  background: rgba(0, 0, 0, 0.22);
  color: #fff;
}
.lm-kos-col--butter .lm-kos-col-count {
  background: var(--lm-butter-ink);
  color: var(--lm-butter);
}

.lm-kos-col-body {
  flex: 1;
  padding: 12px;
  display: flex;
  flex-direction: column;
  gap: 12px;
  overflow-y: auto;
}
.lm-kos-col-empty {
  margin: auto;
  font-size: 14px;
  color: var(--lm-ink-soft);
  opacity: 0.6;
}

/* ----- Cards ----- */
.lm-kos-card {
  display: flex;
  flex-direction: column;
  gap: 8px;
  padding: 14px;
  background: var(--lm-cream);
  border: 2px solid var(--lm-ink);
  border-radius: 12px;
  box-shadow: 2px 2px 0 var(--lm-ink);
  transition: transform 100ms ease, box-shadow 100ms ease, opacity 200ms ease;
}
.lm-kos-card--advancing {
  opacity: 0.55;
  transform: translate(2px, 2px);
  box-shadow: 0 0 0 var(--lm-ink);
}
.lm-kos-card-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
}
.lm-kos-card-id {
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  font-size: 15px;
  font-weight: 700;
  color: var(--lm-ink);
}
.lm-kos-card-channel {
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.02em;
  padding: 3px 8px;
  border: 1.5px solid var(--lm-ink);
  border-radius: 999px;
  background: #fff;
  color: var(--lm-ink);
}
.lm-kos-card-diner {
  font-size: 18px;
  font-weight: 800;
  color: var(--lm-ink);
  line-height: 1.15;
}
.lm-kos-card-items {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.lm-kos-card-item {
  font-size: 16px;
  line-height: 1.3;
  color: var(--lm-ink);
}
.lm-kos-card-qty {
  display: inline-block;
  min-width: 28px;
  font-weight: 800;
  color: var(--lm-tomato);
}
.lm-kos-card-notes {
  margin: 4px 0 0;
  font-size: 14px;
  color: var(--lm-butter-ink);
  background: var(--lm-butter-soft);
  border: 1.5px solid var(--lm-ink);
  border-radius: 8px;
  padding: 6px 10px;
}
.lm-kos-card-foot {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  margin-top: 4px;
}
.lm-kos-card-meta {
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.lm-kos-card-time {
  font-size: 12px;
  color: var(--lm-ink-soft);
}
.lm-kos-card-total {
  font-size: 14px;
  font-weight: 800;
  color: var(--lm-ink);
}
.lm-kos-card-advance {
  font-family: inherit;
  font-size: 15px;
  font-weight: 800;
  padding: 10px 16px;
  background: var(--lm-ink);
  color: var(--lm-butter);
  border: 2px solid var(--lm-ink);
  border-radius: 10px;
  cursor: pointer;
  box-shadow: 2px 2px 0 var(--lm-tomato);
  transition: transform 80ms ease, box-shadow 80ms ease;
  white-space: nowrap;
}
.lm-kos-card-advance:hover {
  background: var(--lm-tomato);
  color: #fff;
  box-shadow: 2px 2px 0 var(--lm-ink);
}
.lm-kos-card-advance:active {
  transform: translate(2px, 2px);
  box-shadow: 0 0 0 var(--lm-ink);
}
.lm-kos-card-advance[disabled] {
  opacity: 0.5;
  cursor: not-allowed;
}

.lm-kos-error {
  margin: 24px auto;
  padding: 16px 20px;
  background: #fff;
  border: 2px solid var(--lm-ink);
  border-radius: 12px;
  color: var(--lm-ink);
  text-align: center;
  max-width: 480px;
}
.lm-kos-retry {
  margin-left: 8px;
  font-family: inherit;
  font-weight: 700;
  padding: 6px 12px;
  background: var(--lm-butter);
  color: var(--lm-butter-ink);
  border: 2px solid var(--lm-ink);
  border-radius: 8px;
  cursor: pointer;
}

/* =====================================================
   M57 — Day-close report card on payoutsView
   ===================================================== */
.lm-rest-dayclose-card {
  background: var(--lm-color-surface, #fff);
  border: 2px solid var(--lm-color-ink, #18170F);
  border-radius: 16px;
  padding: 22px 24px;
  margin: 18px 0;
  box-shadow: 0 4px 12px rgba(24,23,15,0.06);
}
.lm-rest-dayclose-head {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 16px;
  flex-wrap: wrap;
  margin-bottom: 18px;
}
.lm-rest-dayclose-eyebrow {
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--lm-color-ink-soft, #3B392C);
  opacity: 0.7;
}
.lm-rest-dayclose-day {
  font-size: 22px;
  font-weight: 800;
  color: var(--lm-color-ink, #18170F);
  margin: 4px 0 2px;
}
.lm-rest-dayclose-sent {
  font-size: 12px;
  color: var(--lm-color-muted, #7A7974);
}
.lm-rest-dayclose-actions {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
}
.lm-rest-dayclose-kpis {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 14px;
  margin-bottom: 18px;
}
.lm-rest-dayclose-kpi {
  background: var(--lm-color-butter-soft, #FFF8D6);
  border: 1px solid var(--lm-color-ink, #18170F);
  border-radius: 10px;
  padding: 12px 14px;
}
.lm-rest-dayclose-kpi-label {
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--lm-color-ink-soft, #3B392C);
  opacity: 0.65;
}
.lm-rest-dayclose-kpi-num {
  font-size: 22px;
  font-weight: 800;
  color: var(--lm-color-ink, #18170F);
  font-variant-numeric: tabular-nums;
  margin-top: 4px;
  line-height: 1.1;
}
.lm-rest-dayclose-kpi-num--hero {
  font-size: 30px;
  color: var(--lm-color-basil, #1F5E37);
}
.lm-rest-dayclose-kpi-sub {
  font-size: 11px;
  color: var(--lm-color-muted, #7A7974);
  margin-top: 4px;
}
.lm-rest-dayclose-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px;
}
.lm-rest-dayclose-block {
  background: var(--lm-color-surface-cream, #FBF7EE);
  border: 1px solid var(--lm-color-ink, #18170F);
  border-radius: 10px;
  padding: 14px 16px;
}
.lm-rest-dayclose-block--wide {
  grid-column: 1 / -1;
}
.lm-rest-dayclose-block-title {
  font-size: 13px;
  font-weight: 700;
  color: var(--lm-color-ink, #18170F);
  margin-bottom: 8px;
}
.lm-rest-dayclose-table {
  width: 100%;
  border-collapse: collapse;
  font-variant-numeric: tabular-nums;
}
.lm-rest-dayclose-table td {
  padding: 6px 0;
  font-size: 13px;
  color: var(--lm-color-ink, #18170F);
  border-bottom: 1px solid rgba(24,23,15,0.06);
}
.lm-rest-dayclose-table td.num {
  text-align: right;
  font-weight: 600;
}
.lm-rest-dayclose-table tr.net td {
  border-top: 2px solid var(--lm-color-ink, #18170F);
  border-bottom: none;
  font-weight: 800;
  font-size: 14px;
  padding-top: 10px;
}
.lm-rest-dayclose-bars {
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.lm-rest-dayclose-bar-row {
  display: grid;
  grid-template-columns: 40px 1fr 130px;
  align-items: center;
  gap: 8px;
  font-size: 12px;
}
.lm-rest-dayclose-bar-label {
  color: var(--lm-color-muted, #7A7974);
  text-align: right;
  font-variant-numeric: tabular-nums;
}
.lm-rest-dayclose-bar-track {
  background: rgba(24,23,15,0.05);
  height: 16px;
  border-radius: 4px;
  overflow: hidden;
}
.lm-rest-dayclose-bar-fill {
  background: var(--lm-color-primary, #FFE85C);
  height: 100%;
  min-width: 3px;
  border-radius: 4px;
}
.lm-rest-dayclose-bar-val {
  font-variant-numeric: tabular-nums;
  color: var(--lm-color-ink, #18170F);
  font-size: 12px;
}
.lm-rest-dayclose-empty,
.lm-rest-dayclose-muted {
  color: var(--lm-color-muted, #7A7974);
  font-size: 13px;
  padding: 8px 0;
}
.lm-rest-dayclose-history {
  display: flex;
  flex-direction: column;
  gap: 8px;
  padding: 4px 0;
}
.lm-rest-dayclose-history-row {
  border: 1px solid var(--lm-color-ink, #18170F);
  border-radius: 10px;
  background: var(--lm-color-surface, #fff);
  overflow: hidden;
}
.lm-rest-dayclose-history-row.is-expanded {
  background: var(--lm-color-surface-cream, #FBF7EE);
}
.lm-rest-dayclose-history-head {
  display: grid;
  grid-template-columns: 160px 1fr 110px 20px;
  align-items: center;
  gap: 14px;
  width: 100%;
  padding: 12px 16px;
  background: transparent;
  border: none;
  text-align: left;
  cursor: pointer;
  font: inherit;
  color: inherit;
}
.lm-rest-dayclose-history-head:hover {
  background: rgba(255,232,92,0.12);
}
.lm-rest-dayclose-history-date {
  font-weight: 700;
  color: var(--lm-color-ink, #18170F);
}
.lm-rest-dayclose-history-meta {
  color: var(--lm-color-muted, #7A7974);
  font-size: 13px;
}
.lm-rest-dayclose-history-net {
  font-weight: 800;
  text-align: right;
  font-variant-numeric: tabular-nums;
  color: var(--lm-color-basil, #1F5E37);
}
.lm-rest-dayclose-history-chev {
  color: var(--lm-color-muted, #7A7974);
  text-align: center;
}
.lm-rest-dayclose-history-body {
  padding: 4px 16px 16px;
}

@media (max-width: 720px) {
  .lm-rest-dayclose-kpis {
    grid-template-columns: 1fr 1fr;
  }
  .lm-rest-dayclose-grid {
    grid-template-columns: 1fr;
  }
  .lm-rest-dayclose-history-head {
    grid-template-columns: 1fr 100px 20px;
    grid-template-areas: "date net chev" "meta meta meta";
  }
  .lm-rest-dayclose-history-date { grid-area: date; }
  .lm-rest-dayclose-history-meta { grid-area: meta; }
  .lm-rest-dayclose-history-net { grid-area: net; }
  .lm-rest-dayclose-history-chev { grid-area: chev; }
}

@media print {
  body * { visibility: hidden; }
  .lm-rest-dayclose-card, .lm-rest-dayclose-card * { visibility: visible; }
  .lm-rest-dayclose-card { position: absolute; left: 0; top: 0; width: 100%; box-shadow: none; }
  .lm-rest-dayclose-actions { display: none; }
}

/* =====================================================
 * M64 — Weekly payout summary panel
 * Branded LoopMenu card on /payouts, plus print-optimized variant
 * for Save-as-PDF via #/payouts?print=weekly&week=YYYY-MM-DD
 * ===================================================== */

.lm-rest-weekly-host { display: block; }

.lm-rest-weekly-card {
  background: var(--lm-surface, #FBF7EE);
  border: 2px solid var(--lm-ink, #18170F);
  border-radius: 18px;
  padding: 22px 22px 18px;
  margin-top: 18px;
  box-shadow: 0 2px 0 var(--lm-ink, #18170F);
}

.lm-rest-weekly-head {
  display: flex; align-items: flex-start; justify-content: space-between;
  gap: 16px; flex-wrap: wrap; margin-bottom: 14px;
}
.lm-rest-weekly-eyebrow {
  font-size: 12px; font-weight: 700; letter-spacing: 0.08em;
  text-transform: uppercase; color: var(--lm-ink, #18170F); opacity: 0.7;
}
.lm-rest-weekly-title {
  font-size: 22px; font-weight: 700; color: var(--lm-ink, #18170F);
  margin: 4px 0 4px; line-height: 1.2;
}
.lm-rest-weekly-sent { font-size: 13px; color: var(--lm-ink, #18170F); opacity: 0.65; }
.lm-rest-weekly-actions { display: flex; gap: 8px; flex-wrap: wrap; }

.lm-rest-weekly-kpis {
  display: grid; grid-template-columns: 1.4fr 1fr 1fr 1fr; gap: 10px; margin-bottom: 14px;
}
.lm-rest-weekly-kpi {
  background: #fff; border: 2px solid var(--lm-ink, #18170F); border-radius: 12px; padding: 12px 14px;
}
.lm-rest-weekly-kpi--hero { background: var(--lm-primary-safe, var(--lm-primary, #FFE85C)); }
.lm-rest-weekly-kpi-label {
  font-size: 11px; font-weight: 700; letter-spacing: 0.08em;
  text-transform: uppercase; opacity: 0.7;
}
.lm-rest-weekly-kpi-num {
  font-size: 22px; font-weight: 700; color: var(--lm-ink, #18170F); margin-top: 4px;
}
.lm-rest-weekly-kpi-num--hero { font-size: 28px; }
.lm-rest-weekly-kpi-sub { font-size: 12px; opacity: 0.7; margin-top: 2px; }

.lm-rest-weekly-block { margin-top: 14px; }
.lm-rest-weekly-block-title {
  font-size: 13px; font-weight: 700; letter-spacing: 0.06em;
  text-transform: uppercase; color: var(--lm-ink, #18170F); margin-bottom: 8px;
}

.lm-rest-weekly-bars { display: flex; flex-direction: column; gap: 6px; }
.lm-rest-weekly-bar-row {
  display: grid; grid-template-columns: 40px 1fr 140px; align-items: center; gap: 10px;
  font-size: 13px;
}
.lm-rest-weekly-bar-label { color: var(--lm-ink, #18170F); opacity: 0.75; font-weight: 600; }
.lm-rest-weekly-bar-track {
  background: rgba(24,23,15,0.08); border-radius: 6px; height: 14px; overflow: hidden;
}
.lm-rest-weekly-bar-fill {
  background: var(--lm-primary-safe, var(--lm-primary, #FFE85C));
  height: 100%; border-right: 1px solid var(--lm-ink, #18170F);
}
.lm-rest-weekly-bar-val { text-align: right; opacity: 0.8; font-variant-numeric: tabular-nums; }

.lm-rest-weekly-table {
  width: 100%; border-collapse: collapse; font-size: 13px;
}
.lm-rest-weekly-table th, .lm-rest-weekly-table td {
  padding: 6px 8px; border-bottom: 1px solid rgba(24,23,15,0.1); text-align: left;
}
.lm-rest-weekly-table th {
  font-size: 11px; letter-spacing: 0.06em; text-transform: uppercase; opacity: 0.7;
}
.lm-rest-weekly-table .num { text-align: right; font-variant-numeric: tabular-nums; }
.lm-rest-weekly-strong { font-weight: 700; }

.lm-rest-weekly-recent { display: flex; flex-direction: column; gap: 6px; }
.lm-rest-weekly-recent-row {
  display: grid; grid-template-columns: 1.2fr 1.6fr 90px 24px; align-items: center; gap: 10px;
  background: #fff; border: 2px solid var(--lm-ink, #18170F); border-radius: 10px;
  padding: 8px 12px; cursor: pointer; font-size: 13px; text-align: left;
  font-family: inherit; color: var(--lm-ink, #18170F);
}
.lm-rest-weekly-recent-row:hover { background: rgba(255,232,92,0.18); }
.lm-rest-weekly-recent-row.is-active {
  background: var(--lm-primary-safe, var(--lm-primary, #FFE85C));
}
.lm-rest-weekly-recent-range { font-weight: 600; }
.lm-rest-weekly-recent-meta { opacity: 0.75; }
.lm-rest-weekly-recent-net { text-align: right; font-weight: 700; font-variant-numeric: tabular-nums; }
.lm-rest-weekly-recent-chev { text-align: center; opacity: 0.55; }

@media (max-width: 720px) {
  .lm-rest-weekly-kpis { grid-template-columns: 1fr 1fr; }
  .lm-rest-weekly-bar-row { grid-template-columns: 36px 1fr 120px; font-size: 12px; }
  .lm-rest-weekly-recent-row {
    grid-template-columns: 1fr 90px;
    grid-template-areas: "range net" "meta meta";
  }
  .lm-rest-weekly-recent-range { grid-area: range; }
  .lm-rest-weekly-recent-meta { grid-area: meta; opacity: 0.65; font-size: 12px; }
  .lm-rest-weekly-recent-net { grid-area: net; }
  .lm-rest-weekly-recent-chev { display: none; }
}

/* ---------- Print-optimized variant ---------- */
.lm-rest-payouts--print {
  padding: 0;
  background: #fff;
}
.lm-rest-weekly-card--print {
  border: 2px solid var(--lm-ink, #18170F);
  margin: 0;
  box-shadow: none;
}
.lm-rest-weekly-print-head {
  display: flex; align-items: center; gap: 16px;
  padding-bottom: 14px; margin-bottom: 14px;
  border-bottom: 2px solid var(--lm-ink, #18170F);
}
.lm-rest-weekly-print-brand {
  display: inline-flex; align-items: baseline;
  background: var(--lm-ink, #18170F);
  padding: 6px 12px; border-radius: 8px;
  font-weight: 800; font-size: 22px; letter-spacing: -0.01em;
}
.lm-rest-weekly-print-brand-loop { color: var(--lm-primary-safe, var(--lm-primary, #FFE85C)); }
.lm-rest-weekly-print-brand-menu { color: #fff; }
.lm-rest-weekly-print-eyebrow {
  font-size: 11px; font-weight: 700; letter-spacing: 0.1em;
  text-transform: uppercase; opacity: 0.7;
}
.lm-rest-weekly-print-week { font-size: 20px; font-weight: 700; margin-top: 2px; }

@media print {
  body * { visibility: hidden; }
  .lm-rest-payouts--print, .lm-rest-payouts--print * { visibility: visible; }
  .lm-rest-payouts--print {
    position: absolute; left: 0; top: 0; width: 100%;
    padding: 12px; background: #fff;
  }
  .lm-rest-weekly-card--print {
    box-shadow: none; border-radius: 0; page-break-inside: avoid;
  }
  .lm-rest-weekly-recent { display: none; }
  .lm-rest-weekly-actions { display: none; }
  a[href]:after { content: ''; }
}

/* =====================================================
 * M60 — /clock view (staff PIN clock-in/out)
 * Tablet-friendly numeric keypad
 * ===================================================== */

body.lm-clock-fullscreen {
  background: var(--lm-butter, #f8e9b8);
}
body.lm-clock-fullscreen .lm-nav,
body.lm-clock-fullscreen #lm-install-slot {
  display: none !important;
}
body.lm-clock-fullscreen [data-app-root] {
  max-width: none;
  margin: 0;
  padding: 0;
  min-height: 100vh;
  display: flex;
}

.lm-clock {
  flex: 1 1 auto;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 24px;
  min-height: 100vh;
  box-sizing: border-box;
}

.lm-clock-card {
  width: 100%;
  max-width: 480px;
  background: #fff;
  border-radius: 24px;
  padding: 32px 28px 28px;
  box-shadow: 0 24px 60px -20px rgba(0,0,0,0.25);
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 18px;
}

.lm-clock-brand {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
}
.lm-clock-logo {
  width: 64px;
  height: 64px;
  object-fit: contain;
  border-radius: 14px;
}
.lm-clock-logo-fallback {
  width: 64px;
  height: 64px;
  border-radius: 14px;
  background: var(--lm-butter, #f8e9b8);
  color: #111;
  font-size: 32px;
  display: flex;
  align-items: center;
  justify-content: center;
}
.lm-clock-tenant-name {
  font-weight: 700;
  font-size: 22px;
  color: #111;
  text-align: center;
}

.lm-clock-prompt {
  font-size: 17px;
  color: #444;
  font-weight: 500;
}

.lm-clock-pin {
  display: flex;
  gap: 14px;
  margin: 4px 0;
}
.lm-clock-pin-dot {
  width: 18px;
  height: 18px;
  border-radius: 50%;
  background: #e6e6e6;
  border: 2px solid #d0d0d0;
  transition: background 120ms ease, transform 120ms ease;
}
.lm-clock-pin-dot.lm-clock-pin-filled {
  background: #111;
  border-color: #111;
  transform: scale(1.05);
}

.lm-clock-feedback {
  min-height: 24px;
  font-size: 15px;
  text-align: center;
  width: 100%;
  padding: 6px 8px;
  border-radius: 8px;
}
.lm-clock-feedback--info { color: #555; }
.lm-clock-feedback--error {
  color: #8a1f1f;
  background: #fbeaea;
}
.lm-clock-feedback--success {
  color: #1f5a2b;
  background: #e8f6ec;
}

.lm-clock-keypad {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 12px;
  width: 100%;
  margin-top: 4px;
}
.lm-clock-key {
  appearance: none;
  border: none;
  background: #f4f4f4;
  font-size: 28px;
  font-weight: 600;
  color: #111;
  padding: 18px 0;
  border-radius: 14px;
  cursor: pointer;
  user-select: none;
  transition: background 100ms ease, transform 60ms ease;
  min-height: 64px;
}
.lm-clock-key:hover { background: #ececec; }
.lm-clock-key:active { transform: scale(0.97); background: #e2e2e2; }
.lm-clock-key-enter {
  background: var(--lm-butter, #f8e9b8);
  color: #111;
  font-size: 20px;
}
.lm-clock-key-enter:hover { background: #f0d98a; }
.lm-clock-key-back {
  background: #ececec;
  font-size: 22px;
}

.lm-clock-footnote {
  font-size: 12px;
  color: #888;
  margin-top: 4px;
  text-align: center;
}

@media (max-width: 480px) {
  .lm-clock { padding: 12px; }
  .lm-clock-card { padding: 20px 16px; border-radius: 18px; }
  .lm-clock-key { font-size: 24px; min-height: 56px; padding: 14px 0; }
}

/* =====================================================
 * M60 — Settings PIN management + Clock URL banner
 * ===================================================== */

.lm-settings-clock-banner {
  display: flex;
  align-items: center;
  gap: 16px;
  flex-wrap: wrap;
  background: #fff8df;
  border: 1px solid #f1e1a3;
  border-radius: 12px;
  padding: 14px 16px;
  margin: 12px 0 8px;
}
.lm-settings-clock-title {
  font-weight: 700;
  font-size: 14px;
  color: #111;
}
.lm-settings-clock-blurb {
  font-size: 13px;
  line-height: 1.35;
}
.lm-settings-clock-url {
  display: inline-block;
  font-family: 'SFMono-Regular', Menlo, Consolas, monospace;
  font-size: 12px;
  background: #fff;
  border: 1px solid #ead9a0;
  padding: 4px 8px;
  border-radius: 6px;
  word-break: break-all;
  margin-top: 4px;
  color: #5a4a10;
}

.lm-settings-staff-pin {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 6px;
  min-width: 180px;
}
.lm-settings-pin-status {
  display: inline-block;
  font-size: 12px;
  color: #888;
  padding: 2px 8px;
  border-radius: 999px;
  background: #f1f1f1;
}
.lm-settings-pin-status.is-set {
  color: #1f5a2b;
  background: #e7f5eb;
}
.btn.btn-xs {
  font-size: 12px;
  padding: 4px 10px;
  border-radius: 6px;
}
.btn.lm-btn-danger {
  color: #8a1f1f;
}

/* PIN modal */
.lm-pin-modal-backdrop {
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,0.4);
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 1000;
  padding: 16px;
}
.lm-pin-modal {
  width: 100%;
  max-width: 380px;
  background: #fff;
  border-radius: 16px;
  padding: 22px 22px 18px;
  box-shadow: 0 16px 50px -16px rgba(0,0,0,0.4);
}
.lm-pin-modal-title {
  margin: 0 0 6px;
  font-size: 18px;
  font-weight: 700;
}
.lm-pin-modal-blurb {
  margin: 0 0 14px;
  font-size: 13px;
  line-height: 1.4;
}
.lm-pin-modal-input {
  width: 100%;
  font-size: 22px;
  letter-spacing: 0.4em;
  text-align: center;
  padding: 12px;
  border-radius: 10px;
}
.lm-pin-modal-err {
  min-height: 18px;
  font-size: 12px;
  color: #8a1f1f;
  margin-top: 6px;
}
.lm-pin-modal-actions {
  margin-top: 14px;
  justify-content: flex-end;
}

/* =====================================================
   M61 — Deal-count badge on diner home feed photo
   ===================================================== */
/* Bottom-right of the photo. Tomato pill (high alert color), ink-soft
   shadow, and a tiny pulse so it catches the eye without being annoying
   on every paint. Hidden when count is 0 (renderer omits the element). */
.lm-diner-feed-photo-badge--deals {
  position: absolute;
  top: auto;
  left: auto;
  bottom: 12px;
  right: 12px;
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 6px 10px 6px 8px;
  background: var(--lm-tomato);
  color: var(--lm-cream);
  font-family: var(--lm-font-display, 'Bricolage Grotesque', sans-serif);
  font-weight: 700;
  font-size: 12px;
  letter-spacing: 0.4px;
  text-transform: uppercase;
  border-radius: 999px;
  box-shadow: 0 4px 14px rgba(204, 53, 38, 0.35), 0 1px 3px rgba(24, 23, 15, 0.18);
  animation: lm-feed-deal-pulse 2.6s ease-in-out infinite;
}

.lm-diner-feed-photo-badge--deals .lm-diner-feed-photo-badge__glyph {
  font-size: 13px;
  line-height: 1;
  filter: drop-shadow(0 1px 1px rgba(24, 23, 15, 0.25));
}

@keyframes lm-feed-deal-pulse {
  0%, 100% { transform: scale(1); box-shadow: 0 4px 14px rgba(204, 53, 38, 0.35), 0 1px 3px rgba(24, 23, 15, 0.18); }
  50%      { transform: scale(1.04); box-shadow: 0 6px 18px rgba(204, 53, 38, 0.55), 0 1px 3px rgba(24, 23, 15, 0.22); }
}

@media (prefers-reduced-motion: reduce) {
  .lm-diner-feed-photo-badge--deals { animation: none; }
}

/* ============================================================
   M62 — Server picker modal (orders accept flow)
   ============================================================ */
.lm-modal--compact { max-width: 420px; }
.lm-modal-close {
  width: 32px; height: 32px; border-radius: 50%;
  border: none; background: transparent; cursor: pointer;
  font-size: 24px; line-height: 1; color: #3B392C;
}
.lm-modal-close:hover { background: #EEE9DA; }
.lm-server-pick-list {
  display: flex; flex-direction: column; gap: 8px;
  max-height: 60vh;
}
.lm-server-pick-row {
  display: flex; align-items: center; justify-content: space-between;
  padding: 14px 16px;
  background: #FFFFFF; color: #18170F;
  border: 1px solid #EEE9DA; border-radius: 12px;
  font: 500 16px/1.2 Inter, system-ui, sans-serif;
  cursor: pointer; text-align: left;
  transition: background 120ms, border-color 120ms, transform 80ms;
}
.lm-server-pick-row:hover,
.lm-server-pick-row:focus-visible {
  background: #FFF8E1; border-color: #18170F; outline: none;
}
.lm-server-pick-row:active { transform: scale(0.99); }
.lm-server-pick-row:disabled { opacity: 0.5; cursor: not-allowed; }
.lm-server-pick-name { font-weight: 600; }
.lm-server-pick-role {
  font-size: 12px; font-weight: 500;
  color: #3B392C;
  background: #FBF7EE;
  border: 1px solid #EEE9DA;
  padding: 2px 8px; border-radius: 999px;
  text-transform: capitalize;
}
.lm-server-pick-empty {
  padding: 16px; text-align: center;
  color: #3B392C; font-size: 14px;
  background: #FFF8E1; border: 1px dashed #D7CFB4; border-radius: 12px;
}
.lm-link { color: var(--lm-blue, #2563eb); text-decoration: underline; font-weight: 500; }
@media (prefers-reduced-motion: reduce) {
  .lm-server-pick-row { transition: none; }
  .lm-server-pick-row:active { transform: none; }
}

/* =====================================================
   M63 — Post-order tip-add
   ===================================================== */
.lm-diner-tipadd-btn {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  text-align: left;
  width: 100%;
  margin-top: 12px;
  padding: 12px 14px;
  background: linear-gradient(180deg, #FFF6C8 0%, #FFE85C 100%);
  border: 1px solid rgba(0,0,0,0.08);
  border-radius: 12px;
  cursor: pointer;
  transition: transform 120ms ease, box-shadow 120ms ease;
  box-shadow: 0 2px 4px rgba(0,0,0,0.04);
}
.lm-diner-tipadd-btn:hover { transform: translateY(-1px); box-shadow: 0 4px 10px rgba(0,0,0,0.08); }
.lm-diner-tipadd-btn:active { transform: translateY(0); }
.lm-diner-tipadd-btn-label { font-weight: 700; font-size: 15px; color: #1a1a1a; }
.lm-diner-tipadd-btn-sub { font-size: 12px; color: rgba(0,0,0,0.6); margin-top: 2px; }

.lm-diner-tipadd-overlay {
  position: fixed; inset: 0;
  background: rgba(0,0,0,0.55);
  display: flex; align-items: center; justify-content: center;
  z-index: 9999;
  padding: 16px;
  animation: lmTipFade 140ms ease;
}
@keyframes lmTipFade { from { opacity: 0; } to { opacity: 1; } }

.lm-diner-tipadd-modal {
  background: #fff;
  border-radius: 16px;
  padding: 22px 22px 18px;
  width: 100%;
  max-width: 420px;
  position: relative;
  box-shadow: 0 16px 40px rgba(0,0,0,0.25);
  animation: lmTipPop 160ms cubic-bezier(0.2,0.9,0.3,1.2);
}
@keyframes lmTipPop { from { transform: translateY(8px) scale(0.98); opacity: 0; } to { transform: none; opacity: 1; } }

.lm-diner-tipadd-title { margin: 0 0 6px; font-size: 20px; font-weight: 700; color: #1a1a1a; }
.lm-diner-tipadd-sub   { margin: 0 0 16px; font-size: 13px; color: rgba(0,0,0,0.6); line-height: 1.4; }

.lm-diner-tipadd-presets {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 8px;
  margin-bottom: 14px;
}
@media (max-width: 360px) {
  .lm-diner-tipadd-presets { grid-template-columns: repeat(2, 1fr); }
}
.lm-diner-tipadd-chip {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 2px;
  padding: 10px 6px;
  background: #FFF8DC;
  border: 1.5px solid rgba(0,0,0,0.08);
  border-radius: 10px;
  cursor: pointer;
  transition: background 100ms ease, border-color 100ms ease, transform 80ms ease;
}
.lm-diner-tipadd-chip:hover { background: #FFF3B3; }
.lm-diner-tipadd-chip:active { transform: scale(0.97); }
.lm-diner-tipadd-chip--on {
  background: #FFE85C;
  border-color: #1a1a1a;
}
.lm-diner-tipadd-chip-pct { font-weight: 700; font-size: 15px; color: #1a1a1a; }
.lm-diner-tipadd-chip-amt { font-size: 12px; color: rgba(0,0,0,0.65); }

.lm-diner-tipadd-custom {
  display: flex; flex-direction: column; gap: 6px;
  margin-bottom: 14px;
}
.lm-diner-tipadd-custom > span {
  font-size: 12px; color: rgba(0,0,0,0.65); font-weight: 500;
}
.lm-diner-tipadd-custom > input {
  padding: 10px 12px;
  border: 1.5px solid rgba(0,0,0,0.15);
  border-radius: 8px;
  font-size: 16px;
  width: 100%;
  box-sizing: border-box;
}
.lm-diner-tipadd-custom > input:focus {
  outline: none;
  border-color: #1a1a1a;
}

.lm-diner-tipadd-err {
  color: #c83232;
  font-size: 13px;
  margin: 0 0 10px;
}

.lm-diner-tipadd-actions {
  display: flex; justify-content: flex-end; gap: 8px;
}

@media (prefers-reduced-motion: reduce) {
  .lm-diner-tipadd-overlay,
  .lm-diner-tipadd-modal { animation: none; }
  .lm-diner-tipadd-btn,
  .lm-diner-tipadd-chip { transition: none; }
}

/* ===================================================== */
/* M65 — Reports settings tab                            */
/* ===================================================== */

.lm-settings-reports-form {
  width: 100%;
}

.lm-settings-reports-card {
  border: 1px solid var(--lm-color-border, rgba(0,0,0,0.08));
  border-radius: 12px;
  padding: 14px 16px;
  background: var(--lm-color-surface, #fff);
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.lm-settings-reports-card-head {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.lm-settings-reports-card-sub {
  font-size: 12px;
  color: var(--lm-color-muted, #6b7280);
  line-height: 1.45;
}

.lm-settings-reports-toggle {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  font-weight: 600;
  font-size: 14.5px;
  cursor: pointer;
  color: var(--lm-color-text, #111);
}

.lm-settings-reports-toggle input[type="checkbox"] {
  width: 18px;
  height: 18px;
  accent-color: var(--lm-yellow, #FFE85C);
  cursor: pointer;
}

.lm-settings-reports-card-body {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  align-items: center;
}

.lm-settings-reports-hour-label {
  display: inline-flex;
  flex-direction: column;
  gap: 4px;
  font-size: 12px;
  color: var(--lm-color-muted, #6b7280);
  font-weight: 500;
}

.lm-settings-reports-hour-select {
  min-width: 180px;
  transition: opacity 120ms ease;
}

.lm-settings-reports-readonly {
  margin-top: 10px;
  padding: 10px 12px;
  background: var(--lm-color-surface-muted, #FBF7EE);
  border: 1px solid var(--lm-color-border, rgba(0,0,0,0.08));
  border-radius: 10px;
  font-size: 13px;
  color: var(--lm-color-muted, #6b7280);
}

/* Recipients list */
.lm-settings-reports-addrow {
  background: var(--lm-color-surface-muted, #FBF7EE);
  border: 1px solid var(--lm-color-border, rgba(0,0,0,0.08));
  border-radius: 12px;
  padding: 12px 14px;
}

.lm-settings-reports-field-label {
  display: block;
  font-size: 12px;
  font-weight: 500;
  color: var(--lm-color-muted, #6b7280);
  margin-bottom: 4px;
}

.lm-settings-reports-typegroup {
  flex: 0 1 auto;
}

.lm-settings-reports-typecheck {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 13.5px;
  cursor: pointer;
  padding: 6px 10px;
  border: 1px solid var(--lm-color-border, rgba(0,0,0,0.08));
  border-radius: 999px;
  background: var(--lm-color-surface, #fff);
  user-select: none;
}

.lm-settings-reports-typecheck input[type="checkbox"] {
  accent-color: var(--lm-yellow, #FFE85C);
  cursor: pointer;
}

.lm-settings-reports-list {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.lm-settings-reports-empty {
  margin: 12px 0;
}

.lm-settings-reports-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 12px;
  padding: 12px 14px;
  border: 1px solid var(--lm-color-border, rgba(0,0,0,0.08));
  border-radius: 12px;
  background: var(--lm-color-surface, #fff);
  flex-wrap: wrap;
}

.lm-settings-reports-row-main {
  display: flex;
  flex-direction: column;
  gap: 4px;
  flex: 1 1 240px;
  min-width: 0;
}

.lm-settings-reports-row-email {
  font-weight: 600;
  font-size: 14.5px;
  color: var(--lm-color-text, #111);
  overflow-wrap: anywhere;
  word-break: break-word;
}

.lm-settings-reports-row-label {
  font-size: 12.5px;
}

.lm-settings-reports-row-badges {
  display: flex;
  flex-wrap: wrap;
  gap: 5px;
  margin-top: 2px;
}

.lm-settings-reports-badge {
  display: inline-flex;
  align-items: center;
  font-size: 11.5px;
  font-weight: 600;
  letter-spacing: 0.02em;
  padding: 2px 8px;
  border-radius: 999px;
  background: var(--lm-yellow-soft, #FFF4B8);
  color: var(--lm-color-text, #111);
  border: 1px solid rgba(0,0,0,0.06);
}

.lm-settings-reports-badge--paused {
  background: var(--lm-color-surface-muted, #FBF7EE);
  color: var(--lm-color-muted, #6b7280);
}

.lm-settings-reports-row-actions {
  display: flex;
  gap: 6px;
  flex: 0 0 auto;
}

.lm-settings-reports-row-delete {
  color: var(--lm-color-danger, #b91c1c);
}

@media (max-width: 540px) {
  .lm-settings-reports-row-actions {
    width: 100%;
    justify-content: flex-end;
  }
  .lm-settings-reports-hour-select {
    min-width: 0;
    width: 100%;
  }
}

/* =====================================================
 * M66 — Weekly digest card on /overview
 * ===================================================== */
.lm-overview-digest {
  display: flex;
  flex-direction: column;
  gap: 14px;
  padding: 18px;
  border-radius: 14px;
  border: 2px solid var(--lm-ink, #18170F);
  background: #fff;
  position: relative;
}
.lm-overview-digest--empty {
  background: var(--lm-cream, #FBF7EE);
  border-style: dashed;
}
.lm-overview-digest-head {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 12px;
  flex-wrap: wrap;
}
.lm-overview-digest-pill {
  display: inline-block;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  padding: 3px 8px;
  border-radius: 999px;
  background: var(--lm-butter, #FFE85C);
  color: var(--lm-ink, #18170F);
  border: 1.5px solid var(--lm-ink, #18170F);
  margin-bottom: 6px;
}
.lm-overview-digest-title {
  font-size: 18px;
  font-weight: 800;
  color: var(--lm-ink, #18170F);
  margin: 0;
  line-height: 1.2;
}
.lm-overview-digest-emailed {
  font-size: 12px;
  margin-top: 4px;
  white-space: nowrap;
}
.lm-overview-digest-help {
  margin: 4px 0 12px;
  max-width: 56ch;
}
.lm-overview-digest-body {
  display: flex;
  flex-direction: column;
}
.lm-overview-digest-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 12px;
}
.lm-overview-digest-stat {
  background: var(--lm-cream, #FBF7EE);
  border-radius: 10px;
  padding: 12px;
  border: 1px solid #eee;
}
.lm-overview-digest-stat--accent {
  background: var(--lm-butter, #FFE85C);
  border-color: var(--lm-ink, #18170F);
}
.lm-overview-digest-stat-label {
  font-size: 11px;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: #7A7974;
  margin-bottom: 4px;
}
.lm-overview-digest-stat-num {
  font-size: 22px;
  font-weight: 800;
  color: var(--lm-ink, #18170F);
  font-variant-numeric: tabular-nums;
  line-height: 1.1;
}
.lm-overview-digest-actions {
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
  margin-top: 4px;
}
@media (max-width: 720px) {
  .lm-overview-digest-grid {
    grid-template-columns: repeat(2, 1fr);
  }
  .lm-overview-digest-stat-num {
    font-size: 18px;
  }
  .lm-overview-digest-emailed {
    white-space: normal;
  }
}

/* =================================================================
   M85 — Diner onboarding form (extends lm-diner-signin-* shell)
   ================================================================= */
.lm-onboard-row {
  display: flex;
  gap: 12px;
  align-items: flex-start;
}
.lm-onboard-row > .lm-onboard-field { flex: 1; min-width: 0; }
.lm-onboard-field { margin-bottom: 12px; }
.lm-onboard-required { color: var(--lm-error, #b8341a); font-weight: 600; }

.lm-onboard-consent {
  border: 1px solid var(--lm-border, #d4d1ca);
  border-radius: 10px;
  padding: 14px 14px 8px;
  margin: 14px 0 8px;
}
.lm-onboard-consent__legend {
  font-size: 0.78rem;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--lm-text-muted, #6b6a64);
  padding: 0 6px;
}
.lm-onboard-consent__row {
  display: flex;
  gap: 10px;
  align-items: flex-start;
  padding: 8px 4px;
  cursor: pointer;
}
.lm-onboard-consent__row input[type="checkbox"] {
  margin-top: 4px;
  width: 18px;
  height: 18px;
  flex-shrink: 0;
  accent-color: var(--lm-primary, #01696F);
}
.lm-onboard-consent__row > span {
  display: flex;
  flex-direction: column;
  gap: 2px;
  font-size: 0.92rem;
  line-height: 1.35;
}
.lm-onboard-consent__sub {
  font-size: 0.78rem;
  color: var(--lm-text-muted, #6b6a64);
  line-height: 1.4;
}

/* ============================================================
   M86 — Places autocomplete dropdown (.lm-addr-ac-*)
   Mounted under an address input by attachAddressAutocomplete()
   in views/diner/dinerLocation.js. The host .lm-onboard-field /
   .lm-diner-checkout-field is set to position:relative at runtime.
   ============================================================ */
.lm-addr-ac-list {
  position: absolute;
  left: 0;
  right: 0;
  top: 100%;
  margin-top: 4px;
  background: #fff;
  border: 1px solid var(--lm-border, #e3e1d8);
  border-radius: 10px;
  box-shadow: 0 12px 32px rgba(15, 25, 40, 0.12), 0 2px 8px rgba(15, 25, 40, 0.06);
  max-height: 280px;
  overflow-y: auto;
  z-index: 1000;
  padding: 4px;
  list-style: none;
}
.lm-addr-ac-list[hidden] { display: none; }

.lm-addr-ac-item {
  display: block;
  width: 100%;
  text-align: left;
  background: transparent;
  border: 0;
  padding: 9px 12px;
  border-radius: 7px;
  cursor: pointer;
  font: inherit;
  color: var(--lm-text, #1a1a1a);
  line-height: 1.35;
}
.lm-addr-ac-item:hover,
.lm-addr-ac-item.is-active {
  background: var(--lm-surface-muted, #f4f1e9);
}
.lm-addr-ac-item:focus { outline: none; }

.lm-addr-ac-primary {
  font-weight: 600;
  font-size: 0.95rem;
  display: block;
}
.lm-addr-ac-secondary {
  display: block;
  margin-top: 2px;
  font-size: 0.8rem;
  color: var(--lm-text-muted, #6b6a64);
}

/* =====================================================
   M98 — Account deletion (diner + owner shared modal)
   ===================================================== */
.lm-danger-zone {
  border: 1px solid rgba(217, 48, 37, 0.25);
  background: rgba(217, 48, 37, 0.04);
}
.lm-danger-zone__copy {
  font-size: 14px;
  color: var(--lm-text-muted, #6b6a64);
  line-height: 1.55;
  margin: 0 0 14px;
}
.lm-delete-btn {
  background: #d93025;
  border-color: #d93025;
  color: #fff;
  font-weight: 600;
}
.lm-delete-btn:hover:not(:disabled) {
  background: #b3261e;
  border-color: #b3261e;
}
.lm-delete-btn:disabled {
  opacity: 0.55;
  cursor: not-allowed;
}

.lm-delete-modal__overlay {
  position: fixed;
  inset: 0;
  background: rgba(20, 18, 12, 0.55);
  z-index: 9999;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 16px;
  animation: lm-fade-in 0.14s ease-out;
}
@keyframes lm-fade-in {
  from { opacity: 0; }
  to   { opacity: 1; }
}
.lm-delete-modal {
  background: #fff;
  border-radius: 14px;
  padding: 22px 22px 18px;
  max-width: 440px;
  width: 100%;
  box-shadow: 0 20px 60px rgba(0,0,0,0.28);
  border-top: 4px solid #d93025;
}
.lm-delete-modal__title {
  margin: 0 0 12px;
  font-size: 18px;
  color: #1a1a1a;
}
.lm-delete-modal__copy {
  font-size: 14px;
  line-height: 1.55;
  color: #2a2a2a;
  margin: 0 0 12px;
}
.lm-delete-modal__input {
  width: 100%;
  padding: 10px 12px;
  border: 1px solid #c8c4b7;
  border-radius: 8px;
  font-size: 15px;
  font-family: ui-monospace, Menlo, monospace;
  letter-spacing: 0.08em;
  margin-top: 4px;
  outline: none;
  box-sizing: border-box;
}
.lm-delete-modal__input:focus {
  border-color: #d93025;
  box-shadow: 0 0 0 3px rgba(217, 48, 37, 0.15);
}
.lm-delete-modal__error {
  margin-top: 10px;
  padding: 8px 10px;
  background: rgba(217, 48, 37, 0.08);
  border: 1px solid rgba(217, 48, 37, 0.3);
  border-radius: 6px;
  font-size: 13px;
  color: #b3261e;
}
.lm-delete-modal__actions {
  display: flex;
  justify-content: flex-end;
  gap: 10px;
  margin-top: 16px;
}

/* ============================================================
   M99.2 — Customers tab: Add customer + Import CSV wizard
   ============================================================ */
.lm-cust-import-overlay {
  position: fixed;
  inset: 0;
  background: rgba(24, 23, 15, 0.42);
  backdrop-filter: blur(2px);
  -webkit-backdrop-filter: blur(2px);
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 1100;
  animation: lm-fade-in 160ms ease-out;
  padding: 16px;
}
.lm-cust-import-modal {
  position: relative;
  width: min(720px, 100%);
  max-height: 90vh;
  background: var(--lm-cream, #FBF7EE);
  border-radius: 14px;
  box-shadow: 0 24px 56px rgba(24, 23, 15, 0.28);
  display: flex;
  flex-direction: column;
  overflow: hidden;
  animation: lm-pop-in 200ms cubic-bezier(0.22, 0.61, 0.36, 1);
}
@keyframes lm-pop-in {
  from { opacity: 0; transform: scale(0.96) translateY(8px); }
  to { opacity: 1; transform: scale(1) translateY(0); }
}
.lm-cust-import-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 18px 22px;
  border-bottom: 1px solid rgba(24, 23, 15, 0.08);
  background: #fff;
}
.lm-cust-import-header h3 {
  margin: 0;
  font-size: 17px;
  font-weight: 600;
  color: var(--lm-ink, #18170F);
}
.lm-cust-import-header button.lm-cust-import-close {
  width: 32px;
  height: 32px;
  border-radius: 999px;
  border: 0;
  background: rgba(24, 23, 15, 0.06);
  color: var(--lm-ink, #18170F);
  font-size: 20px;
  cursor: pointer;
  line-height: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: background 120ms ease;
}
.lm-cust-import-header button.lm-cust-import-close:hover {
  background: rgba(24, 23, 15, 0.12);
}
.lm-cust-import-body {
  padding: 22px;
  overflow-y: auto;
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: 16px;
}
.lm-cust-import-steps {
  display: flex;
  gap: 8px;
  margin-bottom: 4px;
  font-size: 12px;
  color: rgba(24, 23, 15, 0.55);
}
.lm-cust-import-steps span {
  padding: 4px 10px;
  border-radius: 999px;
  background: rgba(24, 23, 15, 0.06);
}
.lm-cust-import-steps span.active {
  background: var(--lm-ink, #18170F);
  color: var(--lm-cream, #FBF7EE);
  font-weight: 600;
}
.lm-cust-import-drop {
  border: 2px dashed rgba(24, 23, 15, 0.22);
  border-radius: 12px;
  padding: 36px 20px;
  text-align: center;
  background: rgba(255, 255, 255, 0.6);
  cursor: pointer;
  transition: border-color 140ms ease, background 140ms ease;
}
.lm-cust-import-drop:hover,
.lm-cust-import-drop.dragover {
  border-color: var(--lm-ink, #18170F);
  background: #fff;
}
.lm-cust-import-drop p {
  margin: 8px 0 4px;
  color: var(--lm-ink, #18170F);
  font-weight: 500;
}
.lm-cust-import-drop small {
  color: rgba(24, 23, 15, 0.55);
  font-size: 12px;
}
.lm-cust-import-stats {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
  gap: 10px;
}
.lm-cust-import-stat {
  background: #fff;
  border: 1px solid rgba(24, 23, 15, 0.08);
  border-radius: 10px;
  padding: 12px 14px;
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.lm-cust-import-stat .k {
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: rgba(24, 23, 15, 0.55);
}
.lm-cust-import-stat .v {
  font-size: 22px;
  font-weight: 600;
  color: var(--lm-ink, #18170F);
}
.lm-cust-import-stat.ok .v { color: #1f7a3a; }
.lm-cust-import-stat.warn .v { color: #b67116; }
.lm-cust-import-stat.err .v { color: #b13a2a; }
.lm-cust-import-sample-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 12px;
  background: #fff;
  border: 1px solid rgba(24, 23, 15, 0.08);
  border-radius: 8px;
  overflow: hidden;
}
.lm-cust-import-sample-table th,
.lm-cust-import-sample-table td {
  padding: 8px 10px;
  text-align: left;
  border-bottom: 1px solid rgba(24, 23, 15, 0.06);
  color: var(--lm-ink, #18170F);
}
.lm-cust-import-sample-table th {
  background: rgba(24, 23, 15, 0.04);
  font-weight: 600;
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.03em;
  color: rgba(24, 23, 15, 0.65);
}
.lm-cust-import-sample-table tr:last-child td { border-bottom: 0; }
.lm-cust-import-done {
  text-align: center;
  padding: 16px 0 4px;
}
.lm-cust-import-done h4 {
  margin: 0 0 6px;
  font-size: 18px;
  color: var(--lm-ink, #18170F);
}
.lm-cust-import-done p {
  margin: 0;
  color: rgba(24, 23, 15, 0.65);
  font-size: 13px;
}
.lm-cust-import-error-list {
  max-height: 200px;
  overflow-y: auto;
  margin: 8px 0 0;
  padding: 10px 12px;
  background: rgba(177, 58, 42, 0.06);
  border: 1px solid rgba(177, 58, 42, 0.2);
  border-radius: 8px;
  font-size: 12px;
  color: #8a2d1f;
}
.lm-cust-import-error-list ul { margin: 0; padding-left: 18px; }
.lm-cust-import-error-list li { margin: 2px 0; }
.lm-cust-import-footer {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 10px;
  padding: 14px 22px;
  border-top: 1px solid rgba(24, 23, 15, 0.08);
  background: #fff;
}
.lm-cust-import-footer .lm-cust-import-actions {
  display: flex;
  gap: 8px;
}
.lm-cust-import-attest {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  padding: 12px 14px;
  background: rgba(255, 230, 170, 0.35);
  border: 1px solid rgba(182, 113, 22, 0.28);
  border-radius: 10px;
  font-size: 13px;
  color: var(--lm-ink, #18170F);
  cursor: pointer;
}
.lm-cust-import-attest input[type="checkbox"] {
  margin-top: 2px;
  flex-shrink: 0;
  width: 16px;
  height: 16px;
  cursor: pointer;
}
.lm-cust-import-map-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px 14px;
}
.lm-cust-import-map-row {
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.lm-cust-import-map-row label {
  font-size: 12px;
  font-weight: 500;
  color: rgba(24, 23, 15, 0.7);
}
.lm-cust-import-map-row select {
  padding: 8px 10px;
  border: 1px solid rgba(24, 23, 15, 0.18);
  border-radius: 8px;
  background: #fff;
  font-size: 13px;
  color: var(--lm-ink, #18170F);
  cursor: pointer;
}
.lm-cust-import-map-row select:focus {
  outline: none;
  border-color: var(--lm-ink, #18170F);
}

/* Add customer single-row form (reused) */
.lm-cust-form {
  display: flex;
  flex-direction: column;
  gap: 14px;
}
.lm-cust-form-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
}
.lm-cust-form-field {
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.lm-cust-form-field.full { grid-column: 1 / -1; }
.lm-cust-form-field label {
  font-size: 12px;
  font-weight: 500;
  color: rgba(24, 23, 15, 0.7);
}
.lm-cust-form-field input,
.lm-cust-form-field textarea {
  padding: 9px 11px;
  border: 1px solid rgba(24, 23, 15, 0.18);
  border-radius: 8px;
  background: #fff;
  font-size: 14px;
  color: var(--lm-ink, #18170F);
  font-family: inherit;
}
.lm-cust-form-field input:focus,
.lm-cust-form-field textarea:focus {
  outline: none;
  border-color: var(--lm-ink, #18170F);
}
.lm-cust-form-field textarea {
  min-height: 60px;
  resize: vertical;
}
.lm-cust-form-consent {
  display: flex;
  flex-direction: column;
  gap: 8px;
  padding: 12px 14px;
  background: rgba(24, 23, 15, 0.04);
  border-radius: 10px;
}
.lm-cust-form-check {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  font-size: 13px;
  color: var(--lm-ink, #18170F);
  cursor: pointer;
}
.lm-cust-form-check input[type="checkbox"] {
  margin-top: 2px;
  width: 16px;
  height: 16px;
  cursor: pointer;
}
.lm-cust-form-actions {
  display: flex;
  justify-content: flex-end;
  gap: 8px;
  padding-top: 4px;
}
.lm-cust-form-error {
  margin: 0;
  padding: 10px 12px;
  background: rgba(177, 58, 42, 0.08);
  border: 1px solid rgba(177, 58, 42, 0.22);
  border-radius: 8px;
  color: #8a2d1f;
  font-size: 13px;
}

@media (max-width: 560px) {
  .lm-cust-import-map-grid,
  .lm-cust-form-grid { grid-template-columns: 1fr; }
  .lm-cust-import-modal { max-height: 96vh; }
  .lm-cust-import-body { padding: 16px; }
  .lm-cust-import-header,
  .lm-cust-import-footer { padding: 14px 16px; }
}

/* M99.2 — supplemental classes (matches JS) */
.lm-cust-import-title { margin: 0; }
.lm-cust-import-lead {
  margin: 0;
  font-size: 13px;
  color: rgba(24, 23, 15, 0.65);
}
.lm-cust-import-step { display: none; }
.lm-cust-import-step.active { display: flex; flex-direction: column; gap: 14px; }
.lm-cust-import-drop-label {
  display: block;
  font-weight: 500;
  color: var(--lm-ink, #18170F);
  margin-bottom: 4px;
}
.lm-cust-import-file-name {
  margin-top: 8px;
  font-size: 12px;
  color: rgba(24, 23, 15, 0.7);
  font-weight: 500;
}
.lm-cust-import-sample {
  border: 1px solid rgba(24, 23, 15, 0.08);
  border-radius: 8px;
  overflow-x: auto;
  background: #fff;
}
.lm-cust-import-stat-l {
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: rgba(24, 23, 15, 0.55);
}
.lm-cust-import-stat-n {
  font-size: 22px;
  font-weight: 600;
  color: var(--lm-ink, #18170F);
}
.lm-cust-import-stat--warn .lm-cust-import-stat-n { color: #b67116; }
.lm-cust-import-done-icon {
  width: 48px;
  height: 48px;
  border-radius: 999px;
  background: rgba(31, 122, 58, 0.15);
  color: #1f7a3a;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 24px;
  margin-bottom: 8px;
}
.lm-cust-import-done-title {
  margin: 0 0 4px;
  font-size: 18px;
  font-weight: 600;
  color: var(--lm-ink, #18170F);
}
.lm-cust-form-field--wide { grid-column: 1 / -1; }
.lm-cust-form-label {
  font-size: 12px;
  font-weight: 500;
  color: rgba(24, 23, 15, 0.7);
  margin-bottom: 2px;
}
.lm-cust-form-hint {
  font-size: 11px;
  color: rgba(24, 23, 15, 0.55);
  margin-top: 2px;
}
.lm-cust-form-warn {
  margin: 0;
  padding: 8px 10px;
  background: rgba(182, 113, 22, 0.08);
  border: 1px solid rgba(182, 113, 22, 0.22);
  border-radius: 8px;
  color: #8a5215;
  font-size: 12px;
}

/* ========== M101: Cuisine taxonomy chips ========== */
.chip--on {
  background: var(--lm-butter, #FFE85C);
  color: var(--lm-ink, #18170F);
  border-color: var(--lm-ink, #18170F);
  box-shadow: 2px 2px 0 var(--lm-ink, #18170F);
}
.chip--disabled {
  opacity: 0.4;
  cursor: not-allowed;
  pointer-events: none;
}

.lm-cuisine-chips {
  border: 1.5px solid var(--lm-ink, #18170F);
  border-radius: 14px;
  padding: 12px;
  max-height: 320px;
  overflow-y: auto;
  background: var(--lm-cream, #FBF7EE);
}
.lm-cuisine-chips-group {
  margin-bottom: 12px;
}
.lm-cuisine-chips-group:last-child { margin-bottom: 0; }
.lm-cuisine-chips-grouplabel {
  font-family: var(--font-display, 'Inter', sans-serif);
  font-weight: 700;
  font-size: 12px;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--lm-ink-soft, #6b6862);
  margin-bottom: 6px;
}
.lm-cuisine-chips-row {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}
.lm-cuisine-chips-row .chip {
  font-size: 12px;
  padding: 5px 10px;
}

/* ========== M101: Diner home tier-1 tile grid ========== */
.lm-cuisine-tiles {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 10px;
  margin: 16px 0 24px 0;
}
@media (max-width: 720px) {
  .lm-cuisine-tiles { grid-template-columns: repeat(2, 1fr); gap: 8px; }
}
.lm-cuisine-tile {
  background: var(--lm-surface, #fff);
  border: 1.5px solid var(--lm-ink, #18170F);
  border-radius: 16px;
  padding: 14px 10px 12px 10px;
  text-align: center;
  cursor: pointer;
  transition: transform 120ms, box-shadow 120ms;
  font-family: var(--font-display, 'Inter', sans-serif);
  color: var(--lm-ink, #18170F);
  text-decoration: none;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 4px;
}
.lm-cuisine-tile:hover {
  transform: translate(-1px, -1px);
  box-shadow: 3px 3px 0 var(--lm-ink, #18170F);
}
.lm-cuisine-tile:active {
  transform: translate(1px, 1px);
  box-shadow: 1px 1px 0 var(--lm-ink, #18170F);
}
.lm-cuisine-tile-emoji {
  font-size: 28px;
  line-height: 1;
}
.lm-cuisine-tile-label {
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.01em;
  line-height: 1.15;
}
.lm-cuisine-tile--active {
  background: var(--lm-butter, #FFE85C);
  box-shadow: 2px 2px 0 var(--lm-ink, #18170F);
}

/* ========== M106: Diner home search bar + tier-2 chips ========== */
.lm-diner-home-searchbar {
  margin: 8px 0 12px 0;
}
.lm-diner-home-searchbar__field {
  display: flex;
  align-items: center;
  gap: 8px;
  background: var(--lm-surface, #fff);
  border: 1.5px solid var(--lm-ink, #18170F);
  border-radius: 14px;
  padding: 10px 12px;
  box-shadow: 2px 2px 0 var(--lm-ink, #18170F);
  transition: transform 120ms, box-shadow 120ms;
}
.lm-diner-home-searchbar__field:focus-within {
  transform: translate(-1px, -1px);
  box-shadow: 3px 3px 0 var(--lm-ink, #18170F);
}
.lm-diner-home-searchbar__icon {
  font-size: 16px;
  line-height: 1;
  flex-shrink: 0;
}
.lm-diner-home-searchbar__input {
  flex: 1;
  min-width: 0;
  border: 0;
  outline: 0;
  background: transparent;
  font-family: var(--font-display, 'Inter', sans-serif);
  font-size: 15px;
  font-weight: 500;
  color: var(--lm-ink, #18170F);
  letter-spacing: 0.005em;
}
.lm-diner-home-searchbar__input::placeholder {
  color: rgba(24, 23, 15, 0.45);
  font-weight: 500;
}
/* Hide native clear / search cancel on WebKit so our button is the source of truth */
.lm-diner-home-searchbar__input::-webkit-search-decoration,
.lm-diner-home-searchbar__input::-webkit-search-cancel-button,
.lm-diner-home-searchbar__input::-webkit-search-results-button,
.lm-diner-home-searchbar__input::-webkit-search-results-decoration {
  -webkit-appearance: none;
  appearance: none;
}
.lm-diner-home-searchbar__clear {
  background: var(--lm-ink, #18170F);
  color: var(--lm-cream, #FBF6E8);
  border: 0;
  border-radius: 999px;
  width: 22px;
  height: 22px;
  font-size: 16px;
  line-height: 1;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  padding: 0;
}
.lm-diner-home-searchbar__clear[hidden] { display: none; }
.lm-diner-home-searchbar__clear:hover { transform: scale(1.05); }

/* Tier-2 cuisine chip row (renders under tier-1 tiles when a tier-1 is active) */
.lm-diner-home-cuisine-chips {
  margin: -12px 0 16px 0; /* tuck just under the tile row */
}
.lm-cuisine-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 6px 8px;
}
.lm-cuisine-chip {
  background: var(--lm-surface, #fff);
  border: 1.5px solid var(--lm-ink, #18170F);
  border-radius: 999px;
  padding: 5px 12px;
  font-family: var(--font-display, 'Inter', sans-serif);
  font-size: 12px;
  font-weight: 700;
  color: var(--lm-ink, #18170F);
  cursor: pointer;
  transition: transform 120ms, box-shadow 120ms;
  letter-spacing: 0.01em;
}
.lm-cuisine-chip:hover {
  transform: translate(-1px, -1px);
  box-shadow: 2px 2px 0 var(--lm-ink, #18170F);
}
.lm-cuisine-chip--active {
  background: var(--lm-butter, #FFE85C);
  box-shadow: 1px 1px 0 var(--lm-ink, #18170F);
}

/* ========== M107: 'matched by dish' pill on tenant cards ========== */
.lm-diner-feed-dish-match {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  background: var(--lm-butter, #FFE85C);
  border: 1.5px solid var(--lm-ink, #18170F);
  border-radius: 999px;
  padding: 3px 9px 3px 7px;
  font-family: var(--font-display, 'Inter', sans-serif);
  font-size: 11px;
  font-weight: 700;
  color: var(--lm-ink, #18170F);
  letter-spacing: 0.01em;
  margin-top: 4px;
  box-shadow: 1px 1px 0 var(--lm-ink, #18170F);
  width: fit-content;
}
.lm-diner-feed-dish-match__glyph {
  font-size: 12px;
  line-height: 1;
}

/* ========== M108: search-bar suggestions dropdown (recents + popular) ========== */
.lm-diner-home-searchsuggest {
  position: relative;
  margin-top: 6px;
  background: #fff;
  border: 1.5px solid var(--lm-ink, #18170F);
  border-radius: 14px;
  padding: 12px;
  box-shadow: 4px 4px 0 var(--lm-ink, #18170F);
  max-height: 320px;
  overflow-y: auto;
  z-index: 6;
}
.lm-diner-home-searchsuggest[hidden] { display: none; }
.lm-search-suggest-section {
  display: flex;
  flex-direction: column;
}
.lm-search-suggest-section + .lm-search-suggest-section {
  margin-top: 12px;
}
.lm-search-suggest-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 6px;
  gap: 8px;
}
.lm-search-suggest-title {
  font-family: var(--font-display, 'Inter', sans-serif);
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--muted, #6b6b6b);
}
.lm-search-suggest-clear {
  appearance: none;
  background: transparent;
  border: 0;
  padding: 2px 0;
  font: inherit;
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--lm-ink, #18170F);
  cursor: pointer;
  text-underline-offset: 3px;
}
.lm-search-suggest-clear:hover { text-decoration: underline; }
.lm-search-suggest-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 6px 8px;
}
.lm-search-suggest-chip {
  appearance: none;
  background: var(--lm-cream, #FFF8E0);
  border: 1.5px solid var(--lm-ink, #18170F);
  border-radius: 999px;
  padding: 5px 12px;
  font-family: var(--font-display, 'Inter', sans-serif);
  font-size: 12px;
  font-weight: 700;
  color: var(--lm-ink, #18170F);
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  gap: 5px;
  line-height: 1.1;
  box-shadow: 2px 2px 0 var(--lm-ink, #18170F);
  transition: transform 0.08s ease, box-shadow 0.08s ease, background 0.08s ease;
}
.lm-search-suggest-chip:hover {
  transform: translate(-1px, -1px);
  box-shadow: 3px 3px 0 var(--lm-ink, #18170F);
  background: var(--lm-butter, #FFE85C);
}
.lm-search-suggest-chip:active {
  transform: translate(1px, 1px);
  box-shadow: 1px 1px 0 var(--lm-ink, #18170F);
}
.lm-search-suggest-chip--recent {
  background: #fff;
}
.lm-search-suggest-chip--recent:hover {
  background: var(--lm-butter-soft, #fff6c4);
}
.lm-search-suggest-chip__glyph {
  font-size: 12px;
  line-height: 1;
  font-weight: 700;
}

/* Cuisine chip filter row above the restaurant feed */
.lm-cuisine-filterbar {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin: 12px 0 16px 0;
  padding: 8px 0;
}

/* =====================================================
   M104.3 — Today's projected payout card (overview)
   ===================================================== */
.lm-overview-payout-projection {
  padding: 20px;
  display: flex;
  flex-direction: column;
  gap: 14px;
  border-left: 4px solid var(--lm-basil, #5a8f3a);
}
.lm-overview-payout-projection--paused {
  border-left-color: var(--lm-tomato, #d64545);
}
.lm-overview-payout-projection-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
  flex-wrap: wrap;
}
.lm-overview-payout-projection-title {
  margin: 6px 0 4px 0;
  font-size: 28px;
  font-weight: 700;
  line-height: 1.1;
}
.lm-overview-payout-projection-status {
  font-size: 12px;
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  margin-left: 8px;
  vertical-align: middle;
}
.lm-overview-payout-projection-help {
  margin: 0;
  font-size: 13px;
}
.lm-overview-payout-projection-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
  gap: 10px;
}
.lm-overview-payout-projection-stat {
  background: var(--surface-soft, #f8f7f1);
  border-radius: 10px;
  padding: 10px 12px;
}
.lm-overview-payout-projection-stat--accent {
  background: var(--lm-butter-soft, #fff6c4);
}
.lm-overview-payout-projection-stat-label {
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--muted, #6b6b6b);
}
.lm-overview-payout-projection-stat-num {
  margin-top: 4px;
  font-size: 18px;
  font-weight: 600;
}
.lm-overview-payout-projection-banner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  flex-wrap: wrap;
  padding: 10px 12px;
  border-radius: 10px;
  background: var(--lm-butter-soft, #fff6c4);
  font-size: 13px;
}
.lm-overview-payout-projection--paused .lm-overview-payout-projection-banner {
  background: rgba(214, 69, 69, 0.08);
}

/* =====================================================
 * M115 — Integrations tab (Settings → Integrations)
 * ===================================================== */
.lm-integrations-shell { width: 100%; }
.lm-integrations-h {
  font-size: 15px;
  font-weight: 700;
  margin: 0 0 8px 0;
  color: var(--ink);
}
.lm-integrations-intro p {
  margin: 0;
  font-size: 13px;
  line-height: 1.5;
}
.lm-integration-card {
  padding: 14px 16px;
}
.lm-integration-card--soon { opacity: 0.78; }
.lm-integration-name {
  font-size: 15px;
  color: var(--ink);
}
.lm-integrations-err {
  margin-top: 6px;
  padding: 8px 10px;
  background: rgba(214, 69, 69, 0.08);
  border-left: 3px solid var(--danger, #d64545);
  color: var(--danger, #d64545);
  font-size: 12px;
  border-radius: 4px;
}
.lm-integrations-history { padding: 14px 16px; }
.lm-integrations-table {
  width: 100%;
  font-size: 13px;
  border-collapse: collapse;
}
.lm-integrations-table th,
.lm-integrations-table td {
  text-align: left;
  padding: 6px 8px;
  border-bottom: 1px solid rgba(0,0,0,0.06);
}
.lm-integrations-table th { font-weight: 600; color: var(--muted); }

/* Chips used by integrations + future tabs */
.lm-chip {
  display: inline-flex;
  align-items: center;
  padding: 2px 8px;
  border-radius: 999px;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.02em;
  line-height: 1.4;
}
.lm-chip--ok { background: rgba(34, 139, 71, 0.12); color: #1f7a3d; }
.lm-chip--danger { background: rgba(214, 69, 69, 0.12); color: #b13a3a; }
.lm-chip--info { background: rgba(72, 124, 230, 0.12); color: #345ea8; }
.lm-chip--muted { background: rgba(0,0,0,0.06); color: var(--muted); }

/* ===================================================== */
/* M118.4 — Sized items + per-size modifiers + half-and-half */
/* ===================================================== */

/* Diner item modal: size selector */
.lm-sizes-section { margin-top: 16px; }
.lm-sizes-section > .lm-mod-group-title { font-weight: 600; margin-bottom: 8px; }
.lm-sizes-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(120px, 1fr));
  gap: 8px;
}
.lm-size-option {
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  padding: 12px 8px;
  border: 1.5px solid var(--border, rgba(0,0,0,0.12));
  border-radius: 10px;
  background: var(--surface, #fff);
  cursor: pointer;
  transition: border-color 0.12s, background 0.12s, transform 0.05s;
  text-align: center;
}
.lm-size-option:hover { border-color: var(--brand, #d6822e); }
.lm-size-option:active { transform: scale(0.98); }
.lm-size-option input[type="radio"] { position: absolute; opacity: 0; pointer-events: none; }
.lm-size-option--selected,
.lm-size-option:has(input:checked) {
  border-color: var(--brand, #d6822e);
  background: rgba(214, 130, 46, 0.08);
}
.lm-size-option-name { font-weight: 600; font-size: 14px; }
.lm-size-option-price { font-size: 13px; color: var(--muted); margin-top: 2px; }

/* Diner item modal: half-and-half pill toggle on each modifier option */
.lm-mod-option-row {
  display: flex; align-items: center; gap: 10px;
  padding: 8px 10px;
  border-radius: 8px;
}
.lm-mod-option-row + .lm-mod-option-row { margin-top: 2px; }
.lm-mod-group--splittable .lm-mod-option-row { padding-right: 0; }
.lm-split-pills {
  display: inline-flex;
  align-items: center;
  border: 1px solid var(--border, rgba(0,0,0,0.12));
  border-radius: 999px;
  overflow: hidden;
  background: var(--surface, #fff);
  margin-left: auto;
}
.lm-split-pill {
  appearance: none; background: transparent; border: 0;
  padding: 4px 10px;
  font-size: 12px; font-weight: 600;
  color: var(--muted);
  cursor: pointer;
  line-height: 1.4;
  min-width: 36px;
}
.lm-split-pill + .lm-split-pill { border-left: 1px solid var(--border, rgba(0,0,0,0.12)); }
.lm-split-pill:hover { background: rgba(214, 130, 46, 0.08); color: var(--text, #111); }
.lm-split-pill--on { background: var(--brand, #d6822e); color: #fff; }
.lm-split-pill--on:hover { background: var(--brand, #d6822e); color: #fff; }
.lm-pill-half {
  display: inline-block; font-size: 11px; padding: 2px 6px; border-radius: 999px;
  background: rgba(72, 124, 230, 0.12); color: #345ea8; margin-left: 6px;
}

/* Owner menu editor: splittable badge on modifier group cards */
.lm-menu-mod-badge--split {
  display: inline-block; font-size: 11px; padding: 2px 8px; border-radius: 999px;
  background: rgba(72, 124, 230, 0.12); color: #345ea8; margin-left: 8px;
  font-weight: 600;
}

/* Owner menu editor: per-size price rows for a modifier option */
.lm-menu-mod-pps-block {
  margin-top: 8px;
  padding: 10px;
  border: 1px dashed var(--border, rgba(0,0,0,0.16));
  border-radius: 8px;
  background: rgba(0,0,0,0.02);
}
.lm-menu-mod-pps-rows {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
  gap: 8px;
  margin-top: 6px;
}
.lm-menu-mod-pps-row {
  display: flex; flex-direction: column; gap: 4px;
}
.lm-menu-mod-pps-row label { font-size: 12px; color: var(--muted); font-weight: 600; }
.lm-menu-mod-pps-row input { padding: 6px 8px; border: 1px solid var(--border, rgba(0,0,0,0.12)); border-radius: 6px; }

/* Owner item editor: Sizes section */
.lm-menu-sizes-rows { display: flex; flex-direction: column; gap: 8px; }
.lm-menu-size-row {
  display: grid;
  grid-template-columns: 1fr 120px 80px auto;
  gap: 8px;
  align-items: center;
}
.lm-menu-size-row input { padding: 8px 10px; border: 1px solid var(--border, rgba(0,0,0,0.12)); border-radius: 6px; }
@media (max-width: 600px) {
  .lm-menu-size-row { grid-template-columns: 1fr 100px auto; }
  .lm-menu-size-row > [data-size-sort] { display: none; }
}

/* ============================================================
   M118.4.11 — Sized item price suppression on card + modal
   Sized items (pizzas) show "Choose size" on the card instead
   of a flat price, and hide the duplicate title-row price in
   the modal (size pills + Add-to-cart button already convey it).
   ============================================================ */
.lm-diner-feed-price--sized {
  font-family: var(--lm-font-body, 'Inter', sans-serif);
  font-size: 13px;
  font-weight: 600;
  color: var(--lm-text-muted, #6b6b6b);
  letter-spacing: 0;
  text-transform: none;
  background: var(--lm-cream-2, #f5efe3);
  padding: 4px 10px;
  border-radius: 999px;
  white-space: nowrap;
}

.lm-diner-item-modal__price--sized {
  display: none;
}

/* ============================================================
   M118.4.12 — Owner-facing error cards
   Standard pattern: error title + cause + "Try this" hint list
   + Try again button. Applied across KOS, Orders, Menu, Billing,
   Customers, Analytics, Loyalty. Distinct from the diner-facing
   error styles (which are more minimal).
   ============================================================ */
.lm-error-card {
  padding: 20px 22px;
  border-radius: 14px;
  background: var(--lm-cream, #FFF8EC);
  border: 1px solid var(--lm-cream-2, #f5efe3);
  max-width: 560px;
}

.lm-error-card__title {
  margin: 0 0 6px 0;
  font-size: 17px;
  font-weight: 700;
  color: var(--lm-ink, #1a1a1a);
}

.lm-error-card__body {
  margin: 0 0 12px 0;
  color: var(--lm-text, #2a2a2a);
  font-size: 14px;
  line-height: 1.45;
}

.lm-error-card__hint {
  margin: 12px 0 6px 0;
  font-size: 13px;
  color: var(--lm-text-muted, #6b6b6b);
}

.lm-error-card__list {
  margin: 0 0 14px 0;
  padding-left: 20px;
  color: var(--lm-text, #2a2a2a);
  font-size: 13px;
  line-height: 1.55;
}

.lm-error-card__list li {
  margin: 2px 0;
}

.lm-error-card .btn {
  margin-top: 4px;
}

/* ===== M118.5 — Owner intake view ===== */
.lm-rest-intake {
  min-height: 78vh;
  padding: 24px 16px 48px;
  display: flex;
  justify-content: center;
  align-items: flex-start;
}
.lm-rest-intake-card {
  width: 100%;
  max-width: 560px;
  background: #fff;
  border: 1px solid var(--lm-border, #eadfca);
  border-radius: 18px;
  padding: 28px 28px 24px;
  box-shadow: 0 6px 24px rgba(0,0,0,0.04);
}
.lm-rest-intake-card--loading {
  text-align: center;
  padding: 60px 24px;
}
.lm-rest-intake-spinner {
  width: 28px; height: 28px;
  border: 3px solid var(--lm-border, #eadfca);
  border-top-color: var(--lm-primary, #f59e0b);
  border-radius: 50%;
  margin: 0 auto 12px;
  animation: lm-rest-signin-spin 0.8s linear infinite;
}
.lm-rest-intake-loading-text { color: var(--lm-ink-soft, #6b6155); margin: 0; }
.lm-rest-intake-eyebrow { align-self: flex-start; margin-bottom: 12px; }
.lm-rest-intake-title {
  font-family: 'Bricolage Grotesque', system-ui, sans-serif;
  font-size: 30px; font-weight: 700;
  margin: 0 0 6px; color: var(--lm-ink, #2d241b);
  letter-spacing: -0.01em;
}
.lm-rest-intake-sub {
  margin: 0 0 14px; color: var(--lm-ink-soft, #6b6155); font-size: 15px;
}
.lm-rest-intake-account {
  margin: 0 0 18px; padding: 10px 12px;
  background: var(--lm-bg-soft, #faf7f1);
  border-radius: 10px; font-size: 13px; color: var(--lm-ink-soft, #6b6155);
}
.lm-rest-intake-link { color: var(--lm-primary, #f59e0b); text-decoration: underline; cursor: pointer; }
.lm-rest-intake-form { display: flex; flex-direction: column; gap: 18px; }
.lm-rest-intake-group {
  border: none; padding: 0; margin: 0;
  display: flex; flex-direction: column; gap: 12px;
}
.lm-rest-intake-legend {
  font-family: 'Bricolage Grotesque', system-ui, sans-serif;
  font-weight: 600; font-size: 14px;
  color: var(--lm-ink-soft, #6b6155);
  text-transform: uppercase; letter-spacing: 0.06em;
  margin: 0 0 4px; padding: 0;
}
.lm-rest-intake-field {
  display: flex; flex-direction: column; gap: 6px;
  flex: 1; min-width: 0;
}
.lm-rest-intake-field--narrow { flex: 0 1 110px; }
.lm-rest-intake-row {
  display: grid; grid-template-columns: 1fr 1fr; gap: 12px;
}
.lm-rest-intake-row--3col {
  grid-template-columns: 1fr 110px 130px;
}
.lm-form-optional {
  font-weight: 400; font-size: 12px; color: var(--lm-ink-soft, #6b6155);
}
.lm-rest-intake-submit {
  margin-top: 6px;
  position: relative;
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
}
.lm-rest-intake-submit-spinner {
  display: none;
  width: 16px; height: 16px;
  border: 2px solid rgba(255,255,255,0.4);
  border-top-color: #fff;
  border-radius: 50%;
  animation: lm-rest-signin-spin 0.7s linear infinite;
}
.lm-rest-intake-submit--busy .lm-rest-intake-submit-spinner { display: inline-block; }
.lm-rest-intake-submit--busy { opacity: 0.85; cursor: progress; }
.lm-rest-intake-error, .lm-rest-intake-info {
  margin-top: 16px;
  background: var(--lm-danger-soft, #fdecec);
  border: 1px solid var(--lm-danger, #d44a4a);
  border-left: 4px solid var(--lm-danger, #d44a4a);
  border-radius: 12px;
  padding: 12px 14px;
  display: flex; gap: 12px; align-items: flex-start;
}
.lm-rest-intake-info {
  background: var(--lm-bg-soft, #faf7f1);
  border-color: var(--lm-border, #eadfca);
  border-left-color: var(--lm-primary, #f59e0b);
}
.lm-rest-intake-error-glyph { font-size: 22px; flex-shrink: 0; line-height: 1; }
.lm-rest-intake-error-body { flex: 1; min-width: 0; }
.lm-rest-intake-error-title {
  font-family: 'Bricolage Grotesque', system-ui, sans-serif;
  font-weight: 700; font-size: 15px;
  margin: 0 0 4px; color: var(--lm-ink, #2d241b);
}
.lm-rest-intake-error-msg {
  margin: 0; font-size: 14px; color: var(--lm-ink-soft, #6b6155); word-break: break-word;
}
.lm-rest-intake-fine {
  margin: 16px 0 0; font-size: 13px;
  color: var(--lm-text-muted, #8a8378); text-align: center;
}
@media (max-width: 580px) {
  .lm-rest-intake { padding: 16px 12px; }
  .lm-rest-intake-card { padding: 22px 18px; border-radius: 14px; }
  .lm-rest-intake-title { font-size: 26px; }
  .lm-rest-intake-row, .lm-rest-intake-row--3col { grid-template-columns: 1fr; }
}

/* ===== M118.5 — Diner Google sign-in + remember-me ===== */
.lm-diner-signin-google {
  position: relative;
  display: inline-flex; align-items: center; justify-content: center;
  gap: 10px;
}
.lm-diner-signin-google-spinner {
  display: none;
  width: 16px; height: 16px;
  border: 2px solid rgba(255,255,255,0.4);
  border-top-color: #fff;
  border-radius: 50%;
  animation: lm-rest-signin-spin 0.7s linear infinite;
}
.lm-diner-signin-google--busy .lm-diner-signin-google-spinner { display: inline-block; }
.lm-diner-signin-google--busy .lm-diner-signin-google-icon { display: none; }
.lm-diner-signin-google--busy { opacity: 0.85; cursor: progress; }
.lm-diner-signin-google-icon { flex-shrink: 0; }
.lm-diner-signin-remember {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  margin: 14px 0 0;
  padding: 12px 14px;
  background: var(--lm-bg-soft, #faf7f1);
  border: 1px solid var(--lm-border, #eadfca);
  border-radius: 12px;
  cursor: pointer;
  text-align: left;
}
.lm-diner-signin-remember input[type="checkbox"] {
  flex-shrink: 0;
  width: 18px; height: 18px;
  margin-top: 2px;
  accent-color: var(--lm-primary, #f59e0b);
  cursor: pointer;
}
.lm-diner-signin-remember-label {
  display: flex; flex-direction: column; gap: 2px;
  font-size: 14px; color: var(--lm-ink, #2d241b);
  line-height: 1.35;
}
.lm-diner-signin-remember-label strong { font-weight: 600; }
.lm-diner-signin-remember-hint {
  font-size: 12px; color: var(--lm-ink-soft, var(--lm-text-muted, #6b6155));
  font-weight: 400;
}

/* =====================================================
   M118.6 — Category-first menu redesign
   Landing: 2-col category tiles + featured scroll strip.
   Drill-in: back button + 2-col compact item grid.
   ===================================================== */

/* --- Category tile grid (landing) -------------------------------- */
.lm-diner-cat-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
  padding: 0 16px;
  margin-top: 8px;
}

.lm-diner-cat-tile {
  appearance: none;
  border: none;
  padding: 0;
  margin: 0;
  background: var(--lm-surface);
  border-radius: 16px;
  overflow: hidden;
  cursor: pointer;
  display: flex;
  flex-direction: column;
  text-align: left;
  box-shadow: 0 1px 2px rgba(24, 23, 15, 0.04), 0 4px 16px rgba(24, 23, 15, 0.06);
  transition: transform 0.15s ease, box-shadow 0.15s ease;
  font: inherit;
  color: inherit;
}

.lm-diner-cat-tile:hover {
  transform: translateY(-2px);
  box-shadow: 0 2px 4px rgba(24, 23, 15, 0.06), 0 8px 24px rgba(24, 23, 15, 0.1);
}

.lm-diner-cat-tile:active { transform: translateY(0); }

.lm-diner-cat-tile:focus-visible {
  outline: 2px solid var(--lm-tomato, #c0392b);
  outline-offset: 2px;
}

.lm-diner-cat-tile-photo {
  position: relative;
  width: 100%;
  aspect-ratio: 4 / 3;
  background: var(--lm-surface-2);
  overflow: hidden;
}

.lm-diner-cat-tile-photo img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.lm-diner-cat-tile-photo--placeholder {
  display: flex;
  align-items: center;
  justify-content: center;
  background: linear-gradient(135deg, var(--lm-butter-soft) 0%, var(--lm-tomato-soft) 100%);
}

.lm-diner-cat-tile-glyph {
  font-size: 56px;
  line-height: 1;
  opacity: 0.6;
}

.lm-diner-cat-tile-meta {
  padding: 10px 12px 12px;
  display: flex;
  flex-direction: column;
  gap: 2px;
}

.lm-diner-cat-tile-name {
  font-weight: 700;
  font-size: 15px;
  line-height: 1.25;
  color: var(--lm-ink, #1d1b14);
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.lm-diner-cat-tile-count {
  font-size: 12px;
  color: var(--lm-ink-soft, var(--lm-text-muted, #6b6155));
}

.lm-diner-cat-tile--skel {
  pointer-events: none;
}
.lm-diner-cat-tile--skel .lm-diner-cat-tile-photo {
  background: linear-gradient(90deg, var(--lm-surface-2), var(--lm-surface-3), var(--lm-surface-2));
  background-size: 200% 100%;
  animation: lm-diner-feed-shimmer 1.4s ease-in-out infinite;
}

/* --- Featured horizontal scroll strip (landing) ------------------- */
.lm-diner-cat-featured {
  margin-top: 24px;
  padding: 0 16px;
}

.lm-diner-cat-featured-strip {
  display: flex;
  gap: 12px;
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  -webkit-overflow-scrolling: touch;
  padding-bottom: 8px;
  /* Bleed slightly past the section padding so cards can run edge-to-edge */
  margin: 0 -16px;
  padding-left: 16px;
  padding-right: 16px;
  scrollbar-width: none;
}
.lm-diner-cat-featured-strip::-webkit-scrollbar { display: none; }

.lm-diner-feed-item--strip {
  flex: 0 0 46%;
  max-width: 200px;
  scroll-snap-align: start;
}

@media (min-width: 480px) {
  .lm-diner-feed-item--strip { flex-basis: 30%; max-width: 220px; }
}
@media (min-width: 768px) {
  .lm-diner-feed-item--strip { flex-basis: 22%; max-width: 240px; }
}

/* --- 2-col compact item grid (drill-in) -------------------------- */
.lm-diner-feed--compact {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
  padding: 0 16px;
  margin-top: 8px;
}

.lm-diner-feed-item--compact {
  display: flex;
  flex-direction: column;
}

.lm-diner-feed-item--compact .lm-diner-feed-meta {
  padding: 10px 12px 12px;
  gap: 4px;
}

.lm-diner-feed-item--compact .lm-diner-feed-name {
  font-size: 14px;
  line-height: 1.25;
  margin: 0;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.lm-diner-feed-item--compact .lm-diner-feed-price {
  font-size: 14px;
  font-weight: 600;
}

.lm-diner-feed-item--compact .lm-diner-feed-price--sized {
  font-size: 12px;
  font-weight: 600;
  color: var(--lm-ink-soft, var(--lm-text-muted, #6b6155));
}

.lm-diner-feed-item--compact .lm-diner-feed-photo--placeholder-glyph {
  font-size: 44px;
}

@media (min-width: 768px) {
  .lm-diner-feed--compact {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
  .lm-diner-cat-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}

@media (min-width: 1024px) {
  .lm-diner-feed--compact {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }
  .lm-diner-cat-grid {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }
}

/* --- Drill-in header + back button -------------------------------- */
.lm-diner-menu-cat-head {
  padding: 16px 16px 8px;
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.lm-diner-menu-back {
  appearance: none;
  border: none;
  background: transparent;
  padding: 6px 0;
  margin: 0;
  color: var(--lm-tomato, #c0392b);
  font: inherit;
  font-weight: 600;
  font-size: 14px;
  cursor: pointer;
  align-self: flex-start;
  display: inline-flex;
  align-items: center;
  gap: 6px;
}

.lm-diner-menu-back:hover { text-decoration: underline; }

.lm-diner-menu-back:focus-visible {
  outline: 2px solid var(--lm-tomato, #c0392b);
  outline-offset: 2px;
  border-radius: 4px;
}

.lm-diner-menu-cat-title {
  font-size: 22px;
  font-weight: 700;
  margin: 0;
  color: var(--lm-ink, #1d1b14);
}

.lm-diner-menu-cat-sub {
  font-size: 13px;
  color: var(--lm-ink-soft, var(--lm-text-muted, #6b6155));
  margin: 0;
}

/* ============================================================
   M118.11 — Ingredients & removed-ingredient rendering
   ============================================================ */

/* Diner item modal: ingredients section */
.lm-ingredients-section .lm-ingredients-grid {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 6px;
}

.lm-ingredient-pill {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 8px 14px;
  border-radius: 999px;
  border: 1.5px solid var(--lm-line, #e6e0d2);
  background: var(--lm-cream, #fff8ec);
  color: var(--lm-ink, #1d1b14);
  font-size: 14px;
  font-weight: 600;
  line-height: 1;
  cursor: pointer;
  transition: background 120ms ease, border-color 120ms ease, color 120ms ease;
  user-select: none;
}

.lm-ingredient-pill:hover,
.lm-ingredient-pill:focus-visible {
  border-color: var(--lm-ink, #1d1b14);
  outline: none;
}

.lm-ingredient-pill__check {
  font-size: 12px;
  font-weight: 800;
  color: var(--lm-green, #2f8a3c);
}

/* Off / removed state */
.lm-ingredient-pill--off {
  background: #f4f0e6;
  color: #9a9085;
  border-color: #d8d0bf;
  text-decoration: line-through;
  text-decoration-thickness: 1.5px;
}
.lm-ingredient-pill--off .lm-ingredient-pill__check {
  color: var(--lm-danger, #E63525);
  text-decoration: none;
}
.lm-ingredient-pill--off .lm-ingredient-pill__name {
  text-decoration: line-through;
}

/* Shared strike helper — used in cart, orders, KDS */
.lm-strike {
  text-decoration: line-through;
  text-decoration-thickness: 2px;
}

/* Diner cart line: removed-ingredients summary */
.lm-diner-cart-removed {
  margin: 2px 0 0;
  font-size: 12px;
  color: var(--lm-danger, #E63525);
  font-weight: 600;
}

/* Owner orders list: NO line below modifiers */
.lm-orders-mods--removed {
  color: var(--lm-danger, #E63525);
  font-weight: 700;
  letter-spacing: 0.02em;
}

/* KDS card: NO line under item */
.lm-kos-card-mods {
  font-size: 12px;
  color: var(--lm-ink-soft, #6b6155);
  padding-left: 22px;
  margin-top: 2px;
}
.lm-kos-card-mods--removed {
  color: var(--lm-danger, #E63525);
  font-weight: 700;
}
.lm-kos-card-instr {
  font-size: 12px;
  color: var(--lm-ink-soft, #6b6155);
  padding-left: 22px;
  margin-top: 2px;
  font-style: italic;
}

/* Print styles — make NO removed ingredients impossible to miss on tickets */
@media print {
  .lm-strike {
    text-decoration: line-through !important;
    text-decoration-thickness: 2.5px !important;
    color: #000 !important;
  }
  .lm-orders-mods--removed,
  .lm-kos-card-mods--removed,
  .lm-tablet-mods--removed {
    color: #000 !important;
    font-weight: 800 !important;
    text-transform: uppercase;
    border: 1.5px solid #000;
    padding: 2px 4px;
    border-radius: 3px;
    display: inline-block;
    margin-top: 3px;
  }
}

/* ===================================================== */
/* M118.13 — Payouts: Bank account card                  */
/* ===================================================== */
.lm-rest-payouts-bank {
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.lm-rest-payouts-bank-head {
  display: flex;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
}
.lm-rest-payouts-bank-head .lm-rest-payouts-info-title {
  margin: 0;
}
.lm-rest-payouts-bank-actions {
  display: flex;
  gap: 10px;
  align-items: center;
  flex-wrap: wrap;
  margin-top: 4px;
}
.lm-rest-payouts-bank-hint {
  color: var(--lm-text-muted, #6b7280);
  font-size: 12px;
}
/* Pill variants used in the bank card. Self-contained — does not depend
   on a global .lm-pill base class (none exists yet). */
.lm-pill {
  display: inline-flex;
  align-items: center;
  padding: 4px 10px;
  border-radius: 999px;
  font-size: 12px;
  font-weight: 600;
  line-height: 1.2;
  letter-spacing: 0.01em;
  background: rgba(0, 0, 0, 0.06);
  color: #111827;
}
.lm-pill--ok {
  background: rgba(34, 197, 94, 0.14);
  color: #15803d;
}
.lm-pill--warn {
  background: rgba(234, 179, 8, 0.18);
  color: #92400e;
}

/* M118.13 — Storefront menu hero logo */
.lm-diner-menu-hero-logo {
  display: flex;
  align-items: center;
  justify-content: flex-start;
  margin-bottom: 12px;
}
.lm-diner-menu-hero-logo img {
  width: 84px;
  height: 84px;
  border-radius: 18px;
  object-fit: cover;
  background: #fff;
  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.06);
  border: 1px solid var(--lm-line, rgba(0,0,0,0.08));
}
@media (max-width: 640px) {
  .lm-diner-menu-hero-logo img {
    width: 64px;
    height: 64px;
    border-radius: 14px;
  }
}

/* M118.13 — Stripe Express Checkout (Apple Pay / Google Pay) */
.lm-diner-checkout-express {
  margin-bottom: 12px;
}
.lm-diner-checkout-express-divider {
  display: flex;
  align-items: center;
  text-align: center;
  margin: 8px 0 14px;
  color: var(--lm-text-muted, #6b7280);
  font-size: 13px;
  font-weight: 500;
}
.lm-diner-checkout-express-divider::before,
.lm-diner-checkout-express-divider::after {
  content: "";
  flex: 1;
  height: 1px;
  background: var(--lm-line, rgba(0,0,0,0.08));
}
.lm-diner-checkout-express-divider span {
  padding: 0 12px;
  white-space: nowrap;
}
