/* ===== CPGT Cart Page — "Shopping Bag" =====
   Premium black/white theme. Colors used throughout:
   #000 primary black, #111 secondary black/text, #fff white,
   #f7f7f7 light grey, #e5e5e5 borders, #666 secondary text,
   #1a7f37 green (discounts / savings), #2563eb blue (checkout CTA),
   #e53e3e red (discount badges / destructive hover states), #d1345b
   pink (wishlist — matches the shop grid's active heart colour). */

.cpgt-cart-page {
	--cpgt-black: #000000;
	--cpgt-black-2: #111111;
	--cpgt-grey-bg: #f7f7f7;
	--cpgt-border: #e5e5e5;
	--cpgt-text-2: #666666;
	--cpgt-green: #1a7f37;
	--cpgt-blue: #2563eb;
	--cpgt-blue-dark: #1d4ed8;
	--cpgt-red: #e53e3e;
	--cpgt-pink: #d1345b;
	max-width: 1260px;
	margin: 0 auto;
	padding: 0 24px 60px;
	box-sizing: border-box;
	font-family: -apple-system, "Inter", "Helvetica Neue", Arial, sans-serif;
	color: var(--cpgt-black-2);
}
.cpgt-cart-page * { box-sizing: border-box; }
.cpgt-cart-page button { font-family: inherit; }
/* Strip whatever the theme's own global button/input styling does (many
   WooCommerce themes style every <button>/<input type="text"> site-wide),
   so this page's own button/input designs below aren't fighting it. Each
   specific class further down re-applies its own look with !important,
   so it always wins regardless of theme load order. */
.cpgt-cart-page button {
	-webkit-appearance: none !important;
	-moz-appearance: none !important;
	appearance: none !important;
	background: none !important;
	border: none !important;
	border-radius: 0 !important;
	box-shadow: none !important;
	margin: 0 !important;
	padding: 0 !important;
	color: inherit;
	cursor: pointer;
	opacity: 1 !important;
	visibility: visible !important;
	pointer-events: auto !important;
}
.cpgt-cart-page input[type="text"],
.cpgt-cart-page input[type="email"],
.cpgt-cart-page input[type="tel"],
.cpgt-cart-page input[type="number"] {
	-webkit-appearance: none !important;
	-moz-appearance: none !important;
	appearance: none !important;
	box-shadow: none !important;
	font-family: inherit;
}
.cpgt-cart-page a { color: inherit; }
.cpgt-cart-page :focus-visible {
	outline: 2px solid var(--cpgt-black) !important;
	outline-offset: 2px !important;
}
.cpgt-icon { display: inline-block; vertical-align: -3px; }

/* ---------- Header: full-width grey banner, centered text — same
   breakout technique used for the Wishlist page's title banner, so it
   spans edge-to-edge regardless of what column/container it's inside. ---------- */
.cpgt-cart-hero {
	width: 100vw;
	max-width: 100vw;
	position: relative;
	left: 50%;
	right: 50%;
	margin-left: -50vw;
	margin-right: -50vw;
	background: var(--cpgt-grey-bg);
	text-align: center;
	padding: 40px 24px;
	margin-top: 0;
	margin-bottom: 24px;
}
.cpgt-cart-heading {
	font-size: 30px !important;
	font-weight: 700 !important;
	margin: 0 !important;
	color: var(--cpgt-black) !important;
	line-height: 1.15;
}
.cpgt-cart-item-count {
	font-size: 14px;
	color: var(--cpgt-text-2);
	margin: 6px 0 0;
}

/* ---------- Layout ---------- */
.cpgt-cart-body {
	display: grid;
	grid-template-columns: 65% 1fr;
	gap: 28px;
	align-items: start;
}
.cpgt-cart-left { min-width: 0; }
.cpgt-cart-right {
	position: sticky;
	top: 20px;
	display: flex;
	flex-direction: column;
	gap: 20px;
}

.cpgt-cart-page.cpgt-is-loading { opacity: 0.6; pointer-events: none; transition: opacity 0.15s ease; }

