/*
 * TE Storefront — product page + checkout trust panel.
 * Everything is scoped to .te-pdp / .te-co / .te-idnote so nothing leaks into the
 * rest of the site. Two-class selectors deliberately outrank the Elementor kit's
 * (.elementor-kit-10 button / a / h1) global styles.
 */

.te-pdp,
.te-co,
.te-idnote {
	--te-surface: #151923;
	--te-surface-2: #1b2030;
	--te-line: rgba(255, 255, 255, 0.08);
	--te-line-strong: rgba(255, 255, 255, 0.16);
	--te-text: #feffff;
	--te-soft: rgba(254, 255, 255, 0.86);
	--te-muted: rgba(254, 255, 255, 0.64);
	--te-purple: #852eda;
	--te-purple-2: #a855f7;
	--te-cyan: #2af9e6;
	--te-amber: #fbbf24;
	--te-gold: #fbbf24;
	--te-cta: linear-gradient(135deg, #7c3aed, #a855f7);
	--te-radius: 14px;
}

/*
 * The theme sets overflow-x:hidden on <html> and <body>, which turns <body> into a
 * scroll container and stops the gallery from sticking. `clip` hides horizontal
 * overflow the same way without that side effect. Scoped to product pages.
 */
html:has(.te-pdp),
body:has(.te-pdp) {
	overflow-x: clip;
}

/* Elementor wraps the swapped-in template in a container with default padding. */
.elementor-element.elementor-element-e7f5a01 {
	--padding-top: 0;
	--padding-right: 0;
	--padding-bottom: 0;
	--padding-left: 0;
}

.te-pdp {
	box-sizing: border-box;
	max-width: 1200px;
	margin: 0 auto;
	padding: 8px 16px 104px;
	color: var(--te-text);
	font-size: 16px;
	line-height: 1.5;
}
.te-pdp *,
.te-pdp *::before,
.te-pdp *::after {
	box-sizing: border-box;
}
.te-pdp p {
	margin: 0;
}
.te-pdp a {
	color: var(--te-cyan);
}
.te-ico {
	flex: none;
}

/* ---------- Breadcrumb ---------- */
.te-pdp .te-crumbs {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
	margin: 4px 0 18px;
	font-size: 13px;
	color: var(--te-muted);
}
.te-pdp .te-crumbs a {
	color: var(--te-muted);
	text-decoration: none;
}
.te-pdp .te-crumbs a:hover {
	color: var(--te-text);
}

/* Astra's container already provides the side gutter (20px on phones); don't double it. */
.ast-container .te-pdp {
	padding-left: 0;
	padding-right: 0;
}

/* ---------- Layout ---------- */
.te-pdp__top {
	display: grid;
	grid-template-columns: minmax(0, 1fr); /* without this the column grows to its widest child */
	gap: 28px;
}
.te-pdp__media,
.te-pdp__buy {
	min-width: 0;
}
.te-pdp__buy {
	container-type: inline-size;
}
@media (min-width: 960px) {
	.te-pdp {
		padding-bottom: 72px;
	}
	.te-pdp__top {
		grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr);
		gap: 56px;
		align-items: start;
	}
	.te-pdp__media {
		position: sticky;
		top: 24px;
	}
}

/* ---------- Gallery ---------- */
.te-gallery__track {
	display: flex;
	overflow-x: auto;
	scroll-snap-type: x mandatory;
	scroll-behavior: smooth;
	border-radius: 20px;
	border: 1px solid var(--te-line);
	background:
		radial-gradient(120% 90% at 20% 10%, rgba(133, 46, 218, 0.3), transparent 60%),
		radial-gradient(90% 80% at 100% 100%, rgba(42, 249, 230, 0.12), transparent 60%),
		#121620;
	scrollbar-width: none;
	outline: none;
}
.te-gallery__track::-webkit-scrollbar {
	display: none;
}
.te-gallery__track:focus-visible {
	box-shadow: 0 0 0 2px var(--te-cyan);
}
.te-slide {
	position: relative;
	flex: 0 0 100%;
	min-height: 340px;
	margin: 0;
	scroll-snap-align: start;
	display: flex;
	flex-direction: column;
	justify-content: center;
}
@media (min-width: 960px) {
	.te-slide {
		min-height: 470px;
	}
}
.te-slide--card {
	align-items: center;
	padding: 40px 24px 64px;
}
.te-pdp .te-slide__img {
	display: block;
	width: 84%;
	max-width: 520px;
	height: auto;
	border-radius: 16px;
	filter: drop-shadow(0 28px 36px rgba(0, 0, 0, 0.55));
}
.te-slide__placeholder {
	font-size: 34px;
	font-weight: 700;
	color: var(--te-soft);
}
.te-slide__tag {
	position: absolute;
	left: 16px;
	bottom: 16px;
	padding: 6px 12px;
	border-radius: 999px;
	background: rgba(8, 10, 16, 0.6);
	border: 1px solid var(--te-line);
	backdrop-filter: blur(8px);
	font-size: 13px;
	font-weight: 600;
	color: var(--te-soft);
}
.te-slide--panel {
	padding: 32px 28px;
}
.te-slide__kicker {
	margin: 0 0 18px;
	font-size: 12px;
	font-weight: 700;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--te-cyan);
}
.te-slide--video {
	background: #000;
	justify-content: center;
}

.te-pdp .te-timeline {
	list-style: none;
	margin: 0;
	padding: 0;
}
.te-pdp .te-timeline li {
	position: relative;
	margin: 0;
	padding: 0 0 20px 30px;
}
.te-pdp .te-timeline li:last-child {
	padding-bottom: 0;
}
.te-pdp .te-timeline li::before {
	content: "";
	position: absolute;
	left: 0;
	top: 5px;
	width: 12px;
	height: 12px;
	border-radius: 50%;
	border: 2px solid var(--te-purple-2);
	background: #121620;
}
.te-pdp .te-timeline li::after {
	content: "";
	position: absolute;
	left: 5px;
	top: 21px;
	bottom: 2px;
	width: 2px;
	background: linear-gradient(var(--te-purple-2), rgba(168, 85, 247, 0.15));
}
.te-pdp .te-timeline li:last-child::after {
	display: none;
}
.te-pdp .te-timeline li:first-child::before {
	background: var(--te-purple-2);
}
.te-pdp .te-timeline strong {
	display: block;
	font-size: 17px;
	line-height: 1.35;
}
.te-pdp .te-timeline li > span {
	display: block;
	margin-top: 2px;
	font-size: 14px;
	color: var(--te-muted);
}

.te-pdp .te-glance {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 12px;
	margin: 0;
}
.te-pdp .te-glance > div {
	padding: 16px;
	border-radius: var(--te-radius);
	border: 1px solid var(--te-line);
	background: rgba(255, 255, 255, 0.04);
}
.te-pdp .te-glance dt {
	font-size: 12px;
	font-weight: 700;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	color: var(--te-muted);
}
.te-pdp .te-glance dd {
	margin: 4px 0 0;
	font-size: clamp(20px, 3.4vw, 28px);
	font-weight: 700;
	line-height: 1.15;
}

.te-gallery__thumbs {
	display: flex;
	gap: 10px;
	margin-top: 12px;
}
.te-pdp .te-thumb {
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 3px;
	width: 68px;
	height: 68px;
	overflow: hidden;
	border-radius: 12px;
	border: 1px solid var(--te-line-strong);
	background: var(--te-surface);
	color: var(--te-soft);
	text-decoration: none;
	transition: border-color 0.15s, box-shadow 0.15s;
}
.te-pdp .te-thumb img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}
.te-pdp .te-thumb .te-ico {
	width: 18px;
	height: 18px;
	color: var(--te-cyan);
}
.te-thumb__label {
	font-size: 10.5px;
	font-weight: 700;
	line-height: 1.1;
	text-align: center;
}
.te-pdp .te-thumb.is-active,
.te-pdp .te-thumb:hover {
	border-color: var(--te-purple-2);
	box-shadow: 0 0 0 2px rgba(168, 85, 247, 0.25);
}

/* ---------- Buy box ---------- */
.te-pdp .te-rating {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	font-size: 14px;
	color: var(--te-soft);
	text-decoration: none;
}
.te-pdp .te-rating span {
	color: var(--te-muted);
	text-decoration: underline;
	text-underline-offset: 3px;
	text-decoration-color: rgba(255, 255, 255, 0.25);
}
.te-pdp .te-rating:hover span {
	color: var(--te-text);
}

.te-stars {
	position: relative;
	display: inline-block;
	line-height: 0;
	white-space: nowrap;
}
.te-stars__base {
	color: rgba(255, 255, 255, 0.18);
}
.te-stars__fill {
	position: absolute;
	inset: 0 auto 0 0;
	overflow: hidden;
	color: var(--te-gold);
}
.te-stars svg {
	display: inline-block;
	margin-right: 1px;
}

.te-pdp .te-eyebrow {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 10px;
	margin: 16px 0 8px;
}
.te-eyebrow__bank {
	font-size: 13px;
	font-weight: 700;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: var(--te-cyan);
}
.te-eyebrow__id {
	padding: 2px 9px;
	border: 1px solid var(--te-line-strong);
	border-radius: 999px;
	font-size: 12px;
	color: var(--te-muted);
}

.te-pdp .te-title {
	margin: 0 0 18px;
	font-size: clamp(30px, 4.4vw, 42px);
	font-weight: 700;
	line-height: 1.08;
	letter-spacing: -0.02em;
	color: var(--te-text);
}
.te-pdp .te-title__sub {
	display: block;
	margin-top: 8px;
	font-size: 15px;
	font-weight: 500;
	letter-spacing: 0;
	color: var(--te-muted);
}

.te-pdp .te-benefits {
	list-style: none;
	margin: 0 0 24px;
	padding: 0;
}
.te-pdp .te-benefits li {
	display: flex;
	align-items: flex-start;
	gap: 10px;
	margin: 0 0 10px;
	font-size: 15.5px;
	color: var(--te-soft);
}
.te-pdp .te-benefits .te-ico {
	margin-top: 2px;
	color: var(--te-cyan);
}
.te-pdp .te-benefits strong {
	color: var(--te-text);
}

