/*
 * SmileConnect Checkout — the ONLY stylesheet in this build.
 * ---------------------------------------------------------
 * Loaded on /cart/, /checkout/ and /checkout/order-received/ only, and every
 * selector begins with the single class root `.smileconnect-checkout`, which
 * the component adds to <body> on exactly those screens.
 *
 * Admission 2 of `native-styling.md`: WooCommerce renders the cart table, the
 * billing form, the order-review panel and its notices itself, so no Elementor
 * control reaches inside them. The page band, the boxed width, the headings and
 * the two page hero blocks around this markup are all Elementor CONTROLS
 * (build/90-cart.php, build/95-checkout.php) — nothing below duplicates them.
 *
 * Every rule carries the reason it exists.
 */

/* Tokens, so the component skins itself from one place instead of repeating hexes. */
.smileconnect-checkout {
	--sc-black: #000;
	--sc-tile: #1d1d1f;
	--sc-tile-2: #26262a;
	--sc-paper: #f5f5f7;
	--sc-grey: #86868b;
	--sc-gilt: #caa57b;
	--sc-gilt-2: #e6cda6;
	--sc-teal: #75c6ca;
	--sc-hair: rgba(255, 255, 255, .12);
	--sc-r: 28px;
	--sc-r-s: 18px;
	/* WooCommerce themes its own form fields from these four variables, so the
	   field skin is set once here instead of out-specificity-ing woocommerce.css. */
	--wc-form-color-background: #1d1d1f;
	--wc-form-color-text: #ffffff;
	--wc-form-border-color: transparent;
	--wc-form-border-radius: 12px;
}

/* ═══════════ 1 · notices ══════════════════════════════════════════════
   Woo prints .woocommerce-message/-info/-error with its own light-theme
   styling; on a black page they render as white slabs. Royal Elementor Addons
   restyles the same three selectors from a stylesheet that loads after this
   one, so these rules carry the body's second class to outrank it. */
.smileconnect-checkout.woocommerce-page .woocommerce-message,
.smileconnect-checkout.woocommerce-page .woocommerce-info,
.smileconnect-checkout.woocommerce-page .woocommerce-error {
	background: var(--sc-tile);
	border-top: 3px solid var(--sc-gilt);
	border-radius: var(--sc-r-s);
	color: var(--sc-paper);
	font-size: 15px;
	padding: 16px 20px 16px 48px;
	margin: 0 0 22px;
	list-style: none;
}
/* Woo draws its notice icon with a ::before glyph that inherits the light palette. */
.smileconnect-checkout.woocommerce-page .woocommerce-message::before,
.smileconnect-checkout.woocommerce-page .woocommerce-info::before,
.smileconnect-checkout.woocommerce-page .woocommerce-error::before {
	color: var(--sc-gilt);
	top: 16px;
	left: 20px;
}
/* Woo's notice is a float layout with the button first; the design reads
   message-then-action, and woocommerce.css paints that button its own grey. */
.smileconnect-checkout.woocommerce-page .woocommerce-message,
.smileconnect-checkout.woocommerce-page .woocommerce-info {
	display: flex;
	flex-direction: row;
	flex-wrap: wrap;
	align-items: center;
	gap: 14px;
	justify-content: space-between;
}
.smileconnect-checkout.woocommerce-page .woocommerce-message .button,
.smileconnect-checkout.woocommerce-page .woocommerce-info .button {
	float: none;
	font-size: 14px;
	font-weight: 500;
	padding: 9px 20px;
	border: 0;
	border-radius: 980px;
	background: var(--sc-gilt);
	color: #111;
	text-decoration: none;
}
.smileconnect-checkout.woocommerce-page .woocommerce-error li { margin: 0 0 4px; }

/* ═══════════ 2 · form fields ══════════════════════════════════════════
   Elementor's Theme Style form_field group covers input and textarea only
   (its selector list is input:not([type=button]):not([type=submit]), textarea,
   .elementor-field-textual) and this Kit sets no field padding, so padding,
   width and <select> are unreachable from controls. */
.smileconnect-checkout.woocommerce-page .form-row input.input-text,
.smileconnect-checkout.woocommerce-page .form-row textarea,
.smileconnect-checkout.woocommerce-page .form-row select {
	width: 100%;
	box-sizing: border-box;
	padding: 14px 16px;
	font: inherit;
	font-size: 16px;
	line-height: 1.3;
	background: var(--sc-tile);
	color: #fff;
	border: 1px solid transparent;
	border-radius: 12px;
}
/* <select> is absent from the Theme Style selector list, so its arrow, colour
   and appearance reset have nowhere else to live. */
.smileconnect-checkout.woocommerce-page .form-row select {
	padding-right: 40px;
	appearance: none;
	-webkit-appearance: none;
	background-image:
		linear-gradient(45deg, transparent 50%, var(--sc-grey) 50%),
		linear-gradient(135deg, var(--sc-grey) 50%, transparent 50%);
	background-position: calc(100% - 20px) 50%, calc(100% - 14px) 50%;
	background-size: 6px 6px;
	background-repeat: no-repeat;
}
/* Theme Style sets a focus border colour but this Kit emits no border style for
   fields, so nothing would show; and the browser default outline is not the design's. */
.smileconnect-checkout.woocommerce-page .form-row input.input-text:focus,
.smileconnect-checkout.woocommerce-page .form-row textarea:focus,
.smileconnect-checkout.woocommerce-page .form-row select:focus {
	border-color: var(--sc-gilt);
	outline: none;
}
/* Woo's field labels are theme-styled text; the design's are a 12px gilt-grey caption. */
.smileconnect-checkout.woocommerce-page .form-row label {
	display: block;
	font-size: 12px;
	font-weight: 600;
	color: var(--sc-grey);
	margin: 0 0 6px;
}
.smileconnect-checkout .form-row label .required { color: var(--sc-gilt); text-decoration: none; }
/* The design's hint sentence moved out of the label (Woo drops labels into
   "%s is a required field") into Woo's own `description` span. Woo hides that
   span and reveals it only while the field has focus, then slides it away again
   with inline styles — the design shows the hint at rest, so the properties its
   animation writes inline are the ones marked !important here. */
