/* =========================================================
   Hotel Rangoli POS — stylesheet
   Palette drawn from an actual rangoli: marigold, coral,
   magenta, violet, blue, teal — one gradient reused everywhere.

   Two themes:
     - Light (default) — soft cream bg, dark ink text
     - Dark  ([data-theme="dark"] on <html>) — deep space-black
       bg, glowing rangoli-gradient accents, sci-fi vibe
   Toggle preserved in localStorage (see partials/theme-toggle).
   ========================================================= */

:root {
  /* Rangoli palette — stays the same in both themes so buttons/badges
     look like the brand regardless of light/dark mode */
  --c-orange:  #F0973A;
  --c-coral:   #EA5B6F;
  --c-magenta: #C2296B;
  --c-violet:  #7B3FA0;
  --c-blue:    #3E6FD9;
  --c-teal:    #17998C;

  --gradient-brand:         linear-gradient(120deg, var(--c-orange) 0%, var(--c-coral) 25%, var(--c-magenta) 45%, var(--c-violet) 65%, var(--c-blue) 85%, var(--c-teal) 100%);
  --gradient-btn:           linear-gradient(135deg, var(--c-orange), var(--c-magenta));
  --gradient-btn-hover:     linear-gradient(135deg, #E8862A, #A81F5C);
  --gradient-btn-alt:       linear-gradient(135deg, var(--c-blue), var(--c-teal));
  --gradient-btn-alt-hover: linear-gradient(135deg, #2F5FC4, #128074);
  --gradient-danger:        linear-gradient(135deg, var(--c-magenta), #8A1E4E);
  --gradient-danger-hover:  linear-gradient(135deg, #A81F5C, #6E1840);

  --radius: 10px;
  --font-display: 'Fraunces', serif;
  --font-ui:      'Manrope', system-ui, -apple-system, sans-serif;
  --font-mono:    'JetBrains Mono', ui-monospace, monospace;

  /* ── Light theme surfaces ───────────────────────────────── */
  --ink:       #241527;
  --bg:        #FAF7F5;
  --bg-soft:   #F3EBEF;
  --card:      #FFFFFF;
  --input-bg:  #FFFFFF;
  --muted:     #8A7B84;
  --border:    #ECE0E6;
  --shadow:    0 2px 10px rgba(36,21,39,0.08);
  --gradient-nav: linear-gradient(100deg, #241527 0%, #4A2050 50%, #7B2860 100%);
  --nav-text:  rgba(255,255,255,0.85);
  --nav-text-strong: #fff;
  --alert-bg:  rgba(194,41,107,0.10);
  --alert-fg:  #8A1E4E;
  --alert-border: rgba(194,41,107,0.25);
  --alert-success-bg: rgba(23,153,140,0.10);
  --alert-success-fg: #106B62;
  --alert-success-border: rgba(23,153,140,0.25);
  --badge-free-bg: rgba(23,153,140,0.14);
  --badge-free-fg: #106B62;
  --badge-occ-bg: rgba(194,41,107,0.14);
  --badge-occ-fg: #8A1E4E;
  --focus-ring: var(--c-orange);
  --shimmer-opacity: 1;
}

/* ── Dark theme override ─────────────────────────────────────
   Deep near-black bg with a subtle violet-tinted panel gradient,
   glowing rangoli accents on top. Neon-ish but still readable. */
[data-theme="dark"] {
  --ink:       #F1E9EF;
  --bg:        #0B0710;
  --bg-soft:   #1A1024;
  --card:      #150E1E;
  --input-bg:  #1F1530;
  --muted:     #9B8AA8;
  --border:    rgba(190, 130, 220, 0.18);
  --shadow:    0 4px 22px rgba(0,0,0,0.55), 0 0 0 1px rgba(194,41,107,0.05);
  --gradient-nav: linear-gradient(100deg, #0F0818 0%, #2A0F3B 50%, #521A5C 100%);
  --nav-text:  rgba(255,255,255,0.75);
  --nav-text-strong: #fff;
  --alert-bg:  rgba(234,91,111,0.14);
  --alert-fg:  #FFB4C0;
  --alert-border: rgba(234,91,111,0.32);
  --alert-success-bg: rgba(23,153,140,0.16);
  --alert-success-fg: #7EE7D9;
  --alert-success-border: rgba(23,153,140,0.38);
  --badge-free-bg: rgba(23,153,140,0.22);
  --badge-free-fg: #7EE7D9;
  --badge-occ-bg: rgba(234,91,111,0.20);
  --badge-occ-fg: #FFB0BE;
  --focus-ring: var(--c-coral);
  --shimmer-opacity: 1;
}

/* Dark theme adds an ambient rangoli glow behind the page — very subtle
   colored radial gradients that give the "cool RGB" feel without hurting
   readability. Kept low-opacity and pinned so scrolling stays smooth. */
[data-theme="dark"] body {
  background:
    radial-gradient(1200px 700px at 15% -10%, rgba(123,63,160,0.22), transparent 60%),
    radial-gradient(900px 600px at 100% 10%, rgba(62,111,217,0.18), transparent 60%),
    radial-gradient(1000px 800px at 50% 110%, rgba(23,153,140,0.14), transparent 60%),
    radial-gradient(700px 500px at 90% 90%, rgba(240,151,58,0.10), transparent 60%),
    var(--bg);
  background-attachment: fixed;
}

* { box-sizing: border-box; }

html, body {
  margin: 0; padding: 0;
  background: var(--bg);
  color: var(--ink);
  font-family: var(--font-ui);
  font-size: 16px;
  line-height: 1.5;
}

/* Gradient shimmer strip at top */
body::before {
  content: '';
  position: fixed;
  top: 0; left: 0; right: 0;
  height: 4px;
  background: var(--gradient-brand);
  background-size: 300% auto;
  animation: shimmer 9s linear infinite;
  z-index: 999;
}
@keyframes shimmer {
  0%   { background-position: 0% 50%; }
  100% { background-position: 100% 50%; }
}

h1, h2, h3 { font-family: var(--font-ui); font-weight: 700; margin: 0 0 0.75rem; }
a { color: var(--c-magenta); text-decoration: none; }
.muted { color: var(--muted); font-size: 0.9em; }

.brand-gradient-text {
  background: var(--gradient-brand);
  background-size: 200% auto;
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
  display: inline-block;
}

/* ===== Layout ===== */
.container {
  max-width: 1100px;
  margin: 0 auto;
  padding: 1.25rem 1rem 2.5rem;
}

.card {
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  box-shadow: var(--shadow);
  padding: 1.25rem;
  margin-bottom: 1rem;
}

.center-page {
  min-height: 100vh;
  display: flex;
  align-items: center;
  justify-content: center;
  position: relative;
  overflow: hidden;
}
.login-page {
  background:
    radial-gradient(circle at 25% 20%, rgba(240,151,58,0.16), transparent 45%),
    radial-gradient(circle at 75% 75%, rgba(23,153,140,0.16), transparent 45%),
    radial-gradient(circle at 80% 15%, rgba(194,41,107,0.12), transparent 40%),
    var(--bg);
}

/* ===== Top navigation ===== */
.topnav {
  background: var(--gradient-nav);
  background-size: 200% 200%;
  animation: navshift 14s ease infinite;
  color: #fff;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0.75rem 1.25rem;
  flex-wrap: wrap;
  gap: 0.4rem;
  margin-top: 4px;
}
@keyframes navshift {
  0%, 100% { background-position: 0% 50%; }
  50%       { background-position: 100% 50%; }
}
.topnav-brand { font-weight: 700; font-size: 0.95rem; letter-spacing: 0.02em; }
.topnav-links { display: flex; gap: 1rem; flex-wrap: wrap; }
.topnav-links a {
  color: rgba(255,255,255,0.85);
  font-size: 0.9rem;
  padding-bottom: 2px;
  border-bottom: 2px solid transparent;
}
.topnav-links a:hover, .topnav-links a.active {
  color: #fff;
  border-bottom-color: var(--c-orange);
}

/* ===== Buttons ===== */
.btn {
  display: inline-block;
  font-family: var(--font-ui);
  font-weight: 600;
  font-size: 0.9rem;
  padding: 0.55rem 1rem;
  border-radius: 8px;
  border: none;
  cursor: pointer;
  background: var(--bg-soft);
  color: var(--ink);
  transition: transform 0.08s ease, filter 0.15s ease, box-shadow 0.15s ease;
  text-align: center;
}
.btn:hover    { filter: brightness(1.04); transform: translateY(-1px); }
.btn:active   { transform: translateY(0) scale(0.98); }
.btn:disabled { opacity: 0.55; pointer-events: none; }

.btn-primary       { background: var(--gradient-btn);         color: #fff; box-shadow: 0 3px 10px rgba(194,41,107,0.25); }
.btn-primary:hover { background: var(--gradient-btn-hover); }

.btn-secondary       { background: var(--gradient-btn-alt);         color: #fff; box-shadow: 0 3px 10px rgba(62,111,217,0.22); }
.btn-secondary:hover { background: var(--gradient-btn-alt-hover); }

.btn-danger       { background: var(--gradient-danger); color: #fff; }
.btn-danger:hover { background: var(--gradient-danger-hover); }

.btn-small  { padding: 0.28rem 0.6rem; font-size: 0.8rem; box-shadow: none; border-radius: 6px; }
.btn-large  { padding: 0.85rem 1.3rem; font-size: 1rem; }
.btn-full   { width: 100%; }

/* ===== Forms ===== */
.form-group { margin-bottom: 0.85rem; }
.form-group label {
  display: block;
  font-size: 0.82rem;
  font-weight: 600;
  margin-bottom: 0.28rem;
  color: var(--muted);
  text-transform: uppercase;
  letter-spacing: 0.03em;
}
input[type=text], input[type=password], input[type=number], input[type=date], select {
  width: 100%;
  padding: 0.55rem 0.7rem;
  border: 1px solid var(--border);
  border-radius: 8px;
  font-family: var(--font-ui);
  font-size: 0.92rem;
  background: var(--input-bg);
  color: var(--ink);
}
input::placeholder { color: var(--muted); opacity: 0.75; }
input:focus, select:focus { outline: 2px solid var(--focus-ring); outline-offset: 1px; }
.form-row { display: flex; gap: 0.6rem; flex-wrap: wrap; align-items: center; margin-bottom: 0.5rem; }
.form-row > * { flex: 1 1 150px; }
.form-row .btn { flex: 0 0 auto; }
.checkbox-label { display: flex; align-items: center; gap: 0.4rem; font-size: 0.9rem; flex: 0 0 auto; }
.checkbox-label input { width: auto; }
.inline-form { display: inline-flex; gap: 0.4rem; align-items: center; }

/* ===== Tables (data grids) ===== */
table.table { width: 100%; border-collapse: collapse; }
table.table th, table.table td {
  text-align: left;
  padding: 0.55rem 0.45rem;
  border-bottom: 1px solid var(--border);
  font-size: 0.9rem;
}
table.table th { color: var(--muted); font-weight: 700; font-size: 0.76rem; text-transform: uppercase; letter-spacing: 0.03em; }
tr.row-inactive { opacity: 0.5; }

/* ===== Badges ===== */
.badge { display: inline-block; padding: 0.18rem 0.55rem; border-radius: 20px; font-size: 0.76rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.03em; }
.badge-free     { background: var(--badge-free-bg); color: var(--badge-free-fg); }
.badge-occupied { background: var(--badge-occ-bg);  color: var(--badge-occ-fg); }

/* ===== Alerts ===== */
.alert         { background: var(--alert-bg); color: var(--alert-fg); border: 1px solid var(--alert-border); padding: 0.65rem 0.9rem; border-radius: 8px; margin-bottom: 0.85rem; font-size: 0.88rem; }
.alert-success { background: var(--alert-success-bg); color: var(--alert-success-fg); border-color: var(--alert-success-border); }

/* ===== Stat cards ===== */
.stat-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 0.85rem; margin-bottom: 1.25rem; }
.stat-card {
  position: relative;
  overflow: hidden;
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  box-shadow: var(--shadow);
  padding: 1.1rem 1rem 1rem;
  text-align: center;
}
.stat-card::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 4px; background: var(--gradient-brand); }
.stat-value { font-size: 1.75rem; font-weight: 800; color: var(--ink); }
.stat-label { color: var(--muted); font-size: 0.8rem; margin-top: 0.25rem; }

/* ===== Chips (categories) ===== */
.chip-list { display: flex; flex-wrap: wrap; gap: 0.45rem; margin-top: 0.7rem; }
.chip { background: var(--bg-soft); border-radius: 20px; padding: 0.3rem 0.65rem; font-size: 0.83rem; display: inline-flex; align-items: center; gap: 0.4rem; }
.chip-remove { background: none; border: none; color: var(--c-magenta); cursor: pointer; font-size: 1rem; line-height: 1; padding: 0; }

/* ===== Table grid (staff floor view) ===== */
.table-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); gap: 0.85rem; margin-bottom: 1.5rem; }

/* The whole card is a link/button — no separate CTA underneath.
   Free tables get a soft teal tint; occupied tables get a warm coral tint,
   so at a glance the floor plan reads correctly by colour alone. */
.table-card {
  position: relative;
  overflow: hidden;
  display: block;
  width: 100%;
  border: 1px solid transparent;
  border-radius: var(--radius);
  box-shadow: var(--shadow);
  padding: 1.1rem 1rem 1rem;
  text-align: center;
  cursor: pointer;
  text-decoration: none;
  color: inherit;
  font: inherit;
  transition: transform 0.12s ease, box-shadow 0.15s ease, filter 0.15s ease;
  /* Holding a table is OUR custom gesture (opens the quick-edit popup) —
     without these, Chrome/Safari treat the hold as "select this text" and
     pop up their own copy/selection UI instead, hijacking the gesture. */
  -webkit-user-select: none;
  -webkit-touch-callout: none;
  user-select: none;
}
.table-card:hover { transform: translateY(-2px); box-shadow: var(--shadow), 0 6px 22px rgba(0,0,0,0.10); }
.table-card:active { transform: translateY(0) scale(0.985); }

/* Free = calm teal card + darker teal accent strip */
.table-card.table-free {
  background: color-mix(in srgb, var(--c-teal, #17998C) 8%, var(--card));
  border-color: color-mix(in srgb, var(--c-teal, #17998C) 25%, transparent);
}
/* Occupied = warm coral card + hotter accent strip */
.table-card.table-occupied {
  background: color-mix(in srgb, var(--c-coral, #EA5B6F) 10%, var(--card));
  border-color: color-mix(in srgb, var(--c-coral, #EA5B6F) 30%, transparent);
}

.table-card::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 5px; }
.table-card.table-free::before     { background: linear-gradient(90deg, var(--c-teal), var(--c-blue)); }
.table-card.table-occupied::before { background: linear-gradient(90deg, var(--c-magenta), var(--c-coral)); }

.table-number     { font-size: 1.35rem; font-weight: 800; }
.table-cap        { font-size: 0.78rem; color: var(--muted); margin-top: 0.15rem; }
.table-order-info { font-size: 1rem; font-weight: 700; color: var(--c-magenta); margin: 0.35rem 0 0.1rem; }
.table-card-form  { margin: 0; -webkit-user-select: none; -webkit-touch-callout: none; user-select: none; }
/* The form wraps a <button>; strip the default button chrome so it looks
   like the anchor version. */
button.table-card { -webkit-appearance: none; appearance: none; }

/* ===== Order screen ===== */
.order-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  flex-wrap: wrap;
  gap: 0.6rem;
  padding: 0.9rem 1.1rem;
}
.order-header h2 { margin: 0; font-size: 1.4rem; }
.order-header-actions {
  display: flex;
  align-items: center;
  gap: 0.6rem;
  flex-wrap: wrap;
}

/* Header row on the tables page — h1 on the left, live badge on the right */
.live-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.6rem;
  flex-wrap: wrap;
  margin-bottom: 1rem;
}
.live-header h1 { margin: 0; }

/* Live-sync badge, shared by tables page + order page. States: connecting,
   online (green pulsing dot), offline (red static dot). It's small and
   unobtrusive but confirms at a glance that changes from other phones are
   flowing. */
.live-badge {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  padding: 0.28rem 0.7rem;
  border-radius: 999px;
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.02em;
  background: var(--bg-soft, #eee);
  color: var(--muted, #666);
  border: 1px solid var(--border, #ddd);
  white-space: nowrap;
}
.live-dot {
  width: 8px; height: 8px; border-radius: 50%;
  background: currentColor;
  display: inline-block;
}
.live-connecting { color: #b58900; }
.live-online     { color: #0a7a4c; }
.live-online .live-dot { animation: livePulse 1.4s ease-in-out infinite; }
.live-offline    { color: #b91c1c; }
@keyframes livePulse {
  0%, 100% { transform: scale(1);   opacity: 1; }
  50%      { transform: scale(1.6); opacity: 0.4; }
}
@media (prefers-reduced-motion: reduce) {
  .live-online .live-dot { animation: none; }
}

.order-layout {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1rem;
  align-items: start;
}
/* On tablet/desktop, panels stay in their natural order: Cart LEFT, Add
   Items RIGHT — unchanged from before. Only on PHONE do we flip so Add
   Items shows on top and Cart underneath (see the max-width:640px rule
   further down, which is where this actually takes effect). */

.panel-title {
  font-size: 1rem;
  font-weight: 700;
  margin: 0 0 0.75rem;
  display: flex;
  align-items: center;
  gap: 0.5rem;
}

/* item count pill next to "Current Order" heading */
.item-count-badge {
  display: inline-block;
  font-size: 0.72rem;
  font-weight: 700;
  background: var(--gradient-btn);
  color: #fff;
  padding: 0.15rem 0.55rem;
  border-radius: 20px;
  letter-spacing: 0.02em;
}

/* ── Custom item quick-add ── */
.custom-item-form {
  margin-bottom: 0.7rem;
  padding-bottom: 0.7rem;
  border-bottom: 1px dashed var(--border);
}
.custom-item-inputs {
  display: flex;
  gap: 0.35rem;
  align-items: center;
}
.custom-name-input  { flex: 1 1 0; min-width: 0; }
.custom-price-input { flex: 0 0 95px; min-width: 70px; }

.empty-order-msg { font-size: 0.88rem; margin: 0.4rem 0 0; }

/* ── Order items table ── */
.order-table { font-size: 0.88rem; }
.order-table th, .order-table td { padding: 0.45rem 0.35rem; }

/* Custom item row styling */
tr.custom-item-row td:first-child { font-style: italic; }
.custom-badge {
  color: var(--c-orange);
  margin-right: 0.25rem;
  font-size: 0.75em;
}

/* ── Order totals ── */
.order-totals {
  margin-top: 0.7rem;
  padding-top: 0.7rem;
  border-top: 1px dashed var(--border);
}
.total-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 0.18rem 0;
  font-size: 0.9rem;
}
.total-final-row {
  font-size: 1.15rem;
  font-weight: 700;
  padding-top: 0.45rem;
  margin-top: 0.2rem;
  border-top: 1px solid var(--border);
}
.discount-amount { color: var(--c-teal); font-weight: 600; }

/* ── Finalize section ── */
.finalize-form {
  margin-top: 0.85rem;
  padding-top: 0.85rem;
  border-top: 1px solid var(--border);
}

/* Discount type toggle row */
.discount-toggle-row {
  display: flex;
  gap: 0.35rem;
  align-items: center;
}
.disc-type-btn {
  flex: 0 0 34px;
  height: 34px;
  border-radius: 7px;
  border: 2px solid var(--border);
  background: var(--bg-soft);
  color: var(--ink);
  font-family: var(--font-ui);
  font-weight: 700;
  font-size: 0.88rem;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0;
  transition: background 0.12s ease, color 0.12s ease;
}
.disc-type-btn.active {
  background: var(--gradient-btn);
  color: #fff;
  border-color: transparent;
}
.discount-toggle-row input[type="number"] {
  flex: 1;
  min-width: 0;
}
.discount-preview {
  font-size: 0.8rem;
  margin-top: 0.25rem;
  min-height: 1em;
  color: var(--c-teal);
  font-weight: 600;
}

/* Menu panel */
.order-menu { max-height: 80vh; overflow-y: auto; }

/* order-menu's own top padding is moved onto the title below instead (see
   .order-menu .panel-title) — this way the sticky .menu-controls sits flush
   against the TRUE top of the scroll container with zero gap, rather than
   getting stuck just past the container's padding (the classic "gap above
   a sticky header inside a padded scroll box" bug). */
.order-menu { padding-top: 0; }
.order-menu .panel-title { margin-top: 1.25rem; }

/* Search + category shortcuts — sticky inside the panel scroll */
.menu-controls {
  position: sticky;
  top: 0;
  background: var(--card);
  z-index: 2;
  padding-bottom: 0.5rem;
  margin-bottom: 0.15rem;
}
.item-search {
  width: 100%;
  padding: 0.6rem 0.85rem;
  border: 1px solid var(--border);
  border-radius: 8px;
  font-family: var(--font-ui);
  font-size: 0.9rem;
  margin-bottom: 0.5rem;
  background: var(--input-bg);
  color: var(--ink);
}
.item-search:focus { outline: 2px solid var(--focus-ring); outline-offset: 1px; }
.category-pills {
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem;
  padding-bottom: 0.15rem;
}
.cat-pill {
  flex: 0 0 auto;
  padding: 0.32rem 0.75rem;
  border-radius: 20px;
  border: 1px solid var(--border);
  background: var(--bg-soft);
  color: var(--ink);
  font-size: 0.78rem;
  font-weight: 700;
  cursor: pointer;
  white-space: nowrap;
}
.cat-pill.active { background: var(--gradient-btn); color: #fff; border-color: transparent; }

.menu-category-title {
  margin: 1rem 0 0.35rem;
  font-size: 0.88rem;
  color: var(--c-magenta);
  border-bottom: 1px solid var(--border);
  padding-bottom: 0.28rem;
}
.menu-item-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 0.4rem 0;
  gap: 0.5rem;
}
.menu-item-name { font-size: 0.88rem; }

/* Quantity steppers */
.qty-stepper { display: inline-flex; align-items: center; gap: 0.25rem; }
.qty-btn {
  width: 28px; height: 28px;
  flex: 0 0 auto;
  border-radius: 7px;
  border: none;
  background: var(--gradient-btn-alt);
  color: #fff;
  font-size: 1rem;
  font-weight: 700;
  line-height: 1;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0;
}
.qty-btn:active { transform: scale(0.92); }
.qty-value {
  display: inline-block;
  min-width: 24px;
  text-align: center;
  font-weight: 700;
  font-size: 0.9rem;
}

/* ===== Login ===== */
.login-card { width: 100%; max-width: 380px; text-align: center; position: relative; z-index: 1; }
.login-card h1 { font-family: var(--font-display); font-size: 2.2rem; margin-bottom: 0.1rem; }
.rangoli-motif {
  position: absolute;
  top: 50%; left: 50%;
  transform: translate(-50%, -50%);
  width: 480px; height: 480px;
  z-index: 0;
  pointer-events: none;
}

/* ===== Theme toggle (Light/Dark) ==========================
   Lives in the top nav. Shows the icon of the mode you'd
   switch TO (moon in light mode, sun in dark mode), so it
   works like the toggles most people expect. */
.theme-toggle {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  border-radius: 50%;
  border: 1px solid rgba(255,255,255,0.2);
  background: rgba(255,255,255,0.08);
  color: #fff;
  cursor: pointer;
  padding: 0;
  transition: background 0.15s ease, transform 0.15s ease;
}
.theme-toggle:hover { background: rgba(255,255,255,0.16); transform: scale(1.05); }
.theme-toggle:active { transform: scale(0.94); }
.theme-toggle svg { width: 18px; height: 18px; display: block; }
.theme-toggle { position: relative; }
.theme-toggle svg { display: block; }
/* Small dot showing the CURRENT theme's colour */
.theme-toggle .theme-dot {
  position: absolute;
  right: 4px;
  bottom: 4px;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: #F0973A;
  box-shadow: 0 0 0 1.5px var(--card, #fff);
}
[data-theme="dark"]   .theme-toggle .theme-dot { background: #7B3FA0; }
[data-theme="neon"]   .theme-toggle .theme-dot { background: linear-gradient(135deg,#00F5FF,#FF00E5); box-shadow: 0 0 6px rgba(0,245,255,0.8); }
[data-theme="candy"]  .theme-toggle .theme-dot { background: #FF5FA2; }
[data-theme="ocean"]  .theme-toggle .theme-dot { background: #26C6DA; }
[data-theme="sunset"] .theme-toggle .theme-dot { background: linear-gradient(135deg,#FF7A00,#FF4D6D); }
[data-theme="royal"]  .theme-toggle .theme-dot { background: linear-gradient(135deg,#D4AF37,#7B2FF7); }

/* On the login page (no nav), the toggle floats top-right of the card area */
.theme-toggle-floating {
  position: fixed;
  top: 14px; right: 14px;
  z-index: 1000;
  background: var(--card);
  color: var(--ink);
  border: 1px solid var(--border);
  box-shadow: var(--shadow);
}
.theme-toggle-floating:hover { background: var(--bg-soft); }

.receipt-page { background: var(--bg-soft); }
.receipt {
  background: #fff;
  width: 340px;
  margin: 1.5rem auto 1rem;
  padding: 1.3rem;
  font-family: var(--font-mono);
  font-size: 0.83rem;
  box-shadow: var(--shadow);
  border-radius: 6px;
  color: #111;
}
.receipt-header { text-align: center; }
.receipt-header h2 { font-family: var(--font-mono); font-size: 1rem; margin-bottom: 0.15rem; color: #111; }
.receipt hr { border: none; border-top: 1px dashed var(--border); margin: 0.7rem 0; }
.receipt-table th, .receipt-table td { font-size: 0.78rem; padding: 0.22rem 0.2rem; border-bottom: none; color: #111; }
.receipt-totals { font-size: 0.83rem; }
.receipt-footer { text-align: center; font-style: italic; color: var(--muted); }

@media print {
  body::before { display: none; }
  .no-print { display: none; }
  .receipt-page { background: #fff; }
  .receipt { box-shadow: none; margin: 0 auto; }
}

/* ===== Responsive ===== */

/* Tablet & smaller desktop — order layout already set above as 2-col */
@media (max-width: 900px) {
  .order-layout { gap: 0.75rem; }
}

/* Phone ONLY — switch to single column, Cart on top, Add Items below.
   Tablet and up stay side-by-side (Cart left, Add Items right) — see the
   two-column rules above, which now apply all the way up to this point. */
@media (max-width: 640px) {
  .order-layout { grid-template-columns: 1fr; }
  /* Cart shows FIRST (top) — natural DOM order, no reordering needed; the
     Bill button lives in its header, so it's immediately visible. Add Items
     follows below it. */
  /* Add Items panel fills the screen height, then scrolls internally
     instead of stretching the page endlessly across 149 items. */
  .order-current { position: static; }
  .order-menu    { position: static; max-height: 90vh; overflow-y: auto; }
  /* Menu controls remain sticky relative to viewport */
  .menu-controls { position: sticky; top: 0; }
}

/* Mobile */
@media (max-width: 600px) {
  .container  { padding: 0.6rem 0.5rem 1.5rem; }
  .card       { padding: 0.85rem 0.75rem; margin-bottom: 0.75rem; }
  .topnav     { padding: 0.65rem 0.9rem; }
  .topnav-brand { font-size: 0.9rem; }
  .topnav-links { gap: 0.75rem; }
  .topnav-links a { font-size: 0.83rem; }

  .order-header       { padding: 0.75rem; }
  .order-header h2    { font-size: 1.15rem; }

  /* Compact custom-add inputs on small screens */
  .custom-price-input { flex: 0 0 82px; }

  /* Tighter table cells */
  table.table th, table.table td { padding: 0.38rem 0.3rem; font-size: 0.82rem; }

  .qty-btn  { width: 26px; height: 26px; font-size: 0.95rem; }
  .btn-small { padding: 0.25rem 0.5rem; font-size: 0.76rem; }

  .stat-grid { grid-template-columns: repeat(2, 1fr); }
  .table-grid { grid-template-columns: repeat(auto-fill, minmax(120px, 1fr)); gap: 0.65rem; }
}

/* Very small phones */
@media (max-width: 380px) {
  .container { padding: 0.5rem 0.35rem 1.25rem; }
  .card      { padding: 0.7rem 0.6rem; }
  .custom-price-input { flex: 0 0 72px; }
}

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


/* ── Added-by badge (kisne item add kiya) ─────────────────────────────── */
.added-by-badge {
  display: inline-block;
  font-size: 0.68rem;
  font-weight: 600;
  padding: 0.05rem 0.45rem;
  border-radius: 999px;
  background: color-mix(in srgb, var(--c-teal, #14b8a6) 18%, transparent);
  color: var(--c-teal, #0d9488);
  margin-top: 0.15rem;
  letter-spacing: 0.02em;
  white-space: nowrap;
}
.other-staff-row td { opacity: 0.92; }
.other-staff-row .added-by-badge {
  background: color-mix(in srgb, var(--c-coral, #f97316) 18%, transparent);
  color: var(--c-coral, #ea580c);
}

/* ── Language switcher in top nav ─────────────────────────────────────── */
.lang-switcher {
  display: inline-flex;
  gap: 0.15rem;
  align-items: center;
  border: 1px solid var(--border-color, rgba(128,128,128,0.35));
  border-radius: 999px;
  padding: 0.1rem;
}
.lang-btn {
  border: none;
  background: transparent;
  color: inherit;
  font: inherit;
  font-size: 0.78rem;
  padding: 0.15rem 0.55rem;
  border-radius: 999px;
  cursor: pointer;
  line-height: 1.4;
}
.lang-btn.active {
  background: var(--c-teal, #14b8a6);
  color: #fff;
}


/* ── Order activity history ───────────────────────────────────────────── */
.order-history {
  margin-top: 1rem;
  border-top: 1px dashed var(--border-color, rgba(128,128,128,0.3));
  padding-top: 0.6rem;
}
.order-history summary {
  cursor: pointer;
  font-weight: 600;
  font-size: 0.85rem;
  opacity: 0.85;
  user-select: none;
}
.history-count { font-weight: 400; opacity: 0.6; font-size: 0.78rem; }
.history-list {
  list-style: none;
  margin: 0.5rem 0 0;
  padding: 0;
  max-height: 240px;
  overflow-y: auto;
  font-size: 0.8rem;
}
.history-list li {
  display: flex;
  gap: 0.5rem;
  align-items: baseline;
  padding: 0.25rem 0.2rem;
  border-bottom: 1px solid color-mix(in srgb, currentColor 8%, transparent);
}
.hist-time { opacity: 0.55; font-variant-numeric: tabular-nums; flex: 0 0 auto; }
.hist-name { font-weight: 600; flex: 0 0 auto; max-width: 8rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.hist-text { flex: 1; }
.hist-add    .hist-text { color: var(--c-teal, #0d9488); }
.hist-minus  .hist-text { color: var(--c-coral, #ea580c); }
.hist-remove .hist-text { color: var(--c-coral, #dc2626); }
.hist-bill   .hist-text { font-weight: 600; }

/* History table row tints (admin order-history page) */
tr.hist-add   td:nth-child(3) { color: var(--c-teal, #0d9488); font-weight: 600; }
tr.hist-minus td:nth-child(3) { color: var(--c-coral, #ea580c); font-weight: 600; }
tr.hist-bill  td:nth-child(3) { font-weight: 700; }

/* ════════════════════════════════════════════════════════════════════════
   NEON THEME — [data-theme="neon"]
   Sci-fi dark: near-black void, electric cyan/magenta/purple RGB gradients,
   glowing panel edges, subtle grid floor. Every accent slowly hue-cycles.
   ════════════════════════════════════════════════════════════════════════ */
[data-theme="neon"] {
  /* Electric palette overrides — every component picks these up */
  --c-orange:  #00F5FF;   /* electric cyan   */
  --c-coral:   #FF2E88;   /* hot pink        */
  --c-magenta: #FF00E5;   /* neon magenta    */
  --c-violet:  #9D4DFF;   /* ultraviolet     */
  --c-blue:    #2E9BFF;   /* laser blue      */
  --c-teal:    #00FFC8;   /* radioactive mint*/

  --gradient-brand: linear-gradient(120deg, #00F5FF 0%, #2E9BFF 20%, #9D4DFF 40%, #FF00E5 60%, #FF2E88 80%, #00FFC8 100%);
  --gradient-btn:     linear-gradient(135deg, #00F5FF, #FF00E5);
  --gradient-btn-alt: linear-gradient(135deg, #2E9BFF, #00FFC8);
  --gradient-danger:  linear-gradient(135deg, #FF2E88, #B3005E);

  --ink:       #E6FAFF;
  --bg:        #030309;
  --bg-soft:   #0A0A16;
  --card:      rgba(10, 12, 26, 0.92);
  --input-bg:  #0D0F22;
  --muted:     #6E7BA8;
  --border:    rgba(0, 245, 255, 0.22);
  --shadow:    0 0 18px rgba(0,245,255,0.10), 0 0 42px rgba(255,0,229,0.07), 0 4px 24px rgba(0,0,0,0.7);
  --gradient-nav: linear-gradient(100deg, #05050F 0%, #0B0B22 55%, #14082B 100%);
  --nav-text:  rgba(190, 230, 255, 0.78);
  --nav-text-strong: #7DF9FF;
  --alert-bg:  rgba(255,46,136,0.12);
  --alert-fg:  #FF9CC6;
  --alert-border: rgba(255,46,136,0.4);
  --alert-success-bg: rgba(0,255,200,0.10);
  --alert-success-fg: #7DFFE4;
  --alert-success-border: rgba(0,255,200,0.35);
  --badge-free-bg: rgba(0,255,200,0.14);
  --badge-free-fg: #7DFFE4;
  --badge-occ-bg: rgba(255,46,136,0.16);
  --badge-occ-fg: #FF9CC6;
  --focus-ring: #00F5FF;
  --shimmer-opacity: 1;
}

/* Void background: deep space + faint RGB nebula glows + holo grid floor */
[data-theme="neon"] body {
  background:
    radial-gradient(ellipse 60% 40% at 15% 0%,   rgba(0,245,255,0.10), transparent 60%),
    radial-gradient(ellipse 50% 40% at 85% 10%,  rgba(255,0,229,0.09), transparent 60%),
    radial-gradient(ellipse 70% 50% at 50% 100%, rgba(157,77,255,0.10), transparent 65%),
    repeating-linear-gradient(0deg,  transparent 0 39px, rgba(0,245,255,0.028) 39px 40px),
    repeating-linear-gradient(90deg, transparent 0 39px, rgba(0,245,255,0.028) 39px 40px),
    #030309;
  background-attachment: fixed;
}

/* Cards become glowing glass panels with a slow RGB edge sweep */
[data-theme="neon"] .card {
  position: relative;
  border: 1px solid transparent;
  background:
    linear-gradient(var(--card), var(--card)) padding-box,
    linear-gradient(var(--neon-angle, 135deg), rgba(0,245,255,0.55), rgba(157,77,255,0.4), rgba(255,0,229,0.55), rgba(0,255,200,0.4)) border-box;
  animation: neon-border-sweep 9s linear infinite;
}
@property --neon-angle {
  syntax: '<angle>';
  initial-value: 135deg;
  inherits: false;
}
@keyframes neon-border-sweep {
  from { --neon-angle: 0deg; }
  to   { --neon-angle: 360deg; }
}
/* Fallback for browsers without @property: static gradient border still shows */

/* Brand headings: animated RGB spectrum + soft glow */
[data-theme="neon"] .brand-gradient-text {
  background-size: 300% 100%;
  animation: neon-flow 6s linear infinite;
  filter: drop-shadow(0 0 10px rgba(0,245,255,0.35)) drop-shadow(0 0 22px rgba(255,0,229,0.18));
}
@keyframes neon-flow {
  0%   { background-position: 0% 50%; }
  100% { background-position: 300% 50%; }
}

/* Buttons glow */
[data-theme="neon"] .btn-primary {
  box-shadow: 0 0 14px rgba(0,245,255,0.4), 0 0 30px rgba(255,0,229,0.22);
  text-shadow: 0 0 8px rgba(255,255,255,0.55);
  border: none;
}
[data-theme="neon"] .btn-primary:hover {
  box-shadow: 0 0 22px rgba(0,245,255,0.65), 0 0 46px rgba(255,0,229,0.35);
}
[data-theme="neon"] .btn-secondary {
  border: 1px solid rgba(0,245,255,0.35);
  box-shadow: 0 0 10px rgba(0,245,255,0.12) inset, 0 0 10px rgba(0,245,255,0.08);
}
[data-theme="neon"] .btn-danger {
  box-shadow: 0 0 12px rgba(255,46,136,0.45);
}

/* Top nav: holographic edge line */
[data-theme="neon"] .topnav {
  border-bottom: 1px solid rgba(0,245,255,0.25);
  box-shadow: 0 1px 0 rgba(255,0,229,0.18), 0 6px 30px rgba(0,245,255,0.08);
}
[data-theme="neon"] .topnav-links a.active,
[data-theme="neon"] .topnav-links a:hover {
  text-shadow: 0 0 10px rgba(0,245,255,0.8);
}

/* Table cards: neon status strips + hover lift glow */
[data-theme="neon"] .table-card.table-free::before     { background: linear-gradient(90deg, #00FFC8, #00F5FF); box-shadow: 0 0 12px rgba(0,255,200,0.6); }
[data-theme="neon"] .table-card.table-occupied::before { background: linear-gradient(90deg, #FF00E5, #FF2E88); box-shadow: 0 0 12px rgba(255,0,229,0.6); }
[data-theme="neon"] .table-card:hover {
  box-shadow: 0 0 22px rgba(0,245,255,0.22), 0 0 50px rgba(157,77,255,0.14);
}

/* Live badge pulses like a reactor core */
[data-theme="neon"] .live-online .live-dot {
  background: #00FFC8;
  box-shadow: 0 0 8px #00FFC8, 0 0 16px rgba(0,255,200,0.6);
}
[data-theme="neon"] .live-offline .live-dot {
  background: #FF2E88;
  box-shadow: 0 0 8px #FF2E88;
}

/* Inputs: cyan focus beam */
[data-theme="neon"] input:focus,
[data-theme="neon"] select:focus,
[data-theme="neon"] textarea:focus {
  box-shadow: 0 0 0 2px rgba(0,245,255,0.5), 0 0 16px rgba(0,245,255,0.25);
  border-color: #00F5FF;
}

/* Qty steppers + category pills glow when active */
[data-theme="neon"] .qty-btn {
  border: 1px solid rgba(0,245,255,0.3);
  box-shadow: 0 0 8px rgba(0,245,255,0.10);
}
[data-theme="neon"] .qty-btn:active {
  box-shadow: 0 0 14px rgba(0,245,255,0.5);
}
[data-theme="neon"] .cat-pill.active {
  box-shadow: 0 0 12px rgba(0,245,255,0.4), 0 0 26px rgba(255,0,229,0.2);
  text-shadow: 0 0 6px rgba(255,255,255,0.5);
}

/* Added-by badges + history entries: neon chip look */
[data-theme="neon"] .added-by-badge {
  background: rgba(0,255,200,0.12);
  color: #7DFFE4;
  box-shadow: 0 0 8px rgba(0,255,200,0.18);
  border: 1px solid rgba(0,255,200,0.3);
}
[data-theme="neon"] .hist-add    .hist-text { color: #00FFC8; text-shadow: 0 0 8px rgba(0,255,200,0.4); }
[data-theme="neon"] .hist-minus  .hist-text { color: #FF9CC6; text-shadow: 0 0 8px rgba(255,46,136,0.4); }
[data-theme="neon"] .hist-remove .hist-text { color: #FF2E88; text-shadow: 0 0 8px rgba(255,46,136,0.5); }

/* Language switcher active pill */
[data-theme="neon"] .lang-btn.active {
  background: linear-gradient(135deg, #00F5FF, #FF00E5);
  box-shadow: 0 0 12px rgba(0,245,255,0.5);
  color: #030309;
  font-weight: 700;
}

/* Receipt print stays plain white regardless of theme (thermal printer) */
@media print {
  [data-theme="neon"] body { background: #fff !important; }
}

/* Respect reduced-motion: freeze the animated sweeps */
@media (prefers-reduced-motion: reduce) {
  [data-theme="neon"] .card,
  [data-theme="neon"] .brand-gradient-text { animation: none; }
}

/* ════════════════════════════════════════════════════════════════════════
   CANDY THEME — [data-theme="candy"]
   Sweet shop: pastel pink & mint, bubblegum accents, soft rounded feel.
   ════════════════════════════════════════════════════════════════════════ */
[data-theme="candy"] {
  --c-orange:  #FFB020;   /* butterscotch */
  --c-coral:   #FF5FA2;   /* bubblegum    */
  --c-magenta: #F0479C;   /* candy pink   */
  --c-violet:  #B388FF;   /* grape lolly  */
  --c-blue:    #6EC3FF;   /* blueberry ice*/
  --c-teal:    #34C9B0;   /* mint chew    */

  --gradient-brand: linear-gradient(120deg, #FF5FA2 0%, #F0479C 25%, #B388FF 50%, #6EC3FF 75%, #34C9B0 100%);
  --gradient-btn:     linear-gradient(135deg, #FF5FA2, #B388FF);
  --gradient-btn-alt: linear-gradient(135deg, #6EC3FF, #34C9B0);
  --gradient-danger:  linear-gradient(135deg, #F0479C, #C2185B);

  --ink:       #4A1D3A;
  --bg:        #FFF0F7;
  --bg-soft:   #FFE1EF;
  --card:      #FFFFFF;
  --input-bg:  #FFFFFF;
  --muted:     #B187A0;
  --border:    #FBCFE4;
  --shadow:    0 4px 16px rgba(240,71,156,0.12);
  --gradient-nav: linear-gradient(100deg, #FF5FA2 0%, #E4479B 45%, #B388FF 100%);
  --nav-text:  rgba(255,255,255,0.9);
  --nav-text-strong: #fff;
  --alert-bg:  rgba(240,71,156,0.10);
  --alert-fg:  #B4256E;
  --alert-border: rgba(240,71,156,0.3);
  --alert-success-bg: rgba(52,201,176,0.12);
  --alert-success-fg: #14806E;
  --alert-success-border: rgba(52,201,176,0.3);
  --badge-free-bg: rgba(52,201,176,0.16);
  --badge-free-fg: #14806E;
  --badge-occ-bg: rgba(240,71,156,0.14);
  --badge-occ-fg: #B4256E;
  --focus-ring: #FF5FA2;
  --shimmer-opacity: 1;
}
[data-theme="candy"] body {
  background:
    radial-gradient(circle at 12% 8%,  rgba(255,95,162,0.10), transparent 45%),
    radial-gradient(circle at 88% 20%, rgba(179,136,255,0.10), transparent 45%),
    radial-gradient(circle at 50% 95%, rgba(52,201,176,0.08),  transparent 50%),
    #FFF0F7;
  background-attachment: fixed;
}
[data-theme="candy"] .card { border: 1px solid #FBCFE4; }
[data-theme="candy"] .btn-primary { box-shadow: 0 4px 14px rgba(255,95,162,0.35); }

/* ════════════════════════════════════════════════════════════════════════
   OCEAN THEME — [data-theme="ocean"]
   Deep sea: navy depths, aqua & seafoam accents, soft wave glows.
   ════════════════════════════════════════════════════════════════════════ */
[data-theme="ocean"] {
  --c-orange:  #FFB74D;   /* sunset buoy  */
  --c-coral:   #FF7043;   /* coral reef   */
  --c-magenta: #EC407A;   /* anemone      */
  --c-violet:  #5C6BC0;   /* deep current */
  --c-blue:    #1E88E5;   /* open water   */
  --c-teal:    #26C6DA;   /* lagoon       */

  --gradient-brand: linear-gradient(120deg, #26C6DA 0%, #1E88E5 30%, #5C6BC0 60%, #00BFA5 100%);
  --gradient-btn:     linear-gradient(135deg, #1E88E5, #26C6DA);
  --gradient-btn-alt: linear-gradient(135deg, #00BFA5, #26C6DA);
  --gradient-danger:  linear-gradient(135deg, #EC407A, #AD1457);

  --ink:       #DFF3FF;
  --bg:        #041420;
  --bg-soft:   #0A2438;
  --card:      #0B1F30;
  --input-bg:  #0E293E;
  --muted:     #7FA5BC;
  --border:    rgba(38, 198, 218, 0.22);
  --shadow:    0 4px 22px rgba(0,0,0,0.5), 0 0 24px rgba(38,198,218,0.06);
  --gradient-nav: linear-gradient(100deg, #04121E 0%, #0A2C44 55%, #0E4160 100%);
  --nav-text:  rgba(200,235,255,0.8);
  --nav-text-strong: #7FDBFF;
  --alert-bg:  rgba(255,112,67,0.14);
  --alert-fg:  #FFB59E;
  --alert-border: rgba(255,112,67,0.35);
  --alert-success-bg: rgba(0,191,165,0.14);
  --alert-success-fg: #7DEFDC;
  --alert-success-border: rgba(0,191,165,0.35);
  --badge-free-bg: rgba(0,191,165,0.18);
  --badge-free-fg: #7DEFDC;
  --badge-occ-bg: rgba(236,64,122,0.18);
  --badge-occ-fg: #FFA8C5;
  --focus-ring: #26C6DA;
  --shimmer-opacity: 1;
}
[data-theme="ocean"] body {
  background:
    radial-gradient(ellipse 70% 45% at 50% 0%,   rgba(30,136,229,0.14), transparent 60%),
    radial-gradient(ellipse 55% 40% at 20% 100%, rgba(0,191,165,0.10),  transparent 60%),
    radial-gradient(ellipse 55% 40% at 85% 90%,  rgba(92,107,192,0.10), transparent 60%),
    #041420;
  background-attachment: fixed;
}
[data-theme="ocean"] .card { border: 1px solid rgba(38,198,218,0.18); }
[data-theme="ocean"] .btn-primary { box-shadow: 0 0 14px rgba(38,198,218,0.3); }

/* ════════════════════════════════════════════════════════════════════════
   SUNSET THEME — [data-theme="sunset"]
   Golden hour: warm cream light theme, orange→pink→purple dusk accents.
   ════════════════════════════════════════════════════════════════════════ */
[data-theme="sunset"] {
  --c-orange:  #FF7A00;   /* setting sun  */
  --c-coral:   #FF4D6D;   /* horizon glow */
  --c-magenta: #D6336C;   /* dusk rose    */
  --c-violet:  #7048E8;   /* first stars  */
  --c-blue:    #4C6EF5;   /* fading sky   */
  --c-teal:    #12B886;   /* palm shade   */

  --gradient-brand: linear-gradient(120deg, #FFB020 0%, #FF7A00 25%, #FF4D6D 50%, #D6336C 72%, #7048E8 100%);
  --gradient-btn:     linear-gradient(135deg, #FF7A00, #FF4D6D);
  --gradient-btn-alt: linear-gradient(135deg, #FF4D6D, #7048E8);
  --gradient-danger:  linear-gradient(135deg, #D6336C, #9C1651);

  --ink:       #3B1F2B;
  --bg:        #FFF6EC;
  --bg-soft:   #FFE9D6;
  --card:      #FFFDFA;
  --input-bg:  #FFFFFF;
  --muted:     #A98878;
  --border:    #F7D9BF;
  --shadow:    0 4px 16px rgba(255,122,0,0.10);
  --gradient-nav: linear-gradient(100deg, #7048E8 0%, #D6336C 45%, #FF7A00 100%);
  --nav-text:  rgba(255,255,255,0.92);
  --nav-text-strong: #fff;
  --alert-bg:  rgba(214,51,108,0.10);
  --alert-fg:  #A0234F;
  --alert-border: rgba(214,51,108,0.28);
  --alert-success-bg: rgba(18,184,134,0.12);
  --alert-success-fg: #0B7A58;
  --alert-success-border: rgba(18,184,134,0.3);
  --badge-free-bg: rgba(18,184,134,0.14);
  --badge-free-fg: #0B7A58;
  --badge-occ-bg: rgba(255,77,109,0.14);
  --badge-occ-fg: #C2244B;
  --focus-ring: #FF7A00;
  --shimmer-opacity: 1;
}
[data-theme="sunset"] body {
  background:
    linear-gradient(180deg, rgba(255,176,32,0.08) 0%, rgba(255,77,109,0.06) 40%, rgba(112,72,232,0.05) 100%),
    #FFF6EC;
  background-attachment: fixed;
}
[data-theme="sunset"] .card { border: 1px solid #F7D9BF; }
[data-theme="sunset"] .btn-primary { box-shadow: 0 4px 14px rgba(255,122,0,0.3); }

/* ════════════════════════════════════════════════════════════════════════
   ROYAL THEME — [data-theme="royal"]
   Maharaja luxury: midnight purple, gold trim, wine & emerald accents.
   ════════════════════════════════════════════════════════════════════════ */
[data-theme="royal"] {
  --c-orange:  #D4AF37;   /* gold leaf    */
  --c-coral:   #C77B3F;   /* copper       */
  --c-magenta: #A03060;   /* wine         */
  --c-violet:  #7B2FF7;   /* royal purple */
  --c-blue:    #4353C9;   /* sapphire     */
  --c-teal:    #2F9E68;   /* emerald      */

  --gradient-brand: linear-gradient(120deg, #D4AF37 0%, #C77B3F 25%, #A03060 50%, #7B2FF7 78%, #4353C9 100%);
  --gradient-btn:     linear-gradient(135deg, #D4AF37, #A03060);
  --gradient-btn-alt: linear-gradient(135deg, #7B2FF7, #4353C9);
  --gradient-danger:  linear-gradient(135deg, #A03060, #6E1E42);

  --ink:       #F5EFE0;
  --bg:        #120B1E;
  --bg-soft:   #1E1330;
  --card:      #1A1129;
  --input-bg:  #241738;
  --muted:     #A292B8;
  --border:    rgba(212, 175, 55, 0.28);
  --shadow:    0 4px 22px rgba(0,0,0,0.55), 0 0 0 1px rgba(212,175,55,0.06);
  --gradient-nav: linear-gradient(100deg, #150C24 0%, #2C1546 55%, #46206B 100%);
  --nav-text:  rgba(240,225,190,0.8);
  --nav-text-strong: #F0D98C;
  --alert-bg:  rgba(160,48,96,0.16);
  --alert-fg:  #E8A8C4;
  --alert-border: rgba(160,48,96,0.38);
  --alert-success-bg: rgba(47,158,104,0.14);
  --alert-success-fg: #8FDDB4;
  --alert-success-border: rgba(47,158,104,0.35);
  --badge-free-bg: rgba(47,158,104,0.18);
  --badge-free-fg: #8FDDB4;
  --badge-occ-bg: rgba(160,48,96,0.2);
  --badge-occ-fg: #E8A8C4;
  --focus-ring: #D4AF37;
  --shimmer-opacity: 1;
}
[data-theme="royal"] body {
  background:
    radial-gradient(ellipse 60% 40% at 50% 0%,  rgba(123,47,247,0.10), transparent 60%),
    radial-gradient(ellipse 50% 40% at 10% 90%, rgba(212,175,55,0.06), transparent 55%),
    radial-gradient(ellipse 50% 40% at 90% 85%, rgba(160,48,96,0.08),  transparent 55%),
    #120B1E;
  background-attachment: fixed;
}
[data-theme="royal"] .card {
  border: 1px solid rgba(212,175,55,0.22);
  box-shadow: 0 4px 22px rgba(0,0,0,0.55), inset 0 1px 0 rgba(212,175,55,0.08);
}
[data-theme="royal"] .brand-gradient-text { filter: drop-shadow(0 0 8px rgba(212,175,55,0.25)); }
[data-theme="royal"] .btn-primary { box-shadow: 0 0 14px rgba(212,175,55,0.3); }
[data-theme="royal"] .topnav { border-bottom: 1px solid rgba(212,175,55,0.3); }

/* ── FOREST THEME ── */
[data-theme="forest"] {
  --c-orange: #E8B45A; --c-coral: #E2725B; --c-magenta: #C25B8A;
  --c-violet: #7FA05A; --c-blue: #4E8C6E; --c-teal: #3DBB8D;
  --gradient-brand: linear-gradient(120deg, #E8B45A 0%, #E2725B 22%, #C25B8A 42%, #7FA05A 62%, #4E8C6E 82%, #3DBB8D 100%);
  --gradient-btn: linear-gradient(135deg, #E8B45A, #C25B8A);
  --gradient-btn-alt: linear-gradient(135deg, #4E8C6E, #3DBB8D);
  --gradient-danger: linear-gradient(135deg, #C25B8A, #743652);
  --ink: #E9F2E6; --bg: #0A140C; --bg-soft: #122416;
  --card: #101E14; --input-bg: #16281A;
  --muted: #8FAA93; --border: rgba(61,187,141,0.22);
  --shadow: 0 4px 22px rgba(0,0,0,0.55);
  --gradient-nav: linear-gradient(100deg, #08110A 0%, #14301C 50%, #1E4A2A 100%);
  --nav-text: rgba(168,230,192,0.75); --nav-text-strong: #A8E6C0;
  --alert-bg: rgba(194,91,138,0.12); --alert-fg: #A8E6C0; --alert-border: rgba(194,91,138,0.32);
  --alert-success-bg: rgba(61,187,141,0.12); --alert-success-fg: #A8E6C0; --alert-success-border: rgba(61,187,141,0.32);
  --badge-free-bg: rgba(61,187,141,0.16); --badge-free-fg: #A8E6C0;
  --badge-occ-bg: rgba(194,91,138,0.16); --badge-occ-fg: #A8E6C0;
  --focus-ring: #E8B45A; --shimmer-opacity: 1;
}

/* ── LAVENDER THEME ── */
[data-theme="lavender"] {
  --c-orange: #E8A24D; --c-coral: #E56B9F; --c-magenta: #B565D8;
  --c-violet: #8E6FE8; --c-blue: #6E8AE8; --c-teal: #4DBBB8;
  --gradient-brand: linear-gradient(120deg, #E8A24D 0%, #E56B9F 22%, #B565D8 42%, #8E6FE8 62%, #6E8AE8 82%, #4DBBB8 100%);
  --gradient-btn: linear-gradient(135deg, #E8A24D, #B565D8);
  --gradient-btn-alt: linear-gradient(135deg, #6E8AE8, #4DBBB8);
  --gradient-danger: linear-gradient(135deg, #B565D8, #6C3C81);
  --ink: #3A2E52; --bg: #F5F1FF; --bg-soft: #EBE3FB;
  --card: #FFFFFF; --input-bg: #FFFFFF;
  --muted: #9B8DB8; --border: #DFD3F5;
  --shadow: 0 4px 16px rgba(58,46,82,0.1);
  --gradient-nav: linear-gradient(100deg, #8E6FE8 0%, #A374DE 50%, #C289E0 100%);
  --nav-text: rgba(255,255,255,0.82); --nav-text-strong: #FFFFFF;
  --alert-bg: rgba(181,101,216,0.12); --alert-fg: #874BA2; --alert-border: rgba(181,101,216,0.32);
  --alert-success-bg: rgba(77,187,184,0.12); --alert-success-fg: #358280; --alert-success-border: rgba(77,187,184,0.32);
  --badge-free-bg: rgba(77,187,184,0.16); --badge-free-fg: #358280;
  --badge-occ-bg: rgba(181,101,216,0.16); --badge-occ-fg: #874BA2;
  --focus-ring: #E8A24D; --shimmer-opacity: 1;
}

/* ── CYBERPUNK THEME ── */
[data-theme="cyberpunk"] {
  --c-orange: #FCEE0A; --c-coral: #FF3864; --c-magenta: #FF00A0;
  --c-violet: #8B2FC9; --c-blue: #00A9FE; --c-teal: #00F0B5;
  --gradient-brand: linear-gradient(120deg, #FCEE0A 0%, #FF3864 22%, #FF00A0 42%, #8B2FC9 62%, #00A9FE 82%, #00F0B5 100%);
  --gradient-btn: linear-gradient(135deg, #FCEE0A, #FF00A0);
  --gradient-btn-alt: linear-gradient(135deg, #00A9FE, #00F0B5);
  --gradient-danger: linear-gradient(135deg, #FF00A0, #990060);
  --ink: #F4F9E8; --bg: #0D0221; --bg-soft: #1A0B3B;
  --card: #160933; --input-bg: #1F0E45;
  --muted: #8B7FB0; --border: rgba(252,238,10,0.25);
  --shadow: 0 4px 22px rgba(0,0,0,0.55);
  --gradient-nav: linear-gradient(100deg, #0A0118 0%, #26064A 50%, #460873 100%);
  --nav-text: rgba(252,238,10,0.75); --nav-text-strong: #FCEE0A;
  --alert-bg: rgba(255,0,160,0.12); --alert-fg: #FCEE0A; --alert-border: rgba(255,0,160,0.32);
  --alert-success-bg: rgba(0,240,181,0.12); --alert-success-fg: #FCEE0A; --alert-success-border: rgba(0,240,181,0.32);
  --badge-free-bg: rgba(0,240,181,0.16); --badge-free-fg: #FCEE0A;
  --badge-occ-bg: rgba(255,0,160,0.16); --badge-occ-fg: #FCEE0A;
  --focus-ring: #FCEE0A; --shimmer-opacity: 1;
}

/* ── COFFEE THEME ── */
[data-theme="coffee"] {
  --c-orange: #C98A3D; --c-coral: #B5654A; --c-magenta: #9C4A3C;
  --c-violet: #7A5C43; --c-blue: #6B4E71; --c-teal: #5E8A6E;
  --gradient-brand: linear-gradient(120deg, #C98A3D 0%, #B5654A 22%, #9C4A3C 42%, #7A5C43 62%, #6B4E71 82%, #5E8A6E 100%);
  --gradient-btn: linear-gradient(135deg, #C98A3D, #9C4A3C);
  --gradient-btn-alt: linear-gradient(135deg, #6B4E71, #5E8A6E);
  --gradient-danger: linear-gradient(135deg, #9C4A3C, #5D2C24);
  --ink: #33241A; --bg: #F7F0E8; --bg-soft: #EFE2D2;
  --card: #FFFDF9; --input-bg: #FFFFFF;
  --muted: #A08B78; --border: #E5D4C0;
  --shadow: 0 4px 16px rgba(51,36,26,0.1);
  --gradient-nav: linear-gradient(100deg, #4A3628 0%, #6B4E37 50%, #8A6444 100%);
  --nav-text: rgba(255,255,255,0.82); --nav-text-strong: #F0DEC8;
  --alert-bg: rgba(156,74,60,0.12); --alert-fg: #75372D; --alert-border: rgba(156,74,60,0.32);
  --alert-success-bg: rgba(94,138,110,0.12); --alert-success-fg: #41604D; --alert-success-border: rgba(94,138,110,0.32);
  --badge-free-bg: rgba(94,138,110,0.16); --badge-free-fg: #41604D;
  --badge-occ-bg: rgba(156,74,60,0.16); --badge-occ-fg: #75372D;
  --focus-ring: #C98A3D; --shimmer-opacity: 1;
}

/* ── MATRIX THEME ── */
[data-theme="matrix"] {
  --c-orange: #8AFF3C; --c-coral: #4AE05A; --c-magenta: #1FBB4A;
  --c-violet: #0F8A3C; --c-blue: #0AAA5E; --c-teal: #00FF6A;
  --gradient-brand: linear-gradient(120deg, #8AFF3C 0%, #4AE05A 22%, #1FBB4A 42%, #0F8A3C 62%, #0AAA5E 82%, #00FF6A 100%);
  --gradient-btn: linear-gradient(135deg, #8AFF3C, #1FBB4A);
  --gradient-btn-alt: linear-gradient(135deg, #0AAA5E, #00FF6A);
  --gradient-danger: linear-gradient(135deg, #1FBB4A, #12702C);
  --ink: #D8FFE0; --bg: #020A04; --bg-soft: #07160B;
  --card: #051009; --input-bg: #081A0D;
  --muted: #5A8A66; --border: rgba(0,255,106,0.25);
  --shadow: 0 4px 22px rgba(0,0,0,0.55);
  --gradient-nav: linear-gradient(100deg, #010703 0%, #04220E 50%, #06421A 100%);
  --nav-text: rgba(138,255,156,0.75); --nav-text-strong: #8AFF9C;
  --alert-bg: rgba(31,187,74,0.12); --alert-fg: #8AFF9C; --alert-border: rgba(31,187,74,0.32);
  --alert-success-bg: rgba(0,255,106,0.12); --alert-success-fg: #8AFF9C; --alert-success-border: rgba(0,255,106,0.32);
  --badge-free-bg: rgba(0,255,106,0.16); --badge-free-fg: #8AFF9C;
  --badge-occ-bg: rgba(31,187,74,0.16); --badge-occ-fg: #8AFF9C;
  --focus-ring: #8AFF3C; --shimmer-opacity: 1;
}

/* ── SAKURA THEME ── */
[data-theme="sakura"] {
  --c-orange: #F5B971; --c-coral: #F08CA8; --c-magenta: #E86A96;
  --c-violet: #C87BD8; --c-blue: #8FA8E8; --c-teal: #6FC9B8;
  --gradient-brand: linear-gradient(120deg, #F5B971 0%, #F08CA8 22%, #E86A96 42%, #C87BD8 62%, #8FA8E8 82%, #6FC9B8 100%);
  --gradient-btn: linear-gradient(135deg, #F5B971, #E86A96);
  --gradient-btn-alt: linear-gradient(135deg, #8FA8E8, #6FC9B8);
  --gradient-danger: linear-gradient(135deg, #E86A96, #8B3F5A);
  --ink: #4A2E3A; --bg: #FFF7F9; --bg-soft: #FBE9EF;
  --card: #FFFFFF; --input-bg: #FFFFFF;
  --muted: #B294A0; --border: #F5D5DF;
  --shadow: 0 4px 16px rgba(74,46,58,0.1);
  --gradient-nav: linear-gradient(100deg, #E86A96 0%, #EE9AB4 50%, #F5C2D0 100%);
  --nav-text: rgba(255,255,255,0.82); --nav-text-strong: #FFFFFF;
  --alert-bg: rgba(232,106,150,0.12); --alert-fg: #AE4F70; --alert-border: rgba(232,106,150,0.32);
  --alert-success-bg: rgba(111,201,184,0.12); --alert-success-fg: #4D8C80; --alert-success-border: rgba(111,201,184,0.32);
  --badge-free-bg: rgba(111,201,184,0.16); --badge-free-fg: #4D8C80;
  --badge-occ-bg: rgba(232,106,150,0.16); --badge-occ-fg: #AE4F70;
  --focus-ring: #F5B971; --shimmer-opacity: 1;
}

/* ── FIRE THEME ── */
[data-theme="fire"] {
  --c-orange: #FFB020; --c-coral: #FF6B35; --c-magenta: #F73B2F;
  --c-violet: #C9252D; --c-blue: #A81E5C; --c-teal: #E85D3D;
  --gradient-brand: linear-gradient(120deg, #FFB020 0%, #FF6B35 22%, #F73B2F 42%, #C9252D 62%, #A81E5C 82%, #E85D3D 100%);
  --gradient-btn: linear-gradient(135deg, #FFB020, #F73B2F);
  --gradient-btn-alt: linear-gradient(135deg, #A81E5C, #E85D3D);
  --gradient-danger: linear-gradient(135deg, #F73B2F, #94231C);
  --ink: #FFEEDD; --bg: #160604; --bg-soft: #2A0C06;
  --card: #200A06; --input-bg: #301008;
  --muted: #B08578; --border: rgba(255,107,53,0.28);
  --shadow: 0 4px 22px rgba(0,0,0,0.55);
  --gradient-nav: linear-gradient(100deg, #120402 0%, #3A0E04 50%, #66190A 100%);
  --nav-text: rgba(255,192,138,0.75); --nav-text-strong: #FFC08A;
  --alert-bg: rgba(247,59,47,0.12); --alert-fg: #FFC08A; --alert-border: rgba(247,59,47,0.32);
  --alert-success-bg: rgba(232,93,61,0.12); --alert-success-fg: #FFC08A; --alert-success-border: rgba(232,93,61,0.32);
  --badge-free-bg: rgba(232,93,61,0.16); --badge-free-fg: #FFC08A;
  --badge-occ-bg: rgba(247,59,47,0.16); --badge-occ-fg: #FFC08A;
  --focus-ring: #FFB020; --shimmer-opacity: 1;
}

/* ── ICE THEME ── */
[data-theme="ice"] {
  --c-orange: #7FB8E8; --c-coral: #6FA8DE; --c-magenta: #5E9AD8;
  --c-violet: #8AB8E0; --c-blue: #4A90D9; --c-teal: #5ECFE0;
  --gradient-brand: linear-gradient(120deg, #7FB8E8 0%, #6FA8DE 22%, #5E9AD8 42%, #8AB8E0 62%, #4A90D9 82%, #5ECFE0 100%);
  --gradient-btn: linear-gradient(135deg, #7FB8E8, #5E9AD8);
  --gradient-btn-alt: linear-gradient(135deg, #4A90D9, #5ECFE0);
  --gradient-danger: linear-gradient(135deg, #5E9AD8, #385C81);
  --ink: #1E3A52; --bg: #F2F9FF; --bg-soft: #E1F0FB;
  --card: #FFFFFF; --input-bg: #FFFFFF;
  --muted: #88A5BC; --border: #CDE4F5;
  --shadow: 0 4px 16px rgba(30,58,82,0.1);
  --gradient-nav: linear-gradient(100deg, #3A6EA5 0%, #5A94C8 50%, #8ABCE0 100%);
  --nav-text: rgba(255,255,255,0.82); --nav-text-strong: #FFFFFF;
  --alert-bg: rgba(94,154,216,0.12); --alert-fg: #4673A2; --alert-border: rgba(94,154,216,0.32);
  --alert-success-bg: rgba(94,207,224,0.12); --alert-success-fg: #41909C; --alert-success-border: rgba(94,207,224,0.32);
  --badge-free-bg: rgba(94,207,224,0.16); --badge-free-fg: #41909C;
  --badge-occ-bg: rgba(94,154,216,0.16); --badge-occ-fg: #4673A2;
  --focus-ring: #7FB8E8; --shimmer-opacity: 1;
}

/* ── DESERT THEME ── */
[data-theme="desert"] {
  --c-orange: #D9A441; --c-coral: #CC8A4A; --c-magenta: #BB6B3C;
  --c-violet: #A0714E; --c-blue: #8A7A5E; --c-teal: #7FA05E;
  --gradient-brand: linear-gradient(120deg, #D9A441 0%, #CC8A4A 22%, #BB6B3C 42%, #A0714E 62%, #8A7A5E 82%, #7FA05E 100%);
  --gradient-btn: linear-gradient(135deg, #D9A441, #BB6B3C);
  --gradient-btn-alt: linear-gradient(135deg, #8A7A5E, #7FA05E);
  --gradient-danger: linear-gradient(135deg, #BB6B3C, #704024);
  --ink: #3E2E1A; --bg: #FAF3E3; --bg-soft: #F1E5CB;
  --card: #FFFDF6; --input-bg: #FFFFFF;
  --muted: #A6906E; --border: #E8D8B4;
  --shadow: 0 4px 16px rgba(62,46,26,0.1);
  --gradient-nav: linear-gradient(100deg, #8A6430 0%, #B08540 50%, #CCA050 100%);
  --nav-text: rgba(255,255,255,0.82); --nav-text-strong: #FFF0C8;
  --alert-bg: rgba(187,107,60,0.12); --alert-fg: #8C502D; --alert-border: rgba(187,107,60,0.32);
  --alert-success-bg: rgba(127,160,94,0.12); --alert-success-fg: #587041; --alert-success-border: rgba(127,160,94,0.32);
  --badge-free-bg: rgba(127,160,94,0.16); --badge-free-fg: #587041;
  --badge-occ-bg: rgba(187,107,60,0.16); --badge-occ-fg: #8C502D;
  --focus-ring: #D9A441; --shimmer-opacity: 1;
}

/* ── GALAXY THEME ── */
[data-theme="galaxy"] {
  --c-orange: #E8A24D; --c-coral: #E85D9F; --c-magenta: #B44DE8;
  --c-violet: #7B4DE8; --c-blue: #4D6EE8; --c-teal: #4DC9E8;
  --gradient-brand: linear-gradient(120deg, #E8A24D 0%, #E85D9F 22%, #B44DE8 42%, #7B4DE8 62%, #4D6EE8 82%, #4DC9E8 100%);
  --gradient-btn: linear-gradient(135deg, #E8A24D, #B44DE8);
  --gradient-btn-alt: linear-gradient(135deg, #4D6EE8, #4DC9E8);
  --gradient-danger: linear-gradient(135deg, #B44DE8, #6C2E8B);
  --ink: #EDEAFF; --bg: #070514; --bg-soft: #100C28;
  --card: #0D0A20; --input-bg: #141034;
  --muted: #8A84B0; --border: rgba(123,77,232,0.28);
  --shadow: 0 4px 22px rgba(0,0,0,0.55);
  --gradient-nav: linear-gradient(100deg, #05030F 0%, #161042 50%, #2A1466 100%);
  --nav-text: rgba(192,180,255,0.75); --nav-text-strong: #C0B4FF;
  --alert-bg: rgba(180,77,232,0.12); --alert-fg: #C0B4FF; --alert-border: rgba(180,77,232,0.32);
  --alert-success-bg: rgba(77,201,232,0.12); --alert-success-fg: #C0B4FF; --alert-success-border: rgba(77,201,232,0.32);
  --badge-free-bg: rgba(77,201,232,0.16); --badge-free-fg: #C0B4FF;
  --badge-occ-bg: rgba(180,77,232,0.16); --badge-occ-fg: #C0B4FF;
  --focus-ring: #E8A24D; --shimmer-opacity: 1;
}

/* ── MANGO THEME ── */
[data-theme="mango"] {
  --c-orange: #FFA726; --c-coral: #FF8A3C; --c-magenta: #F0692F;
  --c-violet: #E8A24D; --c-blue: #D88A2F; --c-teal: #8ABB4A;
  --gradient-brand: linear-gradient(120deg, #FFA726 0%, #FF8A3C 22%, #F0692F 42%, #E8A24D 62%, #D88A2F 82%, #8ABB4A 100%);
  --gradient-btn: linear-gradient(135deg, #FFA726, #F0692F);
  --gradient-btn-alt: linear-gradient(135deg, #D88A2F, #8ABB4A);
  --gradient-danger: linear-gradient(135deg, #F0692F, #903F1C);
  --ink: #3E2A10; --bg: #FFF8E8; --bg-soft: #FDECC8;
  --card: #FFFEF8; --input-bg: #FFFFFF;
  --muted: #B09068; --border: #F5DFA8;
  --shadow: 0 4px 16px rgba(62,42,16,0.1);
  --gradient-nav: linear-gradient(100deg, #F08A00 0%, #FFA726 50%, #FFC14D 100%);
  --nav-text: rgba(255,255,255,0.82); --nav-text-strong: #FFFFFF;
  --alert-bg: rgba(240,105,47,0.12); --alert-fg: #B44E23; --alert-border: rgba(240,105,47,0.32);
  --alert-success-bg: rgba(138,187,74,0.12); --alert-success-fg: #608233; --alert-success-border: rgba(138,187,74,0.32);
  --badge-free-bg: rgba(138,187,74,0.16); --badge-free-fg: #608233;
  --badge-occ-bg: rgba(240,105,47,0.16); --badge-occ-fg: #B44E23;
  --focus-ring: #FFA726; --shimmer-opacity: 1;
}

/* ── MINT THEME ── */
[data-theme="mint"] {
  --c-orange: #7FC98A; --c-coral: #5EBB8A; --c-magenta: #3DAA8A;
  --c-violet: #5EA0B8; --c-blue: #4A90A8; --c-teal: #2FBB9E;
  --gradient-brand: linear-gradient(120deg, #7FC98A 0%, #5EBB8A 22%, #3DAA8A 42%, #5EA0B8 62%, #4A90A8 82%, #2FBB9E 100%);
  --gradient-btn: linear-gradient(135deg, #7FC98A, #3DAA8A);
  --gradient-btn-alt: linear-gradient(135deg, #4A90A8, #2FBB9E);
  --gradient-danger: linear-gradient(135deg, #3DAA8A, #246652);
  --ink: #1E3A2E; --bg: #F0FAF4; --bg-soft: #DEF2E6;
  --card: #FFFFFF; --input-bg: #FFFFFF;
  --muted: #84A894; --border: #C8E8D4;
  --shadow: 0 4px 16px rgba(30,58,46,0.1);
  --gradient-nav: linear-gradient(100deg, #2F8A5E 0%, #3DAA74 50%, #5ECC94 100%);
  --nav-text: rgba(255,255,255,0.82); --nav-text-strong: #FFFFFF;
  --alert-bg: rgba(61,170,138,0.12); --alert-fg: #2D7F67; --alert-border: rgba(61,170,138,0.32);
  --alert-success-bg: rgba(47,187,158,0.12); --alert-success-fg: #20826E; --alert-success-border: rgba(47,187,158,0.32);
  --badge-free-bg: rgba(47,187,158,0.16); --badge-free-fg: #20826E;
  --badge-occ-bg: rgba(61,170,138,0.16); --badge-occ-fg: #2D7F67;
  --focus-ring: #7FC98A; --shimmer-opacity: 1;
}

/* ── ROSEGOLD THEME ── */
[data-theme="rosegold"] {
  --c-orange: #D9A05A; --c-coral: #E08A8A; --c-magenta: #D06A7E;
  --c-violet: #C9848A; --c-blue: #B87A94; --c-teal: #C9A05E;
  --gradient-brand: linear-gradient(120deg, #D9A05A 0%, #E08A8A 22%, #D06A7E 42%, #C9848A 62%, #B87A94 82%, #C9A05E 100%);
  --gradient-btn: linear-gradient(135deg, #D9A05A, #D06A7E);
  --gradient-btn-alt: linear-gradient(135deg, #B87A94, #C9A05E);
  --gradient-danger: linear-gradient(135deg, #D06A7E, #7C3F4B);
  --ink: #4A2E30; --bg: #FBF2F0; --bg-soft: #F5E2DE;
  --card: #FFFDFC; --input-bg: #FFFFFF;
  --muted: #B0908E; --border: #EED4CC;
  --shadow: 0 4px 16px rgba(74,46,48,0.1);
  --gradient-nav: linear-gradient(100deg, #B06A62 0%, #D08A7A 50%, #E8B49A 100%);
  --nav-text: rgba(255,255,255,0.82); --nav-text-strong: #FFF0E8;
  --alert-bg: rgba(208,106,126,0.12); --alert-fg: #9C4F5E; --alert-border: rgba(208,106,126,0.32);
  --alert-success-bg: rgba(201,160,94,0.12); --alert-success-fg: #8C7041; --alert-success-border: rgba(201,160,94,0.32);
  --badge-free-bg: rgba(201,160,94,0.16); --badge-free-fg: #8C7041;
  --badge-occ-bg: rgba(208,106,126,0.16); --badge-occ-fg: #9C4F5E;
  --focus-ring: #D9A05A; --shimmer-opacity: 1;
}

/* ── MIDNIGHT THEME ── */
[data-theme="midnight"] {
  --c-orange: #E8B45A; --c-coral: #E86A7E; --c-magenta: #C95B9F;
  --c-violet: #7B6EE8; --c-blue: #3E6FD9; --c-teal: #4DA8C9;
  --gradient-brand: linear-gradient(120deg, #E8B45A 0%, #E86A7E 22%, #C95B9F 42%, #7B6EE8 62%, #3E6FD9 82%, #4DA8C9 100%);
  --gradient-btn: linear-gradient(135deg, #E8B45A, #C95B9F);
  --gradient-btn-alt: linear-gradient(135deg, #3E6FD9, #4DA8C9);
  --gradient-danger: linear-gradient(135deg, #C95B9F, #78365F);
  --ink: #E4ECFA; --bg: #050A18; --bg-soft: #0B1530;
  --card: #091126; --input-bg: #0F1A3C;
  --muted: #7E8AAD; --border: rgba(62,111,217,0.25);
  --shadow: 0 4px 22px rgba(0,0,0,0.55);
  --gradient-nav: linear-gradient(100deg, #030712 0%, #0A1838 50%, #122A5E 100%);
  --nav-text: rgba(154,188,240,0.75); --nav-text-strong: #9ABCF0;
  --alert-bg: rgba(201,91,159,0.12); --alert-fg: #9ABCF0; --alert-border: rgba(201,91,159,0.32);
  --alert-success-bg: rgba(77,168,201,0.12); --alert-success-fg: #9ABCF0; --alert-success-border: rgba(77,168,201,0.32);
  --badge-free-bg: rgba(77,168,201,0.16); --badge-free-fg: #9ABCF0;
  --badge-occ-bg: rgba(201,91,159,0.16); --badge-occ-fg: #9ABCF0;
  --focus-ring: #E8B45A; --shimmer-opacity: 1;
}

/* ── TOXIC THEME ── */
[data-theme="toxic"] {
  --c-orange: #D4FF3C; --c-coral: #A8E82F; --c-magenta: #8ACC2F;
  --c-violet: #9D4DE8; --c-blue: #7B2FC9; --c-teal: #3CFF8A;
  --gradient-brand: linear-gradient(120deg, #D4FF3C 0%, #A8E82F 22%, #8ACC2F 42%, #9D4DE8 62%, #7B2FC9 82%, #3CFF8A 100%);
  --gradient-btn: linear-gradient(135deg, #D4FF3C, #8ACC2F);
  --gradient-btn-alt: linear-gradient(135deg, #7B2FC9, #3CFF8A);
  --gradient-danger: linear-gradient(135deg, #8ACC2F, #527A1C);
  --ink: #EEFFDD; --bg: #0C1204; --bg-soft: #182408;
  --card: #141E08; --input-bg: #1C2C0A;
  --muted: #8AA070; --border: rgba(212,255,60,0.25);
  --shadow: 0 4px 22px rgba(0,0,0,0.55);
  --gradient-nav: linear-gradient(100deg, #0A0F03 0%, #1E2E06 50%, #38520C 100%);
  --nav-text: rgba(212,255,106,0.75); --nav-text-strong: #D4FF6A;
  --alert-bg: rgba(138,204,47,0.12); --alert-fg: #D4FF6A; --alert-border: rgba(138,204,47,0.32);
  --alert-success-bg: rgba(60,255,138,0.12); --alert-success-fg: #D4FF6A; --alert-success-border: rgba(60,255,138,0.32);
  --badge-free-bg: rgba(60,255,138,0.16); --badge-free-fg: #D4FF6A;
  --badge-occ-bg: rgba(138,204,47,0.16); --badge-occ-fg: #D4FF6A;
  --focus-ring: #D4FF3C; --shimmer-opacity: 1;
}

/* ── PEACOCK THEME ── */
[data-theme="peacock"] {
  --c-orange: #E8B45A; --c-coral: #E8767E; --c-magenta: #3DAABB;
  --c-violet: #4A7BC9; --c-blue: #2F6EA8; --c-teal: #1FBBAA;
  --gradient-brand: linear-gradient(120deg, #E8B45A 0%, #E8767E 22%, #3DAABB 42%, #4A7BC9 62%, #2F6EA8 82%, #1FBBAA 100%);
  --gradient-btn: linear-gradient(135deg, #E8B45A, #3DAABB);
  --gradient-btn-alt: linear-gradient(135deg, #2F6EA8, #1FBBAA);
  --gradient-danger: linear-gradient(135deg, #3DAABB, #246670);
  --ink: #E0F5F2; --bg: #04121A; --bg-soft: #0A2430;
  --card: #081E28; --input-bg: #0C2A38;
  --muted: #6E9AA8; --border: rgba(31,187,170,0.25);
  --shadow: 0 4px 22px rgba(0,0,0,0.55);
  --gradient-nav: linear-gradient(100deg, #031017 0%, #0A303E 50%, #0E4A5A 100%);
  --nav-text: rgba(138,224,212,0.75); --nav-text-strong: #8AE0D4;
  --alert-bg: rgba(61,170,187,0.12); --alert-fg: #8AE0D4; --alert-border: rgba(61,170,187,0.32);
  --alert-success-bg: rgba(31,187,170,0.12); --alert-success-fg: #8AE0D4; --alert-success-border: rgba(31,187,170,0.32);
  --badge-free-bg: rgba(31,187,170,0.16); --badge-free-fg: #8AE0D4;
  --badge-occ-bg: rgba(61,170,187,0.16); --badge-occ-fg: #8AE0D4;
  --focus-ring: #E8B45A; --shimmer-opacity: 1;
}

/* ── CHOCOLATE THEME ── */
[data-theme="chocolate"] {
  --c-orange: #D9A05A; --c-coral: #C97B4A; --c-magenta: #B5654A;
  --c-violet: #8A5C43; --c-blue: #7A5566; --c-teal: #8A9E5E;
  --gradient-brand: linear-gradient(120deg, #D9A05A 0%, #C97B4A 22%, #B5654A 42%, #8A5C43 62%, #7A5566 82%, #8A9E5E 100%);
  --gradient-btn: linear-gradient(135deg, #D9A05A, #B5654A);
  --gradient-btn-alt: linear-gradient(135deg, #7A5566, #8A9E5E);
  --gradient-danger: linear-gradient(135deg, #B5654A, #6C3C2C);
  --ink: #F2E6D8; --bg: #150C06; --bg-soft: #28180E;
  --card: #20130B; --input-bg: #2E1C10;
  --muted: #A88E78; --border: rgba(217,160,90,0.24);
  --shadow: 0 4px 22px rgba(0,0,0,0.55);
  --gradient-nav: linear-gradient(100deg, #100904 0%, #301A0C 50%, #523018 100%);
  --nav-text: rgba(240,200,154,0.75); --nav-text-strong: #F0C89A;
  --alert-bg: rgba(181,101,74,0.12); --alert-fg: #F0C89A; --alert-border: rgba(181,101,74,0.32);
  --alert-success-bg: rgba(138,158,94,0.12); --alert-success-fg: #F0C89A; --alert-success-border: rgba(138,158,94,0.32);
  --badge-free-bg: rgba(138,158,94,0.16); --badge-free-fg: #F0C89A;
  --badge-occ-bg: rgba(181,101,74,0.16); --badge-occ-fg: #F0C89A;
  --focus-ring: #D9A05A; --shimmer-opacity: 1;
}

/* ── GRAPE THEME ── */
[data-theme="grape"] {
  --c-orange: #E8A24D; --c-coral: #D85BAA; --c-magenta: #B44DC9;
  --c-violet: #8E3DBB; --c-blue: #6E4DE8; --c-teal: #4DA8B8;
  --gradient-brand: linear-gradient(120deg, #E8A24D 0%, #D85BAA 22%, #B44DC9 42%, #8E3DBB 62%, #6E4DE8 82%, #4DA8B8 100%);
  --gradient-btn: linear-gradient(135deg, #E8A24D, #B44DC9);
  --gradient-btn-alt: linear-gradient(135deg, #6E4DE8, #4DA8B8);
  --gradient-danger: linear-gradient(135deg, #B44DC9, #6C2E78);
  --ink: #3A1E4A; --bg: #F8F0FC; --bg-soft: #EEDDF8;
  --card: #FFFFFF; --input-bg: #FFFFFF;
  --muted: #A488B8; --border: #E4CCF0;
  --shadow: 0 4px 16px rgba(58,30,74,0.1);
  --gradient-nav: linear-gradient(100deg, #6A2496 0%, #8E3DBB 50%, #B45BD8 100%);
  --nav-text: rgba(255,255,255,0.82); --nav-text-strong: #FFFFFF;
  --alert-bg: rgba(180,77,201,0.12); --alert-fg: #873996; --alert-border: rgba(180,77,201,0.32);
  --alert-success-bg: rgba(77,168,184,0.12); --alert-success-fg: #357580; --alert-success-border: rgba(77,168,184,0.32);
  --badge-free-bg: rgba(77,168,184,0.16); --badge-free-fg: #357580;
  --badge-occ-bg: rgba(180,77,201,0.16); --badge-occ-fg: #873996;
  --focus-ring: #E8A24D; --shimmer-opacity: 1;
}

/* ── MONO THEME ── */
[data-theme="mono"] {
  --c-orange: #E0E0E0; --c-coral: #BDBDBD; --c-magenta: #9E9E9E;
  --c-violet: #787878; --c-blue: #5A5A5A; --c-teal: #C8C8C8;
  --gradient-brand: linear-gradient(120deg, #E0E0E0 0%, #BDBDBD 22%, #9E9E9E 42%, #787878 62%, #5A5A5A 82%, #C8C8C8 100%);
  --gradient-btn: linear-gradient(135deg, #E0E0E0, #9E9E9E);
  --gradient-btn-alt: linear-gradient(135deg, #5A5A5A, #C8C8C8);
  --gradient-danger: linear-gradient(135deg, #9E9E9E, #5E5E5E);
  --ink: #F0F0F0; --bg: #0A0A0A; --bg-soft: #1A1A1A;
  --card: #141414; --input-bg: #1E1E1E;
  --muted: #8A8A8A; --border: rgba(224,224,224,0.18);
  --shadow: 0 4px 22px rgba(0,0,0,0.55);
  --gradient-nav: linear-gradient(100deg, #050505 0%, #1A1A1A 50%, #333333 100%);
  --nav-text: rgba(255,255,255,0.75); --nav-text-strong: #FFFFFF;
  --alert-bg: rgba(158,158,158,0.12); --alert-fg: #FFFFFF; --alert-border: rgba(158,158,158,0.32);
  --alert-success-bg: rgba(200,200,200,0.12); --alert-success-fg: #FFFFFF; --alert-success-border: rgba(200,200,200,0.32);
  --badge-free-bg: rgba(200,200,200,0.16); --badge-free-fg: #FFFFFF;
  --badge-occ-bg: rgba(158,158,158,0.16); --badge-occ-fg: #FFFFFF;
  --focus-ring: #E0E0E0; --shimmer-opacity: 1;
}

/* ── RANGOLI THEME ── */
[data-theme="rangoli"] {
  --c-orange: #F0973A; --c-coral: #EA5B6F; --c-magenta: #C2296B;
  --c-violet: #7B3FA0; --c-blue: #3E6FD9; --c-teal: #17998C;
  --gradient-brand: linear-gradient(120deg, #F0973A 0%, #EA5B6F 22%, #C2296B 42%, #7B3FA0 62%, #3E6FD9 82%, #17998C 100%);
  --gradient-btn: linear-gradient(135deg, #F0973A, #C2296B);
  --gradient-btn-alt: linear-gradient(135deg, #3E6FD9, #17998C);
  --gradient-danger: linear-gradient(135deg, #C2296B, #741840);
  --ink: #2E1A28; --bg: #FFF9F2; --bg-soft: #FDEDE2;
  --card: #FFFFFF; --input-bg: #FFFFFF;
  --muted: #A08A8E; --border: #F5DCC8;
  --shadow: 0 4px 16px rgba(46,26,40,0.1);
  --gradient-nav: linear-gradient(100deg, #C2296B 0%, #E85B3D 50%, #F0973A 100%);
  --nav-text: rgba(255,255,255,0.82); --nav-text-strong: #FFFFFF;
  --alert-bg: rgba(194,41,107,0.12); --alert-fg: #911E50; --alert-border: rgba(194,41,107,0.32);
  --alert-success-bg: rgba(23,153,140,0.12); --alert-success-fg: #106B62; --alert-success-border: rgba(23,153,140,0.32);
  --badge-free-bg: rgba(23,153,140,0.16); --badge-free-fg: #106B62;
  --badge-occ-bg: rgba(194,41,107,0.16); --badge-occ-fg: #911E50;
  --focus-ring: #F0973A; --shimmer-opacity: 1;
}

/* Theme signature touches */
[data-theme="matrix"] body { background: repeating-linear-gradient(0deg, transparent 0 23px, rgba(0,255,106,0.03) 23px 24px), #020A04; background-attachment: fixed; }
[data-theme="cyberpunk"] .brand-gradient-text { filter: drop-shadow(0 0 8px rgba(252,238,10,0.4)); }
[data-theme="cyberpunk"] .btn-primary { box-shadow: 0 0 12px rgba(252,238,10,0.35); }
[data-theme="fire"] .brand-gradient-text { filter: drop-shadow(0 0 10px rgba(255,107,53,0.4)); }
[data-theme="galaxy"] body { background: radial-gradient(circle at 20% 15%, rgba(180,77,232,0.12), transparent 45%), radial-gradient(circle at 80% 70%, rgba(77,110,232,0.12), transparent 45%), #070514; background-attachment: fixed; }
[data-theme="toxic"] .btn-primary { box-shadow: 0 0 14px rgba(212,255,60,0.4); }
[data-theme="matrix"] .brand-gradient-text { filter: drop-shadow(0 0 8px rgba(0,255,106,0.45)); }
[data-theme="peacock"] .card { border: 1px solid rgba(31,187,170,0.22); }
[data-theme="chocolate"] .card { border: 1px solid rgba(217,160,90,0.2); }
[data-theme="mono"] .brand-gradient-text { filter: grayscale(0.2); }

/* ── Theme picker panel ──────────────────────────────────────────────── */
.theme-wrap { position: relative; display: inline-flex; }
.theme-wrap-floating { position: fixed; top: 14px; right: 14px; z-index: 300; }
.theme-panel {
  position: absolute;
  top: calc(100% + 8px);
  right: 0;
  z-index: 400;
  width: 300px;
  max-height: 380px;
  overflow-y: auto;
  background: var(--card);
  color: var(--ink);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  box-shadow: var(--shadow), 0 12px 40px rgba(0,0,0,0.25);
  padding: 0.5rem;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0.3rem;
}
.theme-panel[hidden] { display: none; }
.theme-option {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  padding: 0.45rem 0.55rem;
  border: 1px solid transparent;
  border-radius: 8px;
  background: transparent;
  color: inherit;
  font: inherit;
  font-size: 0.82rem;
  cursor: pointer;
  text-align: left;
  white-space: nowrap;
  overflow: hidden;
}
.theme-option:hover { background: var(--bg-soft); }
.theme-option.active {
  border-color: var(--focus-ring);
  background: var(--bg-soft);
  font-weight: 700;
}
.theme-option-dot {
  flex: 0 0 auto;
  width: 16px;
  height: 16px;
  border-radius: 50%;
  box-shadow: inset 0 0 0 1px rgba(0,0,0,0.15);
}
.theme-option-name { overflow: hidden; text-overflow: ellipsis; }
@media (max-width: 480px) {
  .theme-panel { width: 260px; grid-template-columns: 1fr 1fr; max-height: 320px; }
}

/* Floating wrapper (login page): give the button a solid card look */
.theme-wrap-floating .theme-toggle {
  background: var(--card);
  color: var(--ink);
  border: 1px solid var(--border);
  box-shadow: var(--shadow);
}
.theme-wrap-floating .theme-toggle:hover { background: var(--bg-soft); }

/* ── Item shortcuts bar (below search on order screen) ─────────────────── */
.shortcut-bar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.35rem;
  margin: 0.5rem 0 0.25rem;
}
.shortcut-chips { display: contents; }
.shortcut-chip {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.35rem;
  padding: 0.28rem 0.3rem 0.28rem 0.6rem;
  border-radius: 8px;
  background: var(--bg-soft);
  border: 1px solid var(--border);
  font-size: 0.78rem;
  cursor: pointer;
  user-select: none;
  max-width: 100%;
  min-width: 4.5rem;
  text-align: center;
  position: relative;
}
.shortcut-chip:active { transform: scale(0.96); }
.shortcut-chip b { color: var(--c-orange); text-transform: lowercase; }
.shortcut-chip.sc-editing { padding-right: 1.6rem; }
.shortcut-chip .sc-del {
  position: absolute;
  top: 0.15rem; right: 0.15rem;
  border: none;
  background: transparent;
  color: var(--muted);
  cursor: pointer;
  font-size: 0.75rem;
  padding: 0.1rem 0.35rem;
  border-radius: 50%;
  line-height: 1;
}
.shortcut-chip .sc-del:hover { color: var(--c-coral); background: rgba(128,128,128,0.12); }
.shortcut-toggle { flex: 0 0 auto; }
.shortcut-form {
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem;
  margin: 0.35rem 0 0.5rem;
  padding: 0.5rem;
  border: 1px dashed var(--border);
  border-radius: var(--radius, 10px);
  background: var(--bg-soft);
}
/* The HTML [hidden] attribute is `display:none`, but our display:flex above
   was overriding it. Restore hidden behaviour so the form is truly gone
   until edit mode turns on. */
.shortcut-form[hidden] { display: none !important; }
.shortcut-form input[type="text"] { flex: 1 1 130px; min-width: 0; }
.shortcut-form select { flex: 2 1 180px; min-width: 0; max-width: 100%; }
.table-move-cell { white-space: nowrap; }
.table-move-cell form { margin: 0 1px; }

/* Available seats badge next to the Tables heading */
.seats-badge {
  display: inline-block;
  font-size: 0.55em;
  font-weight: 600;
  vertical-align: middle;
  margin-left: 0.5rem;
  padding: 0.25em 0.7em;
  border-radius: 999px;
  background: var(--badge-free-bg, rgba(23,153,140,0.14));
  color: var(--badge-free-fg, #17998C);
  -webkit-text-fill-color: var(--badge-free-fg, #17998C); /* override gradient-text clip */
  letter-spacing: 0;
}

/* Edit-mode chips wiggle-ready look: dashed border hint */
.shortcut-chip.sc-editing {
  border-style: dashed;
  border-color: var(--c-coral);
  cursor: default;
}

/* ── Shortcut chip sizes (per-device staff preference) ─────────────────── */
/* Chip size scales via CSS variable set by the slider (1..5 → 0.7×..1.6×) */
.shortcut-chips { --sc-scale: 1; }
.shortcut-chips .shortcut-chip { font-size: calc(0.78rem * var(--sc-scale)); }
.shortcut-chips .sc-del { font-size: calc(0.75rem * var(--sc-scale)); }

.sc-size-row {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  flex: 1 1 100%;
  margin-top: 0.35rem;
}
.sc-size-label { font-size: 0.78rem; opacity: 0.75; }
#scSizeSlider { flex: 1; min-width: 100px; accent-color: var(--c-orange); }
.sc-size-value {
  font-variant-numeric: tabular-nums;
  font-weight: 600;
  min-width: 2ch;
  text-align: center;
  color: var(--c-orange);
}

/* ── Order action buttons (Clear / Undo / Redo) ──────────────────────── */
.order-actions-row {
  display: flex;
  gap: 0.4rem;
  flex-wrap: wrap;
  margin: 0.5rem 0 0.35rem;
}
.order-actions-row .btn { flex: 0 0 auto; }

/* ── Live sitting timer on occupied tables ───────────────────────────── */
.table-timer {
  display: inline-block;
  margin: 0.25rem 0;
  padding: 0.15rem 0.55rem;
  border-radius: 999px;
  background: color-mix(in srgb, var(--c-teal, #14b8a6) 15%, transparent);
  color: var(--c-teal, #0d9488);
  font-size: 0.78rem;
  font-weight: 600;
  font-variant-numeric: tabular-nums;
}
.table-timer.timer-warn {
  background: color-mix(in srgb, var(--c-orange, #F0973A) 18%, transparent);
  color: var(--c-orange, #C77400);
}
.table-timer.timer-urgent {
  background: color-mix(in srgb, var(--c-coral, #EA5B6F) 22%, transparent);
  color: var(--c-coral, #C2296B);
}

/* ── Admin floor layout editor ────────────────────────────────────────── */
.layout-toolbar {
  display: flex;
  gap: 0.5rem;
  align-items: center;
  margin: 0.75rem 0 1rem;
  flex-wrap: wrap;
}
.floor-plan {
  --grid-w: 20; --grid-h: 14;
  display: grid;
  grid-template-columns: repeat(var(--grid-w), 1fr);
  grid-template-rows: repeat(var(--grid-h), minmax(2.4rem, 1fr));
  gap: 0;
  background:
    repeating-linear-gradient(0deg,  transparent 0, transparent calc((100% / var(--grid-h)) - 1px), var(--border) calc((100% / var(--grid-h)) - 1px), var(--border) calc(100% / var(--grid-h))),
    repeating-linear-gradient(90deg, transparent 0, transparent calc((100% / var(--grid-w)) - 1px), var(--border) calc((100% / var(--grid-w)) - 1px), var(--border) calc(100% / var(--grid-w))),
    var(--bg-soft);
  border: 1px solid var(--border);
  border-radius: 8px;
  min-height: 65vh;
  padding: 0;
  overflow: hidden;
  user-select: none;
  touch-action: none;
}
.grid-input {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  font-size: 0.85rem;
  color: var(--muted);
}
.grid-input input { width: 4rem; padding: 0.3rem 0.4rem; }
.floor-tile {
  position: relative;
  border-radius: 6px;
  background: color-mix(in srgb, var(--c-teal, #17998C) 12%, var(--card));
  border: 1.5px solid var(--c-teal);
  color: var(--ink);
  cursor: grab;
  overflow: hidden;
  transition: box-shadow 0.15s;
  margin: 2px;
  /* Fill the entire assigned grid area — never shrink to content, so an
     empty-text tile still shows at its full admin-set size. */
  min-width: 0;
  min-height: 0;
  width: auto;
  height: auto;
}
.floor-tile:hover { box-shadow: 0 4px 14px rgba(0,0,0,0.15); }
.floor-tile.dragging { cursor: grabbing; z-index: 10; opacity: 0.9; box-shadow: 0 6px 18px rgba(0,0,0,0.25); }
.floor-tile-inner {
  position: absolute; inset: 0;
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  gap: 0.15rem;
  pointer-events: none;
}
.floor-tile-name { font-weight: 800; font-size: 0.95rem; }
.floor-tile-cap  { font-size: 0.72rem; opacity: 0.75; }
.floor-tile-resize {
  position: absolute; bottom: 0; right: 0;
  width: 16px; height: 16px;
  cursor: nwse-resize;
  background: linear-gradient(135deg, transparent 50%, var(--c-orange) 50%);
  border-bottom-right-radius: 5px;
}

/* Staff dashboard — floor plan mode (when admin has set layout coords) */
.table-grid.floor-plan-mode {
  --grid-w: 20;
  display: grid;
  grid-template-columns: repeat(var(--grid-w), 1fr);
  grid-auto-rows: minmax(2.6rem, 1fr);
  gap: 0.35rem;
  background: var(--bg-soft);   /* no grid lines on the staff view */
  padding: 0.5rem;
  border-radius: 8px;
  min-height: 55vh;
}
/* Tiles fill their assigned grid span completely — no shrinking to fit text.
   Even a table with no items shows at its full admin-set size. */
.table-grid.floor-plan-mode .table-card {
  padding: 0.4rem;
  min-height: 0;
  height: 100%;
  width: 100%;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 0.15rem;
}
.table-grid.floor-plan-mode .table-card .table-number { font-size: 1.05rem; }

/* ── Admin timing card on order history ──────────────────────────────── */
.timing-card { background: color-mix(in srgb, var(--c-teal, #17998C) 4%, var(--card)); }
.timing-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 0.6rem;
  margin-top: 0.5rem;
}
.timing-cell {
  display: flex;
  flex-direction: column;
  padding: 0.6rem 0.75rem;
  border-radius: 6px;
  background: var(--bg-soft);
  border: 1px solid var(--border);
}
.timing-cell.timing-highlight {
  background: color-mix(in srgb, var(--c-orange, #F0973A) 10%, var(--card));
  border-color: color-mix(in srgb, var(--c-orange, #F0973A) 35%, transparent);
}
.timing-label { font-size: 0.75rem; opacity: 0.75; margin-bottom: 0.2rem; }
.timing-value { font-size: 0.95rem; font-weight: 600; font-variant-numeric: tabular-nums; }

/* ── Space below shortcut bar (separates from category pills) ────────── */
.shortcut-bar { margin-bottom: 0.9rem !important; }

/* ── Bold + family emoji for capacity ──────────────────────────────────── */
.table-cap { display: inline-flex; align-items: center; gap: 0.3rem; }
.table-cap-emoji {
  font-size: 1.05em;
  font-family: "Apple Color Emoji","Segoe UI Emoji","Noto Color Emoji",sans-serif;
}
.table-cap strong { font-weight: 800; font-size: 1.02em; }

/* ── Parcel dashboard ──────────────────────────────────────────────────── */
.parcel-billed-list {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  margin-top: 0.5rem;
}
.parcel-billed-row {
  display: grid;
  grid-template-columns: 1fr auto auto auto auto;
  gap: 0.65rem;
  align-items: center;
  padding: 0.6rem 0.8rem;
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: 8px;
  box-shadow: var(--shadow);
}
.parcel-billed-row.is-unpaid {
  border-color: color-mix(in srgb, var(--c-coral, #EA5B6F) 45%, transparent);
  background: color-mix(in srgb, var(--c-coral, #EA5B6F) 6%, var(--card));
}
.pb-main { min-width: 0; }
.pb-name { font-weight: 600; font-size: 0.95rem; }
.pb-meta { font-size: 0.75rem; }
.pb-total {
  font-weight: 800;
  font-size: 1.05rem;
  color: var(--c-magenta);
  font-variant-numeric: tabular-nums;
}
.pb-paid-badge {
  padding: 0.2rem 0.55rem;
  border-radius: 999px;
  font-size: 0.75rem;
  font-weight: 700;
  background: color-mix(in srgb, var(--c-teal, #17998C) 15%, transparent);
  color: var(--c-teal, #0d9488);
}
.parcel-billed-row.is-unpaid .pb-paid-badge {
  background: color-mix(in srgb, var(--c-coral, #EA5B6F) 15%, transparent);
  color: var(--c-coral, #C2296B);
}
.toggle-paid {
  background: var(--gradient-btn);
  color: #fff;
  border: none;
}
.parcel-billed-row.is-unpaid .toggle-paid {
  animation: pulse-cta 2s ease-in-out infinite;
}
@keyframes pulse-cta {
  0%, 100% { transform: scale(1); }
  50%      { transform: scale(1.04); }
}
@media (max-width: 560px) {
  .parcel-billed-row {
    grid-template-columns: 1fr auto;
    grid-template-areas:
      "main total"
      "badge badge"
      "toggle print";
    gap: 0.4rem;
  }
  .pb-main { grid-area: main; }
  .pb-total { grid-area: total; }
  .pb-paid-badge { grid-area: badge; justify-self: start; }
  .parcel-billed-row .toggle-paid { grid-area: toggle; }
  .parcel-billed-row a { grid-area: print; }
}

/* ── Order panel actions: Clear/Undo/Redo · Bill on the right ─────────── */
.gen-bill-inline {
  margin-left: auto;      /* pushes it to the right end of the action row */
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  padding: 0.32rem 0.7rem;    /* matches btn-small height, not oversized */
  white-space: nowrap;
  font-size: 0.85rem;
}
.gen-bill-inline strong {
  font-variant-numeric: tabular-nums;
  font-size: 1em;
  background: rgba(255,255,255,0.22);
  padding: 0.05rem 0.4rem;
  border-radius: 5px;
}
@media (max-width: 480px) {
  .gen-bill-inline { padding: 0.32rem 0.6rem; }
}

/* Rangoli-quote line on the printed bill — italic, softly styled, prints too */
.receipt-quote {
  font-style: italic;
  text-align: center;
  margin: 0.6rem 0.25rem 0.4rem;
  font-size: 0.85rem;
  line-height: 1.35;
  color: #555;
}

/* ═══════════════════════════════════════════════════════════════════════
   FULL RESPONSIVE PASS — phone (<640) / tablet (640-1024) / PC (>1024)
   Everything below refines the base styles so every page works on every
   screen: nav, tables grid, order screen, parcels, admin pages, bill.
   ═══════════════════════════════════════════════════════════════════════ */

/* ── Base: fluid type + safe tap targets everywhere ─────────────────── */
html { -webkit-text-size-adjust: 100%; }
input, select, button, textarea { font-size: max(16px, 1em); } /* stops iOS zoom-on-focus */
img, svg, video { max-width: 100%; height: auto; }

.container { width: 100%; padding-left: clamp(0.6rem, 2vw, 1.5rem); padding-right: clamp(0.6rem, 2vw, 1.5rem); }

/* ── Top navigation: wraps cleanly, horizontal scroll as last resort ── */
.topnav {
  flex-wrap: wrap;
  gap: 0.4rem 0.75rem;
  padding: 0.55rem clamp(0.6rem, 2vw, 1.25rem);
}
.topnav-links {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 0.25rem 0.6rem;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}
.topnav-links a { white-space: nowrap; padding: 0.35rem 0.45rem; }

@media (max-width: 640px) {
  .topnav-brand { font-size: 0.95rem; flex-basis: 100%; }
  .topnav-links { flex-basis: 100%; justify-content: flex-start; }
}

/* ── PHONE (<640px) ─────────────────────────────────────────────────── */
@media (max-width: 640px) {
  body { font-size: 0.95rem; }
  h1 { font-size: 1.35rem; }
  h2 { font-size: 1.1rem; }

  .card { padding: 0.8rem; }

  /* Tables grid: 2-3 per row, bigger tap area */
  .table-grid:not(.floor-plan-mode) {
    grid-template-columns: repeat(auto-fill, minmax(105px, 1fr));
    gap: 0.5rem;
  }
  .table-card { padding: 0.8rem 0.5rem 0.7rem; }
  .table-number { font-size: 1.15rem; }

  /* Floor plan mode: keep admin layout but scale down */
  .table-grid.floor-plan-mode {
    grid-auto-rows: minmax(2rem, 1fr);
    gap: 0.25rem;
    padding: 0.35rem;
    min-height: 45vh;
  }
  .table-grid.floor-plan-mode .table-card .table-number { font-size: 0.85rem; }
  .table-grid.floor-plan-mode .table-order-info { font-size: 0.75rem; }
  .table-timer { font-size: 0.68rem; padding: 0.1rem 0.4rem; }

  /* Order screen: stacked, order panel first (already 1-col at 760px) */
  .order-layout { gap: 0.6rem; }

  /* Menu grid rows: tighter */
  .menu-grid-item { padding: 0.5rem 0.55rem; }
  .qty-stepper .btn { min-width: 2.2rem; min-height: 2.2rem; }

  /* Order table: keep as a compact real table inside its column */
  .order-table { width: 100%; table-layout: fixed; }
  .order-table th, .order-table td { padding: 0.4rem 0.45rem; font-size: 0.85rem; overflow-wrap: break-word; }

  /* Custom item form: compact rows that fit the narrow order column */
  .custom-item-inputs { flex-wrap: wrap; gap: 0.3rem; }
  .custom-item-inputs input { flex: 1 1 100%; min-width: 0; }
  .custom-item-inputs .btn { flex: 1 1 100%; }

  /* Action row: tight gaps; Bill stays inline on the right */
  .order-actions-row { gap: 0.3rem; }

  /* Finalize form fields stack */
  .finalize-form { flex-direction: column; }
  .finalize-form .form-group { width: 100%; }

  /* Shortcut form: stack */
  .shortcut-form input[type="text"], .shortcut-form select { flex-basis: 100%; }

  /* Parcel billed rows already stack at 560px — align btns full width */
  .parcel-billed-row .btn { width: 100%; text-align: center; }

  /* Admin tables: wrap in a scroller; never force page wider than screen */
  .admin-table-wrap, .table-responsive { overflow-x: auto; -webkit-overflow-scrolling: touch; }
  .admin-table-wrap table.table, .table-responsive table.table { min-width: 560px; }

  /* Admin layout editor: smaller grid rows so whole floor fits */
  .floor-plan { grid-template-rows: repeat(var(--grid-h), minmax(1.6rem, 1fr)); min-height: 55vh; }
  .floor-tile-name { font-size: 0.75rem; }
  .floor-tile-cap { font-size: 0.6rem; }
  .layout-toolbar { gap: 0.35rem; }
  .layout-toolbar .btn { flex: 1 1 auto; }

  /* Bill print page: receipt full width */
  .receipt { width: 100% !important; max-width: 100%; }
}

/* ── TABLET (641-1024px) ────────────────────────────────────────────── */
@media (min-width: 641px) and (max-width: 1024px) {
  .container { max-width: 100%; }

  /* Order screen: keep 2 columns but rebalance — order panel narrower */
  .order-layout { grid-template-columns: 5fr 6fr; gap: 0.8rem; }

  .table-grid:not(.floor-plan-mode) {
    grid-template-columns: repeat(auto-fill, minmax(130px, 1fr));
  }

  .menu-grid-item { padding: 0.55rem 0.65rem; }

  /* Admin stats: 3-up */
  .stat-grid { grid-template-columns: repeat(3, 1fr); }
}

/* Tablets (portrait or landscape) stay side-by-side, same as desktop —
   only phone (≤640px, handled above) stacks into a single column. */

/* ── PC (>1024px) ───────────────────────────────────────────────────── */
@media (min-width: 1025px) {
  .container { max-width: 1280px; margin-inline: auto; }

  /* Order screen: menu side wider, order panel sticky so Bill button +
     totals stay in view while scrolling the long menu */
  .order-layout { grid-template-columns: 2fr 3fr; gap: 1.1rem; }
  .order-current.card {
    position: sticky;
    top: 0.75rem;
    align-self: start;
    max-height: calc(100vh - 1.5rem);
    overflow-y: auto;
  }

  .table-grid:not(.floor-plan-mode) {
    grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
  }
}

/* ── Landscape phones: don't waste vertical space ───────────────────── */
@media (max-height: 480px) and (orientation: landscape) {
  .topnav { padding-top: 0.3rem; padding-bottom: 0.3rem; }
  .card { padding: 0.6rem; }
  .table-grid.floor-plan-mode { min-height: 70vh; }
}

/* ── Print: bill always clean regardless of screen ──────────────────── */
@media print {
  .topnav, .no-print { display: none !important; }
  body { background: #fff; }
}

/* ═══════════════════════════════════════════════════════════════════════
   PHONE FIX PASS 2 — kill horizontal overflow (the "zoom out" bug),
   readable floor plan, side-by-side panels on phone, fullscreen support.
   ═══════════════════════════════════════════════════════════════════════ */

/* ── Root cause of "zoom out": something wider than the viewport.
      Lock the page to viewport width; nothing may push past it. ───────── */
html, body { max-width: 100vw; overflow-x: hidden; }
*, *::before, *::after { box-sizing: border-box; }
.container > * { min-width: 0; }   /* grid/flex children may always shrink */

/* ── Category pills ("variety" row): wrap onto multiple lines, no scroll ── */
.category-pills {
  display: flex !important;
  flex-wrap: wrap !important;
  gap: 0.4rem;
  padding-bottom: 0.3rem;
  max-width: 100%;
}
.cat-pill { flex: 0 0 auto; white-space: nowrap; }
/* Used by JS to hide the pills row (and the shortcut bar) while actively
   searching. Needs !important because .category-pills itself forces
   "display: flex !important" above — a plain inline style can't win against
   that, so a toggled class (also !important, declared after) is required. */
.search-hidden { display: none !important; }

/* ── Fullscreen button in nav ────────────────────────────────────────── */
.fullscreen-btn {
  border: 1px solid var(--border);
  background: var(--card);
  color: var(--ink);
  border-radius: 8px;
  cursor: pointer;
  font-size: 1rem;
  line-height: 1;
  padding: 0.35rem 0.5rem;
}
.fullscreen-btn:active { transform: scale(0.95); }

/* ── Floor plan: readable on phone via pan-scroll ────────────────────── */
.floor-scroll-wrap { max-width: 100%; }
@media (max-width: 640px) {
  /* The floor plan keeps a REAL size (as wide as a small tablet) and the
     wrapper lets you pan it sideways — so table boxes stay readable
     instead of being chopped into slivers. */
  .floor-scroll-wrap:has(.floor-plan-mode) {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    border-radius: 8px;
  }
  .table-grid.floor-plan-mode {
    min-width: 640px;             /* real, readable table sizes */
    grid-auto-rows: minmax(2.4rem, auto);
  }
  .table-grid.floor-plan-mode .table-card .table-number { font-size: 1rem; }
  .table-grid.floor-plan-mode .table-order-info { font-size: 0.85rem; }
}

/* ── Small tablet band only (NOT phone): compact side-by-side ─────────── */
@media (min-width: 641px) and (max-width: 760px) {
  /* Override the earlier 1-column stack: keep BOTH panels visible.
     Order panel ~42%, menu ~58%. minmax(0,·) lets them shrink safely. */
  .order-layout {
    grid-template-columns: minmax(0, 5fr) minmax(0, 7fr);
    gap: 0.45rem;
    align-items: start;
  }

  /* Order panel sticky on phone too — Bill button always in sight */
  .order-current.card {
    position: sticky;
    top: 0.4rem;
    max-height: calc(100vh - 0.8rem);
    overflow-y: auto;
    padding: 0.55rem;
  }

  /* Compact type inside both panels */
  .order-current .panel-title { font-size: 0.9rem; }
  .order-table th, .order-table td { padding: 0.3rem 0.3rem; font-size: 0.74rem; }
  .order-actions-row .btn { padding: 0.28rem 0.45rem; font-size: 0.72rem; }
  .gen-bill-inline { flex-basis: auto; margin-left: auto; margin-top: 0; font-size: 0.74rem; }
  .order-totals { font-size: 0.85rem; }

  /* Menu list rows: compact but tappable */
  .menu-grid-item { padding: 0.45rem 0.5rem; }
  .menu-grid-item .item-name { font-size: 0.8rem; }
  .qty-stepper .btn { min-width: 2rem; min-height: 2rem; padding: 0; }

  /* Search + shortcut chips fit the narrow column */
  .search-input, #itemSearch { font-size: 16px; }  /* no iOS zoom */
  .shortcut-chip { flex: 0 0 auto; }
}

/* Very small phones (<400px): shave a bit more */
@media (max-width: 400px) {
  .order-layout { gap: 0.3rem; }
  .order-current.card { padding: 0.45rem; }
  .order-table th:nth-child(2), .order-table td:nth-child(2) { display: none; } /* hide unit-price col, total still shows */
  .menu-grid-item .item-name { font-size: 0.76rem; }
}

/* ── Fullscreen mode: use every pixel ────────────────────────────────── */
:fullscreen body, :-webkit-full-screen body { padding-top: 0; }
@media (display-mode: fullscreen), (display-mode: standalone) {
  .topnav { padding-top: max(0.55rem, env(safe-area-inset-top)); }
}

/* ── Staff history page ───────────────────────────────────────────────── */
.history-search {
  display: flex;
  gap: 0.4rem;
  margin: 0.5rem 0 1rem;
  flex-wrap: wrap;
}
.history-search input {
  flex: 1 1 220px;
  min-width: 0;
  padding: 0.45rem 0.6rem;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: var(--card);
  color: var(--ink);
}
.history-rows { display: flex; flex-direction: column; gap: 0.45rem; }
.history-row {
  display: grid;
  grid-template-columns: 1fr auto auto;
  gap: 0.6rem;
  align-items: center;
  padding: 0.55rem 0.75rem;
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: 8px;
  box-shadow: var(--shadow);
}
.hr-title { font-size: 0.92rem; display: flex; align-items: baseline; gap: 0.45rem; flex-wrap: wrap; }
.hr-bill { font-size: 0.75rem; }
.hr-meta { font-size: 0.72rem; margin-top: 0.1rem; }
.hr-total {
  font-weight: 800;
  color: var(--c-magenta);
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
@media (max-width: 480px) {
  .history-row { grid-template-columns: 1fr auto; }
  .history-row .btn { grid-column: 1 / -1; text-align: center; }
}

/* ═══ 40 EXTRA THEMES (auto-palette) ═══ */

/* THEME Aurora */
[data-theme="aurora"] {
  --c-orange: #58CDE4; --c-coral: #58E49E; --c-magenta: #58E458;
  --c-violet: #D8E458; --c-blue: #58E4B5; --c-teal: #E4589E;
  --gradient-brand: linear-gradient(120deg, #3CDDA7 0%, #57AFDB 50%, #E4589E 100%);
  --gradient-btn: linear-gradient(135deg, #3CDDA7, #57AFDB);
  --gradient-btn-alt: linear-gradient(135deg, #E4589E, #57AFDB);
  --gradient-danger: linear-gradient(135deg, #58E49E, #58E458);
  --ink: #E4F1ED; --bg: #081410; --bg-soft: #10231D; --card: #0E1D18;
  --input-bg: #142922; --muted: #8BB1A5; --border: rgba(255,255,255,0.14);
  --shadow: 0 4px 22px rgba(0,0,0,0.5);
  --gradient-nav: linear-gradient(100deg, #091B15 0%, #143429 60%, #193F43 100%);
  --nav-text: rgba(255,255,255,0.75); --nav-text-strong: #FFFFFF;
  --alert-bg: rgba(255,120,80,0.14); --alert-fg: #58E49E; --alert-border: rgba(255,120,80,0.35);
  --alert-success-bg: rgba(40,190,150,0.14); --alert-success-fg: #E4589E; --alert-success-border: rgba(40,190,150,0.35);
  --badge-free-bg: rgba(40,190,150,0.16); --badge-free-fg: #E4589E;
  --badge-occ-bg: rgba(230,70,120,0.16); --badge-occ-fg: #58E458;
  --focus-ring: #3CDDA7; --shimmer-opacity: 1;
}
[data-theme="aurora"] .theme-toggle .theme-dot { background: linear-gradient(135deg,#3CDDA7,#57AFDB); }

/* THEME Emerald */
[data-theme="emerald"] {
  --c-orange: #2FC6BA; --c-coral: #2FC654; --c-magenta: #54C62F;
  --c-violet: #C6AD2F; --c-blue: #2FC66E; --c-teal: #C62FA0;
  --gradient-brand: linear-gradient(120deg, #22C365 0%, #2DC5D2 50%, #C62FA0 100%);
  --gradient-btn: linear-gradient(135deg, #22C365, #2DC5D2);
  --gradient-btn-alt: linear-gradient(135deg, #C62FA0, #2DC5D2);
  --gradient-danger: linear-gradient(135deg, #2FC654, #54C62F);
  --ink: #143421; --bg: #F3FAF5; --bg-soft: #E6F4EC; --card: #FFFFFF;
  --input-bg: #F5FAF7; --muted: #5E826D; --border: rgba(0,0,0,0.12);
  --shadow: 0 3px 14px rgba(0,0,0,0.10);
  --gradient-nav: linear-gradient(100deg, #1F7A45 0%, #30A661 60%, #39C6BA 100%);
  --nav-text: rgba(255,255,255,0.85); --nav-text-strong: #FFFFFF;
  --alert-bg: rgba(255,120,80,0.14); --alert-fg: #2FC654; --alert-border: rgba(255,120,80,0.35);
  --alert-success-bg: rgba(40,190,150,0.14); --alert-success-fg: #C62FA0; --alert-success-border: rgba(40,190,150,0.35);
  --badge-free-bg: rgba(40,190,150,0.16); --badge-free-fg: #C62FA0;
  --badge-occ-bg: rgba(230,70,120,0.16); --badge-occ-fg: #54C62F;
  --focus-ring: #22C365; --shimmer-opacity: 0.5;
}
[data-theme="emerald"] .theme-toggle .theme-dot { background: linear-gradient(135deg,#22C365,#2DC5D2); }

/* THEME Ruby */
[data-theme="ruby"] {
  --c-orange: #E48758; --c-coral: #E45887; --c-magenta: #E458CD;
  --c-violet: #7B58E4; --c-blue: #E45870; --c-teal: #58E4B5;
  --gradient-brand: linear-gradient(120deg, #DD3C57 0%, #DB9957 50%, #58E4B5 100%);
  --gradient-btn: linear-gradient(135deg, #DD3C57, #DB9957);
  --gradient-btn-alt: linear-gradient(135deg, #58E4B5, #DB9957);
  --gradient-danger: linear-gradient(135deg, #E45887, #E458CD);
  --ink: #F1E4E7; --bg: #14080A; --bg-soft: #231013; --card: #1D0E10;
  --input-bg: #291418; --muted: #B18B91; --border: rgba(255,255,255,0.14);
  --shadow: 0 4px 22px rgba(0,0,0,0.5);
  --gradient-nav: linear-gradient(100deg, #1B090C 0%, #341419 60%, #432419 100%);
  --nav-text: rgba(255,255,255,0.75); --nav-text-strong: #FFFFFF;
  --alert-bg: rgba(255,120,80,0.14); --alert-fg: #E45887; --alert-border: rgba(255,120,80,0.35);
  --alert-success-bg: rgba(40,190,150,0.14); --alert-success-fg: #58E4B5; --alert-success-border: rgba(40,190,150,0.35);
  --badge-free-bg: rgba(40,190,150,0.16); --badge-free-fg: #58E4B5;
  --badge-occ-bg: rgba(230,70,120,0.16); --badge-occ-fg: #E458CD;
  --focus-ring: #DD3C57; --shimmer-opacity: 1;
}
[data-theme="ruby"] .theme-toggle .theme-dot { background: linear-gradient(135deg,#DD3C57,#DB9957); }

/* THEME Sapphire */
[data-theme="sapphire"] {
  --c-orange: #6B58E4; --c-coral: #58A3E4; --c-magenta: #58E4DF;
  --c-violet: #58E45F; --c-blue: #588BE4; --c-teal: #E49958;
  --gradient-brand: linear-gradient(120deg, #3C77DD 0%, #7E57DB 50%, #E49958 100%);
  --gradient-btn: linear-gradient(135deg, #3C77DD, #7E57DB);
  --gradient-btn-alt: linear-gradient(135deg, #E49958, #7E57DB);
  --gradient-danger: linear-gradient(135deg, #58A3E4, #58E4DF);
  --ink: #E4E9F1; --bg: #080C14; --bg-soft: #101723; --card: #0E141D;
  --input-bg: #141C29; --muted: #8B99B1; --border: rgba(255,255,255,0.14);
  --shadow: 0 4px 22px rgba(0,0,0,0.5);
  --gradient-nav: linear-gradient(100deg, #090F1B 0%, #141F34 60%, #1B1943 100%);
  --nav-text: rgba(255,255,255,0.75); --nav-text-strong: #FFFFFF;
  --alert-bg: rgba(255,120,80,0.14); --alert-fg: #58A3E4; --alert-border: rgba(255,120,80,0.35);
  --alert-success-bg: rgba(40,190,150,0.14); --alert-success-fg: #E49958; --alert-success-border: rgba(40,190,150,0.35);
  --badge-free-bg: rgba(40,190,150,0.16); --badge-free-fg: #E49958;
  --badge-occ-bg: rgba(230,70,120,0.16); --badge-occ-fg: #58E4DF;
  --focus-ring: #3C77DD; --shimmer-opacity: 1;
}
[data-theme="sapphire"] .theme-toggle .theme-dot { background: linear-gradient(135deg,#3C77DD,#7E57DB); }

/* THEME Amber */
[data-theme="amber"] {
  --c-orange: #ADC62F; --c-coral: #C67A2F; --c-magenta: #C62F2F;
  --c-violet: #C62FBA; --c-blue: #C6942F; --c-teal: #2F7AC6;
  --gradient-brand: linear-gradient(120deg, #C38E22 0%, #9BD22D 50%, #2F7AC6 100%);
  --gradient-btn: linear-gradient(135deg, #C38E22, #9BD22D);
  --gradient-btn-alt: linear-gradient(135deg, #2F7AC6, #9BD22D);
  --gradient-danger: linear-gradient(135deg, #C67A2F, #C62F2F);
  --ink: #342914; --bg: #FAF7F3; --bg-soft: #F4EFE6; --card: #FFFFFF;
  --input-bg: #FAF8F5; --muted: #82765E; --border: rgba(0,0,0,0.12);
  --shadow: 0 3px 14px rgba(0,0,0,0.10);
  --gradient-nav: linear-gradient(100deg, #7A5C1F 0%, #A67F30 60%, #AEC639 100%);
  --nav-text: rgba(255,255,255,0.85); --nav-text-strong: #FFFFFF;
  --alert-bg: rgba(255,120,80,0.14); --alert-fg: #C67A2F; --alert-border: rgba(255,120,80,0.35);
  --alert-success-bg: rgba(40,190,150,0.14); --alert-success-fg: #2F7AC6; --alert-success-border: rgba(40,190,150,0.35);
  --badge-free-bg: rgba(40,190,150,0.16); --badge-free-fg: #2F7AC6;
  --badge-occ-bg: rgba(230,70,120,0.16); --badge-occ-fg: #C62F2F;
  --focus-ring: #C38E22; --shimmer-opacity: 0.5;
}
[data-theme="amber"] .theme-toggle .theme-dot { background: linear-gradient(135deg,#C38E22,#9BD22D); }

/* THEME Slate */
[data-theme="slate"] {
  --c-orange: #2F2FC6; --c-coral: #2F94C6; --c-magenta: #2FC6AD;
  --c-violet: #3BC62F; --c-blue: #2F7AC6; --c-teal: #C6612F;
  --gradient-brand: linear-gradient(120deg, #2273C3 0%, #482DD2 50%, #C6612F 100%);
  --gradient-btn: linear-gradient(135deg, #2273C3, #482DD2);
  --gradient-btn-alt: linear-gradient(135deg, #C6612F, #482DD2);
  --gradient-danger: linear-gradient(135deg, #2F94C6, #2FC6AD);
  --ink: #142434; --bg: #F3F6FA; --bg-soft: #E6EDF4; --card: #FFFFFF;
  --input-bg: #F5F7FA; --muted: #5E7082; --border: rgba(0,0,0,0.12);
  --shadow: 0 3px 14px rgba(0,0,0,0.10);
  --gradient-nav: linear-gradient(100deg, #1F4C7A 0%, #306BA6 60%, #3939C6 100%);
  --nav-text: rgba(255,255,255,0.85); --nav-text-strong: #FFFFFF;
  --alert-bg: rgba(255,120,80,0.14); --alert-fg: #2F94C6; --alert-border: rgba(255,120,80,0.35);
  --alert-success-bg: rgba(40,190,150,0.14); --alert-success-fg: #C6612F; --alert-success-border: rgba(40,190,150,0.35);
  --badge-free-bg: rgba(40,190,150,0.16); --badge-free-fg: #C6612F;
  --badge-occ-bg: rgba(230,70,120,0.16); --badge-occ-fg: #2FC6AD;
  --focus-ring: #2273C3; --shimmer-opacity: 0.5;
}
[data-theme="slate"] .theme-toggle .theme-dot { background: linear-gradient(135deg,#2273C3,#482DD2); }

/* THEME Storm */
[data-theme="storm"] {
  --c-orange: #8758E4; --c-coral: #5887E4; --c-magenta: #58CDE4;
  --c-violet: #58E47B; --c-blue: #5870E4; --c-teal: #E4B558;
  --gradient-brand: linear-gradient(120deg, #3C57DD 0%, #9957DB 50%, #E4B558 100%);
  --gradient-btn: linear-gradient(135deg, #3C57DD, #9957DB);
  --gradient-btn-alt: linear-gradient(135deg, #E4B558, #9957DB);
  --gradient-danger: linear-gradient(135deg, #5887E4, #58CDE4);
  --ink: #E4E7F1; --bg: #080A14; --bg-soft: #101323; --card: #0E101D;
  --input-bg: #141829; --muted: #8B91B1; --border: rgba(255,255,255,0.14);
  --shadow: 0 4px 22px rgba(0,0,0,0.5);
  --gradient-nav: linear-gradient(100deg, #090C1B 0%, #141934 60%, #241943 100%);
  --nav-text: rgba(255,255,255,0.75); --nav-text-strong: #FFFFFF;
  --alert-bg: rgba(255,120,80,0.14); --alert-fg: #5887E4; --alert-border: rgba(255,120,80,0.35);
  --alert-success-bg: rgba(40,190,150,0.14); --alert-success-fg: #E4B558; --alert-success-border: rgba(40,190,150,0.35);
  --badge-free-bg: rgba(40,190,150,0.16); --badge-free-fg: #E4B558;
  --badge-occ-bg: rgba(230,70,120,0.16); --badge-occ-fg: #58CDE4;
  --focus-ring: #3C57DD; --shimmer-opacity: 1;
}
[data-theme="storm"] .theme-toggle .theme-dot { background: linear-gradient(135deg,#3C57DD,#9957DB); }

/* THEME Blush */
[data-theme="blush"] {
  --c-orange: #C6482F; --c-coral: #C62F7A; --c-magenta: #C62FC6;
  --c-violet: #3B2FC6; --c-blue: #C62F61; --c-teal: #2FC67A;
  --gradient-brand: linear-gradient(120deg, #C32258 0%, #D2642D 50%, #2FC67A 100%);
  --gradient-btn: linear-gradient(135deg, #C32258, #D2642D);
  --gradient-btn-alt: linear-gradient(135deg, #2FC67A, #D2642D);
  --gradient-danger: linear-gradient(135deg, #C62F7A, #C62FC6);
  --ink: #34141E; --bg: #FAF3F5; --bg-soft: #F4E6EB; --card: #FFFFFF;
  --input-bg: #FAF5F6; --muted: #825E6A; --border: rgba(0,0,0,0.12);
  --shadow: 0 3px 14px rgba(0,0,0,0.10);
  --gradient-nav: linear-gradient(100deg, #7A1F3D 0%, #A63057 60%, #C65139 100%);
  --nav-text: rgba(255,255,255,0.85); --nav-text-strong: #FFFFFF;
  --alert-bg: rgba(255,120,80,0.14); --alert-fg: #C62F7A; --alert-border: rgba(255,120,80,0.35);
  --alert-success-bg: rgba(40,190,150,0.14); --alert-success-fg: #2FC67A; --alert-success-border: rgba(40,190,150,0.35);
  --badge-free-bg: rgba(40,190,150,0.16); --badge-free-fg: #2FC67A;
  --badge-occ-bg: rgba(230,70,120,0.16); --badge-occ-fg: #C62FC6;
  --focus-ring: #C32258; --shimmer-opacity: 0.5;
}
[data-theme="blush"] .theme-toggle .theme-dot { background: linear-gradient(135deg,#C32258,#D2642D); }

/* THEME Lagoon */
[data-theme="lagoon"] {
  --c-orange: #2F6EC6; --c-coral: #2FC6BA; --c-magenta: #2FC66E;
  --c-violet: #7AC62F; --c-blue: #2FBAC6; --c-teal: #C62F3B;
  --gradient-brand: linear-gradient(120deg, #22B6C3 0%, #2D56D2 50%, #C62F3B 100%);
  --gradient-btn: linear-gradient(135deg, #22B6C3, #2D56D2);
  --gradient-btn-alt: linear-gradient(135deg, #C62F3B, #2D56D2);
  --gradient-danger: linear-gradient(135deg, #2FC6BA, #2FC66E);
  --ink: #143134; --bg: #F3F9FA; --bg-soft: #E6F3F4; --card: #FFFFFF;
  --input-bg: #F5FAFA; --muted: #5E7F82; --border: rgba(0,0,0,0.12);
  --shadow: 0 3px 14px rgba(0,0,0,0.10);
  --gradient-nav: linear-gradient(100deg, #1F737A 0%, #309CA6 60%, #3974C6 100%);
  --nav-text: rgba(255,255,255,0.85); --nav-text-strong: #FFFFFF;
  --alert-bg: rgba(255,120,80,0.14); --alert-fg: #2FC6BA; --alert-border: rgba(255,120,80,0.35);
  --alert-success-bg: rgba(40,190,150,0.14); --alert-success-fg: #C62F3B; --alert-success-border: rgba(40,190,150,0.35);
  --badge-free-bg: rgba(40,190,150,0.16); --badge-free-fg: #C62F3B;
  --badge-occ-bg: rgba(230,70,120,0.16); --badge-occ-fg: #2FC66E;
  --focus-ring: #22B6C3; --shimmer-opacity: 0.5;
}
[data-theme="lagoon"] .theme-toggle .theme-dot { background: linear-gradient(135deg,#22B6C3,#2D56D2); }

/* THEME Jungle */
[data-theme="jungle"] {
  --c-orange: #58E4B5; --c-coral: #58E458; --c-magenta: #9EE458;
  --c-violet: #E4AA58; --c-blue: #58E470; --c-teal: #E458E4;
  --gradient-brand: linear-gradient(120deg, #3CDD57 0%, #57DBC5 50%, #E458E4 100%);
  --gradient-btn: linear-gradient(135deg, #3CDD57, #57DBC5);
  --gradient-btn-alt: linear-gradient(135deg, #E458E4, #57DBC5);
  --gradient-danger: linear-gradient(135deg, #58E458, #9EE458);
  --ink: #E4F1E7; --bg: #08140A; --bg-soft: #102313; --card: #0E1D10;
  --input-bg: #142918; --muted: #8BB191; --border: rgba(255,255,255,0.14);
  --shadow: 0 4px 22px rgba(0,0,0,0.5);
  --gradient-nav: linear-gradient(100deg, #091B0C 0%, #143419 60%, #194331 100%);
  --nav-text: rgba(255,255,255,0.75); --nav-text-strong: #FFFFFF;
  --alert-bg: rgba(255,120,80,0.14); --alert-fg: #58E458; --alert-border: rgba(255,120,80,0.35);
  --alert-success-bg: rgba(40,190,150,0.14); --alert-success-fg: #E458E4; --alert-success-border: rgba(40,190,150,0.35);
  --badge-free-bg: rgba(40,190,150,0.16); --badge-free-fg: #E458E4;
  --badge-occ-bg: rgba(230,70,120,0.16); --badge-occ-fg: #9EE458;
  --focus-ring: #3CDD57; --shimmer-opacity: 1;
}
[data-theme="jungle"] .theme-toggle .theme-dot { background: linear-gradient(135deg,#3CDD57,#57DBC5); }

/* THEME Plum */
[data-theme="plum"] {
  --c-orange: #E458B5; --c-coral: #B558E4; --c-magenta: #7058E4;
  --c-violet: #58C1E4; --c-blue: #CD58E4; --c-teal: #87E458;
  --gradient-brand: linear-gradient(120deg, #C23CDD 0%, #DB5799 50%, #87E458 100%);
  --gradient-btn: linear-gradient(135deg, #C23CDD, #DB5799);
  --gradient-btn-alt: linear-gradient(135deg, #87E458, #DB5799);
  --gradient-danger: linear-gradient(135deg, #B558E4, #7058E4);
  --ink: #EFE4F1; --bg: #120814; --bg-soft: #201023; --card: #1B0E1D;
  --input-bg: #261429; --muted: #AB8BB1; --border: rgba(255,255,255,0.14);
  --shadow: 0 4px 22px rgba(0,0,0,0.5);
  --gradient-nav: linear-gradient(100deg, #18091B 0%, #2E1434 60%, #431938 100%);
  --nav-text: rgba(255,255,255,0.75); --nav-text-strong: #FFFFFF;
  --alert-bg: rgba(255,120,80,0.14); --alert-fg: #B558E4; --alert-border: rgba(255,120,80,0.35);
  --alert-success-bg: rgba(40,190,150,0.14); --alert-success-fg: #87E458; --alert-success-border: rgba(40,190,150,0.35);
  --badge-free-bg: rgba(40,190,150,0.16); --badge-free-fg: #87E458;
  --badge-occ-bg: rgba(230,70,120,0.16); --badge-occ-fg: #7058E4;
  --focus-ring: #C23CDD; --shimmer-opacity: 1;
}
[data-theme="plum"] .theme-toggle .theme-dot { background: linear-gradient(135deg,#C23CDD,#DB5799); }

/* THEME Denim */
[data-theme="denim"] {
  --c-orange: #3B2FC6; --c-coral: #2F87C6; --c-magenta: #2FC6BA;
  --c-violet: #2FC62F; --c-blue: #2F6EC6; --c-teal: #C66E2F;
  --gradient-brand: linear-gradient(120deg, #2265C3 0%, #562DD2 50%, #C66E2F 100%);
  --gradient-btn: linear-gradient(135deg, #2265C3, #562DD2);
  --gradient-btn-alt: linear-gradient(135deg, #C66E2F, #562DD2);
  --gradient-danger: linear-gradient(135deg, #2F87C6, #2FC6BA);
  --ink: #142134; --bg: #F3F5FA; --bg-soft: #E6ECF4; --card: #FFFFFF;
  --input-bg: #F5F7FA; --muted: #5E6D82; --border: rgba(0,0,0,0.12);
  --shadow: 0 3px 14px rgba(0,0,0,0.10);
  --gradient-nav: linear-gradient(100deg, #1F457A 0%, #3061A6 60%, #4539C6 100%);
  --nav-text: rgba(255,255,255,0.85); --nav-text-strong: #FFFFFF;
  --alert-bg: rgba(255,120,80,0.14); --alert-fg: #2F87C6; --alert-border: rgba(255,120,80,0.35);
  --alert-success-bg: rgba(40,190,150,0.14); --alert-success-fg: #C66E2F; --alert-success-border: rgba(40,190,150,0.35);
  --badge-free-bg: rgba(40,190,150,0.16); --badge-free-fg: #C66E2F;
  --badge-occ-bg: rgba(230,70,120,0.16); --badge-occ-fg: #2FC6BA;
  --focus-ring: #2265C3; --shimmer-opacity: 0.5;
}
[data-theme="denim"] .theme-toggle .theme-dot { background: linear-gradient(135deg,#2265C3,#562DD2); }

/* THEME Flamingo */
[data-theme="flamingo"] {
  --c-orange: #C62F2F; --c-coral: #C62F94; --c-magenta: #AD2FC6;
  --c-violet: #2F3BC6; --c-blue: #C62F7A; --c-teal: #2FC661;
  --gradient-brand: linear-gradient(120deg, #C32273 0%, #D2482D 50%, #2FC661 100%);
  --gradient-btn: linear-gradient(135deg, #C32273, #D2482D);
  --gradient-btn-alt: linear-gradient(135deg, #2FC661, #D2482D);
  --gradient-danger: linear-gradient(135deg, #C62F94, #AD2FC6);
  --ink: #341424; --bg: #FAF3F6; --bg-soft: #F4E6ED; --card: #FFFFFF;
  --input-bg: #FAF5F7; --muted: #825E70; --border: rgba(0,0,0,0.12);
  --shadow: 0 3px 14px rgba(0,0,0,0.10);
  --gradient-nav: linear-gradient(100deg, #7A1F4D 0%, #A6306B 60%, #C63939 100%);
  --nav-text: rgba(255,255,255,0.85); --nav-text-strong: #FFFFFF;
  --alert-bg: rgba(255,120,80,0.14); --alert-fg: #C62F94; --alert-border: rgba(255,120,80,0.35);
  --alert-success-bg: rgba(40,190,150,0.14); --alert-success-fg: #2FC661; --alert-success-border: rgba(40,190,150,0.35);
  --badge-free-bg: rgba(40,190,150,0.16); --badge-free-fg: #2FC661;
  --badge-occ-bg: rgba(230,70,120,0.16); --badge-occ-fg: #AD2FC6;
  --focus-ring: #C32273; --shimmer-opacity: 0.5;
}
[data-theme="flamingo"] .theme-toggle .theme-dot { background: linear-gradient(135deg,#C32273,#D2482D); }

/* THEME Honey */
[data-theme="honey"] {
  --c-orange: #A0C62F; --c-coral: #C6872F; --c-magenta: #C63B2F;
  --c-violet: #C62FAD; --c-blue: #C6A02F; --c-teal: #2F6EC6;
  --gradient-brand: linear-gradient(120deg, #C39B22 0%, #8DD22D 50%, #2F6EC6 100%);
  --gradient-btn: linear-gradient(135deg, #C39B22, #8DD22D);
  --gradient-btn-alt: linear-gradient(135deg, #2F6EC6, #8DD22D);
  --gradient-danger: linear-gradient(135deg, #C6872F, #C63B2F);
  --ink: #342C14; --bg: #FAF8F3; --bg-soft: #F4F1E6; --card: #FFFFFF;
  --input-bg: #FAF9F5; --muted: #82795E; --border: rgba(0,0,0,0.12);
  --shadow: 0 3px 14px rgba(0,0,0,0.10);
  --gradient-nav: linear-gradient(100deg, #7A631F 0%, #A68930 60%, #A3C639 100%);
  --nav-text: rgba(255,255,255,0.85); --nav-text-strong: #FFFFFF;
  --alert-bg: rgba(255,120,80,0.14); --alert-fg: #C6872F; --alert-border: rgba(255,120,80,0.35);
  --alert-success-bg: rgba(40,190,150,0.14); --alert-success-fg: #2F6EC6; --alert-success-border: rgba(40,190,150,0.35);
  --badge-free-bg: rgba(40,190,150,0.16); --badge-free-fg: #2F6EC6;
  --badge-occ-bg: rgba(230,70,120,0.16); --badge-occ-fg: #C63B2F;
  --focus-ring: #C39B22; --shimmer-opacity: 0.5;
}
[data-theme="honey"] .theme-toggle .theme-dot { background: linear-gradient(135deg,#C39B22,#8DD22D); }

/* THEME Frost */
[data-theme="frost"] {
  --c-orange: #2F48C6; --c-coral: #2FADC6; --c-magenta: #2FC694;
  --c-violet: #54C62F; --c-blue: #2F94C6; --c-teal: #C6482F;
  --gradient-brand: linear-gradient(120deg, #228EC3 0%, #2D2DD2 50%, #C6482F 100%);
  --gradient-btn: linear-gradient(135deg, #228EC3, #2D2DD2);
  --gradient-btn-alt: linear-gradient(135deg, #C6482F, #2D2DD2);
  --gradient-danger: linear-gradient(135deg, #2FADC6, #2FC694);
  --ink: #142934; --bg: #F3F7FA; --bg-soft: #E6EFF4; --card: #FFFFFF;
  --input-bg: #F5F8FA; --muted: #5E7682; --border: rgba(0,0,0,0.12);
  --shadow: 0 3px 14px rgba(0,0,0,0.10);
  --gradient-nav: linear-gradient(100deg, #1F5C7A 0%, #307FA6 60%, #3951C6 100%);
  --nav-text: rgba(255,255,255,0.85); --nav-text-strong: #FFFFFF;
  --alert-bg: rgba(255,120,80,0.14); --alert-fg: #2FADC6; --alert-border: rgba(255,120,80,0.35);
  --alert-success-bg: rgba(40,190,150,0.14); --alert-success-fg: #C6482F; --alert-success-border: rgba(40,190,150,0.35);
  --badge-free-bg: rgba(40,190,150,0.16); --badge-free-fg: #C6482F;
  --badge-occ-bg: rgba(230,70,120,0.16); --badge-occ-fg: #2FC694;
  --focus-ring: #228EC3; --shimmer-opacity: 0.5;
}
[data-theme="frost"] .theme-toggle .theme-dot { background: linear-gradient(135deg,#228EC3,#2D2DD2); }

/* THEME Ember */
[data-theme="ember"] {
  --c-orange: #E4C158; --c-coral: #E46458; --c-magenta: #E45892;
  --c-violet: #B558E4; --c-blue: #E47B58; --c-teal: #58D8E4;
  --gradient-brand: linear-gradient(120deg, #DD643C 0%, #DBD057 50%, #58D8E4 100%);
  --gradient-btn: linear-gradient(135deg, #DD643C, #DBD057);
  --gradient-btn-alt: linear-gradient(135deg, #58D8E4, #DBD057);
  --gradient-danger: linear-gradient(135deg, #E46458, #E45892);
  --ink: #F1E8E4; --bg: #140B08; --bg-soft: #231510; --card: #1D120E;
  --input-bg: #291914; --muted: #B1948B; --border: rgba(255,255,255,0.14);
  --shadow: 0 4px 22px rgba(0,0,0,0.5);
  --gradient-nav: linear-gradient(100deg, #1B0D09 0%, #341C14 60%, #433519 100%);
  --nav-text: rgba(255,255,255,0.75); --nav-text-strong: #FFFFFF;
  --alert-bg: rgba(255,120,80,0.14); --alert-fg: #E46458; --alert-border: rgba(255,120,80,0.35);
  --alert-success-bg: rgba(40,190,150,0.14); --alert-success-fg: #58D8E4; --alert-success-border: rgba(40,190,150,0.35);
  --badge-free-bg: rgba(40,190,150,0.16); --badge-free-fg: #58D8E4;
  --badge-occ-bg: rgba(230,70,120,0.16); --badge-occ-fg: #E45892;
  --focus-ring: #DD643C; --shimmer-opacity: 1;
}
[data-theme="ember"] .theme-toggle .theme-dot { background: linear-gradient(135deg,#DD643C,#DBD057); }

/* THEME Moss */
[data-theme="moss"] {
  --c-orange: #2FC63B; --c-coral: #87C62F; --c-magenta: #C6BA2F;
  --c-violet: #C62F2F; --c-blue: #6EC62F; --c-teal: #6E2FC6;
  --gradient-brand: linear-gradient(120deg, #65C322 0%, #2DD256 50%, #6E2FC6 100%);
  --gradient-btn: linear-gradient(135deg, #65C322, #2DD256);
  --gradient-btn-alt: linear-gradient(135deg, #6E2FC6, #2DD256);
  --gradient-danger: linear-gradient(135deg, #87C62F, #C6BA2F);
  --ink: #213414; --bg: #F5FAF3; --bg-soft: #ECF4E6; --card: #FFFFFF;
  --input-bg: #F7FAF5; --muted: #6D825E; --border: rgba(0,0,0,0.12);
  --shadow: 0 3px 14px rgba(0,0,0,0.10);
  --gradient-nav: linear-gradient(100deg, #457A1F 0%, #61A630 60%, #39C645 100%);
  --nav-text: rgba(255,255,255,0.85); --nav-text-strong: #FFFFFF;
  --alert-bg: rgba(255,120,80,0.14); --alert-fg: #87C62F; --alert-border: rgba(255,120,80,0.35);
  --alert-success-bg: rgba(40,190,150,0.14); --alert-success-fg: #6E2FC6; --alert-success-border: rgba(40,190,150,0.35);
  --badge-free-bg: rgba(40,190,150,0.16); --badge-free-fg: #6E2FC6;
  --badge-occ-bg: rgba(230,70,120,0.16); --badge-occ-fg: #C6BA2F;
  --focus-ring: #65C322; --shimmer-opacity: 0.5;
}
[data-theme="moss"] .theme-toggle .theme-dot { background: linear-gradient(135deg,#65C322,#2DD256); }

/* THEME Dune */
[data-theme="dune"] {
  --c-orange: #BAC62F; --c-coral: #C66E2F; --c-magenta: #C62F3B;
  --c-violet: #C62FC6; --c-blue: #C6872F; --c-teal: #2F87C6;
  --gradient-brand: linear-gradient(120deg, #C38022 0%, #A9D22D 50%, #2F87C6 100%);
  --gradient-btn: linear-gradient(135deg, #C38022, #A9D22D);
  --gradient-btn-alt: linear-gradient(135deg, #2F87C6, #A9D22D);
  --gradient-danger: linear-gradient(135deg, #C66E2F, #C62F3B);
  --ink: #342614; --bg: #FAF7F3; --bg-soft: #F4EEE6; --card: #FFFFFF;
  --input-bg: #FAF8F5; --muted: #82735E; --border: rgba(0,0,0,0.12);
  --shadow: 0 3px 14px rgba(0,0,0,0.10);
  --gradient-nav: linear-gradient(100deg, #7A541F 0%, #A67530 60%, #BAC639 100%);
  --nav-text: rgba(255,255,255,0.85); --nav-text-strong: #FFFFFF;
  --alert-bg: rgba(255,120,80,0.14); --alert-fg: #C66E2F; --alert-border: rgba(255,120,80,0.35);
  --alert-success-bg: rgba(40,190,150,0.14); --alert-success-fg: #2F87C6; --alert-success-border: rgba(40,190,150,0.35);
  --badge-free-bg: rgba(40,190,150,0.16); --badge-free-fg: #2F87C6;
  --badge-occ-bg: rgba(230,70,120,0.16); --badge-occ-fg: #C62F3B;
  --focus-ring: #C38022; --shimmer-opacity: 0.5;
}
[data-theme="dune"] .theme-toggle .theme-dot { background: linear-gradient(135deg,#C38022,#A9D22D); }

/* THEME Orchid */
[data-theme="orchid"] {
  --c-orange: #C62F7A; --c-coral: #AD2FC6; --c-magenta: #612FC6;
  --c-violet: #2F87C6; --c-blue: #C62FC6; --c-teal: #48C62F;
  --gradient-brand: linear-gradient(120deg, #C322C3 0%, #D22D64 50%, #48C62F 100%);
  --gradient-btn: linear-gradient(135deg, #C322C3, #D22D64);
  --gradient-btn-alt: linear-gradient(135deg, #48C62F, #D22D64);
  --gradient-danger: linear-gradient(135deg, #AD2FC6, #612FC6);
  --ink: #341434; --bg: #FAF3FA; --bg-soft: #F4E6F4; --card: #FFFFFF;
  --input-bg: #FAF5FA; --muted: #825E82; --border: rgba(0,0,0,0.12);
  --shadow: 0 3px 14px rgba(0,0,0,0.10);
  --gradient-nav: linear-gradient(100deg, #7A1F7A 0%, #A630A6 60%, #C63980 100%);
  --nav-text: rgba(255,255,255,0.85); --nav-text-strong: #FFFFFF;
  --alert-bg: rgba(255,120,80,0.14); --alert-fg: #AD2FC6; --alert-border: rgba(255,120,80,0.35);
  --alert-success-bg: rgba(40,190,150,0.14); --alert-success-fg: #48C62F; --alert-success-border: rgba(40,190,150,0.35);
  --badge-free-bg: rgba(40,190,150,0.16); --badge-free-fg: #48C62F;
  --badge-occ-bg: rgba(230,70,120,0.16); --badge-occ-fg: #612FC6;
  --focus-ring: #C322C3; --shimmer-opacity: 0.5;
}
[data-theme="orchid"] .theme-toggle .theme-dot { background: linear-gradient(135deg,#C322C3,#D22D64); }

/* THEME Steel */
[data-theme="steel"] {
  --c-orange: #5864E4; --c-coral: #58C1E4; --c-magenta: #58E4C1;
  --c-violet: #70E458; --c-blue: #58AAE4; --c-teal: #E47B58;
  --gradient-brand: linear-gradient(120deg, #3C9ADD 0%, #6257DB 50%, #E47B58 100%);
  --gradient-btn: linear-gradient(135deg, #3C9ADD, #6257DB);
  --gradient-btn-alt: linear-gradient(135deg, #E47B58, #6257DB);
  --gradient-danger: linear-gradient(135deg, #58C1E4, #58E4C1);
  --ink: #E4ECF1; --bg: #080F14; --bg-soft: #101B23; --card: #0E171D;
  --input-bg: #142029; --muted: #8BA1B1; --border: rgba(255,255,255,0.14);
  --shadow: 0 4px 22px rgba(0,0,0,0.5);
  --gradient-nav: linear-gradient(100deg, #09131B 0%, #142634 60%, #192043 100%);
  --nav-text: rgba(255,255,255,0.75); --nav-text-strong: #FFFFFF;
  --alert-bg: rgba(255,120,80,0.14); --alert-fg: #58C1E4; --alert-border: rgba(255,120,80,0.35);
  --alert-success-bg: rgba(40,190,150,0.14); --alert-success-fg: #E47B58; --alert-success-border: rgba(40,190,150,0.35);
  --badge-free-bg: rgba(40,190,150,0.16); --badge-free-fg: #E47B58;
  --badge-occ-bg: rgba(230,70,120,0.16); --badge-occ-fg: #58E4C1;
  --focus-ring: #3C9ADD; --shimmer-opacity: 1;
}
[data-theme="steel"] .theme-toggle .theme-dot { background: linear-gradient(135deg,#3C9ADD,#6257DB); }

/* THEME Cherry */
[data-theme="cherry"] {
  --c-orange: #C66E2F; --c-coral: #C62F54; --c-magenta: #C62FA0;
  --c-violet: #612FC6; --c-blue: #C62F3B; --c-teal: #2FC6A0;
  --gradient-brand: linear-gradient(120deg, #C32230 0%, #D28D2D 50%, #2FC6A0 100%);
  --gradient-btn: linear-gradient(135deg, #C32230, #D28D2D);
  --gradient-btn-alt: linear-gradient(135deg, #2FC6A0, #D28D2D);
  --gradient-danger: linear-gradient(135deg, #C62F54, #C62FA0);
  --ink: #341416; --bg: #FAF3F3; --bg-soft: #F4E6E7; --card: #FFFFFF;
  --input-bg: #FAF5F5; --muted: #825E61; --border: rgba(0,0,0,0.12);
  --shadow: 0 3px 14px rgba(0,0,0,0.10);
  --gradient-nav: linear-gradient(100deg, #7A1F26 0%, #A6303A 60%, #C67439 100%);
  --nav-text: rgba(255,255,255,0.85); --nav-text-strong: #FFFFFF;
  --alert-bg: rgba(255,120,80,0.14); --alert-fg: #C62F54; --alert-border: rgba(255,120,80,0.35);
  --alert-success-bg: rgba(40,190,150,0.14); --alert-success-fg: #2FC6A0; --alert-success-border: rgba(40,190,150,0.35);
  --badge-free-bg: rgba(40,190,150,0.16); --badge-free-fg: #2FC6A0;
  --badge-occ-bg: rgba(230,70,120,0.16); --badge-occ-fg: #C62FA0;
  --focus-ring: #C32230; --shimmer-opacity: 0.5;
}
[data-theme="cherry"] .theme-toggle .theme-dot { background: linear-gradient(135deg,#C32230,#D28D2D); }

/* THEME Cobalt */
[data-theme="cobalt"] {
  --c-orange: #7B58E4; --c-coral: #5892E4; --c-magenta: #58D8E4;
  --c-violet: #58E470; --c-blue: #587BE4; --c-teal: #E4AA58;
  --gradient-brand: linear-gradient(120deg, #3C64DD 0%, #8E57DB 50%, #E4AA58 100%);
  --gradient-btn: linear-gradient(135deg, #3C64DD, #8E57DB);
  --gradient-btn-alt: linear-gradient(135deg, #E4AA58, #8E57DB);
  --gradient-danger: linear-gradient(135deg, #5892E4, #58D8E4);
  --ink: #E4E8F1; --bg: #080B14; --bg-soft: #101523; --card: #0E121D;
  --input-bg: #141929; --muted: #8B94B1; --border: rgba(255,255,255,0.14);
  --shadow: 0 4px 22px rgba(0,0,0,0.5);
  --gradient-nav: linear-gradient(100deg, #090D1B 0%, #141C34 60%, #201943 100%);
  --nav-text: rgba(255,255,255,0.75); --nav-text-strong: #FFFFFF;
  --alert-bg: rgba(255,120,80,0.14); --alert-fg: #5892E4; --alert-border: rgba(255,120,80,0.35);
  --alert-success-bg: rgba(40,190,150,0.14); --alert-success-fg: #E4AA58; --alert-success-border: rgba(40,190,150,0.35);
  --badge-free-bg: rgba(40,190,150,0.16); --badge-free-fg: #E4AA58;
  --badge-occ-bg: rgba(230,70,120,0.16); --badge-occ-fg: #58D8E4;
  --focus-ring: #3C64DD; --shimmer-opacity: 1;
}
[data-theme="cobalt"] .theme-toggle .theme-dot { background: linear-gradient(135deg,#3C64DD,#8E57DB); }

/* THEME Sand */
[data-theme="sand"] {
  --c-orange: #A8C62F; --c-coral: #C67F2F; --c-magenta: #C6342F;
  --c-violet: #C62FB5; --c-blue: #C6992F; --c-teal: #2F75C6;
  --gradient-brand: linear-gradient(120deg, #C39322 0%, #96D22D 50%, #2F75C6 100%);
  --gradient-btn: linear-gradient(135deg, #C39322, #96D22D);
  --gradient-btn-alt: linear-gradient(135deg, #2F75C6, #96D22D);
  --gradient-danger: linear-gradient(135deg, #C67F2F, #C6342F);
  --ink: #342A14; --bg: #FAF8F3; --bg-soft: #F4F0E6; --card: #FFFFFF;
  --input-bg: #FAF8F5; --muted: #82775E; --border: rgba(0,0,0,0.12);
  --shadow: 0 3px 14px rgba(0,0,0,0.10);
  --gradient-nav: linear-gradient(100deg, #7A5F1F 0%, #A68330 60%, #AAC639 100%);
  --nav-text: rgba(255,255,255,0.85); --nav-text-strong: #FFFFFF;
  --alert-bg: rgba(255,120,80,0.14); --alert-fg: #C67F2F; --alert-border: rgba(255,120,80,0.35);
  --alert-success-bg: rgba(40,190,150,0.14); --alert-success-fg: #2F75C6; --alert-success-border: rgba(40,190,150,0.35);
  --badge-free-bg: rgba(40,190,150,0.16); --badge-free-fg: #2F75C6;
  --badge-occ-bg: rgba(230,70,120,0.16); --badge-occ-fg: #C6342F;
  --focus-ring: #C39322; --shimmer-opacity: 0.5;
}
[data-theme="sand"] .theme-toggle .theme-dot { background: linear-gradient(135deg,#C39322,#96D22D); }

/* THEME Wine */
[data-theme="wine"] {
  --c-orange: #E47B58; --c-coral: #E45892; --c-magenta: #E458D8;
  --c-violet: #7058E4; --c-blue: #E4587B; --c-teal: #58E4AA;
  --gradient-brand: linear-gradient(120deg, #DD3C64 0%, #DB8E57 50%, #58E4AA 100%);
  --gradient-btn: linear-gradient(135deg, #DD3C64, #DB8E57);
  --gradient-btn-alt: linear-gradient(135deg, #58E4AA, #DB8E57);
  --gradient-danger: linear-gradient(135deg, #E45892, #E458D8);
  --ink: #F1E4E8; --bg: #14080B; --bg-soft: #231015; --card: #1D0E12;
  --input-bg: #291419; --muted: #B18B94; --border: rgba(255,255,255,0.14);
  --shadow: 0 4px 22px rgba(0,0,0,0.5);
  --gradient-nav: linear-gradient(100deg, #1B090D 0%, #34141C 60%, #432019 100%);
  --nav-text: rgba(255,255,255,0.75); --nav-text-strong: #FFFFFF;
  --alert-bg: rgba(255,120,80,0.14); --alert-fg: #E45892; --alert-border: rgba(255,120,80,0.35);
  --alert-success-bg: rgba(40,190,150,0.14); --alert-success-fg: #58E4AA; --alert-success-border: rgba(40,190,150,0.35);
  --badge-free-bg: rgba(40,190,150,0.16); --badge-free-fg: #58E4AA;
  --badge-occ-bg: rgba(230,70,120,0.16); --badge-occ-fg: #E458D8;
  --focus-ring: #DD3C64; --shimmer-opacity: 1;
}
[data-theme="wine"] .theme-toggle .theme-dot { background: linear-gradient(135deg,#DD3C64,#DB8E57); }

/* THEME Reef */
[data-theme="reef"] {
  --c-orange: #58AAE4; --c-coral: #58E4C1; --c-magenta: #58E47B;
  --c-violet: #B5E458; --c-blue: #58E4D8; --c-teal: #E4587B;
  --gradient-brand: linear-gradient(120deg, #3CDDCF 0%, #578EDB 50%, #E4587B 100%);
  --gradient-btn: linear-gradient(135deg, #3CDDCF, #578EDB);
  --gradient-btn-alt: linear-gradient(135deg, #E4587B, #578EDB);
  --gradient-danger: linear-gradient(135deg, #58E4C1, #58E47B);
  --ink: #E4F1F0; --bg: #081413; --bg-soft: #102322; --card: #0E1D1C;
  --input-bg: #142927; --muted: #8BB1AE; --border: rgba(255,255,255,0.14);
  --shadow: 0 4px 22px rgba(0,0,0,0.5);
  --gradient-nav: linear-gradient(100deg, #091B19 0%, #143431 60%, #193543 100%);
  --nav-text: rgba(255,255,255,0.75); --nav-text-strong: #FFFFFF;
  --alert-bg: rgba(255,120,80,0.14); --alert-fg: #58E4C1; --alert-border: rgba(255,120,80,0.35);
  --alert-success-bg: rgba(40,190,150,0.14); --alert-success-fg: #E4587B; --alert-success-border: rgba(40,190,150,0.35);
  --badge-free-bg: rgba(40,190,150,0.16); --badge-free-fg: #E4587B;
  --badge-occ-bg: rgba(230,70,120,0.16); --badge-occ-fg: #58E47B;
  --focus-ring: #3CDDCF; --shimmer-opacity: 1;
}
[data-theme="reef"] .theme-toggle .theme-dot { background: linear-gradient(135deg,#3CDDCF,#578EDB); }

/* THEME Pearl */
[data-theme="pearl"] {
  --c-orange: #2F2FC6; --c-coral: #2F94C6; --c-magenta: #2FC6AD;
  --c-violet: #3BC62F; --c-blue: #2F7AC6; --c-teal: #C6612F;
  --gradient-brand: linear-gradient(120deg, #2273C3 0%, #482DD2 50%, #C6612F 100%);
  --gradient-btn: linear-gradient(135deg, #2273C3, #482DD2);
  --gradient-btn-alt: linear-gradient(135deg, #C6612F, #482DD2);
  --gradient-danger: linear-gradient(135deg, #2F94C6, #2FC6AD);
  --ink: #142434; --bg: #F3F6FA; --bg-soft: #E6EDF4; --card: #FFFFFF;
  --input-bg: #F5F7FA; --muted: #5E7082; --border: rgba(0,0,0,0.12);
  --shadow: 0 3px 14px rgba(0,0,0,0.10);
  --gradient-nav: linear-gradient(100deg, #1F4C7A 0%, #306BA6 60%, #3939C6 100%);
  --nav-text: rgba(255,255,255,0.85); --nav-text-strong: #FFFFFF;
  --alert-bg: rgba(255,120,80,0.14); --alert-fg: #2F94C6; --alert-border: rgba(255,120,80,0.35);
  --alert-success-bg: rgba(40,190,150,0.14); --alert-success-fg: #C6612F; --alert-success-border: rgba(40,190,150,0.35);
  --badge-free-bg: rgba(40,190,150,0.16); --badge-free-fg: #C6612F;
  --badge-occ-bg: rgba(230,70,120,0.16); --badge-occ-fg: #2FC6AD;
  --focus-ring: #2273C3; --shimmer-opacity: 0.5;
}
[data-theme="pearl"] .theme-toggle .theme-dot { background: linear-gradient(135deg,#2273C3,#482DD2); }

/* THEME Inkwell */
[data-theme="inkwell"] {
  --c-orange: #9E58E4; --c-coral: #5870E4; --c-magenta: #58B5E4;
  --c-violet: #58E492; --c-blue: #5858E4; --c-teal: #E4CD58;
  --gradient-brand: linear-gradient(120deg, #3C3CDD 0%, #AF57DB 50%, #E4CD58 100%);
  --gradient-btn: linear-gradient(135deg, #3C3CDD, #AF57DB);
  --gradient-btn-alt: linear-gradient(135deg, #E4CD58, #AF57DB);
  --gradient-danger: linear-gradient(135deg, #5870E4, #58B5E4);
  --ink: #E4E4F1; --bg: #080814; --bg-soft: #101023; --card: #0E0E1D;
  --input-bg: #141429; --muted: #8B8BB1; --border: rgba(255,255,255,0.14);
  --shadow: 0 4px 22px rgba(0,0,0,0.5);
  --gradient-nav: linear-gradient(100deg, #09091B 0%, #141434 60%, #2A1943 100%);
  --nav-text: rgba(255,255,255,0.75); --nav-text-strong: #FFFFFF;
  --alert-bg: rgba(255,120,80,0.14); --alert-fg: #5870E4; --alert-border: rgba(255,120,80,0.35);
  --alert-success-bg: rgba(40,190,150,0.14); --alert-success-fg: #E4CD58; --alert-success-border: rgba(40,190,150,0.35);
  --badge-free-bg: rgba(40,190,150,0.16); --badge-free-fg: #E4CD58;
  --badge-occ-bg: rgba(230,70,120,0.16); --badge-occ-fg: #58B5E4;
  --focus-ring: #3C3CDD; --shimmer-opacity: 1;
}
[data-theme="inkwell"] .theme-toggle .theme-dot { background: linear-gradient(135deg,#3C3CDD,#AF57DB); }

/* THEME Sunflower */
[data-theme="sunflower"] {
  --c-orange: #99C62F; --c-coral: #C68F2F; --c-magenta: #C6432F;
  --c-violet: #C62FA5; --c-blue: #C6A82F; --c-teal: #2F66C6;
  --gradient-brand: linear-gradient(120deg, #C3A322 0%, #85D22D 50%, #2F66C6 100%);
  --gradient-btn: linear-gradient(135deg, #C3A322, #85D22D);
  --gradient-btn-alt: linear-gradient(135deg, #2F66C6, #85D22D);
  --gradient-danger: linear-gradient(135deg, #C68F2F, #C6432F);
  --ink: #342D14; --bg: #FAF8F3; --bg-soft: #F4F1E6; --card: #FFFFFF;
  --input-bg: #FAF9F5; --muted: #827B5E; --border: rgba(0,0,0,0.12);
  --shadow: 0 3px 14px rgba(0,0,0,0.10);
  --gradient-nav: linear-gradient(100deg, #7A681F 0%, #A68E30 60%, #9CC639 100%);
  --nav-text: rgba(255,255,255,0.85); --nav-text-strong: #FFFFFF;
  --alert-bg: rgba(255,120,80,0.14); --alert-fg: #C68F2F; --alert-border: rgba(255,120,80,0.35);
  --alert-success-bg: rgba(40,190,150,0.14); --alert-success-fg: #2F66C6; --alert-success-border: rgba(40,190,150,0.35);
  --badge-free-bg: rgba(40,190,150,0.16); --badge-free-fg: #2F66C6;
  --badge-occ-bg: rgba(230,70,120,0.16); --badge-occ-fg: #C6432F;
  --focus-ring: #C3A322; --shimmer-opacity: 0.5;
}
[data-theme="sunflower"] .theme-toggle .theme-dot { background: linear-gradient(135deg,#C3A322,#85D22D); }

/* THEME Aqua */
[data-theme="aqua"] {
  --c-orange: #2F61C6; --c-coral: #2FC6C6; --c-magenta: #2FC67A;
  --c-violet: #6EC62F; --c-blue: #2FADC6; --c-teal: #C62F2F;
  --gradient-brand: linear-gradient(120deg, #22A8C3 0%, #2D48D2 50%, #C62F2F 100%);
  --gradient-btn: linear-gradient(135deg, #22A8C3, #2D48D2);
  --gradient-btn-alt: linear-gradient(135deg, #C62F2F, #2D48D2);
  --gradient-danger: linear-gradient(135deg, #2FC6C6, #2FC67A);
  --ink: #142E34; --bg: #F3F8FA; --bg-soft: #E6F2F4; --card: #FFFFFF;
  --input-bg: #F5F9FA; --muted: #5E7C82; --border: rgba(0,0,0,0.12);
  --shadow: 0 3px 14px rgba(0,0,0,0.10);
  --gradient-nav: linear-gradient(100deg, #1F6B7A 0%, #3092A6 60%, #3968C6 100%);
  --nav-text: rgba(255,255,255,0.85); --nav-text-strong: #FFFFFF;
  --alert-bg: rgba(255,120,80,0.14); --alert-fg: #2FC6C6; --alert-border: rgba(255,120,80,0.35);
  --alert-success-bg: rgba(40,190,150,0.14); --alert-success-fg: #C62F2F; --alert-success-border: rgba(40,190,150,0.35);
  --badge-free-bg: rgba(40,190,150,0.16); --badge-free-fg: #C62F2F;
  --badge-occ-bg: rgba(230,70,120,0.16); --badge-occ-fg: #2FC67A;
  --focus-ring: #22A8C3; --shimmer-opacity: 0.5;
}
[data-theme="aqua"] .theme-toggle .theme-dot { background: linear-gradient(135deg,#22A8C3,#2D48D2); }

/* THEME Terracotta */
[data-theme="terracotta"] {
  --c-orange: #C6AD2F; --c-coral: #C6482F; --c-magenta: #C62F61;
  --c-violet: #A02FC6; --c-blue: #C6612F; --c-teal: #2FADC6;
  --gradient-brand: linear-gradient(120deg, #C35822 0%, #D2D22D 50%, #2FADC6 100%);
  --gradient-btn: linear-gradient(135deg, #C35822, #D2D22D);
  --gradient-btn-alt: linear-gradient(135deg, #2FADC6, #D2D22D);
  --gradient-danger: linear-gradient(135deg, #C6482F, #C62F61);
  --ink: #341E14; --bg: #FAF5F3; --bg-soft: #F4EBE6; --card: #FFFFFF;
  --input-bg: #FAF6F5; --muted: #826A5E; --border: rgba(0,0,0,0.12);
  --shadow: 0 3px 14px rgba(0,0,0,0.10);
  --gradient-nav: linear-gradient(100deg, #7A3D1F 0%, #A65730 60%, #C6AE39 100%);
  --nav-text: rgba(255,255,255,0.85); --nav-text-strong: #FFFFFF;
  --alert-bg: rgba(255,120,80,0.14); --alert-fg: #C6482F; --alert-border: rgba(255,120,80,0.35);
  --alert-success-bg: rgba(40,190,150,0.14); --alert-success-fg: #2FADC6; --alert-success-border: rgba(40,190,150,0.35);
  --badge-free-bg: rgba(40,190,150,0.16); --badge-free-fg: #2FADC6;
  --badge-occ-bg: rgba(230,70,120,0.16); --badge-occ-fg: #C62F61;
  --focus-ring: #C35822; --shimmer-opacity: 0.5;
}
[data-theme="terracotta"] .theme-toggle .theme-dot { background: linear-gradient(135deg,#C35822,#D2D22D); }

/* THEME Olive */
[data-theme="olive"] {
  --c-orange: #54C62F; --c-coral: #BAC62F; --c-magenta: #C6872F;
  --c-violet: #C62F61; --c-blue: #A0C62F; --c-teal: #3B2FC6;
  --gradient-brand: linear-gradient(120deg, #9BC322 0%, #3AD22D 50%, #3B2FC6 100%);
  --gradient-btn: linear-gradient(135deg, #9BC322, #3AD22D);
  --gradient-btn-alt: linear-gradient(135deg, #3B2FC6, #3AD22D);
  --gradient-danger: linear-gradient(135deg, #BAC62F, #C6872F);
  --ink: #2C3414; --bg: #F8FAF3; --bg-soft: #F1F4E6; --card: #FFFFFF;
  --input-bg: #F9FAF5; --muted: #79825E; --border: rgba(0,0,0,0.12);
  --shadow: 0 3px 14px rgba(0,0,0,0.10);
  --gradient-nav: linear-gradient(100deg, #637A1F 0%, #89A630 60%, #5CC639 100%);
  --nav-text: rgba(255,255,255,0.85); --nav-text-strong: #FFFFFF;
  --alert-bg: rgba(255,120,80,0.14); --alert-fg: #BAC62F; --alert-border: rgba(255,120,80,0.35);
  --alert-success-bg: rgba(40,190,150,0.14); --alert-success-fg: #3B2FC6; --alert-success-border: rgba(40,190,150,0.35);
  --badge-free-bg: rgba(40,190,150,0.16); --badge-free-fg: #3B2FC6;
  --badge-occ-bg: rgba(230,70,120,0.16); --badge-occ-fg: #C6872F;
  --focus-ring: #9BC322; --shimmer-opacity: 0.5;
}
[data-theme="olive"] .theme-toggle .theme-dot { background: linear-gradient(135deg,#9BC322,#3AD22D); }

/* THEME Raspberry */
[data-theme="raspberry"] {
  --c-orange: #E46458; --c-coral: #E458AA; --c-magenta: #D858E4;
  --c-violet: #5858E4; --c-blue: #E45892; --c-teal: #58E492;
  --gradient-brand: linear-gradient(120deg, #DD3C7F 0%, #DB7857 50%, #58E492 100%);
  --gradient-btn: linear-gradient(135deg, #DD3C7F, #DB7857);
  --gradient-btn-alt: linear-gradient(135deg, #58E492, #DB7857);
  --gradient-danger: linear-gradient(135deg, #E458AA, #D858E4);
  --ink: #F1E4EA; --bg: #14080D; --bg-soft: #231018; --card: #1D0E14;
  --input-bg: #29141D; --muted: #B18B9B; --border: rgba(255,255,255,0.14);
  --shadow: 0 4px 22px rgba(0,0,0,0.5);
  --gradient-nav: linear-gradient(100deg, #1B0910 0%, #341421 60%, #431919 100%);
  --nav-text: rgba(255,255,255,0.75); --nav-text-strong: #FFFFFF;
  --alert-bg: rgba(255,120,80,0.14); --alert-fg: #E458AA; --alert-border: rgba(255,120,80,0.35);
  --alert-success-bg: rgba(40,190,150,0.14); --alert-success-fg: #58E492; --alert-success-border: rgba(40,190,150,0.35);
  --badge-free-bg: rgba(40,190,150,0.16); --badge-free-fg: #58E492;
  --badge-occ-bg: rgba(230,70,120,0.16); --badge-occ-fg: #D858E4;
  --focus-ring: #DD3C7F; --shimmer-opacity: 1;
}
[data-theme="raspberry"] .theme-toggle .theme-dot { background: linear-gradient(135deg,#DD3C7F,#DB7857); }

/* THEME Sky */
[data-theme="sky"] {
  --c-orange: #2F3BC6; --c-coral: #2FA0C6; --c-magenta: #2FC6A0;
  --c-violet: #48C62F; --c-blue: #2F87C6; --c-teal: #C6542F;
  --gradient-brand: linear-gradient(120deg, #2280C3 0%, #3A2DD2 50%, #C6542F 100%);
  --gradient-btn: linear-gradient(135deg, #2280C3, #3A2DD2);
  --gradient-btn-alt: linear-gradient(135deg, #C6542F, #3A2DD2);
  --gradient-danger: linear-gradient(135deg, #2FA0C6, #2FC6A0);
  --ink: #142634; --bg: #F3F7FA; --bg-soft: #E6EEF4; --card: #FFFFFF;
  --input-bg: #F5F8FA; --muted: #5E7382; --border: rgba(0,0,0,0.12);
  --shadow: 0 3px 14px rgba(0,0,0,0.10);
  --gradient-nav: linear-gradient(100deg, #1F547A 0%, #3075A6 60%, #3945C6 100%);
  --nav-text: rgba(255,255,255,0.85); --nav-text-strong: #FFFFFF;
  --alert-bg: rgba(255,120,80,0.14); --alert-fg: #2FA0C6; --alert-border: rgba(255,120,80,0.35);
  --alert-success-bg: rgba(40,190,150,0.14); --alert-success-fg: #C6542F; --alert-success-border: rgba(40,190,150,0.35);
  --badge-free-bg: rgba(40,190,150,0.16); --badge-free-fg: #C6542F;
  --badge-occ-bg: rgba(230,70,120,0.16); --badge-occ-fg: #2FC6A0;
  --focus-ring: #2280C3; --shimmer-opacity: 0.5;
}
[data-theme="sky"] .theme-toggle .theme-dot { background: linear-gradient(135deg,#2280C3,#3A2DD2); }

/* THEME Graphite */
[data-theme="graphite"] {
  --c-orange: #7058E4; --c-coral: #589EE4; --c-magenta: #58E4E4;
  --c-violet: #58E464; --c-blue: #5887E4; --c-teal: #E49E58;
  --gradient-brand: linear-gradient(120deg, #3C71DD 0%, #8357DB 50%, #E49E58 100%);
  --gradient-btn: linear-gradient(135deg, #3C71DD, #8357DB);
  --gradient-btn-alt: linear-gradient(135deg, #E49E58, #8357DB);
  --gradient-danger: linear-gradient(135deg, #589EE4, #58E4E4);
  --ink: #E4E9F1; --bg: #080C14; --bg-soft: #101623; --card: #0E131D;
  --input-bg: #141B29; --muted: #8B98B1; --border: rgba(255,255,255,0.14);
  --shadow: 0 4px 22px rgba(0,0,0,0.5);
  --gradient-nav: linear-gradient(100deg, #090F1B 0%, #141E34 60%, #1D1943 100%);
  --nav-text: rgba(255,255,255,0.75); --nav-text-strong: #FFFFFF;
  --alert-bg: rgba(255,120,80,0.14); --alert-fg: #589EE4; --alert-border: rgba(255,120,80,0.35);
  --alert-success-bg: rgba(40,190,150,0.14); --alert-success-fg: #E49E58; --alert-success-border: rgba(40,190,150,0.35);
  --badge-free-bg: rgba(40,190,150,0.16); --badge-free-fg: #E49E58;
  --badge-occ-bg: rgba(230,70,120,0.16); --badge-occ-fg: #58E4E4;
  --focus-ring: #3C71DD; --shimmer-opacity: 1;
}
[data-theme="graphite"] .theme-toggle .theme-dot { background: linear-gradient(135deg,#3C71DD,#8357DB); }

/* THEME Copper */
[data-theme="copper"] {
  --c-orange: #E4D858; --c-coral: #E47B58; --c-magenta: #E4587B;
  --c-violet: #CD58E4; --c-blue: #E49258; --c-teal: #58C1E4;
  --gradient-brand: linear-gradient(120deg, #DD7F3C 0%, #D0DB57 50%, #58C1E4 100%);
  --gradient-btn: linear-gradient(135deg, #DD7F3C, #D0DB57);
  --gradient-btn-alt: linear-gradient(135deg, #58C1E4, #D0DB57);
  --gradient-danger: linear-gradient(135deg, #E47B58, #E4587B);
  --ink: #F1EAE4; --bg: #140D08; --bg-soft: #231810; --card: #1D140E;
  --input-bg: #291D14; --muted: #B19B8B; --border: rgba(255,255,255,0.14);
  --shadow: 0 4px 22px rgba(0,0,0,0.5);
  --gradient-nav: linear-gradient(100deg, #1B1009 0%, #342114 60%, #433C19 100%);
  --nav-text: rgba(255,255,255,0.75); --nav-text-strong: #FFFFFF;
  --alert-bg: rgba(255,120,80,0.14); --alert-fg: #E47B58; --alert-border: rgba(255,120,80,0.35);
  --alert-success-bg: rgba(40,190,150,0.14); --alert-success-fg: #58C1E4; --alert-success-border: rgba(40,190,150,0.35);
  --badge-free-bg: rgba(40,190,150,0.16); --badge-free-fg: #58C1E4;
  --badge-occ-bg: rgba(230,70,120,0.16); --badge-occ-fg: #E4587B;
  --focus-ring: #DD7F3C; --shimmer-opacity: 1;
}
[data-theme="copper"] .theme-toggle .theme-dot { background: linear-gradient(135deg,#DD7F3C,#D0DB57); }

/* THEME Lilac */
[data-theme="lilac"] {
  --c-orange: #C62FBA; --c-coral: #6E2FC6; --c-magenta: #2F3BC6;
  --c-violet: #2FC6C6; --c-blue: #872FC6; --c-teal: #87C62F;
  --gradient-brand: linear-gradient(120deg, #8022C3 0%, #D22DA9 50%, #87C62F 100%);
  --gradient-btn: linear-gradient(135deg, #8022C3, #D22DA9);
  --gradient-btn-alt: linear-gradient(135deg, #87C62F, #D22DA9);
  --gradient-danger: linear-gradient(135deg, #6E2FC6, #2F3BC6);
  --ink: #261434; --bg: #F7F3FA; --bg-soft: #EEE6F4; --card: #FFFFFF;
  --input-bg: #F8F5FA; --muted: #735E82; --border: rgba(0,0,0,0.12);
  --shadow: 0 3px 14px rgba(0,0,0,0.10);
  --gradient-nav: linear-gradient(100deg, #541F7A 0%, #7530A6 60%, #C639BA 100%);
  --nav-text: rgba(255,255,255,0.85); --nav-text-strong: #FFFFFF;
  --alert-bg: rgba(255,120,80,0.14); --alert-fg: #6E2FC6; --alert-border: rgba(255,120,80,0.35);
  --alert-success-bg: rgba(40,190,150,0.14); --alert-success-fg: #87C62F; --alert-success-border: rgba(40,190,150,0.35);
  --badge-free-bg: rgba(40,190,150,0.16); --badge-free-fg: #87C62F;
  --badge-occ-bg: rgba(230,70,120,0.16); --badge-occ-fg: #2F3BC6;
  --focus-ring: #8022C3; --shimmer-opacity: 0.5;
}
[data-theme="lilac"] .theme-toggle .theme-dot { background: linear-gradient(135deg,#8022C3,#D22DA9); }

/* THEME Pine */
[data-theme="pine"] {
  --c-orange: #58D8E4; --c-coral: #58E492; --c-magenta: #64E458;
  --c-violet: #E4E458; --c-blue: #58E4AA; --c-teal: #E458AA;
  --gradient-brand: linear-gradient(120deg, #3CDD9A 0%, #57BADB 50%, #E458AA 100%);
  --gradient-btn: linear-gradient(135deg, #3CDD9A, #57BADB);
  --gradient-btn-alt: linear-gradient(135deg, #E458AA, #57BADB);
  --gradient-danger: linear-gradient(135deg, #58E492, #64E458);
  --ink: #E4F1EC; --bg: #08140F; --bg-soft: #10231B; --card: #0E1D17;
  --input-bg: #142920; --muted: #8BB1A1; --border: rgba(255,255,255,0.14);
  --shadow: 0 4px 22px rgba(0,0,0,0.5);
  --gradient-nav: linear-gradient(100deg, #091B13 0%, #143426 60%, #194343 100%);
  --nav-text: rgba(255,255,255,0.75); --nav-text-strong: #FFFFFF;
  --alert-bg: rgba(255,120,80,0.14); --alert-fg: #58E492; --alert-border: rgba(255,120,80,0.35);
  --alert-success-bg: rgba(40,190,150,0.14); --alert-success-fg: #E458AA; --alert-success-border: rgba(40,190,150,0.35);
  --badge-free-bg: rgba(40,190,150,0.16); --badge-free-fg: #E458AA;
  --badge-occ-bg: rgba(230,70,120,0.16); --badge-occ-fg: #64E458;
  --focus-ring: #3CDD9A; --shimmer-opacity: 1;
}
[data-theme="pine"] .theme-toggle .theme-dot { background: linear-gradient(135deg,#3CDD9A,#57BADB); }

/* THEME Coral Red */
[data-theme="coralred"] {
  --c-orange: #C6942F; --c-coral: #C62F2F; --c-magenta: #C62F7A;
  --c-violet: #872FC6; --c-blue: #C6482F; --c-teal: #2FC6C6;
  --gradient-brand: linear-gradient(120deg, #C33D22 0%, #D2B72D 50%, #2FC6C6 100%);
  --gradient-btn: linear-gradient(135deg, #C33D22, #D2B72D);
  --gradient-btn-alt: linear-gradient(135deg, #2FC6C6, #D2B72D);
  --gradient-danger: linear-gradient(135deg, #C62F2F, #C62F7A);
  --ink: #341914; --bg: #FAF4F3; --bg-soft: #F4E9E6; --card: #FFFFFF;
  --input-bg: #FAF6F5; --muted: #82645E; --border: rgba(0,0,0,0.12);
  --shadow: 0 3px 14px rgba(0,0,0,0.10);
  --gradient-nav: linear-gradient(100deg, #7A2E1F 0%, #A64430 60%, #C69739 100%);
  --nav-text: rgba(255,255,255,0.85); --nav-text-strong: #FFFFFF;
  --alert-bg: rgba(255,120,80,0.14); --alert-fg: #C62F2F; --alert-border: rgba(255,120,80,0.35);
  --alert-success-bg: rgba(40,190,150,0.14); --alert-success-fg: #2FC6C6; --alert-success-border: rgba(40,190,150,0.35);
  --badge-free-bg: rgba(40,190,150,0.16); --badge-free-fg: #2FC6C6;
  --badge-occ-bg: rgba(230,70,120,0.16); --badge-occ-fg: #C62F7A;
  --focus-ring: #C33D22; --shimmer-opacity: 0.5;
}
[data-theme="coralred"] .theme-toggle .theme-dot { background: linear-gradient(135deg,#C33D22,#D2B72D); }

/* THEME Mustard */
[data-theme="mustard"] {
  --c-orange: #94C62F; --c-coral: #C6942F; --c-magenta: #C6482F;
  --c-violet: #C62FA0; --c-blue: #C6AD2F; --c-teal: #2F61C6;
  --gradient-brand: linear-gradient(120deg, #C3A822 0%, #80D22D 50%, #2F61C6 100%);
  --gradient-btn: linear-gradient(135deg, #C3A822, #80D22D);
  --gradient-btn-alt: linear-gradient(135deg, #2F61C6, #80D22D);
  --gradient-danger: linear-gradient(135deg, #C6942F, #C6482F);
  --ink: #342E14; --bg: #FAF8F3; --bg-soft: #F4F2E6; --card: #FFFFFF;
  --input-bg: #FAF9F5; --muted: #827C5E; --border: rgba(0,0,0,0.12);
  --shadow: 0 3px 14px rgba(0,0,0,0.10);
  --gradient-nav: linear-gradient(100deg, #7A6B1F 0%, #A69230 60%, #97C639 100%);
  --nav-text: rgba(255,255,255,0.85); --nav-text-strong: #FFFFFF;
  --alert-bg: rgba(255,120,80,0.14); --alert-fg: #C6942F; --alert-border: rgba(255,120,80,0.35);
  --alert-success-bg: rgba(40,190,150,0.14); --alert-success-fg: #2F61C6; --alert-success-border: rgba(40,190,150,0.35);
  --badge-free-bg: rgba(40,190,150,0.16); --badge-free-fg: #2F61C6;
  --badge-occ-bg: rgba(230,70,120,0.16); --badge-occ-fg: #C6482F;
  --focus-ring: #C3A822; --shimmer-opacity: 0.5;
}
[data-theme="mustard"] .theme-toggle .theme-dot { background: linear-gradient(135deg,#C3A822,#80D22D); }

/* THEME Blueberry */
[data-theme="blueberry"] {
  --c-orange: #6E2FC6; --c-coral: #2F54C6; --c-magenta: #2FA0C6;
  --c-violet: #2FC661; --c-blue: #2F3BC6; --c-teal: #C6A02F;
  --gradient-brand: linear-gradient(120deg, #2230C3 0%, #8D2DD2 50%, #C6A02F 100%);
  --gradient-btn: linear-gradient(135deg, #2230C3, #8D2DD2);
  --gradient-btn-alt: linear-gradient(135deg, #C6A02F, #8D2DD2);
  --gradient-danger: linear-gradient(135deg, #2F54C6, #2FA0C6);
  --ink: #141634; --bg: #F3F3FA; --bg-soft: #E6E7F4; --card: #FFFFFF;
  --input-bg: #F5F5FA; --muted: #5E6182; --border: rgba(0,0,0,0.12);
  --shadow: 0 3px 14px rgba(0,0,0,0.10);
  --gradient-nav: linear-gradient(100deg, #1F267A 0%, #303AA6 60%, #7439C6 100%);
  --nav-text: rgba(255,255,255,0.85); --nav-text-strong: #FFFFFF;
  --alert-bg: rgba(255,120,80,0.14); --alert-fg: #2F54C6; --alert-border: rgba(255,120,80,0.35);
  --alert-success-bg: rgba(40,190,150,0.14); --alert-success-fg: #C6A02F; --alert-success-border: rgba(40,190,150,0.35);
  --badge-free-bg: rgba(40,190,150,0.16); --badge-free-fg: #C6A02F;
  --badge-occ-bg: rgba(230,70,120,0.16); --badge-occ-fg: #2FA0C6;
  --focus-ring: #2230C3; --shimmer-opacity: 0.5;
}
[data-theme="blueberry"] .theme-toggle .theme-dot { background: linear-gradient(135deg,#2230C3,#8D2DD2); }

/* Theme panel: 67 themes need scroll + always-on-top */
.theme-panel {
  max-height: min(70vh, 460px);
  overflow-y: auto;
  z-index: 10050 !important;
  overscroll-behavior: contain;
}

/* ── Reserved table state ─────────────────────────────────────────────── */
.table-card.table-reserved {
  background: color-mix(in srgb, #F59E0B 12%, var(--card));
  border-color: color-mix(in srgb, #F59E0B 45%, transparent);
}
.table-card.table-reserved::before { background: linear-gradient(90deg, #F59E0B, #FBBF24); }
.reserved-label {
  font-size: 0.68rem;
  font-weight: 800;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: #B45309;
  margin-top: 0.2rem;
}
.table-card-form { position: relative; }

/* ── Language dropdown (nav) ──────────────────────────────────────────── */
.lang-dropdown { position: relative; display: inline-block; }
.lang-trigger {
  border: 1px solid var(--border);
  background: var(--card);
  color: var(--ink);
  border-radius: 8px;
  cursor: pointer;
  padding: 0.32rem 0.55rem;
  font-size: 0.85rem;
  display: inline-flex;
  align-items: center;
  gap: 0.3rem;
}
.lang-menu {
  position: absolute;
  right: 0;
  top: calc(100% + 4px);
  display: none;
  flex-direction: column;
  min-width: 130px;
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: 10px;
  box-shadow: 0 8px 26px rgba(0,0,0,0.25);
  padding: 0.3rem;
  z-index: 10040;
}
/* Show when JS adds .open OR on hover (CSS fallback if JS is slow) */
.lang-menu.open { display: flex; }
.lang-dropdown:hover .lang-menu { display: flex; }
.lang-menu .lang-btn {
  border: none;
  background: transparent;
  color: var(--ink);
  text-align: left;
  padding: 0.45rem 0.6rem;
  border-radius: 7px;
  cursor: pointer;
  font: inherit;
}
.lang-menu .lang-btn:hover { background: var(--bg-soft); }
.lang-menu .lang-btn.active { background: var(--gradient-btn); color: #fff; }

/* ── PHONE: fix squashed LEFT (order) panel in side-by-side ───────────── */
/* ── Small tablet band only (NOT phone): fix squashed LEFT (order) panel ── */
@media (min-width: 641px) and (max-width: 760px) {
  /* More room to the order panel: near 50/50 split */
  .order-layout {
    grid-template-columns: minmax(0, 1fr) minmax(0, 1.1fr);
    gap: 0.4rem;
  }
  /* Hide the unit-price column entirely on phone — Qty and line Total remain,
     which is all staff needs while taking an order. Frees real width. */
  .order-table th:nth-child(2), .order-table td:nth-child(2) { display: none; }
  /* Item names wrap instead of truncating into a sliver */
  .order-table td:first-child { white-space: normal; overflow-wrap: anywhere; line-height: 1.25; }
  /* Slightly larger readable text now that there's room */
  .order-table th, .order-table td { font-size: 0.78rem; padding: 0.32rem 0.28rem; }
  /* Qty stepper compact but tappable */
  .order-table .qty-btn, .order-table .btn { min-width: 1.7rem; min-height: 1.7rem; padding: 0.1rem; font-size: 0.8rem; }
  /* Totals + finalize readable */
  .order-totals { font-size: 0.88rem; }
  .total-final-row strong { font-size: 1.05rem; }
  /* History accordion smaller */
  .order-history summary { font-size: 0.8rem; }
}

/* ── Long-press progress bar (5s hold to reserve/unreserve) ──────────── */
.lp-progress {
  position: absolute;
  bottom: 0; left: 0; right: 0;
  height: 5px;
  background: rgba(0,0,0,0.15);
  border-radius: 0 0 var(--radius, 10px) var(--radius, 10px);
  overflow: hidden;
  z-index: 5;
  pointer-events: none;
}
.lp-bar {
  height: 100%;
  width: 0;
  background: linear-gradient(90deg, #F59E0B, #FBBF24);
  animation: lp-fill 3.5s linear forwards;
  border-radius: inherit;
}
@keyframes lp-fill {
  from { width: 0; }
  to   { width: 100%; }
}
/* Hold countdown number — a standalone badge centered on the table card
   itself (NOT nested inside .lp-progress, which is too thin and clips
   content). Large and high-contrast so it's clearly readable while holding. */
.lp-count {
  position: absolute;
  top: 50%; left: 50%;
  transform: translate(-50%, -50%);
  font-size: 1.4rem;
  font-weight: 800;
  color: #fff;
  background: rgba(0,0,0,0.62);
  padding: 0.3rem 0.8rem;
  border-radius: 12px;
  pointer-events: none;
  z-index: 6;
  letter-spacing: 0.02em;
}
.table-card.holding {
  outline: 2px solid #F59E0B;
  outline-offset: -2px;
}

/* ── Inline shortcut bar (opens below the grid, left-aligned) ──────────── */
.isc-popup-overlay {
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,0.55);
  display: none;
  align-items: center;
  justify-content: center;
  z-index: 99999;
  padding: 1rem;
}
.isc-popup-overlay:not([hidden]) { display: flex; }
.isc-popup-card {
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: 18px;
  width: 100%;
  max-width: 480px;
  max-height: 85vh;
  overflow-y: auto;
  box-shadow: 0 24px 70px rgba(0,0,0,0.4);
  padding: 1rem 1.1rem;
  animation: isc-pop-in 0.18s ease;
}
@keyframes isc-pop-in {
  from { opacity: 0; transform: scale(0.94); }
  to   { opacity: 1; transform: scale(1); }
}
.isc-head {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  flex-wrap: wrap;
  margin-bottom: 0.7rem;
  position: sticky;
  top: 0;
  background: var(--card);
  padding-bottom: 0.4rem;
  border-bottom: 1px solid var(--border);
}
.isc-head strong { font-size: 1.05rem; flex: 1 1 100%; }
.isc-close {
  border: none;
  background: var(--bg-soft);
  color: var(--ink);
  border-radius: 8px;
  padding: 0.35rem 0.7rem;
  cursor: pointer;
  font-size: 0.85rem;
}
.isc-chips { display: flex; flex-wrap: wrap; gap: 0.5rem; }
.isc-chip {
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 0.6rem 0.9rem;
  border: 1px solid var(--border);
  border-radius: 12px;
  background: var(--bg-soft);
  color: var(--ink);
  cursor: pointer;
  min-width: 100px;
  transition: transform 0.1s, background 0.1s;
  -webkit-user-select: none;
  -webkit-touch-callout: none;
  user-select: none;
}
.isc-chip:hover { background: var(--input-bg); }
.isc-chip:active { transform: scale(0.96); }
.isc-chip b { font-size: 0.95rem; }
.isc-chip .muted { font-size: 0.72rem; }
.isc-added {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem;
  margin-top: 0.6rem;
  padding-top: 0.6rem;
  border-top: 1px dashed var(--border);
}
.isc-added-chip {
  background: color-mix(in srgb, #16a34a 15%, transparent);
  color: #15803d;
  border-radius: 14px;
  padding: 0.2rem 0.6rem;
  font-size: 0.78rem;
  font-weight: 600;
}

/* ── Menu item row: whole row tappable, cursor pointer ────────────────── */
.menu-item-row { cursor: pointer; user-select: none; transition: background 0.15s; }
.menu-item-row:active { background: color-mix(in srgb, var(--c-teal) 18%, transparent); }

/* Flash effect when an item is added (+1) — brief green glow that fades */
@keyframes item-flash {
  0%   { background: color-mix(in srgb, var(--c-teal) 35%, transparent); }
  100% { background: transparent; }
}
.menu-item-row.item-added-flash {
  animation: item-flash 0.45s ease-out;
}

/* ── Shortcut chip: drag-reorder in edit mode ─────────────────────────── */
.shortcut-chip.sc-editing[draggable="true"] { cursor: grab; }
.shortcut-chip.sc-dragging { opacity: 0.5; cursor: grabbing; }
.shortcut-chip.sc-drop-target {
  outline: 2px dashed var(--c-orange);
  outline-offset: 2px;
}

/* ── Qty stepper: − button on the LEFT, then number ───────────────────── */
.qty-stepper {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  flex-direction: row;   /* − first (left), qty number after */
}

/* Table capacity: plain bold number + "seats" word, no emoji */
.table-cap-emoji { display: none !important; }

/* ═══════════════════════════════════════════════════════════════════════
   DROPDOWN VISIBILITY FIX — theme + language menus must float ABOVE
   everything, and never get clipped by the nav or hidden behind the phone
   status bar in fullscreen mode.
   ═══════════════════════════════════════════════════════════════════════ */

/* Nav must not clip its dropdown children */
.topnav { overflow: visible; position: relative; z-index: 9000; }
.topnav-links { overflow: visible; }

/* Theme + lang menus: max stacking so nothing covers them */
.theme-panel { z-index: 99999 !important; }
.lang-menu   { z-index: 99999 !important; }

/* On phones, anchor the open menus as fixed panels near the top-right so
   they're always fully on-screen (never sliding under the status bar). */
@media (max-width: 640px) {
  .theme-panel {
    position: fixed !important;
    top: 56px !important;
    right: 8px !important;
    left: auto !important;
    max-height: 70vh;
    max-width: calc(100vw - 16px);
    width: 300px;
  }
  .lang-menu.open, .lang-dropdown:hover .lang-menu {
    position: fixed !important;
    top: 56px !important;
    right: 8px !important;
    left: auto !important;
  }
}

/* In real fullscreen, push panels below any safe-area inset */
:fullscreen .theme-panel, :-webkit-full-screen .theme-panel,
:fullscreen .lang-menu,  :-webkit-full-screen .lang-menu {
  top: calc(56px + env(safe-area-inset-top, 0px)) !important;
}

/* ═══ EXPENSES + SALARY PAGES ═══════════════════════════════════════════ */

/* Date range form */
.range-form { display: flex; gap: 0.6rem; align-items: end; flex-wrap: wrap; margin: 0.5rem 0 1rem; }
.range-form label { display: flex; flex-direction: column; gap: 0.2rem; font-size: 0.85rem; }
.range-form input { padding: 0.4rem 0.5rem; border: 1px solid var(--border); border-radius: 8px; background: var(--input-bg); color: var(--ink); }

/* Balance cards */
.balance-cards { display: grid; grid-template-columns: repeat(3, 1fr); gap: 0.75rem; margin-bottom: 1rem; }
.bal-card {
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: 14px;
  padding: 1rem;
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
  box-shadow: var(--shadow);
}
.bal-label { font-size: 0.8rem; color: var(--muted); }
.bal-value { font-size: 1.5rem; font-weight: 800; font-variant-numeric: tabular-nums; }
.bal-income .bal-value { color: #16a34a; }
.bal-expense .bal-value { color: #dc2626; }
.bal-positive { border-color: #16a34a; }
.bal-positive .bal-value { color: #16a34a; }
.bal-negative { border-color: #dc2626; }
.bal-negative .bal-value { color: #dc2626; }
@media (max-width: 640px) {
  .balance-cards { grid-template-columns: 1fr; gap: 0.5rem; }
  .bal-value { font-size: 1.25rem; }
}

/* Expense form */
.expense-form { display: flex; flex-direction: column; gap: 0.6rem; }
.ef-row { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 0.6rem; }
.expense-form label { display: flex; flex-direction: column; gap: 0.2rem; font-size: 0.85rem; }
.expense-form input, .expense-form select {
  padding: 0.5rem 0.6rem; border: 1px solid var(--border); border-radius: 8px;
  background: var(--input-bg); color: var(--ink); font-size: 16px;
}
@media (max-width: 640px) { .ef-row { grid-template-columns: 1fr; } }

/* Category chips */
.cat-chips { display: flex; flex-wrap: wrap; gap: 0.5rem; }
.cat-chip {
  background: var(--bg-soft); border: 1px solid var(--border);
  border-radius: 20px; padding: 0.35rem 0.8rem; font-size: 0.85rem;
}

/* Salary cards grid */
.salary-cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 0.75rem; }
.salary-card {
  display: block; text-decoration: none; color: var(--ink);
  background: var(--card); border: 1px solid var(--border);
  border-radius: 14px; padding: 1rem; box-shadow: var(--shadow);
  transition: transform 0.15s, box-shadow 0.15s;
}
.salary-card:hover { transform: translateY(-2px); box-shadow: var(--shadow), 0 8px 20px rgba(0,0,0,0.12); }
.sc-head { display: flex; justify-content: space-between; align-items: center; margin-bottom: 0.6rem; }
.sc-role { font-size: 0.7rem; text-transform: uppercase; letter-spacing: 0.05em; color: var(--muted); background: var(--bg-soft); padding: 0.15rem 0.5rem; border-radius: 6px; }
.sc-body { display: flex; flex-direction: column; gap: 0.35rem; }
.sc-line { display: flex; justify-content: space-between; font-size: 0.9rem; }
.sc-line b { font-variant-numeric: tabular-nums; }
.sc-remaining b { color: var(--c-magenta); font-size: 1.05rem; }
.muted-line { font-size: 0.8rem; color: var(--muted); }

/* Salary detail */
.salary-detail-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 0.75rem; }
@media (max-width: 760px) { .salary-detail-grid { grid-template-columns: 1fr; } }
.stacked-form { display: flex; flex-direction: column; gap: 0.6rem; }
.stacked-form label { display: flex; flex-direction: column; gap: 0.2rem; font-size: 0.85rem; }
.stacked-form input, .stacked-form select {
  padding: 0.5rem 0.6rem; border: 1px solid var(--border); border-radius: 8px;
  background: var(--input-bg); color: var(--ink); font-size: 16px;
}
.totals-strip { display: flex; gap: 1.5rem; flex-wrap: wrap; font-size: 0.9rem; }

/* Transaction badges */
.txn-badge { padding: 0.2rem 0.6rem; border-radius: 6px; font-size: 0.78rem; font-weight: 600; }
.txn-advance { background: rgba(245,158,11,0.18); color: #b45309; }
.txn-payment { background: rgba(22,163,74,0.18); color: #15803d; }
.txn-leave { background: rgba(59,130,246,0.18); color: #1d4ed8; }
.txn-unpaid { background: rgba(107,114,128,0.18); color: #4b5563; }

/* ── Reports: priority category groups ────────────────────────────────── */
.priority-group td { background: color-mix(in srgb, var(--c-orange) 8%, transparent); }
.pg-num {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 1.4rem; height: 1.4rem;
  background: var(--gradient-btn);
  color: #fff;
  border-radius: 50%;
  font-size: 0.75rem;
  font-weight: 700;
  margin-right: 0.3rem;
}
.section-divider td {
  background: var(--bg-soft);
  font-weight: 700;
  font-size: 0.8rem;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--muted);
  padding: 0.4rem 0.75rem;
}

/* ── Category group editor ────────────────────────────────────────────── */
.groups-editor { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 0.75rem; margin: 0.75rem 0; }
.group-editor-block { background: var(--bg-soft); border: 1px solid var(--border); border-radius: 10px; padding: 0.75rem; }
.group-editor-block h4 { margin: 0 0 0.5rem; display: flex; align-items: center; gap: 0.3rem; }
.group-cat-checks { display: flex; flex-direction: column; gap: 0.3rem; }
.cat-check { display: flex; align-items: center; gap: 0.4rem; font-size: 0.85rem; cursor: pointer; }
.cat-check input { width: auto; }

/* ── Table double-click shortcut popup ────────────────────────────────── */
.sc-popup-overlay {
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,0.5);
  display: none;
  align-items: center;
  justify-content: center;
  z-index: 99999;
  padding: 1rem;
}
.sc-popup-overlay.open { display: flex; }
.sc-popup {
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: 16px;
  width: 100%;
  max-width: 420px;
  max-height: 80vh;
  overflow-y: auto;
  box-shadow: 0 20px 60px rgba(0,0,0,0.35);
}
.sc-popup-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0.9rem 1rem;
  border-bottom: 1px solid var(--border);
  position: sticky;
  top: 0;
  background: var(--card);
}
.sc-popup-head strong { font-size: 1.05rem; }
.sc-popup-close {
  border: none;
  background: var(--bg-soft);
  color: var(--ink);
  width: 2rem; height: 2rem;
  border-radius: 8px;
  cursor: pointer;
  font-size: 1rem;
}
.sc-popup-body {
  padding: 1rem;
  display: flex;
  flex-wrap: wrap;
  gap: 0.6rem;
}
.sc-popup-chip {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 0.15rem;
  padding: 0.7rem 1rem;
  border: 1px solid var(--border);
  border-radius: 12px;
  background: var(--bg-soft);
  color: var(--ink);
  cursor: pointer;
  min-width: 110px;
  transition: transform 0.12s, background 0.12s;
}
.sc-popup-chip:hover { transform: translateY(-2px); background: var(--input-bg); }
.sc-popup-chip:active { transform: scale(0.97); }
.sc-popup-chip b { font-size: 1rem; }
.sc-popup-chip .muted { font-size: 0.75rem; }

/* ── Multi-item shortcut builder ──────────────────────────────────────── */
.sc-extra-list { display: flex; flex-wrap: wrap; gap: 0.35rem; width: 100%; }
.sc-extra-chip {
  display: inline-flex;
  align-items: center;
  gap: 0.3rem;
  background: var(--bg-soft);
  border: 1px solid var(--border);
  border-radius: 16px;
  padding: 0.2rem 0.6rem;
  font-size: 0.8rem;
}
.sc-extra-del {
  border: none;
  background: transparent;
  color: var(--c-magenta);
  cursor: pointer;
  font-size: 0.75rem;
  padding: 0;
}

/* ── Round breakdown chip (4 + 3) ─────────────────────────────────────── */
.round-info-static {
  display: inline-block;
  margin-top: 0.2rem;
  font-size: 0.75rem;
  font-weight: 600;
  color: var(--c-orange);
  background: var(--bg-soft);
  border: 1px solid var(--border);
  border-radius: 6px;
  padding: 0.1rem 0.45rem;
}

/* ── Emergency / URGENT button + table red glow ───────────────────────── */
.emergency-btn {
  background: var(--bg-soft);
  border: 1px solid var(--border);
  color: var(--ink);
  position: relative;
  overflow: hidden;
}
.emergency-btn.emergency-holding::after {
  content: '';
  position: absolute;
  inset: 0;
  background: rgba(220, 38, 38, 0.35);
  animation: emerg-fill 1s linear forwards;
}
@keyframes emerg-fill {
  from { transform: translateX(-100%); }
  to   { transform: translateX(0); }
}
.emergency-btn.emergency-on {
  background: #dc2626;
  color: #fff;
  border-color: #dc2626;
  animation: emerg-pulse 1.2s ease-in-out infinite;
}
@keyframes emerg-pulse {
  0%, 100% { box-shadow: 0 0 0 0 rgba(220,38,38,0.5); }
  50%      { box-shadow: 0 0 0 6px rgba(220,38,38,0); }
}

/* Table card red glow when its order is marked emergency */
.table-card.table-emergency {
  border-color: #dc2626 !important;
  background: color-mix(in srgb, #dc2626 18%, var(--card)) !important;
  animation: table-emerg-glow 1s ease-in-out infinite;
}
@keyframes table-emerg-glow {
  0%, 100% { box-shadow: 0 0 8px 2px rgba(220,38,38,0.4); }
  50%      { box-shadow: 0 0 16px 5px rgba(220,38,38,0.75); }
}
.table-card.table-emergency::before { background: linear-gradient(90deg, #dc2626, #f87171) !important; }

/* ── Shortcut item picker (one dropdown + add button) ─────────────────── */
.sc-item-picker { display: flex; gap: 0.4rem; align-items: center; width: 100%; }
.sc-item-picker select { flex: 1 1 auto; min-width: 0; }
.sc-item-picker .btn { flex: 0 0 auto; }
.sc-hint { font-size: 0.78rem; }
.sc-primary-tag {
  display: inline-block;
  background: var(--gradient-btn);
  color: #fff;
  font-size: 0.62rem;
  font-weight: 700;
  padding: 0.05rem 0.35rem;
  border-radius: 5px;
  margin-right: 0.25rem;
}

/* ── Staff hold-timing settings ───────────────────────────────────────── */
.timing-settings {
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: 10px;
  padding: 0.6rem 0.75rem;
  margin-bottom: 0.75rem;
  font-size: 0.85rem;
  animation: isc-slide-in 0.15s ease;
}
@keyframes isc-slide-in {
  from { opacity: 0; transform: translateY(-4px); }
  to   { opacity: 1; transform: translateY(0); }
}
.timing-row { display: flex; gap: 1rem; flex-wrap: wrap; }
.timing-row label { display: flex; flex-direction: column; gap: 0.25rem; font-size: 0.8rem; }
.timing-input-wrap { display: inline-flex; align-items: center; gap: 0.3rem; }
.timing-input-wrap input {
  width: 4.5rem; padding: 0.35rem 0.5rem;
  border: 1px solid var(--border); border-radius: 8px;
  background: var(--input-bg); color: var(--ink); font-size: 16px;
}
.timing-hint { margin: 0.5rem 0 0; font-size: 0.72rem; }

/* Status-bar "✏️ Edit" button that reveals the timing settings */
.edit-settings-btn {
  border: 1px solid var(--border);
  background: var(--bg-soft);
  color: var(--ink);
  border-radius: 8px;
  padding: 0.3rem 0.7rem;
  font-size: 0.8rem;
  cursor: pointer;
  margin-left: auto;
}
.edit-settings-btn.active { background: var(--gradient-btn); color: #fff; border-color: transparent; }

/* Inline popup: 2 explicit reserve options + shortcut chip hint */
.isc-reserve-group { display: flex; gap: 0.3rem; }
.isc-reserve-option {
  border: 1px solid var(--border);
  background: var(--bg-soft);
  color: var(--ink);
  border-radius: 8px;
  padding: 0.35rem 0.6rem;
  font-size: 0.78rem;
  cursor: pointer;
}
.isc-reserve-option.isc-option-active {
  background: #f59e0b;
  color: #fff;
  border-color: #f59e0b;
}
.isc-reserve-option:disabled { cursor: default; opacity: 0.9; }
.isc-hint { width: 100%; font-size: 0.78rem; margin-bottom: 0.4rem; }

/* Combo badge on order-screen shortcut chips (multi-item shortcuts) */
.sc-combo-badge {
  display: inline-block;
  background: var(--c-magenta, #db2777);
  color: #fff;
  font-size: 0.6rem;
  font-weight: 700;
  padding: 0.05rem 0.3rem;
  border-radius: 8px;
  margin-left: 0.25rem;
  vertical-align: top;
}

/* ── History: deleted bill banner ─────────────────────────────────────── */
.history-row-deleted {
  opacity: 0.75;
  border-left: 3px solid #dc2626;
}
.hr-deleted-banner {
  margin-top: 0.3rem;
  font-size: 0.78rem;
  font-weight: 600;
  color: #dc2626;
  background: rgba(220,38,38,0.1);
  border-radius: 6px;
  padding: 0.2rem 0.5rem;
  display: inline-block;
}

/* ── Expense category management + receipt image ──────────────────────── */
.manage-categories {
  margin-top: 0.9rem;
  padding-top: 0.7rem;
  border-top: 1px dashed var(--border);
  font-size: 0.85rem;
}
.manage-categories summary { cursor: pointer; font-weight: 600; }
.cat-manage-chips { display: flex; flex-wrap: wrap; gap: 0.4rem; margin: 0.6rem 0; }
.cat-manage-chip {
  display: inline-flex;
  align-items: center;
  gap: 0.3rem;
  background: var(--bg-soft);
  border: 1px solid var(--border);
  border-radius: 14px;
  padding: 0.2rem 0.5rem 0.2rem 0.7rem;
  font-size: 0.8rem;
}
.cat-manage-del {
  border: none;
  background: transparent;
  color: var(--c-magenta, #db2777);
  cursor: pointer;
  font-size: 0.75rem;
  padding: 0 0.2rem;
}
.cat-add-form { display: flex; gap: 0.5rem; flex-wrap: wrap; }
.cat-add-form input {
  padding: 0.4rem 0.6rem;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: var(--input-bg);
  color: var(--ink);
  font-size: 16px;
  flex: 1 1 180px;
}

/* Receipt photo thumbnail in the expense table */
.receipt-thumb {
  width: 40px; height: 40px;
  object-fit: cover;
  border-radius: 6px;
  border: 1px solid var(--border);
  cursor: pointer;
}

/* ── History: edited bill banner ──────────────────────────────────────── */
.hr-edited-banner {
  margin-top: 0.3rem;
  font-size: 0.78rem;
  font-weight: 600;
  color: #b45309;
  background: rgba(245,158,11,0.12);
  border-radius: 6px;
  padding: 0.2rem 0.5rem;
  display: inline-block;
}

/* ── Reports: bill activity (fraud prevention) rows ───────────────────── */
.bill-activity-deleted td { background: rgba(220,38,38,0.06); }
.bill-activity-edited td { background: rgba(245,158,11,0.08); }

/* ── Category tag editor (admin menu page) ────────────────────────────── */
.cat-tag-editor {
  display: inline-block;
  margin: 0.2rem;
}
.cat-chip-summary {
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  gap: 0.3rem;
  list-style: none;
}
.cat-chip-summary::-webkit-details-marker { display: none; }
.cat-tag-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 1.1rem; height: 1.1rem;
  border-radius: 50%;
  font-size: 0.65rem;
}
.cat-tag-panel {
  position: absolute;
  z-index: 50;
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: 10px;
  padding: 0.6rem;
  box-shadow: var(--shadow), 0 8px 24px rgba(0,0,0,0.15);
  margin-top: 0.3rem;
  min-width: 200px;
}
.cat-tag-check {
  display: flex;
  align-items: center;
  gap: 0.4rem;
  font-size: 0.85rem;
  padding: 0.2rem 0;
  cursor: pointer;
}
.cat-tag-check input { width: auto; }

/* ── Category tag badges (order screen — pills + section headers) ────────
   No background color — some tag colors (e.g. spicy's red) visually blend
   with the emoji's own natural color, making it hard to see. Transparent
   background keeps just the emoji clearly visible. */
.cat-tag-mini {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 1rem; height: 1rem;
  background: transparent;
  border-radius: 50%;
  font-size: 0.85rem;
  margin-left: 0.25rem;
  vertical-align: middle;
}
.menu-category-title .cat-tag-mini { width: 1.2rem; height: 1.2rem; font-size: 1rem; }

/* ── Quick-edit popup footer (Reserve + Open full order at bottom) ──────── */
.isc-footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.5rem;
  flex-wrap: wrap;
  margin-top: 0.75rem;
  padding-top: 0.6rem;
  border-top: 1px solid var(--border);
}

/* ── Stock management page ────────────────────────────────────────────── */
.stock-row-low td { background: rgba(245,158,11,0.08); }
.stock-row-empty td { background: rgba(220,38,38,0.08); }
.stock-qty-badge {
  font-size: 1.05rem;
  font-weight: 800;
  font-variant-numeric: tabular-nums;
}
.stock-tag {
  display: inline-block;
  margin-left: 0.4rem;
  font-size: 0.68rem;
  font-weight: 700;
  padding: 0.1rem 0.4rem;
  border-radius: 6px;
  text-transform: uppercase;
}
.stock-tag-out { background: #dc2626; color: #fff; }
.stock-tag-low { background: #f59e0b; color: #fff; }
.restock-form { display: flex; gap: 0.3rem; align-items: center; flex-wrap: wrap; }
.restock-form input[type="number"] {
  padding: 0.3rem 0.5rem;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: var(--input-bg);
  color: var(--ink);
  font-size: 14px;
}

/* Order screen: out-of-stock / low-stock indicators on a menu item row */
.stock-badge {
  font-size: 0.68rem;
  font-weight: 700;
  padding: 0.05rem 0.4rem;
  border-radius: 6px;
  margin-left: 0.4rem;
}
.stock-badge-low { background: rgba(245,158,11,0.18); color: #b45309; }
.stock-badge-out { background: rgba(220,38,38,0.18); color: #b91c1c; }
.menu-item-row.out-of-stock { opacity: 0.5; cursor: not-allowed; }

/* ── Stock: package/unit conversion editor ────────────────────────────── */
.unit-editor summary { list-style: none; }
.unit-editor summary::-webkit-details-marker { display: none; }
.unit-editor-form {
  display: flex;
  align-items: center;
  gap: 0.3rem;
  margin-top: 0.4rem;
}
.unit-editor-form input {
  padding: 0.3rem 0.4rem;
  border: 1px solid var(--border);
  border-radius: 6px;
  background: var(--input-bg);
  color: var(--ink);
  font-size: 13px;
}

/* ── Mobile side-drawer nav ────────────────────────────────────────────── */
/* Desktop: hamburger hidden, links show normally as before */
.nav-toggle-btn { display: none; }
.nav-drawer-backdrop { display: none; }

@media (max-width: 640px) {
  /* Compact single-row top bar: brand + "⋮" only */
  .topnav {
    flex-wrap: nowrap;
    align-items: center;
    justify-content: space-between;
  }
  .topnav-brand { flex: 1 1 auto; min-width: 0; font-size: 0.88rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

  .nav-toggle-btn {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 2.2rem; height: 2.2rem;
    border-radius: 8px;
    border: 1px solid var(--border);
    background: var(--bg-soft);
    color: var(--ink);
    font-size: 1.2rem;
    line-height: 1;
    cursor: pointer;
    flex: 0 0 auto;
  }

  /* Dark backdrop behind the open drawer, tap to close */
  .nav-drawer-backdrop {
    position: fixed;
    inset: 0;
    background: rgba(0,0,0,0.45);
    z-index: 9998;
  }
  .nav-drawer-backdrop.open { display: block; }

  /* The links become a slide-in panel from the right, full height */
  .topnav-links {
    position: fixed;
    top: 0; right: 0;
    height: 100vh;
    width: 78vw;
    max-width: 300px;
    flex-basis: auto;
    flex-direction: column;
    align-items: flex-start;
    gap: 0.3rem;
    background: var(--card);
    border-left: 1px solid var(--border);
    padding: calc(1rem + env(safe-area-inset-top, 0px)) 1rem 1rem;
    transform: translateX(100%);
    transition: transform 0.22s ease;
    z-index: 9999;
    overflow-y: auto;
    box-shadow: -8px 0 24px rgba(0,0,0,0.2);
  }
  .topnav-links.open { transform: translateX(0); }
  .topnav-links a { width: 100%; padding: 0.6rem 0.3rem; }
  .topnav-links .lang-dropdown,
  .topnav-links .fullscreen-btn,
  .topnav-links .theme-wrap-floating { width: 100%; }
}

/* ── Tablets get the same compact drawer nav as phone ──────────────────
   13 admin links (Dashboard/Staff/Menu/Stock/Tables/Layout/Orders/Reports/
   Expenses/Salary/Settings/Staff View/Logout) wrap onto several messy rows
   on a ~768–1024px tablet otherwise. Same drawer pattern as phone, just a
   fixed (not viewport-relative) width since there's more room to spare. */
@media (min-width: 641px) and (max-width: 1024px) {
  .topnav { flex-wrap: nowrap; align-items: center; justify-content: space-between; }
  .topnav-brand { flex: 1 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

  .nav-toggle-btn {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 2.4rem; height: 2.4rem;
    border-radius: 8px;
    border: 1px solid var(--border);
    background: var(--bg-soft);
    color: var(--ink);
    font-size: 1.3rem;
    line-height: 1;
    cursor: pointer;
    flex: 0 0 auto;
  }

  .nav-drawer-backdrop { position: fixed; inset: 0; background: rgba(0,0,0,0.45); z-index: 9998; }
  .nav-drawer-backdrop.open { display: block; }

  .topnav-links {
    position: fixed;
    top: 0; right: 0;
    height: 100vh;
    width: 320px;
    max-width: 40vw;
    flex-basis: auto;
    flex-direction: column;
    align-items: flex-start;
    gap: 0.35rem;
    background: var(--card);
    border-left: 1px solid var(--border);
    padding: calc(1.2rem + env(safe-area-inset-top, 0px)) 1.2rem 1.2rem;
    transform: translateX(100%);
    transition: transform 0.22s ease;
    z-index: 9999;
    overflow-y: auto;
    box-shadow: -8px 0 24px rgba(0,0,0,0.2);
  }
  .topnav-links.open { transform: translateX(0); }
  .topnav-links a { width: 100%; padding: 0.65rem 0.4rem; }
  .topnav-links .lang-dropdown,
  .topnav-links .fullscreen-btn,
  .topnav-links .theme-wrap-floating { width: 100%; }
}

/* ── Scrollbars hidden everywhere, app-wide ───────────────────────────────
   Content still scrolls normally (touch/wheel/drag) — only the visual
   scrollbar track+thumb is hidden, since the OS-default bar doesn't match
   this app's theme colors. Applies to every scrollable element, present
   and future, so nothing needs to be hidden one-by-one. */
* {
  scrollbar-width: none;      /* Firefox */
  -ms-overflow-style: none;   /* old Edge / IE */
}
*::-webkit-scrollbar {
  width: 0;
  height: 0;
  display: none;              /* Chrome, Safari, modern Edge */
}

/* ── Current-order cart: tap name=+1, tap total=−1, separate trash remove ──
   Replaces the old cramped +/− stepper buttons, which looked choppy on
   narrow phone screens. No underline — the tap feedback (background flash
   on :active) is enough of a hint, price is now just a plain static value. */
.cart-name-cell, .cart-total-cell {
  cursor: pointer;
  user-select: none;
  border-radius: 6px;
  transition: background 0.12s;
}
.cart-name-cell:active, .cart-total-cell:active {
  background: color-mix(in srgb, var(--c-teal) 16%, transparent);
}
.cart-qty-cell { text-align: center; font-weight: 700; font-variant-numeric: tabular-nums; }
.cart-trash-btn {
  border: none;
  background: transparent;
  color: var(--c-coral, #e11d48);
  font-size: 1.05rem;
  padding: 0.4rem 0.5rem;
  min-width: 2.2rem;
  min-height: 2.2rem;
  border-radius: 8px;
  cursor: pointer;
  line-height: 1;
}
.cart-trash-btn:hover, .cart-trash-btn:active { background: rgba(225,29,72,0.12); }

/* Mobile: give the cart table room to breathe instead of squeezing 5
   cramped columns — bigger tap targets, less clipped text. */
@media (max-width: 640px) {
  .order-table { font-size: 0.82rem; }
  .order-table th, .order-table td { padding: 0.55rem 0.3rem; }
  .cart-name-cell, .cart-total-cell { padding: 0.55rem 0.4rem; }
}

/* ── Nav phone-only elements: Live status + Back, flanking the ⋮ menu ──── */
/* Higher-specificity selector so this ALWAYS wins over .nav-back-btn's own
   "display: flex" below, regardless of source order — otherwise the back
   button never actually hides on tablet/laptop like it's supposed to. */
.topnav .nav-phone-only { display: none; }
.nav-back-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 2.2rem; height: 2.2rem;
  border-radius: 8px;
  border: 1px solid var(--border);
  background: var(--bg-soft);
  color: var(--ink);
  font-size: 1.1rem;
  line-height: 1;
  cursor: pointer;
  flex: 0 0 auto;
}

@media (max-width: 640px) {
  .topnav .nav-phone-only { display: inline-flex; flex: 0 0 auto; }
  /* Dot-only on phone — the word "Live"/"Connecting…" takes too much width
     and was pushing the row to wrap onto multiple lines. */
  #navLiveStatus { padding: 0.3rem; gap: 0; }
  #navLiveStatus .live-text { display: none; }

  /* The nav now shows "Table T3" as its own brand text, and carries Back +
     Live for phone too — so the page's own header card (title + Back/Live)
     is now entirely redundant on phone. Hide the whole thing. */
  .order-header { display: none; }
  .live-header #liveStatus { display: none; }
}


/* ── Cart top header: Bill button (left) + Current Order + count (right) ── */
.cart-top-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.6rem;
  flex-wrap: wrap;
  margin-bottom: 0.75rem;
}
.cart-top-title { margin: 0; }

/* ── Nav: staff name gets a theme accent color too ──────────────────────── */
.nav-staff-name { color: var(--c-teal); font-weight: 600; }

/* ── Shortcut tap feedback: RGB glow confirmation + rapid-tap counter ───── */
@keyframes shortcut-rgb-glow {
  0%   { box-shadow: 0 0 0 0 rgba(255,0,150,0.6); }
  20%  { box-shadow: 0 0 10px 3px rgba(255,0,150,0.7); }
  40%  { box-shadow: 0 0 10px 3px rgba(255,180,0,0.7); }
  60%  { box-shadow: 0 0 10px 3px rgba(0,220,120,0.7); }
  80%  { box-shadow: 0 0 10px 3px rgba(0,150,255,0.7); }
  100% { box-shadow: 0 0 0 0 rgba(0,150,255,0); }
}
.shortcut-chip.shortcut-chip-glow {
  animation: shortcut-rgb-glow 0.7s ease-out;
}
/* Counter number briefly replaces the keyword — bigger + colorful so a
   rapid tap streak is unmistakable, then fades back to the normal name. */
.shortcut-chip b.sc-count-flash {
  color: #fff;
  background: linear-gradient(135deg, #ff2d95, #ff9500, #2dd4bf);
  padding: 0.05rem 0.5rem;
  border-radius: 8px;
  font-weight: 800;
  text-transform: none;
}

/* ── Category expand/collapse toggle button ───────────────────────────── */
.cat-expand-btn {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  padding: 0.4rem 0.8rem;
  border-radius: 20px;
  border: 1px solid var(--border);
  background: var(--bg-soft);
  color: var(--ink);
  font-size: 0.82rem;
  font-weight: 600;
  cursor: pointer;
  margin-bottom: 0.4rem;
}
.cat-expand-btn.active { background: var(--gradient-btn); color: #fff; border-color: transparent; }
.cat-expand-arrow { font-size: 0.7rem; }

/* ── Cart expand/collapse (phone only) ────────────────────────────────── */
/* The arrow is just part of the title text — no separate button. Tapping
   the "Current Order" header itself (title, count, arrow) toggles it. */
.cart-title-arrow { display: none; font-size: 0.7rem; }
.cart-top-header { cursor: default; }

@media (max-width: 640px) {
  .cart-title-arrow { display: inline-block; }
  .cart-top-header { cursor: pointer; }
  /* Collapsed on phone means the body below the header just isn't shown —
     tablet/desktop never get this class's effect since this rule only
     exists inside this media query. */
  .cart-body.cart-collapsed { display: none; }
}

/* ── Full-screen item browse mode ─────────────────────────────────────── */
/* Activated by focusing search or picking a category — covers the whole
   screen with the search pinned at top and items filling the rest, so as
   many items as possible are visible while finding what's needed. */
.fs-browse-close { display: none; }
.search-row { display: flex; align-items: center; gap: 0.5rem; }
.search-row .item-search { flex: 1 1 auto; margin-bottom: 0; }

body.fs-browse-mode .topnav,
body.fs-browse-mode .order-header,
body.fs-browse-mode .order-current {
  display: none !important;
}
body.fs-browse-mode .order-menu {
  position: fixed;
  inset: 0;
  z-index: 5000;
  height: 100vh;
  max-height: 100vh;
  overflow-y: auto;
  margin: 0;
  border-radius: 0;
}
body.fs-browse-mode .container { padding: 0; max-width: 100%; }
body.fs-browse-mode .order-layout { display: block; }
body.fs-browse-mode .fs-browse-close {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2.4rem; height: 2.4rem;
  border: none;
  border-radius: 8px;
  background: var(--bg-soft);
  color: var(--ink);
  font-size: 1.1rem;
  cursor: pointer;
  flex: 0 0 auto;
}

/* ── Item-wise sales report ────────────────────────────────────────────── */
.item-sales-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.6rem;
  flex-wrap: wrap;
  margin-bottom: 0.6rem;
}
.item-sort-toggle { display: flex; gap: 0.4rem; }
.item-sales-search {
  width: 100%;
  padding: 0.55rem 0.8rem;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: var(--input-bg);
  color: var(--ink);
  font-size: 0.9rem;
  margin-bottom: 0.75rem;
}

/* ── Bill print action bar: left-aligned; sticky bottom-left on phone ──── */
.bill-actions-bar {
  display: flex;
  align-items: center;
  gap: 0.6rem;
  flex-wrap: wrap;
  justify-content: flex-start;
}

@media (max-width: 640px) {
  /* Print sits fixed at the bottom-LEFT — easy one-handed thumb reach
     while scrolling through a long bill, no need to scroll back up. */
  #printBillBtn {
    position: fixed;
    left: 1rem;
    bottom: 1rem;
    z-index: 200;
    box-shadow: 0 6px 18px rgba(0,0,0,0.3);
  }
  /* Leave room at the bottom so the sticky button never covers the last
     line of the receipt (footer/quote). */
  .receipt { padding-bottom: 4.5rem; }
}

/* ── Add Items header: title (left) + Home button (right beside it) ────── */
.add-items-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.6rem;
}
.add-items-title { margin: 0; }
.add-items-home-btn {
  display: inline-flex;
  align-items: center;
  gap: 0.3rem;
  padding: 0.35rem 0.7rem;
  border-radius: 8px;
  border: 1px solid var(--border);
  background: var(--bg-soft);
  color: var(--ink);
  font-size: 0.82rem;
  font-weight: 600;
  text-decoration: none;
  flex: 0 0 auto;
}

/* ── Bill button hold-to-print (parcel orders) ──────────────────────────── */
.gen-bill-inline {
  position: relative;
  overflow: hidden;
}
.gen-bill-inline.bill-holding::after {
  content: '';
  position: absolute;
  inset: 0;
  background: rgba(255,255,255,0.35);
  animation: bill-hold-fill var(--hold-duration, 1s) linear forwards;
}
@keyframes bill-hold-fill {
  from { transform: translateX(-100%); }
  to   { transform: translateX(0); }
}

/* ── KOT sent confirmation flash ──────────────────────────────────────── */
.kot-sent-flash { background: #16a34a !important; color: #fff !important; }

/* ── Multi-printer settings cards ─────────────────────────────────────── */
.printer-card-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.6rem;
  flex-wrap: wrap;
  margin-bottom: 0.4rem;
}
.printer-card-header h3 { margin: 0; }
