:root { --primary: #0f172a; --primary-light: #1e293b; --accent: #3b82f6; --bg: #f8fafc; --surface: #ffffff; --text: #334155; --text-muted: #64748b; --border: #e2e8f0; --radius: 4px; --sidebar-width: 250px; } body.theme-dark { --primary: #1e293b; --primary-light: #334155; --accent: #60a5fa; --bg: #0f172a; --surface: #1e293b; --text: #f1f5f9; --text-muted: #94a3b8; --border: #334155; } body.theme-ocean { --primary: #083344; --primary-light: #164e63; --accent: #06b6d4; --bg: #ecfeff; --surface: #ffffff; --text: #164e63; --text-muted: #67e8f9; --border: #cffafe; } body.theme-forest { --primary: #064e3b; --primary-light: #065f46; --accent: #10b981; --bg: #f0fdf4; --surface: #ffffff; --text: #064e3b; --text-muted: #34d399; --border: #dcfce7; } body.theme-sunset { --primary: #451a03; --primary-light: #78350f; --accent: #f59e0b; --bg: #fffbeb; --surface: #ffffff; --text: #451a03; --text-muted: #fbbf24; --border: #fef3c7; } body { font-family: 'Inter', -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif; background-color: var(--bg); color: var(--text); margin: 0; overflow-x: hidden; } [dir="rtl"] { font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; } /* Sidebar */ .sidebar { width: var(--sidebar-width); height: 100vh; background-color: var(--primary); color: white; position: fixed; top: 0; transition: all 0.3s; z-index: 1000; } [dir="ltr"] .sidebar { left: 0; } [dir="rtl"] .sidebar { right: 0; } .sidebar-header { padding: 1.5rem; font-size: 1.25rem; font-weight: 700; border-bottom: 1px solid var(--primary-light); } .nav-link { color: #cbd5e1; padding: 0.75rem 1.5rem; display: flex; align-items: center; text-decoration: none; transition: background 0.2s; } .nav-link:hover, .nav-link.active { background-color: var(--primary-light); color: white; } .nav-link i { width: 20px; margin-right: 10px; } .nav-section-title { font-size: 0.85rem; font-weight: 600; color: #64748b !important; letter-spacing: 0.05em; cursor: pointer; display: flex; justify-content: space-between; align-items: center; } .nav-section-title:hover { color: #94a3b8 !important; } .nav-section-title i.chevron { transition: transform 0.2s; font-size: 0.6rem; } .nav-section-title.collapsed i.chevron { transform: rotate(-90deg); } .nav-section-title .group-icon { width: 18px; margin-right: 10px; } [dir="rtl"] .nav-section-title .group-icon { margin-right: 0; margin-left: 10px; } /* POS Styles */ .pos-container { display: flex; height: calc(100vh - 120px); gap: 20px; } .pos-products { flex: 1; overflow-y: auto; padding-right: 10px; } .pos-cart { width: 400px; background: #fff; border-radius: 12px; box-shadow: 0 4px 15px rgba(0,0,0,0.05); display: flex; flex-direction: column; height: 100%; } .product-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); gap: 15px; } .product-card { background: #fff; border-radius: 10px; border: 1px solid #edf2f7; padding: 15px; text-align: center; cursor: pointer; transition: all 0.2s; display: flex; flex-direction: column; justify-content: space-between; } .product-card:hover { transform: translateY(-5px); box-shadow: 0 10px 20px rgba(0,0,0,0.05); border-color: #3b82f6; } .product-card img { width: 100%; height: 120px; object-fit: contain; margin-bottom: 10px; border-radius: 8px; } .product-card .price { font-weight: 700; color: #2d3748; } .cart-items { flex: 1; overflow-y: auto; padding: 20px; } .cart-item { display: flex; justify-content: space-between; align-items: center; margin-bottom: 15px; padding-bottom: 15px; border-bottom: 1px solid #edf2f7; } .cart-total { padding: 20px; background: #f8fafc; border-bottom-left-radius: 12px; border-bottom-right-radius: 12px; } .qty-controls { display: flex; align-items: center; gap: 10px; } .qty-btn { width: 24px; height: 24px; border-radius: 50%; border: 1px solid #e2e8f0; background: #fff; display: flex; align-items: center; justify-content: center; cursor: pointer; font-size: 14px; } .qty-btn:hover { background: #edf2f7; } [dir="rtl"] .nav-link i { margin-right: 0; margin-left: 10px; } /* Main Content */ .main-content { margin-left: var(--sidebar-width); padding: 2rem; transition: all 0.3s; min-height: 100vh; } [dir="rtl"] .main-content { margin-left: 0; margin-right: var(--sidebar-width); } @media (max-width: 991.98px) { .sidebar { left: calc(-1 * var(--sidebar-width)); } .sidebar.show { left: 0; } [dir="rtl"] .sidebar { right: calc(-1 * var(--sidebar-width)); left: auto; } [dir="rtl"] .sidebar.show { right: 0; } .main-content { margin-left: 0 !important; margin-right: 0 !important; width: 100%; } } .sidebar-overlay { display: none; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0,0,0,0.5); z-index: 999; } .sidebar-overlay.show { display: block; } .topbar { background: var(--surface); border-bottom: 1px solid var(--border); padding: 1rem 2rem; margin: -2rem -2rem 2rem -2rem; display: flex; justify-content: space-between; align-items: center; } /* UI Components */ .card { background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius); box-shadow: 0 1px 2px rgba(0,0,0,0.05); } .btn-primary { background-color: var(--accent); border: none; border-radius: var(--radius); } .table { color: var(--text); } .table th { font-weight: 600; color: var(--text-muted); text-transform: uppercase; font-size: 0.75rem; letter-spacing: 0.05em; border-bottom: 2px solid var(--border); } .op-50 { opacity: 0.5; } /* RTL Adjustments */ [dir="rtl"] .ms-auto { margin-right: auto !important; margin-left: 0 !important; } [dir="rtl"] .text-end { text-align: left !important; } [dir="rtl"] .text-start { text-align: right !important; } [dir="rtl"] .me-3 { margin-right: 0 !important; margin-left: 1rem !important; } [dir="rtl"] .me-2 { margin-right: 0 !important; margin-left: 0.5rem !important; } [dir="rtl"] .ms-2 { margin-left: 0 !important; margin-right: 0.5rem !important; } /* Thermal Receipt Styles */ .thermal-receipt { width: 80mm; margin: 0 auto; padding: 10px; font-family: 'Courier New', Courier, monospace; font-size: 12px; line-height: 1.2; background: #fff; color: #000; } .thermal-receipt .center { text-align: center; } .thermal-receipt .separator { border-top: 1px dashed #000; margin: 10px 0; } .thermal-receipt table { width: 100%; } .thermal-receipt table th { text-align: left; border-bottom: 1px dashed #000; font-size: 10px; } .thermal-receipt table td { padding: 5px 0; font-size: 10px; } .thermal-receipt .total-row { font-weight: bold; font-size: 14px; } @media print { .thermal-receipt-print { width: 80mm !important; margin: 0 !important; padding: 5mm !important; } body.printing-receipt * { visibility: hidden; } body.printing-receipt .thermal-receipt-print, body.printing-receipt .thermal-receipt-print * { visibility: visible !important; } body.printing-receipt #posPrintArea { visibility: visible !important; display: block !important; } body.printing-receipt .thermal-receipt-print { position: absolute; left: 0; top: 0; display: block !important; } } /* Payment Modal Styles */ .payment-methods-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; margin-bottom: 20px; } .payment-method-btn { border: 2px solid #e2e8f0; background: #fff; padding: 15px 10px; border-radius: 10px; text-align: center; cursor: pointer; transition: all 0.2s; } .payment-method-btn.active { border-color: #3b82f6; background: #eff6ff; color: #3b82f6; } .payment-method-btn i { font-size: 1.5rem; display: block; margin-bottom: 5px; } .quick-pay-grid { display: grid; grid-template-columns: repeat(5, 1fr); gap: 5px; margin-top: 10px; } .quick-pay-btn { padding: 10px; border: 1px solid #e2e8f0; background: #f8fafc; border-radius: 6px; text-align: center; cursor: pointer; font-weight: 600; } .quick-pay-btn:hover { background: #edf2f7; } .amount-due-box { background: #f1f5f9; padding: 15px; border-radius: 10px; text-align: center; margin-bottom: 20px; } .amount-due-box .label { font-size: 0.75rem; color: #64748b; text-transform: uppercase; font-weight: 600; } .amount-due-box .value { font-size: 2.5rem; font-weight: 800; color: #0f172a; } .payment-line { background: #f8f9fa; border-radius: 8px; padding: 10px; margin-bottom: 10px; display: flex; justify-content: space-between; align-items: center; border: 1px solid #e9ecef; } .payment-line .method { font-weight: 600; text-transform: capitalize; } .payment-line .amount { font-weight: 700; } .payment-summary { border-top: 2px dashed #dee2e6; margin-top: 15px; padding-top: 15px; }