.smileconnect-checkout.woocommerce-page form .form-row .woocommerce-input-wrapper .description {
	display: block !important;
	height: auto !important;
	overflow: visible !important;
	margin: 6px 0 0 !important;
	padding: 0 !important;
	font-size: 12px;
	line-height: 1.4;
	color: var(--sc-grey);
	/* Woo skins that span as a blue tooltip with a pointer triangle — the design
	   wants a plain grey hint, so the skin is taken back off. */
	background: none;
	border-radius: 0;
}
.smileconnect-checkout.woocommerce-page form .form-row .woocommerce-input-wrapper .description::before { display: none; }
.smileconnect-checkout .form-row label .optional { color: var(--sc-grey); font-weight: 400; }
/* Woo lays its billing rows out with floats (.form-row-first/-last); the design
   is a two-column grid that collapses to one. */
.smileconnect-checkout .woocommerce-billing-fields__field-wrapper,
.smileconnect-checkout .woocommerce-additional-fields__field-wrapper,
/* The per-seat fieldsets are the component's own markup and sit outside Woo's
   billing wrapper, so they need the same two-column grid by name. */
.smileconnect-checkout .sc-seat {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 16px;
}
.smileconnect-checkout.woocommerce-page .form-row {
	margin: 0;
	padding: 0;
	width: auto;
	float: none;
	min-width: 0;
}
.smileconnect-checkout.woocommerce-page .form-row-wide,
.smileconnect-checkout.woocommerce-page .form-row.notes { grid-column: 1 / -1; }
/* Woo's own clearfix rows would open a phantom grid cell. */
.smileconnect-checkout .woocommerce-billing-fields .clear { display: none; }
/* Woo's own "Billing details" / "Additional information" headings are replaced
   by the design's copy, printed by attendee_head() on Woo's own hook. */
