/* ═══════════════════════════════════════════════════════════════
   companion-plus.css — MAIN admin: Companion+ suite + dark mode.

   Loaded only by index.html (never the companion). Three jobs:
     1. Define the accent/status tokens the ported feature UI expects
        (admin-panel.css only defines --op-*), plus the dark palette.
     2. Style the Companion+ header button and its Apple-style dropdown.
     3. A dark re-skin, gated under :root[data-theme="dark"] so the
        existing LIGHT look is left completely untouched.
═══════════════════════════════════════════════════════════════ */

/* ── 1. tokens ─────────────────────────────────────────────────── */
:root {
  --at-green:#2f8f57; --at-green-bg:#e6f4ec;
  --at-amber:#b7791f; --at-amber-bg:#fbf0d9;
  --at-red:#c23b3b;   --at-red-bg:#fbe9e9;
  --op-accent-bg: rgba(161,28,30,0.06);
  --op-accent-subtle: rgba(161,28,30,0.06);
  --op-shadow-lg: 0 16px 44px rgba(30,25,22,0.16);
}

/* Dark palette — flips the tokens the admin + feature UI consume.
   Only takes effect when <html data-theme="dark">. */
:root[data-theme="dark"] {
  --op-bg:            #0e0e11;
  --op-surface:       #1a1a1f;
  --op-border:        #34343d;
  --op-border-subtle: #26262c;
  --op-text-primary:  #f5f5f7;
  --op-text-secondary:#c4c4cf;
  --op-text-muted:    #9a9aa6;
  --op-accent:        #f2555a;
  --op-accent-bg:     rgba(242,85,90,0.14);
  --op-accent-subtle: rgba(242,85,90,0.14);
  --op-shadow-lg:     0 16px 44px rgba(0,0,0,0.6);
  --at-green:#4ec07f; --at-green-bg:#14291d;
  --at-amber:#e0a94a; --at-amber-bg:#2c2410;
  --at-red:#f2555a;   --at-red-bg:#341c1e;
  /* admin-panel.css defines these light at :root — flip them so the admin
     product list (thumbnails, badges, action buttons, inputs) goes dark. */
  --at-bg:#0e0e11; --at-surface:#1a1a1f; --at-border:#34343d;
  --at-text:#f5f5f7; --at-text-2:#c4c4cf; --at-text-3:#9a9aa6;
}

/* The ported overlays use a low z-index in the companion (its own
   stacking context). In the main admin they must sit above the admin
   panel and its overlays, but below the Companion+ dropdown. */
#cmp-chat, #cmp-tasks, #cmp-profile { z-index: 10050; }