/* ---------- Reporting-length tiers ---------- */
.te-pdp .te-tiers {
	min-width: 0;
	margin: 0 0 18px;
	padding: 0;
	border: 0;
}
.te-pdp .te-label {
	margin: 0 0 12px;
	padding: 0;
	font-size: 15px;
	font-weight: 700;
	color: var(--te-text);
}
.te-tiers__grid {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 12px 10px;
}
@container (min-width: 470px) {
	.te-tiers__grid {
		grid-template-columns: repeat(4, minmax(0, 1fr));
	}
}
.te-pdp .te-tier {
	position: relative;
	display: block;
	margin: 0;
	cursor: pointer;
}
.te-pdp .te-tier input {
	position: absolute;
	opacity: 0;
	width: 1px;
	height: 1px;
	margin: 0;
	pointer-events: none;
}
.te-tier__card {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 3px;
	height: 100%;
	padding: 20px 8px 14px;
	border: 1.5px solid var(--te-line-strong);
	border-radius: var(--te-radius);
	background: rgba(255, 255, 255, 0.03);
	text-align: center;
	transition: border-color 0.15s, background 0.15s, box-shadow 0.15s;
}
.te-pdp .te-tier:hover .te-tier__card {
	border-color: rgba(168, 85, 247, 0.6);
}
.te-pdp .te-tier input:checked + .te-tier__card {
	border-color: var(--te-purple-2);
	background: linear-gradient(180deg, rgba(133, 46, 218, 0.26), rgba(133, 46, 218, 0.07));
	box-shadow: 0 0 0 3px rgba(168, 85, 247, 0.18);
}
.te-pdp .te-tier input:focus-visible + .te-tier__card {
	outline: 2px solid var(--te-cyan);
	outline-offset: 2px;
}
.te-tier__badge {
	position: absolute;
	top: -10px;
	left: 50%;
	transform: translateX(-50%);
	padding: 3px 9px;
	border-radius: 999px;
	background: var(--te-cyan);
	color: #04121a;
	font-size: 10.5px;
	font-weight: 700;
	letter-spacing: 0.05em;
	text-transform: uppercase;
	white-space: nowrap;
}
.te-tier__len {
	font-size: 24px;
	font-weight: 700;
	line-height: 1.1;
}
.te-tier__len small {
	font-size: 12px;
	font-weight: 700;
	color: var(--te-muted);
}
.te-tier__price {
	font-size: 16px;
	font-weight: 700;
}
.te-tier__price s {
	margin-right: 4px;
	font-size: 12.5px;
	font-weight: 500;
	color: var(--te-muted);
}
.te-tier__per {
	font-size: 12px;
	color: var(--te-muted);
}
.te-tier__save {
	margin-top: 4px;
	padding: 2px 8px;
	border-radius: 999px;
	background: rgba(42, 249, 230, 0.12);
	color: var(--te-cyan);
	font-size: 11.5px;
	font-weight: 700;
}
.te-pdp .te-hint {
	margin-top: 10px;
	font-size: 12.5px;
	color: var(--te-muted);
}
.te-pdp .te-single-price {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	gap: 8px;
	margin-bottom: 16px;
}
.te-pdp .te-single-price strong {
	font-size: 30px;
	font-weight: 700;
}
.te-pdp .te-single-price s,
.te-pdp .te-single-price span {
	color: var(--te-muted);
}

/* ---------- Availability + CTA ---------- */
.te-availability {
	display: grid;
	gap: 8px;
	margin: 0 0 16px;
	font-size: 14px;
}
.te-pdp .te-stock {
	display: flex;
	align-items: center;
	gap: 8px;
	font-weight: 700;
	color: var(--te-cyan);
}
.te-stock__dot {
	position: relative;
	width: 8px;
	height: 8px;
	border-radius: 50%;
	background: currentColor;
}
.te-stock__dot::after {
	content: "";
	position: absolute;
	inset: 0;
	border-radius: 50%;
	border: 2px solid currentColor;
	animation: te-pulse 2s ease-out infinite;
}
.te-pdp .te-stock.is-low {
	color: var(--te-amber);
}
@keyframes te-pulse {
	0% { transform: scale(1); opacity: 0.7; }
	80%, 100% { transform: scale(2.6); opacity: 0; }
}
.te-pdp .te-deadline {
	display: flex;
	align-items: flex-start;
	gap: 8px;
	color: var(--te-soft);
}
.te-pdp .te-deadline .te-ico {
	width: 18px;
	height: 18px;
	margin-top: 1px;
	color: var(--te-muted);
}

.te-pdp .te-atc,
.te-sticky .te-sticky__btn {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 12px;
	width: 100%;
	min-height: 58px;
	margin: 0;
	padding: 0 24px;
	border: 0;
	border-radius: var(--te-radius);
	background: var(--te-cta);
	box-shadow: 0 12px 30px rgba(124, 58, 237, 0.42);
	color: #fff;
	font: inherit;
	font-size: 17px;
	font-weight: 700;
	letter-spacing: 0.01em;
	line-height: 1.2;
	text-decoration: none;
	text-transform: none;
	cursor: pointer;
	transition: transform 0.15s, filter 0.15s, opacity 0.15s;
}
.te-pdp .te-atc:hover,
.te-sticky .te-sticky__btn:hover {
	filter: brightness(1.08);
	transform: translateY(-1px);
	color: #fff;
}
.te-pdp .te-atc:focus-visible,
.te-sticky .te-sticky__btn:focus-visible {
	outline: 2px solid var(--te-cyan);
	outline-offset: 3px;
}
.te-pdp .te-atc[aria-busy="true"] {
	opacity: 0.75;
	cursor: progress;
	transform: none;
}
.te-atc__price {
	padding-left: 12px;
	border-left: 1px solid rgba(255, 255, 255, 0.35);
}
.te-pdp .te-atc .te-ico {
	width: 18px;
	height: 18px;
}
.te-pdp .te-atc__msg {
	margin-top: 10px;
	font-size: 14px;
	font-weight: 600;
}
.te-pdp .te-atc__msg.is-ok {
	color: var(--te-cyan);
}
.te-pdp .te-atc__msg.is-error {
	color: #fca5a5;
}
.te-pdp .te-atc__msg a {
	margin-left: 6px;
	color: inherit;
}

.te-pdp .te-secure,
.te-co .te-secure {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: center;
	gap: 8px 14px;
	margin-top: 14px;
	font-size: 13px;
	color: var(--te-muted);
}
.te-secure__text {
	display: inline-flex;
	align-items: center;
	gap: 6px;
}
.te-secure__text .te-ico {
	width: 15px;
	height: 15px;
}
.te-marks {
	display: inline-flex;
	gap: 6px;
}
.te-marks img {
	display: block;
	width: auto;
	height: 22px;
	border-radius: 4px;
}

/* ---------- Checkout documents, guarantee, founder ---------- */
.te-pdp .te-docs {
	margin-top: 18px;
	border: 1px solid var(--te-line);
	border-radius: 12px;
	background: rgba(255, 255, 255, 0.025);
}
.te-pdp .te-docs summary {
	display: flex;
	align-items: center;
	gap: 8px;
	padding: 12px 14px;
	font-size: 14px;
	font-weight: 700;
	cursor: pointer;
	list-style: none;
}
.te-pdp .te-docs summary::-webkit-details-marker {
	display: none;
}
.te-pdp .te-docs summary::after {
	content: "+";
	margin-left: auto;
	font-size: 18px;
	color: var(--te-muted);
}
.te-pdp .te-docs[open] summary::after {
	content: "\2212";
}
.te-pdp .te-docs summary .te-ico {
	width: 17px;
	height: 17px;
	color: var(--te-cyan);
}
.te-pdp .te-docs ul {
	margin: 0 14px 8px 38px;
	padding: 0;
	font-size: 14px;
	color: var(--te-soft);
}
.te-pdp .te-docs p {
	margin: 0 14px 14px;
	font-size: 13px;
	color: var(--te-muted);
}

.te-pdp .te-guarantee,
.te-co .te-co__guarantee {
	display: flex;
	gap: 14px;
	padding: 16px;
	border: 1px solid rgba(42, 249, 230, 0.28);
	border-radius: var(--te-radius);
	background: linear-gradient(135deg, rgba(42, 249, 230, 0.1), rgba(42, 249, 230, 0.02));
	font-size: 14px;
	color: var(--te-soft);
}
.te-pdp .te-guarantee {
	margin-top: 18px;
}
.te-pdp .te-guarantee > .te-ico,
.te-co .te-co__guarantee > .te-ico {
	width: 28px;
	height: 28px;
	color: var(--te-cyan);
}
.te-pdp .te-guarantee p {
	margin-bottom: 6px;
}
.te-pdp .te-guarantee p:last-child {
	margin-bottom: 0;
}
.te-guarantee__title,
.te-co__title {
	font-weight: 700;
	color: var(--te-text);
}
.te-pdp .te-guarantee__fine {
	font-size: 12.5px;
	color: var(--te-muted);
}

.te-pdp .te-founder {
	display: flex;
	gap: 14px;
	margin-top: 14px;
	padding: 16px;
	border: 1px solid var(--te-line);
	border-radius: var(--te-radius);
	background: var(--te-surface);
}
.te-pdp .te-founder__photo {
	flex: none;
	width: 64px;
	height: 64px;
	border-radius: 50%;
	object-fit: cover;
	border: 2px solid rgba(168, 85, 247, 0.65);
}
.te-pdp .te-founder__note {
	margin-bottom: 8px;
	font-size: 14.5px;
	color: var(--te-soft);
}
.te-pdp .te-founder__name {
	font-size: 13px;
	color: var(--te-muted);
}
.te-pdp .te-founder__name strong {
	color: var(--te-text);
}
.te-pdp .te-founder__phone {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	margin-top: 8px;
	font-size: 13px;
	font-weight: 600;
	text-decoration: none;
}
.te-pdp .te-founder__phone .te-ico {
	width: 15px;
	height: 15px;
}

.te-pdp .te-soldout {
	padding: 20px;
	border: 1px solid var(--te-line-strong);
	border-radius: var(--te-radius);
	background: var(--te-surface);
}
.te-pdp .te-soldout p {
	margin-bottom: 14px;
	color: var(--te-muted);
}
.te-pdp .te-soldout__title {
	font-size: 18px;
	font-weight: 700;
	color: var(--te-text);
}

/* ---------- Sections below the fold ---------- */
.te-pdp .te-section {
	margin-top: 64px;
}
@media (min-width: 960px) {
	.te-pdp .te-section {
		margin-top: 88px;
	}
}
.te-section__head {
	margin-bottom: 20px;
}
.te-pdp .te-h2 {
	margin: 0 0 6px;
	font-size: clamp(24px, 3vw, 32px);
	font-weight: 700;
	line-height: 1.15;
	letter-spacing: -0.02em;
	color: var(--te-text);
}
.te-pdp .te-muted {
	font-size: 14.5px;
	color: var(--te-muted);
}

.te-video {
	position: relative;
	overflow: hidden;
	border-radius: 16px;
	background: #000;
}
.te-video--portrait {
	aspect-ratio: 9 / 16;
}
.te-video--wide {
	aspect-ratio: 16 / 9;
	width: 100%;
	border-radius: 0;
}
.te-video video,
.te-video iframe {
	display: block;
	width: 100%;
	height: 100%;
	border: 0;
	object-fit: cover;
}
.te-video--wide video {
	object-fit: contain;
}

.te-reel {
	display: grid;
	grid-auto-flow: column;
	grid-auto-columns: minmax(190px, 230px);
	gap: 14px;
	overflow-x: auto;
	padding-bottom: 10px;
	scroll-snap-type: x mandatory;
	scrollbar-width: thin;
	scrollbar-color: rgba(255, 255, 255, 0.2) transparent;
}
.te-pdp .te-reel__item {
	margin: 0;
	scroll-snap-align: start;
}
.te-pdp .te-reel__item figcaption {
	display: flex;
	flex-direction: column;
	margin-top: 8px;
	font-size: 14px;
}
.te-pdp .te-reel__item figcaption span {
	font-size: 12.5px;
	color: var(--te-muted);
}