.smileconnect-checkout .woocommerce-billing-fields > h3,
.smileconnect-checkout .woocommerce-additional-fields > h3 { display: none; }
.smileconnect-checkout .sc-attendee-h {
	font-size: clamp(30px, 3.4vw, 44px);
	font-weight: 600;
	letter-spacing: -.02em;
	line-height: 1.1;
	color: var(--sc-paper);
	margin: 0 0 10px;
}
.smileconnect-checkout .sc-attendee-hint { font-size: 16px; color: var(--sc-grey); margin: 0 0 28px; max-width: 563px; }
/* Order notes are switched off in WooCommerce's settings, so this column is empty. */
.smileconnect-checkout .col2-set > .col-2:not(:has(.form-row)) { display: none; }
/* Woo's inline validation tip is its own markup and inherits nothing useful. */
.smileconnect-checkout .woocommerce-invalid input.input-text,
.smileconnect-checkout .woocommerce-invalid select { border-color: #e4b15a; }

/* select2 replaces the country <select> with a div tree of its own, so the
   field only matches the design if that tree is restyled. */
.smileconnect-checkout .select2-container .select2-selection--single {
	height: auto;
	background: var(--sc-tile);
	border: 1px solid transparent;
	border-radius: 12px;
	padding: 13px 16px;
}
.smileconnect-checkout .select2-container .select2-selection--single .select2-selection__rendered {
	color: #fff;
	font-size: 16px;
	line-height: 1.3;
	padding: 0;
}
.smileconnect-checkout .select2-container .select2-selection--single .select2-selection__arrow { top: 50%; right: 12px; transform: translateY(-50%); }

/* ═══════════ 3 · checkout layout ══════════════════════════════════════
   The design's two columns live INSIDE Woo's <form class="checkout">, which
   Elementor cannot reach into: the attendee fields left, the order tile right. */
.smileconnect-checkout form.checkout {
	display: grid;
	grid-template-columns: minmax(0, 1fr) 380px;
	column-gap: clamp(28px, 4vw, 56px);
	align-items: start;
}
.smileconnect-checkout form.checkout > #customer_details { grid-column: 1; grid-row: 1; min-width: 0; }
.smileconnect-checkout form.checkout > #order_review { grid-column: 2; grid-row: 1; min-width: 0; }
/* Woo drops three empty <wc-order-attribution-inputs> carriers straight into the
   form; as grid items they would claim cells. Their hidden inputs still submit. */
.smileconnect-checkout form.checkout > wc-order-attribution-inputs { display: none; }
@media (max-width: 1000px) {
	.smileconnect-checkout form.checkout { grid-template-columns: minmax(0, 1fr); row-gap: 32px; }
	.smileconnect-checkout form.checkout > #customer_details,
	.smileconnect-checkout form.checkout > #order_review { grid-column: 1; grid-row: auto; }
}
@media (max-width: 560px) {
	.smileconnect-checkout .woocommerce-billing-fields__field-wrapper,
	.smileconnect-checkout .woocommerce-additional-fields__field-wrapper,
	.smileconnect-checkout .sc-seat { grid-template-columns: 1fr; }
}
/* form-checkout.php prints "Your order" as an <h3> OUTSIDE #order_review; the
   design puts that title inside the tile, where panel_head() now renders it. */
.smileconnect-checkout #order_review_heading { display: none; }
/* Woo's col2-set/col-1/col-2 are float columns; the design has one column here. */
.smileconnect-checkout .col2-set,
.smileconnect-checkout .col2-set > .col-1,
.smileconnect-checkout .col2-set > .col-2 { width: auto; float: none; }
.smileconnect-checkout .col2-set > .col-2 { margin-top: 28px; }
/* Shipping is disabled site-wide, so this wrapper is always an empty block. */
.smileconnect-checkout .woocommerce-shipping-fields:empty { display: none; }

/* ═══════════ 4 · the order tile ═══════════════════════════════════════
   Woo renders #order_review as a bare table + payment box; the design is the
   dark radius-28 summary tile from /reserve/. Sticky because Elementor free
   has no sticky control and this element is not an Elementor element at all. */
.smileconnect-checkout #order_review {
	background: var(--sc-tile);
	border-radius: var(--sc-r);
	overflow: hidden;
	position: sticky;
	top: 80px;
}
@media (max-width: 1000px) { .smileconnect-checkout #order_review { position: static; } }
/* The tile's header row and gilt "locked" strip, printed by panel_head(). */
.smileconnect-checkout .sc-sum-hd {
	display: flex;
	justify-content: space-between;
	align-items: baseline;
	gap: 10px;
	flex-wrap: wrap;
	padding: 22px 26px 16px;
}
.smileconnect-checkout .sc-sum-k { font-size: 17px; font-weight: 600; color: var(--sc-paper); }
.smileconnect-checkout .sc-sum-ev { font-size: 13px; color: var(--sc-grey); }
.smileconnect-checkout .sc-sum-urg {
	margin: 0 26px 8px;
	padding: 12px 14px;
	border-radius: 12px;
	background: rgba(202, 165, 123, .12);
	font-size: 13px;
	color: var(--sc-gilt-2);
}
/* The review table is Woo markup; the design's rows are flex lines, not cells. */
.smileconnect-checkout.woocommerce-page table.woocommerce-checkout-review-order-table {
	width: 100%;
	margin: 0;
	border: 0;
	border-collapse: collapse;
	display: block;
	padding: 6px 26px;
	box-sizing: border-box;
}
.smileconnect-checkout .woocommerce-checkout-review-order-table thead { display: none; }
.smileconnect-checkout .woocommerce-checkout-review-order-table tbody,
.smileconnect-checkout .woocommerce-checkout-review-order-table tfoot { display: block; }
.smileconnect-checkout .woocommerce-checkout-review-order-table tr {
	display: flex;
	justify-content: space-between;
	gap: 14px;
	padding: 14px 0;
	border-top: 1px solid var(--sc-hair);
}
.smileconnect-checkout.woocommerce-page table.woocommerce-checkout-review-order-table th,
.smileconnect-checkout.woocommerce-page table.woocommerce-checkout-review-order-table td {
	display: block;
	border: 0;
	background: none;
	padding: 0;
	font-size: 14px;
	font-weight: 400;
	color: var(--sc-grey);
	text-align: left;
}
.smileconnect-checkout.woocommerce-page table.woocommerce-checkout-review-order-table td { text-align: right; white-space: nowrap; color: var(--sc-paper); }
.smileconnect-checkout .woocommerce-checkout-review-order-table .cart_item .product-name { color: #fff; font-weight: 600; text-align: left; white-space: normal; min-width: 0; }
.smileconnect-checkout .woocommerce-checkout-review-order-table .product-quantity { color: var(--sc-grey); font-weight: 400; }
/* The struck-through regular price wc_format_sale_price() emits, and the grey
   sub-line under each item name — both are our own hooks' markup. */
.smileconnect-checkout .sc-line-sub {
	display: block;
	margin-top: 4px;
	font-size: 13px;
	font-weight: 400;
	color: var(--sc-grey);
	white-space: normal;
}
.smileconnect-checkout del { color: var(--sc-grey); font-size: 13px; text-decoration: line-through; margin-right: 8px; }
/* <ins> is underlined by the browser's own stylesheet. */
.smileconnect-checkout ins { text-decoration: none; background: none; color: var(--sc-paper); }
/* The teal saving line and the "excl. VAT · you save" note, printed by
   saving_row() and total_note() into Woo's own table rows. Both selectors are
   spelled out per table because the generic row/cell rules above them are
   deliberately specific enough to outrank a short one. */
.smileconnect-checkout .sc-saving th { font-weight: 400; }
.smileconnect-checkout.woocommerce-page table.woocommerce-checkout-review-order-table tr.sc-saving td,
.smileconnect-checkout.woocommerce-page .cart-collaterals .cart_totals table tr.sc-saving td { color: var(--sc-teal); }
.smileconnect-checkout.woocommerce-page table.woocommerce-checkout-review-order-table tr.sc-total-note,
.smileconnect-checkout.woocommerce-page .cart-collaterals .cart_totals table tr.sc-total-note { border-top: 0; padding-top: 0; justify-content: flex-end; }
.smileconnect-checkout.woocommerce-page table.woocommerce-checkout-review-order-table tr.sc-total-note td,
.smileconnect-checkout.woocommerce-page .cart-collaterals .cart_totals table tr.sc-total-note td { font-size: 12px; color: var(--sc-grey); text-align: right; }
/* No tax and no shipping, so Subtotal always equals Total — one line, not two. */
.smileconnect-checkout .woocommerce-checkout-review-order-table .cart-subtotal { display: none; }
.smileconnect-checkout .woocommerce-checkout-review-order-table .order-total {
	align-items: baseline;
	padding: 20px 0 6px;
}
.smileconnect-checkout .woocommerce-checkout-review-order-table .order-total th { font-size: 13px; color: var(--sc-grey); }
.smileconnect-checkout .woocommerce-checkout-review-order-table .order-total td,
.smileconnect-checkout .woocommerce-checkout-review-order-table .order-total strong {
	font-size: 36px;
	font-weight: 600;
	letter-spacing: -.03em;
	line-height: 1;
	color: var(--sc-paper);
}

/* ═══════════ 5 · payment ══════════════════════════════════════════════
   Woo's gateway list is a plain <ul>; the design's are bordered pills. */
.smileconnect-checkout #payment { background: none; border-radius: 0; padding: 0 26px 4px; }
.smileconnect-checkout #payment ul.payment_methods {
	list-style: none;
	margin: 0;
	padding: 14px 0 0;
	border: 0;
	border-top: 1px solid var(--sc-hair);
	display: grid;
	gap: 10px;
}
.smileconnect-checkout #payment ul.payment_methods li {
	background: rgba(255, 255, 255, .04);
	border: 2px solid transparent;
	border-radius: 12px;
	padding: 14px 16px;
	margin: 0;
	font-size: 15px;
	color: var(--sc-paper);
}
/* :has() marks the chosen pill with the design's gilt ring without any script. */
.smileconnect-checkout #payment ul.payment_methods li:has(input:checked) { border-color: var(--sc-gilt); }
.smileconnect-checkout #payment ul.payment_methods li label {
	display: inline;
	font-size: 15px;
	font-weight: 500;
	color: var(--sc-paper);
	margin: 0;
	cursor: pointer;
}
/* The browser's default radio is a light-mode control on a dark tile. */
.smileconnect-checkout #payment input.input-radio {
	appearance: none;
	-webkit-appearance: none;
	width: 18px;
	height: 18px;
	border-radius: 50%;
	border: 2px solid var(--sc-grey);
	background: transparent;
	vertical-align: -4px;
	margin: 0 10px 0 0;
}
.smileconnect-checkout #payment input.input-radio:checked {
	border-color: var(--sc-gilt);
	background: radial-gradient(circle, var(--sc-gilt) 45%, transparent 50%);
}
/* The gateway's own description box is Woo markup with a light background. */
.smileconnect-checkout #payment div.payment_box {
	background: none;
	margin: 10px 0 0;
	padding: 0;
	font-size: 13px;
	color: var(--sc-grey);
}
.smileconnect-checkout #payment div.payment_box::before { display: none; }
.smileconnect-checkout #payment div.payment_box p { margin: 0; }
.smileconnect-checkout #payment .place-order { padding: 18px 0 22px; margin: 0; }
/* woocommerce.css paints every .button.alt its own purple with a selector the
   Kit's button rule cannot outrank, so the design's gilt pill is restated here. */