/* ---------- Shared panel look ---------- */
.cpgt-cart-panel {
	background: #fff;
	border: 1px solid var(--cpgt-border);
	border-radius: 6px;
	padding: 16px 18px;
}
.cpgt-panel-title {
	font-size: 15px !important;
	font-weight: 700 !important;
	margin: 0 0 12px !important;
	color: var(--cpgt-black) !important;
	background: none !important;
	display: flex;
	align-items: center;
	gap: 8px;
	line-height: 1.3 !important;
}
.cpgt-panel-title-inline { margin-bottom: 4px !important; }

/* ---------- Item cards ---------- */
.cpgt-cart-items { display: flex; flex-direction: column; gap: 14px; margin-bottom: 0; }

.cpgt-cart-item {
	position: relative;
	display: flex;
	align-items: center;
	gap: 14px;
	background: #fff;
	border: 1px solid var(--cpgt-border);
	border-radius: 6px;
	padding: 18px;
}
/* Top-right icon button pair — wishlist (left) and "×" remove (right),
   sitting directly on the card instead of down in a text action row.
   Fixed, equal width/height + !important on every box-model property
   so a theme's own button padding can't turn either into an oval/
   rectangle instead of a true circle. */
.cpgt-cart-item-top-actions {
	position: absolute;
	top: 10px;
	right: 10px;
	display: flex;
	align-items: center;
	gap: 8px;
	z-index: 2;
}
.cpgt-cart-page .cpgt-cart-item-wishlist,
.cpgt-cart-page .cpgt-cart-item-remove {
	display: flex !important;
	align-items: center !important;
	justify-content: center !important;
	width: 28px !important;
	height: 28px !important;
	min-width: 28px !important;
	min-height: 28px !important;
	max-width: 28px !important;
	max-height: 28px !important;
	padding: 0 !important;
	margin: 0 !important;
	box-sizing: border-box !important;
	border-radius: 50% !important;
	background: #fff !important;
	border: 1px solid var(--cpgt-border) !important;
	color: var(--cpgt-text-2) !important;
	cursor: pointer;
	transition: background 0.15s ease, color 0.15s ease, border-color 0.15s ease;
}
.cpgt-cart-page .cpgt-cart-item-wishlist:hover {
	background: var(--cpgt-pink) !important;
	border-color: var(--cpgt-pink) !important;
	color: #fff !important;
}
.cpgt-cart-page .cpgt-cart-item-remove:hover {
	background: var(--cpgt-red) !important;
	border-color: var(--cpgt-red) !important;
	color: #fff !important;
}
.cpgt-cart-item-wishlist .cpgt-icon,
.cpgt-cart-item-remove .cpgt-icon { vertical-align: middle; display: block; }
.cpgt-cart-item-thumb { flex: 0 0 91px; }
.cpgt-cart-item-thumb img {
	width: 91px !important;
	height: 112px !important;
	max-width: 100% !important;
	object-fit: cover !important;
	border-radius: 4px;
	background: var(--cpgt-grey-bg);
	display: block !important;
}

.cpgt-cart-item-body { flex: 1 1 auto; min-width: 0; padding-right: 74px; }
.cpgt-cart-item-head {
	display: flex;
	align-items: flex-start;
	justify-content: space-between;
	gap: 10px;
}
.cpgt-cart-item-name {
	font-size: 12px;
	font-weight: 600;
	margin: 0;
	line-height: 1.35;
	color: var(--cpgt-black);
}
.cpgt-cart-item-name a { text-decoration: none; }
.cpgt-cart-item-name a:hover { text-decoration: underline; }

.cpgt-cart-item-desc {
	font-size: 13px;
	color: var(--cpgt-text-2);
	margin: 6px 0 0;
	line-height: 1.5;
}
.cpgt-cart-item-brand {
	font-size: 13px;
	color: var(--cpgt-text-2);
	margin: 4px 0 0;
}