.te-meet {
	display: grid;
	gap: 24px;
	align-items: center;
}
@media (min-width: 760px) {
	.te-meet {
		grid-template-columns: 280px minmax(0, 1fr);
	}
}

.te-reviews {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
	gap: 14px;
}
.te-pdp .te-reviews__summary {
	display: flex;
	flex-direction: column;
	gap: 8px;
	padding: 22px;
	border: 1px solid rgba(168, 85, 247, 0.35);
	border-radius: 16px;
	background: linear-gradient(135deg, rgba(133, 46, 218, 0.22), rgba(133, 46, 218, 0.04));
	color: var(--te-text);
	text-decoration: none;
}
/* Until review quotes are added in config, show the rating as one banner, not a lone card. */
.te-reviews:not(:has(.te-review)) {
	display: block;
	max-width: 900px;
}
.te-pdp .te-reviews:not(:has(.te-review)) .te-reviews__summary {
	flex-direction: row;
	flex-wrap: wrap;
	align-items: center;
	gap: 10px 16px;
}
.te-reviews:not(:has(.te-review)) .te-reviews__link {
	margin: 0 0 0 auto;
}
.te-reviews__score {
	font-size: 52px;
	font-weight: 700;
	line-height: 1;
}
.te-reviews__summary .te-stars svg {
	width: 22px;
	height: 22px;
}
.te-reviews__count {
	color: var(--te-muted);
}
.te-reviews__link {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	margin-top: 6px;
	font-weight: 700;
	color: var(--te-cyan);
}
.te-reviews__link .te-ico {
	width: 16px;
	height: 16px;
}
.te-pdp .te-review,
.te-co .te-review {
	margin: 0;
	padding: 20px;
	border: 1px solid var(--te-line);
	border-radius: 16px;
	background: var(--te-surface);
}
.te-review blockquote {
	margin: 10px 0 12px;
	padding: 0;
	border: 0;
	font-style: normal;
}
.te-review blockquote p {
	margin: 0;
	font-size: 15px;
	line-height: 1.55;
	color: var(--te-soft);
}
.te-review figcaption {
	display: flex;
	flex-wrap: wrap;
	gap: 4px 8px;
	font-size: 13px;
	color: var(--te-text);
}
.te-review figcaption span {
	color: var(--te-muted);
}
.te-pdp .te-review figcaption a,
.te-co .te-review figcaption a {
	color: var(--te-muted);
	text-decoration: underline;
	text-underline-offset: 3px;
	text-decoration-color: rgba(255, 255, 255, 0.25);
}
.te-pdp .te-review figcaption a:hover,
.te-co .te-review figcaption a:hover {
	color: var(--te-text);
}

/* ---------- FAQ / details ---------- */
.te-pdp .te-faq {
	max-width: 900px;
}
.te-pdp .te-acc {
	border-bottom: 1px solid var(--te-line);
}
.te-pdp .te-acc:first-of-type {
	border-top: 1px solid var(--te-line);
}
.te-pdp .te-acc summary {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
	padding: 18px 0;
	font-size: 17px;
	font-weight: 700;
	cursor: pointer;
	list-style: none;
}
.te-pdp .te-acc summary::-webkit-details-marker {
	display: none;
}
.te-pdp .te-acc summary::after {
	content: "+";
	flex: none;
	width: 28px;
	height: 28px;
	border-radius: 50%;
	border: 1px solid var(--te-line-strong);
	font-size: 18px;
	line-height: 26px;
	text-align: center;
	color: var(--te-muted);
}
.te-pdp .te-acc[open] summary::after {
	content: "\2212";
}
.te-acc__body {
	padding: 0 0 22px;
	font-size: 15px;
	line-height: 1.65;
	color: var(--te-soft);
}
.te-pdp .te-acc__body p + p {
	margin-top: 10px;
}
.te-pdp .te-steps {
	margin: 0;
	padding: 0;
	list-style: none;
	counter-reset: te-step;
}
.te-pdp .te-steps li {
	position: relative;
	margin: 0 0 14px;
	padding-left: 42px;
	counter-increment: te-step;
}
.te-pdp .te-steps li::before {
	content: counter(te-step);
	position: absolute;
	left: 0;
	top: 0;
	width: 28px;
	height: 28px;
	border-radius: 50%;
	background: rgba(133, 46, 218, 0.3);
	border: 1px solid var(--te-purple-2);
	font-size: 13px;
	font-weight: 700;
	line-height: 26px;
	text-align: center;
	color: var(--te-text);
}
.te-pdp .te-steps strong {
	color: var(--te-text);
}
.te-pdp .te-spec {
	width: 100%;
	margin: 0;
	border-collapse: collapse;
	border: 0;
}
.te-pdp .te-spec th,
.te-pdp .te-spec td {
	padding: 10px 0;
	border: 0;
	border-bottom: 1px solid var(--te-line);
	background: none;
	text-align: left;
	vertical-align: top;
}
.te-pdp .te-spec th {
	width: 42%;
	padding-right: 12px;
	font-weight: 600;
	color: var(--te-muted);
}
.te-pdp .te-spec td {
	color: var(--te-text);
}
.te-prose h2,
.te-prose h3 {
	margin: 22px 0 8px;
	font-size: 18px;
	font-weight: 700;
	color: var(--te-text);
}
.te-prose p {
	margin: 0 0 12px;
}

/* ---------- Mobile sticky add-to-cart ---------- */
.te-sticky {
	position: fixed;
	left: 0;
	right: 0;
	bottom: 0;
	z-index: 99990; /* under the theme's floating cart button (99998) */
	display: flex;
	align-items: center;
	gap: 14px;
	padding: 12px 16px calc(12px + env(safe-area-inset-bottom));
	border-top: 1px solid rgba(255, 255, 255, 0.1);
	background: rgba(15, 17, 22, 0.94);
	backdrop-filter: blur(12px);
	transform: translateY(110%);
	transition: transform 0.25s ease;
}
.te-sticky.is-visible {
	transform: none;
}
.te-sticky__info {
	display: flex;
	flex-direction: column;
	line-height: 1.2;
	white-space: nowrap;
}
.te-sticky__info span {
	font-size: 12px;
	color: rgba(254, 255, 255, 0.64);
}
.te-sticky__info strong {
	font-size: 19px;
	font-weight: 700;
	color: #feffff;
}
.te-sticky .te-sticky__btn {
	flex: 1;
	min-height: 50px;
	font-size: 16px;
	box-shadow: none;
}
@media (min-width: 960px) {
	.te-sticky {
		display: none;
	}
}
/* Lift the floating mini-cart button above the sticky bar while it's showing. */
body.te-sticky-on #te-cart-toggle {
	bottom: calc(92px + env(safe-area-inset-bottom));
}
/* The theme's floating mini-cart (62px, fixed) sat on top of the product title
 * on phones. Hide it while the cart is empty (nothing to open; the theme puts
 * .has-items on the count, server-side and on every fragment refresh) and make
 * it smaller once there is something in it. */
@media (max-width: 959px) {
	body:not(:has(#te-cart-toggle .te-cart-count.has-items)) #te-cart-toggle {
		display: none;
	}
	body #te-cart-toggle {
		right: 12px;
		bottom: calc(12px + env(safe-area-inset-bottom));
		width: 48px;
		height: 48px;
	}
	body #te-cart-toggle svg {
		width: 22px;
		height: 22px;
	}
}
/* Checkout already shows the order summary. */
body.woocommerce-checkout #te-cart-toggle {
	display: none;
}

/* ---------- Checkout ---------- */
.te-co {
	display: grid;
	gap: 12px;
	margin-top: 18px;
	font-size: 14px;
	line-height: 1.5;
	color: var(--te-soft);
}
.te-co p {
	margin: 0;
}
.te-co a {
	color: var(--te-cyan);
}
.te-co .te-co__points {
	margin: 0;
	padding: 14px 16px;
	list-style: none;
	border: 1px solid var(--te-line);
	border-radius: 12px;
	background: rgba(255, 255, 255, 0.025);
}
.te-co .te-co__points li {
	display: flex;
	align-items: flex-start;
	gap: 10px;
	margin: 0 0 10px;
}
.te-co .te-co__points li:last-child {
	margin-bottom: 0;
}
.te-co .te-co__points .te-ico {
	width: 18px;
	height: 18px;
	margin-top: 1px;
	color: var(--te-cyan);
}
.te-co .te-co__points .te-stars {
	margin-top: 3px;
}
.te-co .te-co__points .te-stars svg {
	width: 13px;
	height: 13px;
}
.te-co .te-co__points strong {
	color: var(--te-text);
}
.te-co .te-review--compact {
	padding: 14px 16px;
}
.te-co .te-review--compact blockquote p {
	font-size: 14px;
}
.te-co .te-co__help {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 6px;
	font-size: 13px;
	color: var(--te-muted);
}
.te-co .te-co__help .te-ico {
	width: 15px;
	height: 15px;
}

.te-idnote {
	display: flex;
	gap: 12px;
	margin: 6px 0 18px;
	padding: 14px 16px;
	border: 1px solid rgba(42, 249, 230, 0.25);
	border-radius: 12px;
	background: rgba(42, 249, 230, 0.06);
	font-size: 13.5px;
	line-height: 1.5;
	color: var(--te-soft);
}
.te-idnote .te-ico {
	width: 18px;
	height: 18px;
	margin-top: 2px;
	color: var(--te-cyan);
}
.te-idnote p {
	margin: 0;
}
.te-idnote__title {
	margin-bottom: 3px !important;
	font-weight: 700;
	color: var(--te-text);
}

@media (prefers-reduced-motion: reduce) {
	.te-pdp *,
	.te-sticky {
		animation: none !important;
		transition: none !important;
		scroll-behavior: auto !important;
	}
}

/* ================================================================ checkout ==
 * One step per page (see includes/checkout-flow.php). Mobile-first.
 * The identity form copies the TE Console's authorized-user form: the same
 * grid ratios, uppercase section titles over a hairline, helper line under
 * each field. Colours are the site's dark theme rather than the console's
 * light one.
 */