.smileconnect-checkout #payment #place_order {
	display: block;
	width: 100%;
	float: none;
	font-size: 18px;
	font-weight: 500;
	padding: 17px 26px;
	border: 0;
	border-radius: 980px;
	background: var(--sc-gilt);
	color: #111;
	cursor: pointer;
}
.smileconnect-checkout #payment #place_order:hover { background: var(--sc-gilt-2); color: #111; }
/* The terms checkbox is Woo's own markup and inherits the light palette. */
.smileconnect-checkout .woocommerce-terms-and-conditions-wrapper { margin: 0 0 16px; font-size: 13px; color: var(--sc-grey); }
.smileconnect-checkout .woocommerce-terms-and-conditions-wrapper .woocommerce-privacy-policy-text p { font-size: 13px; color: var(--sc-grey); margin: 0 0 12px; }
.smileconnect-checkout .woocommerce-terms-and-conditions-wrapper .form-row label { display: inline; font-size: 13px; }
.smileconnect-checkout .woocommerce-terms-and-conditions-wrapper input[type="checkbox"] {
	appearance: none;
	-webkit-appearance: none;
	display: inline-block;
	flex: 0 0 auto;
	box-sizing: border-box;
	min-width: 18px;
	width: 18px;
	height: 18px;
	border-radius: 6px;
	border: 2px solid var(--sc-grey);
	vertical-align: -4px;
	margin-right: 8px;
}
.smileconnect-checkout .woocommerce-terms-and-conditions-wrapper input[type="checkbox"]:checked { border-color: var(--sc-gilt); background: var(--sc-gilt); }

/* The four trust ticks at the foot of the tile, printed by panel_trust(). */
.smileconnect-checkout .sc-trust {
	list-style: none;
	margin: 0;
	padding: 18px 26px 24px;
	border-top: 1px solid var(--sc-hair);
	display: grid;
	gap: 8px;
	font-size: 13px;
	color: var(--sc-grey);
}
.smileconnect-checkout .sc-trust li::before { content: "✓"; color: var(--sc-gilt); font-weight: 700; margin-right: 10px; }

/* ═══════════ 7 · cart page ════════════════════════════════════════════
   The cart is a six-column Woo <table> with a product thumbnail; the design's
   "Your order" is the same dark tile as the checkout summary. Woo, Royal and
   the browser all style `table td` at a higher specificity than a single class
   root reaches, so this block matches on `table.<woo class>` throughout. */
