/* PayShore customer /app shared stylesheet — T1 single-touch sweep.
 * Canonical tokens (majority value across the 26 customer pages) +
 * top-level boilerplate duplicated on 8+ pages. Loaded BEFORE each
 * page's inline <style>, so any page-specific rule wins the cascade.
 * Staff surface untouched. Rules originally inside @media stay in pages.
 */
:root {
  --accent: #f97316;
  --bad: #dc2626;
  --bg: #e8edf4;
  --bg1: #eef4fb;
  --bg2: #e7eff8;
  --font: "Inter", ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial;
  --good: #16a34a;
  --ink: #0f172a;
  --line: #e5e7eb;
  --muted: #5b6b82;
  --muted2: #8ea0b8;
  --panel: #ffffff;
  --primary: #2563eb;
  --primary2: #4f46e5;
  --radius: 16px;
  --radius2: 12px;
  --shadow: 0 18px 45px rgba(15,23,42,.10);
  --shadow2: 0 10px 24px rgba(15,23,42,.08);
  --w-bold: 700;
  --w-extrabold: 800;
  --w-medium: 600;
  --w-regular: 500;
  --w-semibold: 650;
}

/* shared by 15 pages */
.nav {
  display:flex;
  flex-direction:column;
  gap:6px;
  padding:8px 6px 0;
}

/* shared by 15 pages */
button:not(.xbtn):not(.backbtn):not(.arrowbtn):not(.iconbtn):not(.chevBtn):not(.sp-icon-btn):not(.railIcon), .btn, a.btn, button.btn {
  font-size:12px !important;
  font-weight:var(--w-semibold, 600) !important;
  line-height:1 !important;
}

/* shared by 14 pages */
body {
  margin:0;
  font-family:var(--font);
  color:var(--ink);
  background:#212B45;
}

/* shared by 13 pages */
.backbtn svg {
  width:16px;
  height:16px;
  color:var(--muted);
}

/* shared by 13 pages */
.brand {
  display:flex;
  align-items:center;
  gap:10px;
  padding:10px 10px 14px;
  min-width:0;
}

/* shared by 13 pages */
.mark img {
  width:28px;
  height:28px;
  display:block;
  object-fit:contain;
}

/* shared by 12 pages */
.btn:hover {
  background: rgba(2,6,23,.03);
  color:var(--ink);
}

/* shared by 12 pages */
.mark {
  width:38px;
  height:38px;
  border-radius:12px;
  background: rgba(37,99,235,.10);
  border: 1px solid rgba(37,99,235,.18);
  display:grid;
  place-items:center;
  flex:0 0 auto;
  overflow:hidden;
}

/* shared by 12 pages */
.nav a:hover {
  background: rgba(2,6,23,.04);
  color:var(--ink);
}

