Spaces:
Running
Running
Mhamdans17
feat: add max branches and cashiers limit, refine admin UI settings, implement tier-based qris fee
cd3f69c | @import "tailwindcss"; | |
| @theme { | |
| --font-headline: 'Manrope', sans-serif; | |
| --font-body: 'Inter', system-ui, sans-serif; | |
| } | |
| /* ============ BASE ============ */ | |
| html, body, #root { | |
| margin: 0; | |
| padding: 0; | |
| width: 100%; | |
| font-family: var(--font-body); | |
| background: #f0f5f8; | |
| color: #0a1f2e; | |
| -webkit-font-smoothing: antialiased; | |
| } | |
| body { | |
| overflow-x: hidden; | |
| } | |
| h1, h2, h3, .font-headline { font-family: var(--font-headline); } | |
| .material-symbols-outlined { | |
| font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 24; | |
| display: inline-block; | |
| line-height: 1; | |
| } | |
| /* ============ SCROLLBAR ============ */ | |
| ::-webkit-scrollbar { width: 6px; } | |
| ::-webkit-scrollbar-track { background: transparent; } | |
| ::-webkit-scrollbar-thumb { background: #8faab8; border-radius: 3px; } | |
| /* ============ HELPERS ============ */ | |
| .bg-ember { background: linear-gradient(135deg, #082D43, #0e4a6f); } | |
| @keyframes fadeIn { | |
| from { opacity: 0; transform: translateY(8px); } | |
| to { opacity: 1; transform: translateY(0); } | |
| } | |
| .animate-fade-in { animation: fadeIn 0.3s ease-out; } | |
| .skeleton { | |
| background: linear-gradient(90deg, #e4eef3 25%, #d4e2ea 50%, #e4eef3 75%); | |
| background-size: 200% 100%; | |
| animation: shimmer 1.5s infinite; | |
| border-radius: 16px; | |
| } | |
| @keyframes shimmer { | |
| 0% { background-position: 200% 0; } | |
| 100% { background-position: -200% 0; } | |
| } | |
| @keyframes spin { | |
| to { transform: rotate(360deg); } | |
| } | |
| .sidebar-label { | |
| flex: 1; | |
| text-align: left; | |
| white-space: nowrap; | |
| overflow: hidden; | |
| text-overflow: ellipsis; | |
| } | |
| /* ============ TABLET RESPONSIVE (≤1024px) ============ */ | |
| /* --- Sidebar collapse to icon-only on tablet --- */ | |
| @media (max-width: 1024px) { | |
| .sidebar-full { width: 84px ; padding: 16px 8px ; } | |
| .sidebar-full .sidebar-brand-text { display: none; } | |
| .sidebar-full nav button { flex-direction: column ; justify-content: center ; padding: 12px 4px ; gap: 6px ; text-align: center ; } | |
| .sidebar-full .sidebar-label { display: block ; font-size: 10px ; text-align: center ; line-height: 1.2 ; letter-spacing: 0 ; white-space: normal ; overflow: visible ; text-overflow: clip ; } | |
| .sidebar-full .sidebar-logout span:last-child { display: block ; font-size: 10px ; letter-spacing: 0 ; } | |
| .sidebar-full .sidebar-logout { flex-direction: column ; justify-content: center ; padding: 12px 4px ; gap: 6px ; } | |
| .admin-main { margin-left: 84px ; } | |
| .admin-content { padding: 20px 16px ; } | |
| } | |
| /* --- POS layout: stack on small tablet --- */ | |
| @media (max-width: 900px) { | |
| .pos-cart-panel { width: 280px ; } | |
| } | |
| @media (max-width: 768px) { | |
| /* POS: Full-width tabs mode */ | |
| .pos-layout { flex-direction: column ; height: 100% ; min-height: 100% ; overflow: hidden ; } | |
| .pos-product-panel { flex: 55 ; height: auto ; } | |
| .pos-cart-panel { | |
| flex: 45 ; | |
| height: auto ; | |
| width: 100% ; | |
| border-left: none ; | |
| border-top: 1px solid rgba(8,45,67,0.08) ; | |
| } | |
| /* Admin content */ | |
| .admin-main { margin-left: 0 ; padding-bottom: 90px ; } | |
| .sidebar-full { | |
| width: 100% ; | |
| height: 70px ; | |
| flex-direction: row ; | |
| top: auto ; | |
| bottom: 0 ; | |
| padding: 8px ; | |
| border-right: none ; | |
| border-top: 1px solid rgba(8,45,67,0.1) ; | |
| box-shadow: 0 -4px 20px rgba(0,0,0,0.05) ; | |
| z-index: 1000 ; | |
| height: auto ; | |
| min-height: 70px ; | |
| } | |
| .sidebar-full > div { | |
| display: none ; /* Hide brand and logout */ | |
| } | |
| .sidebar-full nav { | |
| flex-direction: row ; | |
| overflow-x: auto ; | |
| gap: 8px ; | |
| width: 100% ; | |
| align-items: stretch ; | |
| padding-bottom: 4px ; | |
| } | |
| .sidebar-full nav button { | |
| padding: 8px 4px ; | |
| min-width: 70px ; | |
| flex: 1 ; | |
| flex-direction: column ; | |
| justify-content: flex-start ; | |
| align-items: center ; | |
| gap: 6px ; | |
| } | |
| .sidebar-full nav button .sidebar-label { | |
| display: block ; | |
| font-size: 10px ; | |
| white-space: normal ; | |
| overflow: visible ; | |
| text-overflow: clip ; | |
| line-height: 1.1 ; | |
| text-align: center ; | |
| letter-spacing: 0 ; | |
| } | |
| .admin-content { padding: 16px 12px ; } | |
| /* Navbar Header */ | |
| .navbar-header { padding: 12px 16px ; } | |
| .nav-date { display: none ; } | |
| .navbar-profile-name { font-size: 13px ; max-width: 120px; overflow: hidden; text-overflow: ellipsis; } | |
| .back-btn { | |
| top: 20px ; | |
| left: 20px ; | |
| padding: 8px 12px ; | |
| font-size: 12px ; | |
| } | |
| .login-card { | |
| padding: 32px 24px ; | |
| } | |
| /* Modals full-width on mobile */ | |
| .modal-responsive { max-width: 100% ; margin: 0 ; border-radius: 20px 20px 0 0 ; position: fixed ; bottom: 0 ; left: 0 ; right: 0 ; } | |
| /* Grids */ | |
| /* Grids */ | |
| .responsive-grid-3 { grid-template-columns: repeat(2, 1fr) ; } | |
| .responsive-grid-4 { grid-template-columns: repeat(2, 1fr) ; } | |
| } | |
| /* ============ LANDING PAGE RESPONSIVE ============ */ | |
| @media (max-width: 1024px) { | |
| .landing-hero { | |
| gap: 30px ; | |
| padding: 60px 5% 80px 5% ; | |
| } | |
| .landing-hero h2 { | |
| font-size: 38px ; | |
| } | |
| .landing-features-grid { | |
| grid-template-columns: repeat(2, 1fr) ; | |
| } | |
| } | |
| @media (max-width: 768px) { | |
| .landing-header { | |
| padding: 16px 5% ; | |
| } | |
| .landing-logo { | |
| height: 28px ; | |
| } | |
| .landing-nav { | |
| gap: 12px ; | |
| } | |
| .landing-nav-link { | |
| font-size: 13px ; | |
| } | |
| .landing-nav-btn { | |
| padding: 8px 14px ; | |
| font-size: 13px ; | |
| } | |
| .landing-hero { | |
| grid-template-columns: 1fr ; | |
| padding: 40px 5% 60px 5% ; | |
| gap: 40px ; | |
| text-align: center; | |
| } | |
| .landing-hero h2 { | |
| font-size: 32px ; | |
| } | |
| .landing-features-grid { | |
| grid-template-columns: 1fr ; | |
| gap: 20px ; | |
| } | |
| .landing-features-section { | |
| padding: 60px 5% ; | |
| } | |
| .landing-features-title { | |
| font-size: 28px ; | |
| } | |
| .landing-footer { | |
| padding: 30px 5% ; | |
| } | |
| } | |
| @media (max-width: 380px) { | |
| .landing-header { | |
| flex-direction: column ; | |
| gap: 12px ; | |
| padding: 16px ; | |
| } | |
| } | |
| /* Sticky Table Columns */ | |
| .table-row-hover { | |
| background-color: #ffffff; | |
| transition: background-color 0.15s; | |
| } | |
| .table-row-hover:hover { | |
| background-color: #ffedeb; | |
| } | |
| .sticky-col { | |
| position: -webkit-sticky; | |
| position: sticky; | |
| left: 0; | |
| z-index: 5; | |
| background-color: inherit; | |
| border-right: 1px solid rgba(78,33,32,0.06); | |
| } | |
| .sticky-header { | |
| position: -webkit-sticky; | |
| position: sticky; | |
| left: 0; | |
| z-index: 10; | |
| background-color: #ffffff; | |
| border-right: 1px solid rgba(78,33,32,0.06); | |
| } | |