.smileconnect-checkout.woocommerce-cart .woocommerce { display: grid; grid-template-columns: minmax(0, 1fr) 380px; column-gap: clamp(28px, 4vw, 56px); align-items: start; }
.smileconnect-checkout.woocommerce-cart .woocommerce > .woocommerce-notices-wrapper { grid-column: 1 / -1; }
.smileconnect-checkout.woocommerce-cart .woocommerce-cart-form { grid-column: 1; min-width: 0; }
.smileconnect-checkout.woocommerce-cart .cart-collaterals { grid-column: 2; min-width: 0; width: auto; }
@media (max-width: 1000px) {
	.smileconnect-checkout.woocommerce-cart .woocommerce { grid-template-columns: minmax(0, 1fr); row-gap: 32px; }
	.smileconnect-checkout.woocommerce-cart .woocommerce-cart-form,
	.smileconnect-checkout.woocommerce-cart .cart-collaterals { grid-column: 1; }
}
.smileconnect-checkout.woocommerce-page table.woocommerce-cart-form__contents {
	display: block;
	width: 100%;
	margin: 0;
	border: 0;
	border-collapse: collapse;
	background: var(--sc-tile);
	border-radius: var(--sc-r);
	padding: 8px 26px 18px;
	box-sizing: border-box;
}
.smileconnect-checkout.woocommerce-page table.woocommerce-cart-form__contents thead { display: none; }
.smileconnect-checkout.woocommerce-page table.woocommerce-cart-form__contents tbody { display: block; }
.smileconnect-checkout.woocommerce-page table.woocommerce-cart-form__contents tr {
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto auto;
	align-items: center;
	gap: 14px;
	padding: 18px 0;
	border-top: 1px solid var(--sc-hair);
}
.smileconnect-checkout.woocommerce-page table.woocommerce-cart-form__contents tr:first-child { border-top: 0; }
.smileconnect-checkout.woocommerce-page table.woocommerce-cart-form__contents td {
	display: block;
	border: 0;
	background: none;
	padding: 0;
	font-size: 15px;
	color: var(--sc-paper);
}
/* The products are virtual tickets with no artwork, so Woo's placeholder image
   is noise; the quantity is always 1 because every product is sold individually,
   which also makes the unit price and the line subtotal the same number. */
.smileconnect-checkout.woocommerce-page table.woocommerce-cart-form__contents td.product-thumbnail,
.smileconnect-checkout.woocommerce-page table.woocommerce-cart-form__contents td.product-quantity,
.smileconnect-checkout.woocommerce-page table.woocommerce-cart-form__contents td.product-price { display: none; }
.smileconnect-checkout.woocommerce-page table.woocommerce-cart-form__contents td.product-name { font-weight: 600; min-width: 0; }
.smileconnect-checkout.woocommerce-page table.woocommerce-cart-form__contents td.product-subtotal { text-align: right; white-space: nowrap; font-weight: 600; }
/* The remove "×" is Woo's own red circle link; the design's is a quiet grey dot.
   woocommerce.css marks that colour !important, which is why this one does too. */