/* shared by 12 pages */
.sidebar {
  background: linear-gradient(180deg, #ffffff, #fbfdff);
  border-right:1px solid rgba(226,232,240,.95);
  padding:18px 14px;
  min-width:0;
}

/* shared by 12 pages */
.xbtn svg {
  width:16px;
  height:16px;
  color:var(--muted);
}

/* shared by 11 pages */
.lefthead {
  display:flex;
  align-items:center;
  gap:10px;
  min-width:0;
}

/* shared by 11 pages */
.nav a svg {
  width:20px;
  height:20px;
  opacity:.85;
  flex:0 0 20px;
}

/* shared by 11 pages */
.nav a.active {
  background: rgba(37,99,235,.10);
  color: var(--ink);
  font-weight:var(--w-semibold);
}

/* shared by 11 pages */
.overlay.on {
  opacity:1;
  pointer-events:auto;
}

/* shared by 10 pages */
.modal.on {
  opacity:1;
  pointer-events:auto;
}

/* shared by 10 pages */
.topbar .statusPill .label {
  font-size:12px;
  font-weight:500;
  color:var(--ink);
  line-height:1.1;
}

/* shared by 10 pages */
.topbar .statusPill .sub {
  font-size:12px;
  font-weight:500;
  color:var(--muted);
  line-height:1.1;
}

/* shared by 9 pages */
*, *::before, *::after {
  box-sizing:border-box;
}

/* shared by 9 pages */
.actions {
  display:flex;
  align-items:center;
  gap:10px;
}

/* shared by 9 pages */
.backbtn {
  width:34px;
  height:34px;
  border-radius:999px;
  border:1px solid rgba(226,232,240,.95);
  background: linear-gradient(180deg, #fff, #fbfdff);
  display:grid;
  place-items:center;
  box-shadow: 0 6px 14px rgba(15,23,42,.06);
  cursor:pointer;
  flex:0 0 auto;
}

/* shared by 9 pages */
.topbar {
  display:flex;
  align-items:center;
  justify-content:space-between;
  padding: 6px 4px 14px;
  gap:12px;
}

/* shared by 9 pages */
.topbar .statusPill {
  display:inline-flex;
  align-items:center;
  gap:8px;
  justify-content:flex-start;
  padding:8px 10px;
  border-radius:999px;
  border:1px solid rgba(226,232,240,.95);
  font-size:12px;
  font-weight:500;
  color:var(--muted);
  background:linear-gradient(180deg,#fff,#fbfdff);
  box-shadow:0 6px 14px rgba(15,23,42,.06);
  cursor:pointer;
  user-select:none;
  white-space:nowrap;
}

/* shared by 9 pages */
.topbar .statusPill .dot {
  width:18px;
  height:18px;
  min-width:18px;
  border-radius:999px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  font-size:10px;
  line-height:1;
  color:#fff;
  font-weight:var(--w-medium);
  background:var(--good);
}

/* shared by 9 pages */
.topbar .statusPill.bad .dot {
  background:var(--bad);
}

/* shared by 9 pages */
.topbar .statusPill.warn .dot {
  background:var(--warn);
}

/* shared by 8 pages */
* {
  box-sizing:border-box;
}

/* shared by 8 pages */
.btn.primary:hover {
  background: rgba(37,99,235,.14);
}

/* shared by 8 pages */
.card {
  border-radius: var(--radius);
  border:1px solid rgba(226,232,240,.95);
  background:#fff;
  box-shadow: var(--shadow2);
  overflow:hidden;
  min-width:0;
}

/* shared by 8 pages */
.dialog-hd {
  padding:14px 14px 10px;
  border-bottom:1px solid rgba(226,232,240,.95);
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:10px;
}

/* shared by 8 pages */
.iconbtn {
  width:34px;
  height:34px;
  border-radius:999px;
  border:1px solid rgba(226,232,240,.95);
  background: linear-gradient(180deg, #fff, #fbfdff);
  display:grid;
  place-items:center;
  box-shadow: 0 6px 14px rgba(15,23,42,.06);
  cursor:pointer;
}

/* shared by 8 pages */
.iconbtn svg {
  width:16px;
  height:16px;
  color:var(--muted);
}

/* shared by 8 pages */
html, body {
  height:100%;
  overflow-x:hidden;
  background:#212B45;
}

/* shared by 8 pages */
img, svg {
  display:block;
  max-width:100%;
}
/* ── Sticky navigation (Luke ruling, 2026-08-09) ──────────────────────
 * The left sidebar and the top bar stay visible while the content area
 * scrolls. Sidebar scrolls internally when taller than the viewport.
 * Requires the page's main layout container to keep default overflow
 * (sticky disengages inside an overflow:hidden ancestor) — verified per
 * page in the sweep's browser pass. */
.sidebar {
  position: sticky;
  top: 0;
  align-self: flex-start;
  max-height: 100vh;
  overflow-y: auto;
}
.topbar {
  position: sticky;
  top: 0;
  z-index: 50;
  /* Opaque backing: without it, content scrolls visibly beneath the
   * sticky bar and collides with its text (Luke's sticky-nav ruling).
   * John UAT 2026-08-15: the previous translucent grey (rgba(245,247,251,.92))
   * read as a disjointed header band, because .main and every card behind
   * it are pure white. Matching #fff keeps the occlusion the sticky bar
   * needs while making the band seamless. Verified white on all nine
   * portal pages before the change; the blur is intentionally gone — it
   * cannot show through an opaque surface. */
  background: #fff;
}
