:root{--color-primary: #E91E8C;--color-primary-light: #FF6EB4;--color-primary-dark: #C2185B;--color-primary-bg: #FFF0F6;--color-secondary: #7C3AED;--color-accent: #F59E0B;--color-success: #10B981;--color-danger: #EF4444;--color-warning: #F59E0B;--color-bg: #FAFAFA;--color-surface: #FFFFFF;--color-surface-hover: #F5F5F5;--color-border: #E5E7EB;--color-text: #1F2937;--color-text-secondary: #6B7280;--color-text-muted: #9CA3AF;--space-xs: 4px;--space-sm: 8px;--space-md: 12px;--space-lg: 16px;--space-xl: 24px;--space-2xl: 32px;--radius-sm: 8px;--radius-md: 12px;--radius-lg: 16px;--radius-xl: 24px;--radius-full: 9999px;--shadow-sm: 0 1px 3px rgba(0,0,0,.06);--shadow-md: 0 4px 12px rgba(0,0,0,.08);--shadow-lg: 0 8px 24px rgba(0,0,0,.12);--font: "Inter", "Noto Sans Khmer", -apple-system, sans-serif;--tg-bg: var(--tg-theme-bg-color, var(--color-bg));--tg-text: var(--tg-theme-text-color, var(--color-text));--tg-hint: var(--tg-theme-hint-color, var(--color-text-secondary));--tg-button: var(--tg-theme-button-color, var(--color-primary));--tg-button-text: var(--tg-theme-button-text-color, #fff)}@media(prefers-color-scheme:dark){:root{--color-bg: #0F0F0F;--color-surface: #1A1A1A;--color-surface-hover: #252525;--color-border: #333;--color-text: #F3F4F6;--color-text-secondary: #9CA3AF;--color-text-muted: #6B7280;--color-primary-bg: #2D1025}}*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{font-family:var(--font);background:var(--tg-bg, var(--color-bg));color:var(--tg-text, var(--color-text));font-size:14px;line-height:1.5;overflow-x:hidden;-webkit-font-smoothing:antialiased}body{padding-bottom:calc(80px + env(safe-area-inset-bottom,0px))}button{font-family:var(--font);cursor:pointer;border:none;outline:none;background:none;font-size:inherit}a{text-decoration:none;color:inherit}img{max-width:100%;display:block}input,textarea{font-family:var(--font);font-size:16px}.container{padding:0 var(--space-lg);max-width:480px;margin:0 auto}.skeleton{background:linear-gradient(90deg,var(--color-surface-hover) 25%,var(--color-border) 50%,var(--color-surface-hover) 75%);background-size:200% 100%;animation:shimmer 1.5s infinite;border-radius:var(--radius-md)}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@keyframes fadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes scaleIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes slideUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes bounce{0%,to{transform:scale(1)}50%{transform:scale(1.2)}}.fade-in{animation:fadeIn .3s ease-out forwards}.badge{display:inline-flex;align-items:center;padding:2px 8px;border-radius:var(--radius-full);font-size:11px;font-weight:600}.badge-new{background:var(--color-primary-bg);color:var(--color-primary)}.badge-hot{background:#fef3c7;color:#d97706}.badge-sale{background:#fee2e2;color:#dc2626}::-webkit-scrollbar{width:0;display:none}.tab-bar{position:fixed;bottom:0;left:0;right:0;height:calc(64px + env(safe-area-inset-bottom,0px));padding-bottom:env(safe-area-inset-bottom,0px);background:var(--color-surface);border-top:1px solid var(--color-border);display:flex;justify-content:space-around;align-items:center;z-index:100;backdrop-filter:blur(20px)}.tab-item{display:flex;flex-direction:column;align-items:center;gap:2px;padding:var(--space-sm);color:var(--color-text-muted);font-size:10px;font-weight:500;transition:all .2s;position:relative}.tab-item.active{color:var(--color-primary)}.tab-item .tab-icon{font-size:22px;line-height:1}.tab-item .cart-badge{position:absolute;top:2px;right:2px;background:var(--color-primary);color:#fff;font-size:10px;width:18px;height:18px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:700;animation:scaleIn .3s ease}.page{animation:fadeIn .2s ease-out;min-height:calc(100vh - 80px);padding-top:var(--space-lg)}*{-webkit-overflow-scrolling:touch}.fade-in,.tab-bar,.tab-item,.product-card{will-change:transform,opacity;transform:translateZ(0)}img{content-visibility:auto}.page{backface-visibility:hidden}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}button:active{transform:scale(.97);transition:transform .1s}
