:root { --gm-accent: #f59f00; }
body { background: #f4f6f9; }
.app-topbar { min-height: 56px; }
.app-sidebar { background: #fff; }
.app-main { min-width: 0; }
@media (min-width: 992px) {
  .app-sidebar { width: 235px; flex: 0 0 235px; position: sticky; top: 56px; align-self: flex-start; min-height: calc(100vh - 56px); }
}
.app-sidebar .nav-link { color: #343a40; border-radius: .5rem; }
.app-sidebar .nav-link:hover { background: #f1f3f5; }
.app-sidebar .nav-link.active { background: #212529; color: #fff; }
.card { border: 0; box-shadow: 0 1px 3px rgba(0,0,0,.08); }
.stat-card .stat-value { font-size: 1.6rem; font-weight: 700; line-height: 1.1; }
.stat-card .stat-icon { font-size: 2rem; opacity: .25; }
.table > :not(caption) > * > * { vertical-align: middle; }
.page-title { font-size: 1.4rem; font-weight: 600; }

/* ---------- Caisse (POS) ---------- */
.pos-grid { max-height: 62vh; overflow-y: auto; padding: 2px; }
.pos-item { text-align: left; border: 1px solid #dee2e6; background: #fff; border-radius: .6rem; padding: .55rem .65rem; width: 100%; height: 100%; transition: .1s; }
.pos-item:hover:not(:disabled) { border-color: var(--gm-accent); box-shadow: 0 0 0 2px rgba(245,159,0,.25); }
.pos-item:disabled { opacity: .5; }
.pos-item .pn { font-weight: 600; font-size: .9rem; line-height: 1.15; }
.pos-item .pp { color: #0a7a3d; font-weight: 700; }
.cart-line { border-bottom: 1px dashed #dee2e6; padding: .5rem 0; }
.cart-line input { max-width: 100px; }
@media (min-width: 992px) { .pos-cart { position: sticky; top: 72px; } }
.pos-floatbar { position: fixed; left: 0; right: 0; bottom: 0; z-index: 1030; }
@media (max-width: 991.98px) { .app-main { padding-bottom: 5rem !important; } }

.login-wrap { min-height: 100vh; display: flex; align-items: center; justify-content: center; background: linear-gradient(135deg,#212529,#495057); padding: 1rem; }
.login-card { width: 100%; max-width: 400px; }