.smileconnect-checkout.woocommerce-page table.woocommerce-cart-form__contents td.product-remove { order: 3; }
.smileconnect-checkout.woocommerce-page table.woocommerce-cart-form__contents td.product-remove a.remove {
	display: inline-block;
	width: 22px;
	height: 22px;
	line-height: 20px;
	text-align: center;
	border-radius: 50%;
	color: var(--sc-grey) !important;
	background: rgba(255, 255, 255, .06);
	font-size: 16px;
	text-decoration: none;
}
.smileconnect-checkout.woocommerce-page table.woocommerce-cart-form__contents td.product-remove a.remove:hover { color: #fff !important; background: rgba(255, 255, 255, .14); }
/* The actions row holds the coupon box and "Update cart" and spans the whole tile. */
.smileconnect-checkout.woocommerce-page table.woocommerce-cart-form__contents tr:last-child { grid-template-columns: minmax(0, 1fr); }
.smileconnect-checkout.woocommerce-page table.woocommerce-cart-form__contents td.actions {
	display: flex;
	flex-wrap: wrap;
	gap: 12px;
	align-items: center;
	justify-content: space-between;
}
.smileconnect-checkout.woocommerce-page table.woocommerce-cart-form__contents td.actions .coupon { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; }
.smileconnect-checkout.woocommerce-page table.woocommerce-cart-form__contents td.actions .coupon label { font-size: 12px; font-weight: 600; color: var(--sc-grey); margin: 0; }
.smileconnect-checkout.woocommerce-page table.woocommerce-cart-form__contents td.actions input.input-text {
	width: 170px;
	padding: 11px 14px;
	font-size: 15px;
	background: rgba(255, 255, 255, .06);
	border: 1px solid transparent;
	border-radius: 980px;
	color: #fff;
}
/* woocommerce.css paints .button its own grey/purple; these two are secondary. */
.smileconnect-checkout.woocommerce-page table.woocommerce-cart-form__contents td.actions button.button {
	font-size: 14px;
	font-weight: 500;
	padding: 11px 20px;
	border: 0;
	border-radius: 980px;
	background: rgba(255, 255, 255, .1);
	color: var(--sc-paper);
	cursor: pointer;
}
.smileconnect-checkout.woocommerce-page table.woocommerce-cart-form__contents td.actions button.button:hover { background: rgba(255, 255, 255, .18); color: #fff; }
/* The totals block is Woo's second table; the design makes it the summary tile. */
.smileconnect-checkout.woocommerce-page .cart-collaterals .cart_totals {
	background: var(--sc-tile);
	border-radius: var(--sc-r);
	overflow: hidden;
	width: auto;
	float: none;
	padding: 0 0 8px;
}
/* Woo's "Cart totals" heading is replaced by the tile header panel_head()
   prints on `woocommerce_before_cart_totals`, the same one the checkout uses. */
.smileconnect-checkout.woocommerce-page .cart-collaterals .cart_totals > h2 { display: none; }
.smileconnect-checkout.woocommerce-page .cart-collaterals .cart_totals table {
	display: block;
	width: 100%;
	margin: 0;
	border: 0;
	border-collapse: collapse;
	padding: 0 26px;
	box-sizing: border-box;
}
.smileconnect-checkout.woocommerce-page .cart-collaterals .cart_totals table tbody { display: block; }
.smileconnect-checkout.woocommerce-page .cart-collaterals .cart_totals table tr { display: flex; justify-content: space-between; align-items: baseline; gap: 14px; padding: 14px 0; border-top: 1px solid var(--sc-hair); }
.smileconnect-checkout.woocommerce-page .cart-collaterals .cart_totals table th,
.smileconnect-checkout.woocommerce-page .cart-collaterals .cart_totals table td { display: block; border: 0; background: none; padding: 0; font-size: 13px; font-weight: 400; color: var(--sc-grey); text-align: right; }
.smileconnect-checkout.woocommerce-page .cart-collaterals .cart_totals table th { text-align: left; }
.smileconnect-checkout.woocommerce-page .cart-collaterals .cart_totals .cart-subtotal { display: none; }
.smileconnect-checkout.woocommerce-page .cart-collaterals .cart_totals .order-total td strong { font-size: 36px; font-weight: 600; letter-spacing: -.03em; line-height: 1; color: var(--sc-paper); }
.smileconnect-checkout .cart-collaterals .wc-proceed-to-checkout { padding: 18px 26px 4px; margin: 0; }
/* woocommerce.css paints every .button.alt its own purple; restate the gilt pill. */
.smileconnect-checkout .cart-collaterals .wc-proceed-to-checkout a.checkout-button {
	display: block;
	width: 100%;
	box-sizing: border-box;
	text-align: center;
	font-size: 18px;
	font-weight: 500;
	padding: 17px 26px;
	margin: 0;
	border-radius: 980px;
	background: var(--sc-gilt);
	color: #111;
	text-decoration: none;
}
.smileconnect-checkout .cart-collaterals .wc-proceed-to-checkout a.checkout-button:hover { background: var(--sc-gilt-2); color: #111; }
.smileconnect-checkout .cart-collaterals .sc-trust { padding: 18px 26px 22px; margin-top: 10px; }
/* When the tier rules block a cart, WooCommerce renders cart-errors.php in
   place of the form: Woo's own paragraph plus a "Return to cart" button. */
.smileconnect-checkout .woocommerce > p { font-size: 17px; color: var(--sc-grey); max-width: 52ch; }
.smileconnect-checkout a.button.wc-backward,
.smileconnect-checkout .return-to-shop a.button {
	display: inline-block;
	font-size: 17px;
	font-weight: 500;
	padding: 13px 26px;
	border: 0;
	border-radius: 980px;
	background: var(--sc-gilt);
	color: #111;
	text-decoration: none;
}
.smileconnect-checkout a.button.wc-backward:hover,
.smileconnect-checkout .return-to-shop a.button:hover { background: var(--sc-gilt-2); color: #111; }
/* Cross-sells are catalog-hidden products; the block is always empty here. */
.smileconnect-checkout .cross-sells { display: none; }
/* The empty-cart screen is Woo's own copy and button. */
.smileconnect-checkout .cart-empty { font-size: 20px; color: var(--sc-paper); margin: 0 0 18px; }
.smileconnect-checkout .return-to-shop { margin: 0; }

/* Below 768 WooCommerce swaps its tables for a stacked "responsive table":
   it prints a `data-title` label before every cell, forces every cell right and
   zebra-stripes them. The tile above is already a stacked list, so all three
   have to be switched back off — and Woo marks the alignment !important. */
@media (max-width: 768px) {
	.smileconnect-checkout.woocommerce-page table.shop_table_responsive tr td::before { content: none; }
	.smileconnect-checkout.woocommerce-page table.shop_table_responsive tr td { text-align: left !important; }
	.smileconnect-checkout.woocommerce-page table.shop_table_responsive tr td.product-subtotal,
	.smileconnect-checkout.woocommerce-page .cart-collaterals .cart_totals table tr td { text-align: right !important; }
	.smileconnect-checkout.woocommerce-page table.shop_table_responsive tr:nth-child(2n) td { background: none; }
}


/* ═══════════ 8 · order received ═══════════════════════════════════════
   Everything below is markup this component's own thankyou.php prints, so it
   has no Elementor element to hang on. The checkout page's Elementor hero is
   hidden here because the confirmation carries its own headline. */
.smileconnect-checkout--order-received .sc-page-head { display: none; }
.smileconnect-checkout .sc-conf { padding: clamp(40px, 5vw, 64px) 0 0; }
/* The mockup centres the confirmation head inside a ~900px measure. */
.smileconnect-checkout .sc-conf-head { margin: 0 auto clamp(40px, 5vw, 64px); max-width: 900px; text-align: center; }
.smileconnect-checkout .sc-eyebrow { font-size: 14px; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: var(--sc-gilt); }
.smileconnect-checkout .sc-conf-h { font-size: clamp(40px, 6vw, 80px); font-weight: 600; letter-spacing: -.02em; line-height: 1.04; color: var(--sc-paper); margin: 14px 0 18px; }
/* The design clips a gradient to the name; no control expresses background-clip. */
.smileconnect-checkout .sc-grad {
	background: linear-gradient(92deg, #e6cda6 0%, #caa57b 45%, #8fd1d4 100%);
	-webkit-background-clip: text;
	background-clip: text;
	color: transparent;
}
.smileconnect-checkout .sc-conf-intro { font-size: clamp(20px, 2.1vw, 28px); font-weight: 500; line-height: 1.3; letter-spacing: -.01em; color: var(--sc-grey); max-width: 34ch; margin: 0 auto; }
.smileconnect-checkout .sc-conf-intro b { font-weight: 600; color: var(--sc-paper); }
.smileconnect-checkout .sc-conf-grid { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, .9fr); gap: clamp(28px, 4vw, 56px); align-items: start; }
@media (max-width: 900px) { .smileconnect-checkout .sc-conf-grid { grid-template-columns: minmax(0, 1fr); } }
.smileconnect-checkout .sc-next { list-style: none; margin: 0; padding: 0; display: grid; gap: 14px; }
.smileconnect-checkout .sc-next li { background: var(--sc-tile); border-radius: var(--sc-r-s); padding: 22px 24px; display: grid; grid-template-columns: 36px minmax(0, 1fr); gap: 16px; font-size: 15px; align-items: start; }
.smileconnect-checkout .sc-next li b { display: block; font-weight: 600; margin-bottom: 3px; color: #fff; }
.smileconnect-checkout .sc-next li span { color: var(--sc-grey); }
.smileconnect-checkout .sc-next .sc-no { font-size: 24px; font-weight: 600; color: var(--sc-gilt); line-height: 1.1; }
.smileconnect-checkout .sc-gateway { background: var(--sc-tile); border-radius: var(--sc-r-s); padding: 22px 24px; margin-top: 14px; font-size: 14px; color: var(--sc-grey); }
.smileconnect-checkout .sc-gateway h2, .smileconnect-checkout .sc-gateway h3 { font-size: 17px; font-weight: 600; color: var(--sc-paper); margin: 0 0 8px; }
.smileconnect-checkout .sc-gateway ul { list-style: none; margin: 0; padding: 0; }
.smileconnect-checkout .sc-gateway p:last-child { margin-bottom: 0; }
.smileconnect-checkout .sc-conf-actions { display: flex; flex-wrap: wrap; gap: 18px; align-items: center; margin-top: 28px; }
.smileconnect-checkout .sc-btn-white { background: #fff; color: #111; border-radius: 980px; padding: 13px 26px; font-size: 17px; font-weight: 500; text-decoration: none; }
.smileconnect-checkout .sc-btn-white:hover { background: var(--sc-paper); color: #111; }
.smileconnect-checkout .sc-link { color: var(--sc-gilt); font-size: 17px; text-decoration: none; }
.smileconnect-checkout .sc-ticket { border-radius: var(--sc-r); padding: 34px; background: linear-gradient(160deg, #2a2216 0%, #1d1d1f 60%); outline: 1px solid rgba(202, 165, 123, .5); display: grid; gap: 4px; }
.smileconnect-checkout .sc-ticket .sc-k, .smileconnect-checkout .sc-share .sc-k { font-size: 13px; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: var(--sc-gilt); }
.smileconnect-checkout .sc-ticket .sc-n { font-size: clamp(30px, 3.4vw, 42px); font-weight: 600; letter-spacing: -.02em; line-height: 1; color: var(--sc-paper); margin-top: 4px; }
.smileconnect-checkout .sc-kv { display: grid; grid-template-columns: 120px minmax(0, 1fr); margin-top: 20px; font-size: 14px; }
/* The mockup's ticket key column is the eyebrow token, not body grey. */
.smileconnect-checkout .sc-kv .sc-k2 {
	font-size: 13px;
	font-weight: 600;
	letter-spacing: .06em;
	text-transform: uppercase;
	color: var(--sc-gilt);
	padding: 10px 0;
	border-top: 1px solid var(--sc-hair);
}
.smileconnect-checkout .sc-kv .sc-v { color: var(--sc-paper); padding: 10px 0; border-top: 1px solid var(--sc-hair); overflow-wrap: anywhere; }
@media (max-width: 560px) {
	.smileconnect-checkout .sc-kv { grid-template-columns: minmax(0, 1fr); }
	.smileconnect-checkout .sc-kv .sc-k2 { padding-bottom: 0; }
	.smileconnect-checkout .sc-kv .sc-v { border-top: 0; padding-top: 2px; }
}
.smileconnect-checkout .sc-share { background: var(--sc-tile); border-radius: var(--sc-r); padding: 26px 28px; margin-top: 18px; font-size: 14px; color: var(--sc-grey); }
.smileconnect-checkout .sc-share p { margin: 8px 0 16px; }
.smileconnect-checkout .sc-btn-line { display: inline-block; border: 1px solid var(--sc-hair); color: var(--sc-paper); border-radius: 980px; padding: 9px 20px; font-size: 14px; text-decoration: none; }
.smileconnect-checkout .sc-btn-line:hover { border-color: var(--sc-gilt); color: var(--sc-gilt); }

/* ═══ 11 · the selection panel on /reserve/ ═══════════════════════════════
   Rendered by [smileconnect_selection]. It is the component's own markup, so
   there is no Elementor element to hang these on — the same admission as the
   order-received template. Everything stays under the one class root. */
.smileconnect-checkout .sc-sel { display: flex; flex-direction: column; }
.smileconnect-checkout .sc-sel-notices { padding: 0 26px 4px; }
.smileconnect-checkout .sc-sel-notices ul { margin: 0; padding: 0; list-style: none; }
.smileconnect-checkout .sc-sel-empty {
  margin: 0; padding: 4px 26px 20px; color: var(--sc-grey);
  font-size: 15px; line-height: 1.47;
}
.smileconnect-checkout .sc-sel-rows { padding: 0 26px; }
.smileconnect-checkout .sc-sel-row {
  display: flex; justify-content: space-between; gap: 14px;
  padding: 14px 0; border-top: 1px solid var(--sc-hair); font-size: 14px;
}
.smileconnect-checkout .sc-sel-row .n { color: var(--sc-grey); }
.smileconnect-checkout .sc-sel-row .n b { display: block; color: #fff; font-weight: 600; }
.smileconnect-checkout .sc-sel-row .n i { font-style: normal; }
.smileconnect-checkout .sc-sel-row .v { white-space: nowrap; font-variant-numeric: tabular-nums; }
.smileconnect-checkout .sc-sel-row .v del { color: var(--sc-grey); margin-right: 4px; }
.smileconnect-checkout .sc-sel-save .v,
.smileconnect-checkout .sc-sel-save .v .amount { color: var(--sc-teal); }
.smileconnect-checkout .sc-sel-tot {
  display: flex; justify-content: space-between; align-items: baseline;
  gap: 14px; padding: 18px 26px; border-top: 1px solid var(--sc-hair);
}
.smileconnect-checkout .sc-sel-tot .k { font-size: 13px; color: var(--sc-grey); }
.smileconnect-checkout .sc-sel-tot .v {
  text-align: right; font-size: 32px; font-weight: 600; letter-spacing: -.03em;
  line-height: 1; color: #fff;
}
.smileconnect-checkout .sc-sel-tot .v small {
  display: block; margin-top: 6px; font-size: 12px; font-weight: 400;
  letter-spacing: 0; color: var(--sc-grey);
}
.smileconnect-checkout .sc-sel-cta {
  display: block; margin: 0 26px 10px; padding: 15px 26px; border-radius: 980px;
  background: var(--sc-gilt); color: #111; font-size: 16px; font-weight: 500;
  text-align: center; text-decoration: none;
}
.smileconnect-checkout .sc-sel-cta:hover { background: var(--sc-gilt-2); color: #111; }
.smileconnect-checkout .sc-sel-clear {
  display: block; margin: 0 26px 22px; font-size: 13px; color: var(--sc-grey);
  text-align: center; text-decoration: none;
}
.smileconnect-checkout .sc-sel-clear:hover { color: #fff; }

/* The add-to-cart message, rewritten by added_message() to prompt for extras. */
.smileconnect-checkout .sc-added { font-size: 14px; line-height: 1.5; color: var(--sc-paper); }
.smileconnect-checkout .sc-added strong { font-weight: 600; }
.smileconnect-checkout .sc-added span { color: var(--sc-grey); }
.smileconnect-checkout .sc-added a { color: var(--sc-gilt); text-decoration: underline; }
.smileconnect-checkout .sc-added a:hover { color: var(--sc-gilt-2); }

/* ═══ 12 · seats ═════════════════════════════════════════════════════════
   A pass may be bought more than once, so three things need styling that did
   not exist when one order meant one attendee: the per-line seat counter in
   the panel, the tick that shows which cards are already chosen, and the
   per-seat name fieldsets at checkout. */

/* The chosen-state marks on /reserve/. The cards are Elementor containers and
   these three elements are drawn by Elementor controls; they are hidden here
   and switched back on by reserve_state_css(), which knows the cart. Without
   this pair the cards could never show what had been picked — the page is
   server-rendered and the ring was decoration. */
.smileconnect-checkout .sc-dot,
.smileconnect-checkout .sc-tick,
.smileconnect-checkout .sc-chosen { display: none !important; }

/* The − N + control on each line of the order panel. */
.smileconnect-checkout .sc-sel-row .sc-qty {
  display: flex; align-items: center; gap: 8px; margin-top: 8px;
}
.smileconnect-checkout .sc-sel-row .sc-qty b {
  min-width: 14px; text-align: center; color: #fff; font-weight: 600;
  font-variant-numeric: tabular-nums;
}
.smileconnect-checkout .sc-sel-row .sc-qty em {
  font-style: normal; font-size: 12px; color: var(--sc-grey);
}
.smileconnect-checkout .sc-qty-b {
  display: inline-flex; align-items: center; justify-content: center;
  width: 30px; height: 30px; border-radius: 50%;
  border: 1px solid var(--sc-hair); color: var(--sc-paper);
  font-size: 16px; line-height: 1; text-decoration: none;
}
/* A finger is not a mouse pointer: on touch widths the two controls that change
   what the buyer pays grow to the 44px target size. */
@media (max-width: 1000px) {
  .smileconnect-checkout .sc-qty-b { width: 44px; height: 44px; font-size: 18px; }
  .smileconnect-checkout .sc-sel-row .sc-qty { gap: 10px; }
}
.smileconnect-checkout a.sc-qty-b:hover { border-color: var(--sc-gilt); color: var(--sc-gilt); }
/* A "+" that would break a per-seat cap is shown spent rather than hidden, so
   the row does not change shape when the cap is reached. */
.smileconnect-checkout .sc-qty-b.is-off { opacity: .3; }

/* The line under the total that explains the team rate. */
.smileconnect-checkout .sc-sel-team {
  margin: 0; padding: 0 26px 18px; font-size: 13px; color: var(--sc-grey);
}

/* The seat fieldsets at checkout. They sit in the same column as the buyer's
   own details, so they take the same field skin and are separated by a rule
   rather than a box — a box would read as a second form. */
.smileconnect-checkout .sc-seats { margin-top: 34px; }
.smileconnect-checkout .sc-seat-you {
  margin: 0 0 18px; font-size: 14px; color: var(--sc-grey);
}
.smileconnect-checkout .sc-seat {
  padding-top: 18px; margin-top: 18px; border-top: 1px solid var(--sc-hair);
}
/* The seat number heading, and the two full-width fields, span the grid. */
.smileconnect-checkout .sc-seat-h { grid-column: 1 / -1; margin: 0 0 4px; font-size: 15px; font-weight: 600; color: #fff; }
.smileconnect-checkout .sc-seat-n { color: var(--sc-gilt); }

/* The seat list on the confirmation ticket, when the order carries more than
   one. An ordered list, because the seat numbers are the order the team rate
   and the badges use. */
.smileconnect-checkout .sc-seatlist { margin: 0; padding-left: 18px; display: grid; gap: 8px; }
.smileconnect-checkout .sc-seatlist li { color: #fff; }
.smileconnect-checkout .sc-seatlist small { display: block; color: var(--sc-grey); font-size: 12px; }

/* The page header is 56px of fixed bar, so a bare #order jump tucks the tile's
   own "Your order" line underneath it. scroll-margin-top is what the browser
   subtracts when it scrolls to a fragment. The margin is generous on purpose:
   the browser corrects a fragment scroll once late layout settles, and the
   content above the anchor can still shift by a few tens of pixels after that,
   so a margin sized exactly to the header lands under it half the time. */
.smileconnect-checkout #order { scroll-margin-top: 110px; }
