:root {
  --ph-primary: #0f766e;
  --ph-primary-dark: #0b5a54;
  --ph-sidebar: #e8f1f0;
  --ph-sidebar-hover: #d8e8e6;
  --bs-primary: #0f766e;
  --bs-primary-rgb: 15, 118, 110;
  --bs-link-color: #0f766e;
  --bs-link-hover-color: #0b5a54;
}
body { background: #f3f6f7; font-size: .93rem; }
.btn-primary { --bs-btn-bg: var(--ph-primary); --bs-btn-border-color: var(--ph-primary); --bs-btn-hover-bg: var(--ph-primary-dark); --bs-btn-hover-border-color: var(--ph-primary-dark); --bs-btn-active-bg: var(--ph-primary-dark); --bs-btn-disabled-bg: var(--ph-primary); --bs-btn-disabled-border-color: var(--ph-primary); }
.btn-outline-primary { --bs-btn-color: var(--ph-primary); --bs-btn-border-color: var(--ph-primary); --bs-btn-hover-bg: var(--ph-primary); --bs-btn-hover-border-color: var(--ph-primary); --bs-btn-active-bg: var(--ph-primary); }
.text-bg-primary { background-color: var(--ph-primary) !important; }
.app-shell { min-height: 100vh; }
.app-sidebar { width: 250px; flex: 0 0 250px; background: var(--ph-sidebar); color: #294744; }
@media (min-width: 992px) { .app-sidebar { position: sticky; top: 0; height: 100vh; overflow-y: auto; } }
.app-sidebar .offcanvas-body { overflow-y: auto; }
.sidebar-brand { color: #183b38; padding: 1.1rem 1rem; border-bottom: 1px solid rgba(24,59,56,.12); }
.sidebar-brand:hover { color: #0b5a54; }
.sidebar-heading { text-transform: uppercase; font-size: .68rem; letter-spacing: .08em; color: #526b68; padding: 1rem 1rem .3rem; }
.sidebar-link { display: flex; align-items: center; gap: .6rem; padding: .5rem 1rem; color: #294744; text-decoration: none; border-left: 3px solid transparent; }
.sidebar-link:hover { background: var(--ph-sidebar-hover); color: #183b38; }
.sidebar-link.active { background: var(--ph-sidebar-hover); color: #0b5a54; border-left-color: var(--ph-primary); }
.app-content { min-width: 0; }
.app-topbar { background: #fff; border-bottom: 1px solid #e3e9ea; padding: .6rem 1rem; position: sticky; top: 0; z-index: 100; }
.card { border: 1px solid #e3e9ea; box-shadow: 0 1px 2px rgba(16,24,40,.04); }
.stat-card .stat-icon { width: 46px; height: 46px; border-radius: 12px; display: flex; align-items: center; justify-content: center; font-size: 1.4rem; }
.stat-card .stat-value { font-size: 1.45rem; font-weight: 700; line-height: 1.1; }
.table > :not(caption) > * > * { padding: .55rem .7rem; }
.table-light { --bs-table-bg: #f6f9fa; }
.form-label { font-weight: 500; margin-bottom: .25rem; }

/* ---------- Login ---------- */
.login-wrap { min-height: 100vh; display: flex; align-items: center; justify-content: center; background: linear-gradient(135deg, #edf5f4 0%, #d8eae8 100%); padding: 1rem; }
.login-card { width: 100%; max-width: 400px; color: #212529; border: 1px solid #dce8e7; border-radius: 16px; box-shadow: 0 12px 32px rgba(16,24,40,.12); }

/* ---------- POS ---------- */
.pos-results { max-height: 62vh; overflow-y: auto; }
.pos-item { cursor: pointer; border: 1px solid #e3e9ea; border-radius: 10px; padding: .6rem .75rem; background: #fff; transition: .12s; }
.pos-item:hover { border-color: var(--ph-primary); box-shadow: 0 0 0 2px rgba(15,118,110,.15); }
.pos-item.out { opacity: .5; cursor: not-allowed; }
.pos-cart { position: sticky; top: 70px; }
.pos-cart .table td { vertical-align: middle; }
.pos-total { font-size: 1.6rem; font-weight: 700; }
.qty-input { width: 72px; }

/* ---------- Receipt ---------- */
.receipt { width: 320px; margin: 0 auto; background: #fff; padding: 14px 16px; font-family: 'Courier New', monospace; font-size: 12.5px; color: #000; }
.receipt h5 { font-size: 15px; margin: 0; text-align: center; }
.receipt .center { text-align: center; }
.receipt hr { border-top: 1px dashed #000; opacity: 1; margin: 6px 0; }
.receipt table { width: 100%; }
.receipt td { padding: 1px 0; vertical-align: top; }
.receipt .r { text-align: right; }

.table-xs td, .table-xs th { padding: .25rem .5rem; }
.cursor-pointer { cursor: pointer; }
