/* ── PAGE BASE ── */ body { background: #f8fafc; } /* ── PAGE BACKGROUND ── */ .cart-page { max-width: 100rem; margin: 0 auto; padding: var(--space-6); } /* ── PAGE TITLE ── */ .cart-page-title { margin: 0 auto var(--space-6); display: flex; align-items: center; gap: var(--space-3); } .cart-page-title h1 { font-size: var(--text-deal, 2.125rem); font-weight: 900; color: var(--gray-800); letter-spacing: -0.04em; } .cart-page-title .item-count { background: var(--blue); color: white; font-size: var(--text-md); font-weight: 700; padding: var(--space-1) var(--space-3); border-radius: var(--radius-full); } /* ── CART LAYOUT ── */ .cart-layout { margin: 0 auto; display: grid; grid-template-columns: 3fr 1fr; gap: var(--space-4); align-items: start; } /* ── CART ITEMS PANEL ── */ .cart-items-panel { display: flex; flex-direction: column; gap: var(--space-3); } /* Column headers */ .cart-col-headers { display: grid; grid-template-columns: 2fr 1fr 1fr 1fr auto; gap: var(--space-4); padding: 0 var(--space-5); font-size: var(--text-sm); font-weight: 700; color: var(--gray-400); text-transform: uppercase; letter-spacing: 0.06em; } /* Single cart item card */ .cart-item { margin-bottom: 1rem; background: white; border: 0.0625rem solid var(--gray-200); border-radius: var(--radius-xl); padding: var(--space-5); display: grid; grid-template-columns: 2fr 1fr 1fr 1fr auto; gap: var(--space-4); align-items: center; transition: box-shadow 0.2s, border-color 0.2s; } .cart-item:hover { border-color: var(--gray-300); box-shadow: 0 0.25rem 1rem rgba(0, 0, 0, 0.06); } /* Product info cell */ .cart-item-info { display: flex; align-items: center; gap: var(--space-4); } .cart-item-img { width: 4.5rem; height: 4.5rem; border-radius: var(--radius-lg); display: flex; align-items: center; justify-content: center; flex-shrink: 0; overflow: hidden; background: var(--gray-50); } /* when a real image is present */ .cart-item-img.has-image img { width: 100%; height: 100%; object-fit: fill; } /* fallback emoji when no image */ .cart-item-img.no-image { background: linear-gradient(135deg, #f5ece6, #e8d4c8); font-size: 2rem; } .img-cream { background: linear-gradient(135deg, #f9efe7, #eed9c4); } .img-fair { background: linear-gradient(135deg, #f5ece6, #e8d4c8); } .img-oil { background: linear-gradient(135deg, #e4edf8, #c8d8f0); } .img-wash { background: linear-gradient(135deg, #e8f2e8, #c8dcc8); } .cart-item-name { font-size: var(--text-md); font-weight: 700; color: var(--gray-800); line-height: 1.4; margin-bottom: var(--space-1); } .cart-item-sku { font-size: var(--text-sm); color: var(--gray-400); } /* Price cell */ .cart-item-price { font-size: var(--text-xl); font-weight: 700; color: var(--gray-700); } /* Quantity cell */ .qty-control { display: flex; align-items: center; gap: var(--space-2); border: 0.0625rem solid var(--gray-200); border-radius: var(--radius-md); padding: var(--space-1) var(--space-2); width: fit-content; background: var(--gray-50); } .qty-btn { background: none; border: none; cursor: pointer; width: 1.5rem; height: 1.5rem; border-radius: var(--radius-sm); display: flex; align-items: center; justify-content: center; font-size: var(--text-lg); font-weight: 700; color: var(--gray-600); transition: background 0.15s, color 0.15s; line-height: 1; } .qty-btn:hover { background: var(--blue-light); color: var(--blue); } .qty-num { font-size: var(--text-md); font-weight: 700; color: var(--gray-800); min-width: 1.5rem; text-align: center; } /* Subtotal cell */ .cart-item-subtotal { font-size: var(--text-xl); font-weight: 800; color: var(--red); } /* Remove button */ .remove-btn { background: none; border: none; cursor: pointer; width: 2rem; height: 2rem; border-radius: var(--radius-md); display: flex; align-items: center; justify-content: center; color: var(--gray-400); transition: background 0.2s, color 0.2s; flex-shrink: 0; } .remove-btn:hover { background: #fef2f2; color: var(--red); } /* Empty cart state */ .empty-cart { background: white; border: 0.0625rem solid var(--gray-200); border-radius: var(--radius-xl); padding: var(--space-14) var(--space-10); text-align: center; display: none; } .empty-cart.visible { display: block; } .empty-icon { font-size: 4rem; margin-bottom: var(--space-4); opacity: 0.35; } .empty-cart h3 { font-size: var(--text-4xl); font-weight: 800; color: var(--gray-800); margin-bottom: var(--space-2); } .empty-cart p { font-size: var(--text-md); color: var(--gray-400); margin-bottom: var(--space-6); } /* ── CART SUMMARY PANEL ── */ .cart-summary { position: sticky; top: calc(4.125rem + var(--space-4)); display: flex; flex-direction: column; gap: var(--space-4); } .summary-card { background: white; border: 0.0625rem solid var(--gray-200); border-radius: var(--radius-xl); overflow: hidden; } .summary-header { padding: var(--space-5) var(--space-6); border-bottom: 0.0625rem solid var(--gray-100); } .summary-header h2 { font-size: var(--text-3xl); font-weight: 800; color: var(--gray-800); } .summary-body { padding: var(--space-5) var(--space-6); display: flex; flex-direction: column; gap: var(--space-4); } .summary-row { display: flex; align-items: center; justify-content: space-between; font-size: var(--text-md); color: var(--gray-600); } .summary-row .label { font-weight: 500; } .summary-row .value { font-weight: 600; color: var(--gray-800); } .summary-row .value.free { color: var(--teal); font-weight: 700; } .summary-divider { border: none; border-top: 0.0625rem solid var(--gray-100); } .summary-total-row { display: flex; align-items: center; justify-content: space-between; padding: var(--space-5) var(--space-6); border-top: 0.0625rem solid var(--gray-200); background: var(--gray-50); } .summary-total-row .total-label { font-size: var(--text-lg); font-weight: 800; color: var(--gray-800); } .summary-total-row .total-value { font-size: var(--text-deal-price, 1.625rem); font-weight: 900; color: var(--red); } /* Coupon input */ .coupon-card { background: white; border: 0.0625rem solid var(--gray-200); border-radius: var(--radius-xl); padding: var(--space-5) var(--space-6); } .coupon-card h3 { font-size: var(--text-md); font-weight: 700; color: var(--gray-800); margin-bottom: var(--space-3); display: flex; align-items: center; gap: var(--space-2); } .coupon-field { display: flex; gap: var(--space-2); } .coupon-field input { flex: 1; border: 0.0625rem solid var(--gray-200); border-radius: var(--radius-md); padding: var(--space-2) var(--space-3); font-size: var(--text-md); font-family: inherit; color: var(--gray-800); outline: none; transition: border-color 0.2s; } .coupon-field input::placeholder { color: var(--gray-400); } .coupon-field input:focus { border-color: var(--blue); } .coupon-field button { background: var(--blue-light); color: var(--blue); border: none; border-radius: var(--radius-md); padding: var(--space-2) var(--space-4); font-size: var(--text-md); font-weight: 700; cursor: pointer; font-family: inherit; transition: background 0.2s, color 0.2s; white-space: nowrap; } .coupon-field button:hover { background: var(--blue); color: white; } /* CTA buttons */ .btn-checkout { 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-4) var(--space-6); font-size: var(--text-xl); font-weight: 700; cursor: pointer; font-family: inherit; width: 100%; transition: background 0.2s, transform 0.15s; } .btn-checkout:hover { background: var(--blue-dark); transform: translateY(-0.0625rem); } .btn-checkout::after { content: "→"; } .btn-continue { display: flex; align-items: center; justify-content: center; gap: var(--space-2); background: white; color: var(--blue); border: 0.09375rem solid var(--blue); border-radius: var(--radius-md); padding: var(--space-3) var(--space-6); font-size: var(--text-md); font-weight: 600; cursor: pointer; font-family: inherit; width: 100%; transition: background 0.2s, color 0.2s; text-decoration: none; } .btn-continue:hover { background: var(--blue-light); } .btn-continue::before { content: "←"; } .btn-clear { display: flex; align-items: center; justify-content: center; gap: var(--space-2); background: none; color: var(--gray-400); border: none; font-size: var(--text-md); font-weight: 500; cursor: pointer; font-family: inherit; width: 100%; padding: var(--space-2); border-radius: var(--radius-md); transition: color 0.2s, background 0.2s; } .btn-clear:hover { color: var(--red); background: #fef2f2; } /* Trust badges */ .trust-badges { display: flex; flex-direction: column; gap: var(--space-3); padding: var(--space-5) var(--space-6); border-top: 0.0625rem solid var(--gray-100); } .trust-item { display: flex; align-items: center; gap: var(--space-3); font-size: var(--text-md); color: var(--gray-600); } .trust-item .ti-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; } .trust-item .ti-text strong { display: block; font-weight: 700; color: var(--gray-800); font-size: var(--text-md); } .trust-item .ti-text span { font-size: var(--text-sm); color: var(--gray-400); } @media (max-width: 56.25rem) { .cart-layout { grid-template-columns: 1fr !important; } .cart-summary { position: static; width: 100%; } .cart-col-headers { display: none; } .cart-item { grid-template-columns: 1fr; gap: var(--space-4); padding: var(--space-4); } /* Keep price visible */ .cart-item-price { font-size: var(--text-md); font-weight: 600; color: var(--gray-600); } /* Show subtotal but move below */ .cart-item-subtotal { font-size: var(--text-lg); font-weight: 800; color: var(--red); } /* Stack quantity & remove nicely */ .qty-control { margin-top: var(--space-2); } .remove-btn { align-self: flex-end; } } @media (max-width: 30rem) { /* 480px */ .cart-page { padding: var(--space-6) var(--space-4); } .cart-page-title { flex-direction: column; align-items: flex-start; gap: var(--space-2); } .cart-item-info { flex-direction: column; align-items: flex-start; gap: var(--space-2); } .cart-item-img { width: 4rem; height: 4rem; } .qty-control { transform: scale(0.95); } .summary-header h2 { font-size: var(--text-xl); } .summary-total-row .total-value { font-size: var(--text-xl); } }