.woocommerce-checkout .entry-title { text-align: center; }
.te-co-flow {
	--te-c-line: rgba(255,255,255,.16);
	--te-c-muted: #9aa0ae;
	--te-c-accent: var(--te-accent, #a855f7);
	--te-c-field: rgba(255,255,255,.04);
	max-width: 720px; margin: 0 auto; padding: 0 16px 8px;
}

/* -- progress: numbered dots joined by a line -- */
.te-progress {
	display: flex; justify-content: space-between; list-style: none;
	max-width: 520px; margin: 4px auto 22px; padding: 0; counter-reset: none;
}
.te-progress__step {
	position: relative; flex: 1; display: flex; flex-direction: column; align-items: center; gap: 8px;
	font-size: 13px; color: var(--te-c-muted); text-align: center;
}
/* connector to the previous dot */
.te-progress__step + .te-progress__step::before {
	content: ""; position: absolute; top: 15px; right: 50%; width: 100%; height: 2px;
	background: var(--te-c-line); z-index: 0;
}
.te-progress__step.is-done + .te-progress__step::before,
.te-progress__step.is-done + .te-progress__step.is-current::before { background: var(--te-c-accent); }
.te-progress__dot {
	position: relative; z-index: 1;
	display: grid; place-items: center; width: 32px; height: 32px; border-radius: 50%;
	font-weight: 700; font-size: 14px; text-decoration: none;
	background: #11131a; border: 2px solid var(--te-c-line); color: var(--te-c-muted);
}
.te-progress__step.is-done .te-progress__dot { background: var(--te-c-accent); border-color: var(--te-c-accent); color: #fff; }
.te-progress__step.is-current .te-progress__dot { border-color: var(--te-c-accent); color: #fff; box-shadow: 0 0 0 4px rgba(168,85,247,.18); }
.te-progress__step.is-current .te-progress__label { color: inherit; font-weight: 700; }
a.te-progress__dot:hover { filter: brightness(1.1); }

.te-co-flow__who { text-align: center; font-size: 14px; color: var(--te-c-muted); margin: 0 0 22px; }
.te-linkbtn { color: var(--te-c-accent); padding-left: 8px; text-decoration: underline; }

/* -- the "who is this for" gate -- */
.te-gate__title { font-size: 26px; line-height: 1.2; margin: 8px 0 6px; }
.te-gate__hint  { color: var(--te-c-muted); margin: 0 0 22px; }
.te-gate__cards { display: grid; gap: 14px; }
.te-gate__card {
	display: grid; grid-template-columns: auto 1fr auto; align-items: center; column-gap: 14px;
	width: 100%; min-height: 96px; padding: 18px; text-align: left; cursor: pointer;
	border-radius: 14px; font: inherit;
}
.te-gate__icon { grid-row: span 2; opacity: .85; }
.te-gate__label { font-weight: 700; font-size: 17px; }
.te-gate__blurb { grid-column: 2; font-size: 14px; opacity: .8; }
.te-gate__go { grid-row: span 2; opacity: .6; }

/* -- step headings -- */
.te-step__title { font-size: 22px; margin: 0 0 4px; }
.te-step__hint  { color: var(--te-c-muted); font-size: 14px; margin: 0 0 18px; }
.te-errors {
	list-style: none; margin: 0 0 16px; padding: 12px 14px; border-radius: 10px; font-size: 14px;
	background: rgba(248,113,113,.10); border: 1px solid rgba(248,113,113,.35);
}
.te-errors li + li { margin-top: 4px; }

/* -- console-style form -- */
/* Scoped: the product page uses .te-section for whole sections, and this
 * unscoped rule made its review text 11px uppercase. */
.te-co-flow .te-section {
	margin: 22px 0 12px; padding-bottom: 6px;
	font-size: 11px; font-weight: 700; letter-spacing: .6px; text-transform: uppercase;
	color: var(--te-c-muted); border-bottom: 1px solid var(--te-c-line);
}
.te-au .te-section:first-of-type { margin-top: 4px; }
.te-grid { display: grid; gap: 12px; margin-bottom: 12px; }
.te-grid--name { grid-template-columns: 1fr 1fr; }                 /* phone: 2 x 2 */
.te-grid--2    { grid-template-columns: 1fr; }
.te-grid--addr { grid-template-columns: 1fr 1fr; }
.te-grid--addr .te-f--state { grid-column: span 2; }
.te-au > .te-f { margin-bottom: 12px; }

.te-f { display: flex; flex-direction: column; gap: 5px; min-width: 0; }
.te-f label { font-size: 13px; font-weight: 600; color: var(--te-c-muted); margin: 0; }
.te-req { color: #f87171; text-decoration: none; border: 0; }
.te-co-flow .te-f input,
.te-co-flow .te-f select {
	width: 100%; box-sizing: border-box; min-height: 44px; margin: 0;
	padding: 9px 12px; border-radius: 8px; font: inherit; font-size: 15px;
	background: var(--te-c-field); color: inherit;
	border: 1px solid var(--te-c-line); box-shadow: none;
	transition: border-color .15s ease, background .15s ease;
}
.te-co-flow .te-f input::placeholder { color: rgba(255,255,255,.32); }
.te-co-flow .te-f input:focus,
.te-co-flow .te-f select:focus { outline: none; border-color: var(--te-c-accent); background: rgba(168,85,247,.06); }
.te-co-flow .te-f select option { color: #111; }
.te-f--mi input, .te-f--state select { text-align: center; }
.te-f--mi input { text-transform: uppercase; }
.te-f small { font-size: 12px; color: var(--te-c-muted); }
.te-f small.is-good { color: #4ade80; }
.te-f.has-error input, .te-f.has-error select { border-color: #f87171; }
.te-f__err { color: #fca5a5 !important; }

.te-btn--next { width: 100%; min-height: 52px; margin-top: 12px; font-size: 16px; }

/* -- qualifying questions -- */
.te-q { padding: 16px 0; border-bottom: 1px solid var(--te-c-line); }
.te-q:last-of-type { border-bottom: 0; }
.te-q__label   { font-weight: 600; margin: 0 0 12px; }
.te-q__choices { display: flex; gap: 10px; }
.te-q__choice  { flex: 1; position: relative; }
.te-q__choice input { position: absolute; opacity: 0; pointer-events: none; }
.te-q__choice span {
	display: grid; place-items: center; min-height: 48px; cursor: pointer;
	border: 1px solid var(--te-c-line); border-radius: 10px;
}
.te-q__choice input:checked + span { border-color: var(--te-c-accent); background: rgba(168,85,247,.12); font-weight: 600; }
.te-q__choice input:focus-visible + span { outline: 2px solid var(--te-c-accent); outline-offset: 2px; }
.te-q.has-error .te-q__choices span { border-color: #f87171; }
.te-q__consequence { margin-top: 14px; padding: 14px; border-radius: 10px; font-size: 14px; }
.te-q__consequence p { margin: 0 0 10px; }
.te-q__consequence p:last-child { margin-bottom: 0; }
.te-q__consequence--warn  { background: rgba(250,204,21,.10); border: 1px solid rgba(250,204,21,.35); }
.te-q__consequence--block { background: rgba(248,113,113,.10); border: 1px solid rgba(248,113,113,.35); }
.te-q__ack { display: flex; gap: 10px; align-items: flex-start; cursor: pointer; }
.te-q__actions { display: flex; flex-wrap: wrap; gap: 10px; }

/* -- identity documents -- */
.te-uploads__why {
	display: flex; gap: 12px; padding: 16px; margin-bottom: 20px;
	background: rgba(34,197,94,.07); border: 1px solid rgba(34,197,94,.28); border-radius: 12px;
}
.te-uploads__title { font-weight: 700; margin: 0 0 8px; }
.te-uploads__why ul { margin: 0; padding-left: 18px; font-size: 14px; }
.te-uploads__why li { margin-bottom: 6px; }
.te-uploads__retention { margin: 12px 0 0; font-size: 14px; }
.te-field--file { display: flex; flex-direction: column; gap: 6px; margin: 0 0 16px; }
.te-field--file label { font-weight: 600; }
.te-field__done { color: #4ade80; font-size: 13px; }
.te-field__err  { color: #fca5a5; font-size: 13px; }

/* login / coupon prompts, moved below the step */
.te-co-flow ~ .woocommerce-form-login-toggle,
.te-co-flow ~ .woocommerce-form-coupon-toggle { max-width: 720px; margin: 28px auto 0; padding: 0 16px; }

@media (min-width: 720px) {
	.te-grid--name { grid-template-columns: 2.2fr .8fr 2.2fr 1fr; }  /* the console's ratios */
	.te-grid--2    { grid-template-columns: 1fr 1fr; }
	.te-grid--addr { grid-template-columns: 1.2fr 2fr .9fr; }
	.te-grid--addr .te-f--state { grid-column: auto; }
	.te-gate__cards { grid-template-columns: 1fr 1fr; }
	.te-btn--next { width: auto; min-width: 220px; }
}

/* ---- 0.5.0: theme bleed, apartment field, documents, review & pay ---------
 * Astra styles `.entry-content ol` with margin-left:3em and gives <button> a
 * purple pill. Both leaked into the progress bar (it sat off-centre, and a
 * done step would render as a pill), so reset them at higher specificity.
 */
.entry-content .te-co-flow ol.te-progress,
.te-co-flow ol.te-progress { margin: 4px auto 22px; padding: 0; }
.te-co-flow .te-progress__step { margin: 0; }
.te-co-flow button.te-progress__dot {
	all: unset; box-sizing: border-box; cursor: pointer;
	position: relative; z-index: 1; display: grid; place-items: center;
	width: 32px; height: 32px; border-radius: 50%;
	font-weight: 700; font-size: 14px; line-height: 1;
	background: var(--te-c-accent); border: 2px solid var(--te-c-accent); color: #fff;
}
.te-co-flow button.te-progress__dot:focus-visible { outline: 2px solid #fff; outline-offset: 2px; }

.te-grid--street { grid-template-columns: 1fr; }

/* -- documents -- */
.te-trust {
	list-style: none; margin: 4px 0 28px; padding: 6px 18px; display: grid;
	border: 1px solid rgba(74,222,128,.25); border-radius: 14px; background: rgba(74,222,128,.05);
	font-size: 14px; line-height: 1.5;
}
.te-trust li { display: flex; gap: 12px; align-items: flex-start; margin: 0; padding: 12px 0; }
.te-trust li + li { border-top: 1px solid rgba(255,255,255,.07); }
.te-trust .te-ico { flex: 0 0 20px; width: 20px; height: 20px; margin-top: 1px; color: #4ade80; }
.te-doc__note {
	display: flex; gap: 10px; align-items: flex-start; margin: 0 0 12px; padding: 12px 14px;
	border: 1px solid rgba(168,85,247,.32); border-radius: 12px; background: rgba(168,85,247,.08);
	font-size: 13.5px; line-height: 1.5;
}
.te-doc__note .te-ico { flex: 0 0 18px; width: 18px; height: 18px; margin-top: 1px; color: #c084fc; }

.te-docs { display: grid; gap: 14px; margin-bottom: 16px; }
.te-doc__label { font-size: 14px; font-weight: 600; margin: 0 0 8px; }
.te-drop {
	display: flex; align-items: center; gap: 14px; cursor: pointer; margin: 0;
	padding: 14px; min-height: 84px; border-radius: 12px;
	border: 1.5px dashed rgba(255,255,255,.28); background: var(--te-c-field);
	transition: border-color .15s ease, background .15s ease;
}
.te-drop:hover, .te-drop:focus-within { border-color: var(--te-c-accent); background: rgba(168,85,247,.06); }
.te-doc.is-uploaded .te-drop, .te-doc.has-file .te-drop { border-style: solid; border-color: rgba(74,222,128,.55); }
.te-doc.has-error .te-drop { border-color: #f87171; }
.te-drop__input { position: absolute; width: 1px; height: 1px; opacity: 0; overflow: hidden; }
.te-drop__preview {
	flex: 0 0 72px; width: 72px; height: 56px; border-radius: 8px; overflow: hidden;
	display: grid; place-items: center; background: rgba(255,255,255,.06); color: var(--te-c-muted);
}
.te-doc.is-uploaded .te-drop__preview { color: #4ade80; }
.te-drop__preview img { width: 100%; height: 100%; object-fit: cover; display: block; }
.te-drop__text { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.te-drop__text strong { font-size: 15px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.te-drop__text small { font-size: 12px; color: var(--te-c-muted); }

.te-tips { margin: 0 0 14px; font-size: 13px; }
.te-tips__title { font-weight: 600; margin: 0 0 8px; }
.te-tips ul { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: 1fr 1fr; gap: 6px 14px; }
.te-tips li { display: flex; gap: 6px; align-items: center; color: var(--te-c-muted); }
.te-tips .te-ico { width: 14px; height: 14px; color: #4ade80; flex: 0 0 14px; }

.te-why { margin: 0 0 16px; font-size: 14px; border-top: 1px solid var(--te-c-line); padding-top: 10px; }
.te-why summary { cursor: pointer; font-weight: 600; color: var(--te-c-muted); }
.te-why ul { margin: 10px 0 0; padding-left: 18px; }
.te-why li { margin-bottom: 6px; }

.te-warn {
	display: flex; gap: 10px; align-items: flex-start; margin: 0 0 4px; padding: 12px 14px;
	border-radius: 10px; font-size: 14px;
	background: rgba(250,204,21,.08); border: 1px solid rgba(250,204,21,.35);
}
.te-warn .te-ico { flex: 0 0 18px; width: 18px; height: 18px; color: #facc15; margin-top: 1px; }

/* -- review & pay -- */
.te-co-flow[data-te-step="payment"], .te-co-flow[data-te-step="review"] { max-width: 1040px; }
.te-pay { display: flex; flex-direction: column-reverse; gap: 20px; }  /* phone: summary first */
.te-card {
	border: 1px solid var(--te-c-line); border-radius: 14px; background: rgba(255,255,255,.03);
	padding: 18px; margin: 0 0 16px;
}
.te-card__title { display: flex; align-items: center; gap: 8px; font-size: 16px; margin: 0 0 14px; }
.te-card__title .te-ico { width: 18px; height: 18px; color: var(--te-c-muted); }

.te-recap { padding: 4px 18px; }
.te-recap__row { display: flex; justify-content: space-between; gap: 16px; padding: 14px 0; border-bottom: 1px solid var(--te-c-line); }
.te-recap__row:last-child { border-bottom: 0; }
.te-recap p { margin: 0; }
.te-recap__k { font-size: 11px; font-weight: 700; letter-spacing: .6px; text-transform: uppercase; color: var(--te-c-muted); margin-bottom: 4px !important; }
.te-recap__v { font-weight: 700; }
.te-recap__s { font-size: 14px; color: var(--te-c-muted); }
.te-recap__s .te-ico { width: 14px; height: 14px; color: #4ade80; vertical-align: -2px; }
.te-recap__edit { align-self: flex-start; font-size: 14px; color: var(--te-c-accent); }

/* WooCommerce's review block: undo the theme's narrow bordered column */
.te-pay #order_review,
.woocommerce-checkout .te-pay #order_review {
	float: none; width: 100%; max-width: none; margin: 0; padding: 0; border: 0; background: none;
}
.te-pay #payment, .te-pay #payment .payment_methods, .te-pay #payment div.payment_box { background: transparent; border: 0; }
.te-pay #payment .place-order { padding: 0; margin-top: 16px; }
.te-pay #place_order { width: 100%; min-height: 54px; font-size: 17px; float: none; }
.te-pay .woocommerce-privacy-policy-text { font-size: 12px; color: var(--te-c-muted); }

.te-summary table.shop_table { width: 100%; border: 0; margin: 0; border-collapse: collapse; }
.te-summary table.shop_table thead { display: none; }
.te-summary table.shop_table tr, .te-summary table.shop_table td, .te-summary table.shop_table th {
	background: transparent !important; border: 0; padding: 8px 0; font-size: 14px; vertical-align: top;
}
.te-summary table.shop_table td.product-total,
.te-summary table.shop_table tfoot td { text-align: right; white-space: nowrap; }
.te-summary table.shop_table tbody tr { border-bottom: 1px solid var(--te-c-line); }
.te-summary table.shop_table tfoot th { font-weight: 400; color: var(--te-c-muted); }
.te-summary table.shop_table tfoot tr.order-total th,
.te-summary table.shop_table tfoot tr.order-total td { font-size: 18px; font-weight: 700; color: inherit; padding-top: 12px; }
.te-summary .product-name .wc-item-meta, .te-summary .product-name dl { font-size: 13px; color: var(--te-c-muted); margin: 4px 0 0; }

.te-pay__side .te-co { margin: 0; }

@media (min-width: 720px) {
	.te-grid--street { grid-template-columns: 3fr 1fr; }
}
@media (min-width: 900px) {
	.te-pay { display: grid; grid-template-columns: minmax(0, 1fr) 360px; align-items: start; gap: 28px; }
	.te-pay__side { position: sticky; top: 24px; }
}

/* Astra prints `form #order_review:not(.elementor-widget-… #order_review)`: the
 * :not() holding an ID scores as a second ID, so it beat every class-based
 * override above and kept #order_review a 233px bordered column floated right.
 * Three IDs outrank it without resorting to !important. */
#te-pay-form #te-pay-box #order_review {
	float: none; width: 100%; max-width: none; margin: 0; padding: 0; border: 0; background: none;
}
#te-pay-form #te-pay-box #payment { width: 100%; float: none; }
#te-summary table th, #te-summary table td { padding-left: 0; padding-right: 0; }
/* The site's Additional CSS paints #payment div.payment_box solid black with a
 * notch; inside the Payment card that reads as a box in a box. */
#te-pay-form #te-pay-box #payment div.payment_box { background: transparent; padding: 0; margin: 8px 0 0; }
#te-pay-form #te-pay-box #payment div.payment_box::before { display: none; }
#te-pay-form #te-pay-box #payment ul.payment_methods { padding: 0; border: 0; }

/* ---- 0.6.0: pay button in the summary (AliExpress / Temu pattern) -------- */
#te-summary table tfoot tr.order-total th,
#te-summary table tfoot tr.order-total td { font-size: 22px; font-weight: 800; padding-top: 14px; }
#te-summary .product-name dl.variation,
#te-summary .product-name .variation { display: grid; grid-template-columns: auto 1fr; gap: 2px 6px; margin: 6px 0 0; font-size: 12px; }
#te-summary .variation dt, #te-summary .variation dd { margin: 0; color: var(--te-c-muted); font-weight: 400; }
#te-summary .variation dd p { margin: 0; }

.te-summary__pay { display: none; margin-top: 16px; }
.te-paybtn {
	display: flex; align-items: center; justify-content: center; gap: 8px;
	width: 100%; min-height: 56px; font-size: 17px; font-weight: 700; cursor: pointer;
}
.te-paybtn .te-ico { width: 18px; height: 18px; }
.te-summary__terms { margin: 10px 0 12px; font-size: 12px; color: var(--te-c-muted); text-align: center; }
.te-summary__pay .te-marks { display: flex; justify-content: center; flex-wrap: wrap; gap: 6px; }

@media (min-width: 900px) {
	.te-summary__pay { display: block; }
	/* the summary's button replaces this on desktop */
	#te-pay-form #te-pay-box #place_order { display: none !important; }
}
/* The theme's "Please wait up to 10 seconds" line covered wooccm's synchronous
 * upload at Place order; documents now upload on their own step, so it's obsolete
 * here. (Customizer CSS forces it visible for the old checkout, hence !important.) */
#te-pay-form #te-pay-box #please-wait-message { display: none !important; }
/* A theme rule sets table text with !important, so the total needs one too;
 * scoped to our summary card's total row only. */
#te-summary tr.order-total th { font-size: 18px !important; }
#te-summary tr.order-total td,
#te-summary tr.order-total td strong,
#te-summary tr.order-total .amount { font-size: 24px !important; font-weight: 800; }
#te-summary table tbody tr.cart_item { border-bottom: 0; }
/* Phones: summary first, then recap + payment, then the guarantee and reviews.
 * (Previously the whole side column came first, pushing Pay a long scroll down.)
 * display:contents lets the side column's children take part in the ordering. */
@media (max-width: 899px) {
	.te-pay { flex-direction: column; }
	.te-pay__side { display: contents; }
	.te-pay__side #te-summary { order: -1; }
	.te-pay__main { order: 0; }
	.te-pay__side .te-co { order: 1; }
}

/* ================================================================ homepage ==
 * Hero modelled on Taika's mobile hero: trust line, one headline, four chips,
 * the visual, one big button, a quiet second link, all in the first phone
 * screen. Phone: centred stack. Desktop: copy left, visual right.
 */
.te-hero {
	position: relative; overflow: hidden; padding: 28px 16px 34px;
	background:
		radial-gradient(ellipse 70% 55% at 50% 58%, rgba(168,85,247,.28), transparent 70%),
		linear-gradient(180deg, #120d1f 0%, #0d0f16 100%);
	color: #fff; text-align: center;
}
.te-hero__inner { max-width: 1180px; margin: 0 auto; display: grid; gap: 18px; }
.te-hero__proof { display: flex; justify-content: center; align-items: center; flex-wrap: wrap; gap: 8px; margin: 0; font-size: 14px; }
.te-hero__proof .te-stars { color: #facc15; }
.te-hero__proof a { color: inherit; text-decoration: underline; text-underline-offset: 3px; }
.te-hero .te-hero__title {
	margin: 0 auto; max-width: 16ch; color: #fff;
	font-family: "Plus Jakarta Sans", sans-serif; font-size: clamp(30px, 8.4vw, 56px); line-height: 1.08; font-weight: 600; letter-spacing: -.025em;
	text-transform: none;
}
.te-hero__chips {
	list-style: none; margin: 4px auto 0; padding: 0; max-width: 420px;
	display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px;
}
.te-hero__chips li {
	display: flex; align-items: center; justify-content: center; gap: 6px; margin: 0;
	padding: 7px 8px; border-radius: 999px; font-size: 12.5px; font-weight: 600; line-height: 1.2; min-width: 0;
	background: rgba(255,255,255,.07); border: 1px solid rgba(255,255,255,.14);
}
.te-hero__chips .te-ico { flex: 0 0 16px; width: 16px; height: 16px; color: #2dd4bf; }
/* The visual is a transparent cut-out of a person (the original hero image), so
 * no card tilt or frame. On phones it sits between the chips and the button, and
 * its cropped bottom fades out instead of ending in a hard line. */
.te-hero__visual img {
	display: block; margin: 0 auto; width: auto; height: auto; max-width: 100%; max-height: 240px; object-fit: contain;
	-webkit-mask-image: linear-gradient(to bottom, #000 72%, transparent);
	mask-image: linear-gradient(to bottom, #000 72%, transparent);
}
.te-hero__actions { display: flex; flex-direction: column; align-items: center; gap: 12px; }
.te-hero a.te-hero__cta {
	display: inline-flex; align-items: center; justify-content: center; gap: 10px;
	min-height: 56px; padding: 0 34px; border-radius: 999px;
	font-size: 18px; font-weight: 700; color: #fff; text-decoration: none;
	background: linear-gradient(135deg, #7c3aed, #a855f7);
	box-shadow: 0 10px 30px rgba(124,58,237,.45);
	transition: transform .15s ease, box-shadow .15s ease;
}
.te-hero a.te-hero__cta:hover { transform: translateY(-1px); box-shadow: 0 14px 34px rgba(124,58,237,.55); }
.te-hero__cta .te-ico { width: 20px; height: 20px; }
.te-hero a.te-hero__second { color: #fff; font-size: 14px; text-decoration: underline; text-underline-offset: 3px; opacity: .85; }

@media (min-width: 900px) {
	.te-hero { padding: 64px 32px 72px; text-align: left; }
	.te-hero__inner {
		grid-template-columns: 1.1fr .9fr; grid-template-areas: "copy visual" "actions visual";
		align-items: center; column-gap: 48px;
	}
	.te-hero__copy { grid-area: copy; }
	/* stands on the hero's bottom edge, like the original Elementor hero */
	.te-hero__visual { grid-area: visual; align-self: end; margin-bottom: -72px; }
	.te-hero__actions { grid-area: actions; align-items: flex-start; }
	.te-hero__proof { justify-content: flex-start; }
	.te-hero .te-hero__title { margin: 14px 0 0; max-width: 17ch; }
	.te-hero__chips { margin: 22px 0 0; max-width: 460px; }
	.te-hero__chips li { justify-content: flex-start; font-size: 14px; }
	/* the cut-out's bottom edge fades into the shared background (no hard line above the reviews) */
	.te-hero__visual img {
		max-height: 560px;
		-webkit-mask-image: linear-gradient(to bottom, #000 82%, transparent);
		mask-image: linear-gradient(to bottom, #000 82%, transparent);
	}
}

/* Elementor pads every container; the swapped-in hero should sit edge to edge
 * under the header (it left a dark band above the hero). */
.elementor-element.elementor-element-e7f5b01,
.elementor-element.elementor-element-e7f5c01 {
	--padding-top: 0px; --padding-bottom: 0px; --padding-left: 0px; --padding-right: 0px;
	--margin-top: 0px; --margin-bottom: 0px; --gap: 0px; padding: 0; margin: 0;
}
/* Our swapped-in containers carry no Elementor layout settings, so .e-con's
 * display: var(--display) resolves to nothing and they rendered as INLINE boxes
 * (vertical margin/padding ignored). Make them plain blocks. */
.elementor-element.elementor-element-e7f5b01,
.elementor-element.elementor-element-e7f5c01,
.elementor-element.elementor-element-e7f5d01 { display: block; }
.elementor-element.elementor-element-e7f5b01 > .elementor-element,
.elementor-element.elementor-element-e7f5c01 > .elementor-element,
.elementor-element-e7f5b02 .elementor-shortcode,
.elementor-element-e7f5b03 .elementor-shortcode,
.elementor-element-e7f5c02 .elementor-shortcode { width: 100%; margin: 0; }

/* ------------------------------------------- homepage Google reviews ---------
 * Under the hero, styled like the broker page's review carousel: glass cards,
 * amber stars, the review word for word, the reviewer in cyan, round prev/next
 * buttons, a link to every review on Google.
 */
.te-hr { padding: 8px 16px 36px; color: #feffff; }
.te-hr__inner { max-width: 1180px; margin: 0 auto; }
.te-hr__track {
	display: flex; align-items: stretch; gap: 16px; overflow-x: auto; scroll-snap-type: x mandatory;
	padding: 8px 4px 16px; scrollbar-width: none;
}
.te-hr__track::-webkit-scrollbar { display: none; }
.te-hr .te-hr__card {
	flex: 0 0 85%; max-width: 340px; margin: 0; scroll-snap-align: center;
	display: flex; flex-direction: column; padding: 20px 24px;
	background: rgba(13,24,41,.6); border: 1px solid rgba(133,46,218,.3); border-radius: 16px;
	-webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px);
}
.te-hr__stars { margin-bottom: 8px; color: #f59e0b; font-size: 16px; letter-spacing: .1em; line-height: 1; }
.te-hr .te-hr__text { flex: 1; margin: 0 0 12px; padding: 0; border: 0; font-style: normal; }
.te-hr .te-hr__text p { margin: 0; font-size: 14.5px; line-height: 1.55; color: rgba(254,255,255,.85); }
.te-hr__name { font-size: 13px; font-weight: 600; color: #2af9e6; }
.te-hr__nav { display: flex; justify-content: center; gap: 12px; margin-top: 4px; }
.te-hr__nav[hidden] { display: none; }
.te-hr .te-hr__btn {
	width: 40px; height: 40px; margin: 0; padding: 0; border-radius: 50%; cursor: pointer;
	border: 1px solid rgba(133,46,218,.4); background: transparent; color: #feffff; font-size: 20px; line-height: 1;
	transition: border-color .2s, color .2s;
}
.te-hr .te-hr__btn:hover { border-color: #852eda; color: #2af9e6; background: transparent; }
.te-hr .te-hr__btn:disabled { opacity: .35; cursor: default; }
.te-hr .te-hr__link { display: block; margin-top: 12px; text-align: center; font-size: 14px; color: #2af9e6; text-decoration: none; }
.te-hr .te-hr__link:hover { text-decoration: underline; }
@media (min-width: 768px) {
	.te-hr .te-hr__card { flex: 0 0 340px; }
}
/* Homepage: ONE background behind the header, the hero and the review carousel
 * (Drew, 2026-10-08). The container holding both swapped widgets (e7f5b01)
 * carries it; hero and carousel are transparent. On desktop the container is
 * pulled up under the transparent header the way the original Elementor hero
 * was (margin -120px / padding 120px); the header's inner container is z-index
 * 99, so the nav stays on top. Tablet and phone keep the header separate, as
 * the original hero did. Ends on the next section's #0f1116. */
.home .elementor-element.elementor-element-e7f5b01 {
	background:
		radial-gradient(ellipse 60% 40% at 50% 36%, rgba(168,85,247,.28), transparent 70%),
		linear-gradient(180deg, #120d1f 0%, #0d0f16 70%, #0f1116 100%);
}
.home .elementor-element-e7f5b01 .te-hero,
.home .elementor-element-e7f5b03 .te-hr { background: transparent; }
@media (min-width: 1025px) {
	.home .elementor-element.elementor-element-e7f5b01 {
		--margin-top: -120px; --padding-top: 120px; margin-top: -120px; padding-top: 120px;
	}
}
@media (min-width: 900px) {
	.te-hr { padding: 16px 32px 48px; }
}

/* ---------------------------------------------- homepage customer videos ----
 * The broker page's testimonial cards (/tradelines-broker-program/: dark glass
 * card, purple border, 9:16 video, "Tap for Sound" pill, caption with name, role
 * and Instagram) holding every customer video, in a swipeable reel like the
 * product page's. Arrows appear once the script runs (mouse users can't swipe).
 */
.te-hv { padding: 56px 16px 64px; color: #feffff; }
.te-hv__inner { max-width: 1180px; margin: 0 auto; }
.te-hv .te-hv__title {
	margin: 0 auto 10px; max-width: 24ch; text-align: center; color: #feffff;
	font-family: "Plus Jakarta Sans", sans-serif; font-size: clamp(26px, 4.4vw, 38px); line-height: 1.15; font-weight: 600; letter-spacing: -.02em;
	text-transform: none;
}
.te-hv .te-hv__title span { color: #2af9e6; }
.te-hv .te-hv__sub { margin: 0 auto 28px; text-align: center; font-size: 14px; color: rgba(254,255,255,.64); }
.te-hv__reel {
	display: grid; grid-auto-flow: column; grid-auto-columns: min(78vw, 300px); gap: 16px;
	overflow-x: auto; scroll-snap-type: x mandatory; padding: 0 0 12px;
	scrollbar-width: thin; scrollbar-color: rgba(255,255,255,.2) transparent;
}
.te-hv .te-hv__card {
	display: flex; flex-direction: column; margin: 0; scroll-snap-align: start; overflow: hidden;
	background: rgba(13,24,41,.6); border: 1px solid rgba(133,46,218,.3); border-radius: 16px;
}
.te-hv__box { position: relative; }
.te-hv__box video { display: block; width: 100%; aspect-ratio: 9 / 16; object-fit: cover; background: #050c16; }
.te-hv .te-hv__sound {
	position: absolute; left: 50%; bottom: 16px; transform: translateX(-50%);
	margin: 0; padding: 10px 19px; border: 2px solid rgba(254,255,255,.9); border-radius: 999px;
	background: #852eda; color: #feffff; font-size: 14px; font-weight: 600; line-height: 1.2; white-space: nowrap; cursor: pointer;
	box-shadow: 0 4px 20px rgba(5,12,22,.6); transition: transform .2s, background .2s;
}
.te-hv .te-hv__sound:hover { transform: translateX(-50%) scale(1.05); background: #9945e8; }
.te-hv .te-hv__sound[hidden] { display: none; }
.te-hv__caption { display: flex; flex-direction: column; gap: 3px; padding: 14px 16px 16px; font-size: 13.5px; line-height: 1.45; color: rgba(254,255,255,.8); }
.te-hv__caption strong { font-size: 15px; font-weight: 600; color: #feffff; }
.te-hv__role { font-size: 12.5px; color: rgba(254,255,255,.6); }
.te-hv__caption q { margin-top: 8px; font-style: normal; }
.te-hv .te-hv__caption a { margin-top: 6px; color: #2af9e6; text-decoration: none; }
.te-hv .te-hv__caption a:hover { text-decoration: underline; }
.te-hv__nav { display: flex; justify-content: center; gap: 12px; margin-top: 18px; }
.te-hv__nav[hidden] { display: none; }
.te-hv .te-hv__arrow {
	width: 44px; height: 44px; margin: 0; padding: 0; border-radius: 50%; cursor: pointer;
	border: 1px solid rgba(133,46,218,.5); background: rgba(13,24,41,.6); color: #feffff; font-size: 20px; line-height: 1;
}
.te-hv .te-hv__arrow:hover { background: #852eda; }
.te-hv .te-hv__arrow:disabled { opacity: .35; cursor: default; background: rgba(13,24,41,.6); }
@media (min-width: 900px) {
	.te-hv { padding: 80px 32px 88px; }
	.te-hv__reel { grid-auto-columns: 272px; gap: 20px; }
}

/* ------------------------------------------------ tradelines page extras ----
 * Under the inventory table (includes/inventory-page.php): trust strip, How It
 * Works (three cards after the reference Drew sent: a mock visual on top, a
 * bold lead-in sentence under it), reviews and videos (the homepage
 * components), guarantee + founder, FAQ, back-to-table button.
 */
.elementor-element.elementor-element-e7f5d01 {
	--padding-top: 0px; --padding-bottom: 0px; --padding-left: 0px; --padding-right: 0px;
	--margin-top: 0px; --margin-bottom: 0px; --gap: 0px; padding: 0; margin: 0;
}
.elementor-element.elementor-element-e7f5d01 > .elementor-element,
.elementor-element-e7f5d02 .elementor-shortcode { width: 100%; margin: 0; }

.te-tl { color: #feffff; font-family: "Plus Jakarta Sans", sans-serif; }
.te-tl .te-tl-head__title {
	margin: 0 auto 8px; text-align: center; color: #feffff; text-transform: none;
	font-family: "Plus Jakarta Sans", sans-serif; font-size: clamp(24px, 3.6vw, 34px); line-height: 1.18; font-weight: 600; letter-spacing: -.02em;
}
.te-tl-head { padding: 0 16px; }

/* trust strip */
.te-tl .te-tl-trust {
	list-style: none; max-width: 1180px; margin: 28px auto 0; padding: 0 16px;
	display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px;
}
.te-tl-trust li {
	display: flex; align-items: flex-start; gap: 10px; margin: 0; padding: 14px;
	border: 1px solid rgba(255,255,255,.08); border-radius: 14px; background: rgba(255,255,255,.03);
	font-size: 13px; line-height: 1.4; color: rgba(254,255,255,.62);
}
.te-tl-trust li strong { display: block; color: #feffff; font-weight: 600; font-size: 14px; }
.te-tl-trust .te-ico { flex: 0 0 20px; width: 20px; height: 20px; color: #2af9e6; margin-top: 1px; }
.te-tl-trust__stars { flex: 0 0 auto; color: #f59e0b; font-size: 13px; letter-spacing: .05em; margin-top: 2px; }
@media (max-width: 899px) {
	/* two narrow tiles per row: icon above the text so the words get the width */
	.te-tl-trust li { flex-direction: column; gap: 8px; }
}
@media (min-width: 900px) {
	.te-tl .te-tl-trust { grid-template-columns: repeat(4, minmax(0, 1fr)); margin-top: 36px; padding: 0 32px; }
}

/* How It Works */
.te-hiw { padding: 64px 16px 40px; }
.te-hiw__head { max-width: 640px; margin: 0 auto 32px; text-align: center; }
.te-tl .te-hiw__title {
	margin: 0 0 10px; color: #feffff; text-transform: none;
	font-family: "Plus Jakarta Sans", sans-serif; font-size: clamp(30px, 5vw, 46px); line-height: 1.1; font-weight: 600; letter-spacing: -.025em;
}
.te-tl .te-hiw__sub { margin: 0; font-size: 15px; color: rgba(254,255,255,.6); }
.te-tl .te-hiw__grid { list-style: none; max-width: 1080px; margin: 0 auto; padding: 0; display: grid; gap: 16px; }
.te-tl .te-hiw__card {
	margin: 0; padding: 12px 12px 22px; border-radius: 18px;
	border: 1px solid rgba(255,255,255,.07); background: linear-gradient(180deg, #17191f 0%, #111318 100%);
}
.te-hiw__visual {
	position: relative; height: 220px; margin-bottom: 18px; overflow: hidden; border-radius: 12px;
	display: flex; align-items: center; justify-content: center;
	background: radial-gradient(ellipse 80% 70% at 50% 40%, rgba(133,46,218,.22), transparent 70%), #0b0c10;
}
.te-tl .te-hiw__text { margin: 0; padding: 0 8px; font-size: 14.5px; line-height: 1.55; color: rgba(254,255,255,.62); }
.te-hiw__text strong { color: #feffff; font-weight: 600; }
@media (min-width: 860px) {
	.te-tl .te-hiw__grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
	.te-hiw { padding: 96px 32px 56px; }
}

/* mock 1: stacked cards */
.te-mock-card {
	position: absolute; width: 210px; height: 132px; border-radius: 12px; padding: 14px 16px;
	display: flex; flex-direction: column; justify-content: space-between; box-sizing: border-box;
	box-shadow: 0 18px 40px rgba(0,0,0,.55);
}
.te-mock-card--back { transform: translate(-34px, -18px) rotate(-9deg); background: linear-gradient(135deg, #2b2e36, #15171c); border: 1px solid rgba(255,255,255,.08); }
.te-mock-card--front { transform: translate(18px, 14px) rotate(4deg); background: linear-gradient(135deg, #a855f7 0%, #7c3aed 55%, #4c1d95 100%); border: 1px solid rgba(255,255,255,.18); }
.te-mock-card__brand { font-size: 9px; font-weight: 700; letter-spacing: .14em; color: rgba(255,255,255,.75); }
.te-mock-card__chip { width: 28px; height: 20px; border-radius: 4px; background: linear-gradient(135deg, #f5d27a, #c99a3b); }
.te-mock-card__limit { font-size: 20px; font-weight: 700; color: #fff; letter-spacing: .02em; }
.te-mock-card__meta { font-size: 8px; letter-spacing: .12em; color: rgba(255,255,255,.75); }

/* mock 2: order panel */
.te-mock-panel {
	width: 82%; max-width: 270px; padding: 12px 14px; border-radius: 12px; font-size: 11px;
	background: #16181e; border: 1px solid rgba(255,255,255,.1); box-shadow: 0 18px 40px rgba(0,0,0,.5);
}
.te-mock-panel__head { display: flex; justify-content: space-between; align-items: center; font-weight: 600; color: #feffff; padding-bottom: 8px; border-bottom: 1px solid rgba(255,255,255,.08); }
.te-mock-panel__head em { font-style: normal; font-size: 10px; padding: 2px 8px; border-radius: 999px; color: #04121a; background: #4ade80; }
.te-mock-panel__hero { display: flex; align-items: center; gap: 10px; padding: 10px 0; }
.te-mock-panel__hero small { display: block; color: rgba(254,255,255,.55); font-size: 10px; }
.te-mock-panel__hero strong { color: #feffff; font-size: 13px; }
.te-mock-panel__icon { width: 28px; height: 28px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; background: rgba(74,222,128,.15); color: #4ade80; }
.te-mock-panel__icon .te-ico { width: 16px; height: 16px; }
.te-tl .te-mock-panel dl { margin: 0; }
.te-mock-panel dl div { display: flex; justify-content: space-between; padding: 5px 0; border-top: 1px solid rgba(255,255,255,.06); }
.te-tl .te-mock-panel dt { color: rgba(254,255,255,.5); font-weight: 400; margin: 0; }
.te-tl .te-mock-panel dd { color: #feffff; margin: 0; }

/* mock 3: credit report */
.te-mock-report {
	width: 82%; max-width: 270px; padding: 12px 14px; border-radius: 12px; font-size: 11px;
	background: #16181e; border: 1px solid rgba(255,255,255,.1); box-shadow: 0 18px 40px rgba(0,0,0,.5);
}
.te-mock-report__head { font-weight: 600; color: #feffff; margin-bottom: 8px; }
.te-mock-report__bureaus { display: flex; gap: 5px; flex-wrap: wrap; margin-bottom: 10px; }
.te-mock-report__bureaus span { padding: 2px 7px; border-radius: 999px; font-size: 10px; color: #4ade80; background: rgba(74,222,128,.12); }
.te-mock-report__row { display: flex; flex-direction: column; gap: 2px; padding: 8px 0; border-top: 1px solid rgba(255,255,255,.08); }
.te-mock-report__row strong { color: #feffff; font-size: 12px; }
.te-mock-report__row span { color: rgba(254,255,255,.55); }
.te-mock-report__dots { display: flex; gap: 4px; margin: 4px 0 10px; }
.te-mock-report__dots i { width: 12px; height: 12px; border-radius: 3px; background: #22c55e; }
.te-mock-report__btn { padding: 7px; border-radius: 8px; text-align: center; font-weight: 600; color: #0b0c10; background: #e5e7eb; }

/* reviews heading spacing on this page */
.te-tl .te-tl-head { margin-top: 24px; }
.te-tl .te-hr { padding-top: 8px; }

/* guarantee + founder */
.te-tl .te-tl-pair { max-width: 1080px; margin: 0 auto; padding: 24px 16px 8px; display: grid; gap: 16px; }
.te-tl-box {
	padding: 24px; border-radius: 18px; border: 1px solid rgba(133,46,218,.3);
	background: rgba(13,24,41,.6); font-size: 14.5px; line-height: 1.55; color: rgba(254,255,255,.72);
}
.te-tl .te-tl-box p { margin: 0 0 10px; }
.te-tl .te-tl-box__kicker { display: flex; align-items: center; gap: 8px; margin: 0 0 10px; font-size: 12px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: #2af9e6; }
.te-tl-box__kicker .te-ico { width: 18px; height: 18px; }
.te-tl .te-tl-box__lead { font-size: 17px; line-height: 1.45; color: #feffff; }
.te-tl .te-tl-box a { color: #2af9e6; }
.te-tl-box--founder { display: flex; flex-direction: column; gap: 14px; align-items: flex-start; }
@media (min-width: 560px) {
	.te-tl-box--founder { flex-direction: row; gap: 18px; }
}
.te-tl-box--founder img { flex: 0 0 72px; width: 72px; height: 72px; border-radius: 50%; object-fit: cover; border: 2px solid rgba(133,46,218,.6); }
.te-tl .te-tl-box__name { margin: 0; font-size: 13.5px; color: rgba(254,255,255,.62); }
.te-tl-box__name strong { color: #feffff; }
@media (min-width: 860px) {
	.te-tl .te-tl-pair { grid-template-columns: 1fr 1fr; padding: 40px 32px 16px; }
	.te-tl-box--founder img { flex-basis: 96px; width: 96px; height: 96px; }
}

/* FAQ */
.te-tl .te-tl-faq { max-width: 820px; margin: 0 auto; padding: 56px 16px 16px; }
.te-tl .te-tl-faq .te-tl-head__title { margin-bottom: 22px; }
.te-tl-faq__item { border-bottom: 1px solid rgba(255,255,255,.1); }
.te-tl-faq__item:first-of-type { border-top: 1px solid rgba(255,255,255,.1); }
.te-tl-faq__item summary {
	list-style: none; cursor: pointer; display: flex; justify-content: space-between; align-items: center; gap: 16px;
	padding: 18px 2px; font-size: 16px; font-weight: 600; color: #feffff;
}
.te-tl-faq__item summary::-webkit-details-marker { display: none; }
.te-tl-faq__item summary::after { content: "+"; flex: 0 0 auto; font-size: 22px; font-weight: 400; line-height: 1; color: #2af9e6; transition: transform .2s; }
.te-tl-faq__item[open] summary::after { transform: rotate(45deg); }
.te-tl-faq__a { padding: 0 2px 18px; font-size: 15px; line-height: 1.6; color: rgba(254,255,255,.72); }
.te-tl .te-tl-faq__a p { margin: 0; }
.te-tl .te-tl-faq__a a { color: #2af9e6; }

/* back to the table */
.te-tl .te-tl-cta { max-width: 720px; margin: 0 auto; padding: 56px 16px 80px; text-align: center; }
.te-tl .te-tl-cta p { margin: 0 0 22px; color: rgba(254,255,255,.62); font-size: 15px; }
.te-tl a.te-tl-cta__btn {
	display: inline-flex; align-items: center; justify-content: center; gap: 10px;
	min-height: 54px; padding: 0 30px; border-radius: 999px;
	font-size: 17px; font-weight: 700; color: #fff; text-decoration: none;
	background: linear-gradient(135deg, #7c3aed, #a855f7); box-shadow: 0 10px 30px rgba(124,58,237,.45);
}

/* ------------------------------------------------------- cart summary -------
 * "Your tradelines at a glance" at the top of the Cart totals box
 * (includes/cart-summary.php): total limit, average age, count.
 */
.te-cartsum {
	margin: 0 0 20px; padding: 18px 20px; border-radius: 14px;
	border: 1px solid rgba(133,46,218,.4); background: linear-gradient(135deg, rgba(133,46,218,.18), rgba(133,46,218,.04));
	color: #feffff; font-family: "Plus Jakarta Sans", sans-serif;
}
.cart_totals .te-cartsum .te-cartsum__title { margin: 0 0 12px; font-size: 12px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: #2af9e6; }
.cart_totals .te-cartsum .te-cartsum__stats { margin: 0; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; }
.te-cartsum__stats div { min-width: 0; }
.cart_totals .te-cartsum dt { margin: 0 0 2px; font-size: 12.5px; font-weight: 400; color: rgba(254,255,255,.62); }
.cart_totals .te-cartsum dd { margin: 0; font-size: 20px; font-weight: 700; line-height: 1.2; color: #feffff; }
.cart_totals .te-cartsum .te-cartsum__note { margin: 12px 0 0; font-size: 12.5px; color: rgba(254,255,255,.62); }
@media (max-width: 480px) {
	/* rows on phones: label left, value right */
	.cart_totals .te-cartsum .te-cartsum__stats { grid-template-columns: 1fr; gap: 0; }
	.te-cartsum__stats div { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; padding: 8px 0; border-top: 1px solid rgba(255,255,255,.08); }
	.te-cartsum__stats div:first-child { border-top: 0; padding-top: 0; }
	.cart_totals .te-cartsum dt { margin: 0; font-size: 14px; }
	.cart_totals .te-cartsum dd { font-size: 17px; white-space: nowrap; }
}

/* ---------------------------------------------------- order confirmation ----
 * After the Blue Apron confirmation Drew sent: confirmed headline, "what
 * happens next" card + guarantee on the left, order summary on the right
 * (includes/order-received.php, templates/order-received.php).
 */
body.woocommerce-order-received .entry-title,
body.woocommerce-order-received .ast-archive-description { display: none; }
.te-oc { max-width: 1040px; margin: 0 auto; padding: 8px 0 56px; color: #feffff; font-family: "Plus Jakarta Sans", sans-serif; }
.te-oc__head { text-align: center; margin: 0 auto 28px; max-width: 620px; }
.te-oc__badge {
	display: inline-flex; align-items: center; justify-content: center; width: 52px; height: 52px; margin-bottom: 14px;
	border-radius: 50%; background: rgba(74,222,128,.14); color: #4ade80; border: 1px solid rgba(74,222,128,.35);
}
.te-oc__badge .te-ico { width: 26px; height: 26px; }
.te-oc .te-oc__title {
	margin: 0 0 8px; color: #feffff; text-transform: none;
	font-family: "Plus Jakarta Sans", sans-serif; font-size: clamp(28px, 4.4vw, 40px); line-height: 1.12; font-weight: 600; letter-spacing: -.02em;
}
.te-oc .te-oc__sub { margin: 0; font-size: 16px; color: rgba(254,255,255,.66); }
.te-oc__grid { display: grid; gap: 16px; align-items: start; }
.te-oc__main { display: grid; gap: 16px; }
.te-oc__card {
	padding: 22px 22px 24px; border-radius: 16px;
	border: 1px solid rgba(255,255,255,.1); background: #16181e;
}
.te-oc .te-oc__kicker { margin: 0 0 12px; font-size: 12px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: #2af9e6; }

/* what happens next */
.te-oc .te-oc__steps { list-style: none; margin: 0; padding: 0; }
.te-oc__steps li { position: relative; margin: 0; padding: 0 0 18px 30px; }
.te-oc__steps li::before {
	content: ""; position: absolute; left: 4px; top: 5px; width: 12px; height: 12px; border-radius: 50%;
	border: 2px solid #a855f7; background: #16181e; box-sizing: border-box;
}
.te-oc__steps li.is-done::before { background: #a855f7; }
.te-oc__steps li + li::after { content: ""; position: absolute; left: 9px; top: -14px; width: 2px; height: 18px; background: rgba(168,85,247,.45); }
.te-oc__steps li:last-child { padding-bottom: 4px; }
.te-oc__steps strong { display: block; font-size: 15px; font-weight: 600; color: #feffff; }
.te-oc__steps span { display: block; margin-top: 2px; font-size: 14px; line-height: 1.5; color: rgba(254,255,255,.62); }
.te-oc__au { margin-top: 16px; padding-top: 16px; border-top: 1px solid rgba(255,255,255,.08); }
.te-oc .te-oc__au .te-oc__kicker { margin-bottom: 4px; color: rgba(254,255,255,.55); }
.te-oc .te-oc__au-name { margin: 0; font-size: 16px; font-weight: 600; }
.te-oc .te-oc__help { margin: 16px 0 0; padding-top: 16px; border-top: 1px solid rgba(255,255,255,.08); font-size: 14.5px; color: rgba(254,255,255,.66); }
.te-oc .te-oc__help a { color: #2af9e6; font-weight: 600; text-decoration: none; overflow-wrap: anywhere; }
.te-oc .te-oc__help a:hover { text-decoration: underline; }

/* guarantee "promo" card */
.te-oc__promo {
	display: flex; gap: 12px; align-items: flex-start; padding: 16px 18px; border-radius: 16px;
	border: 1px solid rgba(45,212,191,.35); background: rgba(45,212,191,.07); font-size: 14px; line-height: 1.5; color: rgba(254,255,255,.75);
}
.te-oc__promo-icon .te-ico { width: 22px; height: 22px; color: #2dd4bf; }
.te-oc .te-oc__promo p { margin: 0; }
.te-oc .te-oc__promo .te-oc__promo-title { margin-bottom: 2px; font-weight: 600; color: #feffff; }
.te-oc .te-oc__promo a { color: #2af9e6; }

/* order summary */
.te-oc .te-oc__items { list-style: none; margin: 0 0 14px; padding: 0; }
.te-oc__items li { display: flex; gap: 12px; align-items: center; margin: 0; padding: 12px 0; border-top: 1px solid rgba(255,255,255,.08); }
.te-oc__items li:first-child { border-top: 0; padding-top: 0; }
.te-oc__items img { flex: 0 0 56px; width: 56px; height: 56px; border-radius: 10px; object-fit: cover; }
.te-oc__item-text { flex: 1; min-width: 0; }
.te-oc__item-text strong { display: block; font-size: 14.5px; font-weight: 600; line-height: 1.35; color: #feffff; }
.te-oc__item-text span { display: block; margin-top: 2px; font-size: 13px; color: rgba(254,255,255,.6); }
.te-oc__price { flex: 0 0 auto; font-size: 15px; font-weight: 600; }
.te-oc .te-oc__totals { margin: 0; padding-top: 12px; border-top: 1px solid rgba(255,255,255,.12); }
.te-oc__totals div { display: flex; justify-content: space-between; gap: 12px; padding: 5px 0; font-size: 14.5px; }
.te-oc .te-oc__totals dt { margin: 0; font-weight: 400; color: rgba(254,255,255,.66); }
.te-oc .te-oc__totals dd { margin: 0; color: #feffff; }
.te-oc .te-oc__total dt, .te-oc .te-oc__total dd { font-size: 18px; font-weight: 700; color: #feffff; }
.te-oc .te-oc__pay dd { color: rgba(254,255,255,.8); }
.te-oc .te-oc__saved {
	margin: 14px 0 0; padding: 10px 12px; border-radius: 10px; text-align: center; font-size: 14px; font-weight: 600;
	color: #1a1205; background: #fbbf24;
}
@media (min-width: 900px) {
	.te-oc__grid { grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr); gap: 20px; }
	.te-oc { padding-top: 24px; }
}

/* ------------------------------------------------------- limit pop-up -------
 * includes/limits.php + te-storefront.js. Without JS: an open <dialog> inside a
 * fixed overlay, closed by its own form; with JS: showModal() and ::backdrop.
 */
.te-limit:not(.is-modal) {
	position: fixed; inset: 0; z-index: 100000; display: flex; align-items: center; justify-content: center;
	padding: 16px; background: rgba(5,6,10,.72);
}
.te-limit:not(.is-modal):has(dialog:not([open])) { display: none; }
.te-limit .te-limit__dialog {
	/* no position here: a modal dialog centres itself in the top layer */
	width: min(440px, calc(100vw - 32px)); max-height: calc(100vh - 32px); overflow: auto; margin: auto; padding: 28px 24px 22px;
	border: 1px solid rgba(168,85,247,.45); border-radius: 18px; background: #16181e; color: #feffff;
	box-shadow: 0 24px 60px rgba(0,0,0,.6); font-family: "Plus Jakarta Sans", sans-serif; text-align: center;
}
.te-limit:not(.is-modal) .te-limit__dialog { position: static; margin: 0; }
.te-limit__dialog::backdrop { background: rgba(5,6,10,.72); }
.te-limit__icon { display: inline-flex; align-items: center; justify-content: center; width: 48px; height: 48px; margin-bottom: 12px; border-radius: 50%; background: rgba(168,85,247,.15); color: #c084fc; }
.te-limit__icon .te-ico { width: 24px; height: 24px; }
.te-limit .te-limit__title { margin: 0 0 10px; font-size: 20px; line-height: 1.3; font-weight: 600; color: #feffff; text-transform: none; }
.te-limit .te-limit__body { margin: 0 0 20px; font-size: 15px; line-height: 1.55; color: rgba(254,255,255,.72); }
.te-limit__actions { display: flex; gap: 10px; justify-content: center; flex-wrap: wrap; }
.te-limit__actions form { margin: 0; }
.te-limit .te-limit__btn {
	display: inline-flex; align-items: center; justify-content: center; min-height: 46px; min-width: 120px; padding: 0 22px;
	border-radius: 999px; border: 1px solid rgba(255,255,255,.2); background: transparent; color: #feffff;
	font-size: 15px; font-weight: 600; text-decoration: none; cursor: pointer;
}
.te-limit .te-limit__btn--primary { border-color: transparent; background: linear-gradient(135deg, #7c3aed, #a855f7); color: #fff; }

/* -------------------------------------------------- payment loading screen --- */
.te-paying {
	position: fixed; inset: 0; z-index: 99999; display: flex; align-items: center; justify-content: center;
	padding: 16px; background: rgba(5,6,10,.78); -webkit-backdrop-filter: blur(4px); backdrop-filter: blur(4px);
}
.te-paying[hidden] { display: none; }
.te-paying__box {
	display: flex; flex-direction: column; align-items: center; gap: 8px; max-width: 360px; padding: 28px 24px;
	border-radius: 18px; border: 1px solid rgba(168,85,247,.4); background: #16181e; text-align: center; color: #feffff;
	font-family: "Plus Jakarta Sans", sans-serif;
}
.te-paying__box strong { font-size: 18px; font-weight: 600; }
.te-paying__box span:last-child { font-size: 14px; line-height: 1.5; color: rgba(254,255,255,.66); }
.te-paying__spin {
	width: 44px; height: 44px; margin-bottom: 6px; border-radius: 50%;
	border: 4px solid rgba(168,85,247,.25); border-top-color: #a855f7; animation: te-spin .8s linear infinite;
}
@keyframes te-spin { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) {
	.te-paying__spin { animation-duration: 2.4s; }
}
