/* ===================================================== CLALMOBILE MAIN CSS BUNDLE v1.0 Phase 1: Mobile-First Luxury UI ===================================================== */ /* Import order matters - tokens first, then structure, then components */ /* 1. Design Tokens - Colors, Typography, Spacing, Shadows */ @import url('./tokens.css'); /* 2. Layout System - Grid, Containers, Responsive utilities */ @import url('./layout.css'); /* 3. Header & Navigation */ @import url('./header.css'); /* 4. Filter Components */ @import url('./filters.css'); /* 5. Product Cards */ @import url('./products.css'); /* 6. Forms & Buttons */ @import url('./forms.css'); /* 7. Mobile Complete Redesign */ @import url('./mobile-redesign.css?v=2.2.0'); /* ===================================================== PAGE-SPECIFIC STYLES ===================================================== */ /* ===== HOME PAGE ===== */ .hero-section { position: relative; min-height: 50vh; display: flex; align-items: center; padding: var(--space-8) 0; background: linear-gradient(135deg, var(--bg-0) 0%, var(--bg-1) 100%); overflow: hidden; } @media (min-width: 768px) { .hero-section { min-height: 60vh; padding: var(--space-12) 0; } } .hero-content { position: relative; z-index: 2; text-align: center; max-width: 640px; margin: 0 auto; padding: 0 var(--container-padding); } .hero-title { font-size: var(--text-3xl); font-weight: 800; color: var(--text-1); line-height: var(--leading-tight); margin-bottom: var(--space-4); } @media (min-width: 768px) { .hero-title { font-size: var(--text-4xl); } } .hero-subtitle { font-size: var(--text-lg); color: var(--text-2); margin-bottom: var(--space-6); } .hero-actions { display: flex; flex-direction: column; gap: var(--space-3); align-items: center; } @media (min-width: 480px) { .hero-actions { flex-direction: row; justify-content: center; } } /* Hero decorative elements */ .hero-glow { position: absolute; width: 600px; height: 600px; background: radial-gradient(circle, rgba(225, 29, 72, 0.15) 0%, transparent 70%); top: -200px; right: -200px; pointer-events: none; } /* ===== FEATURED PRODUCTS SECTION ===== */ .featured-section { padding: var(--space-8) 0; } @media (min-width: 768px) { .featured-section { padding: var(--space-12) 0; } } .section-header { display: flex; flex-direction: column; gap: var(--space-2); margin-bottom: var(--space-6); } @media (min-width: 768px) { .section-header { flex-direction: row; align-items: flex-end; justify-content: space-between; } } .section-title { font-size: var(--text-2xl); font-weight: 700; color: var(--text-1); } .section-link { display: inline-flex; align-items: center; gap: var(--space-1); color: var(--accent); font-size: var(--text-sm); font-weight: 500; text-decoration: none; } .section-link:hover { text-decoration: underline; } .section-link svg { width: 16px; height: 16px; } /* ===== CATALOG PAGE ===== */ .catalog-header { padding: var(--space-6) 0 var(--space-4); } .catalog-title { font-size: var(--text-2xl); font-weight: 700; color: var(--text-1); margin-bottom: var(--space-2); } @media (min-width: 768px) { .catalog-title { font-size: var(--text-3xl); } } .catalog-breadcrumb { display: flex; align-items: center; gap: var(--space-2); font-size: var(--text-sm); color: var(--muted-1); } .catalog-breadcrumb a { color: var(--text-2); text-decoration: none; } .catalog-breadcrumb a:hover { color: var(--accent); } .catalog-breadcrumb .separator { opacity: 0.5; } /* ===== PRODUCT DETAIL PAGE ===== */ .product-detail { padding: var(--space-6) 0; } .product-detail-layout { display: grid; gap: var(--space-6); grid-template-columns: 1fr; } @media (min-width: 768px) { .product-detail-layout { grid-template-columns: 1fr 1fr; gap: var(--space-8); } } .product-gallery { position: relative; } .product-gallery-main { aspect-ratio: 1 / 1; background: var(--bg-2); border-radius: var(--r-xl); overflow: hidden; display: flex; align-items: center; justify-content: center; } .product-gallery-main img { max-width: 90%; max-height: 90%; object-fit: contain; } .product-gallery-thumbs { display: flex; gap: var(--space-2); margin-top: var(--space-3); overflow-x: auto; padding: var(--space-1); } .product-gallery-thumb { width: 64px; height: 64px; flex-shrink: 0; background: var(--bg-2); border: 2px solid transparent; border-radius: var(--r-lg); overflow: hidden; cursor: pointer; transition: border-color var(--duration-fast) var(--ease-out); } .product-gallery-thumb.active { border-color: var(--accent); } .product-gallery-thumb img { width: 100%; height: 100%; object-fit: contain; } .product-info { display: flex; flex-direction: column; gap: var(--space-4); } .product-info-brand { font-size: var(--text-sm); color: var(--muted-1); text-transform: uppercase; letter-spacing: 0.5px; } .product-info-title { font-size: var(--text-2xl); font-weight: 700; color: var(--text-1); line-height: var(--leading-snug); } @media (min-width: 768px) { .product-info-title { font-size: var(--text-3xl); } } .product-info-price { display: flex; align-items: baseline; gap: var(--space-3); } .product-info-price .current { font-size: var(--text-3xl); font-weight: 800; color: var(--text-1); } .product-info-price .original { font-size: var(--text-lg); color: var(--muted-1); text-decoration: line-through; } .product-info-price .discount { padding: var(--space-1) var(--space-2); background: rgba(225, 29, 72, 0.1); color: var(--accent); font-size: var(--text-sm); font-weight: 700; border-radius: var(--r-sm); } /* ===== CHECKOUT PAGE ===== */ .checkout-page { padding: var(--space-6) 0 var(--space-12); } .checkout-header { margin-bottom: var(--space-6); } .checkout-title { font-size: var(--text-2xl); font-weight: 700; color: var(--text-1); } .checkout-steps { display: flex; align-items: center; gap: var(--space-2); margin-top: var(--space-4); } .checkout-step { display: flex; align-items: center; gap: var(--space-2); font-size: var(--text-sm); color: var(--muted-1); } .checkout-step.active { color: var(--accent); } .checkout-step.completed { color: var(--success); } .checkout-step-number { width: 24px; height: 24px; display: flex; align-items: center; justify-content: center; background: var(--bg-3); border-radius: var(--r-full); font-weight: 600; } .checkout-step.active .checkout-step-number { background: var(--accent); color: white; } .checkout-step.completed .checkout-step-number { background: var(--success); color: white; } /* Order summary card */ .order-summary { background: var(--bg-2); border: 1px solid var(--border); border-radius: var(--r-xl); padding: var(--space-5); position: sticky; top: calc(var(--header-height) + var(--space-4)); } .order-summary-title { font-size: var(--text-lg); font-weight: 700; color: var(--text-1); margin-bottom: var(--space-4); padding-bottom: var(--space-3); border-bottom: 1px solid var(--border); } .order-summary-item { display: flex; gap: var(--space-3); padding: var(--space-3) 0; border-bottom: 1px solid var(--border); } .order-summary-item:last-of-type { border-bottom: none; } .order-summary-item-image { width: 64px; height: 64px; background: var(--bg-3); border-radius: var(--r-lg); overflow: hidden; flex-shrink: 0; } .order-summary-item-image img { width: 100%; height: 100%; object-fit: contain; } .order-summary-item-info { flex: 1; min-width: 0; } .order-summary-item-name { font-size: var(--text-sm); font-weight: 500; color: var(--text-1); margin-bottom: var(--space-1); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .order-summary-item-qty { font-size: var(--text-xs); color: var(--muted-1); } .order-summary-item-price { font-size: var(--text-sm); font-weight: 600; color: var(--text-1); } .order-summary-totals { margin-top: var(--space-4); padding-top: var(--space-4); border-top: 1px solid var(--border); } .order-summary-row { display: flex; justify-content: space-between; font-size: var(--text-sm); color: var(--text-2); margin-bottom: var(--space-2); } .order-summary-row.total { font-size: var(--text-lg); font-weight: 700; color: var(--text-1); margin-top: var(--space-3); padding-top: var(--space-3); border-top: 1px solid var(--border); } /* ===== THANK YOU PAGE ===== */ .thank-you-page { min-height: calc(100vh - var(--header-height)); display: flex; align-items: center; justify-content: center; padding: var(--space-8) var(--container-padding); text-align: center; } .thank-you-content { max-width: 480px; } .thank-you-icon { width: 80px; height: 80px; margin: 0 auto var(--space-6); background: rgba(34, 197, 94, 0.1); border-radius: var(--r-full); display: flex; align-items: center; justify-content: center; } .thank-you-icon svg { width: 40px; height: 40px; color: var(--success); } .thank-you-title { font-size: var(--text-2xl); font-weight: 700; color: var(--text-1); margin-bottom: var(--space-3); } .thank-you-message { font-size: var(--text-base); color: var(--text-2); margin-bottom: var(--space-6); } .thank-you-order-id { display: inline-block; padding: var(--space-3) var(--space-5); background: var(--bg-2); border: 1px solid var(--border); border-radius: var(--r-lg); font-family: monospace; font-size: var(--text-lg); color: var(--text-1); margin-bottom: var(--space-6); } /* ===== LEGAL PAGES ===== */ .legal-page { padding: var(--space-8) 0; } .legal-content { max-width: 720px; margin: 0 auto; } .legal-content h1 { font-size: var(--text-3xl); font-weight: 700; color: var(--text-1); margin-bottom: var(--space-6); } .legal-content h2 { font-size: var(--text-xl); font-weight: 600; color: var(--text-1); margin-top: var(--space-8); margin-bottom: var(--space-4); } .legal-content p { font-size: var(--text-base); color: var(--text-2); line-height: var(--leading-relaxed); margin-bottom: var(--space-4); } .legal-content ul { margin-bottom: var(--space-4); padding-inline-start: var(--space-6); } .legal-content li { font-size: var(--text-base); color: var(--text-2); margin-bottom: var(--space-2); } /* ===== FOOTER ===== */ .site-footer { background: var(--bg-0); border-top: 1px solid var(--border); padding: var(--space-8) 0 var(--space-6); margin-top: auto; } .footer-grid { display: grid; gap: var(--space-8); grid-template-columns: 1fr; } @media (min-width: 768px) { .footer-grid { grid-template-columns: repeat(2, 1fr); } } @media (min-width: 1024px) { .footer-grid { grid-template-columns: 2fr repeat(3, 1fr); } } .footer-brand { margin-bottom: var(--space-4); } .footer-brand img { height: 40px; } .footer-about { font-size: var(--text-sm); color: var(--text-2); line-height: var(--leading-relaxed); max-width: 300px; } .footer-title { font-size: var(--text-sm); font-weight: 600; color: var(--text-1); text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: var(--space-4); } .footer-links { display: flex; flex-direction: column; gap: var(--space-2); } .footer-links a { font-size: var(--text-sm); color: var(--text-2); text-decoration: none; transition: color var(--duration-fast) var(--ease-out); } .footer-links a:hover { color: var(--accent); } .footer-bottom { margin-top: var(--space-8); padding-top: var(--space-6); border-top: 1px solid var(--border); display: flex; flex-direction: column; gap: var(--space-4); align-items: center; text-align: center; } @media (min-width: 768px) { .footer-bottom { flex-direction: row; justify-content: space-between; text-align: start; } } .footer-copyright { font-size: var(--text-xs); color: var(--muted-1); } .footer-legal-links { display: flex; gap: var(--space-4); } .footer-legal-links a { font-size: var(--text-xs); color: var(--muted-1); text-decoration: none; } .footer-legal-links a:hover { color: var(--text-1); } /* ===== EMPTY STATES ===== */ .empty-state { display: flex; flex-direction: column; align-items: center; justify-content: center; padding: var(--space-12) var(--space-4); text-align: center; } .empty-state-icon { width: 80px; height: 80px; margin-bottom: var(--space-6); color: var(--muted-2); } .empty-state-title { font-size: var(--text-xl); font-weight: 600; color: var(--text-1); margin-bottom: var(--space-2); } .empty-state-message { font-size: var(--text-base); color: var(--muted-1); max-width: 300px; margin-bottom: var(--space-6); } /* ===== TOASTS/ALERTS ===== */ .toast { position: fixed; bottom: var(--space-6); left: 50%; transform: translateX(-50%) translateY(100px); padding: var(--space-3) var(--space-5); background: var(--bg-2); border: 1px solid var(--border); border-radius: var(--r-lg); box-shadow: var(--shadow-xl); font-size: var(--text-sm); color: var(--text-1); z-index: var(--z-toast); opacity: 0; transition: all var(--duration-normal) var(--ease-out); } .toast.show { opacity: 1; transform: translateX(-50%) translateY(0); } .toast-success { border-color: var(--success); background: rgba(34, 197, 94, 0.1); } .toast-error { border-color: var(--error); background: rgba(220, 38, 38, 0.1); } /* ===== LOADING SPINNER ===== */ .spinner { width: 40px; height: 40px; border: 3px solid var(--bg-3); border-top-color: var(--accent); border-radius: 50%; animation: spin 0.8s linear infinite; } @keyframes spin { to { transform: rotate(360deg); } } .page-loading { position: fixed; inset: 0; display: flex; align-items: center; justify-content: center; background: var(--bg-1); z-index: var(--z-modal); } /* ===== PRINT STYLES ===== */ @media print { .site-header, .site-footer, .btn, .filter-drawer, .drawer-overlay { display: none !important; } body { background: white; color: black; } .main-content { padding-top: 0; } }