warungpos-ui / src /index.css
Mhamdans17
feat: add max branches and cashiers limit, refine admin UI settings, implement tier-based qris fee
cd3f69c
Raw
History Blame Contribute Delete
7.41 kB
@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 !important; padding: 16px 8px !important; }
.sidebar-full .sidebar-brand-text { display: none; }
.sidebar-full nav button { flex-direction: column !important; justify-content: center !important; padding: 12px 4px !important; gap: 6px !important; text-align: center !important; }
.sidebar-full .sidebar-label { display: block !important; font-size: 10px !important; text-align: center !important; line-height: 1.2 !important; letter-spacing: 0 !important; white-space: normal !important; overflow: visible !important; text-overflow: clip !important; }
.sidebar-full .sidebar-logout span:last-child { display: block !important; font-size: 10px !important; letter-spacing: 0 !important; }
.sidebar-full .sidebar-logout { flex-direction: column !important; justify-content: center !important; padding: 12px 4px !important; gap: 6px !important; }
.admin-main { margin-left: 84px !important; }
.admin-content { padding: 20px 16px !important; }
}
/* --- POS layout: stack on small tablet --- */
@media (max-width: 900px) {
.pos-cart-panel { width: 280px !important; }
}
@media (max-width: 768px) {
/* POS: Full-width tabs mode */
.pos-layout { flex-direction: column !important; height: 100% !important; min-height: 100% !important; overflow: hidden !important; }
.pos-product-panel { flex: 55 !important; height: auto !important; }
.pos-cart-panel {
flex: 45 !important;
height: auto !important;
width: 100% !important;
border-left: none !important;
border-top: 1px solid rgba(8,45,67,0.08) !important;
}
/* Admin content */
.admin-main { margin-left: 0 !important; padding-bottom: 90px !important; }
.sidebar-full {
width: 100% !important;
height: 70px !important;
flex-direction: row !important;
top: auto !important;
bottom: 0 !important;
padding: 8px !important;
border-right: none !important;
border-top: 1px solid rgba(8,45,67,0.1) !important;
box-shadow: 0 -4px 20px rgba(0,0,0,0.05) !important;
z-index: 1000 !important;
height: auto !important;
min-height: 70px !important;
}
.sidebar-full > div {
display: none !important; /* Hide brand and logout */
}
.sidebar-full nav {
flex-direction: row !important;
overflow-x: auto !important;
gap: 8px !important;
width: 100% !important;
align-items: stretch !important;
padding-bottom: 4px !important;
}
.sidebar-full nav button {
padding: 8px 4px !important;
min-width: 70px !important;
flex: 1 !important;
flex-direction: column !important;
justify-content: flex-start !important;
align-items: center !important;
gap: 6px !important;
}
.sidebar-full nav button .sidebar-label {
display: block !important;
font-size: 10px !important;
white-space: normal !important;
overflow: visible !important;
text-overflow: clip !important;
line-height: 1.1 !important;
text-align: center !important;
letter-spacing: 0 !important;
}
.admin-content { padding: 16px 12px !important; }
/* Navbar Header */
.navbar-header { padding: 12px 16px !important; }
.nav-date { display: none !important; }
.navbar-profile-name { font-size: 13px !important; max-width: 120px; overflow: hidden; text-overflow: ellipsis; }
.back-btn {
top: 20px !important;
left: 20px !important;
padding: 8px 12px !important;
font-size: 12px !important;
}
.login-card {
padding: 32px 24px !important;
}
/* Modals full-width on mobile */
.modal-responsive { max-width: 100% !important; margin: 0 !important; border-radius: 20px 20px 0 0 !important; position: fixed !important; bottom: 0 !important; left: 0 !important; right: 0 !important; }
/* Grids */
/* Grids */
.responsive-grid-3 { grid-template-columns: repeat(2, 1fr) !important; }
.responsive-grid-4 { grid-template-columns: repeat(2, 1fr) !important; }
}
/* ============ LANDING PAGE RESPONSIVE ============ */
@media (max-width: 1024px) {
.landing-hero {
gap: 30px !important;
padding: 60px 5% 80px 5% !important;
}
.landing-hero h2 {
font-size: 38px !important;
}
.landing-features-grid {
grid-template-columns: repeat(2, 1fr) !important;
}
}
@media (max-width: 768px) {
.landing-header {
padding: 16px 5% !important;
}
.landing-logo {
height: 28px !important;
}
.landing-nav {
gap: 12px !important;
}
.landing-nav-link {
font-size: 13px !important;
}
.landing-nav-btn {
padding: 8px 14px !important;
font-size: 13px !important;
}
.landing-hero {
grid-template-columns: 1fr !important;
padding: 40px 5% 60px 5% !important;
gap: 40px !important;
text-align: center;
}
.landing-hero h2 {
font-size: 32px !important;
}
.landing-features-grid {
grid-template-columns: 1fr !important;
gap: 20px !important;
}
.landing-features-section {
padding: 60px 5% !important;
}
.landing-features-title {
font-size: 28px !important;
}
.landing-footer {
padding: 30px 5% !important;
}
}
@media (max-width: 380px) {
.landing-header {
flex-direction: column !important;
gap: 12px !important;
padding: 16px !important;
}
}
/* 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);
}