/* Size/variant + quantity, styled as compact dropdown-look chips */
.cpgt-cart-item-variants {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: 10px;
	margin-top: 10px;
}
.cpgt-variant-chip {
	display: inline-flex;
	align-items: center;
	gap: 4px;
	border: 1px solid var(--cpgt-border);
	border-radius: 5px;
	padding: 6px 10px;
	font-size: 12px;
	color: var(--cpgt-black-2);
	background: #fff;
}
.cpgt-variant-chip dl { margin: 0; }
.cpgt-variant-chip dt,
.cpgt-variant-chip dd,
.cpgt-variant-chip p { display: inline; margin: 0; }
.cpgt-variant-chip dt::after { content: ": "; }
.cpgt-variant-chip dt:not(:first-child)::before { content: "   •   "; color: #ccc; }
.cpgt-variant-chip::after {
	content: "";
	width: 0;
	height: 0;
	border-left: 4px solid transparent;
	border-right: 4px solid transparent;
	border-top: 5px solid var(--cpgt-text-2);
	margin-left: 2px;
}

/* Quantity +/- stepper, replacing the old <select> dropdown. */
.cpgt-qty-stepper {
	display: inline-flex;
	align-items: center;
	border: 1px solid var(--cpgt-border);
	border-radius: 5px;
	overflow: hidden;
	background: #fff;
}
.cpgt-cart-page .cpgt-qty-btn {
	display: flex !important;
	align-items: center !important;
	justify-content: center !important;
	width: 28px !important;
	height: 28px !important;
	min-width: 28px !important;
	padding: 0 !important;
	margin: 0 !important;
	background: #fff !important;
	border: none !important;
	color: var(--cpgt-black-2) !important;
	font-size: 15px;
	font-weight: 700;
	line-height: 1;
	cursor: pointer;
	transition: background 0.15s ease, color 0.15s ease;
}
.cpgt-cart-page .cpgt-qty-btn:hover:not(:disabled) { background: var(--cpgt-grey-bg) !important; }
.cpgt-cart-page .cpgt-qty-btn:disabled { color: #ccc !important; cursor: not-allowed; }
.cpgt-qty-value {
	min-width: 26px;
	text-align: center;
	font-size: 12px;
	font-weight: 700;
	color: var(--cpgt-black-2);
	padding: 0 2px;
}
.cpgt-cart-item-qty-row {
	display: flex;
	align-items: center;
	gap: 10px;
	margin-top: 12px;
}
.cpgt-qty-row-label {
	font-size: 12px;
	font-weight: 600;
	color: var(--cpgt-text-2);
	text-transform: uppercase;
	letter-spacing: 0.03em;
}

.cpgt-cart-item-price {
	display: flex;
	align-items: baseline;
	gap: 8px;
	margin-top: 12px;
}
.cpgt-price-now { font-size: 17px; font-weight: 600; color: var(--cpgt-black); }
.cpgt-price-was { font-size: 13px; color: #999; text-decoration: line-through; }
.cpgt-price-off { font-size: 13px; font-weight: 700; color: var(--cpgt-red); }

.cpgt-not-returnable {
	font-size: 11px;
	color: var(--cpgt-text-2);
	margin: 6px 0 0;
}

.cpgt-text-btn {
	display: inline-flex !important;
	background: none !important;
	border: none !important;
	padding: 0 !important;
	font-size: 12px;
	font-weight: 600;
	letter-spacing: 0.03em;
	text-transform: uppercase;
	color: var(--cpgt-text-2) !important;
	cursor: pointer;
	align-items: center;
	gap: 4px;
}
.cpgt-text-btn:hover { color: var(--cpgt-black) !important; text-decoration: underline; }
.cpgt-text-btn.cpgt-coupon-remove:hover { color: var(--cpgt-red) !important; }
.cpgt-action-sep { color: var(--cpgt-border); font-size: 12px; }

/* ---------- Offers & coupons ---------- */
.cpgt-free-shipping { margin-bottom: 16px; }
.cpgt-free-shipping-text { font-size: 13px; color: var(--cpgt-black-2); margin: 0 0 8px; }
.cpgt-progress-bar { height: 6px; background: var(--cpgt-grey-bg); border-radius: 3px; overflow: hidden; }
.cpgt-progress-fill { height: 100%; background: var(--cpgt-black); border-radius: 3px; transition: width 0.3s ease; }
.cpgt-free-shipping-unlocked p { font-size: 13px; color: var(--cpgt-black-2); margin: 0; display: flex; align-items: center; gap: 6px; }

.cpgt-coupon-panel { margin-top: 0; }
.cpgt-coupon-form { display: flex; flex-wrap: nowrap; gap: 8px; }
.cpgt-coupon-input {
	flex: 1 1 auto;
	min-width: 0;
	border: 1px solid var(--cpgt-border) !important;
	border-radius: 5px !important;
	padding: 9px 12px !important;
	font-size: 13px;
	background: #fff !important;
	color: var(--cpgt-black-2) !important;
	height: 38px !important;
	line-height: normal !important;
}
.cpgt-coupon-input:focus { border-color: var(--cpgt-black) !important; outline: none; }
.cpgt-cart-page .cpgt-btn-primary-sm {
	display: inline-flex !important;
	align-items: center;
	justify-content: center;
	flex: 0 0 auto;
	background: var(--cpgt-black) !important;
	color: #fff !important;
	border: 1px solid var(--cpgt-black) !important;
	border-radius: 5px !important;
	padding: 0 18px !important;
	height: 38px;
	font-size: 12px;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.03em;
	cursor: pointer;
	white-space: nowrap;
	opacity: 1 !important;
	visibility: visible !important;
}
.cpgt-cart-page .cpgt-btn-primary-sm:hover { background: var(--cpgt-black-2) !important; }
.cpgt-cart-page .cpgt-btn-primary-sm:disabled,
.cpgt-cart-page .cpgt-coupon-input:disabled { opacity: 0.4; cursor: not-allowed; }

.cpgt-coupon-message { font-size: 12px; margin-top: 8px; min-height: 0; }
.cpgt-coupon-message:not(:empty) {
	color: var(--cpgt-black-2);
	background: var(--cpgt-grey-bg);
	border: 1px solid var(--cpgt-border);
	border-radius: 4px;
	padding: 8px 10px;
	margin-top: 10px;
}

.cpgt-applied-coupons { margin-top: 0; }
.cpgt-applied-coupon {
	display: flex;
	align-items: center;
	justify-content: space-between;
	background: var(--cpgt-grey-bg);
	border: 1px dashed var(--cpgt-black-2);
	border-radius: 5px;
	padding: 10px 14px;
	font-size: 13px;
}

.cpgt-available-coupons { margin-top: 0; display: flex; flex-direction: column; gap: 10px; }
.cpgt-available-coupon {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	background: var(--cpgt-grey-bg);
	border: 1px dashed #d4d4d4;
	border-radius: 5px;
	padding: 12px 14px;
}
.cpgt-available-coupon-info { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.cpgt-coupon-code { font-size: 13px; letter-spacing: 0.03em; color: var(--cpgt-black); }
.cpgt-coupon-desc { font-size: 12px; color: var(--cpgt-text-2); }
.cpgt-cart-page .cpgt-btn-outline-sm {
	display: inline-block !important;
	flex: 0 0 auto;
	background: #fff !important;
	border: 1px solid var(--cpgt-black) !important;
	color: var(--cpgt-black) !important;
	border-radius: 5px !important;
	padding: 7px 16px !important;
	font-size: 11px;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.03em;
	cursor: pointer;
}
.cpgt-cart-page .cpgt-btn-outline-sm:hover { background: var(--cpgt-black) !important; color: #fff !important; }

/* ---------- Price details ---------- */
.cpgt-price-rows { display: flex; flex-direction: column; }
.cpgt-price-row {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	padding: 10px 0;
	border-bottom: 1px dashed var(--cpgt-border);
}
.cpgt-price-row:first-child { padding-top: 0; }
.cpgt-price-row:last-child { border-bottom: none; padding-bottom: 0; }
.cpgt-price-label { font-size: 13px; color: var(--cpgt-text-2); }
.cpgt-price-value { font-size: 13px; font-weight: 600; color: var(--cpgt-black); }
.cpgt-price-discount { color: var(--cpgt-green); }
.cpgt-free-label { font-weight: 700; color: var(--cpgt-green); text-transform: uppercase; font-size: 11px; letter-spacing: 0.03em; }

.cpgt-price-total {
	display: flex;
	align-items: center;
	justify-content: space-between;
	border-top: 1px solid var(--cpgt-border);
	margin-top: 8px;
	padding-top: 14px;
	font-size: 17px;
	font-weight: 700;
	color: var(--cpgt-black);
}
.cpgt-total-savings {
	font-size: 12px;
	color: var(--cpgt-black-2);
	margin: 10px 0 0;
	display: flex;
	align-items: center;
	gap: 6px;
}

.cpgt-checkout-btn {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	width: 100%;
	background: var(--cpgt-blue);
	color: #fff !important;
	text-decoration: none !important;
	border: none;
	border-radius: 5px;
	height: 52px;
	font-size: 14px;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.04em;
	margin-top: 18px;
	cursor: pointer;
	transition: background 0.15s ease;
}
.cpgt-checkout-btn:hover { background: var(--cpgt-blue-dark); }

.cpgt-trust-panel { margin-top: 18px; padding-top: 16px; border-top: 1px solid var(--cpgt-border); }
.cpgt-trust-lock { font-size: 12px; font-weight: 600; color: var(--cpgt-black-2); display: flex; align-items: center; gap: 6px; margin: 0 0 8px; }
.cpgt-trust-panel ul { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 6px; }
.cpgt-trust-panel li { font-size: 12px; color: var(--cpgt-text-2); display: flex; align-items: center; gap: 6px; }

/* ---------- Empty cart ---------- */
.cpgt-cart-empty {
	text-align: center;
	padding: 70px 20px;
	border: 1px solid var(--cpgt-border);
	border-radius: 6px;
	background: var(--cpgt-grey-bg);
}
.cpgt-empty-icon { color: var(--cpgt-black); margin-bottom: 14px; }
.cpgt-cart-empty h2 { font-size: 20px; font-weight: 700; margin: 0 0 8px; color: var(--cpgt-black); }
.cpgt-cart-empty p { font-size: 14px; color: var(--cpgt-text-2); margin: 0 0 22px; }
.cpgt-continue-shopping-btn { max-width: 260px; margin: 0 auto; }

.cpgt-wc-missing { text-align: center; padding: 60px 20px; color: var(--cpgt-text-2); }

/* ---------- Mobile sticky checkout bar ---------- */
.cpgt-mobile-sticky-checkout {
	display: none;
	position: fixed;
	left: 0;
	right: 0;
	bottom: 0;
	z-index: 999;
	background: #fff;
	border-top: 1px solid var(--cpgt-border);
	padding: 12px 16px;
	align-items: center;
	justify-content: space-between;
	gap: 14px;
	box-shadow: 0 -4px 14px rgba(0, 0, 0, 0.07);
}
.cpgt-mobile-sticky-total { font-size: 13px; color: var(--cpgt-text-2); }
.cpgt-mobile-sticky-total strong { color: var(--cpgt-black); font-size: 15px; }
.cpgt-mobile-sticky-btn {
	background: var(--cpgt-blue);
	color: #fff !important;
	text-decoration: none !important;
	border-radius: 5px;
	padding: 12px 22px;
	font-size: 12px;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.03em;
}

/* ---------- Responsive ---------- */
@media (max-width: 1024px) {
	.cpgt-cart-body { grid-template-columns: 1fr; }
	.cpgt-cart-right { position: static; }
}

@media (max-width: 768px) {
	.cpgt-cart-page { padding: 0 16px 90px; }
	.cpgt-cart-heading { font-size: 26px !important; }
	.cpgt-cart-item { padding: 14px; gap: 12px; }
	.cpgt-cart-item-thumb { flex-basis: 70px; }
	.cpgt-cart-item-thumb img { width: 70px !important; height: 88px !important; }
	.cpgt-cart-item-name { font-size: 10.5px; }
	.cpgt-mobile-sticky-checkout { display: flex; }
}

@media (max-width: 420px) {
	.cpgt-cart-item { flex-wrap: wrap; }
	.cpgt-cart-item-thumb { flex-basis: 63px; }
	.cpgt-cart-item-thumb img { width: 63px !important; height: 78px !important; }
	.cpgt-coupon-form { flex-direction: column; }
	.cpgt-btn-primary-sm { width: 100%; padding: 11px 0; }
}