/* ── 2. Companion+ button + dropdown ───────────────────────────── */
.cmp-plus-btn {
  position: relative; display: inline-flex; align-items: center; gap: 7px;
  font-family: inherit; font-size: 0.9rem; font-weight: 700; cursor: pointer;
  color: #fff; border: none; border-radius: 10px; padding: 8px 14px 8px 11px;
  background: linear-gradient(135deg, #6d28d9, #a11c1e);
  box-shadow: 0 2px 8px rgba(109,40,217,0.28);
}
.cmp-plus-btn:hover { filter: brightness(1.06); }
.cmp-plus-btn:active { transform: scale(0.97); }
.cmp-plus-spark { display: inline-flex; }
.cmp-plus-spark svg { width: 16px; height: 16px; }
.cmp-plus-label { letter-spacing: -0.01em; }
.cmp-plus-plus { font-weight: 800; opacity: 0.9; margin-left: -3px; }
.cmp-plus-badge {
  position: absolute; top: -6px; right: -6px; min-width: 18px; height: 18px; padding: 0 5px;
  border-radius: 999px; background: #fbbf24; color: #3a2a00; font-size: 10.5px; font-weight: 800;
  display: inline-flex; align-items: center; justify-content: center; box-shadow: 0 0 0 2px var(--op-surface, #fff);
}

.cmp-plus-scrim { position: fixed; inset: 0; z-index: 12000; background: transparent; }
.cmp-plus-menu {
  position: fixed; z-index: 12001; width: 300px; max-width: calc(100vw - 16px);
  background: var(--op-surface); color: var(--op-text-primary);
  border: 1px solid var(--op-border); border-radius: 18px; padding: 8px;
  box-shadow: var(--op-shadow-lg);
  transform-origin: top right; transform: scale(0.96) translateY(-6px); opacity: 0;
  transition: transform 0.16s cubic-bezier(0.2,0.8,0.2,1), opacity 0.16s ease;
}
.cmp-plus-menu.show { transform: scale(1) translateY(0); opacity: 1; }
.cmp-plus-arrow {
  position: absolute; top: -7px; right: 22px; width: 13px; height: 13px;
  background: var(--op-surface); border-left: 1px solid var(--op-border); border-top: 1px solid var(--op-border);
  transform: rotate(45deg); border-radius: 3px 0 0 0;
}
.cmp-plus-head {
  font-size: 12px; font-weight: 800; text-transform: uppercase; letter-spacing: 0.08em;
  color: var(--op-text-muted); padding: 8px 10px 6px;
}
.cmp-plus-head span { color: var(--op-accent); }
.cmp-plus-item {
  display: flex; align-items: center; gap: 12px; width: 100%; text-align: left;
  font-family: inherit; cursor: pointer; color: var(--op-text-primary);
  background: none; border: none; border-radius: 12px; padding: 10px 10px;
}
.cmp-plus-item:hover { background: var(--op-border-subtle); }
.cmp-plus-item:active { transform: scale(0.99); }
.cmp-plus-item-ic {
  width: 38px; height: 38px; border-radius: 11px; flex-shrink: 0;
  display: flex; align-items: center; justify-content: center;
  background: var(--op-border-subtle); color: var(--op-text-secondary);
}
.cmp-plus-item-ic svg { width: 19px; height: 19px; }
.cmp-plus-item-ic.blue  { background: rgba(59,130,246,0.14);  color: #3b82f6; }
.cmp-plus-item-ic.green { background: var(--at-green-bg); color: var(--at-green); }
.cmp-plus-item-ic.amber { background: var(--at-amber-bg); color: var(--at-amber); }
.cmp-plus-item-tx { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.cmp-plus-item-t { font-size: 14.5px; font-weight: 700; }
.cmp-plus-item-s { font-size: 12px; color: var(--op-text-muted); }
.cmp-plus-item-r { display: flex; align-items: center; flex-shrink: 0; }
.cmp-plus-count { min-width: 20px; height: 20px; padding: 0 6px; border-radius: 999px; background: #3b82f6; color: #fff; font-size: 11px; font-weight: 800; display: inline-flex; align-items: center; justify-content: center; }
.cmp-plus-count.amber { background: var(--at-amber); }
.cmp-plus-div { height: 1px; background: var(--op-border); margin: 6px 8px; }
.cmp-plus-switch { width: 42px; height: 25px; border-radius: 999px; background: var(--op-border); position: relative; transition: background 0.15s; }
.cmp-plus-switch.on { background: var(--op-accent); }
.cmp-plus-switch-k { position: absolute; top: 2px; left: 2px; width: 21px; height: 21px; border-radius: 50%; background: #fff; box-shadow: 0 1px 3px rgba(0,0,0,0.3); transition: transform 0.15s; }
.cmp-plus-switch.on .cmp-plus-switch-k { transform: translateX(17px); }

/* Standalone light/dark toggle button (header, next to Companion+). */
.cmp-theme-btn {
  display: inline-flex; align-items: center; justify-content: center;
  width: 38px; height: 38px; flex-shrink: 0; cursor: pointer;
  border-radius: 10px; border: 1px solid var(--op-border, #e5e5ea);
  background: var(--op-surface, #fff); color: var(--op-text-secondary, #444);
  padding: 0; transition: background 0.15s, color 0.15s, transform 0.1s;
}
.cmp-theme-btn:hover { color: var(--op-text-primary, #111); }
.cmp-theme-btn:active { transform: scale(0.93); }
.cmp-theme-btn svg { width: 18px; height: 18px; }

/* "Signed in as …" row at the top of the dropdown. */
.cmp-plus-who {
  padding: 0 10px 8px; font-size: 12.5px; color: var(--op-text-muted);
}
.cmp-plus-who b { color: var(--op-text-secondary); font-weight: 700; }

/* ── companion sign-in modal ───────────────────────────────────── */
.cmpx-login { position: fixed; inset: 0; z-index: 13000; display: flex; align-items: center; justify-content: center; padding: 16px; }
.cmpx-login.hidden { display: none; }
.cmpx-login-scrim { position: absolute; inset: 0; background: rgba(10,10,14,0.55); backdrop-filter: blur(2px); }
.cmpx-login-card {
  position: relative; width: 100%; max-width: 380px;
  background: var(--op-surface, #fff); color: var(--op-text-primary, #111);
  border: 1px solid var(--op-border, #e5e5ea); border-radius: 20px; padding: 26px 24px 24px;
  box-shadow: var(--op-shadow-lg, 0 20px 60px rgba(0,0,0,0.25));
  transform: scale(0.94) translateY(8px); opacity: 0;
  transition: transform 0.2s cubic-bezier(0.2,0.8,0.2,1), opacity 0.2s ease;
}
.cmpx-login.show .cmpx-login-card { transform: scale(1) translateY(0); opacity: 1; }
.cmpx-login-x {
  position: absolute; top: 12px; right: 12px; width: 32px; height: 32px; cursor: pointer;
  display: inline-flex; align-items: center; justify-content: center;
  border: none; border-radius: 9px; background: var(--op-border-subtle, #f1f1f4); color: var(--op-text-muted, #888);
}
.cmpx-login-x svg { width: 17px; height: 17px; }
.cmpx-login-x:hover { color: var(--op-text-primary, #111); }
.cmpx-login-spark {
  width: 46px; height: 46px; border-radius: 13px; display: flex; align-items: center; justify-content: center;
  background: linear-gradient(135deg, #6d28d9, #a11c1e); color: #fff; margin-bottom: 12px;
}
.cmpx-login-spark svg { width: 24px; height: 24px; }
.cmpx-login-t { font-size: 1.25rem; font-weight: 800; letter-spacing: -0.01em; margin: 0 0 4px; }
.cmpx-login-s { font-size: 0.9rem; line-height: 1.4; color: var(--op-text-muted); margin: 0 0 18px; }
.cmpx-login-form { display: flex; flex-direction: column; gap: 12px; }
.cmpx-field { display: flex; flex-direction: column; gap: 5px; }
.cmpx-field > span { font-size: 12px; font-weight: 700; color: var(--op-text-secondary); }
.cmpx-field input {
  font-family: inherit; font-size: 0.95rem; padding: 11px 13px; border-radius: 11px;
  border: 1px solid var(--op-border, #dcdce2); background: var(--op-bg, #fff); color: var(--op-text-primary, #111);
  outline: none; transition: border-color 0.15s, box-shadow 0.15s;
}
.cmpx-field input:focus { border-color: #6d28d9; box-shadow: 0 0 0 3px rgba(109,40,217,0.16); }
.cmpx-remember { display: flex; align-items: center; gap: 8px; font-size: 0.85rem; color: var(--op-text-secondary); cursor: pointer; }
.cmpx-remember input { width: 16px; height: 16px; accent-color: #6d28d9; }
.cmpx-login-err { font-size: 0.85rem; color: #dc2626; margin: 0; }
:root[data-theme="dark"] .cmpx-login-err { color: #f87171; }
.cmpx-login-btn {
  margin-top: 4px; font-family: inherit; font-size: 0.98rem; font-weight: 700; cursor: pointer;
  color: #fff; border: none; border-radius: 12px; padding: 12px;
  background: linear-gradient(135deg, #6d28d9, #a11c1e); box-shadow: 0 2px 10px rgba(109,40,217,0.3);
}
.cmpx-login-btn:hover { filter: brightness(1.06); }
.cmpx-login-btn:active { transform: scale(0.98); }
.cmpx-login-btn:disabled { opacity: 0.7; cursor: default; }

/* ── 3. Dark re-skin (admin panel + overlays). LIGHT is untouched. ─ */
:root[data-theme="dark"] body { background: #141210; color: var(--op-text-primary); }
:root[data-theme="dark"] #admin-panel { background: var(--op-bg); color: var(--op-text-primary); }
:root[data-theme="dark"] #admin-panel .admin-header { background: var(--op-surface); border-bottom-color: var(--op-border); }
:root[data-theme="dark"] #admin-panel .admin-header-title { color: var(--op-text-primary); }
:root[data-theme="dark"] #admin-panel .admin-menu-toggle { background: var(--op-bg); border-color: var(--op-border); color: var(--op-text-primary); }
:root[data-theme="dark"] #admin-panel .admin-header-actions { background: var(--op-surface); }
:root[data-theme="dark"] .admin-gallery-btn,
:root[data-theme="dark"] .admin-crash-reports-btn {
  background: var(--op-bg); border-color: var(--op-border); color: var(--op-text-primary);
}
:root[data-theme="dark"] .admin-close-btn { background: var(--op-accent); border-color: var(--op-accent); color: #fff; }

:root[data-theme="dark"] .admin-sidebar { background: var(--op-surface); border-right-color: var(--op-border); border-bottom-color: var(--op-border); }
:root[data-theme="dark"] .admin-content-area,
:root[data-theme="dark"] .admin-item-list { background: var(--op-bg); }
:root[data-theme="dark"] .admin-section-tab,
:root[data-theme="dark"] .admin-cat-tab { background: var(--op-surface); border-color: var(--op-border); color: var(--op-text-secondary); }
:root[data-theme="dark"] .admin-section-tab.active,
:root[data-theme="dark"] .admin-cat-tab.active { background: var(--op-accent); border-color: var(--op-accent); color: #fff; }
:root[data-theme="dark"] .admin-cat-tab-add-btn { background: transparent; border: 1px dashed var(--op-border); color: var(--op-text-muted); }

/* Generic surfaces inside the admin + its overlays */
:root[data-theme="dark"] .orders-shell,
:root[data-theme="dark"] .gallery-shell,
:root[data-theme="dark"] #co-modal-inner,
:root[data-theme="dark"] [id$="-overlay"] .orders-shell,
:root[data-theme="dark"] .orders-header,
:root[data-theme="dark"] .admin-add-row { background: var(--op-surface); border-color: var(--op-border); color: var(--op-text-primary); }
:root[data-theme="dark"] [id$="-overlay"] { color: var(--op-text-primary); }

/* Cards / tables / rows */
:root[data-theme="dark"] .at-table,
:root[data-theme="dark"] .at-table tbody tr,
:root[data-theme="dark"] .at-card,
:root[data-theme="dark"] .order-card,
:root[data-theme="dark"] .stk-card,
:root[data-theme="dark"] .inv-card,
:root[data-theme="dark"] .fin-card { background: var(--op-surface); border-color: var(--op-border); color: var(--op-text-primary); }
:root[data-theme="dark"] .at-table th { background: var(--op-bg); color: var(--op-text-secondary); border-color: var(--op-border); }
:root[data-theme="dark"] .at-table td { border-color: var(--op-border-subtle); }

/* Inputs / selects / textareas / buttons */
:root[data-theme="dark"] #admin-panel input,
:root[data-theme="dark"] #admin-panel select,
:root[data-theme="dark"] #admin-panel textarea,
:root[data-theme="dark"] [id$="-overlay"] input,
:root[data-theme="dark"] [id$="-overlay"] select,
:root[data-theme="dark"] [id$="-overlay"] textarea,
:root[data-theme="dark"] .at-input,
:root[data-theme="dark"] .at-select,
:root[data-theme="dark"] .co-field-input {
  background: var(--op-surface); color: var(--op-text-primary); border-color: var(--op-border);
}
:root[data-theme="dark"] #admin-panel input::placeholder,
:root[data-theme="dark"] [id$="-overlay"] input::placeholder { color: var(--op-text-muted); }

/* The Companion+ badge ring reads better on the dark header */
:root[data-theme="dark"] .cmp-plus-badge { box-shadow: 0 0 0 2px var(--op-surface); }

/* Admin product list — hardcoded light leaks the token flip can't reach */
:root[data-theme="dark"] .at-img-remove-btn { background: var(--at-red-bg) !important; color: #f2555a !important; border-color: rgba(242,85,90,0.4) !important; }
:root[data-theme="dark"] .at-img-remove-btn:hover { background: rgba(242,85,90,0.22) !important; }
/* Badges: keep the coloured fills but darken the light borders + the blue "Visible" pill */
:root[data-theme="dark"] .at-badge.stock-in { border-color: rgba(78,192,127,0.4); }
:root[data-theme="dark"] .at-badge.stock-out { border-color: rgba(242,85,90,0.4); }
:root[data-theme="dark"] .at-badge.vis-on { background: rgba(59,130,246,0.16); color: #6aa8ff; border-color: rgba(59,130,246,0.4); }
:root[data-theme="dark"] .at-badge.vis-off { background: var(--at-surface); color: var(--at-text-3); border-color: var(--at-border); }
/* Action buttons (save / delete) — base has a hardcoded white bg */
:root[data-theme="dark"] .at-act-btn { background: var(--at-surface) !important; color: var(--at-text-2); }
:root[data-theme="dark"] .at-act-btn:hover { background: var(--op-border-subtle) !important; }
:root[data-theme="dark"] .at-act-btn.save { color: #6aa8ff; border-color: rgba(59,130,246,0.4); }
:root[data-theme="dark"] .at-act-btn.save:hover { background: rgba(59,130,246,0.16); }
:root[data-theme="dark"] .at-act-btn.del:hover { background: var(--at-red-bg); }
/* Stock quick-adjuster (Stock column) */
:root[data-theme="dark"] .stk-adjust { background: var(--at-surface); border-color: var(--at-border); }
:root[data-theme="dark"] .stk-step { background: var(--op-border-subtle); color: var(--at-text); }
:root[data-theme="dark"] .stk-step:hover { background: var(--at-border); }
:root[data-theme="dark"] .stk-now { background: var(--at-surface); color: var(--at-text); }
/* Category quick buttons */
:root[data-theme="dark"] .admin-cat-save-btn { background: var(--op-border-subtle); color: var(--at-text); }
:root[data-theme="dark"] .admin-cat-del-btn { background: var(--at-red-bg); color: #f2555a; }
:root[data-theme="dark"] .admin-cat-toggle-btn.cat-visible { background: var(--at-green-bg); color: #4ec07f; }
/* Visibility toggle button + the "+ Add Product" footer row */
:root[data-theme="dark"] .admin-visibility-btn { background: var(--at-surface); color: var(--at-text-2); border-color: var(--at-border); }
:root[data-theme="dark"] .admin-visibility-btn:hover { background: var(--op-border-subtle); border-color: #A11C1E; color: #f2555a; }
:root[data-theme="dark"] .admin-add-row { background: var(--op-surface); }

/* ── Discount Codes panel (dc-*): white tab strip + cards + chips ───── */
:root[data-theme="dark"] .dc-tabs { background: var(--op-surface); border-bottom-color: var(--op-border); }
:root[data-theme="dark"] .dc-tab { color: var(--op-text-secondary); }
:root[data-theme="dark"] .dc-tab:hover { color: var(--op-text-primary); background: var(--op-bg); }
:root[data-theme="dark"] .dc-tab-count { background: var(--op-border-subtle); color: var(--op-text-secondary); }
:root[data-theme="dark"] .dc-create,
:root[data-theme="dark"] .dc-batch,
:root[data-theme="dark"] .dc-named-card { background: var(--op-surface); border-color: var(--op-border); }
:root[data-theme="dark"] .dc-create-title,
:root[data-theme="dark"] .dc-named-code,
:root[data-theme="dark"] .dc-chip-code,
:root[data-theme="dark"] .dc-stat-n { color: var(--op-text-primary); }
:root[data-theme="dark"] .dc-create-sub,
:root[data-theme="dark"] .dc-field > label,
:root[data-theme="dark"] .dc-section-title,
:root[data-theme="dark"] .dc-batch-meta,
:root[data-theme="dark"] .dc-named-meta,
:root[data-theme="dark"] .dc-stat-l { color: var(--op-text-muted); }
:root[data-theme="dark"] .dc-field input,
:root[data-theme="dark"] .dc-field select { background: var(--op-surface); border-color: var(--op-border); color: var(--op-text-primary); }
:root[data-theme="dark"] .dc-batch-head { background: var(--op-bg); border-bottom-color: var(--op-border); }
:root[data-theme="dark"] .dc-batch-btn { background: var(--op-surface); border-color: var(--op-border); color: var(--op-text-secondary); }
:root[data-theme="dark"] .dc-batch-btn:hover { background: var(--op-bg); }
:root[data-theme="dark"] .dc-stat { background: var(--op-bg); border-color: var(--op-border); }
:root[data-theme="dark"] .dc-chip--active { background: rgba(22,163,74,0.14); border-color: rgba(22,163,74,0.42); }
:root[data-theme="dark"] .dc-chip--active:hover { background: rgba(22,163,74,0.22); }
:root[data-theme="dark"] .dc-chip--used { background: var(--op-bg); border-color: var(--op-border); }
:root[data-theme="dark"] .dc-chip-qr { background: var(--op-surface); border-color: var(--op-border); color: var(--op-text-secondary); }

/* ── Driver Fees panel (df-*): white driver cards + buttons + table ─── */
:root[data-theme="dark"] .df-driver-card { background: var(--op-surface); border-color: var(--op-border); }
:root[data-theme="dark"] .df-driver-card:hover { border-color: var(--op-text-secondary); }
:root[data-theme="dark"] .df-driver-name { color: var(--op-text-primary); }
:root[data-theme="dark"] .df-driver-phone { color: var(--op-text-muted); }
:root[data-theme="dark"] .df-driver-meta { background: var(--op-bg); color: var(--op-text-secondary); }
:root[data-theme="dark"] .df-btn { background: var(--op-surface); border-color: var(--op-border); color: var(--op-text-secondary); }
:root[data-theme="dark"] .df-btn:hover { border-color: var(--op-text-secondary); }
:root[data-theme="dark"] .df-table th { color: var(--op-text-muted); }
:root[data-theme="dark"] .df-table th,
:root[data-theme="dark"] .df-table td { border-bottom-color: var(--op-border-subtle); }
:root[data-theme="dark"] .df-table .df-total-row td { border-top-color: var(--op-text-secondary); }

/* Crash Reports Delete button is a bare native <button> (no bg rule) */
:root[data-theme="dark"] .stock-btn { background: var(--op-surface); color: var(--op-text-primary); border: 1px solid var(--op-border); }

/* ── Order Management: pipeline status tokens + action buttons ───────
   admin-panel.css defines the --s-* status colours LIGHT at :root (pale
   -bg tints, near-white). In dark that leaves the status badges and the
   Move Stage / Cancel / Discount buttons glaringly light. Flip the -bg /
   -border tints to low-alpha dark versions (accent text kept bright),
   and give the buttons (base has a hardcoded white bg) a dark surface. */
:root[data-theme="dark"] {
  --s-received-bg: rgba(59,130,246,0.16);  --s-received-border: rgba(59,130,246,0.42);
  --s-processing-bg: rgba(245,158,11,0.16); --s-processing-border: rgba(245,158,11,0.42);
  --s-scheduled-bg: rgba(139,92,246,0.16);  --s-scheduled-border: rgba(139,92,246,0.42);
  --s-out_for_delivery-bg: rgba(14,165,233,0.16); --s-out_for_delivery-border: rgba(14,165,233,0.42);
  --s-completed-bg: rgba(16,185,129,0.16);  --s-completed-border: rgba(16,185,129,0.42);
  --s-cancelled: #9ca3af; --s-cancelled-bg: rgba(148,148,166,0.16); --s-cancelled-border: rgba(148,148,166,0.36);
}
/* Buttons: base .op-advance-btn has `background: white`. Note/Edit/Remove
   carry inline `background:transparent` and stay dark on their own. */
:root[data-theme="dark"] .op-advance-btn { background: var(--op-surface); }
:root[data-theme="dark"] .op-advance-btn.btn-discount { border-color: #a78bfa; color: #a78bfa; }
:root[data-theme="dark"] .op-advance-btn.btn-discount:hover { background: rgba(139,92,246,0.16); }
:root[data-theme="dark"] .op-advance-btn.btn-advance:hover { background: var(--s-received-bg); }
:root[data-theme="dark"] .op-advance-btn.btn-cancel:hover { background: var(--s-cancelled-bg); }
/* Bank-transfer "awaiting verification" badge is hardcoded light red. */
:root[data-theme="dark"] .status-badge.sb-pending-payment-verification {
  background: var(--at-red-bg); color: #f2555a; border-color: rgba(242,85,90,0.42);
}

/* Customer-facing dark-mode toggle in the storefront header (on red). */
.sf-theme-toggle {
  display: inline-flex; align-items: center; justify-content: center;
  width: 34px; height: 34px; border-radius: 50%; margin-right: 6px;
  background: rgba(255,255,255,0.18); border: none; color: #fff; cursor: pointer; padding: 0;
}
.sf-theme-toggle:hover { background: rgba(255,255,255,0.28); }
.sf-theme-toggle svg { width: 17px; height: 17px; }
.sf-theme-toggle .cx-sun { display: none; }
:root[data-theme="dark"] .sf-theme-toggle .cx-sun { display: inline-block; }
:root[data-theme="dark"] .sf-theme-toggle .cx-moon { display: none; }

/* ══════════════════════════════════════════════════════════════════
   4. STOREFRONT DARK MODE (customer shop, style.v1.2.css)

   The storefront is heavily brand-red: the header, home hub, nav bar,
   user strip and cart header are #A11C1E and stay that way (they read
   well dark and keep the brand). Dark mode darkens the *content*
   surfaces the customer scrolls through: the shopping views, product
   cards, category bars, the cart body, checkout, auth card, modals,
   inputs and their text. Scoped entirely under [data-theme="dark"], so
   light mode is untouched.
════════════════════════════════════════════════════════════════════ */
:root[data-theme="dark"] {
  --sd-bg:#0c0c0f; --sd-surface:#1a1a1f; --sd-surface-2:#26262d;
  --sd-border:#34343d; --sd-text:#f5f5f7; --sd-text-2:#c4c4cf; --sd-muted:#9a9aa6;
}

/* DESKTOP storefront is a variable-based design layer whose tokens live
   under @media (min-width:1024px). Flip those exact tokens for dark and
   the whole desktop shop follows — cards, sidebar, cart, and every
   !important rule that reads them. Brand red tokens are left intact.
   Scoped to the same media query so the mobile layer is untouched. */
@media (min-width: 1024px) {
  :root[data-theme="dark"] {
    --cream:      #1a1a1f;
    --ink:        #f5f5f7;
    --ink-mid:    #c4c4cf;
    --ink-light:  #9a9aa6;
    --border:     #34343d;
    --surface:    #1a1a1f;
    --bg:         #0c0c0f;
    --shadow-sm:  0 1px 4px rgba(0,0,0,0.5);
    --shadow-md:  0 4px 16px rgba(0,0,0,0.6);
    --shadow-lg:  0 12px 40px rgba(0,0,0,0.65);
  }
}

/* Shopping views (were #f9f9f9) */
:root[data-theme="dark"] #build-yours-view,
:root[data-theme="dark"] #specialty-view,
:root[data-theme="dark"] #wholesale-view,
:root[data-theme="dark"] #checkout-view { background: var(--sd-bg); }

/* Sticky category bars (were white) */
:root[data-theme="dark"] .build-category-bar,
:root[data-theme="dark"] .wholesale-category-bar {
  background: var(--sd-surface); border-bottom-color: var(--sd-border);
}
:root[data-theme="dark"] .build-cat-bar-header,
:root[data-theme="dark"] .wholesale-cat-bar-header { background: var(--sd-surface-2); }
:root[data-theme="dark"] .build-cat-bar-header:active,
:root[data-theme="dark"] .wholesale-cat-bar-header:active { background: var(--sd-border); }
:root[data-theme="dark"] .build-cat-bar-title,
:root[data-theme="dark"] .wholesale-cat-bar-title { color: var(--sd-text); }
:root[data-theme="dark"] .build-cat-btn,
:root[data-theme="dark"] .wholesale-cat-btn {
  background: var(--sd-surface-2) !important;
  color: var(--sd-text) !important; -webkit-text-fill-color: var(--sd-text) !important;
  border: 1px solid var(--sd-border) !important;
}
:root[data-theme="dark"] .build-cat-btn.active,
:root[data-theme="dark"] .wholesale-cat-btn.active {
  background: #A11C1E !important; border-color: #A11C1E !important;
  color: #fff !important; -webkit-text-fill-color: #fff !important;
}
/* The category-bar header titles use the same #222 !important text-fill. */
:root[data-theme="dark"] .build-cat-bar-title,
:root[data-theme="dark"] .wholesale-cat-bar-title,
:root[data-theme="dark"] .wholesale-cat-bar-header {
  color: var(--sd-text) !important; -webkit-text-fill-color: var(--sd-text) !important;
}

/* Product / specialty / wholesale cards (were white, border #eee) */
:root[data-theme="dark"] .product-row,
:root[data-theme="dark"] .specialty-card,
:root[data-theme="dark"] .wholesale-item {
  background: var(--sd-surface); border-color: var(--sd-border);
}
:root[data-theme="dark"] .wholesale-item:hover { border-color: var(--sd-border) !important; }
:root[data-theme="dark"] .product-img-slot,
:root[data-theme="dark"] .specialty-img-slot,
:root[data-theme="dark"] .wholesale-img-slot,
:root[data-theme="dark"] .img-placeholder { background: var(--sd-surface-2); }
:root[data-theme="dark"] .product-name,
:root[data-theme="dark"] .specialty-name,
:root[data-theme="dark"] .cart-box-name,
:root[data-theme="dark"] .cart-item-name,
:root[data-theme="dark"] .addon-item-name { color: var(--sd-text); }
:root[data-theme="dark"] .specialty-desc,
:root[data-theme="dark"] .build-empty-msg { color: var(--sd-muted); }
/* .product-desc uses var(--ink-mid) which is only defined on desktop, so on
   mobile it falls back to a dark brown — force a readable light grey. */
:root[data-theme="dark"] .product-desc { color: var(--sd-text-2) !important; opacity: 1 !important; }

/* Quantity minus buttons (were #eee) — plus stays brand red */
:root[data-theme="dark"] .minus,
:root[data-theme="dark"] .cart-qty-btn.minus,
:root[data-theme="dark"] .specialty-qty-btn.minus,
:root[data-theme="dark"] .addon-qty-btn.minus,
:root[data-theme="dark"] .ws-single-qty-controls .qty-btn.minus { background: var(--sd-surface-2); color: var(--sd-text); }

/* Cart body (the red cart header stays) */
:root[data-theme="dark"] .cart-popup-inner,
:root[data-theme="dark"] .cart-popup-content { background: var(--sd-surface); }
:root[data-theme="dark"] .cart-section { border-bottom-color: var(--sd-border); }
:root[data-theme="dark"] .cart-item-name,
:root[data-theme="dark"] .cart-box-name { color: var(--sd-text); }
:root[data-theme="dark"] .cart-total,
:root[data-theme="dark"] .cart-edit-btn:active { border-top-color: var(--sd-border); }
:root[data-theme="dark"] .cart-edit-btn { border-color: var(--sd-border); color: var(--sd-text-2); }
:root[data-theme="dark"] .cart-clear-no { background: var(--sd-surface-2); color: var(--sd-text-2); border-color: var(--sd-border); }

/* Meat sub-category strip (was #fdf0f0) */
:root[data-theme="dark"] .meat-subcat-bar { background: var(--sd-surface-2); border-bottom-color: var(--sd-border); }
:root[data-theme="dark"] .meat-subcat-btn { background: var(--sd-surface); color: var(--sd-text-2); border-color: var(--sd-border); }
/* The sidebar variant is an ID (#meat-subcat-bar, background:#fdf0f0) — id
   specificity beats the .class rule above, so override the id too. */
:root[data-theme="dark"] #meat-subcat-bar,
:root[data-theme="dark"] #ws-meat-subcat-bar { background: var(--sd-surface-2); border-top-color: var(--sd-border); }

/* Add-on panel */
:root[data-theme="dark"] .addon-panel-inner { background: var(--sd-surface); }
:root[data-theme="dark"] .addon-item-row { border-color: var(--sd-border); }

/* ── Full checkout flow (all steps live in white .checkout-card) ── */
:root[data-theme="dark"] .checkout-card { background: var(--sd-surface) !important; color: var(--sd-text); box-shadow: 0 2px 12px rgba(0,0,0,0.5); }
/* Progress step circles (1-2-3-4): inactive dark, active red */
:root[data-theme="dark"] .checkout-progress-step { background: var(--sd-surface-2); border-color: var(--sd-border); color: var(--sd-muted); }
:root[data-theme="dark"] .checkout-progress-step.active { background: #A11C1E; border-color: #A11C1E; color: #fff; }
/* The popup SHEET itself (pickup-location / delivery-region modals) was
   #fff — this is the white the whole popup shows. */
:root[data-theme="dark"] .delarea-sheet { background: var(--sd-surface) !important; color: var(--sd-text); box-shadow: 0 -8px 40px rgba(0,0,0,0.6); }
:root[data-theme="dark"] .delarea-close { background: var(--sd-surface-2) !important; color: var(--sd-text-2) !important; }
:root[data-theme="dark"] .delarea-back { color: #f2555a !important; }
:root[data-theme="dark"] .delarea-card-day { color: var(--sd-muted) !important; }
/* Location option cards (pickup / delivery area) */
:root[data-theme="dark"] .delarea-card { background: var(--sd-surface-2) !important; border-color: var(--sd-border) !important; }
:root[data-theme="dark"] .delarea-card.active { border-color: #A11C1E !important; background: rgba(161,28,30,0.18) !important; }
:root[data-theme="dark"] .delarea-card-label { color: var(--sd-text) !important; }
/* Form fields + labels */
:root[data-theme="dark"] .checkout-form-field label,
:root[data-theme="dark"] .checkout-phone-field span { color: var(--sd-text) !important; }
:root[data-theme="dark"] .optional { color: var(--sd-muted) !important; }
:root[data-theme="dark"] .checkout-form-field input,
:root[data-theme="dark"] .checkout-form-field select,
:root[data-theme="dark"] .checkout-form-field textarea { background: var(--sd-surface-2) !important; border-color: var(--sd-border) !important; color: var(--sd-text) !important; }
:root[data-theme="dark"] .checkout-form-field input::placeholder,
:root[data-theme="dark"] .checkout-form-field textarea::placeholder { color: var(--sd-muted); }
/* Payment method buttons */
:root[data-theme="dark"] .checkout-payment-btn { background: var(--sd-surface-2) !important; border-color: var(--sd-border) !important; color: var(--sd-text) !important; }
:root[data-theme="dark"] .checkout-payment-btn.active { background: #A11C1E !important; border-color: #A11C1E !important; color: #fff !important; }
/* Totals / summary rows + dividers */
:root[data-theme="dark"] .total-row { color: var(--sd-text-2); }
:root[data-theme="dark"] .checkout-card-totals { border-top-color: var(--sd-border); }
:root[data-theme="dark"] .total-row.total-final { border-top-color: var(--sd-border); }
:root[data-theme="dark"] .checkout-divider { background: var(--sd-border); }
:root[data-theme="dark"] .checkout-disclaimer { background: var(--sd-surface-2); border-color: var(--sd-border); }
:root[data-theme="dark"] .checkout-disclaimer label { color: var(--sd-text-2); }
:root[data-theme="dark"] .delivery-order-summary { background: var(--sd-surface-2); border-color: var(--sd-border); }
:root[data-theme="dark"] .delivery-summary-row { color: var(--sd-text-2); }
:root[data-theme="dark"] .delivery-summary-title { color: var(--sd-muted); }
/* Secondary buttons (BACK / CANCEL / BACK TO MENU) */
:root[data-theme="dark"] .checkout-btn-secondary { color: var(--sd-text-2); border-color: var(--sd-border); }
:root[data-theme="dark"] .checkout-btn-secondary:active { background: var(--sd-surface-2); }
:root[data-theme="dark"] .checkout-card .cart-section { border-bottom-color: var(--sd-border); }

/* ── Bank-transfer payment screen ── */
:root[data-theme="dark"] .bank-transfer-details { background: var(--sd-surface-2) !important; }
:root[data-theme="dark"] .transfer-instruction { color: var(--sd-text) !important; }
:root[data-theme="dark"] .bank-details-box,
:root[data-theme="dark"] .transfer-amount-box { background: var(--sd-surface) !important; border-color: #A11C1E; }
:root[data-theme="dark"] .detail-row { border-bottom-color: var(--sd-border) !important; }
:root[data-theme="dark"] .detail-label { color: var(--sd-text-2) !important; }
:root[data-theme="dark"] .amount-row { color: var(--sd-text-2) !important; }
:root[data-theme="dark"] .transfer-warning { background: rgba(224,169,74,0.14) !important; color: #e0a94a !important; border-left-color: #e0a94a !important; }

/* ── Order summary info card ── */
:root[data-theme="dark"] .checkout-summary-info { background: var(--sd-surface-2) !important; border-color: var(--sd-border) !important; }
:root[data-theme="dark"] .summary-info-row { border-bottom-color: var(--sd-border) !important; }
:root[data-theme="dark"] .summary-info-row span:first-child { color: var(--sd-muted) !important; }
:root[data-theme="dark"] .summary-info-row span:last-child { color: var(--sd-text) !important; }

/* Phone-number prefix box (the "+1 (868)" chip) */
:root[data-theme="dark"] .checkout-phone-field span { background: var(--sd-surface-2); border-radius: 8px; }

/* Checkout method cards + receipt (were white / #f9f9f9) */
:root[data-theme="dark"] .checkout-method-card { background: var(--sd-surface); border-color: var(--sd-border); color: var(--sd-text); }
:root[data-theme="dark"] .checkout-method-card:hover { background: var(--sd-surface-2); }
:root[data-theme="dark"] .receipt-upload-area,
:root[data-theme="dark"] .receipt-preview { background: var(--sd-surface-2); border-color: var(--sd-border); }

/* Auth card + confirmation modal cards (were white) */
:root[data-theme="dark"] .auth-card,
:root[data-theme="dark"] .cm-card { background: var(--sd-surface); color: var(--sd-text); }
:root[data-theme="dark"] .cm-message { color: var(--sd-text-2); }
:root[data-theme="dark"] .cm-cancel { background: var(--sd-surface-2); color: var(--sd-text-2); }
:root[data-theme="dark"] .auth-tagline { color: var(--sd-muted); }
:root[data-theme="dark"] .auth-method-btn { color: var(--sd-text-2); }
:root[data-theme="dark"] .auth-method-btn:hover:not(.active) { background: var(--sd-surface-2); }
:root[data-theme="dark"] .auth-divider { color: var(--sd-muted); }
:root[data-theme="dark"] .auth-divider::before,
:root[data-theme="dark"] .auth-divider::after { background: var(--sd-border); }
:root[data-theme="dark"] .auth-guest-btn { color: var(--sd-text-2); border-color: var(--sd-border); }
:root[data-theme="dark"] .auth-phone-prefix { background: var(--sd-surface-2); color: var(--sd-text-2); border-right-color: var(--sd-border); }
:root[data-theme="dark"] .auth-phone-row { border-color: var(--sd-border); }

/* Storefront inputs (were white / #ddd border) */
:root[data-theme="dark"] .auth-input,
:root[data-theme="dark"] .auth-phone-input,
:root[data-theme="dark"] #home-hub input,
:root[data-theme="dark"] #checkout-view input,
:root[data-theme="dark"] #checkout-view textarea,
:root[data-theme="dark"] .cart-popup-content input,
:root[data-theme="dark"] .cm-card input {
  background: var(--sd-surface-2); color: var(--sd-text); border-color: var(--sd-border);
}
:root[data-theme="dark"] .auth-input::placeholder,
:root[data-theme="dark"] #checkout-view input::placeholder { color: var(--sd-muted); }

/* Bottom checkout / tally footers (were white) */
:root[data-theme="dark"] #main-footer,
:root[data-theme="dark"] #ws-footer { background: var(--sd-surface); border-top: 1px solid var(--sd-border); }

/* Generic dark-surface fallback for any remaining white blocks inside the
   shopping views (keeps stray cards from glowing white). */
:root[data-theme="dark"] #build-yours-view .build-item-list > *:not(.product-row),
:root[data-theme="dark"] #specialty-view .specialty-grid > *,
:root[data-theme="dark"] #wholesale-view .wholesale-item-list > *:not(.wholesale-item) { color: var(--sd-text); }

/* ── 5. Ported companion panels — desktop layout ───────────────────
   The Profile / Tasks / Chat overlays were built for the phone-width
   companion. In the main admin they open full-screen on a wide desktop,
   and some of their form styling (.cmp-field*) lives in admincompanion.css
   which this app doesn't load. Restore that styling and give each panel a
   centered, readable column instead of stretching edge to edge. */

/* Field layout + inputs (missing here — supplied for the main app). */
#cmp-profile .cmp-field { display: block; margin-bottom: 16px; }
#cmp-profile .cmp-field-label {
  display: block; font-size: 12px; font-weight: 700; text-transform: uppercase;
  letter-spacing: 0.04em; color: var(--op-text-muted); margin-bottom: 6px;
}
#cmp-profile .cmp-field input {
  width: 100%; box-sizing: border-box; font-family: inherit; font-size: 15px;
  padding: 12px 14px; border: 1.5px solid var(--op-border); border-radius: 12px;
  background: var(--op-surface); color: var(--op-text-primary);
  outline: none; transition: border-color .15s, box-shadow .15s;
}
#cmp-profile .cmp-field input:focus {
  border-color: #6d28d9; box-shadow: 0 0 0 3px rgba(109,40,217,0.14);
}

/* The header row uses a phone metric; keep it tidy and aligned. */
#cmp-profile .cmp-set-head,
#cmp-tasks .cmp-set-head,
#cmp-chat .cmp-set-head { padding-top: 4px; }

@media (min-width: 1024px) {
  /* Centered column for each ported panel instead of full-bleed. */
  #cmp-profile .cmp-set-inner,
  #cmp-tasks   .cmp-set-inner,
  #cmp-chat    .cmp-set-inner {
    max-width: 780px; width: 100%; margin: 0 auto;
    padding-left: 28px; padding-right: 28px;
    padding-top: calc(18px + env(safe-area-inset-top));
  }
  #cmp-profile .cmp-set-inner { max-width: 560px; }

  /* Profile: notification banner + save button shouldn't be page-wide slabs. */
  #cmp-profile .cmp-notif-btn { border-radius: 14px; }
  #cmp-profile .cmp-set-actions { max-width: 320px; margin-left: auto; margin-right: auto; }

  /* Tasks: the add row and cards read better a touch tighter. */
  #cmp-tasks .cmp-task-list { max-width: 780px; margin: 0 auto; }

  /* Chat conversation list rows get a card-ish inset on desktop. */
  #cmp-chat .cmp-chat-conv { border-radius: 14px; }
  #cmp-chat .cmp-chat-conv:hover { background: var(--op-border-subtle); }

  /* Chat thread view: constrain to a centered column, not the whole width. */
  #cmp-chat .cmp-chat-thread {
    max-width: 900px; margin: 0 auto;
    border-left: 1px solid var(--op-border); border-right: 1px solid var(--op-border);
  }
}
