/* ===================================================== Hot Mobile - Mobile-First Responsive System v1.0 ===================================================== Breakpoints: - xs: < 360px (small phones) - sm: 360-480px (standard phones) - md: 481-768px (large phones, small tablets) - lg: 769-1024px (tablets, small laptops) - xl: > 1024px (desktops) Touch Targets: minimum 44px height ===================================================== */ /* ===================================================== 1. BREAKPOINT VARIABLES & UTILITIES ===================================================== */ :root { /* Mobile-First Breakpoints */ --bp-xs: 360px; --bp-sm: 480px; --bp-md: 768px; --bp-lg: 1024px; --bp-xl: 1280px; /* Mobile Touch Targets */ --touch-min: 44px; --touch-comfortable: 48px; /* Mobile Spacing */ --mobile-gutter: 16px; --mobile-gutter-xs: 12px; /* Mobile Safe Areas (for notch devices) */ --safe-top: env(safe-area-inset-top, 0px); --safe-bottom: env(safe-area-inset-bottom, 0px); --safe-left: env(safe-area-inset-left, 0px); --safe-right: env(safe-area-inset-right, 0px); /* Bottom Sheet */ --bottom-sheet-radius: 24px; --bottom-sheet-handle-width: 40px; --bottom-sheet-handle-height: 4px; } /* ===================================================== 2. BASE MOBILE FIXES ===================================================== */ /* Prevent horizontal scroll on mobile */ html, body { overflow-x: hidden; -webkit-overflow-scrolling: touch; } /* Better tap highlighting */ * { -webkit-tap-highlight-color: rgba(225, 29, 72, 0.1); } /* Disable zoom on form focus (iOS) */ input, select, textarea { font-size: 16px !important; } /* Smooth scrolling with momentum */ .scroll-container { -webkit-overflow-scrolling: touch; scroll-behavior: smooth; } /* Hide scrollbars on mobile but keep scroll */ .hide-scrollbar { -ms-overflow-style: none; scrollbar-width: none; } .hide-scrollbar::-webkit-scrollbar { display: none; } /* ===================================================== 3. TOUCH-FRIENDLY COMPONENTS ===================================================== */ /* Touch-friendly buttons */ .touch-btn, button, .btn, [role="button"] { min-height: var(--touch-min); min-width: var(--touch-min); } /* Touch-friendly links */ a.touch-link { display: inline-flex; align-items: center; min-height: var(--touch-min); padding: 8px 0; } /* Touch-friendly form inputs */ .touch-input, input[type="text"], input[type="email"], input[type="tel"], input[type="number"], input[type="password"], input[type="search"], select, textarea { min-height: var(--touch-min); padding: 12px 16px; } /* ===================================================== 4. BOTTOM SHEET DRAWER (Mobile Modals) ===================================================== */ .bottom-sheet-overlay { position: fixed; inset: 0; background: rgba(0, 0, 0, 0.6); backdrop-filter: blur(4px); z-index: 999; opacity: 0; visibility: hidden; transition: all 0.3s ease; } .bottom-sheet-overlay.open { opacity: 1; visibility: visible; } .bottom-sheet { position: fixed; left: 0; right: 0; bottom: 0; background: var(--color-surface, #1a1a2e); border-radius: var(--bottom-sheet-radius) var(--bottom-sheet-radius) 0 0; max-height: 90vh; transform: translateY(100%); transition: transform 0.3s cubic-bezier(0.32, 0.72, 0, 1); z-index: 1000; display: flex; flex-direction: column; padding-bottom: var(--safe-bottom); } .bottom-sheet-overlay.open .bottom-sheet { transform: translateY(0); } .bottom-sheet-handle { width: var(--bottom-sheet-handle-width); height: var(--bottom-sheet-handle-height); background: rgba(255, 255, 255, 0.3); border-radius: var(--bottom-sheet-handle-height); margin: 12px auto; flex-shrink: 0; } .bottom-sheet-header { padding: 16px 20px; border-bottom: 1px solid rgba(255, 255, 255, 0.1); display: flex; align-items: center; justify-content: space-between; } .bottom-sheet-title { font-size: 1.125rem; font-weight: 600; } .bottom-sheet-close { width: 36px; height: 36px; border-radius: 50%; background: rgba(255, 255, 255, 0.1); border: none; color: inherit; display: flex; align-items: center; justify-content: center; cursor: pointer; } .bottom-sheet-content { flex: 1; overflow-y: auto; padding: 20px; -webkit-overflow-scrolling: touch; } .bottom-sheet-footer { padding: 16px 20px; border-top: 1px solid rgba(255, 255, 255, 0.1); } /* ===================================================== 5. MOBILE GRID SYSTEM ===================================================== */ /* Product Grid - Mobile First */ .mobile-grid { display: grid; gap: 12px; padding: var(--mobile-gutter); } /* 1 column on very small screens */ @media (max-width: 359px) { .mobile-grid { grid-template-columns: 1fr; gap: 12px; padding: var(--mobile-gutter-xs); } } /* 2 columns on small screens */ @media (min-width: 360px) and (max-width: 767px) { .mobile-grid { grid-template-columns: repeat(2, 1fr); gap: 12px; } } /* 3 columns on tablets */ @media (min-width: 768px) and (max-width: 1023px) { .mobile-grid { grid-template-columns: repeat(3, 1fr); gap: 16px; } } /* 4+ columns on desktop */ @media (min-width: 1024px) { .mobile-grid { grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 20px; padding: 20px; } } /* ===================================================== 6. MOBILE NAVIGATION (Hamburger Menu) ===================================================== */ /* Hamburger Button */ .hamburger-btn { display: none; width: var(--touch-comfortable); height: var(--touch-comfortable); background: transparent; border: none; cursor: pointer; position: relative; z-index: 101; } .hamburger-lines { display: flex; flex-direction: column; justify-content: center; align-items: center; gap: 5px; width: 24px; height: 24px; margin: auto; } .hamburger-line { width: 100%; height: 2px; background: currentColor; border-radius: 2px; transition: all 0.3s ease; } /* Hamburger animation when open */ .hamburger-btn.active .hamburger-line:nth-child(1) { transform: rotate(45deg) translate(5px, 5px); } .hamburger-btn.active .hamburger-line:nth-child(2) { opacity: 0; } .hamburger-btn.active .hamburger-line:nth-child(3) { transform: rotate(-45deg) translate(5px, -5px); } /* Mobile Drawer */ .mobile-drawer { position: fixed; top: 0; right: 0; /* RTL - for LTR use left: 0 */ width: 85%; max-width: 320px; height: 100vh; background: var(--color-surface, #1a1a2e); transform: translateX(100%); /* RTL - for LTR use translateX(-100%) */ transition: transform 0.3s cubic-bezier(0.32, 0.72, 0, 1); z-index: 1100; /* Above header (1000) and categories (999) */ overflow-y: auto; -webkit-overflow-scrolling: touch; box-shadow: -5px 0 30px rgba(0, 0, 0, 0.3); } [dir="ltr"] .mobile-drawer { right: auto; left: 0; transform: translateX(-100%); box-shadow: 5px 0 30px rgba(0, 0, 0, 0.3); } .mobile-drawer.open { transform: translateX(0); } .mobile-drawer-overlay { position: fixed; inset: 0; background: rgba(0, 0, 0, 0.5); z-index: 1050; /* Above header (1000) but below drawer (1100) */ opacity: 0; visibility: hidden; transition: all 0.3s; } .mobile-drawer-overlay.open { opacity: 1; visibility: visible; } /* Show hamburger on mobile */ @media (max-width: 1024px) { .hamburger-btn { display: flex; } } /* ===================================================== 7. MOBILE FORMS (Single Column) ===================================================== */ /* Form container */ .mobile-form { display: flex; flex-direction: column; gap: 16px; } /* Form row - single column on mobile */ .form-row { display: grid; gap: 16px; } @media (max-width: 767px) { .form-row { grid-template-columns: 1fr !important; } .form-row > * { width: 100% !important; } } @media (min-width: 768px) { .form-row { grid-template-columns: repeat(2, 1fr); } } /* Form group */ .form-group { display: flex; flex-direction: column; gap: 8px; } .form-label { font-size: 0.875rem; font-weight: 500; color: var(--color-text-muted, #94a3b8); } .form-input { width: 100%; min-height: var(--touch-min); padding: 12px 16px; background: var(--color-surface, #1a1a2e); border: 1px solid rgba(255, 255, 255, 0.1); border-radius: 12px; color: inherit; font-size: 1rem; transition: all 0.2s; } .form-input:focus { outline: none; border-color: var(--color-primary, #e11d48); box-shadow: 0 0 0 3px rgba(225, 29, 72, 0.1); } /* ===================================================== 8. CHECKOUT STEPPER UI ===================================================== */ .checkout-stepper { display: flex; justify-content: space-between; align-items: center; padding: 16px; background: var(--color-surface, #1a1a2e); border-radius: 16px; margin-bottom: 20px; } .stepper-step { display: flex; flex-direction: column; align-items: center; gap: 8px; flex: 1; position: relative; } .stepper-step:not(:last-child)::after { content: ''; position: absolute; top: 20px; left: -50%; width: 100%; height: 2px; background: rgba(255, 255, 255, 0.1); z-index: 0; } [dir="ltr"] .stepper-step:not(:last-child)::after { left: 50%; } .stepper-step.completed::after, .stepper-step.active::after { background: var(--color-primary, #e11d48); } .stepper-number { width: 40px; height: 40px; border-radius: 50%; background: rgba(255, 255, 255, 0.1); display: flex; align-items: center; justify-content: center; font-weight: 600; z-index: 1; transition: all 0.3s; } .stepper-step.active .stepper-number { background: var(--color-primary, #e11d48); box-shadow: 0 0 20px rgba(225, 29, 72, 0.4); } .stepper-step.completed .stepper-number { background: var(--color-success, #22c55e); } .stepper-label { font-size: 0.75rem; color: var(--color-text-muted, #94a3b8); text-align: center; } .stepper-step.active .stepper-label { color: var(--color-text, #fff); font-weight: 500; } /* Hide labels on very small screens */ @media (max-width: 359px) { .stepper-label { display: none; } .stepper-number { width: 32px; height: 32px; font-size: 0.875rem; } } /* ===================================================== 9. STICKY CTA BUTTON (Bottom Fixed) ===================================================== */ .sticky-cta-container { position: fixed; left: 0; right: 0; bottom: 0; background: linear-gradient(to top, var(--color-bg, #0a0a0f) 70%, transparent); padding: 20px var(--mobile-gutter); padding-bottom: calc(var(--mobile-gutter) + var(--safe-bottom)); z-index: 90; } .sticky-cta-btn { width: 100%; min-height: 56px; padding: 16px 24px; background: linear-gradient(135deg, var(--color-primary, #e11d48), var(--color-accent, #f43f5e)); border: none; border-radius: 16px; color: white; font-size: 1.125rem; font-weight: 700; cursor: pointer; display: flex; align-items: center; justify-content: center; gap: 12px; box-shadow: 0 8px 30px rgba(225, 29, 72, 0.4); transition: all 0.3s; } .sticky-cta-btn:hover { transform: translateY(-2px); box-shadow: 0 12px 40px rgba(225, 29, 72, 0.5); } .sticky-cta-btn:active { transform: translateY(0); } /* Add bottom padding to content when sticky CTA is visible */ .has-sticky-cta { padding-bottom: 100px !important; } /* ===================================================== 10. MOBILE TABLES TO CARDS ===================================================== */ /* Desktop table visible, mobile cards hidden */ .desktop-table { display: table; } .mobile-cards { display: none; } @media (max-width: 767px) { .desktop-table { display: none !important; } .mobile-cards { display: flex; flex-direction: column; gap: 12px; } } /* Mobile Card Style */ .mobile-card { background: var(--color-surface, #1a1a2e); border-radius: 16px; padding: 16px; border: 1px solid rgba(255, 255, 255, 0.1); } .mobile-card-header { display: flex; justify-content: space-between; align-items: flex-start; margin-bottom: 12px; padding-bottom: 12px; border-bottom: 1px solid rgba(255, 255, 255, 0.05); } .mobile-card-title { font-weight: 600; font-size: 1rem; } .mobile-card-status { padding: 4px 10px; border-radius: 20px; font-size: 0.75rem; font-weight: 500; } .mobile-card-row { display: flex; justify-content: space-between; align-items: center; padding: 8px 0; } .mobile-card-label { color: var(--color-text-muted, #94a3b8); font-size: 0.875rem; } .mobile-card-value { font-weight: 500; } .mobile-card-actions { display: flex; gap: 8px; margin-top: 12px; padding-top: 12px; border-top: 1px solid rgba(255, 255, 255, 0.05); } .mobile-card-actions button { flex: 1; min-height: var(--touch-min); } /* ===================================================== 11. MOBILE DRAG CONTROLS (Replace Drag & Drop) ===================================================== */ .mobile-reorder-controls { display: none; flex-direction: column; gap: 4px; } @media (max-width: 767px) { .mobile-reorder-controls { display: flex; } .desktop-drag-handle { display: none !important; } } .reorder-btn { width: 36px; height: 28px; background: rgba(255, 255, 255, 0.1); border: none; border-radius: 6px; color: inherit; display: flex; align-items: center; justify-content: center; cursor: pointer; transition: all 0.2s; } .reorder-btn:hover { background: rgba(255, 255, 255, 0.2); } .reorder-btn:disabled { opacity: 0.3; cursor: not-allowed; } /* ===================================================== 12. ACCESSORIES PAGE SPECIFIC STYLES - PROFESSIONAL MOBILE ===================================================== */ /* ========== MOBILE HEADER ========== */ @media (max-width: 767px) { /* Promo Banner Mobile */ .promo-banner { padding: 8px 12px !important; font-size: 0.75rem !important; gap: 8px !important; } .promo-banner .coupon-code { padding: 3px 8px !important; font-size: 0.7rem !important; } .promo-banner .countdown { display: none !important; } /* Theme Toggle Mobile */ .theme-toggle { top: auto !important; bottom: 80px !important; left: 12px !important; width: 40px !important; height: 40px !important; } /* Viewers Badge Mobile */ .viewers-badge { bottom: 80px !important; right: 12px !important; padding: 6px 12px !important; font-size: 0.75rem !important; } /* Live Notification Mobile */ .live-notification { left: 12px !important; right: 12px !important; bottom: 140px !important; max-width: none !important; } /* Header */ .header { padding: 10px 12px !important; } .header-content { flex-wrap: wrap !important; gap: 10px !important; } /* Hamburger Button */ .hamburger-btn { order: 1 !important; width: 40px !important; height: 40px !important; flex-shrink: 0 !important; } /* Logo */ .logo { order: 2 !important; font-size: 1.1rem !important; flex: 1 !important; justify-content: center !important; } .logo i { font-size: 1rem !important; } /* Header Actions */ .header-actions { order: 3 !important; gap: 6px !important; } .header-btn { width: 40px !important; height: 40px !important; } .header-btn .badge { width: 18px !important; height: 18px !important; font-size: 0.65rem !important; top: -3px !important; right: -3px !important; } /* Hide language switcher on mobile - moved to drawer */ .lang-switcher { display: none !important; } /* Search Container - Full Width Below */ .search-container { order: 4 !important; width: 100% !important; max-width: 100% !important; flex-basis: 100% !important; margin-top: 6px !important; } .search-box { width: 100% !important; padding: 10px 16px !important; padding-right: 40px !important; font-size: 0.9rem !important; min-height: 44px !important; border-radius: 22px !important; } .voice-search-btn { display: none !important; } } /* ========== CATEGORIES MOBILE ========== */ @media (max-width: 767px) { .categories { padding: 10px 0 !important; overflow: visible !important; } .categories-container { display: flex !important; gap: 8px !important; overflow-x: auto !important; padding: 0 12px !important; scroll-snap-type: x mandatory !important; -webkit-overflow-scrolling: touch !important; scrollbar-width: none !important; } .categories-container::-webkit-scrollbar { display: none !important; } .category-btn { flex-shrink: 0 !important; scroll-snap-align: start !important; padding: 8px 16px !important; font-size: 0.85rem !important; border-radius: 20px !important; min-height: 38px !important; } } /* ========== MAIN CONTENT MOBILE ========== */ @media (max-width: 767px) { .main-content { padding: 16px 12px !important; padding-bottom: 100px !important; } .back-link { font-size: 0.85rem !important; margin-bottom: 16px !important; } .page-header { margin-bottom: 20px !important; text-align: center !important; } .page-title { font-size: 1.5rem !important; margin-bottom: 6px !important; } .page-title i { display: none !important; } .page-subtitle { font-size: 0.9rem !important; } } /* ========== PRODUCTS GRID MOBILE - 2 COLUMNS ========== */ @media (max-width: 767px) { .products-grid { display: grid !important; grid-template-columns: repeat(2, 1fr) !important; gap: 10px !important; padding: 0 !important; } /* Product Card Mobile */ .product-card { border-radius: 12px !important; overflow: hidden !important; } .product-card:hover { transform: none !important; } /* Wishlist Button */ .wishlist-btn { width: 30px !important; height: 30px !important; top: 8px !important; left: 8px !important; font-size: 0.75rem !important; } /* Gallery */ .product-gallery { position: relative !important; } .gallery-main { aspect-ratio: 1 !important; padding: 10px !important; } .gallery-main img { max-width: 85% !important; max-height: 85% !important; } /* Hide thumbnails on mobile */ .gallery-thumbs { display: none !important; } /* Badges */ .discount-badge, .hot-badge, .new-badge, .category-badge { font-size: 0.6rem !important; padding: 2px 6px !important; border-radius: 8px !important; } .discount-badge { top: 8px !important; left: 42px !important; } .image-count { display: none !important; } /* Product Info */ .product-info { padding: 10px !important; } .product-name { font-size: 0.8rem !important; line-height: 1.3 !important; min-height: 2.6em !important; margin-bottom: 4px !important; -webkit-line-clamp: 2 !important; } /* Hide description on mobile */ .product-description { display: none !important; } /* Rating */ .product-rating { margin-bottom: 6px !important; gap: 4px !important; } .product-stars i { font-size: 0.6rem !important; } .rating-avg { font-size: 0.7rem !important; } .rating-count, .sold-count { display: none !important; } /* Shipping & Guarantee badges */ .shipping-badge, .guarantee-badge { font-size: 0.6rem !important; padding: 2px 6px !important; margin-bottom: 4px !important; } /* Bundle offer */ .bundle-offer { display: none !important; } /* Price Section */ .product-footer { align-items: center !important; } .product-price { font-size: 1rem !important; font-weight: 800 !important; } .product-price::before { font-size: 0.7rem !important; } .original-price { font-size: 0.7rem !important; } /* Quick Add Button */ .quick-add-btn { width: 36px !important; height: 36px !important; border-radius: 10px !important; font-size: 0.9rem !important; } } /* ========== VERY SMALL SCREENS - SINGLE COLUMN ========== */ @media (max-width: 359px) { .products-grid { grid-template-columns: 1fr !important; gap: 12px !important; } .product-card { display: flex !important; flex-direction: row !important; height: auto !important; } .product-gallery { width: 110px !important; min-width: 110px !important; flex-shrink: 0 !important; } .gallery-main { height: 110px !important; aspect-ratio: auto !important; } .product-info { flex: 1 !important; display: flex !important; flex-direction: column !important; justify-content: space-between !important; padding: 10px !important; } .product-name { min-height: auto !important; margin-bottom: 8px !important; } .product-footer { margin-top: auto !important; } .wishlist-btn { width: 26px !important; height: 26px !important; top: 6px !important; left: 6px !important; } .discount-badge { left: 36px !important; font-size: 0.55rem !important; } } /* ========== PRODUCT MODAL MOBILE ========== */ @media (max-width: 767px) { .modal-overlay { align-items: flex-end !important; padding: 0 !important; background: rgba(0, 0, 0, 0.8) !important; } .product-modal { display: flex !important; flex-direction: column !important; max-width: 100% !important; width: 100% !important; max-height: 92vh !important; border-radius: 20px 20px 0 0 !important; transform: translateY(100%) !important; grid-template-columns: 1fr !important; } .modal-overlay.open .product-modal { transform: translateY(0) !important; } /* Modal Handle */ .product-modal::before { content: '' !important; display: block !important; width: 40px !important; height: 4px !important; background: rgba(255, 255, 255, 0.3) !important; border-radius: 4px !important; margin: 12px auto !important; } .modal-close { position: absolute !important; top: 8px !important; right: 12px !important; width: 36px !important; height: 36px !important; } .modal-gallery { width: 100% !important; max-height: 40vh !important; } .modal-main-image { height: 35vh !important; } .modal-thumbnails { padding: 8px 12px !important; gap: 6px !important; } .modal-thumb { width: 50px !important; height: 50px !important; } .modal-content { width: 100% !important; padding: 16px !important; overflow-y: auto !important; max-height: 50vh !important; } .modal-title { font-size: 1.1rem !important; } .modal-price { font-size: 1.5rem !important; } .modal-original-price { font-size: 0.9rem !important; } /* Modal Actions */ .modal-actions { flex-direction: column !important; gap: 10px !important; position: sticky !important; bottom: 0 !important; background: var(--color-surface) !important; padding: 16px !important; margin: 0 -16px -16px !important; border-top: 1px solid rgba(255,255,255,0.1) !important; } .modal-actions button { width: 100% !important; min-height: 50px !important; font-size: 1rem !important; } } /* ========== CART DRAWER MOBILE ========== */ @media (max-width: 767px) { .cart-sidebar { width: 100% !important; max-width: 100% !important; border-radius: 20px 20px 0 0 !important; } .cart-header { padding: 16px !important; } .cart-items { padding: 12px !important; max-height: 50vh !important; } .cart-item { padding: 12px !important; gap: 10px !important; } .cart-item-image { width: 60px !important; height: 60px !important; } .cart-item-name { font-size: 0.85rem !important; } .cart-item-price { font-size: 0.9rem !important; } .cart-footer { padding: 16px !important; } .checkout-btn { min-height: 52px !important; font-size: 1rem !important; } } /* ========== FLOATING CART BUTTON MOBILE ========== */ @media (max-width: 767px) { .floating-cart { bottom: 20px !important; right: 12px !important; left: 12px !important; width: auto !important; padding: 14px 20px !important; border-radius: 16px !important; justify-content: space-between !important; } .floating-cart .cart-info { display: flex !important; align-items: center !important; gap: 12px !important; } .floating-cart .cart-total { font-size: 1.1rem !important; font-weight: 700 !important; } } /* ========== REVIEWS SECTION MOBILE ========== */ @media (max-width: 767px) { .reviews-section { padding: 20px 12px !important; } .reviews-header { margin-bottom: 16px !important; } .reviews-header h2 { font-size: 1.2rem !important; } .reviews-grid { gap: 12px !important; } .review-card { padding: 14px !important; } } /* ========== MOBILE DRAWER (Menu) ========== */ @media (max-width: 767px) { .mobile-drawer { width: 85% !important; max-width: 300px !important; } .mobile-drawer-header { padding: 16px !important; } .mobile-drawer-content { padding: 12px !important; } .mobile-drawer-content > div, .mobile-drawer-content > a { padding: 14px !important; border-radius: 12px !important; margin-bottom: 8px !important; min-height: 48px !important; display: flex !important; align-items: center !important; } } /* ===================================================== 13. CHECKOUT PAGE SPECIFIC STYLES ===================================================== */ @media (max-width: 767px) { .checkout-container { padding: var(--mobile-gutter) !important; padding-bottom: 120px !important; } .form-card { padding: 16px !important; border-radius: 16px !important; } .form-card-title { font-size: 1rem !important; } /* Single column form rows */ .form-row { display: flex !important; flex-direction: column !important; gap: 12px !important; } .form-row > .input-group { width: 100% !important; } /* Cart items */ .cart-items { max-height: none !important; } .cart-item { padding: 12px !important; } .cart-item-image { width: 60px !important; height: 60px !important; } .cart-item-name { font-size: 0.875rem !important; } /* Summary section */ .summary-row { flex-wrap: wrap; gap: 4px; } /* Submit button sticky */ .submit-section { position: fixed; left: 0; right: 0; bottom: 0; background: linear-gradient(to top, var(--color-bg, #0a0a0f) 80%, transparent); padding: 16px var(--mobile-gutter); padding-bottom: calc(16px + var(--safe-bottom)); z-index: 90; } .hyp-payment-btn, .submit-btn { font-size: 1.1rem !important; padding: 16px !important; } } /* ===================================================== 14. ADMIN STUDIO SPECIFIC STYLES ===================================================== */ @media (max-width: 1024px) { /* Hide sidebar, show hamburger */ .sidebar { transform: translateX(100%) !important; width: 85% !important; max-width: 320px !important; z-index: 100 !important; } [dir="ltr"] .sidebar { right: auto !important; left: 0 !important; transform: translateX(-100%) !important; } .sidebar.open { transform: translateX(0) !important; } /* Main content full width */ .main-content { margin-right: 0 !important; margin-left: 0 !important; } /* Add hamburger button to header */ .main-header { padding: 0 var(--mobile-gutter) !important; } .header-title { font-size: 1rem !important; } /* Page content */ .page-content { padding: var(--mobile-gutter) !important; } } @media (max-width: 767px) { /* Stats Grid */ .stats-grid { grid-template-columns: repeat(2, 1fr) !important; gap: 12px !important; } .stat-card { padding: 16px !important; } .stat-value { font-size: 1.5rem !important; } /* Widgets Grid */ .widgets-grid { grid-template-columns: 1fr !important; } /* Products Table → Cards */ .products-table-container { overflow-x: hidden !important; } .products-table { display: none !important; } /* Tab buttons scroll */ .tab-buttons { display: flex; overflow-x: auto; -webkit-overflow-scrolling: touch; padding-bottom: 8px; } .tab-buttons::-webkit-scrollbar { display: none; } .tab-btn { flex-shrink: 0; white-space: nowrap; } /* Modal dialogs */ .modal-dialog { width: 95% !important; max-width: none !important; margin: 16px !important; max-height: calc(100vh - 32px) !important; } .modal-body { max-height: 60vh !important; overflow-y: auto !important; } } /* ===================================================== 15. RTL/LTR ADJUSTMENTS ===================================================== */ /* RTL specific */ [dir="rtl"] { .mobile-drawer { right: 0; left: auto; transform: translateX(100%); } .mobile-drawer.open { transform: translateX(0); } } /* LTR specific */ [dir="ltr"] { .mobile-drawer { left: 0; right: auto; transform: translateX(-100%); } .mobile-drawer.open { transform: translateX(0); } } /* ===================================================== 16. ANIMATIONS & TRANSITIONS ===================================================== */ /* Reduce motion for accessibility */ @media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; } } /* Page load animations */ @keyframes slideUp { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } } .animate-slide-up { animation: slideUp 0.4s ease forwards; } /* Fade in */ @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } } .animate-fade-in { animation: fadeIn 0.3s ease forwards; } /* ===================================================== 17. PRINT STYLES ===================================================== */ @media print { .hamburger-btn, .mobile-drawer, .mobile-drawer-overlay, .bottom-sheet-overlay, .sticky-cta-container, .sidebar { display: none !important; } .main-content { margin: 0 !important; } } /* ===================================================== 18. UTILITY CLASSES ===================================================== */ /* Hide on mobile */ @media (max-width: 767px) { .hide-mobile { display: none !important; } } /* Hide on desktop */ @media (min-width: 768px) { .hide-desktop { display: none !important; } } /* Show only on mobile */ @media (min-width: 768px) { .mobile-only { display: none !important; } } /* Show only on desktop */ @media (max-width: 767px) { .desktop-only { display: none !important; } } /* Full width on mobile */ @media (max-width: 767px) { .mobile-full-width { width: 100% !important; max-width: 100% !important; } } /* Stack on mobile */ @media (max-width: 767px) { .mobile-stack { flex-direction: column !important; } .mobile-stack > * { width: 100% !important; } } /* Gap adjustments */ @media (max-width: 767px) { .mobile-gap-sm { gap: 8px !important; } .mobile-gap-md { gap: 12px !important; } } /* Padding adjustments */ @media (max-width: 767px) { .mobile-p-sm { padding: 12px !important; } .mobile-p-md { padding: 16px !important; } .mobile-px-sm { padding-left: 12px !important; padding-right: 12px !important; } } /* Text adjustments */ @media (max-width: 767px) { .mobile-text-sm { font-size: 0.875rem !important; } .mobile-text-center { text-align: center !important; } }