/* ── PAGE BASE ── */ body { background: #f8fafc; } /* ── PRODUCT WRAPPER ── */ .product-page { max-width: 100rem; margin: 0 auto; padding: var(--space-6); } /* ── PRODUCT TOP GRID ── */ .product-top { display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-8); align-items: start; margin-bottom: var(--space-10); } /* ── GALLERY ── */ .gallery-col { display: flex; flex-direction: column; gap: var(--space-4); } .gallery-main { background: white; border-radius: var(--radius-xl); border: 0.0625rem solid var(--gray-200); overflow: hidden; aspect-ratio: 1; display: flex; align-items: center; justify-content: center; position: relative; } .gallery-main-img { width: 100%; height: 100%; object-fit: contain; padding: var(--space-8); transition: opacity 0.25s; } /* SVG placeholder main image */ .gallery-main-placeholder { width: 70%; height: 70%; display: flex; align-items: center; justify-content: center; } .gallery-thumbs { display: flex; gap: var(--space-3); } .thumb { flex: 1; aspect-ratio: 1; background: white; border: 0.125rem solid var(--gray-200); border-radius: var(--radius-lg); display: flex; align-items: center; justify-content: center; cursor: pointer; overflow: hidden; transition: border-color 0.2s; padding: var(--space-2); font-size: 1.75rem; } .thumb:hover, .thumb.active { border-color: var(--blue); } /* ── PRODUCT SUMMARY ── */ .summary-col { display: flex; flex-direction: column; gap: 0; } .product-title-row { display: flex; align-items: flex-start; justify-content: space-between; gap: var(--space-4); margin-bottom: var(--space-3); } .product-title { font-size: 1.625rem; font-weight: 800; color: var(--gray-800); line-height: 1.25; letter-spacing: -0.02em; } .product-nav-arrows { display: flex; align-items: center; gap: var(--space-2); flex-shrink: 0; margin-top: var(--space-1); } .prod-nav-btn { background: none; border: 0.0625rem solid var(--gray-200); border-radius: var(--radius-md); width: 2rem; height: 2rem; display: flex; align-items: center; justify-content: center; cursor: pointer; color: var(--gray-600); font-size: var(--text-lg); transition: all 0.2s; } .prod-nav-btn:hover { border-color: var(--blue); color: var(--blue); } .prod-nav-btn.grid-btn { background: var(--blue); border-color: var(--blue); color: white; } /* Rating row */ .rating-row { display: flex; align-items: center; gap: var(--space-3); margin-bottom: var(--space-4); padding-bottom: var(--space-4); border-bottom: 0.0625rem solid var(--gray-100); } .stars { color: #f4b400; font-size: var(--text-xl); letter-spacing: 0.05em; } .rating-count { font-size: var(--text-md); color: var(--gray-400); } .rating-divider { color: var(--gray-200); } .review-link { font-size: var(--text-md); color: var(--blue); cursor: pointer; } .review-link:hover { text-decoration: underline; } /* Price */ .product-price-row { display: flex; align-items: baseline; gap: var(--space-3); margin-bottom: var(--space-4); } .price-current { font-size: var(--text-deal-price); font-weight: 900; color: var(--blue); } .price-original { font-size: var(--text-4xl); color: var(--gray-400); text-decoration: line-through; font-weight: 500; } .price-badge { background: var(--red); color: white; font-size: var(--text-sm); font-weight: 800; padding: var(--space-1) var(--space-2); border-radius: var(--radius-sm); } /* Short desc */ .product-short-desc { font-size: var(--text-lg); color: var(--gray-600); line-height: 1.75; margin-bottom: var(--space-4); } /* Benefits pills */ .benefit-pills { display: flex; flex-wrap: wrap; gap: var(--space-2); margin-bottom: var(--space-5); } .benefit-pill { display: flex; align-items: center; gap: var(--space-1); background: var(--blue-light); color: var(--blue); font-size: var(--text-sm); font-weight: 600; padding: var(--space-1) var(--space-3); border-radius: var(--radius-full); } /* Stock */ .stock-status { display: flex; align-items: center; gap: var(--space-2); font-size: var(--text-md); font-weight: 700; color: #16a34a; margin-bottom: var(--space-5); } .stock-dot { width: 0.5rem; height: 0.5rem; background: #16a34a; border-radius: var(--radius-full); } /* Divider */ .prod-divider { border: none; border-top: 0.0625rem solid var(--gray-100); margin: var(--space-4) 0; } /* Qty + Add to cart */ .qty-cart-row { display: flex; align-items: center; gap: var(--space-3); margin-bottom: var(--space-5); flex-wrap: wrap; } .qty-control { display: flex; align-items: center; border: 0.0625rem solid var(--gray-200); border-radius: var(--radius-md); overflow: hidden; background: white; } .qty-btn { background: none; border: none; cursor: pointer; width: 2.5rem; height: 2.75rem; display: flex; align-items: center; justify-content: center; font-size: var(--text-xl); font-weight: 700; color: var(--gray-600); transition: background 0.15s, color 0.15s; } .qty-btn:hover { background: var(--gray-100); color: var(--blue); } .qty-num { font-size: var(--text-md); font-weight: 700; color: var(--gray-800); min-width: 2.5rem; text-align: center; border-left: 0.0625rem solid var(--gray-200); border-right: 0.0625rem solid var(--gray-200); height: 2.75rem; display: flex; align-items: center; justify-content: center; } .add-to-cart-btn { flex: 1; display: flex; align-items: center; justify-content: center; gap: var(--space-2); background: var(--blue); color: white; border: none; border-radius: var(--radius-md); padding: var(--space-3) var(--space-6); font-size: var(--text-lg); font-weight: 700; cursor: pointer; font-family: inherit; transition: background 0.2s, transform 0.15s; min-height: 2.75rem; } .add-to-cart-btn:hover { background: var(--blue-dark); transform: translateY(-0.0625rem); } .add-to-cart-btn::after { content: "+"; font-size: var(--text-4xl); font-weight: 300; margin-left: var(--space-1); } .wishlist-btn { width: 2.75rem; height: 2.75rem; border: 0.0625rem solid var(--gray-200); border-radius: var(--radius-md); background: white; display: flex; align-items: center; justify-content: center; cursor: pointer; color: var(--gray-400); font-size: var(--text-xl); transition: all 0.2s; } .wishlist-btn:hover { border-color: var(--red); color: var(--red); background: #fef2f2; } /* Meta */ .product-meta-block { display: flex; flex-direction: column; gap: var(--space-2); margin-bottom: var(--space-5); } .meta-row { display: flex; align-items: flex-start; gap: var(--space-2); font-size: var(--text-md); color: var(--gray-600); } .meta-row .meta-label { font-weight: 700; color: var(--gray-800); min-width: 5.5rem; } .meta-tag { display: inline-flex; align-items: center; background: var(--gray-100); color: var(--gray-600); font-size: var(--text-sm); padding: var(--space-1) var(--space-2); border-radius: var(--radius-sm); margin-right: var(--space-1); transition: all 0.15s; cursor: pointer; } .meta-tag:hover { background: var(--blue-light); color: var(--blue); } /* Share */ .share-row { display: flex; align-items: center; gap: var(--space-3); padding-top: var(--space-4); border-top: 0.0625rem solid var(--gray-100); } .share-label { font-size: var(--text-md); font-weight: 700; color: var(--gray-800); } .share-icons { display: flex; gap: var(--space-2); } .share-icon { width: 2rem; height: 2rem; border-radius: var(--radius-full); background: var(--gray-100); display: flex; align-items: center; justify-content: center; font-size: var(--text-md); font-weight: 700; cursor: pointer; color: var(--gray-600); transition: all 0.2s; font-style: normal; } .share-icon:hover { background: var(--blue); color: white; } /* ── PRODUCT LOWER SECTION: TABS + SIDEBAR ── */ .product-lower { display: grid; grid-template-columns: 1fr 19rem; gap: var(--space-8); align-items: start; } /* ── TABS ── */ .tabs-panel { background: white; border-radius: var(--radius-xl); border: 0.0625rem solid var(--gray-200); overflow: hidden; } .tab-nav { display: flex; border-bottom: 0.0625rem solid var(--gray-200); } .tab-nav-btn { background: none; border: none; cursor: pointer; font-family: inherit; font-size: var(--text-lg); font-weight: 600; color: var(--gray-600); padding: var(--space-4) var(--space-6); border-bottom: 0.1875rem solid transparent; margin-bottom: -0.0625rem; transition: all 0.2s; white-space: nowrap; } .tab-nav-btn:hover { color: var(--blue); } .tab-nav-btn.active { color: var(--blue); border-bottom-color: var(--blue); } .tab-pane { display: none; padding: var(--space-8); } .tab-pane.active { display: block; } /* Description content */ .desc-lead { font-size: var(--text-xl); font-weight: 600; color: var(--gray-800); line-height: 1.6; margin-bottom: var(--space-5); } .desc-body { font-size: var(--text-lg); color: var(--gray-600); line-height: 1.85; margin-bottom: var(--space-5); } .desc-body p { margin-bottom: var(--space-4); } .desc-body p:last-child { margin-bottom: 0; } .desc-features { display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-3) var(--space-6); margin: var(--space-6) 0; } .desc-feature { display: flex; align-items: flex-start; gap: var(--space-3); font-size: var(--text-md); color: var(--gray-700); } .desc-feature .feat-icon { width: 2rem; height: 2rem; border-radius: var(--radius-md); background: var(--blue-light); display: flex; align-items: center; justify-content: center; font-size: var(--text-xl); flex-shrink: 0; } .desc-feature .feat-text strong { display: block; font-weight: 700; color: var(--gray-800); font-size: var(--text-md); margin-bottom: 0.125rem; } .desc-feature .feat-text span { font-size: var(--text-sm); color: var(--gray-400); } .how-to-use { background: var(--gray-50); border-radius: var(--radius-lg); padding: var(--space-5); margin-top: var(--space-6); } .how-to-use h4 { font-size: var(--text-lg); font-weight: 700; color: var(--gray-800); margin-bottom: var(--space-4); display: flex; align-items: center; gap: var(--space-2); } .how-steps { display: flex; flex-direction: column; gap: var(--space-3); counter-reset: steps; } .how-step { display: flex; align-items: flex-start; gap: var(--space-3); font-size: var(--text-md); color: var(--gray-600); line-height: 1.6; } .step-num { width: 1.5rem; height: 1.5rem; background: var(--blue); color: white; border-radius: var(--radius-full); display: flex; align-items: center; justify-content: center; font-size: var(--text-sm); font-weight: 800; flex-shrink: 0; margin-top: 0.125rem; } /* Ingredients tab */ .ingredients-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--space-4); margin-bottom: var(--space-6); } .ingredient-card { background: var(--gray-50); border-radius: var(--radius-lg); padding: var(--space-4); text-align: center; border: 0.0625rem solid var(--gray-200); transition: all 0.2s; } .ingredient-card:hover { border-color: var(--blue); background: var(--blue-light); } .ing-icon { font-size: 2rem; margin-bottom: var(--space-2); } .ing-name { font-size: var(--text-md); font-weight: 700; color: var(--gray-800); margin-bottom: var(--space-1); } .ing-role { font-size: var(--text-sm); color: var(--gray-400); line-height: 1.5; } .full-ingredients { background: var(--gray-50); border-radius: var(--radius-lg); padding: var(--space-4) var(--space-5); font-size: var(--text-md); color: var(--gray-600); line-height: 1.8; border: 0.0625rem solid var(--gray-200); } .full-ingredients strong { color: var(--gray-800); } /* Reviews tab */ .reviews-summary { display: grid; grid-template-columns: 10rem 1fr; gap: var(--space-8); align-items: center; padding-bottom: var(--space-6); border-bottom: 0.0625rem solid var(--gray-100); margin-bottom: var(--space-6); } .rating-big { text-align: center; background: var(--gray-50); border-radius: var(--radius-xl); padding: var(--space-6); border: 0.0625rem solid var(--gray-200); } .rating-big .score { font-size: 3.5rem; font-weight: 900; color: var(--blue); line-height: 1; } .rating-big .stars-big { font-size: var(--text-5xl); color: #f4b400; margin: var(--space-2) 0; } .rating-big .total { font-size: var(--text-md); color: var(--gray-400); } .rating-bars { display: flex; flex-direction: column; gap: var(--space-2); } .rating-bar-row { display: flex; align-items: center; gap: var(--space-3); font-size: var(--text-md); color: var(--gray-600); } .rating-bar-row .bar-label { min-width: 2.5rem; font-weight: 600; color: var(--gray-700); } .bar-track { flex: 1; height: 0.5rem; background: var(--gray-200); border-radius: var(--radius-full); overflow: hidden; } .bar-fill { height: 100%; background: #f4b400; border-radius: var(--radius-full); } .bar-count { min-width: 1.5rem; text-align: right; color: var(--gray-400); } .review-list { display: flex; flex-direction: column; gap: var(--space-5); } .review-card { padding: var(--space-5); border: 0.0625rem solid var(--gray-200); border-radius: var(--radius-lg); background: var(--gray-50); } .review-header { display: flex; align-items: center; justify-content: space-between; margin-bottom: var(--space-3); } .reviewer-info { display: flex; align-items: center; gap: var(--space-3); } .reviewer-avatar { width: 2.5rem; height: 2.5rem; border-radius: var(--radius-full); background: linear-gradient(135deg, var(--blue), var(--teal)); display: flex; align-items: center; justify-content: center; color: white; font-size: var(--text-lg); font-weight: 700; } .reviewer-name { font-size: var(--text-md); font-weight: 700; color: var(--gray-800); } .reviewer-date { font-size: var(--text-sm); color: var(--gray-400); } .review-stars { color: #f4b400; font-size: var(--text-lg); } .review-title { font-size: var(--text-md); font-weight: 700; color: var(--gray-800); margin-bottom: var(--space-2); } .review-text { font-size: var(--text-md); color: var(--gray-600); line-height: 1.7; } .verified-badge { display: inline-flex; align-items: center; gap: var(--space-1); background: #ecfdf5; color: #16a34a; font-size: var(--text-xs); font-weight: 700; padding: var(--space-1) var(--space-2); border-radius: var(--radius-sm); margin-top: var(--space-2); } /* ── SIDEBAR ── */ .product-sidebar { display: flex; flex-direction: column; gap: var(--space-4); } .sidebar-promo { background: white; border: 0.0625rem solid var(--gray-200); border-radius: var(--radius-xl); overflow: hidden; } .sidebar-promo-img { height: 11rem; background: var(--gray-50); /* neutral fallback while loading */ display: flex; align-items: center; justify-content: center; position: relative; overflow: hidden; /* keeps image inside rounded corners */ } .sidebar-promo-img img { width: 100%; height: 100%; object-fit: contain; padding: var(--space-4); transition: transform 0.35s ease; } .sidebar-promo:hover .sidebar-promo-img img { transform: scale(1.05); } .sidebar-disc { position: absolute; top: var(--space-3); right: var(--space-3); width: 3rem; height: 3rem; background: var(--red); border-radius: var(--radius-full); display: flex; flex-direction: column; align-items: center; justify-content: center; color: white; font-size: var(--text-xs); font-weight: 800; line-height: 1.2; } .sidebar-promo-body { padding: var(--space-4) var(--space-5); } .sidebar-promo-body h4 { font-size: var(--text-3xl); font-weight: 800; color: var(--gray-800); margin-bottom: var(--space-2); } .sidebar-price { display: flex; align-items: baseline; gap: var(--space-2); margin-bottom: var(--space-4); } .sidebar-price .s-now { font-size: var(--text-4xl); font-weight: 800; color: var(--blue); } .sidebar-price .s-old { font-size: var(--text-md); color: var(--gray-400); text-decoration: line-through; } .sidebar-buy-btn { display: flex; align-items: center; justify-content: center; gap: var(--space-2); background: var(--blue); color: white; border: none; border-radius: var(--radius-md); padding: var(--space-3) var(--space-5); font-size: var(--text-md); font-weight: 700; cursor: pointer; font-family: inherit; width: 100%; transition: background 0.2s; } .sidebar-buy-btn:hover { background: var(--blue-dark); } .sidebar-buy-btn::after { content: "+"; font-size: var(--text-3xl); font-weight: 300; } /* Delivery info card */ .delivery-card { background: white; border: 0.0625rem solid var(--gray-200); border-radius: var(--radius-xl); padding: var(--space-5); display: flex; flex-direction: column; gap: var(--space-4); } .delivery-item { display: flex; align-items: flex-start; gap: var(--space-3); } .delivery-icon { width: 2.5rem; height: 2.5rem; border-radius: var(--radius-md); background: var(--blue-light); display: flex; align-items: center; justify-content: center; font-size: var(--text-xl); flex-shrink: 0; } .delivery-text strong { display: block; font-size: var(--text-md); font-weight: 700; color: var(--gray-800); } .delivery-text span { font-size: var(--text-sm); color: var(--gray-400); } /* ── RELATED PRODUCTS ── */ .related-section { margin-top: var(--space-10); } .related-header { display: flex; align-items: center; justify-content: space-between; margin-bottom: var(--space-6); } .related-title { font-size: var(--text-deal, 2.125rem); font-weight: 800; color: var(--gray-800); letter-spacing: -0.03em; } .related-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: var(--space-4); } /* ── TOAST NOTIFICATION ── */ .toast { position: fixed; bottom: var(--space-6); right: var(--space-6); background: var(--gray-800); color: white; padding: var(--space-3) var(--space-5); border-radius: var(--radius-lg); font-size: var(--text-md); font-weight: 600; display: flex; align-items: center; gap: var(--space-3); box-shadow: 0 0.5rem 2rem rgba(0, 0, 0, 0.2); transform: translateY(6rem); opacity: 0; transition: all 0.35s cubic-bezier(0.34, 1.56, 0.64, 1); z-index: 9999; pointer-events: none; } .toast.show { transform: translateY(0); opacity: 1; } .toast-icon { font-size: var(--text-xl); } .toast-view { color: var(--yellow); cursor: pointer; pointer-events: all; margin-left: var(--space-2); text-decoration: underline; } /* ===================================== FORCE PRODUCT IMAGES TO BE RESPONSIVE ===================================== */ .gallery-main img, .sidebar-promo-img img { width: 100%; max-width: 100%; height: auto; display: block; object-fit: contain; } /* ── RESPONSIVE ── */ @media (max-width: 64rem) { .product-top { grid-template-columns: 1fr; gap: var(--space-6); } .gallery-col { max-width: 28rem; margin: 0 auto; width: 100%; } .product-lower { grid-template-columns: 1fr; } .product-sidebar { display: grid; grid-template-columns: 1fr 1fr; } .related-grid { grid-template-columns: repeat(2, 1fr); } .desc-features { grid-template-columns: 1fr; } .ingredients-grid { grid-template-columns: repeat(2, 1fr); } } @media (max-width: 40rem) { .product-sidebar { grid-template-columns: 1fr; } .related-grid { grid-template-columns: 1fr; } .reviews-summary { grid-template-columns: 1fr; } .ingredients-grid { grid-template-columns: 1fr; } .tab-nav { overflow-x: auto; } }