/* Mobile-first, portrait, optimised for ~390x844. Self-contained: no external fonts or assets. */
:root {
  --bg: #f4f6f8;
  --card: #ffffff;
  --ink: #1a2330;
  --muted: #5b6877;
  --accent: #1f6feb;
  --accent-ink: #ffffff;
  --line: #d9e0e8;
  --selected: #e7f0ff;
  --focus: #0b3d91;
  --radius: 14px;
}

* { box-sizing: border-box; }

html, body {
  margin: 0;
  padding: 0;
  background: var(--bg);
  color: var(--ink);
  font-family: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
  font-size: 17px;
  line-height: 1.45;
}

body {
  display: flex;
  justify-content: center;
  padding: 16px;
  min-height: 100dvh;
}

.card {
  width: 100%;
  max-width: 420px;
  background: var(--card);
  border-radius: var(--radius);
  padding: 20px;
  box-shadow: 0 1px 3px rgba(16, 24, 40, 0.08);
}

/* Per-business branding header (neutral by default; populated at runtime). Same-origin logo only. */
.brand { text-align: center; margin: 2px 0 14px; }
.brand-logo { display: block; height: 52px; width: auto; max-width: 100%; margin: 0 auto 8px; }
.brand-name { font-weight: 700; font-size: 1.05rem; color: var(--ink); margin: 0; }
/* Enumerated visual presets (color theme only — never client CSS). Default = neutral (:root). */
.preset-calm { --accent: #2f8f83; --selected: #e3f4f1; --focus: #1d6b61; }
.preset-warm { --accent: #c1664b; --selected: #fbece5; --focus: #94472f; }

.title { font-size: 1.15rem; margin: 0 0 12px; }
.heading { font-size: 1.05rem; margin: 16px 0 6px; }
.muted { color: var(--muted); margin: 4px 0; }
.status { font-size: 1.05rem; color: var(--muted); }
.current { font-weight: 600; margin: 2px 0 8px; }
.receipt { font-weight: 700; font-size: 1.1rem; }

.slots { list-style: none; margin: 8px 0 18px; padding: 0; display: grid; gap: 10px; }

.slot {
  display: block;
  width: 100%;
  min-height: 48px; /* comfortable touch target */
  text-align: left;
  padding: 12px 14px;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: var(--card);
  color: var(--ink);
  font-size: 1rem;
  cursor: pointer;
}

.slot[aria-selected="true"] {
  border-color: var(--accent);
  background: var(--selected);
  font-weight: 600;
}

button.primary,
button.secondary {
  width: 100%;
  min-height: 50px;
  border-radius: 12px;
  font-size: 1.02rem;
  font-weight: 600;
  cursor: pointer;
  border: 1px solid transparent;
}

button.primary { background: var(--accent); color: var(--accent-ink); }
button.primary:disabled { opacity: 0.5; cursor: not-allowed; }
button.secondary { background: var(--card); color: var(--accent); border-color: var(--accent); }

/* Visible keyboard focus on every interactive control. */
:focus-visible {
  outline: 3px solid var(--focus);
  outline-offset: 2px;
}

@media (prefers-reduced-motion: no-preference) {
  .slot, button { transition: background-color 0.12s ease, border-color 0.12s ease; }
}
