/* Reset & base */
* { box-sizing: border-box; margin: 0; padding: 0; }
[x-cloak] { display: none !important; }

html, body { height: 100%; }
body {
  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;
  font-size: 14px;
  line-height: 1.5;
  color: #1f2937;
  background: #f7f8fa;
  -webkit-font-smoothing: antialiased;
}

button { font-family: inherit; font-size: inherit; cursor: pointer; }
input, select, textarea {
  font-family: inherit;
  font-size: 14px;
  padding: 8px 10px;
  border: 1px solid #d1d5db;
  border-radius: 6px;
  background: #fff;
  width: 100%;
  outline: none;
  color: #1f2937;
}
input:focus, select:focus, textarea:focus { border-color: #6366f1; box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.12); }
input[readonly], select:disabled, textarea[readonly] { background: #f3f4f6; cursor: not-allowed; }
label { display: block; font-size: 12px; color: #6b7280; margin: 12px 0 4px; }

/* =========================================================================
   LOGIN
   ========================================================================= */
.login-screen {
  min-height: 100vh;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 20px;
  background: linear-gradient(180deg, #fafbff 0%, #f1f3fb 100%);
}
.login-card {
  background: #fff;
  padding: 32px 28px;
  border-radius: 12px;
  border: 1px solid #e5e7eb;
  width: 100%;
  max-width: 360px;
}
.login-title {
  display: flex; flex-direction: column; align-items: center; gap: 8px;
  font-size: 20px; font-weight: 600; margin-bottom: 24px;
  color: #1f2937;
  text-align: center;
}
.login-title i { font-size: 22px; color: #6366f1; }
.login-logo {
  width: 96px; height: 96px;
  border-radius: 50%;
  object-fit: cover;
  border: 2px solid #e5e7eb;
  box-shadow: 0 2px 8px rgba(0,0,0,0.08);
}
.login-card .btn-primary { width: 100%; margin-top: 20px; }
.error { color: #b54141; font-size: 13px; margin-top: 12px; }

/* =========================================================================
   SHELL
   ========================================================================= */
.shell { min-height: 100vh; display: flex; flex-direction: column; }

.topbar {
  display: flex; align-items: center; gap: 16px;
  padding: 0 20px; height: 56px;
  background: #fff;
  border-bottom: 1px solid #e5e7eb;
  flex-shrink: 0;
  position: sticky; top: 0; z-index: 30;
}
.brand {
  display: flex; align-items: center; gap: 8px;
  font-weight: 600; font-size: 15px;
  flex-shrink: 0;
}
.brand i { font-size: 20px; color: #6366f1; }
.brand-logo {
  width: 32px; height: 32px;
  border-radius: 50%;
  object-fit: cover;
  border: 1px solid #e5e7eb;
}
.crumbs { font-size: 13px; color: #6b7280; }
.crumbs-bar {
  background: #f9fafb; padding: 8px 28px; font-size: 12px;
  color: #6b7280; border-bottom: 1px solid #e5e7eb; text-transform: uppercase;
  letter-spacing: 0.5px; font-weight: 500;
}
.top-right { display: flex; align-items: center; gap: 12px; margin-left: auto; flex-shrink: 0; }
.branch-select { width: auto; min-width: 160px; padding: 6px 10px; font-size: 13px; }
/* Button-style branch switcher — replaces the select.
   Click takes the user back to the branch picker (the same screen
   shown at login). Visually it looks like a tag/chip that's
   clearly clickable. */
.branch-button {
  display: inline-flex; align-items: center; gap: 8px;
  background: #fff; border: 1px solid #d1d5db; border-radius: 6px;
  padding: 7px 12px; font-size: 13px; color: #1f2937;
  cursor: pointer; transition: background-color 0.15s, border-color 0.15s;
  font-family: inherit;
}
.branch-button:hover { background: #f9fafb; border-color: #9ca3af; }
.branch-button i { color: #6b7280; }
.branch-button .hint { color: #6b7280; }

/* Hamburger for mobile only */
.hamburger {
  display: none;
  background: none; border: none; cursor: pointer;
  padding: 6px; font-size: 22px; color: #1f2937;
}

/* Top nav (horizontal dropdown) */
.topnav {
  display: flex; align-items: center; gap: 2px;
  flex: 1; min-width: 0;
}
.topnav-item {
  position: relative;
}
.topnav-link {
  display: flex; align-items: center; gap: 6px;
  padding: 8px 12px; border-radius: 6px;
  font-size: 13px; font-weight: 500;
  color: #4b5563; cursor: pointer;
  text-decoration: none;
  white-space: nowrap;
}
.topnav-link:hover { background: #f3f4f6; color: #111827; }
.topnav-link.active { background: #eef2ff; color: #4338ca; }
.topnav-link i { font-size: 16px; }
.topnav-link .chev { font-size: 14px; margin-left: 2px; opacity: 0.6; }

.topnav-dropdown {
  position: absolute; top: 100%; left: 0; margin-top: 6px;
  background: #fff; border: 1px solid #e5e7eb; border-radius: 8px;
  min-width: 240px; padding: 6px; z-index: 50;
  box-shadow: 0 10px 28px rgba(0,0,0,0.12);
}
.dd-item {
  display: flex; align-items: center; gap: 10px;
  padding: 9px 12px; border-radius: 6px;
  font-size: 13px; color: #1f2937;
  cursor: pointer; text-decoration: none;
}
.dd-item:hover { background: #f3f4f6; }
.dd-item i { font-size: 16px; color: #6b7280; width: 16px; flex-shrink: 0; }
.dd-divider { height: 1px; background: #e5e7eb; margin: 6px -6px; }

.user-menu { position: relative; }
.avatar {
  width: 32px; height: 32px; border-radius: 50%;
  background: #eef2ff; color: #4338ca;
  display: flex; align-items: center; justify-content: center;
  font-size: 12px; font-weight: 600; cursor: pointer;
}
.dropdown {
  position: absolute; top: 42px; right: 0;
  background: #fff; border: 1px solid #e5e7eb; border-radius: 8px;
  width: 220px; padding: 10px; z-index: 50;
  box-shadow: 0 8px 24px rgba(0,0,0,0.08);
}
.dropdown-name { font-size: 13px; font-weight: 600; }
.dropdown-email { font-size: 12px; color: #6b7280; word-break: break-all; }
.divider { height: 1px; background: #e5e7eb; margin: 8px -10px; }
.dropdown-item {
  display: flex; align-items: center; gap: 8px;
  padding: 8px; border-radius: 6px; cursor: pointer;
  font-size: 13px; color: #1f2937;
}
.dropdown-item:hover { background: #f3f4f6; }

.body { display: flex; flex: 1; min-height: 0; flex-direction: column; }

.main {
  flex: 1; padding: 24px 28px;
  overflow-y: auto;
  background: #f7f8fa;
}
.loading {
  text-align: center; padding: 60px 20px; color: #6b7280; font-size: 14px;
}

/* =========================================================================
   PAGE
   ========================================================================= */
.page-head {
  display: flex; align-items: center; justify-content: space-between;
  margin-bottom: 20px;
}
.page-head h2 { font-size: 20px; font-weight: 600; }
.page-head .actions { display: flex; align-items: center; gap: 10px; }

/* =========================================================================
   METRICS
   ========================================================================= */
.metrics {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 12px;
  margin-bottom: 24px;
}
.metric {
  background: #fff;
  border: 1px solid #e5e7eb;
  border-radius: 10px;
  padding: 14px 16px;
}
.metric-label { font-size: 12px; color: #6b7280; }
.metric-value {
  font-size: 22px; font-weight: 600; margin-top: 4px;
  color: #1f2937;
}
.metric.clickable { cursor: pointer; transition: background 0.15s; }
.metric.clickable:hover { background: #f9fafb; }
.metric-value.danger { color: #b54141; }
.metric-value.warning { color: #b45309; }
.metric-sub {
  margin-top: 6px;
  font-size: 12px;
  color: #6b7280;
  line-height: 1.3;
}
/* ============================================================================
   STOCK GRID — card view for the Stock page (alternative to table view)
   Toggleable via the icon buttons on the filter bar. Cards are clickable
   and open the product detail page.
   ============================================================================ */
.stock-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
  gap: 12px;
  margin-top: 8px;
}
.stock-card {
  background: #fff;
  border: 1px solid #e5e7eb;
  border-radius: 8px;
  padding: 12px;
  cursor: pointer;
  transition: box-shadow 0.15s, transform 0.15s;
  display: flex; flex-direction: column; gap: 6px;
}
.stock-card:hover {
  box-shadow: 0 4px 12px rgba(0,0,0,0.08);
  transform: translateY(-1px);
}
.stock-card-head {
  display: flex; justify-content: space-between; align-items: center;
}
.stock-card-head .mono {
  font-family: 'Courier New', monospace;
  font-size: 12px; color: #6b7280;
}
.stock-card-name {
  font-weight: 500;
  color: #1f2937;
  font-size: 14px;
  /* Clamp to 2 lines */
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
  min-height: 38px;
}
.stock-card-qty {
  display: flex; align-items: baseline; gap: 4px;
  padding: 4px 0;
}
.stock-card-qty .big {
  font-size: 24px; font-weight: 700; color: #1f2937;
}
.stock-card-qty .unit {
  font-size: 13px; color: #6b7280;
}
.stock-card-prices {
  display: flex; justify-content: space-between;
  font-size: 12px; padding-top: 6px;
  border-top: 1px dashed #f3f4f6;
}
.stock-card-prices .lbl {
  color: #6b7280; margin-right: 4px;
}
.btn-ghost.active {
  background: #ebe8ff; color: var(--brand);
}

.danger-text { color: #b54141; }
.warning-text { color: #b45309; }
.success-text { color: #16a34a; }
.success-text { color: #15803d; }

/* Sortable table headers — clickable cells with a hover hint and
   an arrow indicator that's drawn by the template via sortIndicator(). */
.data-table thead th.sortable-h {
  cursor: pointer;
  user-select: none;
  transition: background-color 0.1s;
}
.data-table thead th.sortable-h:hover {
  background-color: #f3f4f6;
}
.data-table thead th.sortable-h::after {
  /* Reserves space so the column doesn't jump when an arrow appears.
     The actual arrow is rendered inline via x-text=sortIndicator(). */
  content: '';
}

/* =========================================================================
   TABS
   ========================================================================= */
.card-head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 12px;
}
.card-head h3 { margin: 0; }
.tabs {
  display: flex;
  border-bottom: 1px solid #e5e7eb;
  margin-bottom: 20px;
  gap: 4px;
}
.tabs a {
  padding: 10px 18px;
  font-size: 13px;
  font-weight: 500;
  color: #6b7280;
  cursor: pointer;
  border-bottom: 2px solid transparent;
  margin-bottom: -1px;
}
.tabs a:hover { color: #1f2937; }
.tabs a.active {
  color: #4338ca;
  border-bottom-color: #6366f1;
}

/* =========================================================================
   CARD
   ========================================================================= */
.card {
  background: #fff;
  border: 1px solid #e5e7eb;
  border-radius: 10px;
  padding: 18px 20px;
  margin-bottom: 16px;
}
.card h3 { font-size: 14px; font-weight: 600; }
.card-head {
  display: flex; align-items: center; justify-content: space-between;
  margin-bottom: 14px;
}
.placeholder {
  text-align: center; padding: 60px 20px; color: #6b7280;
}
.placeholder i { font-size: 36px; color: #9ca3af; display: block; margin-bottom: 10px; }

/* =========================================================================
   FILTERS
   ========================================================================= */
.filters {
  display: flex; gap: 10px; margin-bottom: 16px; align-items: center;
  flex-wrap: wrap;
}
.filters input, .filters select { width: auto; min-width: 160px; }
.check { display: flex; align-items: center; gap: 6px; font-size: 13px; color: #6b7280; margin: 0; }
.check input { width: auto; }

/* =========================================================================
   TABLE
   ========================================================================= */
.data-table {
  width: 100%; border-collapse: collapse; font-size: 13px;
}
.data-table th {
  text-align: left; padding: 10px 12px;
  font-weight: 500; font-size: 11px;
  color: #6b7280; text-transform: uppercase; letter-spacing: 0.5px;
  border-bottom: 1px solid #e5e7eb;
}
.data-table td { padding: 10px 12px; border-bottom: 1px solid #f3f4f6; }
.data-table tr:last-child td { border-bottom: 0; }
.data-table tr.clickable { cursor: pointer; }
.data-table tr.clickable:hover { background: #f9fafb; }
.data-table .num { text-align: right; font-variant-numeric: tabular-nums; }
.data-table .mono { font-family: 'SF Mono', Menlo, Consolas, monospace; font-size: 12px; }
.data-table .empty { text-align: center; padding: 30px; color: #9ca3af; font-style: italic; }
.data-table.compact td { padding: 6px 8px; font-size: 12px; }
.data-table.compact .small { font-size: 11px; color: #6b7280; }

/* Inline editable table */
.data-table.editable td { padding: 6px 8px; vertical-align: middle; }
.data-table.editable input, .data-table.editable select { padding: 6px 8px; font-size: 13px; }
.data-table.editable .num input { text-align: right; }
.icon-btn {
  width: 28px; height: 28px; border-radius: 6px;
  background: transparent; border: 0; color: #6b7280;
  display: inline-flex; align-items: center; justify-content: center;
}
.icon-btn:hover { background: #f3f4f6; color: #b54141; }

/* =========================================================================
   BADGES
   ========================================================================= */
.badge {
  display: inline-block; font-size: 11px;
  padding: 3px 10px; border-radius: 999px;
  font-weight: 500; text-transform: uppercase; letter-spacing: 0.5px;
}
.badge-lg { font-size: 12px; padding: 5px 14px; }
.badge-draft    { background: #f3f4f6; color: #4b5563; }
.badge-issued   { background: #eef2ff; color: #4338ca; }
.badge-partial  { background: #fef3c7; color: #92400e; }
.badge-paid     { background: #d1fae5; color: #065f46; }
.badge-void     { background: #fee2e2; color: #991b1b; }
.badge-credited { background: #fee2e2; color: #991b1b; }

/* =========================================================================
   BUTTONS
   ========================================================================= */
.btn, .btn-primary, .btn-ghost, .btn-danger-ghost {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 8px 14px; border-radius: 6px;
  font-size: 13px; font-weight: 500;
  border: 1px solid transparent;
  text-decoration: none;
  white-space: nowrap;
}
.btn-primary { background: #6366f1; color: #fff; border-color: #6366f1; }
.btn-primary:hover:not(:disabled) { background: #4f46e5; border-color: #4f46e5; }
.btn-primary:disabled { background: #c7c8f1; border-color: #c7c8f1; cursor: not-allowed; }
.btn { background: #fff; color: #1f2937; border-color: #d1d5db; }
.btn:hover { background: #f9fafb; }
.btn-ghost { background: transparent; color: #4b5563; border-color: transparent; }
.btn-ghost:hover { background: #f3f4f6; color: #1f2937; }
.btn-danger-ghost { background: transparent; color: #b54141; border-color: transparent; }
.btn-danger-ghost:hover { background: #fef2f2; }
.btn-primary.full { width: 100%; justify-content: center; margin-top: 16px; }
.link { color: #4f46e5; cursor: pointer; font-size: 13px; }
.link:hover { text-decoration: underline; }

/* =========================================================================
   SALE DETAIL — two-column
   ========================================================================= */
.grid-2col {
  display: grid; grid-template-columns: 2fr 1fr; gap: 16px;
}
@media (max-width: 1024px) { .grid-2col { grid-template-columns: 1fr; } }

.totals-box {
  margin-top: 12px; padding: 12px 14px;
  background: #f9fafb; border-radius: 8px;
  font-size: 13px;
}
.totals-box div {
  display: flex; justify-content: space-between; padding: 3px 0;
}
.totals-box div span:last-child { font-variant-numeric: tabular-nums; }
.totals-box .grand {
  border-top: 1px solid #e5e7eb; margin-top: 6px; padding-top: 8px;
  font-weight: 600; font-size: 14px;
}
.totals-box .outstanding { color: #b54141; font-weight: 500; }

/* =========================================================================
   MODAL
   - On any viewport, the modal must never grow taller than the screen.
   - The header (title row) and footer (.modal-actions) stay visible;
     the body between them scrolls when content overflows.
   - On phones, modal becomes nearly full-screen and uses the full width.
   ========================================================================= */
.modal-overlay {
  position: fixed; inset: 0;
  background: rgba(0,0,0,0.45);
  display: flex; align-items: flex-start; justify-content: center;
  z-index: 100;
  padding: 24px 16px;
  overflow-y: auto;       /* fallback — let overlay scroll if modal somehow overflows */
  -webkit-overflow-scrolling: touch;
}
.modal {
  background: #fff; border-radius: 10px;
  width: 100%; max-width: 420px;
  max-height: calc(100vh - 48px);    /* never taller than viewport (24px margin top + bottom) */
  display: flex;
  flex-direction: column;            /* head / scrollable body / actions */
  padding: 0;                         /* padding moves to inner sections so header/footer can stick */
  overflow: hidden;                  /* clip rounded corners; scrolling happens inside */
}
.modal-head {
  display: flex; align-items: center; justify-content: space-between;
  padding: 16px 24px 12px;
  border-bottom: 1px solid #f3f4f6;
  flex: 0 0 auto;                    /* don't let header shrink */
}
.modal-head h3 { font-size: 16px; font-weight: 600; }
/* All direct children of .modal that AREN'T the head or actions form the
   scrollable body. The selector below targets them in a way that doesn't
   require restructuring any existing markup. */
.modal > *:not(.modal-head):not(.modal-actions) {
  padding-left: 24px; padding-right: 24px;
}
/* Add top padding on the first body element + bottom on the last, so the
   whole body looks naturally padded but each child still has its own
   margins. The :first-of-type/:last-of-type heuristic catches typical
   children (labels, inputs, divs, paragraphs). */
.modal > label:first-of-type,
.modal > div:not(.modal-head):not(.modal-actions):first-of-type,
.modal > p:first-of-type { padding-top: 12px; }

/* The body is everything between head and actions. We make it overflow-y
   auto via a wrapper-like trick: any non-head, non-actions sibling sits in
   the flex container with flex: 1 1 auto, and we let the WHOLE inner area
   between head and actions scroll. Easier: wrap automatically by adding
   `overflow-y: auto` on the SECOND child onwards collectively via a
   pseudo-container — but pure CSS can't wrap. Instead: rely on actions
   having `flex: 0 0 auto` and head having `flex: 0 0 auto`, while
   everything else gets `flex-shrink: 1` and we put `overflow-y: auto` on
   the modal itself via a containing flex layout: */
.modal-actions {
  display: flex; justify-content: flex-end; gap: 8px;
  padding: 12px 24px 16px;
  border-top: 1px solid #f3f4f6;
  background: #fff;
  flex: 0 0 auto;                    /* don't shrink, always visible */
  margin-top: auto;                  /* push to bottom if content is short */
}
/* Make all middle content scrollable as a group: */
.modal > *:not(.modal-head):not(.modal-actions) {
  flex-shrink: 1;
}
/* When the modal needs scrolling, the body region (everything between head
   and actions) scrolls. We achieve this by giving the modal `display: flex
   + overflow: hidden` and making the inner content area scrollable. Since
   we can't easily wrap existing markup, we instead let the modal as a
   whole handle scroll using a different technique: set `max-height` and
   `overflow-y: auto` on the modal itself, then make the head and actions
   STICKY at top/bottom so they stay visible while body scrolls. */
.modal {
  overflow-y: auto;                  /* enable scroll inside modal */
  -webkit-overflow-scrolling: touch;
}
.modal-head {
  position: sticky; top: 0;
  background: #fff;
  z-index: 2;
}
.modal-actions {
  position: sticky; bottom: 0;
  z-index: 2;
}

.hint { font-size: 12px; color: #6b7280; margin-top: 4px; }

/* On small screens, the modal goes nearly full-screen. */
@media (max-width: 600px) {
  .modal-overlay {
    padding: 8px;
    align-items: stretch;
  }
  .modal {
    max-height: calc(100vh - 16px);
    max-width: 100% !important;       /* override per-modal max-width overrides */
    border-radius: 8px;
  }
  .modal-head { padding: 12px 16px 10px; }
  .modal-actions { padding: 10px 16px 12px; }
  .modal > *:not(.modal-head):not(.modal-actions) {
    padding-left: 16px; padding-right: 16px;
  }
}

/* =========================================================================
   TOASTS
   ========================================================================= */
.toasts {
  position: fixed; bottom: 20px; right: 20px;
  display: flex; flex-direction: column; gap: 8px;
  z-index: 200;
}
.toast {
  padding: 10px 16px; border-radius: 8px;
  background: #1f2937; color: #fff;
  font-size: 13px;
  max-width: 320px;
  box-shadow: 0 4px 12px rgba(0,0,0,0.15);
}
.toast-error   { background: #b54141; }
.toast-success { background: #047857; }

/* =========================================================================
   RESPONSIVE
   ========================================================================= */
@media (max-width: 900px) {
  .hamburger { display: inline-flex; }
  .topnav {
    display: none;
    position: absolute; top: 56px; left: 0; right: 0;
    flex-direction: column; align-items: stretch;
    background: #fff; border-bottom: 1px solid #e5e7eb;
    padding: 8px; gap: 2px;
    box-shadow: 0 8px 16px rgba(0,0,0,0.06);
    max-height: calc(100vh - 56px); overflow-y: auto;
  }
  .topnav.open { display: flex; }
  .topnav-item { width: 100%; }
  .topnav-link { width: 100%; justify-content: flex-start; }
  .topnav-link .chev { margin-left: auto; }
  .topnav-dropdown {
    position: static; box-shadow: none; border: none;
    margin: 0 0 0 32px; padding: 0; min-width: 0; background: transparent;
  }
  .dd-item { padding-left: 8px; }
  .crumbs-bar { padding: 8px 16px; }
  .top-right .branch-select { min-width: 100px; max-width: 140px; font-size: 12px; }
  .top-right .branch-button { padding: 6px 8px; font-size: 12px; max-width: 160px; }
  .top-right .branch-button span { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .metrics { grid-template-columns: repeat(2, 1fr); }
  .main { padding: 16px; }
}
@media (max-width: 500px) {
  .brand span { display: none; }
}

/* ================= POS ================= */
.pos-layout { display: grid; grid-template-columns: 1fr 400px; gap: 16px; align-items: start; }
@media (max-width: 1100px) { .pos-layout { grid-template-columns: 1fr; } }
.pos-search { width: 100%; font-size: 18px; padding: 12px 14px; border: 2px solid var(--primary, #4f46e5); border-radius: 8px; margin-bottom: 12px; }
.pos-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 10px; max-height: calc(100vh - 260px); overflow-y: auto; }
.pos-tile { text-align: left; padding: 10px; border: 1px solid #e5e7eb; border-radius: 8px; background: #fff; cursor: pointer; transition: box-shadow 0.1s, transform 0.05s; }
.pos-tile:hover { box-shadow: 0 2px 8px rgba(0,0,0,0.12); }
.pos-tile:active { transform: scale(0.98); }
.pos-tile-out { opacity: 0.45; cursor: not-allowed; }
.pos-tile-name { font-weight: 600; font-size: 13px; line-height: 1.25; margin-bottom: 4px; min-height: 32px; }
.pos-tile-sku { font-size: 10px; color: #888; }
.pos-tile-price { font-size: 15px; font-weight: 700; color: var(--primary, #4f46e5); margin-top: 4px; }
.pos-tile-stock { font-size: 10px; color: #666; margin-top: 2px; }
.pos-right { display: flex; flex-direction: column; gap: 16px; }
.pos-totals { margin-top: 10px; border-top: 1px solid #eee; padding-top: 8px; }
.pos-totals > div { display: flex; justify-content: space-between; padding: 3px 0; font-size: 14px; }
.pos-grand { font-size: 18px !important; border-top: 2px solid #222; margin-top: 6px; padding-top: 8px !important; }
.pos-change { background: #ecfdf5; border: 1px solid #6ee7b7; color: #065f46; border-radius: 6px; padding: 8px 12px; margin: 8px 0; font-size: 15px; }
.pos-checkout-btn { font-size: 17px; padding: 14px; margin-top: 8px; }
.text-red { color: #b54141; }
