/*
Theme Name: Lagar Child
Author: VamTam
Author URI: https://vamtam.com
Template: lagar
*/



/*

put your child theme styles here


you don't need any @import rules

*/

/* ==========================================================================
   Commerce7 v2 widgets → Lagar theme look
   --------------------------------------------------------------------------
   Append to: web/app/themes/lagar-child/style.css
   Scope:     everything lives under `.c7wp-wrap` / `#c7-content` so nothing
              leaks into the rest of the site. (Side-cart / modals render
              outside these wrappers – see the optional block at the bottom.)
   Depends on: Lagar CSS custom props (--vamtam-*, --e-global-*) which are
              set on <body> by the theme + Elementor kit (post-13.css).
   ========================================================================== */

/* --------------------------------------------------------------------------
   1. Re-map Commerce7's design tokens to Lagar's tokens
   -------------------------------------------------------------------------- */
.c7wp-wrap,
#c7-content {
	/* Lagar colour system (Elementor kit "vamtam_accent_N"):
	   1 gold #B98D58 · 2 slate #545D5C · 3 ink #242E35 · 4 grey #909090
	   5 white · 6 black · 7 line #DEDDD9 · 8 paper #F9F8F4 */
	--c7-font-family:              var(--vamtam-primary-font-font-family, "Cormorant Infant"), serif;
	--c7-font-size:                var(--vamtam-primary-font-font-size, 20px);
	--c7-font-size-sub:            16px;
	--c7-body-text-color:          var(--vamtam-primary-font-color, #545D5C);
	--c7-alt-text-color:           var(--vamtam-accent-color-4, #909090);
	--c7-heading-font-family:      var(--vamtam-h4-font-family, "Cormorant Infant"), serif;
	--c7-heading-text-color:       var(--vamtam-h4-color, #545D5C);
	--c7-heading-font-weight:      var(--vamtam-h4-font-weight, 500);

	--c7-primary-color:            var(--vamtam-accent-color-2, #545D5C);
	--c7-primary-color-dark:       var(--vamtam-accent-color-3, #242E35);
	--c7-primary-color-text:       var(--vamtam-accent-color-1, #B98D58);
	--c7-primary-color-focus:      rgba(185, 141, 88, 0.25);
	--c7-link-color:               var(--vamtam-body-link-regular, #242E35);

	--c7-bg:                       var(--vamtam-default-bg-color, #fff);
	--c7-bg-alt:                   var(--vamtam-accent-color-8, #F9F8F4);
	--c7-border-color:             var(--vamtam-default-line-color, #DEDDD9);
	--c7-block-border-color:       var(--vamtam-default-line-color, #DEDDD9);
	--c7-info-bg:                  var(--vamtam-accent-color-8, #F9F8F4);
	--c7-pill-bg:                  var(--vamtam-accent-color-8, #F9F8F4);
	--c7-pill-text-color:          var(--vamtam-accent-color-2, #545D5C);

	/* Lagar is square everywhere (--vamtam-border-radius: 0) */
	--c7-border-radius:            var(--vamtam-border-radius, 0px);
	--c7-block-border-radius:      var(--vamtam-border-radius, 0px);
	--c7-button-border-radius:     var(--vamtam-btn-border-radius, 0px);
	--c7-field-border-radius:      var(--vamtam-border-radius-small, 0px);
	--c7-modal-border-radius:      var(--vamtam-border-radius, 0px);
	--c7-dropdown-border-radius:   var(--vamtam-border-radius, 0px);
	--c7-block-shadow:             none;

	/* Buttons: solid slate → ink on hover (theme's .standard-button fallback
	   pair accent-2 / accent-3). See §4 for the text-link alternative. */
	--c7-primary-button-bg:        var(--vamtam-accent-color-2, #545D5C);
	--c7-primary-button-bg-hover:  var(--vamtam-accent-color-3, #242E35);
	--c7-primary-button-text-color: #fff;
	--c7-alt-button-bg:            var(--vamtam-accent-color-8, #F9F8F4);
	--c7-alt-button-bg-hover:      var(--vamtam-accent-color-7, #DEDDD9);
	--c7-alt-button-text-color:    var(--vamtam-accent-color-2, #545D5C);

	/* Form fields: theme uses 1px line, no radius, transparent bg */
	--c7-field-bg:                 transparent;
	--c7-field-border-color:       var(--vamtam-default-line-color, #DEDDD9);
	--c7-field-focus-color:        transparent;
	--c7-field-focus-border-color: var(--vamtam-accent-color-1, #B98D58);
	--c7-field-option-selected-color: var(--vamtam-accent-color-1, #B98D58);
	--c7-field-placeholder:        var(--vamtam-accent-color-4, #909090);

	--c7-header-text-color:        var(--vamtam-accent-color-2, #545D5C);
	--c7-cart-count-bg:            var(--vamtam-accent-color-1, #B98D58);

	/* Local knobs for the grid (not C7 vars – ours) */
	--lagar-c7-grid-cols:          3;
	--lagar-c7-grid-gap:           30px;
	--lagar-c7-card-bg:            var(--vamtam-accent-color-8, #F9F8F4);
	--lagar-c7-card-pad:           30px 20px 30px;
	--lagar-c7-label-font:         var(--vamtam-h6-font-family, "Alata"), sans-serif;

	font-family: var(--c7-font-family);
	font-size:   var(--c7-font-size);
	line-height: var(--vamtam-primary-font-line-height, 1.4em);
	color:       var(--c7-body-text-color);
}

/* Commerce7 forces min-height:50vh on its containers – fine on /shop, but
   on pages that embed a small buy widget it leaves a big gap. Keep it only
   for the collection list. */
.c7wp-wrap:not([data-c7-type="collectionlist"]) #c7-content,
.c7wp-wrap:not([data-c7-type="collectionlist"]) .c7-product-collection {
	min-height: 0;
}

/* --------------------------------------------------------------------------
   2. Typography inside the widgets
   -------------------------------------------------------------------------- */
.c7wp-wrap h1.c7-h1, #c7-content h1.c7-h1,
.c7wp-wrap h2.c7-h2, #c7-content h2.c7-h2,
.c7wp-wrap h3.c7-h3, #c7-content h3.c7-h3,
.c7wp-wrap h4.c7-h4, #c7-content h4.c7-h4 {
	font-family: var(--c7-heading-font-family);
	font-weight: var(--c7-heading-font-weight);
	color:       var(--c7-heading-text-color);
	letter-spacing: 0;
	text-transform: none;
}
.c7wp-wrap h1.c7-h1, #c7-content h1.c7-h1 {
	font-size: var(--vamtam-h2-font-size, 62px);
	line-height: var(--vamtam-h2-line-height, 1.1em);
	font-weight: var(--vamtam-h2-font-weight, 300);
	text-align: center;
	margin-bottom: 30px;
}
.c7wp-wrap h2.c7-h2, #c7-content h2.c7-h2 {
	font-size: var(--vamtam-h3-font-size, 40px);
	line-height: var(--vamtam-h3-line-height, 1.1em);
}

/* Small "label" style = Lagar's h6 (Alata, uppercase, tracked). Used for
   prices, eyebrow text, buttons, pills. */
.c7wp-wrap .c7-marker, #c7-content .c7-marker,
.c7wp-wrap .c7-product__subtitle, #c7-content .c7-product__subtitle,
.c7wp-wrap .c7-breadcrumbs ol, #c7-content .c7-breadcrumbs ol {
	font-family: var(--lagar-c7-label-font);
	font-size: var(--vamtam-h6-font-size, 14px);
	font-weight: 400;
	letter-spacing: 3px;
	text-transform: uppercase;
	line-height: 1.4;
}
.c7wp-wrap .c7-marker, #c7-content .c7-marker {
	border-radius: 0;
	padding: 6px 12px;
	letter-spacing: 2px;
	font-size: 12px;
}

.c7wp-wrap a:not(.c7-btn), #c7-content a:not(.c7-btn) {
	color: var(--vamtam-body-link-regular, #242E35);
	text-decoration: none;
	transition: color .3s;
}
.c7wp-wrap a:not(.c7-btn):hover, #c7-content a:not(.c7-btn):hover {
	color: var(--vamtam-body-link-hover, #B98D58);
}

/* --------------------------------------------------------------------------
   3. Collection grid → vertical product cards (mirrors Lagar's WooCommerce
      loop card: image, paper-coloured content panel, centred text, gold
      tracked price, button at the bottom)
   -------------------------------------------------------------------------- */
.c7wp-wrap .c7-product-collection__content,
#c7-content .c7-product-collection__content {
	margin-bottom: 30px;
	text-align: center;
}

.c7wp-wrap .c7-product-collection__product-list,
#c7-content .c7-product-collection__product-list,
.c7wp-wrap .c7-related-products__product-list,
#c7-content .c7-related-products__product-list,
.c7wp-wrap .c7-product-allocation__product-list,
#c7-content .c7-product-allocation__product-list {
	display: grid;
	grid-template-columns: repeat(var(--lagar-c7-grid-cols), minmax(0, 1fr));
	column-gap: var(--lagar-c7-grid-gap);
	row-gap: var(--lagar-c7-grid-gap);
	margin: 40px 0 60px;
	padding: 0;
	list-style: none;
}
/* C7 "featured" variants push the grid down 80px and inset the image – undo */
.c7wp-wrap .c7-product-collection__products--featured .c7-product-collection__product-list,
#c7-content .c7-product-collection__products--featured .c7-product-collection__product-list {
	margin-top: 40px;
}
.c7wp-wrap .c7-product-collection__products--featured .c7-product__image,
#c7-content .c7-product-collection__products--featured .c7-product__image {
	margin-top: 0;
}

/* Card */
.c7wp-wrap .c7-product-collection .c7-product,
#c7-content .c7-product-collection .c7-product,
.c7wp-wrap .c7-related-products .c7-product,
#c7-content .c7-related-products .c7-product,
.c7wp-wrap .c7-product-allocation .c7-product,
#c7-content .c7-product-allocation .c7-product {
	display: flex;
	flex-direction: column;
	height: 100%;
	background: var(--lagar-c7-card-bg);
	border-radius: var(--vamtam-border-radius, 0);
	padding: 0;
	overflow: hidden;
	text-align: center;
	transition: box-shadow .3s ease;
}
.c7wp-wrap .c7-product-collection .c7-product:hover,
#c7-content .c7-product-collection .c7-product:hover {
	box-shadow: 0 10px 30px -15px rgba(36, 46, 53, .25);
}

/* Image – full-width, white ground so bottle shots sit like the Woo cards */
.c7wp-wrap .c7-product-collection .c7-product__image,
#c7-content .c7-product-collection .c7-product__image,
.c7wp-wrap .c7-related-products .c7-product__image,
#c7-content .c7-related-products .c7-product__image,
.c7wp-wrap .c7-product-allocation .c7-product__image,
#c7-content .c7-product-allocation .c7-product__image {
	flex: 0 0 auto;
	margin: 0;
	padding: 30px 20px 0;
	background: var(--vamtam-default-bg-color, #fff);
	text-align: center;
	overflow: hidden;
}
.c7wp-wrap .c7-product-collection .c7-product__image img,
#c7-content .c7-product-collection .c7-product__image img,
.c7wp-wrap .c7-related-products .c7-product__image img,
#c7-content .c7-related-products .c7-product__image img,
.c7wp-wrap .c7-product-allocation .c7-product__image img,
#c7-content .c7-product-allocation .c7-product__image img {
	display: block;
	margin: 0 auto;
	max-height: 320px;
	width: auto;
	max-width: 100%;
	object-fit: contain;
	transform-origin: bottom center;
	transition: transform .5s ease;
}
.c7wp-wrap .c7-product-collection .c7-product:hover .c7-product__image img,
#c7-content .c7-product-collection .c7-product:hover .c7-product__image img {
	transform: scale(1.06);
}

/* Details panel */
.c7wp-wrap .c7-product-collection .c7-product__details,
#c7-content .c7-product-collection .c7-product__details,
.c7wp-wrap .c7-related-products .c7-product__details,
#c7-content .c7-related-products .c7-product__details,
.c7wp-wrap .c7-product-allocation .c7-product__details,
#c7-content .c7-product-allocation .c7-product__details {
	flex: 1 1 auto;
	display: flex;
	flex-direction: column;
	padding: var(--lagar-c7-card-pad);
}

/* Title – Lagar h5 (Cormorant Infant 500, ~26px) */
.c7wp-wrap .c7-product-collection .c7-product__title,
#c7-content .c7-product-collection .c7-product__title,
.c7wp-wrap .c7-related-products .c7-product__title,
#c7-content .c7-related-products .c7-product__title,
.c7wp-wrap .c7-product-allocation .c7-product__title,
#c7-content .c7-product-allocation .c7-product__title {
	font-family: var(--vamtam-h5-font-family, "Cormorant Infant"), serif;
	font-size: var(--vamtam-h5-font-size, 26px);
	font-weight: var(--vamtam-h5-font-weight, 500);
	line-height: var(--vamtam-h5-line-height, 1.2em);
	color: var(--vamtam-h5-color, #545D5C);
	letter-spacing: 0;
	text-transform: none;
	margin: 0 0 6px;
}
.c7wp-wrap .c7-product__title a, #c7-content .c7-product__title a {
	color: inherit;
}
.c7wp-wrap .c7-product__title a:hover, #c7-content .c7-product__title a:hover {
	color: var(--vamtam-accent-color-1, #B98D58);
}

/* Subtitle (vintage / appellation) – small tracked label in grey */
.c7wp-wrap .c7-product__subtitle, #c7-content .c7-product__subtitle {
	color: var(--vamtam-accent-color-4, #909090);
	font-size: 12px;
	letter-spacing: 2px;
	margin-bottom: 12px;
}

/* Teaser copy – body font, a notch smaller */
.c7wp-wrap .c7-product__teaser, #c7-content .c7-product__teaser {
	font-size: 18px;
	line-height: 1.4;
	color: var(--vamtam-primary-font-color, #545D5C);
	margin-bottom: 16px;
}
.c7wp-wrap .c7-product__teaser p:last-child, #c7-content .c7-product__teaser p:last-child {
	margin-bottom: 0;
}

/* Price – copy of `.products.vamtam-wc .product span.price`:
   gold, h6 font (Alata), uppercase, tracked */
.c7wp-wrap .c7-product__add-to-cart__price,
#c7-content .c7-product__add-to-cart__price {
	font-family: var(--lagar-c7-label-font);
	font-size: var(--vamtam-h6-font-size, 14px);
	font-weight: 400;
	line-height: 1.3;
	letter-spacing: 4px;
	text-transform: uppercase;
	color: var(--vamtam-accent-color-1, #B98D58);
	margin: 14px 0 18px;
}
.c7wp-wrap .c7-price--original, #c7-content .c7-price--original {
	color: var(--vamtam-accent-color-4, #909090);
	letter-spacing: 2px;
}
.c7wp-wrap .c7-price--discounted, #c7-content .c7-price--discounted {
	color: var(--vamtam-accent-color-1, #B98D58);
}
.c7wp-wrap .c7-product__add-to-cart__price__variant,
#c7-content .c7-product__add-to-cart__price__variant {
	font-size: 12px;
	letter-spacing: 2px;
	color: var(--vamtam-accent-color-4, #909090);
}
.c7wp-wrap .c7-product__add-to-cart__price__action-message p,
#c7-content .c7-product__add-to-cart__price__action-message p {
	border-radius: 0;
	border-color: var(--vamtam-default-line-color, #DEDDD9);
	font-family: var(--vamtam-primary-font-font-family, "Cormorant Infant"), serif;
	font-size: 16px;
	letter-spacing: 0;
	text-transform: none;
	color: var(--vamtam-primary-font-color, #545D5C);
}

/* Add-to-cart row pinned to the bottom of the card */
.c7wp-wrap .c7-product-collection .c7-product__add-to-cart,
#c7-content .c7-product-collection .c7-product__add-to-cart,
.c7wp-wrap .c7-related-products .c7-product__add-to-cart,
#c7-content .c7-related-products .c7-product__add-to-cart {
	margin-top: auto;
}
.c7wp-wrap .c7-product__add-to-cart__form,
#c7-content .c7-product__add-to-cart__form {
	display: flex;
	justify-content: center;
	align-items: stretch;
	gap: 10px;
	margin: 0;
}
.c7wp-wrap .c7-product__add-to-cart__form__quantity,
#c7-content .c7-product__add-to-cart__form__quantity,
.c7wp-wrap .c7-product__add-to-cart__form__quantity--select,
#c7-content .c7-product__add-to-cart__form__quantity--select {
	margin-right: 0;
	max-width: 64px;
	width: 64px;
}
.c7wp-wrap .c7-product__add-to-cart__form .c7-btn,
#c7-content .c7-product__add-to-cart__form .c7-btn {
	flex: 1 1 auto;
}

/* Login-to-see-price message */
.c7wp-wrap .c7-product__login-message, #c7-content .c7-product__login-message {
	font-size: 16px;
	color: var(--vamtam-accent-color-4, #909090);
}

/* --------------------------------------------------------------------------
   4. Buttons
      Specificity note: the Elementor kit rule `.elementor-kit-13 button`
      (transparent bg, gold text, padding 20px 0) and the theme's global
      `button` rule (bold 16px Cormorant, padding 22px 27px) both outrank
      Commerce7's own `.c7-btn--primary`, so C7 buttons would otherwise render
      as bare gold text. `body .c7wp-wrap .c7-btn` (0,2,1) wins over both.
   -------------------------------------------------------------------------- */
body .c7wp-wrap .c7-btn,
body #c7-content .c7-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	box-sizing: border-box;
	min-height: 0;
	height: auto;
	border: 1px solid transparent;
	border-radius: var(--c7-button-border-radius);
	padding: var(--vamtam-button-solid-padding, 16px 27px);
	font-family: var(--lagar-c7-label-font);
	font-size: var(--vamtam-h6-font-size, 14px);
	font-weight: 400;
	line-height: 1.2;
	letter-spacing: 3px;
	text-transform: uppercase;
	text-decoration: none;
	text-shadow: none;
	background: var(--c7-alt-button-bg);
	color: var(--c7-alt-button-text-color);
	transition: all .3s !important;
	cursor: pointer;
}
body .c7wp-wrap .c7-btn--primary,
body #c7-content .c7-btn--primary,
body .c7wp-wrap .c7-btn--primary--small,
body #c7-content .c7-btn--primary--small {
	background: var(--c7-primary-button-bg);
	color: var(--c7-primary-button-text-color);
	border-color: var(--c7-primary-button-bg);
}
body .c7wp-wrap .c7-btn--primary:not([disabled]):hover,
body #c7-content .c7-btn--primary:not([disabled]):hover,
body .c7wp-wrap .c7-btn--primary:not([disabled]):focus,
body #c7-content .c7-btn--primary:not([disabled]):focus,
body .c7wp-wrap .c7-btn--primary--small:not([disabled]):hover,
body #c7-content .c7-btn--primary--small:not([disabled]):hover {
	background: var(--c7-primary-button-bg-hover);
	border-color: var(--c7-primary-button-bg-hover);
	color: #fff;
	text-decoration: none;
}
body .c7wp-wrap .c7-btn--alt,
body #c7-content .c7-btn--alt,
body .c7wp-wrap .c7-btn--alt--small,
body #c7-content .c7-btn--alt--small {
	background: transparent;
	color: var(--vamtam-accent-color-2, #545D5C);
	border-color: var(--vamtam-accent-color-2, #545D5C);
}
body .c7wp-wrap .c7-btn--alt:not([disabled]):hover,
body #c7-content .c7-btn--alt:not([disabled]):hover,
body .c7wp-wrap .c7-btn--alt--small:not([disabled]):hover,
body #c7-content .c7-btn--alt--small:not([disabled]):hover {
	background: var(--vamtam-accent-color-2, #545D5C);
	color: #fff;
}
body .c7wp-wrap .c7-btn--primary--small,
body #c7-content .c7-btn--primary--small,
body .c7wp-wrap .c7-btn--alt--small,
body #c7-content .c7-btn--alt--small {
	padding: 10px 18px;
	font-size: 12px;
	letter-spacing: 2px;
}
body .c7wp-wrap .c7-btn[disabled]:not(.c7-btn--loading),
body #c7-content .c7-btn[disabled]:not(.c7-btn--loading) {
	opacity: .35;
	cursor: not-allowed;
}
/* "Sold out" style informational button */
body .c7wp-wrap .c7-btn--disabled-info,
body #c7-content .c7-btn--disabled-info,
body .c7wp-wrap .c7-btn.c7-btn--disabled-info[disabled],
body #c7-content .c7-btn.c7-btn--disabled-info[disabled] {
	background: transparent;
	border: 1px solid var(--vamtam-default-line-color, #DEDDD9);
	color: var(--vamtam-accent-color-4, #909090);
	opacity: 1;
}
/* keep the loading spinner centred at our padding */
body .c7wp-wrap .c7-btn--loading,
body #c7-content .c7-btn--loading {
	position: relative;
}
/* c7-btn--unstyled / c7-link should stay plain text, not a solid button */
body .c7wp-wrap .c7-btn--unstyled,
body #c7-content .c7-btn--unstyled,
body .c7wp-wrap .c7-link,
body #c7-content .c7-link {
	background: none;
	border: 0;
	padding: 0;
	font-family: inherit;
	font-size: inherit;
	letter-spacing: 0;
	text-transform: none;
	color: var(--vamtam-body-link-regular, #242E35);
}
body .c7wp-wrap .c7-link:hover, body #c7-content .c7-link:hover {
	color: var(--vamtam-body-link-hover, #B98D58);
}

/* --- OPTIONAL: "text-link" button variant --------------------------------
   The Elementor kit's global button on this site is *not* a solid block: it
   is transparent, gold Alata 14px, hover ink (#242E35). If you'd rather the
   add-to-cart match that exactly, uncomment this block.
------------------------------------------------------------------------------
body .c7wp-wrap .c7-product-collection .c7-btn--primary,
body #c7-content .c7-product-collection .c7-btn--primary {
	background: transparent;
	border: 0;
	border-bottom: 1px solid currentColor;
	padding: 6px 0;
	color: var(--vamtam-btn-text-color, #B98D58);
	flex: 0 0 auto;
}
body .c7wp-wrap .c7-product-collection .c7-btn--primary:not([disabled]):hover,
body #c7-content .c7-product-collection .c7-btn--primary:not([disabled]):hover {
	background: transparent;
	color: var(--vamtam-btn-hover-text-color, #242E35);
}
----------------------------------------------------------------------------- */

/* --------------------------------------------------------------------------
   5. Form fields (quantity box, collection filters/sort selects)
      Mirrors theme form-inputs.less: 1px line border, square, transparent,
      gold border on focus.
   -------------------------------------------------------------------------- */
body .c7wp-wrap .c7-form input[type='text'],
body .c7wp-wrap .c7-form input[type='email'],
body .c7wp-wrap .c7-form input[type='number'],
body .c7wp-wrap .c7-form input[type='tel'],
body .c7wp-wrap .c7-form input[type='password'],
body .c7wp-wrap .c7-form textarea,
body .c7wp-wrap .c7-form select,
body #c7-content .c7-form input[type='text'],
body #c7-content .c7-form input[type='email'],
body #c7-content .c7-form input[type='number'],
body #c7-content .c7-form input[type='tel'],
body #c7-content .c7-form input[type='password'],
body #c7-content .c7-form textarea,
body #c7-content .c7-form select {
	box-sizing: border-box;
	height: auto;
	min-height: 0;
	margin: 0;
	padding: 14px 16px;
	border: 1px solid var(--vamtam-default-line-color, #DEDDD9);
	border-radius: var(--vamtam-border-radius-small, 0);
	background-color: transparent;
	color: var(--vamtam-accent-color-2, #545D5C);
	font-family: var(--vamtam-primary-font-font-family, "Cormorant Infant"), serif;
	font-size: 18px;
	line-height: 1.4em;
	box-shadow: none;
	transition: border-color .3s;
}
body .c7wp-wrap .c7-form input:focus:not([disabled]),
body .c7wp-wrap .c7-form select:focus:not([disabled]),
body .c7wp-wrap .c7-form textarea:focus:not([disabled]),
body #c7-content .c7-form input:focus:not([disabled]),
body #c7-content .c7-form select:focus:not([disabled]),
body #c7-content .c7-form textarea:focus:not([disabled]) {
	border-color: var(--vamtam-accent-color-1, #B98D58);
	box-shadow: none;
}
/* The `outline: 0` that used to live in the rule above applied to ALL focus, keyboard included,
   which is cause (a) of the 82 indicator-less tab stops §26 fixes. Narrowed to pointer focus:
   `:focus:not(:focus-visible)` keeps the quiet look when a field is clicked, and leaves the
   keyboard ring to §26. */
body .c7wp-wrap .c7-form input:focus:not(:focus-visible):not([disabled]),
body .c7wp-wrap .c7-form select:focus:not(:focus-visible):not([disabled]),
body .c7wp-wrap .c7-form textarea:focus:not(:focus-visible):not([disabled]),
body #c7-content .c7-form input:focus:not(:focus-visible):not([disabled]),
body #c7-content .c7-form select:focus:not(:focus-visible):not([disabled]),
body #c7-content .c7-form textarea:focus:not(:focus-visible):not([disabled]) {
	outline: 0;
}
/* quantity box in cards: same height as the button, centred digits */
body .c7wp-wrap .c7-product__add-to-cart__form__quantity input,
body #c7-content .c7-product__add-to-cart__form__quantity input {
	height: 100%;
	padding: 12px 6px;
	text-align: center;
}
body .c7wp-wrap .c7-form select,
body #c7-content .c7-form select {
	padding-right: 36px !important;
	margin-bottom: 0 !important;
}
body .c7wp-wrap .c7-form label,
body #c7-content .c7-form label,
body .c7wp-wrap .c7-form__field label,
body #c7-content .c7-form__field label {
	font-family: var(--lagar-c7-label-font);
	font-size: 12px;
	letter-spacing: 2px;
	text-transform: uppercase;
	color: var(--vamtam-accent-color-2, #545D5C);
}

/* Collection filters (category / sort selects) */
.c7wp-wrap .c7-filters, #c7-content .c7-filters {
	justify-content: center;
	gap: 16px;
	margin-bottom: 10px;
}

/* --------------------------------------------------------------------------
   6. Pagination – square, tracked numerals, gold active
   -------------------------------------------------------------------------- */
.c7wp-wrap .c7-pagination, #c7-content .c7-pagination {
	margin-top: 10px;
}
.c7wp-wrap .c7-pagination__pages a,
.c7wp-wrap .c7-pagination__pages button,
#c7-content .c7-pagination__pages a,
#c7-content .c7-pagination__pages button {
	border-radius: 0;
	width: 40px;
	height: 40px;
	background: transparent;
	color: var(--vamtam-accent-color-2, #545D5C);
	font-family: var(--lagar-c7-label-font);
	font-size: 14px;
	padding: 0;
	letter-spacing: 0;
	border: 1px solid transparent;
}
.c7wp-wrap .c7-pagination__pages a:not([disabled]):hover,
.c7wp-wrap .c7-pagination__pages button:not([disabled]):hover,
#c7-content .c7-pagination__pages a:not([disabled]):hover,
#c7-content .c7-pagination__pages button:not([disabled]):hover {
	background: transparent;
	color: var(--vamtam-accent-color-1, #B98D58);
}
.c7wp-wrap .c7-pagination__pages a.c7-active,
.c7wp-wrap .c7-pagination__pages button.c7-active,
#c7-content .c7-pagination__pages a.c7-active,
#c7-content .c7-pagination__pages button.c7-active {
	background: transparent;
	border-color: var(--vamtam-accent-color-1, #B98D58);
	color: var(--vamtam-accent-color-1, #B98D58);
}
.c7wp-wrap .c7-pagination__total, #c7-content .c7-pagination__total {
	font-size: 16px;
	color: var(--vamtam-accent-color-4, #909090);
}

/* Breadcrumbs */
.c7wp-wrap .c7-breadcrumbs li, #c7-content .c7-breadcrumbs li {
	border-radius: 0;
	padding: 4px 8px;
}
.c7wp-wrap .c7-breadcrumbs .c7-active, #c7-content .c7-breadcrumbs .c7-active {
	background: transparent;
	color: var(--vamtam-accent-color-1, #B98D58);
}

/* Messages / notices */
.c7wp-wrap .c7-message, #c7-content .c7-message,
.c7wp-wrap .c7-carrot, #c7-content .c7-carrot {
	border-radius: 0;
	border: 1px solid var(--vamtam-default-line-color, #DEDDD9);
	background: var(--vamtam-accent-color-8, #F9F8F4);
	font-size: 18px;
}

/* --------------------------------------------------------------------------
   7. Responsive – align with Lagar/Elementor breakpoints (1024 / 767)
   -------------------------------------------------------------------------- */
@media screen and (min-width: 1201px) {
	.c7wp-wrap, #c7-content { --lagar-c7-grid-cols: 3; }
}
@media screen and (max-width: 1024px) {
	.c7wp-wrap, #c7-content { --lagar-c7-grid-cols: 2; --lagar-c7-grid-gap: 24px; }
}
@media screen and (max-width: 767px) {
	.c7wp-wrap, #c7-content {
		--lagar-c7-grid-cols: 1;
		--lagar-c7-grid-gap: 24px;
		--lagar-c7-card-pad: 24px 16px 26px;
	}
	/* §44 S2 (layout swarm): the COLLECTION grid goes 2-up on phones (was
	   1-up via the rule above). 39 wines × ~550 px cards made /wines/
	   24,900 px tall at 390 (29.5 screens). Scoped to .c7-product-collection
	   so related-product and club-allocation lists keep their 1-up cards.
	   Gap 24 → 12, card padding 24/16/26 → 16/10/18, bottle 260 → 170 px
	   (below); the compact card itself (title, price, one-row qty + button,
	   44 px controls) is §44 S2. */
	.c7wp-wrap .c7-product-collection, #c7-content .c7-product-collection {
		--lagar-c7-grid-cols: 2;
		--lagar-c7-grid-gap: 12px;
		--lagar-c7-card-pad: 16px 10px 18px;
	}
	.c7wp-wrap h1.c7-h1, #c7-content h1.c7-h1 {
		font-size: var(--vamtam-h3-font-size, 34px);
	}
	.c7wp-wrap .c7-product-collection .c7-product__image img,
	#c7-content .c7-product-collection .c7-product__image img {
		max-height: 170px;
	}
	.c7wp-wrap .c7-filters .c7-form__field, #c7-content .c7-filters .c7-form__field {
		max-width: none;
	}
}
@media (max-width: 480px) {
	.c7wp-wrap .c7-product__add-to-cart__form,
	#c7-content .c7-product__add-to-cart__form {
		flex-wrap: wrap;
	}
	.c7wp-wrap .c7-product__add-to-cart__form .c7-btn,
	#c7-content .c7-product__add-to-cart__form .c7-btn {
		flex-basis: 100%;
	}
}

/* --------------------------------------------------------------------------
   8. OPTIONAL (unscoped) – side cart, modals, header cart/login are rendered
      by Commerce7 outside `.c7wp-wrap`/`#c7-content` (into <body>), so the
      token remap above does not reach them. Uncomment to apply the same
      palette site-wide. Deliberately left off to honour the "no leak" rule.
------------------------------------------------------------------------------
:root {
	--c7-font-family: var(--vamtam-primary-font-font-family, "Cormorant Infant"), serif;
	--c7-heading-font-family: var(--vamtam-h4-font-family, "Cormorant Infant"), serif;
	--c7-body-text-color: var(--vamtam-primary-font-color, #545D5C);
	--c7-heading-text-color: var(--vamtam-h4-color, #545D5C);
	--c7-primary-color: var(--vamtam-accent-color-2, #545D5C);
	--c7-primary-color-dark: var(--vamtam-accent-color-3, #242E35);
	--c7-primary-color-text: var(--vamtam-accent-color-1, #B98D58);
	--c7-primary-button-bg: var(--vamtam-accent-color-2, #545D5C);
	--c7-primary-button-bg-hover: var(--vamtam-accent-color-3, #242E35);
	--c7-border-color: var(--vamtam-default-line-color, #DEDDD9);
	--c7-bg-alt: var(--vamtam-accent-color-8, #F9F8F4);
	--c7-border-radius: 0px; --c7-button-border-radius: 0px;
	--c7-field-border-radius: 0px; --c7-modal-border-radius: 0px;
	--c7-cart-count-bg: var(--vamtam-accent-color-1, #B98D58);
}
----------------------------------------------------------------------------- */

/* --------------------------------------------------------------------------
   9. Embedded collection widget (Elementor `commerce7-collection`) clean-up
      The v2 widget renders its own nested "All Wines" <h1> (three times, from
      nested .c7-product-collection wrappers) plus a "Filters can only be used
      on Collection pages" notice. On an embedded widget the section already
      has a theme heading and filters genuinely cannot work, so both are noise.
      Scoped to data-c7-type="collection" ONLY, so the real Commerce7 route
      pages (/collection/, /wine/) keep their headings and working filters.
--------------------------------------------------------------------------- */
.c7wp-wrap[data-c7-type="collection"] .c7-product-collection > div > h1,
.c7wp-wrap[data-c7-type="collection"] .c7-product-collection h1.c7-h1,
.c7wp-wrap[data-c7-type="collection"] .c7-filters {
	display: none !important;
}

/* ==========================================================================
   Commerce7 PRODUCT DETAIL PAGE (custom template "Sunstone PDP 2026")
   --------------------------------------------------------------------------
   Append to:  web/app/themes/lagar-child/style.css  (after section 9)
   Pairs with: /tmp/c7/pdp/02-product-template.html
   Scope:      every selector is under `.c7wp-wrap` or `#c7-content`, and most
               are further scoped to `.ss-pdp` (the template's own root), so
               nothing here can reach the rest of the site.
   Tokens:     reuses the --c7-* / --vamtam-* remap established in §1. No new
               colour literals except as var() fallbacks.
   Breakpoints: 1024px (two-col / stacked, matches Lagar+Elementor) and 767px.
   ========================================================================== */

/* --------------------------------------------------------------------------
   10. PDP local tokens + root
   -------------------------------------------------------------------------- */
.c7wp-wrap .ss-pdp,
#c7-content .ss-pdp {
	/* local knobs — override these, not the rules below */
	--ss-pdp-col-gap:        60px;
	--ss-pdp-gallery-w:      1.05fr;   /* left column */
	--ss-pdp-buy-w:          1fr;      /* right column */
	--ss-pdp-block-gap:      70px;     /* vertical rhythm between sections */
	--ss-pdp-sticky-top:     120px;    /* clears the Lagar fixed header */
	--ss-pdp-rule:           1px solid var(--vamtam-default-line-color, #DEDDD9);
	--ss-pdp-paper:          var(--vamtam-accent-color-8, #F9F8F4);
	--ss-pdp-gold:           var(--vamtam-accent-color-1, #B98D58);
	--ss-pdp-slate:          var(--vamtam-accent-color-2, #545D5C);
	--ss-pdp-ink:            var(--vamtam-accent-color-3, #242E35);
	--ss-pdp-muted:          var(--vamtam-accent-color-4, #909090);
	--ss-pdp-label-font:     var(--lagar-c7-label-font, "Alata", sans-serif);
	--ss-pdp-body-font:      var(--vamtam-primary-font-font-family, "Cormorant Infant"), serif;

	display: block;
	max-width: 1240px;
	margin: 0 auto;
	padding: 0 0 40px;
}

/* Shared section heading — Lagar h4-ish serif with a hairline underneath */
.c7wp-wrap .ss-pdp__section-title,
#c7-content .ss-pdp__section-title {
	font-family: var(--vamtam-h4-font-family, "Cormorant Infant"), serif;
	font-size: var(--vamtam-h4-font-size, 32px);
	font-weight: var(--vamtam-h4-font-weight, 400);
	line-height: 1.15em;
	color: var(--vamtam-h4-color, #545D5C);
	letter-spacing: 0;
	text-transform: none;
	margin: 0 0 24px;
	padding-bottom: 14px;
	border-bottom: var(--ss-pdp-rule);
}
.c7wp-wrap .ss-pdp__section-title--center,
#c7-content .ss-pdp__section-title--center {
	text-align: center;
}

/* --------------------------------------------------------------------------
   11. Above-the-fold: two columns at >=1024px, stacked below
       (base is the STACKED state, so no-media-query fallbacks stay usable)
   -------------------------------------------------------------------------- */
.c7wp-wrap .ss-pdp__hero,
#c7-content .ss-pdp__hero {
	display: grid;
	grid-template-columns: 1fr;
	gap: 36px;
	align-items: start;
	margin: 0 0 var(--ss-pdp-block-gap);
}

@media screen and (min-width: 1024px) {
	.c7wp-wrap .ss-pdp__hero,
	#c7-content .ss-pdp__hero {
		grid-template-columns: var(--ss-pdp-gallery-w) var(--ss-pdp-buy-w);
		gap: var(--ss-pdp-col-gap);
	}
	/* Sticky buy box. `align-items:start` on the grid gives the column its
	   natural height, which is what makes position:sticky work here. */
	.c7wp-wrap .ss-pdp__buy-inner,
	#c7-content .ss-pdp__buy-inner {
		position: sticky;
		top: var(--ss-pdp-sticky-top);
	}
}

/* ---- Gallery ------------------------------------------------------------ */
.c7wp-wrap .ss-pdp__gallery-main,
#c7-content .ss-pdp__gallery-main {
	position: relative;
	background: var(--ss-pdp-paper);
	padding: 40px 20px;
	text-align: center;
	overflow: hidden;
}
.c7wp-wrap .ss-pdp__gallery-main img,
#c7-content .ss-pdp__gallery-main img {
	display: block;
	margin: 0 auto;
	width: auto;
	max-width: 100%;
	/* live render is 350x685; cap keeps tall bottle shots from dominating */
	max-height: 685px;
	object-fit: contain;
}
.c7wp-wrap .ss-pdp__gallery-main--empty,
#c7-content .ss-pdp__gallery-main--empty {
	min-height: 320px;
}
.c7wp-wrap .ss-pdp__gallery-main picture,
#c7-content .ss-pdp__gallery-main picture {
	display: block;
}

.c7wp-wrap .ss-pdp__thumbs,
#c7-content .ss-pdp__thumbs {
	display: flex;
	flex-wrap: wrap;
	gap: 12px;
	margin-top: 12px;
}
.c7wp-wrap .ss-pdp__thumb,
#c7-content .ss-pdp__thumb {
	display: block;
	flex: 0 0 auto;
	width: 78px;
	padding: 8px;
	background: var(--ss-pdp-paper);
	border: 1px solid transparent;
	cursor: pointer;
	transition: border-color .3s ease;
}
.c7wp-wrap .ss-pdp__thumb:hover,
#c7-content .ss-pdp__thumb:hover {
	border-color: var(--ss-pdp-gold);
}
.c7wp-wrap .ss-pdp__thumb img,
#c7-content .ss-pdp__thumb img {
	display: block;
	width: 100%;
	height: auto;
}

/* --------------------------------------------------------------------------
   12. Badges, buy box, trust row
   -------------------------------------------------------------------------- */
.c7wp-wrap .ss-pdp__badge,
#c7-content .ss-pdp__badge {
	position: absolute;
	top: 20px;
	left: 20px;
	z-index: 2;
	display: inline-block;
	max-width: calc(100% - 40px);
	padding: 8px 14px;
	background: var(--ss-pdp-ink);
	color: #fff;
	font-family: var(--ss-pdp-label-font);
	font-size: 11px;
	font-weight: 400;
	line-height: 1.3;
	letter-spacing: 2px;
	text-transform: uppercase;
	border-radius: 0;
}
.c7wp-wrap .ss-pdp__badge--award,
#c7-content .ss-pdp__badge--award {
	background: var(--ss-pdp-gold);
	color: #fff;
}
/* second badge (medal) stacks under the first */
.c7wp-wrap .ss-pdp__badge--medal,
#c7-content .ss-pdp__badge--medal {
	top: 60px;
	background: var(--ss-pdp-ink);
}
/* the subtitle badge duplicates the award line in the buy box — hide the
   overlay on small screens where it crowds the bottle */
@media screen and (max-width: 767px) {
	.c7wp-wrap .ss-pdp__badge--award,
	#c7-content .ss-pdp__badge--award {
		display: none;
	}
	.c7wp-wrap .ss-pdp__badge--medal,
	#c7-content .ss-pdp__badge--medal {
		top: 16px;
	}
}

/* Eyebrow (vintage · varietal) */
.c7wp-wrap .ss-pdp__eyebrow,
#c7-content .ss-pdp__eyebrow {
	display: inline-block;
	font-family: var(--ss-pdp-label-font);
	font-size: 12px;
	letter-spacing: 3px;
	text-transform: uppercase;
	color: var(--ss-pdp-muted);
	margin: 0 0 10px;
}
.c7wp-wrap .ss-pdp__eyebrow--sep::before,
#c7-content .ss-pdp__eyebrow--sep::before {
	content: "·";
	margin: 0 8px;
	color: var(--ss-pdp-muted);
}

/* Title — Lagar h2 scale, left aligned (overrides §2's centred c7 h1) */
.c7wp-wrap .ss-pdp__title,
#c7-content .ss-pdp__title,
.c7wp-wrap .ss-pdp .c7-product__title,
#c7-content .ss-pdp .c7-product__title {
	font-family: var(--vamtam-h2-font-family, "Cormorant Infant"), serif;
	font-size: var(--vamtam-h2-font-size, 52px);
	font-weight: var(--vamtam-h2-font-weight, 300);
	line-height: 1.08em;
	color: var(--vamtam-h2-color, #242E35);
	letter-spacing: 0;
	text-align: left;
	text-transform: none;
	margin: 0 0 10px;
}

/* Award line under the title */
.c7wp-wrap .ss-pdp__award,
#c7-content .ss-pdp__award {
	font-family: var(--ss-pdp-label-font);
	font-size: 12px;
	letter-spacing: 2px;
	text-transform: uppercase;
	color: var(--ss-pdp-gold);
	margin: 0 0 18px;
}

/* Teaser as lede */
.c7wp-wrap .ss-pdp__lede,
#c7-content .ss-pdp__lede {
	font-family: var(--ss-pdp-body-font);
	font-size: 21px;
	line-height: 1.5;
	color: var(--ss-pdp-slate);
	margin: 0 0 24px;
	padding-bottom: 24px;
	border-bottom: var(--ss-pdp-rule);
}
.c7wp-wrap .ss-pdp__lede p:last-child,
#c7-content .ss-pdp__lede p:last-child {
	margin-bottom: 0;
}

/* ---- Cart block --------------------------------------------------------- */
.c7wp-wrap .ss-pdp__cart,
#c7-content .ss-pdp__cart {
	margin: 0 0 8px;
}
/* Price: bigger than the collection-card treatment inherited from §3 */
.c7wp-wrap .ss-pdp__cart .c7-product__add-to-cart__price,
#c7-content .ss-pdp__cart .c7-product__add-to-cart__price {
	font-size: 20px;
	letter-spacing: 4px;
	color: var(--ss-pdp-gold);
	margin: 0 0 20px;
}
/* Add-to-cart row: qty box + full-width button, left aligned (cards centre it) */
.c7wp-wrap .ss-pdp__cart .c7-product__add-to-cart__form,
#c7-content .ss-pdp__cart .c7-product__add-to-cart__form {
	justify-content: flex-start;
	gap: 12px;
}
.c7wp-wrap .ss-pdp__cart .c7-product__add-to-cart__form__quantity,
#c7-content .ss-pdp__cart .c7-product__add-to-cart__form__quantity {
	width: 80px;
	max-width: 80px;
}
body .c7wp-wrap .ss-pdp__cart .c7-btn--primary,
body #c7-content .ss-pdp__cart .c7-btn--primary {
	flex: 1 1 auto;
	min-height: 56px;
	font-size: 14px;
	letter-spacing: 3px;
}

/* Allocation messaging */
.c7wp-wrap .ss-pdp__allocation:not(:empty),
#c7-content .ss-pdp__allocation:not(:empty) {
	margin: 16px 0 0;
	font-size: 17px;
	color: var(--ss-pdp-slate);
}

/* ---- Trust row ---------------------------------------------------------- */
.c7wp-wrap .ss-pdp__trust,
#c7-content .ss-pdp__trust {
	list-style: none;
	margin: 26px 0 0;
	padding: 22px 0 0;
	border-top: var(--ss-pdp-rule);
	display: grid;
	grid-template-columns: 1fr;
	gap: 12px;
}
.c7wp-wrap .ss-pdp__trust-item,
#c7-content .ss-pdp__trust-item {
	display: flex;
	align-items: center;
	gap: 12px;
	margin: 0;
	padding: 0;
}
.c7wp-wrap .ss-pdp__trust-icon,
#c7-content .ss-pdp__trust-icon {
	flex: 0 0 auto;
	width: 22px;
	height: 22px;
	color: var(--ss-pdp-gold);
}
.c7wp-wrap .ss-pdp__trust-text,
#c7-content .ss-pdp__trust-text {
	font-family: var(--ss-pdp-body-font);
	font-size: 17px;
	line-height: 1.35;
	color: var(--ss-pdp-slate);
}
.c7wp-wrap .ss-pdp__trust-item--note .ss-pdp__trust-text,
#c7-content .ss-pdp__trust-item--note .ss-pdp__trust-text {
	font-size: 15px;
	color: var(--ss-pdp-muted);
}

/* --------------------------------------------------------------------------
   13. Wine spec panel
   -------------------------------------------------------------------------- */
.c7wp-wrap .ss-pdp__specs,
#c7-content .ss-pdp__specs {
	margin: 0 0 var(--ss-pdp-block-gap);
	padding: 36px 34px;
	background: var(--ss-pdp-paper);
}
.c7wp-wrap .ss-pdp__specs .ss-pdp__section-title,
#c7-content .ss-pdp__specs .ss-pdp__section-title {
	margin-top: 0;
}
.c7wp-wrap .ss-pdp__spec-grid,
#c7-content .ss-pdp__spec-grid {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	column-gap: 40px;
	row-gap: 0;
	margin: 0;
}
@media screen and (min-width: 1024px) {
	.c7wp-wrap .ss-pdp__spec-grid,
	#c7-content .ss-pdp__spec-grid {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}
}
@media screen and (max-width: 480px) {
	.c7wp-wrap .ss-pdp__spec-grid,
	#c7-content .ss-pdp__spec-grid {
		grid-template-columns: 1fr;
	}
}
.c7wp-wrap .ss-pdp__spec,
#c7-content .ss-pdp__spec {
	display: flex;
	justify-content: space-between;
	align-items: baseline;
	gap: 16px;
	padding: 13px 0;
	border-bottom: var(--ss-pdp-rule);
}
.c7wp-wrap .ss-pdp__spec--wide,
#c7-content .ss-pdp__spec--wide {
	grid-column: 1 / -1;
	flex-direction: column;
	align-items: flex-start;
	gap: 6px;
}
.c7wp-wrap .ss-pdp__spec dt,
#c7-content .ss-pdp__spec dt {
	flex: 0 0 auto;
	font-family: var(--ss-pdp-label-font);
	font-size: 11px;
	font-weight: 400;
	letter-spacing: 2px;
	text-transform: uppercase;
	color: var(--ss-pdp-muted);
	margin: 0;
}
.c7wp-wrap .ss-pdp__spec dd,
#c7-content .ss-pdp__spec dd {
	flex: 1 1 auto;
	margin: 0;
	font-family: var(--ss-pdp-body-font);
	font-size: 19px;
	line-height: 1.3;
	color: var(--ss-pdp-ink);
	text-align: right;
}
.c7wp-wrap .ss-pdp__spec--wide dd,
#c7-content .ss-pdp__spec--wide dd {
	text-align: left;
	font-size: 17px;
	color: var(--ss-pdp-slate);
}
/* If C7 wraps a palate value in its own markup, keep it inline */
.c7wp-wrap .ss-pdp__spec dd > div,
#c7-content .ss-pdp__spec dd > div {
	display: inline;
}
/* Hide C7's stock spec table — our panel replaces it */
.c7wp-wrap .ss-pdp .c7-product__specs,
#c7-content .ss-pdp .c7-product__specs {
	display: none;
}

/* --------------------------------------------------------------------------
   14. Long-form content — accordion by default, tabs at >=1024px
       Built on native <details>/<summary>: works with JS disabled, and the
       "tab" appearance below is purely visual (panels remain independently
       open/closable — a true one-at-a-time tabset needs JS, see notes).
   -------------------------------------------------------------------------- */
.c7wp-wrap .ss-pdp__longform,
#c7-content .ss-pdp__longform {
	margin: 0 0 var(--ss-pdp-block-gap);
}
.c7wp-wrap .ss-pdp__panel,
#c7-content .ss-pdp__panel {
	border-bottom: var(--ss-pdp-rule);
}
.c7wp-wrap .ss-pdp__panel:first-of-type,
#c7-content .ss-pdp__panel:first-of-type {
	border-top: var(--ss-pdp-rule);
}
.c7wp-wrap .ss-pdp__panel-head,
#c7-content .ss-pdp__panel-head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
	padding: 18px 2px;
	cursor: pointer;
	list-style: none;
	font-family: var(--ss-pdp-label-font);
	font-size: 13px;
	letter-spacing: 3px;
	text-transform: uppercase;
	color: var(--ss-pdp-slate);
	transition: color .3s ease;
}
.c7wp-wrap .ss-pdp__panel-head::-webkit-details-marker,
#c7-content .ss-pdp__panel-head::-webkit-details-marker {
	display: none;
}
.c7wp-wrap .ss-pdp__panel-head::after,
#c7-content .ss-pdp__panel-head::after {
	content: "+";
	flex: 0 0 auto;
	font-family: var(--ss-pdp-body-font);
	font-size: 24px;
	line-height: 1;
	color: var(--ss-pdp-gold);
}
.c7wp-wrap .ss-pdp__panel[open] > .ss-pdp__panel-head::after,
#c7-content .ss-pdp__panel[open] > .ss-pdp__panel-head::after {
	content: "\2013";
}
.c7wp-wrap .ss-pdp__panel-head:hover,
#c7-content .ss-pdp__panel-head:hover {
	color: var(--ss-pdp-gold);
}
.c7wp-wrap .ss-pdp__panel-body,
#c7-content .ss-pdp__panel-body {
	padding: 4px 2px 28px;
	font-family: var(--ss-pdp-body-font);
	font-size: 19px;
	line-height: 1.55;
	color: var(--ss-pdp-slate);
	max-width: 78ch;
}
/* Normalise the inconsistent <h3> headings inside C7's content blob */
.c7wp-wrap .ss-pdp__panel-body h3,
#c7-content .ss-pdp__panel-body h3,
.c7wp-wrap .ss-pdp__panel-body h4,
#c7-content .ss-pdp__panel-body h4 {
	font-family: var(--ss-pdp-label-font);
	font-size: 12px;
	font-weight: 400;
	letter-spacing: 3px;
	text-transform: uppercase;
	color: var(--ss-pdp-muted);
	margin: 28px 0 8px;
}
.c7wp-wrap .ss-pdp__panel-body h3:first-child,
#c7-content .ss-pdp__panel-body h3:first-child {
	margin-top: 8px;
}
.c7wp-wrap .ss-pdp__panel-body p,
#c7-content .ss-pdp__panel-body p {
	margin: 0 0 16px;
}
.c7wp-wrap .ss-pdp__panel-body p:last-child,
#c7-content .ss-pdp__panel-body p:last-child {
	margin-bottom: 0;
}

/* Tab-look at desktop: heads become a horizontal rail, open panel underlined */
@media screen and (min-width: 1024px) {
	.c7wp-wrap .ss-pdp__longform,
	#c7-content .ss-pdp__longform {
		border-top: var(--ss-pdp-rule);
		padding-top: 8px;
	}
	.c7wp-wrap .ss-pdp__panel,
	#c7-content .ss-pdp__panel {
		border-bottom: 0;
	}
	.c7wp-wrap .ss-pdp__panel:first-of-type,
	#c7-content .ss-pdp__panel:first-of-type {
		border-top: 0;
	}
	.c7wp-wrap .ss-pdp__panel-head,
	#c7-content .ss-pdp__panel-head {
		display: inline-flex;
		padding: 14px 0;
		margin-right: 34px;
		border-bottom: 2px solid transparent;
	}
	.c7wp-wrap .ss-pdp__panel-head::after,
	#c7-content .ss-pdp__panel-head::after {
		display: none;
	}
	.c7wp-wrap .ss-pdp__panel[open] > .ss-pdp__panel-head,
	#c7-content .ss-pdp__panel[open] > .ss-pdp__panel-head {
		color: var(--ss-pdp-ink);
		border-bottom-color: var(--ss-pdp-gold);
	}
	.c7wp-wrap .ss-pdp__panel-body,
	#c7-content .ss-pdp__panel-body {
		padding: 22px 0 34px;
		border-top: var(--ss-pdp-rule);
		margin-top: 6px;
	}
}

/* --------------------------------------------------------------------------
   15. Club upsell block
   -------------------------------------------------------------------------- */
.c7wp-wrap .ss-pdp__club,
#c7-content .ss-pdp__club {
	margin: 0 0 var(--ss-pdp-block-gap);
	padding: 54px 34px;
	background: var(--ss-pdp-ink);
	color: #fff;
	text-align: center;
}
.c7wp-wrap .ss-pdp__club-inner,
#c7-content .ss-pdp__club-inner {
	max-width: 620px;
	margin: 0 auto;
}
.c7wp-wrap .ss-pdp__club-eyebrow,
#c7-content .ss-pdp__club-eyebrow {
	font-family: var(--ss-pdp-label-font);
	font-size: 11px;
	letter-spacing: 4px;
	text-transform: uppercase;
	color: var(--ss-pdp-gold);
	margin: 0 0 14px;
}
.c7wp-wrap .ss-pdp__club-title,
#c7-content .ss-pdp__club-title {
	font-family: var(--vamtam-h3-font-family, "Cormorant Infant"), serif;
	font-size: var(--vamtam-h3-font-size, 40px);
	font-weight: 300;
	line-height: 1.1em;
	color: #fff;
	letter-spacing: 0;
	text-transform: none;
	margin: 0 0 16px;
	padding: 0;
	border: 0;
}
.c7wp-wrap .ss-pdp__club-copy,
#c7-content .ss-pdp__club-copy {
	font-family: var(--ss-pdp-body-font);
	font-size: 19px;
	line-height: 1.5;
	color: rgba(255, 255, 255, .82);
	margin: 0 0 26px;
}
.c7wp-wrap .ss-pdp__club-cta,
#c7-content .ss-pdp__club-cta {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: center;
	gap: 20px;
}
/* Force the C7 join button to the gold-on-ink treatment */
body .c7wp-wrap .ss-pdp__club .c7-btn,
body #c7-content .ss-pdp__club .c7-btn,
body .c7wp-wrap .ss-pdp__club .c7-btn--primary,
body #c7-content .ss-pdp__club .c7-btn--primary {
	background: var(--ss-pdp-gold);
	border-color: var(--ss-pdp-gold);
	color: #fff;
}
body .c7wp-wrap .ss-pdp__club .c7-btn--primary:not([disabled]):hover,
body #c7-content .ss-pdp__club .c7-btn--primary:not([disabled]):hover {
	background: #fff;
	border-color: #fff;
	color: var(--ss-pdp-ink);
}
.c7wp-wrap .ss-pdp__club a:not(.c7-btn),
#c7-content .ss-pdp__club a:not(.c7-btn) {
	color: #fff;
	border-bottom: 1px solid var(--ss-pdp-gold);
	padding-bottom: 3px;
	font-family: var(--ss-pdp-label-font);
	font-size: 12px;
	letter-spacing: 3px;
	text-transform: uppercase;
}
.c7wp-wrap .ss-pdp__club a:not(.c7-btn):hover,
#c7-content .ss-pdp__club a:not(.c7-btn):hover {
	color: var(--ss-pdp-gold);
}
.c7wp-wrap .ss-pdp__club-fine,
#c7-content .ss-pdp__club-fine {
	margin: 22px 0 0;
	font-size: 15px;
	color: rgba(255, 255, 255, .55);
}

/* --------------------------------------------------------------------------
   16. Related products grid
       Card chrome is already handled by §3 (`.c7-related-products .c7-product`).
       Here we only set the grid density and hide the block when C7's
       personalization engine returns nothing.
   -------------------------------------------------------------------------- */
.c7wp-wrap .ss-pdp__related,
#c7-content .ss-pdp__related {
	margin: 0 0 20px;
}
.c7wp-wrap .ss-pdp__related .c7-related-products__product-list,
#c7-content .ss-pdp__related .c7-related-products__product-list {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 24px;
	margin: 30px 0 0;
	padding: 0;
	list-style: none;
}
@media screen and (min-width: 1024px) {
	.c7wp-wrap .ss-pdp__related .c7-related-products__product-list,
	#c7-content .ss-pdp__related .c7-related-products__product-list {
		grid-template-columns: repeat(4, minmax(0, 1fr));
		gap: var(--lagar-c7-grid-gap, 30px);
	}
}
@media screen and (max-width: 480px) {
	.c7wp-wrap .ss-pdp__related .c7-related-products__product-list,
	#c7-content .ss-pdp__related .c7-related-products__product-list {
		grid-template-columns: 1fr;
	}
}
.c7wp-wrap .ss-pdp__related .c7-product__image img,
#c7-content .ss-pdp__related .c7-product__image img {
	max-height: 260px;
}
/* Related cards: trim the teaser so cards stay even */
.c7wp-wrap .ss-pdp__related .c7-product__teaser,
#c7-content .ss-pdp__related .c7-product__teaser {
	font-size: 16px;
	display: -webkit-box;
	-webkit-line-clamp: 3;
	-webkit-box-orient: vertical;
	overflow: hidden;
}
/* Nothing returned by the personalization engine → no empty heading */
.c7wp-wrap .ss-pdp__related:not(:has(.c7-product)),
#c7-content .ss-pdp__related:not(:has(.c7-product)) {
	display: none;
}

/* --------------------------------------------------------------------------
   17. Mobile sticky add-to-cart bar
       JUSTIFICATION (measured): at 390x844 the real Add to Cart button sits
       at y=852 on a 2507px document — below the fold. At 1280px it is at
       y=518, already visible, so the bar is hidden from 1024px up.
   -------------------------------------------------------------------------- */
.c7wp-wrap .ss-pdp__stickybar,
#c7-content .ss-pdp__stickybar {
	position: fixed;
	left: 0;
	right: 0;
	bottom: 0;
	z-index: 999;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 14px;
	padding: 12px 16px calc(12px + env(safe-area-inset-bottom, 0px));
	background: #fff;
	border-top: var(--ss-pdp-rule);
	box-shadow: 0 -6px 24px -16px rgba(36, 46, 53, .5);
}
.c7wp-wrap .ss-pdp__stickybar-info,
#c7-content .ss-pdp__stickybar-info {
	min-width: 0;
	flex: 1 1 auto;
	display: flex;
	flex-direction: column;
	gap: 2px;
}
.c7wp-wrap .ss-pdp__stickybar-title,
#c7-content .ss-pdp__stickybar-title {
	font-family: var(--ss-pdp-body-font);
	font-size: 17px;
	line-height: 1.2;
	color: var(--ss-pdp-ink);
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}
.c7wp-wrap .ss-pdp__stickybar-sub,
#c7-content .ss-pdp__stickybar-sub {
	font-family: var(--ss-pdp-label-font);
	font-size: 10px;
	letter-spacing: 2px;
	text-transform: uppercase;
	color: var(--ss-pdp-muted);
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}
.c7wp-wrap .ss-pdp__stickybar-btn,
#c7-content .ss-pdp__stickybar-btn {
	flex: 0 0 auto;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 48px;
	padding: 12px 22px;
	background: var(--ss-pdp-slate);
	border: 1px solid var(--ss-pdp-slate);
	color: #fff;
	font-family: var(--ss-pdp-label-font);
	font-size: 12px;
	letter-spacing: 3px;
	text-transform: uppercase;
	text-decoration: none;
	transition: background .3s ease, color .3s ease;
}
.c7wp-wrap .ss-pdp__stickybar-btn:hover,
#c7-content .ss-pdp__stickybar-btn:hover,
.c7wp-wrap .ss-pdp__stickybar-btn:focus,
#c7-content .ss-pdp__stickybar-btn:focus {
	background: var(--ss-pdp-ink);
	border-color: var(--ss-pdp-ink);
	color: #fff;
}
/* Option B (live cart in the bar) – compact the C7 form if enabled */
.c7wp-wrap .ss-pdp__stickybar--live .c7-product__add-to-cart__price,
#c7-content .ss-pdp__stickybar--live .c7-product__add-to-cart__price {
	display: none;
}
.c7wp-wrap .ss-pdp__stickybar--live .c7-product__add-to-cart__form__quantity,
#c7-content .ss-pdp__stickybar--live .c7-product__add-to-cart__form__quantity {
	width: 56px;
	max-width: 56px;
}
/* Keep the last section clear of the fixed bar */
@media screen and (max-width: 1023px) {
	.c7wp-wrap .ss-pdp,
	#c7-content .ss-pdp {
		padding-bottom: 96px;
	}
}
/* Desktop: no bar, buy box is already sticky */
@media screen and (min-width: 1024px) {
	.c7wp-wrap .ss-pdp__stickybar,
	#c7-content .ss-pdp__stickybar {
		display: none;
	}
}
/* Users who prefer reduced motion still get the bar; nothing animates. */

/* --------------------------------------------------------------------------
   18. (removed) Page-level fixes for /product/ routes — the duplicate theme
       <h1> is now stripped server-side by commerce7-seo.php; no CSS needed.
   -------------------------------------------------------------------------- */

/* --------------------------------------------------------------------------
   19. Print — the PDP as a one-page tech sheet
   -------------------------------------------------------------------------- */
@media print {
	.c7wp-wrap .ss-pdp__stickybar,
	#c7-content .ss-pdp__stickybar,
	.c7wp-wrap .ss-pdp__club,
	#c7-content .ss-pdp__club,
	.c7wp-wrap .ss-pdp__related,
	#c7-content .ss-pdp__related,
	.c7wp-wrap .ss-pdp__cart,
	#c7-content .ss-pdp__cart {
		display: none !important;
	}
	.c7wp-wrap .ss-pdp__panel-body,
	#c7-content .ss-pdp__panel-body {
		display: block !important;
	}
}

/* --------------------------------------------------------------------------
   20. Real-data hardening (added after previewing the live catalogue)

   Three defects surfaced by rendering the template against all 54 real wines.
   Each is scoped and additive — nothing above this section is altered.
   -------------------------------------------------------------------------- */

/* 20a. ZERO-VARIANT WINES — 9 of 54 wines (2016-grand-reserve-clone-6,
   2019-villa-soleil, 2020-merlot-reserve-estat, 2020-rapsodie,
   2021-merlot-estate-magnum, 2021-rapsodie-magnum, 2021-syrah-reserve-magnum,
   2022-merlot-estate-magnum, 2023-rapsodie-magnium) are webStatus=Available
   but carry NO purchasable variant, so Commerce7 renders an EMPTY
   .ss-pdp__cart. Without this guard the mobile sticky bar still shows a
   prominent "Add to Cart" that anchors to a buy box with nothing in it.
   Hide the bar whenever the cart slot contains no actual buy button.
   We test for the BUTTON rather than using :empty, because the slot may
   contain an empty wrapper element (or whitespace/comments) rather than
   being truly empty — :empty would then fail to match and the guard would
   silently do nothing. "No button" is the honest test for "cannot be bought".
   NOTE: this is a presentation guard only. The underlying fault is catalogue
   data and must be fixed by the winery in Commerce7. */
.c7wp-wrap .ss-pdp:not(:has(.ss-pdp__cart button)) .ss-pdp__stickybar,
#c7-content .ss-pdp:not(:has(.ss-pdp__cart button)) .ss-pdp__stickybar {
	display: none !important;
}

/* 20b. STICKY-BAR TITLE OVERFLOW — 15 of 54 titles exceed the ~189px slot
   (worst: "30th Anniversary XXX 2022 Cabernet Sauvignon", 44 chars).
   Truncate rather than wrap, so the bar keeps its fixed height. */
.c7wp-wrap .ss-pdp__stickybar-title,
#c7-content .ss-pdp__stickybar-title {
	display: block;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
	max-width: 100%;
}
.c7wp-wrap .ss-pdp__stickybar-info,
#c7-content .ss-pdp__stickybar-info {
	min-width: 0; /* allows the flex child to actually shrink */
	flex: 1 1 auto;
}

/* 20c. EMPTY GALLERY — 2021-villa-reserve-3l has no image at all, leaving a
   350x320 blank cream block that reads as a failed image load. Give it an
   explicit, styled empty state so it reads as intentional. */
.c7wp-wrap .ss-pdp__gallery-main--empty::after,
#c7-content .ss-pdp__gallery-main--empty::after {
	content: "Bottle photography coming soon";
	display: flex;
	align-items: center;
	justify-content: center;
	min-height: 320px;
	padding: 0 24px;
	font-family: var(--vamtam-h5-font-family, "Alata"), sans-serif;
	font-size: 13px;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--vamtam-accent-color-1, #B98D58);
	border: 1px solid var(--ss-pdp-line, #DEDDD9);
	text-align: center;
}

/* ==========================================================================
   Commerce7 CROSS-SELL — "More from this wine" (mu-plugin: commerce7-crosssell.php)
   --------------------------------------------------------------------------
   Scope:      every selector below is prefixed `.ssx-family`, a class used by
               nothing else on the site. Deliberately NOT `.ss-pdp`, which is
               reserved for the (not yet installed) Commerce7 PDP template, so
               the two cannot collide.
   Position:   the module is appended by `the_content`, i.e. it sits AFTER the
               .wp-block-c7wp-default wrapper and therefore outside #c7-content,
               which Commerce7 rewrites wholesale on its async render.
   Tokens:     reuses the Lagar/child custom properties (gold #B98D58, slate
               #545D5C, ink #242E35, paper #F9F8F4, Cormorant Infant display,
               Alata labels, radius 0). No new colour literals except var()
               fallbacks.
   Breakpoints: 1024px (3-up), 700px (2-up), 520px (single column, 390px-safe).
   ========================================================================== */

.ssx-family {
	--ssx-gold:  var(--vamtam-accent-color-1, #B98D58);
	--ssx-slate: var(--vamtam-accent-color-2, #545D5C);
	--ssx-ink:   var(--vamtam-accent-color-3, #242E35);
	--ssx-paper: var(--vamtam-accent-color-8, #F9F8F4);
	--ssx-line:  var(--vamtam-default-line-color, #DEDDD9);
	--ssx-display-font: var(--vamtam-h2-font-family, "Cormorant Infant"), Georgia, serif;
	--ssx-label-font:   var(--lagar-c7-label-font, "Alata"), sans-serif;
	--ssx-gap: 28px;

	display: block;
	clear: both;
	margin: 72px 0 0;
	padding: 56px 0 8px;
	border-top: 1px solid var(--ssx-line);
	background: transparent;
}

.ssx-family__inner {
	max-width: 1180px;
	margin: 0 auto;
	padding: 0 24px;
	box-sizing: border-box;
}

/* --- heading ------------------------------------------------------------ */

.ssx-family__head {
	margin: 0 0 36px;
}

.ssx-family .ssx-family__title {
	margin: 0 0 10px;
	font-family: var(--ssx-display-font);
	font-weight: 400;
	font-size: clamp(26px, 3vw, 38px);
	line-height: 1.15;
	letter-spacing: 0.01em;
	color: var(--ssx-ink);
	text-transform: none;
}

.ssx-family .ssx-family__intro {
	margin: 0;
	font-family: var(--ssx-label-font);
	font-size: 13px;
	line-height: 1.6;
	letter-spacing: 0.06em;
	color: var(--ssx-slate);
}

/* --- grid --------------------------------------------------------------- */

.ssx-family .ssx-family__grid {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: var(--ssx-gap);
	margin: 0;
	padding: 0;
	list-style: none;
}

/* Never stretch one or two cards across the full width — cap the track count
   at the number of cards actually rendered so a two-SKU family (e.g. Eros)
   does not produce two enormous cards. */
.ssx-family .ssx-family__grid--n1 { grid-template-columns: minmax(0, 280px); }
.ssx-family .ssx-family__grid--n2 { grid-template-columns: repeat(2, minmax(0, 280px)); }
.ssx-family .ssx-family__grid--n3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }

.ssx-family .ssx-family__item {
	margin: 0;
	padding: 0;
	list-style: none;
	min-width: 0;
}

.ssx-family .ssx-family__item::before,
.ssx-family .ssx-family__item::marker {
	content: none;
}

/* --- card --------------------------------------------------------------- */

.ssx-family .ssx-family__card {
	position: relative;
	display: flex;
	flex-direction: column;
	height: 100%;
	box-sizing: border-box;
	padding: 24px 20px 22px;
	border: 1px solid var(--ssx-line);
	border-radius: 0;
	background: var(--ssx-paper);
	text-decoration: none;
	color: inherit;
	transition: border-color 0.25s ease, transform 0.25s ease, box-shadow 0.25s ease;
}

.ssx-family .ssx-family__card:hover,
.ssx-family .ssx-family__card:focus-visible {
	border-color: var(--ssx-gold);
	transform: translateY(-3px);
	box-shadow: 0 10px 28px rgba(36, 46, 53, 0.09);
	text-decoration: none;
}

.ssx-family .ssx-family__card:focus-visible {
	outline: 2px solid var(--ssx-gold);
	outline-offset: 3px;
}

/* --- media -------------------------------------------------------------- */

.ssx-family .ssx-family__media {
	display: flex;
	align-items: center;
	justify-content: center;
	height: 200px;
	margin: 0 0 18px;
	overflow: hidden;
}

.ssx-family .ssx-family__media img {
	display: block;
	width: auto;
	height: 100%;
	max-width: 100%;
	object-fit: contain;
	border-radius: 0;
}

/* 2021 Villa Reserve 3L genuinely has no image in the feed. Give the gap an
   intentional look rather than a collapsed or broken-image card. */
.ssx-family .ssx-family__media--empty {
	background: linear-gradient(180deg, rgba(185, 141, 88, 0.07), rgba(185, 141, 88, 0));
	border-bottom: 1px solid var(--ssx-line);
}

/* --- large-format badge ------------------------------------------------- */

.ssx-family .ssx-family__badge {
	position: absolute;
	top: 0;
	left: 0;
	padding: 6px 12px;
	background: var(--ssx-gold);
	color: #fff;
	font-family: var(--ssx-label-font);
	font-size: 10px;
	line-height: 1.2;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	border-radius: 0;
}

.ssx-family .ssx-family__item--upsize .ssx-family__card {
	border-color: rgba(185, 141, 88, 0.55);
}

/* --- body --------------------------------------------------------------- */

.ssx-family .ssx-family__body {
	display: flex;
	flex-direction: column;
	flex: 1 1 auto;
	gap: 7px;
	min-width: 0;
}

.ssx-family .ssx-family__name {
	font-family: var(--ssx-display-font);
	font-size: 20px;
	line-height: 1.25;
	color: var(--ssx-ink);
}

.ssx-family .ssx-family__price {
	font-family: var(--ssx-label-font);
	font-size: 15px;
	letter-spacing: 0.04em;
	color: var(--ssx-gold);
}

.ssx-family .ssx-family__note {
	font-family: var(--ssx-label-font);
	font-size: 11px;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--ssx-gold);
}

.ssx-family .ssx-family__note--plain {
	color: var(--ssx-slate);
}

.ssx-family .ssx-family__cta {
	margin-top: auto;
	padding-top: 14px;
	font-family: var(--ssx-label-font);
	font-size: 11px;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: var(--ssx-slate);
}

.ssx-family .ssx-family__card:hover .ssx-family__cta,
.ssx-family .ssx-family__card:focus-visible .ssx-family__cta {
	color: var(--ssx-gold);
}

/* --- responsive --------------------------------------------------------- */

@media (max-width: 1024px) {
	.ssx-family .ssx-family__grid,
	.ssx-family .ssx-family__grid--n3 {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}
	.ssx-family { padding-top: 44px; margin-top: 56px; }
}

@media (max-width: 700px) {
	.ssx-family .ssx-family__grid,
	.ssx-family .ssx-family__grid--n2,
	.ssx-family .ssx-family__grid--n3 {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		--ssx-gap: 18px;
	}
	.ssx-family .ssx-family__media { height: 160px; }
}

/* Single column below 520px — covers the 390px iPhone viewport with room to
   spare and keeps the bottle shot legible instead of squeezing two per row. */
@media (max-width: 520px) {
	.ssx-family .ssx-family__grid,
	.ssx-family .ssx-family__grid--n1,
	.ssx-family .ssx-family__grid--n2,
	.ssx-family .ssx-family__grid--n3 {
		grid-template-columns: minmax(0, 1fr);
		gap: 16px;
	}
	.ssx-family { margin-top: 40px; padding: 34px 0 4px; }
	.ssx-family__inner { padding: 0 18px; }
	.ssx-family .ssx-family__media { height: 190px; }
	.ssx-family .ssx-family__card { padding: 20px 18px 18px; }
}

@media (prefers-reduced-motion: reduce) {
	.ssx-family .ssx-family__card { transition: none; }
	.ssx-family .ssx-family__card:hover { transform: none; }
}

/* =========================================================================
   21. SOLD-OUT RECOVERY BLOCK  (mu-plugin: commerce7-soldout-recovery.php)
   -------------------------------------------------------------------------
   Nine wines are published with webStatus "Available" but carry no purchasable
   variant, so Commerce7 renders a PDP with no price and no Add to Cart and no
   explanation. The mu-plugin server-renders a static recovery block AFTER the
   .wp-block-c7wp-default wrapper (never inside #c7-content, whose contents C7
   replaces on render). This layer styles it.

   Scoped entirely under .ss-soldout, which only ever exists when the plugin
   emits it, so nothing here can leak into the theme or into C7's own markup.
   ========================================================================= */

.ss-soldout {
	display: block;
	margin: 48px 0 8px;
	padding: 0;
	border-top: 1px solid var(--ss-pdp-line, #DEDDD9);
	border-bottom: 1px solid var(--ss-pdp-line, #DEDDD9);
	background: var(--ss-pdp-paper, #F9F8F4);
}

.ss-soldout__inner {
	max-width: 1100px;
	margin: 0 auto;
	padding: 40px 24px 44px;
}

.ss-soldout__eyebrow {
	margin: 0 0 10px;
	font-family: var(--vamtam-h5-font-family, "Alata"), sans-serif;
	font-size: 12px;
	line-height: 1.4;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: var(--vamtam-accent-color-1, #B98D58);
}

.ss-soldout__heading {
	margin: 0 0 14px;
	font-family: var(--vamtam-primary-font-font-family, "Cormorant Infant"), serif;
	font-size: 30px;
	line-height: 1.25;
	font-weight: 400;
	color: var(--ss-pdp-ink, #242E35);
	text-transform: none;
	letter-spacing: 0;
}

.ss-soldout__lede {
	margin: 0 0 26px;
	max-width: 60ch;
	font-family: var(--vamtam-primary-font-font-family, "Cormorant Infant"), serif;
	font-size: 18px;
	line-height: 1.55;
	color: var(--vamtam-primary-font-color, #545D5C);
}

/* Alternative product cards — plain anchors to /product/{slug}/. No Commerce7
   widget is used here: C7 does not mount widgets into markup it did not render,
   so a <c7-buy-product> placed in this block would stay permanently empty. */
.ss-soldout__grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
	gap: 16px;
	margin: 0 0 26px;
	padding: 0;
	list-style: none;
}

.ss-soldout__card {
	margin: 0;
	padding: 0;
	list-style: none;
}

.ss-soldout__card::before,
.ss-soldout__card::marker {
	content: none;
}

.ss-soldout__card-link {
	display: flex;
	flex-direction: column;
	gap: 8px;
	height: 100%;
	padding: 22px 22px 20px;
	border: 1px solid var(--ss-pdp-line, #DEDDD9);
	border-radius: 0;
	background: #FFFFFF;
	text-decoration: none;
	transition: border-color 0.18s ease, box-shadow 0.18s ease, transform 0.18s ease;
}

.ss-soldout__card-link:hover,
.ss-soldout__card-link:focus-visible {
	border-color: var(--vamtam-accent-color-1, #B98D58);
	box-shadow: 0 6px 20px rgba(36, 46, 53, 0.08);
	transform: translateY(-2px);
	text-decoration: none;
}

.ss-soldout__card-link:focus-visible {
	outline: 2px solid var(--vamtam-accent-color-1, #B98D58);
	outline-offset: 2px;
}

.ss-soldout__card-title {
	font-family: var(--vamtam-primary-font-font-family, "Cormorant Infant"), serif;
	font-size: 21px;
	line-height: 1.25;
	color: var(--ss-pdp-ink, #242E35);
}

.ss-soldout__card-price {
	font-family: var(--vamtam-h5-font-family, "Alata"), sans-serif;
	font-size: 15px;
	line-height: 1.3;
	color: var(--vamtam-primary-font-color, #545D5C);
}

.ss-soldout__card-cta {
	margin-top: auto;
	padding-top: 6px;
	font-family: var(--vamtam-h5-font-family, "Alata"), sans-serif;
	font-size: 11px;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: var(--vamtam-accent-color-1, #B98D58);
}

.ss-soldout__foot {
	margin: 0;
}

.ss-soldout__all {
	display: inline-block;
	font-family: var(--vamtam-h5-font-family, "Alata"), sans-serif;
	font-size: 12px;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: var(--ss-pdp-ink, #242E35);
	border-bottom: 1px solid var(--vamtam-accent-color-1, #B98D58);
	padding-bottom: 2px;
	text-decoration: none;
}

.ss-soldout__all:hover,
.ss-soldout__all:focus-visible {
	color: var(--vamtam-accent-color-1, #B98D58);
	text-decoration: none;
}

/* The no-sibling variant (2016 Grand Reserve Clone 6, 2019 Villa Soleil) has no
   card grid above it, so the catalogue link carries more visual weight. */
.ss-soldout__all--solo {
	padding: 14px 26px;
	border: 1px solid var(--vamtam-accent-color-1, #B98D58);
	border-radius: 0;
}

.ss-soldout__all--solo:hover,
.ss-soldout__all--solo:focus-visible {
	background: var(--vamtam-accent-color-1, #B98D58);
	color: #FFFFFF;
}

@media (max-width: 640px) {
	.ss-soldout {
		margin-top: 32px;
	}

	.ss-soldout__inner {
		padding: 30px 18px 32px;
	}

	.ss-soldout__heading {
		font-size: 25px;
	}

	.ss-soldout__grid {
		grid-template-columns: 1fr;
	}
}

@media (prefers-reduced-motion: reduce) {
	.ss-soldout__card-link,
	.ss-soldout__card-link:hover,
	.ss-soldout__card-link:focus-visible {
		transition: none;
		transform: none;
	}
}

/* ==========================================================================
   Commerce7 VISUAL TECHNICAL SPECS (mu-plugin: commerce7-spec-visual.php)

   Scope:      every selector below is prefixed `.ssv-specs`, a class emitted
               only by that mu-plugin. The `ssv-` prefix is deliberately
               distinct from `ss-pdp` (C7 product template), `ss-soldout`
               (sold-out recovery) and `ssx-` (cross-sell) so the three
               existing modules cannot be reached by anything here, and vice
               versa. Nothing below is a bare element or utility selector, so
               it cannot leak into the parent Lagar theme or into C7's own
               widget markup.

   Renders:    a small stack of horizontal scale bars — alcohol, pH, TA and
               aging — where the marker's horizontal offset IS the value's
               linear position inside the estate's real min/max. The bar is
               decoration; the number next to it is the source of truth and is
               always present as text (see the aria-hidden / .ssv-specs__sr
               pairing in the PHP).

   Colour:     gold marker on a slate hairline track. Colour is never the
               carrier of meaning — position plus adjacent numerals are — so
               the panel still reads correctly in greyscale, in forced-colours
               mode, and at 200% zoom.
   ========================================================================== */

.ssv-specs {
	--ssv-gold:  var(--vamtam-accent-color-1, #B98D58);
	--ssv-slate: var(--vamtam-accent-color-2, #545D5C);
	--ssv-ink:   var(--vamtam-accent-color-3, #242E35);
	--ssv-paper: var(--vamtam-accent-color-8, #F9F8F4);
	--ssv-line:  var(--vamtam-default-line-color, #DEDDD9);
	--ssv-display-font: var(--vamtam-h2-font-family, "Cormorant Infant"), Georgia, serif;
	--ssv-label-font:   var(--lagar-c7-label-font, "Alata"), sans-serif;

	/* Width of the label gutter on desktop. Wide enough for "Titratable
	   acidity" on two lines without wrapping mid-word. */
	--ssv-label-w: 150px;

	clear: both;
	margin: 56px 0 0;
	padding: 0;
	border-top: 1px solid var(--ssv-line);
}

/* The panel shares the page's content rail with the cross-sell module
   (.ssx-family__inner: max-width 1180px, centred, 24px gutters) so the two
   stacked modules line up on the same left edge instead of one sitting
   flush to the viewport. Inside the rail the metric rows are held to a
   comfortable measure — a 1180px-wide scale bar would make the marker's
   position hard to read against its endpoints. */
.ssv-specs__inner {
	max-width: 1180px;
	margin: 0 auto;
	padding: 40px 24px 8px;
}

.ssv-specs__inner > * {
	max-width: 720px;
}

/* Heading — Lagar h4 scale, serif, not shouty. */
.ssv-specs .ssv-specs__heading {
	margin: 0 0 6px;
	font-family: var(--ssv-display-font);
	font-size: 30px;
	font-weight: 400;
	line-height: 1.15;
	letter-spacing: 0.01em;
	color: var(--ssv-ink);
}

.ssv-specs .ssv-specs__intro {
	margin: 0 0 30px;
	font-size: 15px;
	line-height: 1.5;
	color: var(--ssv-slate);
}

.ssv-specs__list {
	margin: 0;
	padding: 0;
}

/* One metric row = label gutter + figure column. Grid (not float) so the
   label and the bar share a baseline at every width. */
.ssv-specs__row {
	display: grid;
	grid-template-columns: var(--ssv-label-w) 1fr;
	gap: 0 26px;
	align-items: start;
	margin: 0;
	padding: 20px 0;
	border-bottom: 1px solid var(--ssv-line);
}

.ssv-specs__row:first-child {
	border-top: 1px solid var(--ssv-line);
}

/* Small-caps metric label (Alata, tracked uppercase — matches the rest of the
   C7 modules). */
.ssv-specs .ssv-specs__label {
	margin: 0;
	padding-top: 2px;
	font-family: var(--ssv-label-font);
	font-size: 11px;
	font-weight: 400;
	line-height: 1.5;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: var(--ssv-slate);
}

.ssv-specs .ssv-specs__figure {
	margin: 0;
	padding: 0;
}

/* The number itself — serif, large enough to be the first thing read. */
.ssv-specs__value {
	display: block;
	font-family: var(--ssv-display-font);
	font-size: 26px;
	line-height: 1.1;
	color: var(--ssv-ink);
	font-variant-numeric: tabular-nums lining-nums;
}

/* ---- the scale ---------------------------------------------------------
   .ssv-specs__track is the axis (hairline). .ssv-specs__marker is a small
   square (border-radius 0, per brand) positioned by an inline left:N% that
   the PHP computes as (value - min) / (max - min). No padding is added to the
   range, so a wine at the catalogue minimum genuinely sits flush left.
   ------------------------------------------------------------------------ */
.ssv-specs__scale {
	display: block;
	margin: 14px 0 0;
}

.ssv-specs__track {
	position: relative;
	display: block;
	height: 3px;
	background: var(--ssv-line);
}

/* End ticks, so the axis reads as an axis rather than a progress bar. */
.ssv-specs__track::before,
.ssv-specs__track::after {
	content: "";
	position: absolute;
	top: -3px;
	width: 1px;
	height: 9px;
	background: var(--ssv-line);
}

.ssv-specs__track::before { left: 0; }
.ssv-specs__track::after  { right: 0; }

.ssv-specs__marker {
	position: absolute;
	top: 50%;
	width: 11px;
	height: 11px;
	margin-left: -5.5px;      /* centre the square on its computed position */
	background: var(--ssv-gold);
	/* A 1px ink outline means the marker survives greyscale printing and
	   forced-colours mode, where the gold fill may be replaced. */
	border: 1px solid var(--ssv-ink);
	border-radius: 0;
	transform: translateY(-50%);
	transition: left 240ms ease;
}

/* Axis endpoint labels: the REAL catalogue min and max, as text. */
.ssv-specs__ends {
	display: flex;
	justify-content: space-between;
	margin-top: 7px;
	font-family: var(--ssv-label-font);
	font-size: 10px;
	letter-spacing: 0.12em;
	color: var(--ssv-slate);
	font-variant-numeric: tabular-nums lining-nums;
}

.ssv-specs__end--max {
	text-align: right;
}

/* Screen-reader sentence carrying the same comparison the marker conveys
   visually. Clipped, never display:none — it must stay in the a11y tree. */
.ssv-specs__sr {
	position: absolute !important;
	width: 1px;
	height: 1px;
	margin: -1px;
	padding: 0;
	overflow: hidden;
	clip: rect(0 0 0 0);
	clip-path: inset(50%);
	white-space: nowrap;
	border: 0;
}

/* Cooperage / vessel: text row, no bar. "45% new French oak and 55% neutral"
   is a composition, not a point on a scale. */
.ssv-specs__vessel {
	display: grid;
	grid-template-columns: var(--ssv-label-w) 1fr;
	gap: 0 26px;
	align-items: baseline;
	margin: 0;
	padding: 20px 0;
	border-bottom: 1px solid var(--ssv-line);
}

.ssv-specs .ssv-specs__label--inline {
	padding-top: 0;
}

.ssv-specs__vessel-text {
	font-size: 16px;
	line-height: 1.5;
	color: var(--ssv-ink);
}

.ssv-specs .ssv-specs__note {
	margin: 16px 0 0;
	font-family: var(--ssv-label-font);
	font-size: 10px;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: var(--ssv-slate);
}

/* ---- narrow viewports (tested at 390px) --------------------------------
   The label gutter collapses: the small-caps label sits ABOVE the number, so
   the axis keeps the full column width and the marker stays readable instead
   of being squeezed into ~140px. */
@media (max-width: 640px) {
	.ssv-specs {
		margin-top: 34px;
	}

	.ssv-specs__inner {
		padding-top: 28px;
		padding-left: 18px;
		padding-right: 18px;
	}

	.ssv-specs .ssv-specs__heading {
		font-size: 25px;
	}

	.ssv-specs .ssv-specs__intro {
		margin-bottom: 22px;
		font-size: 14px;
	}

	.ssv-specs__row,
	.ssv-specs__vessel {
		grid-template-columns: 1fr;
		gap: 6px 0;
		padding: 16px 0;
	}

	.ssv-specs .ssv-specs__label {
		padding-top: 0;
		font-size: 10px;
	}

	.ssv-specs__value {
		font-size: 23px;
	}

	.ssv-specs__scale {
		margin-top: 12px;
	}

	.ssv-specs__vessel-text {
		font-size: 15px;
	}
}

/* Respect reduced-motion: the marker's transition is a nicety only. */
@media (prefers-reduced-motion: reduce) {
	.ssv-specs__marker {
		transition: none;
	}
}

/* Forced-colours / high-contrast: keep the track and marker visible when the
   UA replaces our palette. */
@media (forced-colors: active) {
	.ssv-specs__track {
		background: CanvasText;
	}

	.ssv-specs__marker {
		background: Highlight;
		border-color: CanvasText;
		forced-color-adjust: none;
	}
}

/* Print: the panel is a tech sheet, so it should print — but without the
   decorative rules fighting the page. */
@media print {
	.ssv-specs__marker {
		background: #000;
	}
}


/* ==========================================================================
   22. ELEMENTOR ENTRANCE-ANIMATION FAILSAFE — never leave an <h1> invisible
   --------------------------------------------------------------------------
   The bug:    Elementor ships entrance animations by server-rendering the
               widget wrapper with class `elementor-invisible`, which sets
               `visibility: hidden`. Its JS removes that class when the element
               scrolls into view. The /wines/ page <h1> ("Wines", a Vamtam
               animated-headline widget, element f3b11ab) is wrapped this way,
               so the ONLY real <h1> on the page is `visibility: hidden` in the
               initial HTML and depends on JS to ever become visible.

               That page's other three <h1>s come from the embedded C7
               collection widget and are deliberately `display: none` (§9), so
               if the animation JS does not run — JS error, blocked/failed
               asset, reduced-motion edge case, IntersectionObserver never
               firing for an element already in the viewport — the page exposes
               ZERO headings to the accessibility tree and to any crawler that
               executes JS. curl-based checks cannot see this: the class is in
               the server HTML and only JS removes it.

   The fix:    re-assert visibility for headings inside a still-`invisible`
               wrapper. Scoped to h1..h3 only, so ordinary decorative widgets
               keep their entrance animation untouched; the animation itself is
               driven by `animation-name` on the wrapper, not by this property,
               so fading in still works normally where the JS does run.

   Why not JS: the parent theme and Elementor own that behaviour; a CSS
               failsafe cannot fight back or double-bind, and survives a
               parent-theme or plugin update. Do not "fix" this by removing
               elementor-invisible server-side — Elementor re-adds it.
   ========================================================================== */

/* 22a. Headings. */
.elementor-invisible h1,
.elementor-invisible h2,
.elementor-invisible h3 {
	visibility: visible;
}

/* 22b. The hero's non-heading copy.
   --------------------------------------------------------------------------
   `.ssv-hero-h1` holds an <h1> and is already covered by 22a, but
   `.ssv-hero-eyebrow` renders a <p class="elementor-heading-title"> and
   `.ssv-hero-subhead` a plain <p>, and 22a does not reach a <p>. They are the
   eyebrow and the subhead of the site's only above-the-fold copy, so the same
   failsafe applies.

   Named rather than widened to `.elementor-invisible p`: that would re-assert
   visibility inside every animated text widget on the site and silently
   disable a lot of intended animation. The unscoped `p` guarantee the ticket
   asks for is in 22c instead, where it is conditional on the user having asked
   for reduced motion — under that preference the animation contributes nothing,
   so there is no case in which anything should still be hidden.

   Both forms of each selector are listed because `elementor-invisible` lands on
   the WIDGET WRAPPER, which is the element that also carries the `_css_classes`
   value — so for these three the class is on the same element, not an ancestor.
   22a works on the h1 only because `visibility` is inherited and the <h1> is a
   descendant; the wrapper itself stays hidden, which is harmless but leaves the
   three hero widgets behaving differently from each other for no reason. The
   same-element form is listed for `.ssv-hero-h1` too, so all three agree.

   STATUS: these three classes are NOT in the database yet — `_elementor_data`
   contains 0 occurrences of `ssv-hero` as of 2026-10-02. They arrive with
   D-V20's homepage hero rebuild, which is `content-migration`'s. Landing the
   CSS first is the right order (file before document, as everywhere else in
   this file) and costs nothing while the classes are absent. */
.elementor-invisible .ssv-hero-eyebrow,
.elementor-invisible .ssv-hero-subhead,
.elementor-invisible .ssv-hero-h1,
.ssv-hero-eyebrow.elementor-invisible,
.ssv-hero-subhead.elementor-invisible,
.ssv-hero-h1.elementor-invisible {
	visibility: visible;
}

/* 22c. GLOBAL REDUCED MOTION — kill the animation, KEEP THE ELEMENT VISIBLE.
   --------------------------------------------------------------------------
   What Elementor already does, measured, so nobody re-litigates it:
   `elementor/assets/css/frontend.min.css` ships
   `@media (prefers-reduced-motion:reduce){.animated{animation:none!important}
   html *{transition-delay:0s!important;transition-duration:0s!important}}`,
   and that file IS loaded on the live site, ahead of this stylesheet. So the
   entrance animation is already disabled under the query. Restated below,
   scoped to `.elementor-element`, because the performance tranche may defer,
   split or inline that file and the guarantee must not be a side effect of
   someone else's asset pipeline.

   What Elementor does NOT do, and this is the half the ticket needs: nothing
   keeps the element VISIBLE. `elementor-invisible` is removed only by
   `GlobalHandler.animate()` in `elementor/assets/js/frontend.js` (lines 639 and
   650, the second inside a `setTimeout`), reached from a scroll-observer
   callback. That method does not consult `prefers-reduced-motion` at all:
   grepping the whole frontend bundle finds the string exactly ONCE, in
   `SwiperHandler.applyMotionPreferences()` (line 1218), which only zeroes
   carousel speed and autoplay. Nothing in the visibility path reads the
   preference. Kill the animation
   without the visibility guard and any element whose observer never fires — JS
   error, blocked asset, an element already in the viewport at load — stays
   `visibility: hidden` forever, for exactly the users who asked for less
   motion.

   Under `reduce` the animation contributes nothing, so there is no case in
   which anything should still be hidden: the guard is unscoped here, unlike
   22a/22b, and that is what makes `p` — and every other element — safe.
   -------------------------------------------------------------------------- */
@media (prefers-reduced-motion: reduce) {

	.elementor-element.animated,
	.elementor-element .animated {
		animation: none !important;
	}

	.elementor-invisible,
	.elementor-invisible p,
	.elementor-invisible .ssv-hero-eyebrow,
	.elementor-invisible .ssv-hero-subhead,
	.elementor-invisible .ssv-hero-h1 {
		visibility: visible !important;
	}
}

/* 22d. REDUCED MOTION, PART TWO: the transitions Elementor tries to kill and loses.
   --------------------------------------------------------------------------
   Elementor's own reduce block also carries
   `html * { transition-duration: 0s !important; transition-delay: 0s !important }`.
   On this site that declaration LOSES, and it is worth writing down why, because
   it looks like it should win: `html *` computes to specificity (0,0,1) — `html`
   is one type selector and `*` adds nothing — which ties with the parent theme's
   `button` in the 40-selector rule at `lagar/vamtam/assets/css/dist/all.css`
   that sets `transition: all 0.3s !important`. A tie between two `!important`
   declarations is broken by source order, and measured in the rendered homepage
   (2026-10-02) Elementor's `frontend.min.css` is the 7th stylesheet in the
   document while `all.css` is the 37th — all.css wins. So every button
   on the site keeps a 300 ms transition under `prefers-reduced-motion: reduce`.
   This file is the 38th, which is why the rules below land on top of all.css.

   §4 then does the same thing to Commerce7 buttons at (0,2,1) — `body
   .c7wp-wrap .c7-btn` — so clearing the generic list is not enough on its own.

   Both groups below therefore out-specify what they are correcting rather than
   relying on `!important` alone. `transition-duration` and `-delay` only: the
   transition-PROPERTY lists stay intact so §26c's instant-focus-ring work is
   untouched. Entrance animations are 22c's; this is only interaction motion.
   -------------------------------------------------------------------------- */
@media (prefers-reduced-motion: reduce) {

	html .button,
	html button,
	html input[type="button"],
	html input[type="submit"],
	html a.comment-reply-link {
		transition-duration: 0s !important;
		transition-delay: 0s !important;
	}

	html body .c7wp-wrap .c7-btn,
	html body #c7-content .c7-btn,
	html body .c7wp-wrap .c7-link,
	html body #c7-content .c7-link {
		transition-duration: 0s !important;
		transition-delay: 0s !important;
	}
}


/* ==========================================================================
   23. HEADER NAV — "Reserve" call-to-action
   --------------------------------------------------------------------------
   The menu item carrying class `sun-nav-reserve` (set in the menu, not in
   Elementor) renders as an outlined pill so the booking route stands out in
   every nav widget: desktop left/right menus, the mobile dropdown, and any
   theme fallback menu. Text gold #906A3C is the contrast-safe text gold
   (4.9:1 on white, 4.6:1 on #F9F8F4); on the dark header the pill inverts.
   ========================================================================== */

.elementor-nav-menu .sun-nav-reserve > a.elementor-item,
.elementor-nav-menu--dropdown .sun-nav-reserve > a {
	border: 1px solid currentColor;
	border-radius: 999px;
	padding-inline: 1.1em !important;
	margin-inline-start: 0.5em;
	line-height: 1.6;
	min-height: 44px;
	display: inline-flex;
	align-items: center;
	transition: background-color 0.2s ease, color 0.2s ease;
}

.elementor-nav-menu .sun-nav-reserve > a.elementor-item:hover,
.elementor-nav-menu .sun-nav-reserve > a.elementor-item:focus-visible {
	background-color: #906a3c;
	border-color: #906a3c;
	color: #ffffff !important;
}

.elementor-nav-menu .sun-nav-reserve > a.elementor-item::before,
.elementor-nav-menu .sun-nav-reserve > a.elementor-item::after {
	display: none !important; /* no underline pointer on the pill */
}

.elementor-nav-menu--dropdown .sun-nav-reserve > a {
	margin: 0.5em 1em;
	justify-content: center;
}

@media (prefers-reduced-motion: reduce) {
	.elementor-nav-menu .sun-nav-reserve > a.elementor-item {
		transition: none;
	}
}


/* ==========================================================================
   24. FOOTER — four link columns, bottom bar
   --------------------------------------------------------------------------
   Footer template 623 now shows site-wide. Link lists are WordPress menus
   (footer-wines-club / footer-our-story / footer-help / footer-legal) so staff
   edit them in Appearance → Menus; these rules only style them.
   ========================================================================== */

.sun-footer-cols > .elementor-container {
	align-items: flex-start;
}

.sun-footer-cols h5 {
	margin-bottom: 0.9em;
}

.sun-footer-menu .elementor-nav-menu--main .elementor-item {
	padding: 0.35em 0 !important;
	min-height: 24px;
	text-transform: none;
	letter-spacing: 0;
	justify-content: flex-start;
}

.sun-footer-menu .elementor-nav-menu--main .elementor-item::before,
.sun-footer-menu .elementor-nav-menu--main .elementor-item::after,
.sun-footer-legal .elementor-item::before,
.sun-footer-legal .elementor-item::after {
	display: none !important;
}

.sun-footer-menu .elementor-menu-toggle,
.sun-footer-legal .elementor-menu-toggle {
	display: none !important; /* lists are short; never collapse them */
}

.sun-footer-menu .elementor-nav-menu--main,
.sun-footer-legal .elementor-nav-menu--main {
	display: block !important;
}

.sun-footer-legal .elementor-item {
	font-size: 12px;
	padding: 0.3em 0.9em !important;
	min-height: 24px;
	text-transform: none;
	letter-spacing: 0.02em;
}

.sun-footer-copy p {
	font-size: 12px;
	margin: 0.25em 0;
	text-align: center;
}

.sun-footer-reserve .elementor-button {
	min-height: 44px;
}

@media (max-width: 767px) {
	.sun-footer-menu .elementor-nav-menu--main .elementor-item {
		justify-content: center;
	}
	.sun-footer-legal .elementor-nav-menu {
		justify-content: center;
		flex-wrap: wrap;
	}
}


/* ==========================================================================
   25. SKIP LINK (UX-T09)
   --------------------------------------------------------------------------
   The gap: no skip link anywhere on the site. The parent theme ships one at
            `lagar/templates/header/top/main-menu.php`, but Elementor Theme
            Builder replaces the header, so that template never runs.
   Target:  `#main` — `lagar/header.php:48` renders it as
            `<div id="main" role="main" …>` outside the
            `VAMTAM_NO_PAGE_CONTENT` guard, so it is emitted on every template
            that calls `get_header()`.
   Markup:  `functions.php` on `wp_body_open` priority 1, so it is the first
            focusable node in the document.
   Hiding:  the clip technique, not `left: -9999px`, which can widen the
            scroll container and create horizontal overflow. `position: fixed`
            on focus so it clears the sticky header when the page is scrolled.
   ========================================================================== */

.sun-skip-link {
	position: absolute;
	top: 0;
	left: 0;
	width: 1px;
	height: 1px;
	margin: -1px;
	padding: 0;
	border: 0;
	overflow: hidden;
	white-space: nowrap;
	clip: rect(0 0 0 0);
	clip-path: inset(50%);
}

.sun-skip-link:focus,
.sun-skip-link:focus-visible {
	position: fixed;
	top: 12px;
	left: 12px;
	z-index: 100000;          /* over the sticky header and Elementor overlays */
	display: inline-flex;
	align-items: center;
	box-sizing: border-box;
	width: auto;
	height: auto;
	min-height: 44px;         /* SC 2.5.8 target size */
	margin: 0;
	padding: 12px 22px;
	overflow: visible;
	clip: auto;
	clip-path: none;
	border: 0;
	border-radius: 0;
	background: #242E35;      /* ink */
	color: #FFFFFF;           /* 13.84:1 on ink */
	font-family: var(--vamtam-h6-font-family, "Alata"), sans-serif;
	font-size: 14px;
	line-height: 1.2;
	letter-spacing: 2px;
	text-transform: uppercase;
	text-decoration: none;
	/* Dual ring, same recipe as §26: the white inner ring carries 13.84:1
	   against this ink panel, the gold outer ring carries 4.87:1 against the
	   page behind it. */
	outline: 3px solid var(--sun-focus-ring, #906A3C);
	outline-offset: 2px;
	box-shadow: 0 0 0 2px var(--sun-focus-ring-inner, #FFFFFF);
	/* The theme transitions `a` colours and §26c keeps that transition alive on
	   focus, which would leave the link ink-on-transparent — i.e. unreadable
	   over a dark hero — for the first 300 ms after the first Tab. The whole
	   point of a skip link is that it is legible the instant it appears, so it
	   opts out entirely. `!important` because 26c's is. */
	transition: none !important;
}


/* ==========================================================================
   26. FOCUS RING (UX-T05)
   --------------------------------------------------------------------------
   The gap: keyboard tab stops with neither an outline nor a box-shadow — ADD
            TO CART, `.c7-link`, the PDP quantity inputs, the collection filter
            selects, the reservation form, the member password field. Three
            causes, all addressed here:
              (a) §5 carried `outline: 0` on every Commerce7 input/select/
                  textarea for ALL focus, keyboard included. Now narrowed to
                  `:focus:not(:focus-visible)` — that edit is in §5, the one
                  change this section makes outside its own block.
              (b) Commerce7's own stylesheet suppresses the ring on real
                  keyboard focus for four controls. Fetched and measured
                  2026-10-02 (`cdn.commerce7.com/v2/commerce7.css`, 117867
                  bytes): 12 rules mention `outline`, and while most correctly
                  scope to `:focus:not(:focus-visible)`, these four do not —
                    h1.c7-h1:focus            { outline: 0 }
                    .c7-date-picker-toggle:focus { outline: 0 }
                    .rdp-nav_button:focus     { outline: none }
                    .rdp-day_button:focus     { outline: none }
                  so they kill the KEYBOARD indicator too. 26b overrides them.
              (c) the indicator was being ANIMATED, not suppressed. See 26c —
                  this is the cause that actually explains most of the count.

   Why two colours: no single colour clears 3:1 on white, cream, slate AND ink.
            Computed here with the WCAG 2.x relative-luminance formula
            (2026-10-02):
                       white  cream  slate   ink
              #906A3C   4.87   4.58   1.39   2.84
              #FFFFFF   1.00   1.06   6.78  13.84
            So: a 2px white ring at the control edge, a 3px #906A3C ring
            outside it. Gold carries white (4.87) and cream (4.58); white
            carries slate (6.78) and ink (13.84). The two rings contrast
            4.87:1 with EACH OTHER, so the indicator reads as a shape on any
            ground — the published dual-ring technique for SC 1.4.11.

   Not gated on §27: the ring names #906A3C in its own tokens, so reverting the
            palette section leaves the ring intact.
   ========================================================================== */

:root {
	--sun-focus-ring:       #906A3C;   /* outer ring — carries light grounds */
	--sun-focus-ring-inner: #FFFFFF;   /* inner ring — carries dark grounds  */
	--sun-focus-ring-width: 3px;
	--sun-focus-ring-gap:   2px;
}

/* 26a. Baseline — every natively focusable element, keyboard focus only. */
a[href]:focus-visible,
area[href]:focus-visible,
button:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
details:focus-visible,
summary:focus-visible,
iframe:focus-visible,
object:focus-visible,
audio[controls]:focus-visible,
video[controls]:focus-visible,
[tabindex]:focus-visible,
[contenteditable="true"]:focus-visible {
	outline: var(--sun-focus-ring-width, 3px) solid var(--sun-focus-ring, #906A3C);
	outline-offset: var(--sun-focus-ring-gap, 2px);
	box-shadow: 0 0 0 var(--sun-focus-ring-gap, 2px) var(--sun-focus-ring-inner, #FFFFFF);
	/* The ring must be instant, not animated — see 26c, which is where that is
	   actually enforced against the parent theme's `!important`. */
	transition-property: color, background-color, border-color;
}

/* 26b. Commerce7 controls — see (b) in the banner for the four rules this
   overrides.

   WHY `!important` HERE, STATED HONESTLY. It is not load order. Measured in the
   rendered homepage 2026-10-02: `cdn.commerce7.com/v2/commerce7.css` is the 6th
   stylesheet in the document and this file is the 38th, so source order already
   favours this file, and `body .rdp-day_button:focus-visible` (0,2,1) already
   out-specifies `.rdp-day_button:focus` (0,2,0). The `!important` buys
   robustness, not a tie-break, and it buys it against two specific things:

     * That URL is NOT version-pinned — `/v2/commerce7.css`, no `?ver=` — so
       Commerce7 can ship a higher-specificity or `!important` focus rule into
       production at any time without a deploy on our side. Today their file
       carries zero `outline … !important` declarations; nothing guarantees
       tomorrow's does.
     * Commerce7 mounts its components client-side and replaces the
       `#c7-content` subtree wholesale after boot, so what the browser ends up
       with is not what the server sent, and a style injected at runtime lands
       after every <link>.

   Keyboard focus is the one affordance whose absence locks a user out rather
   than merely looking wrong, so it is worth being unsubtle about. Scoped to the
   Commerce7 class namespace so nothing else on the site is forced. */
body .c7wp-wrap .c7-btn:focus-visible,
body #c7-content .c7-btn:focus-visible,
body .c7-btn:focus-visible,
body .c7-link:focus-visible,
body .c7-form input:focus-visible,
body .c7-form select:focus-visible,
body .c7-form textarea:focus-visible,
body .c7wp-wrap .c7-form input:focus-visible:not([disabled]),
body .c7wp-wrap .c7-form select:focus-visible:not([disabled]),
body .c7wp-wrap .c7-form textarea:focus-visible:not([disabled]),
body #c7-content .c7-form input:focus-visible:not([disabled]),
body #c7-content .c7-form select:focus-visible:not([disabled]),
body #c7-content .c7-form textarea:focus-visible:not([disabled]),
body .c7-filters select:focus-visible,
body .c7-pagination a:focus-visible,
body .c7-pagination button:focus-visible,
body .c7-user-nav a:focus-visible,
body .c7-user-nav button:focus-visible,
body .c7-side-cart a:focus-visible,
body .c7-side-cart button:focus-visible,
body .c7-side-cart input:focus-visible,
body .c7-modal a:focus-visible,
body .c7-modal button:focus-visible,
body .c7-modal input:focus-visible,
body .c7-modal select:focus-visible,
body .c7-modal textarea:focus-visible,
body .c7-date-picker-toggle:focus-visible,
body .rdp-day_button:focus-visible,
body .rdp-button_previous:focus-visible,
body .rdp-button_next:focus-visible {
	outline: var(--sun-focus-ring-width, 3px) solid var(--sun-focus-ring, #906A3C) !important;
	outline-offset: var(--sun-focus-ring-gap, 2px) !important;
	box-shadow: 0 0 0 var(--sun-focus-ring-gap, 2px) var(--sun-focus-ring-inner, #FFFFFF) !important;
	/* §4 puts `transition: all .3s !important` on every Commerce7 button, so the
	   ring FADES IN over 300 ms. That is not a cosmetic detail: a probe that
	   reads computed style in the same tick as `.focus()` sees
	   `outline-offset: 0` and `box-shadow: none` and records "no indicator".
	   Keep the colour transitions, make the indicator instant. */
	transition-property: color, background-color, border-color !important;
}

/* 26c. THE RING MUST BE INSTANT — the subtlest half of the ticket.
   The parent theme sets `transition: all 0.3s !important` on
   `.button, button, input[type=button], input[type=submit]`
   (`lagar/vamtam/assets/css/dist/all.css`) and §4 repeats it for every
   `.c7-btn`. `all` includes outline-color, outline-offset and box-shadow, so
   the ring does not appear — it FADES IN over 300 ms. A probe that reads
   computed style in the same tick as `.focus()` therefore samples t=0 and sees
   `outline-offset: 0`, `outline-color: currentcolor`, `box-shadow: none`, and
   records a tab stop with no indicator even though the ring is correct 300 ms
   later. Only an `!important` beats an `!important`. Drop the three indicator
   properties from the transition list while focus is visible; keep the colour
   transitions.
   -------------------------------------------------------------------------- */
a:focus-visible,
area:focus-visible,
button:focus-visible,
summary:focus-visible,
.button:focus-visible,
input[type="button"]:focus-visible,
input[type="submit"]:focus-visible,
input[type="reset"]:focus-visible,
[tabindex]:focus-visible {
	transition-property: color, background-color, border-color !important;
}

/* 26d. The two rings this file already drew in ornament gold #B98D58, which
   computes 2.99:1 on the white cards they sit on — below the 3:1 floor for a
   non-text indicator. Same dual ring, and each card's own lift shadow is kept
   by appending it to the ring shadow rather than replacing it. */
body .ssx-family .ssx-family__card:focus-visible {
	outline: var(--sun-focus-ring-width, 3px) solid var(--sun-focus-ring, #906A3C);
	outline-offset: var(--sun-focus-ring-gap, 2px);
	box-shadow:
		0 0 0 var(--sun-focus-ring-gap, 2px) var(--sun-focus-ring-inner, #FFFFFF),
		0 10px 28px rgba(36, 46, 53, 0.09);
	/* Both cards transition `box-shadow`, so the ring would otherwise fade in. */
	transition-property: border-color, transform;
}

body .ss-soldout__card-link:focus-visible {
	outline: var(--sun-focus-ring-width, 3px) solid var(--sun-focus-ring, #906A3C);
	outline-offset: var(--sun-focus-ring-gap, 2px);
	box-shadow:
		0 0 0 var(--sun-focus-ring-gap, 2px) var(--sun-focus-ring-inner, #FFFFFF),
		0 6px 20px rgba(36, 46, 53, 0.08);
	transition-property: border-color, transform;
}

/* 26e. Forced-colours mode draws its own ring; do not fight it. */
@media (forced-colors: active) {
	a[href]:focus-visible,
	button:focus-visible,
	input:focus-visible,
	select:focus-visible,
	textarea:focus-visible,
	[tabindex]:focus-visible {
		outline-color: Highlight;
		box-shadow: none;
	}
}


/* ==========================================================================
   27. ACCESSIBLE PALETTE (D-V6 — decided)
   --------------------------------------------------------------------------
   TO REVERT: delete this whole section and nothing else. Nothing outside it
            depends on it — §23, §24, §25 and §26 all name their colours
            directly, and every `var()` below carries a literal fallback.
   STATUS:  draft — not yet claims-audited (owner instruction: the claims
            auditor is not run this wave).

   Decision (D-V6): #906A3C is the text gold on every light ground — prices,
            links, badges, button fills. #B98D58 stays for non-text ornament
            and for text on ink #242E35, the one ground where it already
            passes. #909090 body/placeholder text becomes #6E6E6E, the
            Commerce7 field border #DEDDD9 becomes #938F82, the header
            "Log in" becomes #FFFFFF.

   Computed 2026-10-02 with the WCAG 2.x relative-luminance formula,
   before → after:
     gold text on white     #B98D58 2.99 → #906A3C 4.87   (text ≥4.5)
     gold text on cream     #B98D58 2.82 → #906A3C 4.58   (text ≥4.5)
     white on gold fill     #B98D58 2.99 → #906A3C 4.87   (text ≥4.5)
     grey text on white     #909090 3.19 → #6E6E6E 5.10   (text ≥4.5)
     grey text on cream     #909090 3.00 → #6E6E6E 4.80   (text ≥4.5)
     field border on white  #DEDDD9 1.36 → #938F82 3.23   (UI   ≥3.0)
     field border on cream  #DEDDD9 1.28 → #938F82 3.04   (UI   ≥3.0)
     "Log in" on slate      #242E35 2.04 → #FFFFFF 6.78   (text ≥4.5)
   Cream is #F9F8F4, the body background set by the theme-options inline style.
   The usual "accessible grey" #767676 computes only 4.27 on cream and FAILS,
   which is why the grey here is #6E6E6E and not #767676.

   THE TOKEN CHAIN, traced rather than guessed, because it is the whole reason
   this section is as short as it is. Three layers:
     1. the Elementor kit emits the palette on the body —
        `.elementor-kit-13 { --e-global-color-vamtam_accent_1: #B98D58;
        --e-global-color-vamtam_accent_4: #909090; … }`
        (fetched from `uploads/elementor/css/post-13.css`);
     2. the PARENT THEME aliases every one of them, at `all.css` line 1 —
        `body { --vamtam-accent-color-1: var(--e-global-color-vamtam_accent_1);
        --vamtam-accent-color-4: var(--e-global-color-vamtam_accent_4); … }`;
     3. this file reads `--vamtam-accent-color-N` 62 times (24 of them
        accent-1, 9 accent-4).
   So re-pointing a kit global in 27c propagates through the alias to EVERY
   consumer, this file's and the parent theme's alike, with no further work.
   Note for anyone editing this: an earlier draft of this section asserted that
   `--vamtam-accent-color-4` was undefined and that each consumer therefore had
   to be re-pointed by hand. That was wrong — layer 2 defines it — and the
   mistake matters in both directions, so it is recorded here rather than
   quietly dropped.

   What that means for the two tokens in play:
     * `vamtam_accent_4` (the grey) IS re-pointed in 27c, and the propagation
       is wanted. The parent theme reads the alias with no fallback in several
       places — a slider tab border, a WooCommerce breadcrumb, a select2
       border, an Elementor tabs background — and all of those move #909090 →
       #6E6E6E, i.e. 3.19 → 5.10 against white. That is a darkening of an
       existing colour, never the introduction of a colour where there was
       none, so there is no surface it can make worse. Of this file's 9 reads
       of the alias, 6 are `color:` and 3 define a local token; 27f restates
       the 6 as belt-and-braces so the grey survives a kit rebuild under a new
       ID, and 27d/27g carry the 3.
     * `vamtam_accent_1` (the gold) is deliberately NOT re-pointed, because
       D-V6 keeps the brand gold for ornament and this file reads the alias 24
       times for BOTH text and ornament. Counted by property: 10 `color:`
       (text) and 14 ornament-or-token (3 `border-color`, 1 each of `outline`,
       `border`, `border-bottom`, `background`, and 7 local/Commerce7 token
       definitions). The 10 gold-TEXT call sites are listed one by one in 27e;
       the 14 others are absent and keep #B98D58, except the three local
       tokens 27g re-points on purpose.

   Effect on §23 and §24, checked rather than assumed. Both are untouched:
     * §23's Reserve pill names #906A3C literally in its own rules.
     * §24 declares no colours at all, and neither footer template 623 nor
       either header template (5796, 316) references a single Elementor global
       colour — `_elementor_data` for all three contains zero
       `globals/colors?id=` references, and `post-623.css` contains zero
       mentions of the two globals 27c re-points. So 27c cannot reach them.
     * The footer columns set `background-color: var(--vamtam-accent-color-8)`,
       which through the chain above resolves to #F9F8F4 — cream, not
       transparent. On that ground the footer link hover moves from #B98D58
       (2.82, failing) to #906A3C (4.58, passing). The footer reads better
       after this section, not worse.
   ========================================================================== */

/* 27a. The token rule, named once. */
:root {
	--sun-gold-text:      #906A3C;   /* text, links, badges, button fills on light grounds */
	--sun-gold-ornament:  #B98D58;   /* non-text ornament, and text on ink #242E35 */
	--sun-grey-text:      #6E6E6E;   /* replaces #909090 for body + placeholder text */
	--sun-field-border:   #938F82;   /* replaces #DEDDD9 on form-field boundaries */
	--sun-on-slate:       #FFFFFF;   /* text on the slate header #545D5C */
}

/* 27b. Site-level tokens. These three ARE defined on the live site by the
   theme-options inline style — fetched from the served homepage, verbatim:
   `--vamtam-body-link-hover: #B98D58`, `--vamtam-body-link-active: #B98D58`,
   `--vamtam-btn-text-color: #B98D58` — so this re-points existing values
   rather than introducing new ones. That rule's selector is `body` (0,0,1),
   as is the parent theme's alias block at `all.css` line 1, so `html body`
   (0,0,2) clears both. */
html body {
	--vamtam-body-link-hover:  var(--sun-gold-text, #906A3C);
	--vamtam-body-link-active: var(--sun-gold-text, #906A3C);
	--vamtam-btn-text-color:   var(--sun-gold-text, #906A3C);
}

/* 27c. Elementor kit globals — layer 1 of the chain in the banner, and the
   lever that moves everything downstream.

   The kit is post 13 and emits the palette at `.elementor-kit-13` (0,1,0) on
   the <body>; measured in `post-13.css`, `vamtam_h6_color` and
   `vamtam_accent_1` are both #B98D58 and `vamtam_accent_4` is #909090. The
   attribute selector below is (0,1,1), so it wins on specificity as well as on
   source order (post-13.css is the 8th stylesheet in the document, this file
   the 38th), and it keeps working if the kit is ever rebuilt under a new ID.

   `vamtam_h6_color` is the label/eyebrow/price style and `vamtam_accent_4` is
   the body grey — both text, both re-pointed. `vamtam_accent_1` is left at the
   ornament gold on purpose.

   EVERY DOCUMENT-LEVEL CONSUMER WAS CHECKED FOR A DARK GROUND, because
   darkening a grey is only an improvement on a LIGHT ground and this section
   would be a regression on a dark one. Searched `_elementor_data` across the
   whole database:
     * `vamtam_h6_color` — 0 documents reference it. Re-pointing it moves only
       the kit's own h6 default, which nothing overrides on a dark ground.
     * `vamtam_accent_4` — 3 live references in 2 published pages:
         page 340 /our-story/vineyard/  — a text-editor `text_color`, body copy
           on the page's light ground.
         page 364 /membership/ — call-to-action widget `454290a`, both
           `description_color` and `button_color`. Its `bg_image` is EMPTY and
           its `overlay_color` is `vamtam_accent_5` = #FFFFFF, while its
           `title_color` is `vamtam_accent_3` = #242E35 — a dark title on a
           white overlay, so the ground is light.
       All three move #909090 → #6E6E6E, i.e. 3.19 → 5.10 on white. No dark
       ground anywhere, so there is no consumer this makes worse.
   The remaining references are a draft, two unassigned library templates and
   six revisions, none of which render.

   The durable fix is the kit's own `_elementor_page_settings`, which is
   `content-migration`'s surface. */
body[class*="elementor-kit-"] {
	--e-global-color-vamtam_h6_color: var(--sun-gold-text, #906A3C);
	--e-global-color-vamtam_accent_4: var(--sun-grey-text, #6E6E6E);
}

/* 27d. Commerce7 tokens. §1 sets these on `.c7wp-wrap, #c7-content`; the
   `body` prefix lifts both branches above it. This also covers §1's
   `--c7-alt-text-color` and `--c7-field-placeholder`, which both read
   `--vamtam-accent-color-4`. */
body .c7wp-wrap,
body #c7-content {
	--c7-primary-color-text:  var(--sun-gold-text, #906A3C);
	--c7-primary-color-focus: rgba(144, 106, 60, 0.25);
	--c7-alt-text-color:      var(--sun-grey-text, #6E6E6E);
	--c7-field-placeholder:   var(--sun-grey-text, #6E6E6E);
	--c7-field-border-color:  var(--sun-field-border, #938F82);
}

/* §5 hard-codes the field border rather than reading --c7-field-border-color,
   so the token above does not reach it. */
body .c7wp-wrap .c7-form input[type='text'],
body .c7wp-wrap .c7-form input[type='email'],
body .c7wp-wrap .c7-form input[type='number'],
body .c7wp-wrap .c7-form input[type='tel'],
body .c7wp-wrap .c7-form input[type='password'],
body .c7wp-wrap .c7-form textarea,
body .c7wp-wrap .c7-form select,
body #c7-content .c7-form input[type='text'],
body #c7-content .c7-form input[type='email'],
body #c7-content .c7-form input[type='number'],
body #c7-content .c7-form input[type='tel'],
body #c7-content .c7-form input[type='password'],
body #c7-content .c7-form textarea,
body #c7-content .c7-form select {
	border-color: var(--sun-field-border, #938F82);
}

/* 27e. Gold TEXT on light grounds — all 10 call sites in this file that read
   --vamtam-accent-color-1 for a `color`. The ornament uses of the same token
   (field focus border, option-selected colour, field border, pagination active
   border, the `.ss-soldout__all` underline) are deliberately absent and keep
   #B98D58. */
body .c7wp-wrap .c7-product__title a:hover,
body #c7-content .c7-product__title a:hover,
body .c7wp-wrap .c7-product__add-to-cart__price,
body #c7-content .c7-product__add-to-cart__price,
body .c7wp-wrap .c7-price--discounted,
body #c7-content .c7-price--discounted,
body .c7wp-wrap .c7-pagination__pages a:not([disabled]):hover,
body .c7wp-wrap .c7-pagination__pages button:not([disabled]):hover,
body #c7-content .c7-pagination__pages a:not([disabled]):hover,
body #c7-content .c7-pagination__pages button:not([disabled]):hover,
body .c7wp-wrap .c7-pagination__pages a.c7-active,
body .c7wp-wrap .c7-pagination__pages button.c7-active,
body #c7-content .c7-pagination__pages a.c7-active,
body #c7-content .c7-pagination__pages button.c7-active,
body .c7wp-wrap .c7-breadcrumbs .c7-active,
body #c7-content .c7-breadcrumbs .c7-active,
body .c7wp-wrap .ss-pdp__gallery-main--empty::after,
body #c7-content .ss-pdp__gallery-main--empty::after,
body .ss-soldout__eyebrow,
body .ss-soldout__card-cta,
body .ss-soldout__all:hover,
body .ss-soldout__all:focus-visible {
	color: var(--sun-gold-text, #906A3C);
}

/* 27f. Grey text — all 6 call sites in this file that read
   --vamtam-accent-color-4 for a `color`. 27c already reaches every one of them
   through the alias chain, so this is belt-and-braces: it keeps the grey if the
   kit is rebuilt under a new ID or the parent theme drops the alias. The
   disabled-info button is listed at its full original specificity (0,4,1),
   because a shorter selector would lose to §12's rule rather than override
   it. */
body .c7wp-wrap .c7-product__subtitle,
body #c7-content .c7-product__subtitle,
body .c7wp-wrap .c7-price--original,
body #c7-content .c7-price--original,
body .c7wp-wrap .c7-product__add-to-cart__price__variant,
body #c7-content .c7-product__add-to-cart__price__variant,
body .c7wp-wrap .c7-product__login-message,
body #c7-content .c7-product__login-message,
body .c7wp-wrap .c7-btn--disabled-info,
body #c7-content .c7-btn--disabled-info,
body .c7wp-wrap .c7-btn.c7-btn--disabled-info[disabled],
body #c7-content .c7-btn.c7-btn--disabled-info[disabled],
body .c7wp-wrap .c7-pagination__total,
body #c7-content .c7-pagination__total {
	color: var(--sun-grey-text, #6E6E6E);
}

/* 27g. Local module tokens.

   `--ssx-gold` (§16 cross-sell, live) is read six times: the price, the note,
   the CTA and the "LARGE FORMAT" badge FILL — `color: #fff` on that fill is
   2.99:1, which is D-V6's ribbon case — plus the card border and the card
   focus outline. So it becomes the text gold. The two ornament uses darken
   from 2.99 to 4.87 against white, which is an improvement under SC 1.4.11,
   not a regression, and is why this is one token change rather than a split.

   `--ss-pdp-gold` (§10–§17) styles the Commerce7 Product Template v2, which is
   not installed. Re-pointing it now means nobody can install a template
   carrying the failing palette.

   `--ssv-gold` (§21 spec bars) is read exactly once, for an 11×11 px marker
   square — pure ornament. It keeps #B98D58 and is absent below.

   `--ss-pdp-muted` carries the grey. */
body .c7wp-wrap .ss-pdp,
body #c7-content .ss-pdp {
	--ss-pdp-gold:  var(--sun-gold-text, #906A3C);
	--ss-pdp-muted: var(--sun-grey-text, #6E6E6E);
}

body .ssx-family {
	--ssx-gold: var(--sun-gold-text, #906A3C);
}

/* 27h. Header "Log in". Commerce7 renders its user nav into <body>, outside
   `.c7wp-wrap`/`#c7-content`, so §1's token remap cannot reach it — this is
   the one unscoped rule the section needs. #242E35 on the slate header
   #545D5C computes 2.04:1; white on that slate is 6.78:1. */
body a.c7-user-nav__account__login,
body .c7-user-nav__account__login {
	color: var(--sun-on-slate, #FFFFFF);
}

/* 27i. (moved) Account + cart icons and the logo sizes now live in §46 HEADER. */


/* ==========================================================================
   28. 21+ AFFIRMATION DIALOG + AGE STATEMENT (UX-T01, D-V5 — CSS half)
   --------------------------------------------------------------------------
   CSS ONLY, AND THE MARKUP DOES NOT EXIST YET. The dialog element, the
   trigger, the `sessionStorage` persistence and every string belong to an
   `mu-plugins/sunstone-age-affirmation.php` that is not in the tree as of
   2026-10-02 (`grep -rl sun-age site/web/app/mu-plugins/` → no match). That
   file is `bedrock-app`'s surface. Shipping the CSS first is the same ordering
   this file uses everywhere else — stylesheet before document — and costs
   nothing while the markup is absent: not one selector below can match.

   THE MARKUP CONTRACT. These nine class names are the whole interface between
   the two surfaces, and this section styles those nine and nothing else:

     <div class="sun-age-dialog" id="sun-age-dialog" role="dialog" aria-modal="true"
          aria-labelledby="sun-age-dialog-title" aria-describedby="sun-age-dialog-body" hidden>
       <div class="sun-age-dialog__backdrop" data-sun-age-dismiss></div>
       <div class="sun-age-dialog__panel">
         <button class="sun-age-dialog__close" …>&times;</button>
         <h2 class="sun-age-dialog__title" id="sun-age-dialog-title">…</h2>
         <p  class="sun-age-dialog__body"  id="sun-age-dialog-body">…</p>
         <div class="sun-age-dialog__actions">
           <button class="sun-age-dialog__confirm" …>…</button>
           <a      class="sun-age-dialog__decline" href="/">…</a>
         </div>
       </div>
     </div>

   `__confirm` is a <button> and `__decline` is an <a href>, so the shared
   geometry is listed against both selectors rather than carried on a base
   class there is no element for.

   `.sun-age-statement` is the matching footer line (D-V5), a <p> inside a
   text-editor widget in footer 623's copyright block — the same sentence as
   the dialog body, so the two cannot drift. Styled in 28b.

   Copy for both comes from `copy/global-microcopy.md` "Proposed"
   (draft — not yet claims-audited); no string appears in this file.

   CONTRAST, computed with the WCAG 2.x formula, every pair in the dialog:
     __title     #242E35 on #FFFFFF panel   13.84   (≥4.5)
     __close     #242E35 on #FFFFFF panel   13.84   (≥4.5)
     __close:hover #906A3C on #FFFFFF        4.87   (≥4.5)
     __body      #545D5C on #FFFFFF           6.78   (≥4.5)
     __confirm   #FFFFFF on #545D5C fill      6.78   (≥4.5)
     __confirm:hover #FFFFFF on #242E35      13.84   (≥4.5)
     __decline   #545D5C on #FFFFFF           6.78   (≥4.5)
     __decline border #545D5C on #FFFFFF      6.78   (≥3.0 UI)
     __decline:hover #FFFFFF on #545D5C       6.78   (≥4.5)
     focus ring  #906A3C on #FFFFFF panel     4.87   (≥3.0 UI)
                 #FFFFFF inner vs that gold   4.87   (≥3.0 UI)
   Every one clears its threshold, so the section is self-sufficient: it does
   not depend on §27 to be compliant.

   TARGET SIZE: all three controls are ≥44×44 CSS px (`min-width`/`min-height`
   on `__close`, `min-height` plus 14px/26px padding on the two actions). The
   popup this replaces offered exits measured 177×16, 129×16 and 0×0.

   Colours come from §26/§27's tokens with literal `var()` fallbacks, so
   reverting §27 degrades the palette rather than breaking the dialog.
   ========================================================================== */

.sun-age-dialog {
	position: fixed;
	inset: 0;
	z-index: 100001;          /* above the §25 skip link */
	display: flex;
	align-items: center;
	justify-content: center;
	box-sizing: border-box;
	padding: 20px;
	overscroll-behavior: contain;
}

/* `display: flex` above would otherwise beat the UA's `[hidden] {display:none}`. */
.sun-age-dialog[hidden] {
	display: none;
}

/* Scroll lock, derived from the markup instead of from a state class. The
   contract has no `html.sun-age-dialog-open` hook and inventing one would mean
   the mu-plugin had to set and unset it in two more code paths; `:has()` reads
   the `hidden` attribute the dialog already toggles, so there is nothing to
   keep in sync. Progressive enhancement: a browser without `:has()` lets the
   page scroll behind the panel, which is a nuisance and not a defect. */
html:has(.sun-age-dialog:not([hidden])),
html:has(.sun-age-dialog:not([hidden])) body {
	overflow: hidden;
}

/* Its own element in the contract, because it carries `data-sun-age-dismiss`
   and must be clickable independently of the panel. */
.sun-age-dialog__backdrop {
	position: absolute;
	inset: 0;
	background: rgba(36, 46, 53, 0.72);   /* ink at 72% */
}

.sun-age-dialog__panel {
	position: relative;
	z-index: 1;               /* above __backdrop, which is its sibling */
	box-sizing: border-box;
	width: 100%;
	max-width: 480px;
	max-height: calc(100vh - 40px);
	overflow-y: auto;
	padding: 44px 32px 32px;
	border: 0;
	border-radius: 0;         /* Lagar is square everywhere */
	background: #FFFFFF;
	text-align: center;
	box-shadow: 0 18px 50px rgba(36, 46, 53, 0.28);
}

/* Specificity note, the same one §4's banner records: the Elementor kit rule
   `.elementor-kit-<id> button` (0,1,1) sets a transparent background and gold
   text on every <button> on the site, the kit's `a` rule does the same for
   every link, and the theme's global `button` rule sets bold Cormorant. A bare
   `.sun-age-dialog__confirm` (0,1,0) loses to both and would render as gold
   text on nothing. Every control rule below is therefore scoped through
   `.sun-age-dialog` as well, giving (0,2,0). */
.sun-age-dialog .sun-age-dialog__close {
	position: absolute;
	top: 0;
	right: 0;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	box-sizing: border-box;
	min-width: 44px;          /* SC 2.5.8 */
	min-height: 44px;
	padding: 0;
	border: 0;
	border-radius: 0;
	background: transparent;
	color: #242E35;           /* 13.84:1 on the white panel */
	font-family: var(--vamtam-h6-font-family, "Alata"), sans-serif;
	font-size: 20px;
	line-height: 1;
	cursor: pointer;
}

.sun-age-dialog .sun-age-dialog__close:hover {
	color: var(--sun-gold-text, #906A3C);   /* 4.87:1 */
}

.sun-age-dialog .sun-age-dialog__title {
	margin: 0 0 14px;
	font-family: var(--vamtam-h3-font-family, "Cormorant Infant"), serif;
	font-size: 32px;
	font-weight: 500;
	line-height: 1.1;
	color: #242E35;           /* 13.84:1 */
	letter-spacing: 0;
	text-transform: none;
}

.sun-age-dialog .sun-age-dialog__body {
	margin: 0 0 28px;
	font-family: var(--vamtam-primary-font-font-family, "Cormorant Infant"), serif;
	font-size: 20px;
	line-height: 1.4;
	color: #545D5C;           /* slate, 6.78:1 on white */
}

.sun-age-dialog__actions {
	display: flex;
	flex-wrap: wrap;
	gap: 12px;
	justify-content: center;
}

/* Shared geometry and type for the two actions. `__decline` is an anchor, so it
   needs the inline-flex box before `min-height` means anything to it, and an
   explicit `text-decoration`. */
.sun-age-dialog .sun-age-dialog__confirm,
.sun-age-dialog .sun-age-dialog__decline {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	box-sizing: border-box;
	min-width: 44px;
	min-height: 44px;         /* SC 2.5.8 */
	padding: 14px 26px;
	border: 1px solid transparent;
	border-radius: 0;
	font-family: var(--vamtam-h6-font-family, "Alata"), sans-serif;
	font-size: 14px;
	font-weight: 400;
	line-height: 1.2;
	letter-spacing: 2px;
	text-transform: uppercase;
	text-decoration: none;
	cursor: pointer;
	transition: background-color .3s, color .3s, border-color .3s;
}

.sun-age-dialog .sun-age-dialog__confirm {
	background: #545D5C;      /* slate fill, white text 6.78:1 */
	border-color: #545D5C;
	color: #FFFFFF;
}

.sun-age-dialog .sun-age-dialog__confirm:hover {
	background: #242E35;
	border-color: #242E35;
	color: #FFFFFF;           /* 13.84:1 */
}

.sun-age-dialog .sun-age-dialog__decline,
.sun-age-dialog a.sun-age-dialog__decline {
	background: transparent;
	border-color: #545D5C;    /* 6.78:1 on white */
	color: #545D5C;           /* 6.78:1 on white */
}

.sun-age-dialog .sun-age-dialog__decline:hover,
.sun-age-dialog a.sun-age-dialog__decline:hover {
	background: #545D5C;
	color: #FFFFFF;           /* 6.78:1 */
}

/* The dialog's own focus ring. §26's baseline already covers `button` and `a`,
   but the panel is a light island inside an ink backdrop and the dialog is the
   one place on the site where losing the ring costs a keyboard user the only
   exit, so it is restated at higher weight where neither Commerce7 nor
   Elementor can flatten it. */
.sun-age-dialog .sun-age-dialog__confirm:focus-visible,
.sun-age-dialog .sun-age-dialog__decline:focus-visible,
.sun-age-dialog .sun-age-dialog__close:focus-visible,
.sun-age-dialog__panel:focus-visible {
	outline: var(--sun-focus-ring-width, 3px) solid var(--sun-focus-ring, #906A3C) !important;
	outline-offset: var(--sun-focus-ring-gap, 2px) !important;
	box-shadow: 0 0 0 var(--sun-focus-ring-gap, 2px) var(--sun-focus-ring-inner, #FFFFFF) !important;
}

/* §26c's rule, restated for these controls: the indicator properties must not
   be in the transition list, or the ring fades in over 300 ms and any probe
   that samples in the same tick as `.focus()` reads "no ring". */
.sun-age-dialog .sun-age-dialog__confirm:focus-visible,
.sun-age-dialog .sun-age-dialog__decline:focus-visible,
.sun-age-dialog .sun-age-dialog__close:focus-visible {
	transition: background-color .3s, color .3s, border-color .3s;
}

/* The panel is programmatically focused on open; it must not show a ring for
   that, only for a real keyboard landing. */
.sun-age-dialog__panel:focus:not(:focus-visible) {
	outline: 0;
}

/* Reduced motion. §22c covers Elementor's entrance animations and §22d the
   site-wide button transitions; this covers the dialog's own, which are this
   section's only motion. `!important` is required, not stylistic: `__confirm`
   and `__close` are <button>s, so the parent theme's `transition: all 0.3s
   !important` applies to them and a plain declaration here loses to it — 22d's
   banner has the reasoning. The focus ring is deliberately NOT inside the
   query: it has no duration to remove and must never be conditional on a user
   preference. */
@media (prefers-reduced-motion: reduce) {

	.sun-age-dialog .sun-age-dialog__confirm,
	.sun-age-dialog .sun-age-dialog__decline,
	.sun-age-dialog .sun-age-dialog__close {
		transition: none !important;
	}
}

@media (max-width: 420px) {
	.sun-age-dialog__panel {
		padding: 44px 20px 24px;
	}

	.sun-age-dialog__actions {
		flex-direction: column;
	}

	.sun-age-dialog .sun-age-dialog__confirm,
	.sun-age-dialog .sun-age-dialog__decline {
		width: 100%;
	}
}


/* 28b. THE FOOTER AGE STATEMENT
   --------------------------------------------------------------------------
   One <p class="sun-age-statement"> in footer 623's copyright block, which
   now renders on every page (623's `_elementor_conditions` is
   `include/general`).

   It carries its own ground, and that is the point of this rule rather than a
   flourish. That section's background is a PHOTOGRAPH
   (`2020/03/clay-banks-TL60StXgi10-unsplash-footer-scaled-1.jpg`) under a
   semi-transparent dark overlay, so the luminance behind the text varies
   pixel by pixel. The sibling copyright line (white, 11–12px Alata) already
   fails SC 1.4.3 over the bright part of that image. A compliance sentence
   must not inherit that, and text over imagery cannot be made safe by
   choosing a colour, because the imagery is the variable.

   So: white on ink at 72%, the same value as `__backdrop`. Computed for every
   ground this line could plausibly land on, by compositing #242E35 at 0.72
   over the ground and measuring white against the result:
     over pure white #FFFFFF → #61696E → 5.59:1   <- the binding case
     over cream  #F9F8F4     → #60676A → 5.76:1
     over slate  #545D5C     → #313B40 → 11.47:1
     over ink    #242E35     → #242E35 → 13.84:1
   All ≥4.5, so the rule is self-sufficient and needs no scoping to the footer
   and no assumption about the photograph.

   Not uppercase and not 11px, unlike its sibling: this is a sentence a guest
   is meant to read, not a legal signature. The darker overlay that would fix
   the copyright line too is a one-value Elementor change and belongs to
   `content-migration`.
   -------------------------------------------------------------------------- */
.sun-age-statement {
	display: inline-block;
	box-sizing: border-box;
	max-width: 46em;
	margin: 0;
	padding: 10px 16px;
	background: rgba(36, 46, 53, 0.72);
	color: #FFFFFF;
	font-family: var(--vamtam-h6-font-family, "Alata"), sans-serif;
	font-size: 14px;
	font-weight: 400;
	line-height: 1.5;
	letter-spacing: 0.3px;
	text-transform: none;
}


/* ==========================================================================
   29. CLAIMS HOLD — C7 PRODUCT SUBTITLES (INT-05)
   --------------------------------------------------------------------------
   WHY THIS SECTION EXISTS. The rule below is a COMPLIANCE CONTROL, not
   styling: 15 of the 54 wines carry an unpermissioned Wine Enthusiast score
   claim in the Commerce7 `subTitle` field, and this is what keeps that string
   off the rendered page. Until now its only copy lived in the DATABASE — a
   `custom_css` post, ID 9958, title `lagar-child`, last modified
   2026-09-10 20:29:18, written through Appearance → Customize → Additional
   CSS and emitted by `wp_custom_css_cb()` as <style id="wp-custom-css">.

   A control in the database is a control that can be revoked by an operation
   nobody thinks of as touching compliance: the `OPS-09` restore drill, the
   `RUNBOOK-db-uploads-sync.md` import path (an import REPLACES the target, it
   does not merge), or `S4-03`'s DB URL rewrite. None of them reads this file,
   none of them would report the loss, and the only symptom would be a score
   claim quietly reappearing on 15 product pages. It also made CLAUDE.md's
   "all site CSS lives in one file" false. So it moves here, where the repo,
   `bin/preflight-deploy.sh` and CI all see it.

   THE DB COPY IS STILL LIVE AS THIS LANDS, AND THAT IS DELIBERATE. Clearing
   post 9958 is a separate `content-migration` script that runs only AFTER
   this file is on the server, so the hold is never off for one request. For
   the overlap the two copies are byte-identical, so the computed value does
   not change — see the cascade note below. Section `28b`'s pattern, file
   before document, same ordering reason.

   CASCADE / SPECIFICITY, measured so that clearing post 9958 cannot weaken
   this. The Customizer block prints LATER in <head> than this stylesheet
   (`wp_custom_css_cb` runs on `wp_head` at priority 101; the child-theme
   <link> is printed by `wp_print_styles` well before it), so while both exist
   the DB copy wins the tie — and the question is whether this copy can stand
   alone once that happens. Both copies are selector `.c7-product__subtitle`,
   specificity (0,1,0), author origin, `display` marked `!important`. Equal, so
   removing the later one leaves the same computed value. Nothing else can take
   the declaration, checked against all three places a competing `display`
   could come from:
     - this file: 4 other rules match `.c7-product__subtitle` (§2's label type,
       §4's grey/size/margin, §27f's colour). None declares `display` and none
       is `!important`.
     - Commerce7's own sheet, `cdn.commerce7.com/v2/commerce7.css`, fetched
       2026-10-03 (117867 bytes, unchanged from the §26 measurement): exactly
       one rule, `.c7-product__subtitle { color; margin-bottom }` — no
       `display`, no `!important` — and it loads before this file regardless.
     - the inline `style` attribute C7's client-side render could set: an
       important author declaration outranks a normal inline one, so the
       `!important` already covers it.
   The specificity is therefore NOT raised above the original. `!important` is
   kept because the original has it; nothing else here is added or removed.

   DO NOT delete this section to "undo the hold". The real fix is editing the
   15 `subTitle` fields in the Commerce7 tenant (PDP-RENDER-REGISTER 4.3 /
   `CPY-T19`), which is owner work in C7 admin, and the hold comes out in the
   same change that confirms the feed is clean — not before. `INT-03` is the
   other half: it keeps the same string out of the meta tags.

   Everything from here to the end of the section is post 9958's content
   ported VERBATIM, its comment included, as `INT-05` requires. Reformatted
   not at all — if you diff it against `wpro post get 9958 --field=post_content`
   it must match byte for byte.
   ========================================================================== */

/* Claims hold 2026-09-10: hide C7 product subtitles sitewide - 15 wines carry unpermissioned Wine Enthusiast score claims in the subTitle field. Presentational suppression only; real fix = tenant subTitle edits (PDP-RENDER-REGISTER 4.3). Remove when tenant copy is cleared. */ .c7-product__subtitle{display:none !important;}


/* ==========================================================================
   30. VISUALLY-HIDDEN UTILITY — .sun-sr-only
   --------------------------------------------------------------------------
   A site-wide clip-pattern utility: invisible, but still RENDERED, so it stays
   in the accessibility tree and in `innerText`/text extraction. That last part
   is the whole point and is why this is not `display: none` or
   `visibility: hidden` — both of those remove the node from the a11y tree and
   from `innerText`, which is exactly the failure this class exists to avoid.

   WHY IT IS A SHARED CLASS NOW. The file already contained the same recipe
   twice, written locally each time — `.ssv-specs__sr` (§20, the spec-bar
   screen-reader sentence) and `.sun-skip-link` (§25, which additionally
   un-clips itself on focus). A third caller is arriving from outside this
   surface, so the pattern gets one name instead of a third copy. The two
   existing rules are intentionally left as they are: §25's needs the matching
   `clip: auto; clip-path: none` reset on `:focus`, and rewriting §20's to lean
   on this class would change nothing while widening the blast radius of an
   edit to this block. New callers use `.sun-sr-only`.

   FIRST CALLER — THE ANIMATED HEADLINE (`bedrock-app`'s a11y change).
   The Vamtam blurred-letters headline prints one <span class="vamtam-letter">
   per character. `mu-plugins/sunstone-readable-headlines.php` already strips
   the inter-tag whitespace so extractors stop reading "W i n e s", but the
   per-letter spans remain, and a screen reader walking them can still
   announce the heading letter by letter. The fix is on the markup side: mark
   the letter spans `aria-hidden="true"` and print the full headline string
   once in a `.sun-sr-only` span. THIS CLASS NAME IS THE ENTIRE INTERFACE
   between the two surfaces — nothing else is coordinated, and this section
   styles the one class and nothing else.

   The contract that keeps it working: put the span as a DIRECT CHILD of the
   heading, a sibling of `.vamtam-word`, never inside one. The parent theme
   sets `.…--style-blurred_letters .vamtam-word { display: inline-flex }`
   (`lagar/vamtam/assets/css/dist/all.css:6094`), so a span nested inside a
   word becomes a flex item and picks up the `.vamtam-letter { opacity: 0 }`
   neighbourhood at :6098. As a direct child of the <h1> it matches neither.

   `position` is the one declaration marked `!important`, matching
   `.ssv-specs__sr`: it is load-bearing — the clip only hides the element
   because the element is out of flow at 1px — and a utility class carries the
   shortest selector in the file, so it is the one property that must not lose
   a specificity contest with a theme or Elementor rule on the heading subtree.
   Nothing else is forced; a caller that needs to override colour or font on a
   clipped node should still be able to.

   `margin: -1px` keeps the 1px box from adding a pixel of layout.
   `white-space: nowrap` stops a long string wrapping inside the 1px box, which
   in some engines still contributes height. No `text-transform` reset: the
   class is generic, and a caller inside an uppercased heading inherits that
   deliberately — the clipped text should read as the visible text does.
   ========================================================================== */

.sun-sr-only {
	position: absolute !important;
	width: 1px;
	height: 1px;
	margin: -1px;
	padding: 0;
	overflow: hidden;
	clip: rect(0 0 0 0);
	clip-path: inset(50%);
	white-space: nowrap;
	border: 0;
}

/* ==========================================================================
   31. COMMERCE7 PRODUCT PAGE — reserve space while C7 renders (CLS)
   --------------------------------------------------------------------------
   #c7-content is server-rendered empty, then C7 inserts a wrapper, then a
   250px spinner, then the product (~1.4 s). Each step moved everything below
   it (spec panel, cross-sell, footer) — CLS 0.3–1.0 on every PDP.
   Until the product detail exists, the mount holds one viewport of height,
   so nothing below it is on screen while C7 is still loading; when the
   detail renders the reservation drops and only off-screen content moves.
   :has() keys on C7's own finished-state class, so the spinner phase stays
   reserved. Scoped to body.page-id-994544 — the WordPress page that serves
   every /product/<slug>/ route; cart, club, collections are untouched.

   THIS IS NOW THE FALLBACK, not the usual case. One height for 82 products is
   right only for a wine with full tasting notes; the 19 products Commerce7
   has no description for render in ~420px, so the mount collapsed by ~880px
   and CLS was 0.232 on /product/2025-viognier-syv/ at 1440. commerce7-cls-
   reserve.php predicts each product's height from its feed description and
   prints it inline in <head> at one element more specificity
   (body.page-id-994544 …), so it wins wherever it lands in the cascade. The
   rule below still applies when the feed has no number for the slug: an
   unknown product, a cold cache, or a Commerce7 outage.
   ========================================================================== */

.page-id-994544 .wp-block-c7wp-default #c7-content:not(:has(.c7-product-detail)) {
	display: block;
	min-height: 1300px !important;
}

@media (max-width: 767px) {
	.page-id-994544 .wp-block-c7wp-default #c7-content:not(:has(.c7-product-detail)) {
		min-height: 2100px !important;
	}
}

/* ==========================================================================
   32. FOOTER BACKGROUND — defer until the footer is near the viewport (perf)
   --------------------------------------------------------------------------
   Footer template 623's first section paints fountains-bg-opt.webp (375 KB)
   plus the footer-shape.svg overlay as CSS backgrounds, so every page
   downloads them as soon as post-623.css parses — in parallel with the hero,
   several screens below the fold. sunstone-performance.php sets html.sun-js
   at the top of <head> and adds .sun-bg-ready to the section when it comes
   within 600px of the viewport (or load + 4 s). Until then the background
   is none. No JS → no .sun-js → unchanged behaviour. The section keeps its
   background-color, so the deferred paint is colour → photo, not blank.
   ========================================================================== */

html.sun-js .elementor-623 .elementor-element.elementor-element-d0bf9ae:not(.sun-bg-ready):not(.elementor-motion-effects-element-type-background),
html.sun-js .elementor-623 .elementor-element.elementor-element-d0bf9ae:not(.sun-bg-ready) > .elementor-background-overlay {
	background-image: none !important;
}

/* ==========================================================================
   33. JOURNAL ARCHIVES — category intro + image-less cards (UX, run 3)
   --------------------------------------------------------------------------
   sunstone-site-seo.php appends the term description as p.sun-archive-desc
   after the archive <h1> (template 4726). And 19 of 120 posts have no
   featured image, so their cards started ~200px above their neighbours in
   the grid; a 3:2 placeholder block (the same aspect as the medium_large
   thumbnails) keeps every row aligned. It uses the header wordmark SVG,
   already loaded on every page, at a small size on the theme's sand tint.
   ========================================================================== */

.sun-archive-desc {
	max-width: 62ch;
	margin: 1rem auto 0;
	text-align: center;
	font-size: 1.125rem;
	line-height: 1.6;
}

.elementor-posts--thumbnail-top .elementor-post:not(:has(.elementor-post__thumbnail__link))::before {
	content: "";
	display: block;
	width: 100%;
	aspect-ratio: 3 / 2;
	margin-bottom: 20px;
	background: #ede7da url("/app/uploads/2020/03/Artboard-1.svg") center / 28% no-repeat;
}

/* ==========================================================================
   34. JOURNAL ARCHIVES — one card style, shorter mobile hero (UX, run 5)
   --------------------------------------------------------------------------
   Two Posts widgets render the journal cards: 55c2dcf on the Journal page
   (2887, /blog/) and 7c3da22 in archive template 4726 (/category/…/). They
   were styled separately in Elementor — 2887 uses the kit's H5 (26/22px) and
   the 16px Alata date preset, 4726 uses H4 (32/28px) and a hard-coded
   11px bold uppercase 1px-tracked date. Both now follow the Journal page,
   through the same kit variables, so the tablet/mobile steps stay in sync.
   Selectors mirror Elementor's own (post-4726.css) at equal specificity;
   this file loads after it, so no !important is needed. Scoped to the two
   widget ids: the home-page Posts widget (44c7e78) and every other widget
   are untouched.
   Mobile (≤767px): the Journal hero (4a7a3e0) held min-height 70vh, so the
   first card began at y≈779 on a 390×844 screen; 45vh brings it to ≈568.
   Tablet and desktop keep 50vh / 100vh. The category template has no hero
   (an h1 block, cards at y≈376–431), so it needs nothing here.
   Thumbnails: Elementor crops both grids to a 3:2 box (padding-bottom 67%)
   on desktop/tablet but 2:1 (50%) on mobile, while the §33 placeholder is
   3:2 everywhere. Mobile is now 3:2 too, so image cards, placeholder cards
   and the 768×512 medium_large sources all share one ratio. Portrait
   featured images (995015 and two 2024 newsletters use a 1200×2400 bottle
   shot) still show only the middle band of the bottle — a 1:2 source can
   never fill a 3:2 box; that needs a landscape featured image, not CSS.
   ========================================================================== */

/* (b) Category-archive cards take the Journal-page card type. */
.elementor-4726 .elementor-element.elementor-element-7c3da22 .elementor-post__title,
.elementor-4726 .elementor-element.elementor-element-7c3da22 .elementor-post__title a {
	color: var(--e-global-color-vamtam_accent_3);
	font-family: var(--e-global-typography-vamtam_h5-font-family), Sans-serif;
	font-size: var(--e-global-typography-vamtam_h5-font-size);
	font-weight: var(--e-global-typography-vamtam_h5-font-weight);
	font-style: var(--e-global-typography-vamtam_h5-font-style);
	line-height: var(--e-global-typography-vamtam_h5-line-height);
}

.elementor-4726 .elementor-element.elementor-element-7c3da22 .elementor-post__meta-data {
	font-family: var(--e-global-typography-7247cab-font-family), Sans-serif;
	font-size: var(--e-global-typography-7247cab-font-size);
	font-weight: var(--e-global-typography-7247cab-font-weight);
	text-transform: none;
	letter-spacing: normal;
}

@media (max-width: 767px) {
	/* (e) Journal hero: 70vh → 45vh on phones only. */
	.page-id-2887 .elementor-2887 .elementor-element.elementor-element-4a7a3e0 > .elementor-container {
		min-height: 45vh;
	}

	/* (d) Same 3:2 thumbnail box on phones as on larger screens and as the §33 placeholder. */
	.elementor-2887 .elementor-element.elementor-element-55c2dcf .elementor-posts-container .elementor-post__thumbnail,
	.elementor-4726 .elementor-element.elementor-element-7c3da22 .elementor-posts-container .elementor-post__thumbnail {
		padding-bottom: calc(2 / 3 * 100%);
	}
}


/* ==========================================================================
   35. CONTRAST — the text that §27 did not reach (a11y, loop run 7)
   --------------------------------------------------------------------------
   TO REVERT: delete this section. Nothing depends on it.

   axe-core 4.10 (wcag2aa) on 20 pages × 2 widths, 2026-10-05: 202 colour-
   contrast nodes. All but a handful are four recurring sources, each of them
   gold #B98D58 or slate #545D5C text that §27 left alone because its token
   chain does not pass through them:

   (a) Elementor BUTTON text — the kit's `.elementor-kit-13 .elementor-button
       { color: #B98D58 }` is a literal, not a global, so 27b's
       --vamtam-btn-text-color never reaches it. 199 outline buttons on cream
       (2.82:1), plus the footer "Reserve a Tasting" on every page. Two
       buttons sit on ink #242E35 (vineyard 75a4418 "Book a Today") where
       #B98D58 passes at 4.62:1 and #906A3C would fail — excluded by widget id.
       Hover/focus already go #242E35 and are untouched.
   (b) H6 eyebrows set per widget to `--e-global-color-vamtam_accent_1`
       (41 headings on cream; "Discover", "Our story", the milestone years).
       27c deliberately keeps accent_1 at the ornament gold, so this restates
       the text gold on the H6 element only, cream/white grounds only — the
       one H6 on ink (vineyard 2063f08 "experiences") is excluded.
   (c) Post-navigation "Previous"/"Next" labels on every single post (template
       2958, 20791b1b): accent_1 again on a near-white ground (2.92:1), and the
       arrow glyphs are #D5D8DC (1.43:1).
   (d) Footer bottom bar: template 623's `.sun-footer-copy` paragraphs inherit
       the body slate #545D5C and sit on the slate section d0bf9ae with its
       0.36 black overlay — 1.65:1, the copyright and the 21+ statement are
       all but invisible. The legal links beside them are already white.
   (e) Membership tier CTA titles (364: 0bb22cf #B95858, a6641ec #BEB291,
       dda7661 #C38A75) at 62 px are large text (≥3:1 needed): 4.57 passes,
       2.11 and 2.91 do not. Same hue, lightness lowered until ≥3.3:1 on cream.
   (f) The 21+ dialog's confirm button: the parent theme's `button:focus
       { opacity: .8 }` and the kit's button colour reach the <button> through
       `html button` (0,0,2) and `.elementor-kit-13 button` (0,1,1); §28's rule
       is (0,2,0) and wins on colour, but axe measured #3A4349 on #767D7D
       because the dialog's open transition was still running. Opacity is
       pinned to 1 so neither the fade nor the theme's focus rule dims it.

   Ratios (WCAG 2.x relative luminance): #906A3C on cream 4.58, on white 4.87;
   #545D5C arrows on #FDFCFB 6.38; white on the footer bar's #363C3B 11.25;
   #978759 on cream 3.33; #BA7860 on cream 3.32; #B95858 on white 4.57.
   ========================================================================== */

/* (a) Button text. Same specificity shape as the kit rule (0,2,0) but later
   in the cascade; the two ink-ground buttons keep the ornament gold.
   §44 S1 (layout swarm): the rule used to ALSO name the inner
   `.elementor-button .elementor-button-text` span (0,3,0). Setting colour on
   the span itself beat the inherited per-widget colour, so every button that
   Elementor paints white (`.elementor-N .elementor-element-X .elementor-button
   { color:#FFFFFF }`, 46 widgets: 13 ink-filled #242E35 and 33 on photo/ink
   bands) came out gold #906A3C — 2.84:1 on ink, axe serious ×6 on
   /experiences/. Nothing else colours the span, so the span selectors are
   gone: the span now inherits from the <a>, the kit default on the <a> is
   still replaced by the text gold, and any per-widget colour (0,4,0) wins as
   Elementor intended, hover/focus included. */
.elementor-kit-13 .elementor-button {
	color: var(--sun-gold-text, #906A3C);
}

.elementor-kit-13 .elementor-button:hover,
.elementor-kit-13 .elementor-button:focus {
	color: #242E35;
}

.elementor-340 .elementor-element.elementor-element-75a4418 .elementor-button,
.elementor-340 .elementor-element.elementor-element-75a4418 .elementor-button .elementor-button-text {
	color: var(--sun-gold-ornament, #B98D58);
}

/* (b) H6 eyebrows. The per-widget rule is `.elementor-336 .elementor-element
   .elementor-element-03c0c50 .elementor-heading-title` — (0,4,0) — so this
   has to be (0,4,1): run 7's (0,3,1) version lost on every page (run 8). */
.elementor-kit-13 .elementor .elementor-widget-heading h6.elementor-heading-title {
	color: var(--sun-gold-text, #906A3C);
}

.elementor-kit-13 .elementor-340 .elementor-element.elementor-element-2063f08.elementor-widget-heading h6.elementor-heading-title {
	color: var(--sun-gold-ornament, #B98D58);
}

/* (b2) The 404 template's 80 px "404" (6751 cf9a85f) is accent_1 on cream,
   2.81:1 — large text needs 3:1. Same (0,4,1) shape. */
.elementor-kit-13 .elementor-6751 .elementor-element.elementor-element-cf9a85f .elementor-heading-title {
	color: var(--sun-gold-text, #906A3C);
}

/* (c) Single-post prev/next. */
.elementor-2958 .elementor-element.elementor-element-20791b1b span.post-navigation__prev--label,
.elementor-2958 .elementor-element.elementor-element-20791b1b span.post-navigation__next--label {
	color: var(--sun-gold-text, #906A3C);
}

.elementor-2958 .elementor-element.elementor-element-20791b1b .post-navigation__arrow-prev,
.elementor-2958 .elementor-element.elementor-element-20791b1b .post-navigation__arrow-next {
	color: #545D5C;
}

/* (d) Footer bottom bar copy. */
.elementor-623 .elementor-element.elementor-element-d0bf9ae .sun-footer-copy p {
	color: #FFFFFF;
}

/* (e) Membership tier titles. */
.elementor-364 .elementor-element.elementor-element-a6641ec .elementor-cta__title {
	color: #978759;
}

.elementor-364 .elementor-element.elementor-element-dda7661 .elementor-cta__title {
	color: #BA7860;
}

/* (f) 21+ confirm button never dims. */
.sun-age-dialog .sun-age-dialog__confirm,
.sun-age-dialog .sun-age-dialog__confirm:focus,
.sun-age-dialog .sun-age-dialog__confirm:hover {
	opacity: 1 !important;
}


/* ==========================================================================
   36. INLINE LINKS IN PROSE — underlined (a11y, loop run 8)
   --------------------------------------------------------------------------
   TO REVERT: delete this section. Nothing depends on it.

   axe `link-in-text-block` (SC 1.4.1): links inside text-editor and
   post-content prose are ink #242E35 on slate #545D5C body text — 2.04:1
   between the two, and no underline, so colour alone tells them apart
   (FAQ mailto links, "send us a message", PDP "here", recipe body links).
   An underline with a small offset makes them distinguishable regardless of
   colour; buttons, image links and the Commerce7 mount are excluded because
   they already have their own affordance. `.page-content.the-content-parent`
   is the parent theme's wrapper for classic (non-Elementor) page content —
   the FAQ page.
   ========================================================================== */
.elementor-widget-text-editor p a:not(.elementor-button):not(:has(img)),
.elementor-widget-text-editor li a:not(.elementor-button):not(:has(img)),
.elementor-widget-theme-post-content p a:not(.elementor-button):not(:has(img)),
.elementor-widget-theme-post-content li a:not(.elementor-button):not(:has(img)),
.page-content.the-content-parent p a:not(.elementor-button):not(:has(img)),
.page-content.the-content-parent li a:not(.elementor-button):not(:has(img)),
#c7-content .c7-error-page p a:not(.c7-btn) {
	text-decoration: underline;
	text-decoration-thickness: 1px;
	text-underline-offset: 0.18em;
}

.elementor-widget-text-editor p a:not(.elementor-button):hover,
.elementor-widget-text-editor li a:not(.elementor-button):hover,
.elementor-widget-theme-post-content p a:not(.elementor-button):hover,
.elementor-widget-theme-post-content li a:not(.elementor-button):hover,
.page-content.the-content-parent p a:not(.elementor-button):hover,
.page-content.the-content-parent li a:not(.elementor-button):hover {
	text-decoration-thickness: 2px;
}

/* §36b. The 21+ confirm button when focused: the kit's `button:focus
   { color: #242E35 }` is (0,2,1) and beats §28's (0,2,0) fill rule, giving
   ink on slate (2.04:1) for the keyboard user who has just landed on it.
   (0,3,0) restates the white. */
.sun-age-dialog .sun-age-dialog__confirm:focus,
.sun-age-dialog .sun-age-dialog__confirm:focus-visible {
	color: #FFFFFF;
	background: #545D5C;
}


/* ==========================================================================
   37. EYEBROW LABELS ARE PARAGRAPHS (axe heading-order, run 9)
   --------------------------------------------------------------------------
   31 Elementor heading widgets on 8 pages were H6 "eyebrows" placed ABOVE
   their section's H2 ("<h6>Discover</h6><h2>…</h2>", the Our Story milestone
   years, the team-page role labels). `run9-eyebrows.php` set them to
   `header_size: p` + wrapper class `.sun-eyebrow`; Elementor then renders
   `<p class="elementor-heading-title">` inside `.elementor-widget-heading
   .sun-eyebrow`. 30 of the 31 carry the kit's vamtam_h6 typography as a
   per-widget rule, which is tag-agnostic, so this rule only restates the h6
   type for the one that does not (362 6c2b08a) and carries the §35(b) text
   gold over from `h6.elementor-heading-title`. Measured before the swap
   (loop/r9-eyebrow-before.json): Alata 14px/100, uppercase, 10px tracking,
   18.2px line-height, #906A3C (12px/6px/15.6px under 767px); after must
   match. (0,4,1) for the same reason as §35(b). The vineyard page's
   `2063f08` sits on the ink ground and keeps the ornament gold. */
.elementor-kit-13 .elementor .sun-eyebrow.elementor-widget-heading p.elementor-heading-title {
	margin: 0;
	font-family: var(--e-global-typography-vamtam_h6-font-family, "Alata"), sans-serif;
	font-size: var(--e-global-typography-vamtam_h6-font-size, 14px);
	font-weight: var(--e-global-typography-vamtam_h6-font-weight, 100);
	font-style: var(--e-global-typography-vamtam_h6-font-style, normal);
	text-transform: var(--e-global-typography-vamtam_h6-text-transform, uppercase);
	line-height: var(--e-global-typography-vamtam_h6-line-height, 1.3em);
	letter-spacing: var(--e-global-typography-vamtam_h6-letter-spacing, 10px);
	color: var(--sun-gold-text, #906A3C);
}

.elementor-kit-13 .elementor-340 .elementor-element.elementor-element-2063f08.sun-eyebrow p.elementor-heading-title {
	color: var(--sun-gold-ornament, #B98D58);
}


/* ==========================================================================
   38. C7 ROUTE INTROS (/club/, /reservation/) — commerce7-route-intro.php
   --------------------------------------------------------------------------
   One server-rendered paragraph block beside the Commerce7 widget on the two
   pages that otherwise have no server HTML. Outside #c7-content, so C7 never
   touches it. Type follows §ss-soldout (Cormorant body, Alata h2).
   §44 S3: the 760 px max-width below never applied — the intro measured
   1212 px wide at 1440 — because Lagar's all.css `body.has-blocks:not(
   .fl-builder) .the-content-parent > *` (0,3,1) sets max-width:
   var(--vamtam-site-max-width) and beats the bare class (0,1,0). The second
   rule restates only the max-width at (0,3,2), so the padding and the mobile
   step below keep their low specificity. */
.sun-route-intro {
	max-width: 760px;
	margin: 0 auto;
	padding: 8px 24px 28px;
	font-family: var(--vamtam-primary-font-font-family, "Cormorant Infant"), serif;
	font-size: 18px;
	line-height: 1.55;
	color: var(--vamtam-primary-font-color, #545D5C);
	text-align: center;
}

body .page-content.the-content-parent > div.sun-route-intro {
	max-width: 760px;
}

/* §44 S4: the club intro now prints BEFORE the tier widget
   (commerce7-route-intro.php), so its rule moves from the top edge to the
   bottom edge, and the old h2 is the eyebrow p below. */
.sun-route-intro--club {
	margin-bottom: 40px;
	padding-bottom: 32px;
	border-bottom: 1px solid var(--ss-pdp-line, #DEDDD9);
	text-align: left;
}

.sun-route-intro .sun-route-intro__eyebrow {
	margin: 0 0 14px;
	font-family: var(--e-global-typography-vamtam_h6-font-family, "Alata"), sans-serif;
	font-size: 14px;
	font-weight: 400;
	line-height: 1.3;
	letter-spacing: 0.3em;
	text-transform: uppercase;
	color: var(--sun-gold-text, #906A3C);
}

.sun-route-intro h2 {
	margin: 0 0 14px;
	font-family: var(--vamtam-primary-font-font-family, "Cormorant Infant"), serif;
	font-size: 30px;
	line-height: 1.25;
	font-weight: 400;
	color: var(--ss-pdp-ink, #242E35);
	text-transform: none;
	letter-spacing: 0;
}

.sun-route-intro p {
	margin: 0 0 14px;
}

.sun-route-intro p:last-child {
	margin-bottom: 0;
}

@media (max-width: 767px) {
	.sun-route-intro {
		padding: 4px 16px 20px;
		font-size: 17px;
	}
	.sun-route-intro h2 {
		font-size: 26px;
	}
}


/* ==========================================================================
   39. HOME SLIDES — inactive fade slides are not keyboard stops (run 11)
   --------------------------------------------------------------------------
   The home "Slides" widget (118 1acf5bd, `.vamtam-lagar-slides`, fade
   transition, loop) keeps all 9 slides (3 + 6 loop clones) in the DOM at
   opacity 0 on top of each other. Every clone's "Browse Wines" button is
   still tabbable: the run-11 keyboard audit counted 9 "Browse Wines" stops in
   a row, 2–6 of them on fully invisible slides, with the focus ring painting
   over the visible slide. `visibility: hidden` on the non-active slides
   removes them from the tab order and the accessibility tree without
   touching Swiper's own opacity/transform inline styles. The fade still
   works: Swiper sets each slide's `transition-duration` inline for the
   length of the fade and swaps `.swiper-slide-active` at its start; with
   `visibility` added to the transition properties the outgoing slide stays
   visible until the fade ends (visibility interpolates as "visible" for the
   whole transition when either end is visible) and the incoming one is
   visible at once. Verified in loop/r11-slides.py at 390/1440. */
.vamtam-lagar-slides .swiper-slide {
	transition-property: opacity, visibility;
}

.vamtam-lagar-slides .swiper-slide:not(.swiper-slide-active) {
	visibility: hidden;
}


/* ==========================================================================
   40. HEADING LEVELS (run 11) — tags change, type does not
   --------------------------------------------------------------------------
   TO REVERT: delete this section and run run11-headings.php revert.

   `run11-headings.php` changes heading tags so the outline reads in order
   (axe heading-order). Every touched Elementor widget except the footer's
   four text-editors carries per-widget `__globals__` typography, which
   Elementor paints with a tag-agnostic (0,4,0) rule, so most of the swap is
   invisible. These rules restate only what the tag change would otherwise
   alter. Measured before (loop/r11-headings-before.json); after must match.

   (a) Contact 342: the four H6 eyebrows are now the real H2 section headings
       (`.sun-eyebrow-heading`). Their per-widget rule keeps the Alata 14px /
       10px-tracking eyebrow type; only the §35(b) text gold was tag-bound
       (`h6.elementor-heading-title`), so carry it over. (0,4,1) as in §35(b). */
.elementor-kit-13 .elementor .sun-eyebrow-heading.elementor-widget-heading h2.elementor-heading-title {
	color: var(--sun-gold-text, #906A3C);
}

/* (b) Contact 342: the nine "Address: / Phone: / Email: / Hours: /
   Reservations:" labels are `p.sun-label`. The per-widget rule keeps the
   Cormorant 26px/500 h5 type and slate colour; a <p> would otherwise inherit
   font-style / letter-spacing / text-transform from body instead of the kit's
   h5 (normal / normal / none) — pin them, and the zero margin. */
.elementor-kit-13 .elementor .sun-label.elementor-widget-heading p.elementor-heading-title {
	margin: 0;
	font-family: var(--e-global-typography-vamtam_h5-font-family, "Cormorant Infant"), sans-serif;
	font-size: var(--e-global-typography-vamtam_h5-font-size, 26px);
	font-weight: var(--e-global-typography-vamtam_h5-font-weight, 500);
	font-style: var(--e-global-typography-vamtam_h5-font-style, normal);
	line-height: var(--e-global-typography-vamtam_h5-line-height, 1.2em);
	letter-spacing: normal;
	text-transform: none;
	color: var(--e-global-color-vamtam_accent_2, #545D5C);
}

/* (b2) …and the label must keep its own column. Elementor gives each label
   `width: var(--container-widget-width, 120px)`, but the row container sets
   `--container-widget-width: calc((1 - 1) * 100%)` = 0, so every label
   collapsed to 0 px wide and its text printed straight over the value beside
   it ("Address:" across "125 N Refugio Road", all nine rows). Owner, 2026-10-08.
   Give the label an intrinsic width instead of Elementor's variable; the row
   is already `display: flex` with a 16 px column gap, and the mobile setting
   (`width: inherit`) still stacks label over value under 768 px. */
.elementor-kit-13 .elementor .sun-label.elementor-widget-heading {
	width: auto !important;
	max-width: none !important;
	flex: 0 0 auto !important;
}
@media (min-width: 768px) {
	.elementor-kit-13 .elementor .sun-label.elementor-widget-heading { min-width: 104px; }
}
/* the value beside the label must give way instead of pushing the row wide:
   Elementor sizes it from `--container-widget-width: 100%`, which at 768 px
   made the row 104 + 654 px and spilled past the viewport. */
.elementor-kit-13 .elementor .sun-label + .e-con,
.elementor-kit-13 .elementor .sun-label + .elementor-widget {
	flex: 1 1 auto !important;
	width: auto !important;
	min-width: 0 !important;
	max-width: 100% !important;
}

/* (c) Journal 2887 and the category template 4726: post cards are
   `h2.elementor-post__title`. The per-widget rule keeps the h5 type; the kit's
   `h2` adds `letter-spacing: 0px` where the h3 had `normal` — same glyphs,
   restated so the measurement matches. (0,4,1) beats the (0,4,0) per-widget
   rule and the (0,1,1) kit rule. */
.elementor-kit-13 .elementor .elementor-widget-posts h2.elementor-post__title {
	letter-spacing: normal;
}

/* (d) Footer 623: the four column titles are `h2.sun-footer-title` inside
   text-editor HTML with no per-widget typography, so the kit's `h2` (0,1,1)
   would paint them 62px Cormorant 300. Restate the kit's h5: Cormorant 26px
   (22px below 1025px via the kit's own variable), 500, 1.2em, slate, and the
   parent theme's 0.6em / 0.3em heading margins that are in effect today. */
.elementor-kit-13 .elementor-623 .elementor-widget-text-editor h2.sun-footer-title {
	margin: 0.6em 0 0.3em;
	font-family: var(--e-global-typography-vamtam_h5-font-family, "Cormorant Infant"), sans-serif;
	font-size: var(--e-global-typography-vamtam_h5-font-size, 26px);
	font-weight: var(--e-global-typography-vamtam_h5-font-weight, 500);
	font-style: var(--e-global-typography-vamtam_h5-font-style, normal);
	line-height: var(--e-global-typography-vamtam_h5-line-height, 1.2em);
	letter-spacing: normal;
	text-transform: none;
	color: var(--e-global-color-vamtam_h5_color, #545D5C);
}

/* ==========================================================================
   41. CALL-TO-ACTION BACKGROUNDS — defer until near the viewport (perf, run 12)
   --------------------------------------------------------------------------
   Same mechanism as §32. Six pages (home, visit, events, tasting room,
   vineyard, team) end with a row of Elementor call-to-action widgets whose
   photos are inline `background-image` styles on `.elementor-cta__bg`
   (70–140 KB each, 1.3 MB across the six pages), several screens below the
   fold and fetched at load alongside the hero. sunstone-performance.php §3
   adds .sun-bg-ready per element within 600px of the viewport (or load + 4 s).
   `!important` because the URL is an inline style. No JS → unchanged.
   The widget keeps its overlay colour, so the deferred paint is tint → photo.
   ========================================================================== */

html.sun-js .elementor-cta__bg:not(.sun-bg-ready) {
	background-image: none !important;
}


/* ==========================================================================
   42. GRAVITY FORMS — house type for the Orbital theme
   --------------------------------------------------------------------------
   Colours, radius and control size come from the gform_default_styles filter
   in mu-plugins/sunstone-forms.php (Orbital prints them inline per form, so a
   stylesheet cannot set them). Type is not part of that API, and Lagar's own
   label/input/button rules otherwise win (labels came out in Cormorant), so
   the fonts are set here, scoped to Gravity Forms only.
   ========================================================================== */

.gform-theme--orbital.gform_wrapper .gfield_label,
.gform-theme--orbital.gform_wrapper .gform-field-label,
.gform-theme--orbital.gform_wrapper legend.gfield_label {
	font-family: "Alata", sans-serif !important;
	font-weight: 400 !important;
	letter-spacing: 0.12em;
	text-transform: uppercase;
}
.gform-theme--orbital.gform_wrapper .gfield_required {
	font-family: "Alata", sans-serif !important;
	letter-spacing: 0.06em;
	color: #8A3B2E;
}
.gform-theme--orbital.gform_wrapper input:not([type="submit"]):not([type="checkbox"]):not([type="radio"]),
.gform-theme--orbital.gform_wrapper select,
.gform-theme--orbital.gform_wrapper textarea {
	font-family: "Alata", sans-serif !important;
	font-size: 16px !important;
}
.gform-theme--orbital.gform_wrapper .gfield_description,
.gform-theme--orbital.gform_wrapper .gfield_consent_label,
.gform-theme--orbital.gform_wrapper .ginput_container_consent label {
	font-family: "Cormorant Infant", Georgia, serif !important;
	font-size: 17px !important;
	line-height: 1.45;
	text-transform: none;
	letter-spacing: 0;
}
.gform-theme--orbital.gform_wrapper .gform_footer .gform_button,
.gform-theme--orbital.gform_wrapper .gform_page_footer .gform_button {
	font-family: "Alata", sans-serif !important;
	font-size: 13px !important;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	min-height: 50px;
	min-width: 200px;
	padding-inline: 32px;
	color: #FFFFFF !important;
}
.gform-theme--orbital.gform_wrapper .gform_footer .gform_button:hover,
.gform-theme--orbital.gform_wrapper .gform_footer .gform_button:focus-visible {
	background-color: #906A3C !important;
	border-color: #906A3C !important;
}
.gform-theme--orbital .gform_confirmation_message,
.gform_confirmation_wrapper .gform_confirmation_message {
	font-family: "Cormorant Infant", Georgia, serif;
	font-size: 26px;
	line-height: 1.3;
	color: #242E35;
	padding: 28px 0;
}

/* §42b. The consent checkbox's "… our Privacy Policy" link, underlined.
   Same finding as §36 (axe `link-in-text-block`, SC 1.4.1) in the one place
   §36 cannot reach: Gravity Forms prints the consent description outside a
   text-editor widget, so the link was ink #242E35 on slate #545D5C — 2.04:1
   between link and surrounding text, with no underline. Both forms on
   /our-story/contact/ and the enquiry form on /host-a-private-event/. */
.gform-theme--orbital.gform_wrapper .gfield_consent_description a,
.gform-theme--orbital.gform_wrapper .gfield_consent_description_text a,
.gform-theme--orbital.gform_wrapper .gfield_consent_label a,
.gform-theme--orbital.gform_wrapper .gfield_description a {
	text-decoration: underline;
	text-decoration-thickness: 1px;
	text-underline-offset: 0.18em;
}
.gform-theme--orbital.gform_wrapper .gfield_consent_description a:hover,
.gform-theme--orbital.gform_wrapper .gfield_consent_description_text a:hover,
.gform-theme--orbital.gform_wrapper .gfield_consent_label a:hover,
.gform-theme--orbital.gform_wrapper .gfield_description a:hover {
	text-decoration-thickness: 2px;
}


/* ==========================================================================
   43. IMAGE-GROW ANIMATION — stop it scrolling the page sideways (UX, session 7)

   The Vamtam `imageGrowWithScaleLeft` / `-ScaleRight` animation scales an image as it comes into
   view. Its `transform-origin` is the element's centre, so an image whose column already reaches the
   edge of the viewport grows past it — and because the scale increases with scroll progress, so does
   the overshoot. Measured 2026-10-06 by scrolling each page from top to bottom and recording the
   worst `document.documentElement.scrollWidth` (`loop/c8-overflow.py`):

                               1280 px            1440 px
     /                         1355  (+75)        1526  (+86)
     /our-story/               1421  (+141)       1604  (+164)
     /our-story/vineyard/      1421  (+141)       1604  (+164)
     /our-story/crafts-people/ 1408  (+128)       1584  (+144)
     /experiences/events/      1408  (+128)       1584  (+144)

   So five pages, the home page among them, gain a horizontal scrollbar and drift sideways while a
   visitor scrolls. 64 documents carry an `imageGrow` class, so this is a pattern rather than a
   one-off. (Section 34's sibling fix, 34ba0bc7, dealt with a 1 px overflow at 390; this is the
   desktop case and is two orders of magnitude bigger.)

   Every overshooting pixel is **outside the viewport**, because the Elementor top-level section is
   exactly viewport-wide, so clipping at that level can only remove what nobody can see. `clip` and
   not `hidden`: `overflow: hidden` makes a scroll container and would break `position: sticky`
   descendants, which this theme uses for its header.

   Verified by A/B (`loop/c8-clip-ab.py`, 5 pages x 1280/1440): scrollWidth goes to **exactly the
   viewport width on all ten**, and a screenshot taken at the scroll position where the overflow was
   worst is **pixel-identical** on nine of ten — the tenth is the home page, whose 120x163 px
   difference sits at x=448-568, nowhere near either edge, and is the carousel on a different frame.

   The `:has()` is deliberate: the animation classes are added by JavaScript when the image scrolls
   into view, so the rule starts applying exactly when the overshoot can start. A browser without
   `:has()` keeps today's behaviour.
   ========================================================================== */

.elementor-top-section:has(.vamtam-image-wrapper[class*="imageGrow"]),
.e-con.e-parent:has(.vamtam-image-wrapper[class*="imageGrow"]) {
	overflow-x: clip;
}


/* ==========================================================================
   44. LAYOUT SWARM SITE-WIDE (W0 S1–S8, 2026-10-07)
   --------------------------------------------------------------------------
   One sub-block per backlog item. Where the cause was an earlier rule, that
   rule was fixed in place and the sub-block here says where:
     S1 → §35(a) selector narrowed   S2 → §7 collection grid 2-up
     S3 → §38 max-width specificity  S4 → §38 club intro + mu-plugin
   Measurements and before/after: design-out/layout-swarm/build/sw/REPORT.md.
   TO REVERT: delete this section and undo the four in-place edits above
   (each is marked "§44").
   ========================================================================== */

/* S1 — ink buttons kept gold text (axe colour-contrast ×6 on /experiences/).
   Fixed at the source in §35(a): it no longer colours the inner
   .elementor-button-text span, so per-widget white text on #242E35 (and on
   photo bands) shows again. No rule here. */

/* S2 — Commerce7 collection card, compact at ≤767 px (the grid itself goes
   2-up in §7). In a ~165 px column the §3 card would wrap price, stack the
   quantity box over a full-width button (§7's ≤480 rule) and run 26 px
   titles to four lines. Here: 18 px title, tighter price tracking, and the
   quantity box + button on one row, both exactly 44 px tall. Layout and C7
   variables only — nothing inside #c7-content is added or reordered. */
@media screen and (max-width: 767px) {
	.c7wp-wrap .c7-product-collection .c7-product__image,
	#c7-content .c7-product-collection .c7-product__image {
		padding: 16px 8px 0;
	}
	/* C7's <img> has no width/height attributes, so in a 2-up row a bottle
	   decoding late moved its card's details (and the row) down: CLS +0.24
	   on /collection/red/ at 390 in the first A/B. A fixed 170 px slot
	   (contain, so a wide image letterboxes instead of overflowing)
	   reserves the space before the image arrives. */
	.c7wp-wrap .c7-product-collection .c7-product__image img,
	#c7-content .c7-product-collection .c7-product__image img {
		height: 170px;
	}
	.c7wp-wrap .c7-product-collection .c7-product__title,
	#c7-content .c7-product-collection .c7-product__title {
		font-size: 18px;
		line-height: 1.25;
	}
	.c7wp-wrap .c7-product-collection .c7-product__subtitle,
	#c7-content .c7-product-collection .c7-product__subtitle {
		letter-spacing: 1px;
		margin-bottom: 8px;
	}
	.c7wp-wrap .c7-product-collection .c7-product__teaser,
	#c7-content .c7-product-collection .c7-product__teaser {
		font-size: 16px;
		margin-bottom: 10px;
	}
	.c7wp-wrap .c7-product-collection .c7-product__add-to-cart__price,
	#c7-content .c7-product-collection .c7-product__add-to-cart__price {
		letter-spacing: 2px;
		margin: 8px 0 12px;
	}
	.c7wp-wrap .c7-product-collection .c7-product__add-to-cart__form,
	#c7-content .c7-product-collection .c7-product__add-to-cart__form {
		flex-wrap: nowrap;
		gap: 6px;
	}
	.c7wp-wrap .c7-product-collection .c7-product__add-to-cart__form__quantity,
	#c7-content .c7-product-collection .c7-product__add-to-cart__form__quantity {
		flex: 0 0 44px;
		width: 44px;
		max-width: 44px;
	}
	body .c7wp-wrap .c7-product-collection .c7-product__add-to-cart__form__quantity input,
	body #c7-content .c7-product-collection .c7-product__add-to-cart__form__quantity input {
		width: 44px;
		height: 44px;
		min-height: 44px;
		padding: 0 2px;
	}
	body .c7wp-wrap .c7-product-collection .c7-product__add-to-cart__form .c7-btn,
	body #c7-content .c7-product-collection .c7-product__add-to-cart__form .c7-btn {
		flex: 1 1 0;
		flex-basis: 0;
		min-width: 0;
		min-height: 44px;
		padding: 4px 6px;
		font-size: 12px;
		letter-spacing: 1px;
		line-height: 1.15;
		white-space: normal;
	}
}

/* S3 — C7 route shells (/club/ 994545, /reservation/ 994546).
   The 760 px intro width is fixed in §38. Here: (a) the house 88 px top and
   bottom rhythm on the bare page shell (it had 40/30 px, so the footer sat
   30 px under the intro), 48 px on phones; (b) /reservation/ reserves 60vh
   for the booking widget OUTSIDE #c7-content. C7 holds its mount at 100vh
   while it loads and then renders a ~220 px form, so the footer jumped
   ~680 px up into view at 1440 (CLS 0.105). With the wrapper at ≥60vh the
   footer starts below the fold both while loading and after.
   Specificity (0,5,2): Lagar's all.css shell padding is
   `body:not(.vamtam-is-elementor) .page-wrapper > article > .page-content`
   (0,3,2) and layout-below-max.css restates it at (0,4,2). */
body.page.page-id-994545 .page-wrapper > article > .page-content.the-content-parent,
body.page.page-id-994546 .page-wrapper > article > .page-content.the-content-parent {
	padding-top: 88px;
	padding-bottom: 88px;
}

body.page-id-994546 .wp-block-c7wp-default {
	min-height: 60vh;
}

@media (max-width: 767px) {
	body.page.page-id-994545 .page-wrapper > article > .page-content.the-content-parent,
	body.page.page-id-994546 .page-wrapper > article > .page-content.the-content-parent {
		padding-top: 48px;
		padding-bottom: 48px;
	}
}

/* S4 — /club/ intro before the widget, its h2 now `p.sun-route-intro__eyebrow`
   (commerce7-route-intro.php). Styles are in §38 next to the rest of the
   intro. No rule here. */

/* S5 — Gravity Forms choices and labels (all forms, Orbital theme).
   (a) Checkbox / radio: the kit's `.elementor-kit-13 input:not([type=button])
       :not([type=submit])` gives every input 12px 20px padding and a white
       border, so the GF 22 px box rendered 42×26 with an invisible edge. The
       control box is now 44×44 — the hit area — and the visible 22 px square
       (white fill, GF's #C9C7C1 control border) is painted centred inside it
       with two background layers, so it looks like the GF default. GF's own
       ::before check glyph is centred by its grid. Borders, padding and the
       kit's padding are zeroed; the focus ring (§26) draws round the 44 px box.
   (b) Field labels 13 px → 15 px (Alata, tracked caps, unchanged otherwise). */
.gform-theme--orbital.gform_wrapper .gfield input[type="checkbox"],
.gform-theme--orbital.gform_wrapper .gfield input[type="radio"] {
	--sun-choice: var(--gf-ctrl-choice-size, 22px);
	box-sizing: border-box;
	inline-size: 44px;
	block-size: 44px;
	width: 44px;
	height: 44px;
	min-width: 44px;
	padding: 0;
	margin: 0 8px 0 0;
	border: 0;
	place-content: center;
	place-items: center;
	background-color: transparent;
	background-image:
		linear-gradient(#FFFFFF, #FFFFFF),
		linear-gradient(var(--gf-ctrl-border-color, #C9C7C1), var(--gf-ctrl-border-color, #C9C7C1));
	background-position: center, center;
	background-size: calc(var(--sun-choice) - 2px) calc(var(--sun-choice) - 2px), var(--sun-choice) var(--sun-choice);
	background-repeat: no-repeat;
	box-shadow: none;
	cursor: pointer;
}

.gform-theme--orbital.gform_wrapper .gfield input[type="radio"] {
	background-image:
		radial-gradient(circle closest-side, #FFFFFF calc(100% - 1px), transparent 100%),
		radial-gradient(circle closest-side, var(--gf-ctrl-border-color, #C9C7C1) calc(100% - 0.5px), transparent 100%);
}

/* GF's checked state turns the control border gold (#B98D58, measured) and
   its error state red; keep both on the painted border layer. */
.gform-theme--orbital.gform_wrapper .gfield input[type="checkbox"]:checked {
	background-image:
		linear-gradient(#FFFFFF, #FFFFFF),
		linear-gradient(#B98D58, #B98D58);
}

.gform-theme--orbital.gform_wrapper .gfield input[type="radio"]:checked {
	background-image:
		radial-gradient(circle closest-side, #FFFFFF calc(100% - 1px), transparent 100%),
		radial-gradient(circle closest-side, #B98D58 calc(100% - 0.5px), transparent 100%);
}

.gform-theme--orbital.gform_wrapper .gfield input[type="checkbox"][aria-invalid="true"] {
	background-image:
		linear-gradient(#FFFFFF, #FFFFFF),
		linear-gradient(var(--gf-ctrl-border-color-error, #C02B0A), var(--gf-ctrl-border-color-error, #C02B0A));
}

.gform-theme--orbital.gform_wrapper .ginput_container_consent,
.gform-theme--orbital.gform_wrapper .gchoice {
	align-items: center;
}

.gform-theme--orbital.gform_wrapper .gfield_label,
.gform-theme--orbital.gform_wrapper .gform-field-label:not(.gform-field-label--type-inline),
.gform-theme--orbital.gform_wrapper legend.gfield_label {
	font-size: 15px;
	line-height: 1.35;
}

/* S6 — Arrow text links (Elementor Button widgets styled as a gold text
   link with an arrow icon and a per-widget 0 padding: home, our-story,
   vineyard, crafts-people, events, membership) were 16 px tall. A centred
   transparent ::before gives each a hit area of at least 44 px (or the
   button's own height, if taller) without moving or repainting anything:
   it is absolutely positioned, so layout and look are unchanged. Only
   buttons that carry an icon; ::after is left to Vamtam's underline anim.
   The area is anchored 6 px below the link and grows upwards: several of
   these links are the last thing in an Elementor section with
   `overflow:hidden` and ~7 px of room below (home d1e7e38, membership
   14ca891a), where a centred box lost its lower 14 px to the clip. */
.elementor-widget-button .elementor-button:has(.elementor-button-icon) {
	position: relative;
}

.elementor-widget-button .elementor-button:has(.elementor-button-icon)::before {
	content: "";
	position: absolute;
	left: 0;
	right: 0;
	bottom: -6px;
	height: max(100%, 44px);
}

/* S7 — Single-post template 996432, post-content widget images. 270 content
   images on 120 posts, every one alone in its own <p>; 256 are portrait or
   square (bottle shots up to 278×900 px rendered 900 px tall with a 440 px
   void beside them). Cap at 480 px tall (360 px on phones), keep the ratio,
   centre. Landscape images in the 720 px column are < 480 px tall already. */
.elementor-996432 .elementor-widget-theme-post-content img {
	display: block;
	width: auto;
	height: auto;
	max-width: 100%;
	max-height: 480px;
	margin-inline: auto;
	object-fit: contain;
}

@media (max-width: 767px) {
	.elementor-996432 .elementor-widget-theme-post-content img {
		max-height: 360px;
	}
}

/* S7 — featured image (4c5016fa): its widget CSS forced `width:100%
   !important`, upscaling a 564 px flyer to 1100 px (and 1024 px photos to
   1100). Width is now the image's own (density-corrected srcset width),
   capped by the column; the 16:9 / 3:2 cover crop stays. Event posts are
   flyers, so they keep their whole artwork (natural ratio, no crop). */
body .elementor-996432 .elementor-element.elementor-element-4c5016fa img {
	width: auto !important;
	max-width: 100% !important;
	margin-inline: auto;
}

body .elementor-996432.category-events .elementor-element.elementor-element-4c5016fa img {
	aspect-ratio: auto;
	object-fit: contain !important;
}

/* S8 — Shared post-card skin: archive 996452 (133fb5ac), search 996443
   (45bff0f2), single-post "Keep reading" 996432 (6c781a5d), and every other
   Posts widget for (c).
   (a) Fixed media slot. 6 of 10 recipe cards have no featured image and
       were 230–270 px shorter than their image neighbours. The §33 ::before
       placeholder is switched off by these widgets' own CSS (`::before
       { display:none !important }`), so this uses ::after moved to the top
       of the flex column with `order:-1`: a paper #F9F8F4 block at the
       thumbnail's ratio (0.66 ≥768 px, 0.5 below, as Elementor sets it) with
       the post's category as a small gold eyebrow. The label is decorative
       (`/ ""` keeps it out of the accessibility tree).
   (b) Equal heights already come from the grid's stretch; with (a) every
       card in a row has the same media slot, so rows match.
   (c) Title links ≥ 44 px: 9 px of padding top and bottom (a one-line
       title is 26–31 px tall, so 44–49 px), cancelled by
       equal negative margins, so the link box grows to ≥ 44 px while the
       inline-block's margin box — and so the layout — stays the same. */
.elementor-996452 .elementor-element-133fb5ac article.elementor-post:not(:has(.elementor-post__thumbnail__link))::after,
.elementor-996432 .elementor-element-6c781a5d article.elementor-post:not(:has(.elementor-post__thumbnail__link))::after {
	content: "Journal" / "";
	order: -1;
	display: flex;
	align-items: center;
	justify-content: center;
	width: 100%;
	aspect-ratio: 100 / 66;
	background: #F9F8F4;
	border-bottom: 1px solid #DEDDD9;
	color: var(--sun-gold-text, #906A3C);
	font-family: "Alata", sans-serif;
	font-size: 12px;
	letter-spacing: 0.3em;
	text-transform: uppercase;
}

.elementor-996452 .elementor-element-133fb5ac article.elementor-post.category-club-newsletters:not(:has(.elementor-post__thumbnail__link))::after,
.elementor-996432 .elementor-element-6c781a5d article.elementor-post.category-club-newsletters:not(:has(.elementor-post__thumbnail__link))::after {
	content: "Club newsletters" / "";
}

.elementor-996452 .elementor-element-133fb5ac article.elementor-post.category-events:not(:has(.elementor-post__thumbnail__link))::after,
.elementor-996432 .elementor-element-6c781a5d article.elementor-post.category-events:not(:has(.elementor-post__thumbnail__link))::after {
	content: "Events" / "";
}

.elementor-996452 .elementor-element-133fb5ac article.elementor-post.category-from-the-vineyard:not(:has(.elementor-post__thumbnail__link))::after,
.elementor-996432 .elementor-element-6c781a5d article.elementor-post.category-from-the-vineyard:not(:has(.elementor-post__thumbnail__link))::after {
	content: "From the vineyard" / "";
}

.elementor-996452 .elementor-element-133fb5ac article.elementor-post.category-news:not(:has(.elementor-post__thumbnail__link))::after,
.elementor-996432 .elementor-element-6c781a5d article.elementor-post.category-news:not(:has(.elementor-post__thumbnail__link))::after {
	content: "News" / "";
}

.elementor-996452 .elementor-element-133fb5ac article.elementor-post.category-wine-education:not(:has(.elementor-post__thumbnail__link))::after,
.elementor-996432 .elementor-element-6c781a5d article.elementor-post.category-wine-education:not(:has(.elementor-post__thumbnail__link))::after {
	content: "Wine education" / "";
}

.elementor-996452 .elementor-element-133fb5ac article.elementor-post.category-recipes:not(:has(.elementor-post__thumbnail__link))::after,
.elementor-996432 .elementor-element-6c781a5d article.elementor-post.category-recipes:not(:has(.elementor-post__thumbnail__link))::after {
	content: "Recipes" / "";
}

@media (max-width: 767px) {
	.elementor-996452 .elementor-element-133fb5ac article.elementor-post:not(:has(.elementor-post__thumbnail__link))::after,
	.elementor-996432 .elementor-element-6c781a5d article.elementor-post:not(:has(.elementor-post__thumbnail__link))::after {
		aspect-ratio: 2 / 1;
	}
}

.elementor-widget-posts .elementor-post__title a,
.elementor-widget-archive-posts .elementor-post__title a {
	display: inline-block;
	padding-block: 9px;
	margin-block: -9px;
}

/* S9 Private Events venue photo panels (ha-image-accordion .sun-venue-acc): the titles and capacities are
   white over the photo. Give each panel an ink ground under the image, so the text stays readable if a
   photo is slow or fails, and contrast checkers measure against ink instead of the paper page. */
.sun-venue-acc .ha-ia-item {
	background-color: #242E35;
}

/* ==========================================================================
   45. PRESS PAGE (/press/, D118, 2026-10-07)
   --------------------------------------------------------------------------
   Elementor Pro build: Loop Grid ×2 (template "Press card", 997248) +
   Taxonomy Filter + Load More, Counter ×3, Nested Carousel, Gallery, plus the
   outlet ribbon from mu-plugins/sunstone-press.php [sunstone_press_outlets].
   Mobile-first (owner: "Improve the mobile ux and ui"): on phones the
   featured stories are a swipe row, coverage cards go image-left and compact,
   the topic filter scrolls sideways in one line, Load More is full width,
   the hero is shorter and its parallax is off (set in Elementor).
   Motion: ribbon has a pause button and stops under reduced motion; parallax
   and card lift stop under reduced motion; counters jump to value (PHP).
   Gold: --sun-gold-text on light grounds, --sun-gold-ornament on ink (D117).
   Theme overrides: the kit's button and "li a" underline rules outrank class
   selectors, hence element-qualified selectors and a few !important.
   TO REVERT: delete this section; the page falls back to Elementor defaults.
   ========================================================================== */
.sun-press-quote .screen-reader-text,
.sun-press-card .screen-reader-text,
.sun-press-ribbon .screen-reader-text {
	position: absolute !important;
	width: 1px;
	height: 1px;
	overflow: hidden;
	clip: rect(1px, 1px, 1px, 1px);
	clip-path: inset(50%);
	white-space: nowrap;
}

/* --- hero: parallax layer static under reduced motion --- */
@media (prefers-reduced-motion: reduce) {
	.sun-press-hero .elementor-motion-effects-layer {
		transform: none !important;
	}
}

/* --- outlet ribbon (ink band) --- */
.sun-press-ribbon {
	position: relative;
	display: flex;
	align-items: center;
}
.sun-press-ribbon__viewport {
	flex: 1 1 auto;
	min-width: 0;
	overflow: hidden;
	-webkit-mask-image: linear-gradient(90deg, transparent, #000 6%, #000 94%, transparent);
	mask-image: linear-gradient(90deg, transparent, #000 6%, #000 94%, transparent);
}
.sun-press-ribbon__track {
	display: flex;
	width: max-content;
	animation: sun-press-marquee 70s linear infinite;
}
.sun-press-ribbon.is-paused .sun-press-ribbon__track,
.sun-press-ribbon:hover .sun-press-ribbon__track {
	animation-play-state: paused;
}
ul.sun-press-ribbon__list {
	display: flex;
	flex-shrink: 0;
	margin: 0 !important;
	padding: 0 !important;
	list-style: none;
}
ul.sun-press-ribbon__list > li {
	position: relative;
	margin: 0;
	padding: 0 30px;
	font-family: var(--e-global-typography-vamtam_h5-font-family), serif;
	font-size: clamp(18px, 1.7vw, 23px);
	line-height: 1.4;
	color: #F9F8F4;
	white-space: nowrap;
}
ul.sun-press-ribbon__list > li::after {
	content: "";
	position: absolute;
	top: 50%;
	right: -3px;
	width: 5px;
	height: 5px;
	border-radius: 50%;
	background: var(--sun-gold-ornament);
	transform: translateY(-50%);
}
@keyframes sun-press-marquee {
	to { transform: translateX(-50%); }
}
.sun-press-ribbon button.sun-press-ribbon__toggle {
	flex: 0 0 auto;
	display: grid;
	place-items: center;
	width: 44px;
	height: 44px;
	margin: 0 16px 0 4px;
	padding: 0;
	border: 1px solid rgba(185, 141, 88, 0.6);
	border-radius: 50%;
	background: transparent;
	color: var(--sun-gold-ornament);
	cursor: pointer;
}
.sun-press-ribbon button.sun-press-ribbon__toggle:hover,
.sun-press-ribbon button.sun-press-ribbon__toggle:focus-visible {
	border-color: var(--sun-gold-ornament);
	background: rgba(185, 141, 88, 0.12);
	outline: 2px solid var(--sun-gold-ornament);
	outline-offset: 2px;
}
.sun-press-ribbon__icon {
	width: 10px;
	height: 12px;
	border-left: 3px solid currentColor;
	border-right: 3px solid currentColor;
}
.sun-press-ribbon__toggle[aria-pressed="true"] .sun-press-ribbon__icon {
	width: 0;
	height: 0;
	margin-left: 3px;
	border-style: solid;
	border-width: 7px 0 7px 11px;
	border-color: transparent transparent transparent currentColor;
}
@media (prefers-reduced-motion: reduce) {
	.sun-press-ribbon__viewport { -webkit-mask-image: none; mask-image: none; }
	.sun-press-ribbon__track { width: auto; animation: none; }
	ul.sun-press-ribbon__list { flex-wrap: wrap; justify-content: center; row-gap: 6px; }
	ul.sun-press-ribbon__list[aria-hidden="true"],
	.sun-press-ribbon button.sun-press-ribbon__toggle { display: none; }
}
@media (max-width: 767px) {
	ul.sun-press-ribbon__list > li { padding: 0 20px; font-size: 17px; }
	.sun-press-ribbon button.sun-press-ribbon__toggle { margin-right: 12px; }
}

/* --- intro counters --- */
.sun-press-stats {
	display: grid !important;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 12px !important;
	width: 100%;
	max-width: 760px;
	margin-top: 24px;
	padding-top: 32px !important;
	border-top: 1px solid rgba(144, 106, 60, 0.35);
}
.sun-press-stat .elementor-counter-number-wrapper {
	justify-content: center;
	font-family: var(--e-global-typography-vamtam_h2-font-family), serif;
	font-size: clamp(40px, 9vw, 68px);
	font-weight: 400;
	line-height: 1;
	color: #242E35;
}
.sun-press-stat .elementor-counter-title {
	margin-top: 10px;
	font-size: 13px;
	font-weight: 600;
	letter-spacing: 0.12em;
	line-height: 1.35;
	text-align: center;
	text-transform: uppercase;
	color: var(--sun-gold-text);
}
@media (max-width: 767px) {
	.sun-press-stats { gap: 6px !important; padding-top: 24px !important; }
	.sun-press-stat .elementor-counter-title { font-size: 11.5px; letter-spacing: 0.08em; }
}

/* --- press card (loop item 997248), both grids --- */
a.sun-press-card {
	display: flex !important;
	flex-direction: column;
	height: 100%;
	overflow: hidden;
	background: #FFFFFF;
	border: 1px solid rgba(36, 46, 53, 0.1);
	color: #242E35;
	text-decoration: none !important;
	transition: transform 0.35s ease, box-shadow 0.35s ease, border-color 0.35s ease;
}
a.sun-press-card:hover {
	transform: translateY(-4px);
	border-color: rgba(144, 106, 60, 0.55);
	box-shadow: 0 16px 32px rgba(36, 46, 53, 0.12);
}
a.sun-press-card:focus-visible {
	outline: 2px solid var(--sun-gold-text);
	outline-offset: 3px;
}
.sun-press-card__media {
	margin: 0 !important;
	overflow: hidden;
}
.sun-press-card__media img {
	display: block;
	width: 100% !important;
	height: auto;
	aspect-ratio: 3 / 2;
	object-fit: cover;
	transition: transform 0.7s ease;
}
a.sun-press-card:hover .sun-press-card__media img {
	transform: scale(1.04);
}
.sun-press-card__body {
	flex: 1 1 auto;
	gap: 6px !important;
	padding: 22px 22px 20px !important;
}
.sun-press-card__outlet .elementor-heading-title {
	margin: 0;
	font-size: 12px;
	font-weight: 600;
	letter-spacing: 0.12em;
	line-height: 1.4;
	text-transform: uppercase;
	color: var(--sun-gold-text) !important;
}
.sun-press-card__title .elementor-heading-title {
	margin: 0;
	font-size: clamp(19px, 1.45vw, 21px);
	line-height: 1.35;
	color: #242E35 !important;
}
.sun-press-card__date .elementor-heading-title {
	margin: 0;
	font-size: 14px;
	color: #5A6168 !important;
}
.sun-press-card__date:has(.elementor-heading-title:empty) {
	display: none;
}
.sun-press-card__cta {
	margin-top: auto !important;
	padding-top: 12px;
}
.sun-press-card__cta p {
	margin: 0;
	font-size: 14px;
	font-weight: 600;
	color: var(--sun-gold-text);
}
@media (prefers-reduced-motion: reduce) {
	a.sun-press-card,
	.sun-press-card__media img { transition: none; }
	a.sun-press-card:hover { transform: none; }
	a.sun-press-card:hover .sun-press-card__media img { transform: none; }
}

/* featured: bigger type; phones swipe sideways, the next card peeking */
.sun-press-featured-grid .sun-press-card__title .elementor-heading-title {
	font-size: clamp(21px, 1.8vw, 25px);
}
@media (max-width: 767px) {
	.sun-press-featured-grid .elementor-loop-container {
		display: flex !important;
		gap: 14px !important;
		margin-inline: -20px;
		padding: 4px 20px 16px;
		overflow-x: auto;
		overscroll-behavior-x: contain;
		scroll-snap-type: x mandatory;
		scroll-padding-inline: 20px;
		scrollbar-width: none;
	}
	.sun-press-featured-grid .elementor-loop-container::-webkit-scrollbar { display: none; }
	.sun-press-featured-grid .e-loop-item {
		flex: 0 0 84%;
		scroll-snap-align: start;
	}
	.sun-press-featured-grid .sun-press-card__body { padding: 18px 18px 16px !important; }
}

/* coverage on phones: image left, compact rows, no lift */
@media (max-width: 767px) {
	.sun-press-grid a.sun-press-card { flex-direction: row !important; }
	.sun-press-grid a.sun-press-card:hover { transform: none; box-shadow: none; }
	/* Elementor sizes child containers/widgets with --width / --container-widget-width: undo for the row. */
	.sun-press-grid .sun-press-card__media {
		position: relative;
		flex: 0 0 34% !important;
		width: 34% !important;
		max-width: 34% !important;
		min-height: 128px;
	}
	.sun-press-grid .sun-press-card__media img {
		position: absolute;
		inset: 0;
		height: 100% !important;
		aspect-ratio: auto;
	}
	.sun-press-grid .sun-press-card__body {
		--width: auto;
		flex: 1 1 0 !important;
		width: auto !important;
		min-width: 0;
		gap: 4px !important;
		padding: 14px 14px 12px !important;
	}
	.sun-press-grid .sun-press-card__outlet .elementor-heading-title { font-size: 11px; letter-spacing: 0.1em; }
	.sun-press-grid .sun-press-card__title .elementor-heading-title {
		display: -webkit-box;
		overflow: hidden;
		font-size: 16.5px;
		-webkit-line-clamp: 3;
		-webkit-box-orient: vertical;
	}
	.sun-press-grid .sun-press-card__date .elementor-heading-title { font-size: 13px; }
	.sun-press-grid .sun-press-card__cta { display: none; }
}

/* --- topic filter (Taxonomy Filter) --- */
.sun-press-filter .e-filter {
	justify-content: center;
	flex-wrap: wrap;
	gap: 10px;
	margin-bottom: 28px;
}
.sun-press-filter button.e-filter-item {
	min-height: 44px;
	padding: 8px 20px;
	border: 1px solid var(--sun-gold-text) !important;
	border-radius: 0;
	background: transparent !important;
	color: var(--sun-gold-text) !important;
	font-size: 15px;
	font-weight: 600;
	line-height: 1.2;
	white-space: nowrap;
	cursor: pointer;
}
.sun-press-filter button.e-filter-item:hover {
	background: rgba(144, 106, 60, 0.08) !important;
}
.sun-press-filter button.e-filter-item[aria-pressed="true"] {
	border-color: #242E35 !important;
	background: #242E35 !important;
	color: #FFFFFF !important;
}
.sun-press-filter button.e-filter-item:focus-visible {
	outline: 2px solid var(--sun-gold-text);
	outline-offset: 2px;
}
@media (max-width: 767px) {
	.sun-press-filter .e-filter {
		justify-content: flex-start;
		flex-wrap: nowrap;
		gap: 8px;
		margin: 0 -20px 18px;
		padding: 2px 20px 8px;
		overflow-x: auto;
		scrollbar-width: none;
	}
	.sun-press-filter .e-filter::-webkit-scrollbar { display: none; }
	.sun-press-filter button.e-filter-item { flex: 0 0 auto; padding: 8px 16px; font-size: 14.5px; }
}

/* --- filter loading state (class + aria-busy set in sunstone-press.php) --- */
.sun-press-grid { position: relative; }
.sun-press-grid .elementor-loop-container { transition: opacity 0.2s ease; }
.sun-press-grid.is-loading .elementor-loop-container { opacity: 0.4; pointer-events: none; }
.sun-press-grid.is-loading::before {
	content: "";
	position: absolute;
	top: -12px;
	left: 0;
	z-index: 2;
	width: 35%;
	height: 2px;
	background: var(--sun-gold-text);
	animation: sun-press-progress 1.1s ease-in-out infinite;
}
@keyframes sun-press-progress {
	from { transform: translateX(-100%); }
	to { transform: translateX(290%); }
}
.sun-press-live { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }
@media (prefers-reduced-motion: reduce) {
	.sun-press-grid.is-loading::before { left: 0; width: 100%; animation: none; opacity: 0.6; }
}

/* --- Load More --- */
.sun-press-grid .e-load-more-anchor ~ .elementor-button-wrapper,
.sun-press-grid .elementor-button-wrapper {
	margin-top: 40px;
	text-align: center;
}
.sun-press-grid a.elementor-button,
.sun-press-grid button.elementor-button {
	min-height: 50px;
	padding: 15px 36px;
	border: 1px solid var(--sun-gold-text) !important;
	border-radius: 0;
	background: transparent !important;
	color: var(--sun-gold-text) !important;
	font-size: 14px;
	font-weight: 600;
	letter-spacing: 0.1em;
	text-transform: uppercase;
}
.sun-press-grid a.elementor-button:hover,
.sun-press-grid button.elementor-button:hover {
	background: var(--sun-gold-text) !important;
	color: #FFFFFF !important;
}
@media (max-width: 767px) {
	.sun-press-grid .elementor-button-wrapper { margin-top: 24px; }
	.sun-press-grid a.elementor-button,
	.sun-press-grid button.elementor-button { width: 100%; }
}

/* --- quotes (Nested Carousel on ink) --- */
.sun-press-quotes {
	width: 100%;
	max-width: 940px;
	margin-inline: auto;
}
blockquote.sun-press-quote {
	margin: 0;
	padding: 0 64px;
	border: 0;
	background: none;
	text-align: center;
}
blockquote.sun-press-quote p {
	margin: 0 0 22px;
	font-family: var(--e-global-typography-vamtam_h2-font-family), serif;
	font-size: clamp(23px, 3vw, 36px);
	font-style: normal;
	line-height: 1.32;
	color: #FFFFFF;
}
blockquote.sun-press-quote footer {
	font-size: 13px;
	font-weight: 600;
	letter-spacing: 0.14em;
	text-transform: uppercase;
}
blockquote.sun-press-quote cite a {
	display: inline-block;
	padding: 12px 4px;
	color: var(--sun-gold-ornament) !important;
	font-style: normal;
	text-decoration: none !important;
}
blockquote.sun-press-quote cite a:hover { text-decoration: underline !important; text-underline-offset: 4px; }
.sun-press-quotes .elementor-swiper-button {
	color: var(--sun-gold-ornament);
	font-size: 26px;
}
.sun-press-quotes .elementor-swiper-button svg { fill: var(--sun-gold-ornament); }
.sun-press-quotes .swiper-pagination-bullet {
	width: 10px;
	height: 10px;
	margin: 0 7px !important;
	background: var(--sun-gold-ornament);
	opacity: 0.4;
}
.sun-press-quotes .swiper-pagination-bullet-active { opacity: 1; }
.sun-press-quotes .swiper-pagination { position: relative; margin-top: 18px; }
@media (max-width: 767px) {
	blockquote.sun-press-quote { padding: 0 6px; }
	blockquote.sun-press-quote p { font-size: 22px; }
	.sun-press-quotes .elementor-swiper-button { display: none !important; }
	.sun-press-quotes .swiper-pagination-bullet { width: 12px; height: 12px; margin: 0 9px !important; }
}

/* --- press kit gallery --- */
.sun-press-kit__h3 .elementor-heading-title { margin-top: 40px; }
.sun-press-gallery .e-gallery-item { overflow: hidden; }
.sun-press-gallery .e-gallery-image { transition: transform 0.6s ease; }
.sun-press-gallery .e-gallery-item:hover .e-gallery-image { transform: scale(1.04); }
.sun-press-gallery .e-gallery-item:focus-visible { outline: 2px solid var(--sun-gold-text); outline-offset: 2px; }
@media (prefers-reduced-motion: reduce) {
	.sun-press-gallery .e-gallery-image { transition: none; }
	.sun-press-gallery .e-gallery-item:hover .e-gallery-image { transform: none; }
}

/* ==========================================================================
   46. HEADER — alignment, logo, menu underline, Reserve, account + cart
   --------------------------------------------------------------------------
   Owner, 2026-10-07: "move the highlight in the nav so it's below the nav
   text, review the sizing of the logo, alignment, use best practices.
   improve the sign up and login nav elements".
   Structure (header 316, edited in place by .copy-migration/brand/
   header-tidy.php): desktop section .sun-hdr--desktop with three columns
   (left menu | logo | right menu), tablet/phone section .sun-hdr--mobile.
   The Commerce7 account + cart bar (.sun-c7-userbar #c7wp-cart-box) is
   printed in the footer by the plugin; here it becomes a fixed bar that
   sits on the header's centre line, and mu-plugins/sunstone-header.php
   keeps it travelling with the sticky header (hide on scroll down, back on
   scroll up), which it did not do before — "Log in" and the cart vanished
   from the returning header.
   Rules that won:
   - One centre line. Menu items, logo, Reserve and the icons share the
     header's vertical centre; every target is 44 px tall.
   - Logo is a fixed size, not a share of the window: 200 px wide on
     desktop (28 px cap height ≈ 2.5× the 11 px menu capitals), 150 px at
     1025–1279, 150 px on tablet, 120 px on phones (100 px under 360 px).
     The logo is optically centred: grid 1fr auto 1fr keeps it on the page
     centre line whatever the two menus measure.
   - The active/hover marker is a 2 px gold underline 6 px below the
     capitals, exactly as wide as the words (letter-spacing trimmed), and
     grows from the centre on hover. A section's top item is marked on its
     child pages too (Our Story on /press/): current-menu-ancestor.
   - Reserve is the one filled control: gold #B98D58 with ink text (4.6:1,
     D117), square like every other button on the site; white on hover.
   - Account and cart are matching 22 px line icons in 44 px targets; the
     words stay in the links for screen readers. The cart count is a small
     gold badge shown only when the cart is not empty.
   TO REVERT: delete this section, and run header-tidy.php's backup back.
   ========================================================================== */

/* --- desktop row: three-column grid, logo on the true centre line --- */
@media (min-width: 1025px) {
	.sun-hdr--desktop > .elementor-container {
		display: grid !important;
		grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
		align-items: center;
		column-gap: clamp(28px, 3vw, 48px);
		min-height: 80px;
		padding-inline: 132px; /* room for account + cart on the right, mirrored left */
	}
	.sun-hdr--desktop > .elementor-container > .elementor-column {
		width: auto !important;
		min-width: 0;
	}
	.sun-hdr--desktop .sun-hdr__col--left > .elementor-widget-wrap { justify-content: flex-end; }
	.sun-hdr--desktop .sun-hdr__col--right > .elementor-widget-wrap { justify-content: flex-start; }
	.sun-hdr--desktop .elementor-widget-wrap { align-content: center; align-items: center; }
	/* the nav widget container carries a 15 px bottom padding and the logo link sits on a 28 px text line:
	   both pushed their content off the centre line */
	.sun-hdr--desktop .elementor-widget-nav-menu > .elementor-widget-container { padding: 0 !important; }
	.sun-hdr--desktop .sun-hdr__logo > .elementor-widget-container { line-height: 0; }
	.sun-hdr--desktop .sun-hdr__logo a { display: block; line-height: 0; }
	/* the dropdown arrows are not drawn (display:none) but their slot widened the underline: remove the slot */
	.sun-hdr--desktop .elementor-nav-menu--main .sub-arrow { display: none !important; }
	.sun-hdr--desktop .elementor-nav-menu--main .elementor-nav-menu {
		flex-wrap: nowrap;
		align-items: center;
	}
	.sun-hdr--desktop .sun-hdr__col--left .elementor-nav-menu { justify-content: flex-end; }
	.sun-hdr--desktop .sun-hdr__col--right .elementor-nav-menu { justify-content: flex-start; }

	/* logo */
	.sun-hdr--desktop .sun-hdr__logo,
	.sun-hdr--desktop .sun-hdr__logo img {
		width: 200px !important;
		max-width: none !important;
	}
	.sun-hdr--desktop .sun-hdr__logo img {
		display: block;
		height: auto !important;
		margin: 0 auto;
	}

	/* gap between items: Elementor puts it on the links through this variable (widget setting was 30 px) */
	.sun-hdr--desktop .elementor-widget-nav-menu { --e-nav-menu-horizontal-menu-item-margin: 12px; }

	/* menu items: one height, text on the centre line */
	.sun-hdr--desktop .elementor-nav-menu--main > .elementor-nav-menu > li > a.elementor-item {
		position: relative;
		display: inline-flex;
		align-items: center;
		min-height: 44px;
		padding-block: 0 !important;
		line-height: 1;
	}

	/* underline marker: below the words, as wide as the words */
	.sun-hdr--desktop .elementor-nav-menu--main > .elementor-nav-menu > li > a.elementor-item::before { display: none !important; }
	.sun-hdr--desktop .elementor-nav-menu--main > .elementor-nav-menu > li > a.elementor-item::after {
		content: "" !important;
		position: absolute !important;
		top: auto !important;
		bottom: 9px !important;
		left: var(--sun-nav-pad, 15px) !important;
		right: calc(var(--sun-nav-pad, 15px) + 3px) !important; /* trailing letter-spacing */
		width: auto !important;
		height: 2px !important;
		margin: 0 !important;
		z-index: 0 !important;
		background-color: var(--sun-gold-ornament, #B98D58) !important;
		opacity: 1 !important;
		transform: scaleX(0);
		transform-origin: 50% 50%;
		transition: transform 0.28s ease !important;
	}
	.sun-hdr--desktop .elementor-nav-menu--main > .elementor-nav-menu > li > a.elementor-item:hover::after,
	.sun-hdr--desktop .elementor-nav-menu--main > .elementor-nav-menu > li > a.elementor-item:focus-visible::after,
	.sun-hdr--desktop .elementor-nav-menu--main > .elementor-nav-menu > li > a.elementor-item.highlighted::after,
	.sun-hdr--desktop .elementor-nav-menu--main > .elementor-nav-menu > li > a.elementor-item-active::after,
	.sun-hdr--desktop .elementor-nav-menu--main > .elementor-nav-menu > li.current-menu-ancestor > a.elementor-item::after,
	.sun-hdr--desktop .elementor-nav-menu--main > .elementor-nav-menu > li.current-menu-parent > a.elementor-item::after {
		transform: scaleX(1);
	}
	/* Vamtam forces width:100% !important on the active/hovered item with a 5-class selector
	   (.elementor-widget-nav-menu .elementor-nav-menu--main.e--pointer-line-through .elementor-item.elementor-item-active::after);
	   this selector carries 7 classes so the line is sized from the words in every state. */
	.sun-hdr--desktop .elementor-widget-nav-menu .elementor-nav-menu--main.elementor-nav-menu__container > .elementor-nav-menu > li > a.elementor-item.elementor-item::after {
		width: calc(100% - var(--sun-nav-pad, 15px) * 2 - var(--sun-nav-ls, 3px)) !important;
		right: auto !important;
	}
	.sun-hdr--desktop .elementor-nav-menu--main > .elementor-nav-menu > li.sun-nav-reserve > a.elementor-item::after { display: none !important; }
	.sun-hdr--desktop .elementor-nav-menu--main > .elementor-nav-menu > li > a.elementor-item:focus-visible {
		outline: 2px solid #FFFFFF;
		outline-offset: -2px;
	}
}

/* Narrower desktops: tighten so the right menu stays ≥ 24 px clear of the account icon
   (measured at 1025, 1100, 1200, 1279, 1280, 1366, 1440 px). */
@media (min-width: 1280px) and (max-width: 1439px) {
	.sun-hdr--desktop > .elementor-container { column-gap: 28px; }
	.sun-hdr--desktop .elementor-widget-nav-menu { --e-nav-menu-horizontal-menu-item-margin: 4px; }
	.sun-hdr--desktop .elementor-nav-menu .sun-nav-reserve > a.elementor-item { padding: 0 16px !important; margin-inline-start: 6px; }
}
@media (min-width: 1025px) and (max-width: 1279px) {
	.sun-hdr--desktop > .elementor-container {
		column-gap: 12px;
		padding-inline: 128px;
	}
	.sun-hdr--desktop .sun-hdr__logo,
	.sun-hdr--desktop .sun-hdr__logo img { width: 150px !important; }
	.sun-hdr--desktop { --sun-nav-pad: 8px; --sun-nav-ls: 1.6px; }
	.sun-hdr--desktop .elementor-widget-nav-menu { --e-nav-menu-horizontal-menu-item-margin: 0px; }
	.sun-hdr--desktop .elementor-nav-menu--main > .elementor-nav-menu > li > a.elementor-item {
		padding-inline: 8px !important;
		letter-spacing: 1.6px !important;
	}
	.sun-hdr--desktop .elementor-nav-menu--main > .elementor-nav-menu > li > a.elementor-item::after {
		right: calc(var(--sun-nav-pad, 8px) + 1.6px) !important;
	}
	.sun-hdr--desktop .elementor-nav-menu .sun-nav-reserve > a.elementor-item { padding: 0 12px !important; margin-inline-start: 4px; }
}

/* --- Reserve: the one filled control (square, gold, ink text) --- */
@media (min-width: 1025px) {
	.sun-hdr--desktop .elementor-nav-menu .sun-nav-reserve > a.elementor-item {
		min-height: 40px !important;
		margin-inline-start: 8px;
		padding: 0 20px !important;
		border: 1px solid var(--sun-gold-ornament, #B98D58);
		border-radius: 0;
		background-color: var(--sun-gold-ornament, #B98D58);
		color: #242E35 !important;
		font-weight: 600;
	}
	.sun-hdr--desktop .elementor-nav-menu .sun-nav-reserve > a.elementor-item:hover,
	.sun-hdr--desktop .elementor-nav-menu .sun-nav-reserve > a.elementor-item:focus-visible {
		border-color: #FFFFFF;
		background-color: #FFFFFF;
		color: #242E35 !important;
	}
	.sun-hdr--desktop .elementor-nav-menu .sun-nav-reserve > a.elementor-item:focus-visible {
		outline: 2px solid #FFFFFF;
		outline-offset: 3px;
	}
}

/* --- tablet / phone: menu button, logo and icons on one centre line --- */
@media (max-width: 1024px) {
	.sun-hdr--mobile > .elementor-container { align-items: center; }
	.sun-hdr--mobile > .elementor-container > .elementor-column > .elementor-widget-wrap {
		padding-top: 0 !important;
		align-content: center;
		align-items: center;
	}
	.sun-hdr--mobile .sun-hdr__logo > .elementor-widget-container,
	.sun-hdr--mobile .sun-hdr__logo a { display: block; line-height: 0; }
	.sun-hdr--mobile .sun-hdr__logo img {
		width: 150px !important;
		max-width: none !important;
		height: auto !important;
	}
}
@media (max-width: 767px) {
	.sun-hdr--mobile .sun-hdr__logo img { width: 120px !important; }
}
@media (max-width: 359px) {
	.sun-hdr--mobile .sun-hdr__logo img { width: 100px !important; }
}

/* --- account + cart: fixed bar on the header's centre line (position synced by JS) --- */
body .sun-c7-userbar #c7wp-cart-box {
	position: fixed !important;
	top: 0;
	right: 24px;
	left: auto;
	z-index: 99999;
	display: flex;
	align-items: center;
	gap: 4px;
	height: var(--sun-hdr-h, 80px);
	padding: 0;
	transition: none;
}
body.admin-bar .sun-c7-userbar #c7wp-cart-box { top: 32px; }
@media (max-width: 1024px) {
	body .sun-c7-userbar #c7wp-cart-box { right: 16px; --sun-hdr-h: 90px; }
}
@media (max-width: 767px) {
	body .sun-c7-userbar #c7wp-cart-box { right: 8px; }
}
body #c7wp-cart-box #c7-account,
body #c7wp-cart-box #c7-cart,
body #c7wp-cart-box .c7-user-nav__account,
body #c7wp-cart-box .c7-user-nav__cart {
	display: flex;
	align-items: center;
	margin: 0;
	padding: 0 !important;
}

/* account: person icon (logged out); the word stays for screen readers */
body #c7wp-cart-box a.c7-user-nav__account__login {
	position: relative;
	display: inline-block;
	width: 44px;
	height: 44px;
	overflow: hidden;
	white-space: nowrap;
	text-indent: 200%;
	color: #FFFFFF;
	vertical-align: middle;
	transition: color 0.2s ease;
}
body #c7wp-cart-box a.c7-user-nav__account__login::before {
	content: "";
	position: absolute;
	inset: 0;
	margin: auto;
	width: 22px;
	height: 22px;
	background-color: currentColor;
	-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='round'%3E%3Ccircle cx='12' cy='8' r='4'/%3E%3Cpath d='M4 21c0-4.4 3.6-7 8-7s8 2.6 8 7'/%3E%3C/svg%3E") center / contain no-repeat;
	mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='round'%3E%3Ccircle cx='12' cy='8' r='4'/%3E%3Cpath d='M4 21c0-4.4 3.6-7 8-7s8 2.6 8 7'/%3E%3C/svg%3E") center / contain no-repeat;
}
/* account when signed in (C7 renders a name/menu instead of the login link): nav typography */
body #c7wp-cart-box #c7-account a:not(.c7-user-nav__account__login),
body #c7wp-cart-box #c7-account button {
	display: inline-flex;
	align-items: center;
	min-height: 44px;
	padding: 0 10px;
	font-family: Alata, sans-serif;
	font-size: 11px;
	letter-spacing: 2px;
	text-transform: uppercase;
	color: #FFFFFF;
}

/* cart: same 22 px line icon, badge only when not empty */
body #c7wp-cart-box .c7-user-nav__cart button.c7-link {
	position: relative;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 44px;
	height: 44px;
	padding: 0;
	color: #FFFFFF;
	transition: color 0.2s ease;
}
body #c7wp-cart-box .c7-user-nav__cart__title {
	display: inline-flex;
	align-items: center;
}
body #c7wp-cart-box .c7-user-nav__cart__title svg {
	width: 21px;
	height: 22px;
	stroke: currentColor !important;
	stroke-width: 1.15;
}
body #c7wp-cart-box .c7-user-nav__cart__title span {
	position: absolute !important;
	width: 1px;
	height: 1px;
	overflow: hidden;
	clip-path: inset(50%);
	white-space: nowrap;
}
body #c7wp-cart-box .c7-user-nav__cart__count {
	position: absolute;
	top: 6px;
	right: 4px;
	min-width: 17px;
	height: 17px;
	margin: 0 !important;
	padding: 0 4px !important;
	border-radius: 9px;
	background: var(--sun-gold-ornament, #B98D58) !important;
	color: #242E35 !important;
	font: 600 10px/17px Alata, sans-serif;
	text-align: center;
	box-shadow: 0 0 0 2px rgba(36, 46, 53, 0.25);
}
body #c7wp-cart-box .c7-user-nav__cart__count.is-empty { display: none !important; }

body #c7wp-cart-box a.c7-user-nav__account__login:hover,
body #c7wp-cart-box .c7-user-nav__cart button.c7-link:hover { color: var(--sun-gold-ornament, #B98D58); }
body #c7wp-cart-box a.c7-user-nav__account__login:focus-visible,
body #c7wp-cart-box .c7-user-nav__cart button.c7-link:focus-visible {
	outline: 2px solid #FFFFFF;
	outline-offset: -4px;
}
@media (prefers-reduced-motion: reduce) {
	.sun-hdr--desktop .elementor-nav-menu--main > .elementor-nav-menu > li > a.elementor-item::after { transition: none !important; }
	body #c7wp-cart-box a.c7-user-nav__account__login,
	body #c7wp-cart-box .c7-user-nav__cart button.c7-link { transition: none; }
}

/* ==========================================================================
   47. COMMERCE7 ROUTE PAGES — /reservation/ and /collection/<slug>/
   --------------------------------------------------------------------------
   Owner, 2026-10-07: "the reservations and collection/wine page are in dire
   need of ux/ui improvements. use the elementor pro and known design
   patterns to improve the page."
   Designs: site/.copy-migration/elementor/designs/layout/{reservation,
   collection}.json (built by c7-pages-build.py) on pages 994546 / 994543.
   Commerce7 still draws the form and the product grid into #c7-content (a
   Shortcode widget, [c7wp type="default"]); everything else is Elementor.
   Helpers: mu-plugins/commerce7-route-pages.php.
   Namespaces: .sun-res-* (reservation), .sun-col-* (collection).
   Rules that won:
   - The booking card comes first in the reading order (and first on
     phones); the facts people check before booking sit beside it, and the
     over-6 / 11+ / change-or-cancel routes sit directly under the form,
     because the widget stops at 6 guests (D11).
   - Form controls are 48 px tall with 16 px text (no iOS zoom), labels
     above, the submit full width.
   - Collection: one h1 (ours, from the feed); C7's three copies are hidden
     visually only when ours has a title (body.sun-c7-titled). The
     collections are a chip rail, current chip filled ink, 44 px targets,
     scrolls sideways on phones instead of wrapping into a block.
   - Space for the C7 mount is reserved until it paints, so the footer and
     the cross-sell below it do not jump (the old per-page reserve keys off
     .wp-block-c7wp-default, which these pages no longer use).
   TO REVERT: delete this section; revert the two pages (see the mu-plugin).
   ========================================================================== */

/* --- shared --- */
.sun-res-eyebrow .elementor-heading-title,
.sun-col-eyebrow .elementor-heading-title,
.sun-col-crumb .elementor-heading-title {
	margin: 0;
	font-family: Alata, sans-serif !important;
	font-size: 12px !important;
	font-weight: 400 !important;
	line-height: 1.4 !important;
	letter-spacing: 3px !important;
	text-transform: uppercase;
	color: var(--sun-gold-text, #906A3C) !important;
}

/* ---------------------------------------------------------------- reservation */
.sun-res-hero {
	position: relative;
	justify-content: flex-end !important;
	min-height: clamp(380px, 54vh, 540px);
	padding-block: 120px 56px !important;
	overflow: hidden;
	isolation: isolate;
}
.sun-res-hero::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	background: linear-gradient(to top, rgba(36, 46, 53, 0.88) 0%, rgba(36, 46, 53, 0.55) 45%, rgba(36, 46, 53, 0.2) 100%);
}
.sun-res-hero .sun-res-eyebrow .elementor-heading-title { color: var(--sun-gold-ornament, #B98D58) !important; }
.sun-res-hero__title .elementor-heading-title {
	margin: 10px 0 12px;
	color: #FFFFFF !important;
	font-size: clamp(44px, 6vw, 76px) !important;
	line-height: 1.02 !important;
}
.sun-res-hero__lede,
.sun-res-hero__lede p {
	max-width: 560px;
	margin: 0 0 22px;
	color: rgba(255, 255, 255, 0.92) !important;
	font-size: 19px;
	line-height: 1.5;
}
.sun-res-hero__facts .elementor-icon-list-items { gap: 10px 28px; flex-wrap: wrap; }
.sun-res-hero__facts .elementor-icon-list-item { margin: 0 !important; padding: 0 !important; }
.sun-res-hero__facts .elementor-icon-list-item::after { display: none !important; }
.sun-res-hero__facts .elementor-icon-list-text {
	color: #FFFFFF !important;
	font-family: Alata, sans-serif;
	font-size: 12px;
	letter-spacing: 1.6px;
	text-transform: uppercase;
}
.sun-res-hero__facts .elementor-icon-list-icon i,
.sun-res-hero__facts .elementor-icon-list-icon svg {
	color: var(--sun-gold-ornament, #B98D58) !important;
	fill: var(--sun-gold-ornament, #B98D58) !important;
	font-size: 14px;
	width: 14px;
}

/* booking row */
.sun-res-book { padding-block: 72px 88px !important; }
.sun-res-book > .e-con-inner {
	display: flex;
	flex-direction: row;
	align-items: flex-start;
	gap: 56px;
}
.sun-res-card {
	flex: 0 0 56% !important;
	width: 56% !important;
	padding: 40px !important;
	background: #FFFFFF;
	border: 1px solid #DEDDD9;
	box-shadow: 0 18px 40px -28px rgba(36, 46, 53, 0.35);
}
.sun-res-info { flex: 1 1 0 !important; width: auto !important; padding-top: 6px !important; }
.sun-res-card__title .elementor-heading-title,
.sun-res-info__title .elementor-heading-title {
	margin: 0 0 8px;
	font-size: clamp(30px, 3vw, 38px) !important;
	line-height: 1.1 !important;
}
.sun-res-card__lede p { margin: 0 0 22px; font-size: 16px; line-height: 1.55; }

/* the C7 search form, as a 2-column grid inside the card */
.sun-res-card .c7-reservation-widget { margin: 0; }
.sun-res-card #c7-content > .c7-reservations,
.sun-res-card .c7-reservations { padding: 0 !important; margin: 0 !important; min-height: 0 !important; }
.sun-res-card .c7-reservation__search .c7-form__group {
	display: grid !important;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 18px 16px;
	align-items: end;
	margin: 0;
}
.sun-res-card .c7-reservation__search .c7-form__field { width: auto !important; max-width: none !important; min-width: 0; margin: 0 !important; padding: 0 !important; }
.sun-res-card .c7-reservation__search .c7-form__field:first-child { grid-column: 1 / -1; }
.sun-res-card .c7-reservation__search label {
	display: block;
	margin: 0 0 6px;
	font-family: Alata, sans-serif;
	font-size: 11px;
	letter-spacing: 2px;
	text-transform: uppercase;
	color: #242E35;
}
.sun-res-card .c7-reservation__search select,
.sun-res-card .c7-reservation__search input[type="text"] {
	width: 100% !important;
	height: 48px !important;
	padding: 0 14px !important;
	border: 1px solid #A9A79F !important;
	border-radius: 0 !important;
	background-color: #FFFFFF;
	color: #242E35;
	font-size: 16px !important;
}
.sun-res-card .c7-reservation__search select:focus-visible,
.sun-res-card .c7-reservation__search input[type="text"]:focus-visible {
	outline: 2px solid #242E35;
	outline-offset: 1px;
}
.sun-res-card .c7-date-picker-input { position: relative; }
.sun-res-card .c7-date-picker-toggle {
	position: absolute;
	top: 0;
	right: 0;
	width: 48px;
	height: 48px;
	display: flex;
	align-items: center;
	justify-content: center;
	background: transparent;
	border: 0;
}
.sun-res-card .c7-date-picker-toggle img.emoji { width: 18px !important; height: 18px !important; }
.sun-res-card .c7-reservation__search .c7-btn--primary {
	grid-column: 1 / -1;
	width: 100%;
	min-height: 52px;
	margin: 4px 0 0 !important;
	border-radius: 0;
	background: #242E35 !important;
	border-color: #242E35 !important;
	color: #FFFFFF !important;
	font-family: Alata, sans-serif;
	font-size: 12px;
	letter-spacing: 2.5px;
}
.sun-res-card .c7-reservation__search .c7-btn--primary:hover,
.sun-res-card .c7-reservation__search .c7-btn--primary:focus-visible {
	background: var(--sun-gold-ornament, #B98D58) !important;
	border-color: var(--sun-gold-ornament, #B98D58) !important;
	color: #242E35 !important;
}
.sun-res-card .c7-form__field p,
.sun-res-card .c7-reservation-widget p { margin: 6px 0 0; font-size: 14px; }
.sun-res-card__widget #c7-content:not(:has(.c7-reservation-widget)) { min-height: 330px; }

.sun-res-card__help {
	margin-top: 28px !important;
	padding-top: 22px;
	border-top: 1px solid #DEDDD9;
}
.sun-res-card__help p { margin: 0 0 10px; font-size: 15px; line-height: 1.6; }
.sun-res-card__help p:last-child { margin-bottom: 0; }
.sun-res-card__help a,
.sun-res-faq a { text-decoration: underline !important; text-underline-offset: 3px; }

/* facts list */
.sun-res-facts .elementor-icon-list-item {
	align-items: flex-start !important;
	padding: 14px 0 !important;
	border-bottom: 1px solid #DEDDD9;
}
.sun-res-facts .elementor-icon-list-item:first-child { padding-top: 8px !important; }
.sun-res-facts .elementor-icon-list-item::after { display: none !important; }
.sun-res-facts .elementor-icon-list-icon { padding-top: 5px; }
.sun-res-facts .elementor-icon-list-icon i,
.sun-res-facts .elementor-icon-list-icon svg {
	width: 17px;
	font-size: 17px;
	color: var(--sun-gold-text, #906A3C) !important;
	fill: var(--sun-gold-text, #906A3C) !important;
}
.sun-res-facts .elementor-icon-list-text { padding-left: 12px; font-size: 16px; line-height: 1.6; color: #3D4547; }
.sun-res-info__link { margin-top: 22px !important; }
.sun-res-info__link .elementor-heading-title a,
.sun-res-tile__cta .elementor-heading-title {
	font-family: Alata, sans-serif !important;
	font-size: 12px !important;
	font-weight: 400 !important;
	letter-spacing: 2px !important;
	text-transform: uppercase;
	color: var(--sun-gold-text, #906A3C) !important;
}
.sun-res-info__link .elementor-heading-title a::after,
.sun-res-tile__cta .elementor-heading-title::after {
	content: " \2192";
	display: inline-block;
	transition: transform 0.2s ease;
}
.sun-res-info__link .elementor-heading-title a:hover::after { transform: translateX(4px); }

/* other ways to visit */
.sun-res-more { padding: 88px 0 !important; background: #F4F1EA; }
.sun-res-more__title .elementor-heading-title { margin: 8px 0 32px; font-size: clamp(32px, 3.4vw, 44px) !important; }
.sun-res-tiles { gap: 24px !important; }
.sun-res-tile {
	position: relative;
	flex: 1 1 calc(25% - 18px) !important;
	width: auto !important;
	min-width: 0;
	padding: 0 0 24px !important;
	background: #FFFFFF;
	border: 1px solid #E6E3DC;
	transition: box-shadow 0.25s ease, transform 0.25s ease;
}
.sun-res-tile:hover { box-shadow: 0 20px 40px -28px rgba(36, 46, 53, 0.45); transform: translateY(-2px); }
.sun-res-tile:focus-within { outline: 2px solid #242E35; outline-offset: 3px; }
.sun-res-tile__img { margin: 0 0 20px !important; overflow: hidden; }
.sun-res-tile__img img {
	display: block;
	width: 100% !important;
	aspect-ratio: 4 / 3;
	object-fit: cover;
	transition: transform 0.5s ease;
}
.sun-res-tile:hover .sun-res-tile__img img { transform: scale(1.04); }
.sun-res-tile__title,
.sun-res-tile__body,
.sun-res-tile__cta { padding: 0 22px !important; }
.sun-res-tile__title .elementor-heading-title { margin: 0 0 8px; font-size: 24px !important; line-height: 1.2 !important; }
.sun-res-tile__title .elementor-heading-title a { color: #242E35; }
.sun-res-tile__title .elementor-heading-title a::after { content: ""; position: absolute; inset: 0; z-index: 1; }
.sun-res-tile__title .elementor-heading-title a:focus-visible { outline: none; }
.sun-res-tile__body p { margin: 0 0 16px; font-size: 15px; line-height: 1.55; }
.sun-res-tile__cta { margin-top: auto !important; }
.sun-res-tile:hover .sun-res-tile__cta .elementor-heading-title::after { transform: translateX(4px); }

/* FAQ */
.sun-res-faq { padding-block: 88px 96px !important; }
.sun-res-faq__title .elementor-heading-title { margin: 0 0 28px; text-align: center; font-size: clamp(32px, 3.4vw, 44px) !important; }
.sun-res-faq__list .e-n-accordion-item { border-bottom: 1px solid #DEDDD9; }
.sun-res-faq__list .e-n-accordion-item-title {
	padding: 22px 4px !important;
	border: 0 !important;
	background: transparent !important;
}
.sun-res-faq__list .e-n-accordion-item-title-text {
	font-family: "Cormorant Infant", serif;
	font-size: 22px;
	font-weight: 500;
	line-height: 1.3;
	color: #242E35;
}
.sun-res-faq__list .e-n-accordion-item-title-icon i,
.sun-res-faq__list .e-n-accordion-item-title-icon svg { font-size: 13px; width: 13px; color: var(--sun-gold-text, #906A3C); fill: var(--sun-gold-text, #906A3C); }
.sun-res-faq__list .e-n-accordion-item > [role="region"] { padding: 0 4px 22px !important; border: 0 !important; background: transparent !important; }
.sun-res-faq__answer p { margin: 0; font-size: 16px; line-height: 1.65; color: #3D4547; }
.sun-res-faq__list .e-n-accordion-item-title:focus-visible { outline: 2px solid #242E35; outline-offset: 2px; }
.sun-res-faq__more { margin-top: 32px !important; text-align: center; }

@media (max-width: 1024px) {
	.sun-res-book > .e-con-inner { flex-direction: column; gap: 48px; }
	.sun-res-card,
	.sun-res-info { flex: 1 1 auto !important; width: 100% !important; }
	.sun-res-tile { flex: 1 1 calc(50% - 12px) !important; }
}
@media (max-width: 767px) {
	.sun-res-hero { min-height: 420px; padding-block: 96px 36px !important; }
	.sun-res-hero__lede p { font-size: 17px; }
	.sun-res-hero__facts .elementor-icon-list-items { flex-direction: column; align-items: flex-start !important; gap: 8px; }
	.sun-res-book { padding-block: 32px 56px !important; }
	.sun-res-book { --padding-left: 0px; --padding-right: 0px; }
	.sun-res-card { padding: 24px 18px !important; border-left: 0; border-right: 0; box-shadow: none; }
	.sun-res-info { padding: 0 20px !important; }
	.sun-res-more { padding: 56px 0 !important; }
	/* a sideways rail of cards rather than four full-width stacked tiles */
	.sun-res-tiles {
		flex-wrap: nowrap !important;
		overflow-x: auto;
		scroll-snap-type: x mandatory;
		margin: 0 -24px !important;
		padding: 4px 24px 16px !important;
		scrollbar-width: thin;
	}
	.sun-res-tile { flex: 0 0 82% !important; scroll-snap-align: start; }
	.sun-res-faq { padding-block: 56px 64px !important; }
	.sun-res-faq__list .e-n-accordion-item-title-text { font-size: 19px; }
}

/* ----------------------------------------------------------------- collection */
.sun-col-head { padding-block: 40px 8px !important; }
.sun-col-crumb .elementor-heading-title a { color: var(--sun-gold-text, #906A3C) !important; }
.sun-col-crumb .elementor-heading-title a::before { content: "\2190\00a0"; }
.sun-col-head__title .elementor-heading-title {
	margin: 6px 0 6px;
	font-size: clamp(40px, 5vw, 62px) !important;
	line-height: 1.05 !important;
	text-align: left;
}
.sun-col-head__lede p { margin: 0 0 22px; font-size: 16px; color: #545D5C; }

/* chip rail */
.sun-col-chips .elementor-nav-menu--main .elementor-nav-menu {
	display: flex !important;
	flex-wrap: nowrap;
	gap: 8px;
	overflow-x: auto;
	scrollbar-width: none;
	padding-bottom: 2px;
}
.sun-col-chips .elementor-nav-menu--main .elementor-nav-menu::-webkit-scrollbar { display: none; }
.sun-col-chips .elementor-nav-menu--main .elementor-nav-menu > li { margin: 0 !important; flex: 0 0 auto; }
.sun-col-chips .elementor-nav-menu--main .elementor-nav-menu > li > a.elementor-item {
	display: inline-flex;
	align-items: center;
	min-height: 44px;
	padding: 0 18px !important;
	border: 1px solid #C9C7C1;
	background: #FFFFFF;
	color: #242E35 !important;
	font-family: Alata, sans-serif;
	font-size: 11px;
	letter-spacing: 2px;
	text-transform: uppercase;
	white-space: nowrap;
	transition: border-color 0.2s ease, background-color 0.2s ease, color 0.2s ease;
}
.sun-col-chips .elementor-nav-menu--main .elementor-nav-menu > li > a.elementor-item::before,
.sun-col-chips .elementor-nav-menu--main .elementor-nav-menu > li > a.elementor-item::after { display: none !important; }
.sun-col-chips .elementor-nav-menu--main .elementor-nav-menu > li > a.elementor-item:hover { border-color: #242E35; }
.sun-col-chips .elementor-nav-menu--main .elementor-nav-menu > li.current-menu-item > a.elementor-item,
.sun-col-chips .elementor-nav-menu--main .elementor-nav-menu > li > a.elementor-item-active {
	border-color: #242E35;
	background: #242E35;
	color: #FFFFFF !important;
}
.sun-col-chips .elementor-nav-menu--main .elementor-nav-menu > li > a.elementor-item:focus-visible { outline: 2px solid #242E35; outline-offset: 2px; }
.sun-col-chips .elementor-menu-toggle { display: none !important; }

/* store: our h1 replaces C7's three copies (visually only; the a11y tree is handled in commerce7-collection-h1.php) */
.sun-c7-titled .sun-col-store #c7-content h1 {
	position: absolute !important;
	width: 1px !important;
	height: 1px !important;
	margin: 0 !important;
	overflow: hidden !important;
	clip-path: inset(50%) !important;
	white-space: nowrap !important;
}
.sun-col-store { padding-block: 16px 24px !important; }
.sun-col-store #c7-content:not(:has(.c7-product-collection)) { min-height: 1300px; }
.sun-col-store .c7-product-collection__content { margin-bottom: 0 !important; text-align: left; }
.sun-col-store .c7-filters {
	display: grid !important;
	grid-template-columns: repeat(3, minmax(0, 200px));
	justify-content: start !important;
	gap: 12px !important;
	margin: 8px 0 0 !important;
	padding: 16px 0;
	border-top: 1px solid #DEDDD9;
	border-bottom: 1px solid #DEDDD9;
}
.sun-col-store .c7-filters .c7-form__field { width: auto !important; min-width: 0 !important; max-width: none !important; margin: 0 !important; }
.sun-col-store .c7-filters label {
	margin: 0 0 4px;
	font-family: Alata, sans-serif;
	font-size: 11px;
	letter-spacing: 2px;
	text-transform: uppercase;
}
.sun-col-store .c7-filters select {
	width: 100% !important;
	min-width: 0 !important;
	height: 44px !important;
	border-radius: 0 !important;
	border-color: #A9A79F !important;
	font-size: 16px !important;
}
.sun-col-store .c7-product-collection__product-list { margin-top: 32px !important; }
.sun-col-store .sun-variant-dup { display: none !important; }

/* cross-sell */
.sun-col-promo { padding-block: 48px 24px !important; }
.sun-col-promo > .e-con-inner { gap: 24px; flex-direction: row; }
.sun-col-promo__tile {
	flex: 1 1 0 !important;
	width: auto !important;
	min-width: 0;
	padding: 0 !important;
	gap: 0 !important;
	background: #F4F1EA;
	align-items: stretch !important;
}
.sun-col-promo__img { flex: 0 0 42% !important; width: 42% !important; margin: 0 !important; }
.sun-col-promo__img .elementor-widget-container,
.sun-col-promo__img img { height: 100% !important; }
.sun-col-promo__img img { width: 100% !important; object-fit: cover; aspect-ratio: auto; min-height: 260px; }
.sun-col-promo__copy { flex: 1 1 auto !important; justify-content: center !important; padding: 32px !important; }
.sun-col-promo__title .elementor-heading-title { margin: 6px 0 10px; font-size: clamp(28px, 2.6vw, 34px) !important; line-height: 1.1 !important; }
.sun-col-promo__body p { margin: 0 0 20px; font-size: 15px; line-height: 1.55; }

/* help strip */
.sun-col-help { padding-block: 24px 64px !important; }
.sun-col-help__list .elementor-icon-list-items { justify-content: center; gap: 8px 32px; flex-wrap: wrap; padding-top: 24px; border-top: 1px solid #DEDDD9; }
.sun-col-help__list .elementor-icon-list-item { margin: 0 !important; padding: 0 !important; }
.sun-col-help__list .elementor-icon-list-item::after { display: none !important; }
.sun-col-help__list a { min-height: 44px; align-items: center; }
.sun-col-help__list .elementor-icon-list-text { font-size: 15px; color: #242E35; }
.sun-col-help__list a:hover .elementor-icon-list-text { text-decoration: underline; text-underline-offset: 3px; }
.sun-col-help__list .elementor-icon-list-icon i,
.sun-col-help__list .elementor-icon-list-icon svg { color: var(--sun-gold-text, #906A3C); fill: var(--sun-gold-text, #906A3C); }

@media (max-width: 1024px) {
	.sun-col-promo > .e-con-inner { flex-direction: column; }
}
@media (max-width: 767px) {
	.sun-col-head { padding-block: 24px 4px !important; }
	.sun-col-chips .elementor-nav-menu--main .elementor-nav-menu { margin: 0 -24px; padding: 0 24px 2px; }
	.sun-col-store #c7-content:not(:has(.c7-product-collection)) { min-height: 2100px; }
	.sun-col-store .c7-filters { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px !important; }
	.sun-col-store .c7-filters label { font-size: 10px; letter-spacing: 1.2px; }
	.sun-col-store .c7-filters select { padding: 0 6px !important; font-size: 14px !important; }
	.sun-col-store .c7-product__add-to-cart__form { display: grid !important; grid-template-columns: 52px minmax(0, 1fr); gap: 6px; }
	.sun-col-store .c7-product__add-to-cart__form .c7-btn { min-height: 44px; padding: 0 6px !important; font-size: 10.5px; letter-spacing: 1.2px; }
	.sun-col-store .c7-product__add-to-cart__form input[name="quantity"] { height: 44px !important; font-size: 16px; }
	.sun-col-promo__tile { flex-direction: column !important; }
	.sun-col-promo__img { flex: 0 0 auto !important; width: 100% !important; }
	.sun-col-promo__img img { aspect-ratio: 16 / 9; min-height: 0; height: auto !important; }
	.sun-col-promo__copy { padding: 24px 20px 28px !important; }
	.sun-col-help__list .elementor-icon-list-items { flex-direction: column; align-items: flex-start !important; }
}
@media (prefers-reduced-motion: reduce) {
	.sun-res-tile,
	.sun-res-tile__img img,
	.sun-res-info__link .elementor-heading-title a::after,
	.sun-res-tile__cta .elementor-heading-title::after { transition: none; }
	.sun-res-tile:hover { transform: none; }
	.sun-res-tile:hover .sun-res-tile__img img { transform: none; }
}

/* --------------------------------------------------------------------------
   47b. Review fixes (2026-10-08: storefront, accessibility and facts reviews)
   -------------------------------------------------------------------------- */

/* Layout shift: hold the space only while Commerce7 is still loading (empty
   mount, its &nbsp; placeholder section, or its spinner block). C7 writes an
   inline min-height:0 at the start of loading, hence !important. Its error
   page (.c7-error-page) and an empty collection are never held open. */
.sun-col-store #c7-content:is(:empty, :has(> .c7-loading--block), :has(> section.c7-content:only-child:not(:has(*)))) { min-height: 1300px !important; }
.sun-res-card__widget #c7-content:is(:empty, :has(> .c7-loading--block), :has(> section.c7-content:only-child:not(:has(*)))) { min-height: 330px !important; }
@media (max-width: 767px) {
	.sun-col-store #c7-content:is(:empty, :has(> .c7-loading--block), :has(> section.c7-content:only-child:not(:has(*)))) { min-height: 2100px !important; }
	.sun-res-card__widget #c7-content:is(:empty, :has(> .c7-loading--block), :has(> section.c7-content:only-child:not(:has(*)))) { min-height: 300px !important; }
}
/* the filter bar paints after the grid on All Wines: keep its row */
.sun-col-store .c7-product-collection__content:has(.c7-filters) { min-height: 96px; }

/* Stretched link: Elementor widgets are position:relative, so the link's
   ::after was boxed by the heading. Make the tile its containing block. */
.sun-res-tile__title,
.sun-res-tile__title .elementor-widget-container,
.sun-res-tile__title .elementor-heading-title { position: static !important; }
.sun-res-tile { cursor: pointer; }

/* Booking row stacks on tablets (Elementor's own flex-direction rule wins on
   specificity otherwise). */
@media (max-width: 1024px) {
	.sun-res-book.e-con.e-flex > .e-con-inner { flex-direction: column !important; }
}

/* Booking card details */
.sun-res-card .c7-reservation__search { margin-bottom: 0 !important; }
.sun-res-card__help { margin-top: 8px !important; }
.sun-res-card .c7-date-picker-input input[type="text"] { padding-right: 52px !important; }
body .sun-res-card #c7-content .c7-reservation__search .c7-btn--primary {
	min-height: 52px;
	font-size: 12px;
	letter-spacing: 2.5px;
}
/* one experience type only: the select offers no choice, so leave it out */
.sun-res-card .c7-reservation__search .c7-form__field:has(select[name="reservationTypeId"] option:only-child) { display: none !important; }
/* no-availability notice */
.sun-res-card .c7-notice--no-availability {
	margin-top: 20px;
	padding: 16px 18px;
	background: #F4F1EA;
	border-left: 3px solid var(--sun-gold-ornament, #B98D58);
	font-size: 18px;
	line-height: 1.45;
}
.sun-res-card .c7-notice--no-availability a {
	margin-left: 0.3em;
	white-space: nowrap;
	text-decoration: underline;
	text-underline-offset: 3px;
}
@media (max-width: 767px) {
	.sun-res-card .c7-date-picker-dropdown {
		left: 0 !important;
		right: auto !important;
		max-width: calc(100vw - 36px);
	}
	.sun-res-card .rdp-root { max-width: 100%; }
	.sun-res-card .rdp-month_grid { width: auto !important; }
	.sun-res-card .rdp-weekday,
	.sun-res-card .rdp-day { width: 40px !important; min-width: 0 !important; height: 40px !important; padding: 0 !important; }
	.sun-res-card .rdp-day_button { width: 38px !important; height: 38px !important; }
}

/* Products with nothing to buy said nothing at all */
.sun-col-store .c7-product:not(:has(.c7-product__add-to-cart__form)) .c7-product__title::after {
	content: "Currently unavailable online";
	display: block;
	margin-top: 8px;
	font: 400 12px/1.4 Alata, sans-serif;
	letter-spacing: 2px;
	text-transform: uppercase;
	color: var(--sun-gold-text, #906A3C);
}

/* Phone rails reach both screen edges; the chip rail fades at the right so
   the off-screen chips are discoverable. */
@media (max-width: 767px) {
	.sun-col-chips .elementor-nav-menu--main .elementor-nav-menu {
		width: calc(100% + 48px) !important;
		max-width: none !important;
		flex: 0 0 calc(100% + 48px) !important; /* a flex item of the nav: it shrank back to 100% */
		padding-right: 40px;
		-webkit-mask-image: linear-gradient(to right, #000 calc(100% - 40px), transparent);
		mask-image: linear-gradient(to right, #000 calc(100% - 40px), transparent);
	}
	.sun-res-tiles {
		--width: calc(100% + 48px);
		width: calc(100% + 48px) !important;
		max-width: none !important;
	}
}

/* Contrast */
.sun-res-hero .sun-res-eyebrow .elementor-heading-title { color: #F4F1EA !important; }   /* gold on the photo fell to 1.5:1 */
.sun-res-more,
.sun-col-promo { --sun-gold-text: #85602F; }                                               /* 5.0:1 on cream (#906A3C was 4.3) */
.sun-col-promo .elementor-button,
.sun-col-promo .elementor-button .elementor-button-text { color: #85602F !important; }
.sun-col-promo .elementor-button:hover,
.sun-col-promo .elementor-button:focus-visible,
.sun-col-promo .elementor-button:hover .elementor-button-text,
.sun-col-promo .elementor-button:focus-visible .elementor-button-text { color: #242E35 !important; }
.sun-res-card .c7-reservation__search select,
.sun-res-card .c7-reservation__search input[type="text"],
.sun-col-store .c7-filters select { border-color: #8A8880 !important; }                    /* 3.55:1 control edge */

/* Focus */
.sun-col-chips .elementor-nav-menu--main .elementor-nav-menu > li > a.elementor-item:focus-visible { outline-offset: -4px; }
.sun-col-chips .elementor-nav-menu--main .elementor-nav-menu > li.current-menu-item > a.elementor-item:focus-visible { outline-color: #FFFFFF; }
.sun-col-store .c7-radio input:focus-visible + .c7-radio__control { outline: 2px solid #242E35; outline-offset: 2px; }

/* Breadcrumb: arrow is decoration, target at least 24 px tall */
.sun-col-crumb .elementor-heading-title a { display: inline-block; padding-block: 4px; }
.sun-col-crumb .elementor-heading-title a::before { content: "\2190\00a0" / ""; }

/* Hero lede: the widget and its paragraph both carried the bottom margin */
.sun-res-hero__lede { margin-bottom: 0 !important; }

/* Unknown or unavailable collection (C7 shows "Collection Not Found"): no lede over it */
body:not(.sun-c7-titled) .sun-col-head__lede { display: none; }

/* Visually hidden heading and live region */
.sun-col-sr,
.sun-sr-only {
	position: absolute !important;
	width: 1px !important;
	height: 1px !important;
	margin: -1px !important;
	padding: 0 !important;
	overflow: hidden !important;
	clip-path: inset(50%) !important;
	white-space: nowrap !important;
	border: 0 !important;
}

/* --------------------------------------------------------------------------
   47c. Tock booking widget inside the reservation card (D120)
   --------------------------------------------------------------------------
   Owner, 2026-10-08: "review the reservation page and fix the ui and ux issues".
   Tock's inline widget ships a single-row search bar whose four cells each
   carry min-width:180px. In our 590 px card that totals 720 px, so the
   "Book now" cell overflowed the card and painted over the gap next to
   "Good to know" — the primary action sat outside its own card, as blue
   link text rather than a button. Its "Powered by Tock" lockup is also
   white, i.e. invisible on the white card.
   Fixed here, visual only — no Tock node is moved, renamed or scripted:
   the bar becomes a grid (three controls on one row, the action full width
   beneath), square and in the site's palette, with the attribution legible.
   Tock owns everything inside its dropdowns; we only size and colour the
   closed controls.
   -------------------------------------------------------------------------- */

.sun-res-card .sun-tock-inline { width: 100%; }
.sun-res-card .TockWidgetWrapper,
.sun-res-card .TockWidget-container {
	display: block !important;
	width: 100% !important;
	min-width: 0 !important;
}
.sun-res-card .TockSearchBar-container {
	display: grid !important;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 10px;
	width: 100% !important;
	min-width: 0 !important;
}
/* every cell: let it shrink (Tock hard-codes 180 px) */
.sun-res-card .TockSearchBar-container > *,
.sun-res-card .InlineWidget-dropdownContainer > .InlineWidgetDropDown-section,
.sun-res-card .TockDropdown-container,
.sun-res-card .TockInlineButton-container {
	min-width: 0 !important;
	width: auto !important;
	flex: 0 1 auto !important;
}

/* the three controls, matching the site's form fields */
.sun-res-card .TockSearchBar-container > .InlineWidgetDropDown-section,
.sun-res-card .TockSearchBar-container > .TockDropdown-container,
.sun-res-card .InlineWidget-dropdownContainer > .InlineWidgetDropDown-section {
	border: 1px solid #8A8880 !important;
	border-radius: 0 !important;
	background: #FFFFFF !important;
	min-height: 52px;
	overflow: hidden;
}
.sun-res-card .InlineWidget-dropdownContainer { border: 0 !important; background: none !important; }
.sun-res-card .TockButton-backgroundGray,
.sun-res-card .InlineWidgetDropDown-sectionDropdown,
.sun-res-card .TockDatePicker-container {
	width: 100% !important;
	min-height: 50px;
	border-radius: 0 !important;
	background: transparent !important;
}
.sun-res-card .MainLabelLabel {
	font-family: Alata, sans-serif !important;
	font-size: 11px !important;
	letter-spacing: 2px !important;
	text-transform: uppercase;
	color: #545D5C !important;
}
.sun-res-card .MainLabelSpan {
	font-size: 16px !important;
	color: #242E35 !important;
}

/* the action: its own full-width row, the site's dark button */
.sun-res-card .TockInlineButton {
	grid-column: 1 / -1;
	width: 100% !important;
	margin-top: 4px;
}
.sun-res-card .TockInlineButton-container {
	display: flex !important;
	align-items: center;
	justify-content: center;
	width: 100% !important;
	min-height: 52px;
	border: 1px solid #242E35 !important;
	border-radius: 0 !important;
	background: #242E35 !important;
	transition: background-color 0.2s ease, border-color 0.2s ease;
}
.sun-res-card .TockInlineButton-container .MainLabelSpan,
.sun-res-card .TockInlineButton-container span {
	background: transparent !important;
	color: #FFFFFF !important;
	font-family: Alata, sans-serif !important;
	font-size: 12px !important;
	letter-spacing: 2.5px !important;
	text-transform: uppercase;
}
.sun-res-card .TockInlineButton-container:hover,
.sun-res-card .TockInlineButton-container:focus-within {
	border-color: var(--sun-gold-ornament, #B98D58) !important;
	background: var(--sun-gold-ornament, #B98D58) !important;
}
.sun-res-card .TockInlineButton-container:hover .MainLabelSpan,
.sun-res-card .TockInlineButton-container:focus-within .MainLabelSpan { color: #242E35 !important; }
.sun-res-card .TockSearchBar-container button:focus-visible,
.sun-res-card .TockInlineButton-container:focus-visible {
	outline: 2px solid #242E35;
	outline-offset: 2px;
}

/* attribution: Tock renders it white, which is invisible on the card */
.sun-res-card .TockSearchBar-tockIcon,
.sun-res-card .TockSearchBar-tockIcon .TockIcon,
.sun-res-card .TockSearchBar-tockIcon span,
.sun-res-card .TockSearchBar-tockIcon svg {
	color: #767676 !important;
	fill: currentColor !important;
}
.sun-res-card .TockSearchBar-tockIcon { margin-top: 12px !important; }

/* shown by sunstone-tock.php only when Tock does not paint */
.sun-tock-fallback { display: none; }
.sun-tock-fallback.is-shown {
	display: block;
	margin: 14px 0 0 !important;
	padding: 14px 16px;
	background: #F4F1EA;
	border-left: 3px solid var(--sun-gold-ornament, #B98D58);
	font-size: 16px;
}

@media (max-width: 767px) {
	.sun-res-card .TockSearchBar-container { grid-template-columns: 1fr; gap: 8px; }
}
/* the card is the action: it should not stretch to the facts column's height */
@media (min-width: 1025px) {
	.sun-res-book.e-con.e-flex > .e-con-inner { align-items: flex-start !important; }
}

/* --------------------------------------------------------------------------
   47d. Form fields: a visible edge (contact 342, newsletter, any Gravity form)
   --------------------------------------------------------------------------
   Owner, 2026-10-08 ("fix the ui and ux issues on the contact page"). The text
   and e-mail inputs were `1px solid #FFFFFF` on a white card, so the field had
   no visible edge at all — only the select showed one (#C9C7C1, 1.8:1). Match
   the border used by the booking and collection controls (#8A8880, 3.55:1 —
   WCAG 1.4.11 wants 3:1 for a control boundary), and give focus a real ring.
   -------------------------------------------------------------------------- */
.gform_wrapper .gform_fields input[type="text"],
.gform_wrapper .gform_fields input[type="email"],
.gform_wrapper .gform_fields input[type="tel"],
.gform_wrapper .gform_fields input[type="number"],
.gform_wrapper .gform_fields select,
.gform_wrapper .gform_fields textarea {
	border: 1px solid #8A8880 !important;
	border-radius: 0 !important;
	background-color: #FFFFFF;
}
.gform_wrapper .gform_fields input:focus-visible,
.gform_wrapper .gform_fields select:focus-visible,
.gform_wrapper .gform_fields textarea:focus-visible {
	outline: 2px solid #242E35;
	outline-offset: 1px;
	border-color: #242E35 !important;
}


/* ==========================================================================
   48. FOOTER — logo on the grid, fountain photo band
   --------------------------------------------------------------------------
   Owner, 2026-10-07 (annotated screenshot): move the logo left, above the
   Visit column; remove the e-mail block (done in the template); "fix this
   image so the fountain is center to the viewport".
   Template edit: site/.copy-migration/brand/footer-owner-20261007.php
   (adds .sun-footer-logo on widget 0bbfe50, .sun-footer-photo on d0bf9ae).
   Rules that won:
   - The logo's left edge is the Visit column's text edge at every width:
     the 1200 px column grid + its 20 px column padding (desktop), the 30 px
     section padding + 20 px (tablet), the 20 px section padding (phone).
   - The photo (1600×1024) is drawn at the full window width ("cover" is
     always width-bound here, the band never gets taller than 0.64 vw), so
     the fountain's place in it is a fixed share of the window width: its
     top finial sits 37 % down the image, the basin rim 72 %. The image is
     pulled up by a length, not a percentage, so the finial lands 16 px
     under the wave (wave = 103/2062 × 102 vw ≈ 5.1 vw) at every width; a
     percentage would move it with the band height.
   - The band is 27.5 vw + 230 px tall (626 px at 1440, 758 at 1920, capped
     at 780): the fountain (22.4 vw) plus the wave plus the bottom stack.
     Social icons, legal links and the copyright stack at the bottom over
     the paving with a 14 px rhythm; a fade under them keeps the small type
     legible without dimming the fountain.
   - Phones keep their own photo (the villa), untouched.
   TO REVERT: delete this section and restore g3-backups/footer-623-*.json.
   ========================================================================== */

/* --- logo on the column grid --- */
.elementor-623 .sun-footer-logo {
	width: 100% !important;
	max-width: 1200px;
	margin-inline: auto !important;
	padding-inline: 20px;
	text-align: left !important;
}
.elementor-623 .sun-footer-logo .elementor-widget-container { text-align: left !important; }
.elementor-623 .sun-footer-logo img { display: block; margin: 0 !important; }
@media (max-width: 1024px) {
	.elementor-623 .sun-footer-logo { max-width: none; padding-inline: 50px; }
}
@media (max-width: 767px) {
	/* phones centre the footer columns, so the logo centres over them too */
	.elementor-623 .sun-footer-logo,
	.elementor-623 .sun-footer-logo .elementor-widget-container { padding-inline: 20px; text-align: center !important; }
	.elementor-623 .sun-footer-logo img { margin: 0 auto !important; }
}

/* --- fountain photo band (tablet and up; phones keep the villa photo) --- */
@media (min-width: 768px) {
	.elementor-623 .elementor-element.sun-footer-photo {
		min-height: min(calc(27.5vw + 230px), 780px) !important;
		background-size: 100% auto !important;
		background-repeat: no-repeat !important;
		background-position: 50% calc(16px + 5.1vw - 23.7vw) !important;
	}
	.elementor-623 .elementor-element.sun-footer-photo > .elementor-container {
		min-height: min(calc(27.5vw + 230px), 780px) !important;
		align-items: stretch !important;
		position: relative;
		z-index: 2;
	}
	.elementor-623 .elementor-element.sun-footer-photo > .elementor-container > .elementor-column > .elementor-widget-wrap {
		align-content: flex-end !important;
		align-items: flex-end;
		row-gap: 14px;
		padding: 0 0 28px !important;
	}
	.elementor-623 .elementor-element.sun-footer-photo > .elementor-container > .elementor-column > .elementor-widget-wrap > .elementor-widget { margin-bottom: 0 !important; }
	.elementor-623 .elementor-element.sun-footer-photo .elementor-widget-spacer { display: none !important; }
	.elementor-623 .elementor-element.sun-footer-photo::after {
		content: "";
		position: absolute;
		inset: auto 0 0 0;
		height: 260px;
		z-index: 1;
		pointer-events: none;
		background: linear-gradient(to bottom, rgba(36, 46, 53, 0) 0%, rgba(36, 46, 53, 0.6) 100%);
	}
}

/* ==========================================================================
   49. SUNSTONE ELIXIR landing page (/elixir/) — v2
   --------------------------------------------------------------------------
   Owner, 2026-10-08: "improve the elixir page with elementor snippets and
   proven design patterns to improve the mobile and detail experience" — plus
   a standing instruction that the retired product name appear nowhere.
   Design: .copy-migration/elementor/elixir-v2-build.py -> designs/layout/
   elixir-v2.json. Spec: designs/elixir-v2/BUILD-SPEC.md. This section
   REPLACES the v1 §49 wholesale.
   Governed by /home/admin/sunstone/knowledgebase — see the builder header for
   which claims are used and which are deliberately absent.

   Rules that won:
   - The six measured v1 defects are the job. The phone page was 9305 px with
     no CTA in view for ~7500 px of it, so: the three serve cards became one
     Pro nested-carousel slide with a right-hand peek, "what it is" became
     nested-tabs that collapse to an accordion on a phone, and a mobile-only
     sticky bar carries the primary CTA through the middle of the scroll.
   - v2 adds structure, not claims. Two new detail sections and a six-question
     FAQ, every line traceable to the spec's exclusive fact list. Two FAQ
     answers decline to answer; that is the honest answer and it ships.
   - The single sanctioned effect line keeps its own rule-topped block, appears
     once, at product level, with the honest limit directly beneath it.
   - No buy path, no price, no cart, no countdown, no popup, no testimonials.
     The conversion is the newsletter and a visit to the Montecito lounge.
   - Gold #906A3C fails contrast on cream #F4F1EA (4.31:1); on cream grounds
     this section uses #85602F. Gold over photography is never text.
   - The sticky bar is CSS only — scroll-driven animation, no JS and no html
     widget — and sits at z-index 90, under the Commerce7 cart drawer.

   Scoping: the `sun-elx-` namespace only. There is no `page-elixir` body
   class on this install (WordPress emits page-id-/elementor-page- ids, not
   the slug), so a body-class prefix silently disabled the whole section.
   TO REVERT: delete this section, restore the v1 §49 from git, and run
   `bin/elementor-json revert 997300`.
   ========================================================================== */

/* ---------------------------------------------------------------- vocabulary */
.sun-elx-eyebrow .elementor-heading-title {
	margin: 0;
	font-family: Alata, sans-serif !important;
	font-size: 12px !important;
	font-weight: 400 !important;
	letter-spacing: 3px !important;
	text-transform: uppercase;
	color: #85602F !important;          /* 5.02:1 on cream; #B98D58 is 2.65:1 and fails */
}
.sun-elx-hero .sun-elx-eyebrow .elementor-heading-title,
.sun-elx-what .sun-elx-eyebrow .elementor-heading-title,
.sun-elx-ritual .sun-elx-eyebrow .elementor-heading-title,
.sun-elx-signup .sun-elx-eyebrow .elementor-heading-title {
	color: var(--sun-gold-ornament, #B98D58) !important;   /* 4.62:1 on ink */
}
.sun-elx-h2 .elementor-heading-title {
	margin: 8px 0 16px;
	font-size: clamp(30px, 3.6vw, 48px) !important;
	line-height: 1.08 !important;
}
.sun-elx-body p {
	margin: 0 0 14px;
	font-size: 17px;
	line-height: 1.62;
}
.sun-elx-body p:last-child { margin-bottom: 0; }
.sun-elx-body--center { text-align: center; }
.sun-elx-body--center p { margin-inline: auto; max-width: 620px; }
.sun-elx-limit p {
	max-width: 56ch;
	margin: 18px auto 0;
	font-size: 15px;
	line-height: 1.55;
	color: #545D5C;
}

/* buttons */
.sun-elx-btn .elementor-button {
	min-height: 52px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	padding: 0 30px;
	border-radius: 0;
	border: 1px solid transparent;
	font-family: Alata, sans-serif;
	font-size: 12px;
	letter-spacing: 2.5px;
	text-transform: uppercase;
	transition: background-color 0.2s ease, color 0.2s ease, border-color 0.2s ease;
}
.sun-elx-btn--primary .elementor-button {
	background: var(--sun-gold-ornament, #B98D58);
	border-color: var(--sun-gold-ornament, #B98D58);
	color: #242E35 !important;
}
.sun-elx-btn--primary .elementor-button:hover,
.sun-elx-btn--primary .elementor-button:focus-visible {
	background: #FFFFFF;
	border-color: #FFFFFF;
}
.sun-elx-btn--ghost .elementor-button {
	background: transparent;
	border-color: rgba(255, 255, 255, 0.7);
	color: #FFFFFF !important;
}
.sun-elx-btn--ghost .elementor-button:hover,
.sun-elx-btn--ghost .elementor-button:focus-visible {
	background: #FFFFFF;
	border-color: #FFFFFF;
	color: #242E35 !important;
}
.sun-elx-btn--dark .elementor-button {
	background: #242E35;
	border-color: #242E35;
	color: #FFFFFF !important;
}
.sun-elx-btn--dark .elementor-button:hover,
.sun-elx-btn--dark .elementor-button:focus-visible {
	background: var(--sun-gold-ornament, #B98D58);
	border-color: var(--sun-gold-ornament, #B98D58);
	color: #242E35 !important;
}
.sun-elx-btn .elementor-button:focus-visible { outline: 2px solid #FFFFFF; outline-offset: 3px; }
.sun-elx-btn--dark .elementor-button:focus-visible { outline-color: #242E35; }

/* ---------------------------------------------------------------- 1. hero */
/* Split hero (owner, 2026-10-08: 1a). Copy on solid ink, the can film uncovered beside it: the film is
   bright violet and yellow with the can dead centre, so no text ever sits on it and it needs no scrim.
   Stacked at <=1024 (film on top). The film itself is [sunstone_hero_video], sunstone-hero-video.php. */
.sun-elx-hero.sun-elx-hero {
	position: relative;
	flex-direction: row !important;
	flex-wrap: nowrap !important;
	align-items: stretch !important;
	gap: 0 !important;
	min-height: clamp(560px, calc(100vh - 80px), 820px);
	padding: 0 !important;
	background-color: #141018 !important;
	isolation: isolate;
}
.sun-elx-hero__copy.sun-elx-hero__copy {
	flex: 0 0 50% !important;
	width: 50% !important;
	justify-content: center !important;
	gap: 0 !important;
	/* left edge on the 1200px content grid used by every other section */
	padding: 72px 56px 72px max(24px, calc((100vw - 1200px) / 2 + 24px)) !important;
}
.sun-elx-hero__media.sun-elx-hero__media {
	position: relative;
	flex: 1 1 50% !important;
	width: 50% !important;
	min-height: 100%;
	padding: 0 !important;
	overflow: hidden;
}
.sun-elx-hero__video.sun-elx-hero__video {
	position: absolute !important;
	inset: 0;
	width: 100% !important;
	max-width: none !important;
	margin: 0 !important;
}
.sun-elx-hero__video > *,
.sun-elx-hero__video .elementor-shortcode { height: 100%; }

/* the film component (generic: any page can use the shortcode) */
.sun-hero-video {
	position: relative;
	width: 100%;
	height: 100%;
	overflow: hidden;
	background: #5B3F96;              /* the ripple's violet, shown only before the poster paints */
}
.sun-hero-video__still img,
.sun-hero-video__film {
	position: absolute;
	inset: 0;
	display: block;
	width: 100%;
	max-width: none;
	height: 100%;
	object-fit: cover;
	object-position: var(--sun-hero-focus, 50% 50%);
}
.sun-hero-video__film { opacity: 0; transition: opacity var(--sun-hero-fade, 0.8s) linear; }
.sun-hero-video__film.is-on { opacity: 1; }
.sun-hero-video__toggle {
	position: absolute;
	right: 16px;
	bottom: 16px;
	z-index: 3;
	display: grid;
	place-items: center;
	width: 44px;
	height: 44px;
	padding: 0;
	border: 1px solid rgba(255, 255, 255, 0.7);
	border-radius: 50%;
	background: rgba(20, 16, 24, 0.55);
	color: #FFFFFF;
	cursor: pointer;
}
.sun-hero-video__toggle[hidden] { display: none; }
.sun-hero-video__toggle:hover { background: rgba(20, 16, 24, 0.8); }
.sun-hero-video__toggle:focus-visible { outline: 2px solid #FFFFFF; outline-offset: 3px; }
/* The Elementor kit's `.elementor-kit-13 button` (0,1,1) sets a transparent fill, square corners,
   20px padding and gold text, and its :hover/:focus rule (0,2,1) turns the text #242E35 — all of
   which outrank the single-class rules above, so the icon vanished on the dark fill. The doubled
   class (0,2,0; 0,3,0 with a state) wins back only the contested properties; position stays on
   the single-class rule so the Elixir/Villa placement overrides keep working (D132). */
.sun-hero-video__toggle.sun-hero-video__toggle {
	padding: 0;
	border-radius: 50%;
	background: rgba(20, 16, 24, 0.55);
	color: #FFFFFF;
}
.sun-hero-video__toggle.sun-hero-video__toggle:hover { background: rgba(20, 16, 24, 0.8); }
.sun-hero-video__toggle.sun-hero-video__toggle:hover,
.sun-hero-video__toggle.sun-hero-video__toggle:focus,
.sun-hero-video__toggle.sun-hero-video__toggle:focus-visible { color: #FFFFFF; }
.sun-hero-video__toggle.sun-hero-video__toggle:focus-visible { outline: 2px solid #FFFFFF; outline-offset: 3px; }
.sun-hero-video__icon {               /* pause: two bars */
	width: 12px;
	height: 14px;
	border-left: 4px solid currentColor;
	border-right: 4px solid currentColor;
}
.sun-hero-video.is-paused .sun-hero-video__icon {   /* play: a triangle */
	width: 0;
	height: 0;
	margin-left: 4px;
	border-style: solid;
	border-width: 8px 0 8px 13px;
	border-color: transparent transparent transparent currentColor;
}
.sun-hero-video .screen-reader-text {
	position: absolute !important;
	width: 1px;
	height: 1px;
	overflow: hidden;
	clip: rect(0 0 0 0);
	white-space: nowrap;
}
.sun-elx-hero__title .elementor-heading-title {
	max-width: 15ch;
	margin: 10px 0 14px;
	color: #FFFFFF !important;
	font-size: clamp(42px, 6.2vw, 82px) !important;
	line-height: 1.02 !important;
}
.sun-elx-hero__lede p {
	max-width: 46ch;
	margin: 0 0 26px;
	color: rgba(255, 255, 255, 0.93) !important;
	font-size: 18px;
	line-height: 1.5;
}
.sun-elx-hero__cta { gap: 14px !important; flex-wrap: wrap; width: auto !important; }
.sun-elx-hero__note p {
	margin: 18px 0 0;
	color: rgba(255, 255, 255, 0.75) !important;
	font-size: 14px;
	letter-spacing: 0.3px;
}
.sun-elx-hero__scroll p { margin: 8px 0 0; }
.sun-elx-hero__scroll a {
	display: inline-block;
	padding: 4px 0;
	color: rgba(255, 255, 255, 0.82) !important;
	font-family: Alata, sans-serif;
	font-size: 11px;
	letter-spacing: 2.4px;
	text-transform: uppercase;
	text-decoration: none;
	border-bottom: 1px solid rgba(185, 141, 88, 0.8);
}
.sun-elx-hero__scroll a::after { content: " \2193"; }
.sun-elx-hero__scroll a:hover,
.sun-elx-hero__scroll a:focus-visible { color: #FFFFFF !important; border-bottom-color: #FFFFFF; }

/* ---------------------------------------------------------------- 2. occasion */
.sun-elx-occasion { padding-block: 92px; background: #F4F1EA; }
.sun-elx-occasion__inner,
.sun-elx-occasion__inner > .e-con-inner { gap: 60px; align-items: center !important; }
.sun-elx-occasion__copy { flex: 1 1 0 !important; width: auto !important; min-width: 0; }
/* Elementor's default 10px container padding was never zeroed here: the copy sat 10px inside its own photo
   and inside every other section's text edge (44px vs 34px on a phone). Owner, 2026-10-09: "Fix this on mobile". */
.sun-elx-occasion__copy.sun-elx-occasion__copy { --padding-top: 0px; --padding-right: 0px; --padding-bottom: 0px; --padding-left: 0px; padding: 0 !important; }
.sun-elx-occasion .sun-elx-h2 .elementor-heading-title { text-wrap: balance; }
.sun-elx-occasion .sun-elx-body p { text-wrap: pretty; }   /* no one-word last line ("out.") */
@media (min-width: 1025px) {
	/* left edge on the hero's grid line (144px at 1440: (100vw - 1200px) / 2 + 24px); it sat at 120 */
	.sun-elx-occasion__inner > .e-con-inner { padding-inline: 24px; }
}
.sun-elx-occasion__img { flex: 0 0 38% !important; width: 38% !important; margin: 0 !important; }
.sun-elx-occasion__img img { display: block; width: 100%; aspect-ratio: 4 / 5; object-fit: cover; object-position: 50% 50%; }

/* ---------------------------------------------------------------- 3. what it is (nested-tabs) */
.sun-elx-what { padding-block: 92px; background: #242E35; }
.sun-elx-what .sun-elx-h2 .elementor-heading-title { color: #FFFFFF !important; }
.sun-elx-what__inner { text-align: center; }
.sun-elx-what__tabs { margin-top: 30px; text-align: left; }

/* tab strip (desktop) */
.sun-elx-what__tabs {
	--n-tabs-title-color-normal: rgba(255, 255, 255, 0.72);
	--n-tabs-title-color-hover: #FFFFFF;
	--n-tabs-title-color-active: #FFFFFF;
	--n-tabs-title-background-color-normal: transparent;
	--n-tabs-title-background-color-hover: transparent;
	--n-tabs-title-background-color-active: transparent;
	--n-tabs-border-width: 0;
	--n-tabs-title-border-radius: 0;
	--n-tabs-background-color: transparent;
}
.sun-elx-what__tabs .e-n-tabs-heading { gap: 0; border-bottom: 1px solid rgba(255, 255, 255, 0.2); }
.sun-elx-what__tabs .e-n-tab-title,
.sun-elx-what__tabs .e-n-tab-title:hover,
.sun-elx-what__tabs .e-n-tab-title[aria-selected="true"],
.sun-elx-what__tabs .e-n-tab-title[aria-expanded="true"] { background-color: transparent !important; }
.sun-elx-what__tabs .e-n-tab-title .e-n-tab-title-text { color: rgba(255, 255, 255, 0.78) !important; }
.sun-elx-what__tabs .e-n-tab-title:hover .e-n-tab-title-text,
.sun-elx-what__tabs .e-n-tab-title[aria-selected="true"] .e-n-tab-title-text,
.sun-elx-what__tabs .e-n-tab-title[aria-expanded="true"] .e-n-tab-title-text { color: #FFFFFF !important; }
.sun-elx-what__tabs .e-n-tab-title {
	background: transparent;
	border: 0;
	border-radius: 0;
	padding: 16px 26px;
	margin-bottom: -1px;
	border-bottom: 2px solid transparent;
	color: rgba(255, 255, 255, 0.72);
	font-family: Alata, sans-serif;
	font-size: 13px;
	letter-spacing: 1.6px;
	text-transform: uppercase;
	transition: color 0.2s ease, border-color 0.2s ease;
}
.sun-elx-what__tabs .e-n-tab-title:hover { color: #FFFFFF; }
.sun-elx-what__tabs .e-n-tab-title[aria-selected="true"],
.sun-elx-what__tabs .e-n-tab-title[aria-expanded="true"] {
	color: #FFFFFF;
	border-bottom-color: var(--sun-gold-ornament, #B98D58);
}
.sun-elx-what__tabs .e-n-tab-title:focus-visible { outline: 2px solid #FFFFFF; outline-offset: -2px; }
.sun-elx-what__tabs .e-n-tab-title-text { font: inherit; letter-spacing: inherit; }
.sun-elx-what__tabs .e-n-tabs-content > .e-con { padding: 24px 0 0; }
.sun-elx-what__tabs .sun-elx-body p {
	max-width: 62ch;
	color: rgba(255, 255, 255, 0.88) !important;
	font-size: 17px;
}
/* accordion mode on a phone: breakpoint_selector = mobile */
.sun-elx-what__tabs.e-n-tabs-mobile .e-n-tabs-heading { border-bottom: 0; }
@media (max-width: 767px) {
	.sun-elx-what__tabs .e-n-tab-title {
		padding: 15px 0;
		margin-bottom: 0;
		border-bottom: 1px solid rgba(255, 255, 255, 0.18);
		justify-content: space-between;
	}
	.sun-elx-what__tabs .e-n-tab-title[aria-expanded="true"] { border-bottom-color: var(--sun-gold-ornament, #B98D58); }
	.sun-elx-what__tabs .e-n-tabs-content > .e-con { padding: 14px 0 20px; }
}

/* the one sanctioned product-level effect line */
.sun-elx-designed-wrap { margin-top: 38px !important; }
p.sun-elx-designed {
	display: inline-block;
	margin: 0;
	padding: 16px 28px;
	border-top: 1px solid var(--sun-gold-ornament, #B98D58);
	border-bottom: 1px solid var(--sun-gold-ornament, #B98D58);
	color: #FFFFFF !important;
	font-family: "Cormorant Infant", serif;
	font-size: clamp(23px, 2.6vw, 32px);
	line-height: 1.25;
}
.sun-elx-what .sun-elx-limit p { color: rgba(255, 255, 255, 0.72); }

/* ---------------------------------------------------------------- 4. inside (NEW) */
.sun-elx-inside { padding-block: 92px; background: #F4F1EA; }
.sun-elx-inside__inner { text-align: center; }
.sun-elx-inside__grid {
	display: grid !important;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 0 !important;
	margin-top: 34px;
	border-top: 1px solid rgba(36, 46, 53, 0.14);
}
.sun-elx-inside__item {
	width: auto !important;
	min-width: 0;
	padding: 22px 24px 22px 0 !important;
	text-align: left;
	border-bottom: 1px solid rgba(36, 46, 53, 0.14);
}
.sun-elx-inside__name .elementor-heading-title {
	margin: 0 0 6px;
	color: #85602F !important;          /* #906A3C fails contrast on cream */
	font-size: 21px !important;
	line-height: 1.2 !important;
}
.sun-elx-inside__role p {
	margin: 0;
	font-size: 15px;
	line-height: 1.55;
	color: #3D4547;
}

/* ---------------------------------------------------------------- 5. serves (nested-carousel) */
.sun-elx-serves { padding-block: 92px; }
.sun-elx-serves__inner { text-align: center; }
.sun-elx-serves__row { margin-top: 30px; text-align: left; }
.sun-elx-serves__row .swiper { padding-bottom: 0; }
.sun-elx-serve { padding: 0 !important; }
.sun-elx-serve__img { margin: 0 0 16px !important; overflow: hidden; }
.sun-elx-serve__img img {
	display: block;
	width: 100%;
	aspect-ratio: 3 / 4;
	object-fit: cover;
	transition: transform 0.5s ease;
}
.sun-elx-serve:hover .sun-elx-serve__img img { transform: scale(1.03); }
.sun-elx-serve__title .elementor-heading-title { margin: 0 0 6px; font-size: 24px !important; }
.sun-elx-serve__body p { margin: 0; font-size: 16px; line-height: 1.55; color: #3D4547; }
/* arrows + dots, square and in palette */
.sun-elx-serves__row .elementor-swiper-button {
	color: #242E35;
	background: rgba(255, 255, 255, 0.88);
	border: 1px solid rgba(36, 46, 53, 0.22);
	width: 40px;
	height: 40px;
	top: auto;
	bottom: auto;
	transform: translateY(-50%);
}
.sun-elx-serves__row .elementor-swiper-button-prev { left: 0; }
.sun-elx-serves__row .elementor-swiper-button-next { right: 0; }
.sun-elx-serves__row .elementor-swiper-button:focus-visible { outline: 2px solid #242E35; outline-offset: 2px; }
.sun-elx-serves__row .swiper-pagination-bullet {
	width: 9px;
	height: 9px;
	border-radius: 0;
	background: rgba(36, 46, 53, 0.28);
	opacity: 1;
}
.sun-elx-serves__row .swiper-pagination-bullet-active { background: var(--sun-gold-text, #906A3C); }
.sun-elx-serves__row .swiper-pagination-bullet:focus-visible { outline: 2px solid #242E35; outline-offset: 2px; }

/* ---------------------------------------------------------------- 6. ritual (NEW) */
.sun-elx-ritual { padding-block: 92px; background: #242E35; }
.sun-elx-ritual__inner { text-align: center; }
.sun-elx-ritual .sun-elx-h2 .elementor-heading-title { color: #FFFFFF !important; }
.sun-elx-ritual__steps { gap: 0 !important; margin-top: 30px; text-align: left; }
.sun-elx-ritual__step {
	gap: 20px !important;
	align-items: flex-start !important;
	padding: 20px 0 !important;
	border-top: 1px solid rgba(255, 255, 255, 0.16);
}
.sun-elx-ritual__step:last-child { border-bottom: 1px solid rgba(255, 255, 255, 0.16); }
.sun-elx-ritual__num { flex: 0 0 auto !important; width: auto !important; }
.sun-elx-ritual__num .elementor-heading-title {
	margin: 0;
	color: var(--sun-gold-ornament, #B98D58) !important;
	font-family: Alata, sans-serif !important;
	font-size: 13px !important;
	letter-spacing: 2px !important;
	line-height: 1.6 !important;
}
.sun-elx-ritual__step > .e-con:last-child,
.sun-elx-ritual__step > .elementor-element:last-child { flex: 1 1 0 !important; width: auto !important; min-width: 0; }
.sun-elx-ritual__title .elementor-heading-title {
	margin: 0 0 6px;
	color: #FFFFFF !important;
	font-size: 22px !important;
	line-height: 1.2 !important;
}
.sun-elx-ritual__body p {
	margin: 0;
	color: rgba(255, 255, 255, 0.82) !important;
	font-size: 16px;
	line-height: 1.55;
}
.sun-elx-ritual .sun-elx-limit p { color: rgba(255, 255, 255, 0.7); }

/* ---------------------------------------------------------------- 7. why now */
.sun-elx-why { padding-block: 92px; background: #F4F1EA; }
.sun-elx-why__inner { text-align: center; }
.sun-elx-stats { gap: 48px !important; margin: 30px 0 0; justify-content: center !important; }
.sun-elx-stat { flex: 1 1 0 !important; width: auto !important; min-width: 0; }
.sun-elx-stat__num .elementor-heading-title {
	margin: 0;
	color: #85602F !important;
	font-family: "Cormorant Infant", serif;
	font-size: clamp(52px, 7vw, 86px) !important;
	line-height: 1 !important;
}
.sun-elx-stat__body p {
	max-width: 30ch;
	margin: 8px auto 0;
	font-size: 15px;
	line-height: 1.5;
}
p.sun-elx-cite,
.sun-elx-cite-wrap p {
	margin: 22px 0 6px;
	font-size: 13px;
	letter-spacing: 0.3px;
	color: #545D5C;
}

/* ---------------------------------------------------------------- 8. faq (nested-accordion) */
.sun-elx-faq { padding-block: 92px; }
.sun-elx-faq__inner { text-align: center; }
.sun-elx-faq__acc { margin-top: 28px; text-align: left; }
.sun-elx-faq__acc .e-n-accordion-item {
	border-bottom: 1px solid rgba(36, 46, 53, 0.16);
	background: transparent;
}
.sun-elx-faq__acc .e-n-accordion-item:first-child { border-top: 1px solid rgba(36, 46, 53, 0.16); }
.sun-elx-faq__acc .e-n-accordion-item-title { cursor: pointer; }
.sun-elx-faq__acc .e-n-accordion-item-title:focus-visible { outline: 2px solid #242E35; outline-offset: -2px; }
.sun-elx-faq__acc .e-n-accordion-item-title-text {
	margin: 0;
	font-family: "Cormorant Infant", serif;
	font-size: 22px;
	line-height: 1.25;
	color: #242E35;
}
.sun-elx-faq__acc .e-n-accordion-item-title-icon { color: #85602F; }
.sun-elx-faq__acc .e-n-accordion-item-title-icon svg,
.sun-elx-faq__acc .e-n-accordion-item-title-icon i { width: 13px; height: 13px; font-size: 13px; fill: #85602F; }
.sun-elx-faq__acc .sun-elx-body p { font-size: 16px; line-height: 1.6; color: #3D4547; }

/* ---------------------------------------------------------------- 9. where */
.sun-elx-where { padding-block: 92px; border-top: 1px solid rgba(36, 46, 53, 0.12); }
.sun-elx-where__inner { text-align: center; }
.sun-elx-where__list { margin: 22px 0 26px; }
.sun-elx-where__list .elementor-icon-list-items { justify-content: center; gap: 10px 34px; flex-wrap: wrap; }
.sun-elx-where__list .elementor-icon-list-item { margin: 0 !important; }
.sun-elx-where__list .elementor-icon-list-item::after { display: none !important; }
.sun-elx-where__list .elementor-icon-list-icon i,
.sun-elx-where__list .elementor-icon-list-icon svg {
	color: var(--sun-gold-text, #906A3C) !important;
	fill: var(--sun-gold-text, #906A3C) !important;
	width: 16px;
	font-size: 16px;
}
.sun-elx-where__list .elementor-icon-list-text { font-size: 16px; color: #3D4547; }

/* ---------------------------------------------------------------- 10. signup */
.sun-elx-signup { padding-block: 88px; background: #242E35; }
.sun-elx-signup__inner { text-align: center; }
.sun-elx-signup .sun-elx-h2 .elementor-heading-title { color: #FFFFFF !important; }
.sun-elx-signup .sun-elx-body p { color: rgba(255, 255, 255, 0.85) !important; }
.sun-elx-form { margin-top: 22px; }
.sun-elx-form .gform_wrapper .gfield_label,
.sun-elx-form .gform_wrapper legend { color: #FFFFFF !important; }
.sun-elx-form .gform_wrapper .gform_fields { text-align: left; }
.sun-elx-form .gform_wrapper input[type="text"],
.sun-elx-form .gform_wrapper input[type="email"],
.sun-elx-form .gform_wrapper textarea,
.sun-elx-form .gform_wrapper select { border-color: #8A8880; }
.sun-elx-form .gform_wrapper .gfield_required,
.sun-elx-form .gform_wrapper .gfield_required_text { color: #E8A398 !important; }   /* 6.67:1 on ink */
.sun-elx-form .gform_wrapper .gchoice label,
.sun-elx-form .gform_wrapper .gfield_consent_description { color: rgba(255, 255, 255, 0.78) !important; }
.sun-elx-form .gform_wrapper .gform_footer { justify-content: center; display: flex; }
.sun-elx-form .gform_wrapper input[type="submit"] {
	min-height: 52px;
	padding: 0 34px;
	border: 1px solid var(--sun-gold-ornament, #B98D58);
	border-radius: 0;
	background: var(--sun-gold-ornament, #B98D58);
	color: #242E35;
	font-family: Alata, sans-serif;
	font-size: 12px;
	letter-spacing: 2.5px;
	text-transform: uppercase;
}
.sun-elx-form .gform_wrapper input[type="submit"]:hover,
.sun-elx-form .gform_wrapper input[type="submit"]:focus-visible {
	background: #FFFFFF;
	border-color: #FFFFFF;
}

/* ---------------------------------------------------------------- 11. sticky CTA (mobile only)
   Elementor's own hide_desktop / hide_tablet keep it off >=768px; the media
   query below is the belt to that braces. Entry and exit are CSS scroll-driven
   animations, so there is no JS and no html widget on the page. Where
   scroll-driven animation is unsupported the bar is simply always visible on a
   phone, which is why .sun-elx-signup carries bottom padding on mobile. */
.sun-elx-stickycta { display: none; }

@media (max-width: 767px) {
	.sun-elx-stickycta {
		display: block;
		position: fixed;
		left: 0;
		right: 0;
		bottom: 0;
		width: 100%;
		z-index: 90;                 /* Commerce7's cart drawer is far above this */
		padding: 0 !important;
		pointer-events: none;
		background: transparent;
	}
	.sun-elx-stickycta__inner {
		pointer-events: auto;
		width: 100% !important;
		flex-direction: row !important;
		gap: 10px !important;
		align-items: center !important;
		padding: 10px 12px calc(10px + env(safe-area-inset-bottom, 0px)) !important;
		background: rgba(26, 34, 40, 0.97);
		border-top: 1px solid rgba(185, 141, 88, 0.55);
		backdrop-filter: saturate(140%) blur(6px);
	}
	.sun-elx-stickycta .sun-elx-btn { flex: 1 1 auto; width: auto !important; }
	.sun-elx-stickycta .sun-elx-btn--ghost { flex: 0 0 auto; }
	.sun-elx-stickycta .elementor-button {
		width: 100%;
		min-height: 46px;
		padding: 0 16px;
		font-size: 11px;
		letter-spacing: 1.8px;
	}
	.sun-elx-signup { padding-bottom: 132px; }
}

/* `visibility` does not interpolate: with fill-mode both, progress 0 holds `hidden` and any
   progress above 0 is `visible`. That makes the retracted bar unreachable by keyboard instead
   of being an invisible but focusable control at the top and the bottom of the page. */
@keyframes sun-elx-cta-enter {
	from { transform: translateY(118%); visibility: hidden; }
	to   { transform: translateY(0); visibility: visible; }
}
/* No `from` keyframe on the exit: the implicit start is the element's underlying value, so the
   inner bar keeps INHERITING visibility from the wrapper. Writing `visibility: visible` here
   would override the wrapper's `hidden` at the top of the page and leave a focusable but
   invisible control in the tab order. */
@keyframes sun-elx-cta-exit {
	to { transform: translateY(130%); visibility: hidden; }
}

@media (max-width: 767px) {
	@supports (animation-timeline: scroll(root block)) {
		.sun-elx-stickycta {
			transform: translateY(118%);
			animation: sun-elx-cta-enter linear both;
			animation-timeline: scroll(root block);
			animation-range: 360px 560px;
		}
	}
	@supports (timeline-scope: --elx-signup) {
		body:has(.sun-elx-stickycta) { timeline-scope: --elx-signup; }
		.sun-elx-signup { view-timeline-name: --elx-signup; view-timeline-axis: block; }
		.sun-elx-stickycta__inner {
			animation: sun-elx-cta-exit linear both;
			animation-timeline: --elx-signup;
			animation-range: entry 22% entry 58%;
		}
		/* measured: the bar is fully retracted before the form is reachable, so the
		   132px safety gutter above is not needed when the timeline is supported. */
		.sun-elx-signup { padding-bottom: 26px; }
	}
}

/* ---------------------------------------------------------------- responsive */
@media (max-width: 1024px) {
	/* a boxed container renders <div class="e-con e-con-boxed"><div class="e-con-inner">…;
	   the flex row is on .e-con-inner, so both have to be addressed or the copy column
	   collapses to ~20px between 768 and 1024. */
	.sun-elx-occasion__inner,
	.sun-elx-occasion__inner > .e-con-inner {
		flex-direction: column !important;
		align-items: stretch !important;
		gap: 34px;
	}
	.sun-elx-occasion__copy { flex: 0 0 auto !important; width: 100% !important; }
	.sun-elx-occasion__img { flex: 0 0 auto !important; width: 100% !important; }
	.sun-elx-occasion__img img { aspect-ratio: 16 / 10; }
	/* hero stacks: the film as a full-width band on top (16:9, the whole desktop frame), copy below */
	.sun-elx-hero.sun-elx-hero { flex-direction: column !important; min-height: 0; }
	.sun-elx-hero__media.sun-elx-hero__media {
		order: -1;
		flex: 0 0 auto !important;
		width: 100% !important;
		min-height: 0;
		aspect-ratio: 16 / 9;
	}
	.sun-elx-hero__copy.sun-elx-hero__copy {
		flex: 0 0 auto !important;
		width: 100% !important;
		padding: 48px 40px 56px !important;
	}
	.sun-elx-inside__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.sun-elx-inside__item:nth-child(odd) { padding-right: 20px !important; }
	.sun-elx-inside__item:nth-child(even) { padding-left: 20px !important; }
}

@media (max-width: 767px) {
	/* Elementor's default 20px container gap was costing ~640 px of blank
	   vertical space across this page on a phone. 8px here is the single
	   biggest height saving in the section. */
	.sun-elx-hero__copy,
	.sun-elx-occasion__copy,
	.sun-elx-what__inner > .e-con-inner,
	.sun-elx-inside__inner > .e-con-inner,
	.sun-elx-serves__inner > .e-con-inner,
	.sun-elx-ritual__inner > .e-con-inner,
	.sun-elx-why__inner > .e-con-inner,
	.sun-elx-faq__inner > .e-con-inner,
	.sun-elx-where__inner > .e-con-inner,
	.sun-elx-signup__inner > .e-con-inner,
	.sun-elx-serve { gap: 8px !important; }
	.sun-elx-ritual__step > .e-con { gap: 4px !important; }

	/* Phone cut of the film (9:16) shown as a square band, so the primary button stays on the
	   first screen (bottom at ~790px on a 390x844 phone; 4:5 pushed it to 886). The can sits low
	   in the frame, so the crop is anchored at 75% to keep the whole can in view through the loop. */
	.sun-elx-hero__media.sun-elx-hero__media { aspect-ratio: 1 / 1; }
	.sun-elx-hero__media .sun-hero-video { --sun-hero-focus: 50% 75%; }
	.sun-elx-hero__copy.sun-elx-hero__copy { padding: 28px 22px 36px !important; }
	.sun-hero-video__toggle { right: 12px; bottom: 12px; }
	.sun-elx-hero__title .elementor-heading-title { margin: 4px 0 6px; font-size: 38px !important; }
	.sun-elx-hero__cta { width: 100% !important; gap: 10px !important; }
	.sun-elx-hero__cta .sun-elx-btn,
	.sun-elx-hero__cta .elementor-button { width: 100%; justify-content: center; }
	.sun-elx-hero__cta .elementor-button { min-height: 48px; }
	.sun-elx-hero__lede p { margin-bottom: 12px; font-size: 16.5px; line-height: 1.45; }
	.sun-elx-hero__note p { margin-top: 10px; font-size: 13px; }
	.sun-elx-hero__scroll p { margin-top: 2px; }

	.sun-elx-occasion,
	.sun-elx-what,
	.sun-elx-inside,
	.sun-elx-serves,
	.sun-elx-ritual,
	.sun-elx-why,
	.sun-elx-faq,
	.sun-elx-where { padding-block: 34px; }
	.sun-elx-signup { padding-top: 40px; }

	.sun-elx-h2 .elementor-heading-title { margin: 2px 0 6px; font-size: 27px !important; }
	.sun-elx-body p { margin-bottom: 10px; font-size: 16px; line-height: 1.55; }
	.sun-elx-limit p { margin-top: 12px; font-size: 14px; line-height: 1.5; }

	.sun-elx-occasion__inner,
	.sun-elx-occasion__inner > .e-con-inner { gap: 18px !important; }
	.sun-elx-occasion .sun-elx-body p { font-size: 15.5px; line-height: 1.52; }
	/* phones: a square crop of the 4:5 photo, the glass in its lower middle (computed, not guessed: the
	   glass spans 33-91% of the frame's height at 75%) */
	.sun-elx-occasion__img img { aspect-ratio: 1 / 1; object-position: 50% 75%; }

	/* what it is: accordion mode, tighter rows */
	.sun-elx-what__tabs { margin-top: 14px; }
	.sun-elx-what__tabs .e-n-tab-title { padding: 12px 0; position: relative; }
	/* accordion mode has no built-in open/close affordance; add a decorative one */
	.sun-elx-what__tabs .e-n-tab-title::after {
		content: "+";
		margin-left: auto;
		padding-left: 12px;
		color: var(--sun-gold-ornament, #B98D58);
		font-size: 15px;
		line-height: 1;
	}
	.sun-elx-what__tabs .e-n-tab-title[aria-selected="true"]::after,
	.sun-elx-what__tabs .e-n-tab-title[aria-expanded="true"]::after { content: "\2013"; }
	.sun-elx-what__tabs .e-n-tabs-content > .e-con { padding: 10px 0 14px; }
	.sun-elx-what__tabs .sun-elx-body p { font-size: 15.5px; line-height: 1.5; }
	.sun-elx-designed-wrap { margin-top: 20px !important; }
	p.sun-elx-designed { padding: 12px 18px; }

	/* inside: two tight columns rather than five stacked rows */
	.sun-elx-inside__inner .sun-elx-body--center p { font-size: 15px; line-height: 1.45; }
	.sun-elx-inside__grid { margin-top: 14px; }
	.sun-elx-inside__item { padding: 11px 0 !important; }
	.sun-elx-inside__item:nth-child(odd) { padding-right: 12px !important; }
	.sun-elx-inside__item:nth-child(even) { padding-left: 12px !important; }
	.sun-elx-inside__name .elementor-heading-title { margin-bottom: 3px; font-size: 17px !important; }
	.sun-elx-inside__role p { font-size: 13.5px; line-height: 1.42; }

	/* serves: one slide with a peek of the next */
	.sun-elx-serves__row { margin-top: 14px; }
	.sun-elx-serve__img { margin-bottom: 10px !important; }
	.sun-elx-serve__img img { aspect-ratio: 5 / 4; }
	.sun-elx-serve__title .elementor-heading-title { font-size: 21px !important; }
	.sun-elx-serve__body p { font-size: 14.5px; line-height: 1.45; }
	.sun-elx-serves__row .elementor-swiper-button { width: 34px; height: 34px; }

	.sun-elx-ritual__steps { margin-top: 14px; }
	.sun-elx-ritual__step { padding: 11px 0 !important; gap: 14px !important; }
	.sun-elx-ritual__title .elementor-heading-title { margin-bottom: 3px; font-size: 18px !important; }
	.sun-elx-ritual__body p { font-size: 14.5px; line-height: 1.45; }

	/* why now: two columns, not two stacked blocks */
	.sun-elx-stats { flex-direction: row !important; gap: 18px !important; margin-top: 14px; }
	.sun-elx-stat__num .elementor-heading-title { font-size: 44px !important; }
	.sun-elx-stat__body p { margin-top: 4px; font-size: 13px; line-height: 1.38; }
	p.sun-elx-cite,
	.sun-elx-cite-wrap p { margin: 12px 0 0; font-size: 12px; }
	.sun-elx-why .sun-elx-body--center p { font-size: 15px; }

	.sun-elx-faq__acc { margin-top: 14px; }
	.sun-elx-faq__acc .e-n-accordion-item-title-text { font-size: 18px; }
	.sun-elx-faq__acc .sun-elx-body p { font-size: 15px; line-height: 1.5; }

	.sun-elx-where .sun-elx-body p { font-size: 15.5px; }
	.sun-elx-where__list { margin: 12px 0 14px; }
	.sun-elx-where__list .elementor-icon-list-items { gap: 6px 20px; }
	.sun-elx-where__list .elementor-icon-list-text { font-size: 15px; }

	.sun-elx-form { margin-top: 12px; }
}

@media (prefers-reduced-motion: reduce) {
	.sun-elx-serve__img img { transition: none; }
	.sun-elx-serve:hover .sun-elx-serve__img img { transform: none; }
	.sun-elx-btn .elementor-button { transition: none; }
	.sun-elx-what__tabs .e-n-tab-title { transition: none; }
	/* Swiper writes transition-duration inline; !important is the only way to beat it. */
	.sun-elx-serves__row .swiper-wrapper,
	.sun-elx-serves__row .swiper-slide { transition-duration: 0ms !important; }
	.sun-elx-faq__acc .e-n-accordion-item,
	.sun-elx-faq__acc .e-n-accordion-item-title,
	.sun-elx-what__tabs .e-n-tabs-content > .e-con { transition: none !important; }
}

/* ==========================================================================
   50. WINE CLUB page (/club/, page 994545)
   --------------------------------------------------------------------------
   Owner, 2026-10-08: "The club page needs improvement using better layout,
   ux/ui and improved copy. Use the elementor process. Make no mistakes this
   time."
   Design: .copy-migration/elementor/club-page-build.py -> designs/layout/
   club.json. The page was a bare Commerce7 mount with one paragraph above it;
   it is now the §47 pattern — C7 keeps the mount ([c7wp type="default"] in a
   Shortcode widget) and draws the six club cards and the whole signup flow,
   and Elementor sections are built around it. Nothing here re-implements any
   part of Commerce7.
   Namespace: `.sun-club-*`, on the containers themselves. There is NO slug
   body class on this install (WordPress emits page-id-994545 /
   elementor-page-994545), so `.page-club .sun-club-x` would match nothing —
   the same trap that silently disabled §49 once.
   Rules that won:
   - One h1. Commerce7 paints its own <h1 class="c7-h1">Wine Club</h1> into
     the mount client-side; it is a duplicate of our hero title, so it is
     `display: none` here. display:none removes it from the accessibility
     tree outright, which aria-hidden alone would not do while leaving a
     second visible title on the page.
   - The eyebrow gold is #8A6436, not --sun-gold-text (#906A3C). Measured:
     #906A3C on cream #F4F1EA is 4.32:1, under AA for 12 px text; #8A6436 is
     4.71:1 on cream and 5.31:1 on white. On the photographic hero and the
     ink band the ornament gold #B98D58 is used instead (4.64:1 on #242E35).
   - CLS: the mount is reserved ONLY while Commerce7 is still loading, using
     §47b's load-state selector. C7 writes min-height:100vh then 0px on
     #c7-content and paints ~370 ms later. An unconditional reserve would
     leave a tall blank hole if the club list ever came back empty or errored.
     Heights are measured, not guessed — see the numbers at that rule.
   - The club cards get a white surface, a hairline border and a full-width
     ink button pinned to the bottom of the card, so six cards of unequal
     copy length read as one row of equal choices. Pure cosmetics: if C7
     renames a class the rule stops applying and C7's own layout returns.
   TO REVERT (all four steps; run and verified end to end on 2026-10-08):
     1. delete this section from style.css
     2. bin/elementor-json revert 994545
     3. wp post meta delete 994545 _wp_page_template
        wp post meta delete 994545 _elementor_edit_mode
        — the page had neither meta before; `revert` restores only
          _elementor_data / _elementor_page_settings, and it writes an EMPTY
          edit_mode back, which update_post_meta treats as "leave it alone".
     4. wp post update 994545 .copy-migration/g3-backups/post-content-994545-original-20261008.html
        — Elementor's own save() REWRITES post_content with a flat HTML copy
          of the design, so the original `<!-- wp:c7wp/default -->` block is
          not in any Elementor backup. That file is it, byte for byte (it was
          recovered from revision 997307). Without step 4 the mount still
          renders but loses its `.wp-block-c7wp-default` wrapper, which is
          what commerce7-route-intro.php and the old per-page CLS reserve key
          off. The same is true of /reservation/ and /collection/.
     then wp elementor flush-css
   ========================================================================== */

.sun-club-hero,
.sun-club-how,
.sun-club-tiers,
.sun-club-choose,
.sun-club-good,
.sun-club-close,
.sun-club-help {
	--sun-club-gold: #8A6436;
	--sun-club-gold-dark-ground: #B98D58;
	--sun-club-gold-photo: #CBA371;
	--sun-club-ink: #242E35;
	--sun-club-cream: #F4F1EA;
	--sun-club-line: #DEDDD9;
	--sun-club-body: #3D4547;
}

/* --- shared type --- */
.sun-club-eyebrow .elementor-heading-title {
	margin: 0;
	font-family: Alata, sans-serif !important;
	font-size: 12px !important;
	font-weight: 400 !important;
	line-height: 1.4 !important;
	letter-spacing: 3px !important;
	text-transform: uppercase;
	color: var(--sun-club-gold, #8A6436) !important;
}
.sun-club-h2 .elementor-heading-title {
	margin: 10px 0 16px;
	font-family: "Cormorant Infant", serif;
	font-size: clamp(30px, 3.4vw, 46px) !important;
	line-height: 1.08 !important;
	color: var(--sun-club-ink, #242E35);
}
.sun-club-h2--sm .elementor-heading-title { font-size: clamp(26px, 2.6vw, 34px) !important; }
.sun-club-lede p,
.sun-club-body p {
	margin: 0 0 16px;
	font-size: 17px;
	line-height: 1.6;
	color: var(--sun-club-body, #3D4547);
}
.sun-club-lede p { max-width: 62ch; }

/* --- shared buttons: square, Alata, uppercase, 52 px --- */
.sun-club-btn .elementor-button {
	min-height: 52px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	padding: 0 30px;
	border-radius: 0;
	border: 1px solid transparent;
	font-family: Alata, sans-serif;
	font-size: 12px;
	letter-spacing: 2.5px;
	text-transform: uppercase;
	transition: background-color 0.2s ease, color 0.2s ease, border-color 0.2s ease;
}
.sun-club-btn--primary .elementor-button {
	background: var(--sun-club-gold-dark-ground, #B98D58);
	border-color: var(--sun-club-gold-dark-ground, #B98D58);
	color: #242E35 !important;
}
.sun-club-btn--primary .elementor-button:hover,
.sun-club-btn--primary .elementor-button:focus-visible {
	background: #FFFFFF;
	border-color: #FFFFFF;
}
.sun-club-btn--ghost .elementor-button {
	background: transparent;
	border-color: rgba(255, 255, 255, 0.8);
	color: #FFFFFF !important;
}
.sun-club-btn--ghost .elementor-button:hover,
.sun-club-btn--ghost .elementor-button:focus-visible {
	background: #FFFFFF;
	border-color: #FFFFFF;
	color: #242E35 !important;
}
.sun-club-btn--dark .elementor-button {
	background: var(--sun-club-ink, #242E35);
	border-color: var(--sun-club-ink, #242E35);
	color: #FFFFFF !important;
}
.sun-club-btn--dark .elementor-button:hover,
.sun-club-btn--dark .elementor-button:focus-visible {
	background: var(--sun-club-gold, #8A6436);
	border-color: var(--sun-club-gold, #8A6436);
	color: #FFFFFF !important;
}
.sun-club-hero .sun-club-btn .elementor-button:focus-visible { outline: 2px solid #FFFFFF; outline-offset: 3px; }
.sun-club-btn .elementor-button:focus-visible { outline: 2px solid var(--sun-club-ink, #242E35); outline-offset: 3px; }

/* ---------------------------------------------------------------- hero */
.sun-club-hero {
	position: relative;
	justify-content: flex-end !important;
	min-height: clamp(420px, 60vh, 600px);
	padding-block: 128px 60px !important;
	overflow: hidden;
	isolation: isolate;
}
/* The scrim is two gradients, not one, and it is heavy on the left where the copy sits.
   Measured off the rendered hero (PIL sample of the deployed screenshot): with the single
   vertical gradient this replaces, the worst-case pixel behind the eyebrow was rgb(83,89,97),
   which is 7.07:1 against white but only 2.36:1 against the ornament gold #B98D58 — a fail.
   #B98D58 tops out at 4.64:1 on SOLID ink, so no scrim short of opaque can carry it over a
   photograph; the hero therefore uses a lighter photographic gold. With the pair below the
   same pixel measures ~rgb(46,55,62): 12.1:1 for white and 5.2:1 for #CBA371. */
.sun-club-hero::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	background:
		linear-gradient(to right, rgba(36, 46, 53, 0.93) 0%, rgba(36, 46, 53, 0.86) 45%, rgba(36, 46, 53, 0.5) 78%, rgba(36, 46, 53, 0.32) 100%),
		linear-gradient(to top, rgba(36, 46, 53, 0.5) 0%, rgba(36, 46, 53, 0.28) 60%, rgba(36, 46, 53, 0.22) 100%);
}
.sun-club-hero .sun-club-eyebrow .elementor-heading-title { color: var(--sun-club-gold-photo, #CBA371) !important; }
.sun-club-hero__title .elementor-heading-title {
	max-width: 18ch;
	margin: 10px 0 14px;
	color: #FFFFFF !important;
	font-family: "Cormorant Infant", serif;
	font-size: clamp(40px, 5.6vw, 72px) !important;
	line-height: 1.03 !important;
}
.sun-club-hero__lede p {
	max-width: 56ch;
	margin: 0 0 26px;
	color: rgba(255, 255, 255, 0.93) !important;
	font-size: 19px;
	line-height: 1.5;
}
.sun-club-hero__cta { gap: 14px !important; flex-wrap: wrap; width: auto !important; margin-bottom: 30px; }
.sun-club-hero__facts .elementor-icon-list-items { gap: 10px 28px; flex-wrap: wrap; }
.sun-club-hero__facts .elementor-icon-list-item { margin: 0 !important; padding: 0 !important; }
.sun-club-hero__facts .elementor-icon-list-item::after { display: none !important; }
.sun-club-hero__facts .elementor-icon-list-text {
	color: #FFFFFF !important;
	font-family: Alata, sans-serif;
	font-size: 12px;
	letter-spacing: 1.6px;
	text-transform: uppercase;
}
.sun-club-hero__facts .elementor-icon-list-icon i,
.sun-club-hero__facts .elementor-icon-list-icon svg {
	color: var(--sun-club-gold-photo, #CBA371) !important;
	fill: var(--sun-club-gold-photo, #CBA371) !important;
	font-size: 14px;
	width: 14px;
}
/* A fixed icon column: if a glyph ever goes missing the text column must not jump sideways
   (FA6 names render nothing on this FA 5.15.3 install and did exactly that on first deploy). */
.sun-club-hero__facts .elementor-icon-list-icon,
.sun-club-good__list .elementor-icon-list-icon,
.sun-club-help__list .elementor-icon-list-icon { width: 20px; min-width: 20px; text-align: left; }

/* ---------------------------------------------------------------- how it works */
.sun-club-how { padding-block: 84px; background: #FFFFFF; }
.sun-club-steps { gap: 28px !important; margin-top: 32px; align-items: stretch !important; }
.sun-club-step {
	flex: 1 1 calc(25% - 21px) !important;
	width: auto !important;
	min-width: 0;
	padding: 26px 0 0 !important;
	border-top: 2px solid var(--sun-club-gold, #8A6436);
}
.sun-club-step__num .elementor-heading-title {
	margin: 0 0 10px;
	font-family: Alata, sans-serif !important;
	font-size: 12px !important;
	letter-spacing: 2.5px !important;
	color: var(--sun-club-gold, #8A6436) !important;
}
.sun-club-step__title .elementor-heading-title {
	margin: 0 0 8px;
	font-family: "Cormorant Infant", serif;
	font-size: 24px !important;
	line-height: 1.2 !important;
	color: var(--sun-club-ink, #242E35);
}
.sun-club-step__body p { margin: 0; font-size: 16px; line-height: 1.6; color: var(--sun-club-body, #3D4547); }

/* ---------------------------------------------------------------- the three tiers */
.sun-club-tiers { padding-block: 84px; background: var(--sun-club-cream, #F4F1EA); }
.sun-club-tiers__row { gap: 24px !important; margin-top: 34px; align-items: stretch !important; }
.sun-club-tier {
	flex: 1 1 calc(33.333% - 16px) !important;
	width: auto !important;
	min-width: 0;
	padding: 32px 28px !important;
	background: #FFFFFF;
	border: 1px solid var(--sun-club-line, #DEDDD9);
}
.sun-club-tier__name .elementor-heading-title {
	margin: 0 0 14px;
	font-family: "Cormorant Infant", serif;
	font-size: 30px !important;
	line-height: 1.1 !important;
	color: var(--sun-club-ink, #242E35);
}
.sun-club-tier__lead .elementor-heading-title {
	margin: 0 0 6px;
	font-family: Alata, sans-serif !important;
	font-size: 15px !important;
	line-height: 1.4 !important;
	letter-spacing: 0.4px !important;
	color: var(--sun-club-ink, #242E35) !important;
}
.sun-club-tier__detail p { margin: 0 0 16px; font-size: 16px; line-height: 1.55; color: var(--sun-club-body, #3D4547); }
.sun-club-tier__note .elementor-heading-title {
	margin: 0;
	padding-top: 14px;
	border-top: 1px solid var(--sun-club-line, #DEDDD9);
	font-family: Alata, sans-serif !important;
	font-size: 11px !important;
	letter-spacing: 2px !important;
	text-transform: uppercase;
	color: var(--sun-club-gold, #8A6436) !important;
}
.sun-club-tiers__pricing p { margin: 30px 0 18px; font-size: 16px; color: var(--sun-club-body, #3D4547); }

/* ---------------------------------------------------------------- choose: the Commerce7 mount */
.sun-club-choose { padding-block: 84px; background: #FFFFFF; }
#choose { scroll-margin-top: 110px; }
.sun-club-choose .sun-club-lede p { margin-bottom: 30px; }

/* C7's own h1 inside the mount duplicates the hero title: out of sight AND out of the
   accessibility tree, so the page keeps exactly one h1 either way it is counted. */
.sun-club-mount #c7-content > .c7-content > h1.c7-h1 { display: none !important; }

.sun-club-mount .c7-club-list {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 24px;
	margin: 0;
}
.sun-club-mount .c7-club {
	display: flex;
	margin: 0 !important;
	padding: 0 !important;
	background: #FFFFFF;
	border: 1px solid var(--sun-club-line, #DEDDD9);
	box-shadow: 0 18px 40px -30px rgba(36, 46, 53, 0.35);
}
.sun-club-mount .c7-club__details {
	display: flex;
	flex-direction: column;
	width: 100%;
	padding: 30px 28px;
}
.sun-club-mount .c7-club h2.c7-h2 {
	margin: 0 0 14px;
	font-family: "Cormorant Infant", serif;
	font-size: 28px;
	line-height: 1.12;
	color: var(--sun-club-ink, #242E35);
	text-transform: none;
	letter-spacing: 0;
}
.sun-club-mount .c7-club__details__content { flex: 1 1 auto; margin-bottom: 22px; }
.sun-club-mount .c7-club__details__content p {
	margin: 0 0 12px;
	font-size: 16px;
	line-height: 1.55;
	color: var(--sun-club-body, #3D4547);
}
.sun-club-mount .c7-club__details__content p:first-child {
	font-family: Alata, sans-serif;
	font-size: 14px;
	letter-spacing: 0.4px;
	color: var(--sun-club-ink, #242E35);
}
.sun-club-mount .c7-club__details__content p strong { font-weight: 400; }
.sun-club-mount .c7-club .c7-btn--primary {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 100%;
	min-height: 52px;
	margin: 0 !important;
	border-radius: 0 !important;
	background: var(--sun-club-ink, #242E35) !important;
	border: 1px solid var(--sun-club-ink, #242E35) !important;
	color: #FFFFFF !important;
	font-family: Alata, sans-serif;
	font-size: 12px;
	letter-spacing: 2.5px;
	text-transform: uppercase;
	cursor: pointer;
	transition: background-color 0.2s ease, border-color 0.2s ease;
}
.sun-club-mount .c7-club .c7-btn--primary:hover {
	background: var(--sun-club-gold, #8A6436) !important;
	border-color: var(--sun-club-gold, #8A6436) !important;
}
.sun-club-mount .c7-club .c7-btn--primary:focus-visible {
	outline: 2px solid var(--sun-club-ink, #242E35);
	outline-offset: 3px;
}

/* CLS: hold space ONLY while C7 is still loading. Selector is §47b's — :empty, the
   loading block, or the empty <section class="c7-content"> C7 mounts first. Measured
   rendered heights of the six-card list in THIS layout, measured in Chromium after C7
   painted (bin-free probe, scratch/measure2.py), one per column count:
       1440 996 · 1200 1040 | 1024 1250 · 900 1250 | 767 2139 · 600 2288 · 480 2436
       · 390 3145 · 360 3329
   so the four bands below are three columns, two columns, one wide column and one narrow
   column. Each reservation sits at or just under the shortest real height in its band, so
   releasing it is a small settle and never a tall collapse. */
.sun-club-mount #c7-content:is(:empty, :has(> .c7-loading--block), :has(> section.c7-content:only-child:not(:has(*)))) { min-height: 1000px !important; }
@media (max-width: 1024px) {
	.sun-club-mount #c7-content:is(:empty, :has(> .c7-loading--block), :has(> section.c7-content:only-child:not(:has(*)))) { min-height: 1230px !important; }
}
@media (max-width: 767px) {
	.sun-club-mount #c7-content:is(:empty, :has(> .c7-loading--block), :has(> section.c7-content:only-child:not(:has(*)))) { min-height: 2130px !important; }
}
@media (max-width: 480px) {
	.sun-club-mount #c7-content:is(:empty, :has(> .c7-loading--block), :has(> section.c7-content:only-child:not(:has(*)))) { min-height: 2420px !important; }
}

/* ---------------------------------------------------------------- good to know */
.sun-club-good { padding-block: 84px; background: var(--sun-club-ink, #242E35); }
.sun-club-good .sun-club-eyebrow .elementor-heading-title { color: var(--sun-club-gold-dark-ground, #B98D58) !important; }
.sun-club-good .sun-club-h2 .elementor-heading-title { color: #FFFFFF !important; }
.sun-club-good__list { margin-top: 26px; }
.sun-club-good__list .elementor-icon-list-items { display: flex; flex-direction: column; gap: 16px; }
.sun-club-good__list .elementor-icon-list-item { margin: 0 !important; align-items: flex-start; }
.sun-club-good__list .elementor-icon-list-item::after { display: none !important; }
.sun-club-good__list .elementor-icon-list-icon { padding-top: 4px; }
.sun-club-good__list .elementor-icon-list-icon i,
.sun-club-good__list .elementor-icon-list-icon svg {
	color: var(--sun-club-gold-dark-ground, #B98D58) !important;
	fill: var(--sun-club-gold-dark-ground, #B98D58) !important;
	font-size: 16px;
	width: 18px;
}
.sun-club-good__list .elementor-icon-list-text {
	color: rgba(255, 255, 255, 0.92) !important;
	font-size: 17px;
	line-height: 1.55;
}
.sun-club-legal p {
	max-width: 70ch;
	margin: 28px 0 0;
	padding-top: 22px;
	border-top: 1px solid rgba(255, 255, 255, 0.22);
	color: rgba(255, 255, 255, 0.78) !important;
	font-size: 14px;
	line-height: 1.6;
}

/* ---------------------------------------------------------------- close: taste first */
.sun-club-close { padding-block: 84px; background: #FFFFFF; }
.sun-club-close__inner > .e-con-inner {
	display: flex;
	flex-direction: row;
	align-items: center;
	gap: 56px;
}
.sun-club-close__copy { flex: 1 1 0 !important; width: auto !important; min-width: 0; padding: 0 !important; }
.sun-club-close__img { flex: 0 0 44% !important; width: 44% !important; margin: 0 !important; }
.sun-club-close__img img { display: block; width: 100%; aspect-ratio: 4 / 3; object-fit: cover; }

/* ---------------------------------------------------------------- help strip */
.sun-club-help { padding-block: 64px 80px; background: var(--sun-club-cream, #F4F1EA); }
.sun-club-help__inner { text-align: center; }
.sun-club-help .sun-club-body p { margin-inline: auto; max-width: 56ch; }
.sun-club-help__list { margin-top: 6px; }
.sun-club-help__list .elementor-icon-list-items { justify-content: center; gap: 10px 34px; flex-wrap: wrap; }
.sun-club-help__list .elementor-icon-list-item { margin: 0 !important; }
.sun-club-help__list .elementor-icon-list-item::after { display: none !important; }
.sun-club-help__list .elementor-icon-list-icon i,
.sun-club-help__list .elementor-icon-list-icon svg {
	color: var(--sun-club-gold, #8A6436) !important;
	fill: var(--sun-club-gold, #8A6436) !important;
	font-size: 15px;
	width: 16px;
}
.sun-club-help__list .elementor-icon-list-text { font-size: 16px; color: var(--sun-club-body, #3D4547); }
.sun-club-help__list a:focus-visible { outline: 2px solid var(--sun-club-ink, #242E35); outline-offset: 3px; }

/* ---------------------------------------------------------------- responsive */
@media (max-width: 1024px) {
	.sun-club-step { flex: 1 1 calc(50% - 14px) !important; }
	/* max-width as well as flex-basis: with three tiers in a two-up row the odd card
	   would otherwise stretch to the full width and the row would read as 2 + 1 banner. */
	.sun-club-tier { flex: 0 1 calc(50% - 12px) !important; max-width: calc(50% - 12px); }
	.sun-club-mount .c7-club-list { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.sun-club-close__inner > .e-con-inner { flex-direction: column; gap: 36px; align-items: stretch; }
	.sun-club-close__img { flex: 1 1 auto !important; width: 100% !important; }
	.sun-club-close__img img { aspect-ratio: 16 / 9; }
}
@media (max-width: 767px) {
	.sun-club-hero { min-height: 480px; padding-block: 108px 48px !important; }
	.sun-club-hero::before {
		background: linear-gradient(to top, rgba(36, 46, 53, 0.95) 0%, rgba(36, 46, 53, 0.85) 50%, rgba(36, 46, 53, 0.5) 100%);
	}
	.sun-club-hero__cta { width: 100% !important; }
	.sun-club-hero__cta .elementor-button { width: 100%; }
	.sun-club-how,
	.sun-club-tiers,
	.sun-club-choose,
	.sun-club-good,
	.sun-club-close { padding-block: 60px; }
	.sun-club-help { padding-block: 52px 64px; }
	.sun-club-step,
	.sun-club-tier { flex: 1 1 100% !important; }
	/* the two-up max-width above is also in scope at this width: release it */
	.sun-club-tier { max-width: none; }
	.sun-club-mount .c7-club-list { grid-template-columns: minmax(0, 1fr); }
	.sun-club-tiers__pricing .elementor-button,
	.sun-club-tiers .sun-club-btn .elementor-button,
	.sun-club-close .sun-club-btn .elementor-button { width: 100%; }
	#choose { scroll-margin-top: 90px; }
}
@media (prefers-reduced-motion: reduce) {
	.sun-club-btn .elementor-button,
	.sun-club-mount .c7-club .c7-btn--primary { transition: none; }
}

/* ==========================================================================
   51. MEMBERS CLUB page (/membership/, page 364)
   --------------------------------------------------------------------------
   Owner, 2026-10-08: "Redesign and rewrite the Members Club page — better
   layout, better ux/ui and better copy. Use the elementor process. Fix the
   duplicated-heading bug, remove the unverifiable superlative claim, and
   resolve the page's relationship to the separate /club/ signup page."
   Design: .copy-migration/elementor/membership-page-build.py ->
   designs/layout/membership.json, imported to 364.

   WHAT THIS PAGE IS, NEXT TO /club/
   364 /membership/ is NOT an orphan: the top-level "Wine Club" item in all
   four menus points here, and it is the only place on the site where club
   PRICING exists. 994545 /club/ is the Commerce7 mount — tier selection and
   signup — and carries no prices at all; it links here three times for them.
   So /membership/ owns cost, contents, benefits and terms; every CTA on it
   routes to /club/ to choose a tier and join. Nothing here re-implements
   Commerce7.

   Namespace: `.sun-mem-*`, set on the containers themselves. There is NO slug
   body class on this install — WordPress emits page-id-364 /
   elementor-page-364, so `.page-membership .sun-mem-x` would match nothing.
   The namespace also keeps this section clear of .sun-club-*, .sun-elx-*,
   .sun-res-* and .sun-col-*.

   Rules that won:
   - NO animated headlines. The old page used four `vamtam-animated-headline`
     widgets; those print one <span> per letter and the
     sunstone-readable-headlines mu-plugin adds a visually-hidden <span> with
     the whole sentence, so every text extractor read each heading twice
     ("MembershipMembership"). Plain `heading` widgets only on this page.
   - Gold on cream is #85602F (5.02:1), not #906A3C (4.31:1), and never on a
     photograph. On the photographic hero and the ink closing band the eyebrow
     is cream #F4F1EA, because gold over a photo fails even under a gradient.
   - The three tier cards are ONE set of cards that works at every width.
     The old page shipped a Happy Addons comparison table for desktop AND a
     second set of three cards for mobile, which printed the tier names six
     times and duplicated every price in the DOM.
   - Cards are a flex column with `margin-top:auto` on the button, so three
     cards of unequal copy length end with their buttons on one line.
   - Shipment contents come from the Commerce7 /v1/club/for-web feed, which
     contradicts the old page on Founder's (API: 6 Estate or Reserve Wines;
     old page: 6 Premium AND 6 Estate or Reserve). API wins; conflict reported.
   - No commitment and no cancellation wording anywhere on this page. Claims
     Register C5 is a live three-way contradiction between this page's body
     copy, its own tier cards and Commerce7 checkout. Both sides stay out
     until the owner rules.
   - Square corners throughout; no border-radius. Alata for eyebrows, buttons
     and the spec keys; the kit's Cormorant Infant for headings.

   Desktop layout pass, 2026-10-08 (owner: "fix the desktop layout"):
   - Elementor puts flex direction, gap and alignment on `.e-con-inner` of a
     boxed container and sizes every child with `.e-con.e-flex { flex: var() }`
     (0,2,0) and `width: var(--width)` = 100%. So every row rule here targets
     `.x.e-con > .e-con-inner` and every column sizes itself with a doubled
     class; widget max-widths lose to `.e-con.e-con > .e-con-inner >
     .elementor-widget` (0,4,0) and need !important.
   - Clubs: three equal cards in one row from 1025px (flex 1 1 0, nowrap);
     2 + 1 centred on tablet; stacked on phones.
   - Hero: copy held in the left ~55% (lede 56ch); the flat 58% overlay is
     replaced by a left-to-right ink scrim that stays >= .70 alpha under every
     line of copy, so white text is >= 6.8:1 even over a pure-white photo.
   - Photo crops (arrives 4:5, gift 5:4, shared 4:3, band 4:5) use
     object-fit: cover with `object-position: var(--sun-mem-focal, 50% 50%)`;
     set --sun-mem-focal inline on the section, column or band item to move
     the crop.
   - New `.sun-mem-band`: a full-bleed row of three 4:5 photos with 3px
     gutters; a scroll-snap row on phones.

   TO REVERT:
     1. delete this section from style.css
     2. bash bin/elementor-json revert 364
     3. wp post meta update 364 _wp_page_template default
        (the page was on `default`; this build moves it to
         elementor_header_footer to match /club/ and /reservation/)
   ========================================================================== */

.sun-mem-hero,
.sun-mem-arrives,
.sun-mem-clubs,
.sun-mem-band,
.sun-mem-shared,
.sun-mem-benefits,
.sun-mem-join,
.sun-mem-gift,
.sun-mem-cta {
	--mem-ink: #242E35;
	--mem-cream: #F4F1EA;
	--mem-paper: #FFFFFF;
	--mem-gold: #B98D58;
	--mem-gold-text: #85602F;
	--mem-line: #DCD6CA;
	--mem-muted: #5A646B;
	--mem-scrim: 20, 24, 28;
}

/* --- shared type ------------------------------------------------------- */

.sun-mem-eyebrow .elementor-heading-title {
	font-family: "Alata", sans-serif;
	font-size: 12px;
	font-weight: 400;
	line-height: 1.4;
	letter-spacing: 0.18em;
	text-transform: uppercase;
	color: var(--mem-gold-text);
	margin: 0 0 14px;
}

.sun-mem-eyebrow--light .elementor-heading-title {
	color: var(--mem-cream);
}

/* eyebrows sit centred wherever their h2 is centred */
.sun-mem-clubs .sun-mem-eyebrow .elementor-heading-title,
.sun-mem-benefits .sun-mem-eyebrow .elementor-heading-title,
.sun-mem-band .sun-mem-eyebrow .elementor-heading-title,
.sun-mem-cta .sun-mem-eyebrow .elementor-heading-title {
	text-align: center;
}

.sun-mem-h2 .elementor-heading-title {
	font-size: clamp(30px, 4.2vw, 48px);
	line-height: 1.12;
	color: var(--mem-ink);
	margin: 0 0 18px;
	text-wrap: balance;
}

.sun-mem-h2--light .elementor-heading-title {
	color: var(--mem-cream);
}

.sun-mem-h2--center .elementor-heading-title,
.sun-mem-body--center {
	text-align: center;
}

.sun-mem-body,
.sun-mem-note,
.sun-mem-legal {
	color: var(--mem-ink);
	font-size: 17px;
	line-height: 1.65;
}

.sun-mem-body p + p {
	margin-top: 1em;
}

.sun-mem-body--sm {
	font-size: 15px;
}

.sun-mem-body--light {
	color: var(--mem-cream);
}

.sun-mem-body--narrow.elementor-widget {
	max-width: 56ch !important;
	margin-left: auto;
	margin-right: auto;
}

.sun-mem-note {
	font-size: 14px;
	line-height: 1.6;
	color: var(--mem-muted);
	max-width: 76ch;
	margin: 26px auto 0;
}

.sun-mem-note.elementor-widget {
	max-width: 76ch !important;
	margin-left: auto;
	margin-right: auto;
}

.sun-mem-legal {
	font-size: 13px;
	line-height: 1.6;
	color: var(--mem-muted);
	margin-top: 22px;
	padding-top: 18px;
	border-top: 1px solid var(--mem-line);
}

/* --- buttons ----------------------------------------------------------- */

.sun-mem-btn .elementor-button {
	font-family: "Alata", sans-serif;
	font-size: 12px;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	border-radius: 0;
	padding: 17px 30px;
	border: 1px solid transparent;
	transition: background-color .2s ease, color .2s ease, border-color .2s ease;
}

.sun-mem-btn--primary .elementor-button,
.sun-mem-btn--dark .elementor-button {
	background-color: var(--mem-ink);
	border-color: var(--mem-ink);
	color: #FFFFFF;
}

.sun-mem-btn--primary .elementor-button:hover,
.sun-mem-btn--primary .elementor-button:focus,
.sun-mem-btn--dark .elementor-button:hover,
.sun-mem-btn--dark .elementor-button:focus {
	background-color: #11181D;
	border-color: #11181D;
	color: #FFFFFF;
}

/* the hero's primary button sits on the dark scrim: cream fill reads there */
.sun-mem-hero .sun-mem-btn--primary .elementor-button {
	background-color: var(--mem-cream);
	border-color: var(--mem-cream);
	color: var(--mem-ink);
}

.sun-mem-hero .sun-mem-btn--primary .elementor-button:hover,
.sun-mem-hero .sun-mem-btn--primary .elementor-button:focus {
	background-color: #FFFFFF;
	border-color: #FFFFFF;
	color: var(--mem-ink);
}

.sun-mem-btn--ghost .elementor-button {
	background-color: transparent;
	border-color: var(--mem-cream);
	color: var(--mem-cream);
}

.sun-mem-btn--ghost .elementor-button:hover,
.sun-mem-btn--ghost .elementor-button:focus {
	background-color: var(--mem-cream);
	color: var(--mem-ink);
}

/* /membership/ ghost button also appears on a white ground (the join block) */
.sun-mem-join .sun-mem-btn--ghost .elementor-button {
	border-color: var(--mem-ink);
	color: var(--mem-ink);
}

.sun-mem-join .sun-mem-btn--ghost .elementor-button:hover,
.sun-mem-join .sun-mem-btn--ghost .elementor-button:focus {
	background-color: var(--mem-ink);
	color: #FFFFFF;
}

.sun-mem-btn--ghost-light .elementor-button {
	background-color: transparent;
	border-color: rgba(244, 241, 234, .55);
	color: var(--mem-cream);
}

.sun-mem-btn--ghost-light .elementor-button:hover,
.sun-mem-btn--ghost-light .elementor-button:focus {
	background-color: var(--mem-cream);
	border-color: var(--mem-cream);
	color: var(--mem-ink);
}

.sun-mem-btn--gold .elementor-button {
	background-color: var(--mem-gold);
	border-color: var(--mem-gold);
	color: #1B2228;
}

.sun-mem-btn--gold .elementor-button:hover,
.sun-mem-btn--gold .elementor-button:focus {
	background-color: #CCA270;
	border-color: #CCA270;
	color: #1B2228;
}

.sun-mem-btn--card .elementor-button {
	display: block;
	width: 100%;
	text-align: center;
	background-color: var(--mem-ink);
	border-color: var(--mem-ink);
	color: #FFFFFF;
}

.sun-mem-btn--card .elementor-button:hover,
.sun-mem-btn--card .elementor-button:focus {
	background-color: #11181D;
	color: #FFFFFF;
}

.sun-mem-btn--inline .elementor-button {
	background-color: transparent;
	border-color: var(--mem-ink);
	color: var(--mem-ink);
	padding: 12px 22px;
	font-size: 11px;
}

.sun-mem-btn--inline .elementor-button:hover,
.sun-mem-btn--inline .elementor-button:focus {
	background-color: var(--mem-ink);
	color: #FFFFFF;
}

/* --- shared row layout -------------------------------------------------
   Every two-column section is a boxed container: the row lives on its
   .e-con-inner. Columns size with doubled classes to beat .e-con.e-flex. */

.sun-mem-arrives__inner.e-con > .e-con-inner,
.sun-mem-shared__inner.e-con > .e-con-inner,
.sun-mem-join__inner.e-con > .e-con-inner,
.sun-mem-gift__inner.e-con > .e-con-inner {
	flex-direction: row !important;
	flex-wrap: nowrap !important;
	align-items: center !important;
	gap: 64px !important;
}

.sun-mem-arrives__copy.sun-mem-arrives__copy,
.sun-mem-arrives__media.sun-mem-arrives__media,
.sun-mem-shared__copy.sun-mem-shared__copy,
.sun-mem-shared__media.sun-mem-shared__media,
.sun-mem-join__copy.sun-mem-join__copy,
.sun-mem-gift__copy.sun-mem-gift__copy,
.sun-mem-gift__media.sun-mem-gift__media {
	flex: 1 1 0;
	width: auto;
	min-width: 0;
	--padding-top: 0px;
	--padding-right: 0px;
	--padding-bottom: 0px;
	--padding-left: 0px;
	padding: 0;
}

/* photo crops: one rule, ratio per section, focal point per page */
.sun-mem-arrives__img img,
.sun-mem-shared__img img,
.sun-mem-gift__img img,
.sun-mem-band__img img {
	display: block;
	width: 100% !important;
	max-width: none;
	height: auto !important;
	object-fit: cover;
	object-position: var(--sun-mem-focal, 50% 50%);
	border-radius: 0;
}

.sun-mem-arrives__img.elementor-widget,
.sun-mem-shared__img.elementor-widget,
.sun-mem-gift__img.elementor-widget,
.sun-mem-band__img.elementor-widget {
	width: 100%;
	max-width: 100% !important;
}

/* --- hero -------------------------------------------------------------- */

.sun-mem-hero.e-con {
	min-height: clamp(560px, 72vh, 760px);
	justify-content: center;
	padding: 96px 0;
}

/* Replace Elementor's flat 58% ink overlay with a left-to-right scrim. The
   copy column ends at max(50% + 90px, 700px) at every desktop width, and the
   scrim is >= .70 alpha up to that line: white over a pure-white photo
   composites to >= 6.8:1, the cream eyebrow to >= 6:1. */
.sun-mem-hero.e-con::before {
	content: "" !important;
	position: absolute;
	inset: 0;
	z-index: 0;
	opacity: 1 !important;
	background-color: transparent !important;
	background-image: linear-gradient(90deg,
		rgba(var(--mem-scrim), .82) 0%,
		rgba(var(--mem-scrim), .76) calc(max(calc(50% + 90px), 700px) - 260px),
		rgba(var(--mem-scrim), .70) max(calc(50% + 90px), 700px),
		rgba(var(--mem-scrim), .36) 86%,
		rgba(var(--mem-scrim), .18) 100%) !important;
	pointer-events: none;
}

.sun-mem-hero.e-con > .e-con {
	position: relative;
	z-index: 1;
}

.sun-mem-hero__inner.e-con > .e-con-inner {
	gap: 0 !important;
	align-items: flex-start !important;
}

/* all hero copy stays in the left ~55% of the 1180 box */
.sun-mem-hero__inner.e-con > .e-con-inner > .elementor-element {
	max-width: min(100%, 640px) !important;
}

.sun-mem-hero__title .elementor-heading-title {
	color: #FFFFFF;
	font-size: clamp(38px, 5.4vw, 68px);
	line-height: 1.06;
	margin: 0 0 22px;
	text-wrap: balance;
}

.sun-mem-hero__inner.e-con > .e-con-inner > .sun-mem-hero__lede.elementor-widget {
	max-width: min(100%, 34em) !important;
	margin-block-end: 32px !important;
}

.sun-mem-hero__lede {
	color: #FFFFFF;
	font-size: 18px;
	line-height: 1.6;
}

.sun-mem-hero__lede p:last-child {
	margin-bottom: 0;
}

.sun-mem-hero__cta.e-con {
	flex-direction: row !important;
	flex-wrap: wrap;
	gap: 14px;
	width: auto;
	--padding-top: 0px;
	--padding-right: 0px;
	--padding-bottom: 0px;
	--padding-left: 0px;
	padding: 0;
}

/* --- icon ticks -------------------------------------------------------- */

.sun-mem-ticks .elementor-icon-list-items {
	display: grid;
	gap: 12px;
	align-items: start;
}

.sun-mem-ticks--two .elementor-icon-list-items {
	grid-template-columns: 1fr 1fr;
	column-gap: 26px;
	row-gap: 14px;
}

.sun-mem-ticks .elementor-icon-list-item {
	align-items: flex-start !important;
	font-size: 15px;
	line-height: 1.5;
	color: var(--mem-ink);
}

/* the icon box is exactly one text line tall and centres its glyph, so the
   icon sits on the first line of a wrapped item; Elementor centres the text
   span (align-self: center), which drops a one-line item to the middle of a
   row stretched by its two-line neighbour */
.sun-mem-ticks .elementor-icon-list-icon {
	font-size: 15px;
	height: 1.5em;
	padding-top: 0;
	align-self: flex-start;
	display: inline-flex;
	align-items: center;
	flex: 0 0 auto;
}

.sun-mem-ticks .elementor-icon-list-text {
	align-self: flex-start !important;
	padding-left: 10px;
}

.sun-mem-ticks .elementor-icon-list-icon i {
	font-size: 14px;
	line-height: 1;
	width: 18px;
	text-align: center;
	color: var(--mem-gold-text);
}

.sun-mem-ticks--contact .elementor-icon-list-item a {
	color: var(--mem-ink);
	text-decoration: underline;
	text-underline-offset: 3px;
}

/* --- what arrives: 50/50, tall 4:5 photo ------------------------------- */

.sun-mem-arrives {
	background-color: var(--mem-paper);
	padding: 96px 0;
}

.sun-mem-arrives__img img {
	aspect-ratio: 4 / 5;
}

.sun-mem-arrives .sun-mem-ticks {
	margin-top: 26px;
}

/* --- the three clubs --------------------------------------------------- */

.sun-mem-clubs {
	background-color: var(--mem-cream);
	padding: 96px 0;
}

.sun-mem-cards.e-con {
	flex-direction: row !important;
	flex-wrap: nowrap !important;
	justify-content: center;
	gap: 22px !important;
	align-items: stretch !important;
	margin-top: 40px;
	width: 100%;
	--padding-top: 0px;
	--padding-right: 0px;
	--padding-bottom: 0px;
	--padding-left: 0px;
	padding: 0;
}

.sun-mem-cards.e-con > .sun-mem-card.e-con {
	flex: 1 1 0 !important;
	min-width: 0;
	width: auto !important;
	max-width: none;
	align-self: stretch;
	background-color: var(--mem-paper);
	border: 1px solid var(--mem-line);
	padding: 34px 28px 30px;
	display: flex;
	flex-direction: column !important;
	flex-wrap: nowrap !important;
	gap: 0 !important;
}

.sun-mem-card__name .elementor-heading-title {
	font-size: 30px;
	line-height: 1.15;
	color: var(--mem-ink);
	margin: 0;
}

.sun-mem-card__price {
	margin: 10px 0 0;
}

.sun-mem-card__price .sun-mem-price {
	display: flex;
	align-items: baseline;
	gap: 8px;
	margin: 0;
}

.sun-mem-card__price .sun-mem-price strong {
	font-family: "Alata", sans-serif;
	font-size: 34px;
	font-weight: 400;
	line-height: 1;
	color: var(--mem-ink);
}

.sun-mem-card__price .sun-mem-price span {
	font-family: "Alata", sans-serif;
	font-size: 11px;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: var(--mem-muted);
}

.sun-mem-card__box {
	margin: 18px 0 0;
	padding: 14px 0 0;
	border-top: 1px solid var(--mem-line);
}

.sun-mem-card__box .sun-mem-box {
	margin: 0;
	font-size: 16px;
	line-height: 1.45;
	color: var(--mem-gold-text);
}

.sun-mem-card__spec {
	margin: 18px 0 26px;
	flex: 1 1 auto;
}

/* Elementor zeroes widget bottom margins (.e-con .elementor-widget.elementor-widget) */
.sun-mem-card__spec.elementor-widget {
	margin-block-end: 26px !important;
}

.sun-mem-card__spec .sun-mem-spec {
	list-style: none;
	margin: 0;
	padding: 0;
}

.sun-mem-card__spec .sun-mem-spec li {
	display: flex;
	flex-wrap: wrap;
	justify-content: space-between;
	align-items: baseline;
	gap: 6px 16px;
	padding: 10px 0;
	border-bottom: 1px solid var(--mem-line);
}

.sun-mem-card__spec .sun-mem-spec li:last-child {
	border-bottom: 0;
}

.sun-mem-card__spec .sun-mem-k {
	font-family: "Alata", sans-serif;
	font-size: 11px;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--mem-muted);
	flex: 1 1 58%;
	min-width: 0;
}

.sun-mem-card__spec .sun-mem-v {
	font-size: 15px;
	font-weight: 600;
	color: var(--mem-ink);
	text-align: right;
	flex: 0 1 auto;
	min-width: 0;
}

.sun-mem-card .sun-mem-btn--card {
	margin-top: auto;
	width: 100%;
}

/* --- photo band (three photos, edge to edge) --------------------------- */

.sun-mem-band.e-con {
	display: flex;
	flex-direction: column !important;
	background-color: var(--mem-paper);
	--padding-left: 0px;
	--padding-right: 0px;
	padding: 88px 0 0 !important;
	gap: 0 !important;
	align-items: stretch !important;
}

.sun-mem-band .sun-mem-eyebrow,
.sun-mem-band__line {
	padding-left: 24px;
	padding-right: 24px;
}

.sun-mem-band__line.elementor-widget {
	max-width: min(100%, 760px) !important;
	margin-inline: auto;
	margin-block-end: 44px !important;
	align-self: center;
}

.sun-mem-band__line {
	font-family: "Cormorant Infant", serif;
	font-size: clamp(24px, 2.6vw, 34px);
	line-height: 1.25;
	color: var(--mem-ink);
	text-align: center;
	text-wrap: balance;
}

.sun-mem-band__line p {
	margin: 0;
}

.sun-mem-band__grid.e-con-full,
.sun-mem-band__grid.e-con-boxed > .e-con-inner {
	display: flex;
	flex-direction: row !important;
	flex-wrap: nowrap !important;
	align-items: flex-start !important;
	gap: 3px !important;
	width: 100%;
	max-width: none;
	--padding-top: 0px;
	--padding-right: 0px;
	--padding-bottom: 0px;
	--padding-left: 0px;
	padding: 0 !important;
}

.sun-mem-band__grid > .sun-mem-band__item.e-con,
.sun-mem-band__grid > .e-con-inner > .sun-mem-band__item.e-con {
	display: flex;
	flex: 1 1 0 !important;
	min-width: 0;
	width: auto !important;
	flex-direction: column !important;
	gap: 0 !important;
	--padding-top: 0px;
	--padding-right: 0px;
	--padding-bottom: 0px;
	--padding-left: 0px;
	padding: 0 !important;
}

.sun-mem-band__img img {
	aspect-ratio: 4 / 5;
}

.sun-mem-band__cap {
	font-size: 14px;
	line-height: 1.5;
	color: var(--mem-muted);
	padding: 12px 18px 0;
}

.sun-mem-band__cap p {
	margin: 0;
}

/* --- included with every club ------------------------------------------ */

.sun-mem-shared {
	background-color: var(--mem-paper);
	padding: 96px 0;
}

.sun-mem-shared__img img {
	aspect-ratio: 4 / 3;
}

.sun-mem-shared .sun-mem-ticks {
	margin-top: 24px;
}

/* --- benefits accordion ------------------------------------------------ */

.sun-mem-benefits {
	background-color: var(--mem-cream);
	padding: 96px 0;
}

.sun-mem-acc {
	margin-top: 36px;
	width: 100%;
}

.sun-mem-acc .e-n-accordion-item {
	border: 1px solid var(--mem-line);
	border-bottom: 0;
	background-color: var(--mem-paper);
}

.sun-mem-acc .e-n-accordion-item:last-child {
	border-bottom: 1px solid var(--mem-line);
}

.sun-mem-acc .e-n-accordion-item-title {
	padding: 20px 22px;
	gap: 16px;
	cursor: pointer;
}

.sun-mem-acc .e-n-accordion-item-title-text {
	font-family: "Alata", sans-serif;
	font-size: 15px;
	line-height: 1.4;
	letter-spacing: 0.01em;
	color: var(--mem-ink);
	margin: 0;
}

.sun-mem-acc .e-n-accordion-item-title-icon i,
.sun-mem-acc .e-n-accordion-item-title-icon svg {
	color: var(--mem-gold-text);
	fill: var(--mem-gold-text);
	font-size: 13px;
	width: 13px;
	height: 13px;
}

.sun-mem-acc .e-n-accordion-item[open] > .e-n-accordion-item-title {
	background-color: #FBFAF7;
}

.sun-mem-acc__panel {
	padding: 0 22px 24px;
}

.sun-mem-acc__body {
	font-size: 16px;
	line-height: 1.65;
	color: var(--mem-ink);
}

.sun-mem-acc__body--terms ul {
	margin: 0;
	padding-left: 20px;
}

.sun-mem-acc__body--terms li + li {
	margin-top: 8px;
}

.sun-mem-acc .sun-mem-btn--inline {
	margin-top: 16px;
}

/* --- how to join: copy ~58%, contact card ~42%, centred on each other --- */

.sun-mem-join {
	background-color: var(--mem-paper);
	padding: 96px 0;
}

.sun-mem-join__aside.sun-mem-join__aside {
	flex: 0 0 42%;
	width: auto;
	min-width: 0;
	background-color: var(--mem-cream);
	border: 1px solid var(--mem-line);
	--padding-top: 40px;
	--padding-right: 40px;
	--padding-bottom: 36px;
	--padding-left: 40px;
	padding: 40px 40px 36px;
	gap: 14px !important;
}

.sun-mem-aside__title .elementor-heading-title {
	font-size: 26px;
	line-height: 1.2;
	color: var(--mem-ink);
	margin: 0 0 4px;
}

.sun-mem-join__cta.e-con {
	flex-direction: row !important;
	flex-wrap: wrap;
	gap: 14px;
	width: auto;
	margin-top: 28px;
	--padding-top: 0px;
	--padding-right: 0px;
	--padding-bottom: 0px;
	--padding-left: 0px;
	padding: 0;
}

/* --- gift: photo ~55% (5:4), copy ~45%, centred ------------------------ */

.sun-mem-gift {
	background-color: var(--mem-cream);
	padding: 64px 0;
}

.sun-mem-gift__media.sun-mem-gift__media {
	flex: 0 0 calc(55% - 32px);
}

.sun-mem-gift__copy.sun-mem-gift__copy {
	flex: 1 1 0;
}

.sun-mem-gift__img img {
	aspect-ratio: 5 / 4;
}

/* --- closing cta ------------------------------------------------------- */

.sun-mem-cta {
	background-color: var(--mem-ink);
	padding: 90px 0;
}

.sun-mem-cta__inner.e-con > .e-con-inner {
	align-items: center;
	text-align: center;
}

.sun-mem-cta__row.e-con {
	flex-direction: row !important;
	flex-wrap: wrap;
	justify-content: center;
	gap: 14px;
	width: auto;
	margin-top: 28px;
	--padding-top: 0px;
	--padding-right: 0px;
	--padding-bottom: 0px;
	--padding-left: 0px;
	padding: 0;
}

/* --- tablet ------------------------------------------------------------ */

@media (max-width: 1024px) {

	.sun-mem-arrives__inner.e-con > .e-con-inner,
	.sun-mem-shared__inner.e-con > .e-con-inner,
	.sun-mem-join__inner.e-con > .e-con-inner,
	.sun-mem-gift__inner.e-con > .e-con-inner {
		flex-direction: column !important;
		align-items: stretch !important;
		gap: 36px !important;
	}

	.sun-mem-arrives__copy.sun-mem-arrives__copy,
	.sun-mem-arrives__media.sun-mem-arrives__media,
	.sun-mem-shared__copy.sun-mem-shared__copy,
	.sun-mem-shared__media.sun-mem-shared__media,
	.sun-mem-join__copy.sun-mem-join__copy,
	.sun-mem-join__aside.sun-mem-join__aside,
	.sun-mem-gift__copy.sun-mem-gift__copy,
	.sun-mem-gift__media.sun-mem-gift__media {
		flex: 0 0 auto;
		width: 100%;
	}

	/* the photo leads on the stacked layout only where it already led */
	.sun-mem-shared__media.sun-mem-shared__media,
	.sun-mem-gift__media.sun-mem-gift__media {
		order: 2;
	}

	/* stacked crops stay landscape so a full-width photo is not a screen tall */
	.sun-mem-arrives__img img,
	.sun-mem-gift__img img {
		aspect-ratio: 3 / 2;
	}

	.sun-mem-shared__img img {
		aspect-ratio: 16 / 9;
	}

	.sun-mem-hero.e-con {
		min-height: 0;
		padding: 120px 0 80px;
	}

	/* copy spans the width here, so the scrim is even across it */
	.sun-mem-hero.e-con::before {
		background-image: linear-gradient(90deg,
			rgba(var(--mem-scrim), .80) 0%,
			rgba(var(--mem-scrim), .72) 100%) !important;
	}

	/* clubs: two up, the third centred beneath */
	.sun-mem-cards.e-con {
		flex-wrap: wrap !important;
	}

	.sun-mem-cards.e-con > .sun-mem-card.e-con {
		flex: 0 1 calc(50% - 11px) !important;
	}

	.sun-mem-band.e-con {
		padding-top: 72px !important;
	}

	.sun-mem-band__cap {
		padding: 10px 12px 0;
		font-size: 13px;
	}

	.sun-mem-arrives,
	.sun-mem-clubs,
	.sun-mem-shared,
	.sun-mem-benefits,
	.sun-mem-join,
	.sun-mem-gift,
	.sun-mem-cta {
		padding: 72px 0;
	}
}

/* --- mobile ------------------------------------------------------------ */

@media (max-width: 767px) {

	.sun-mem-hero.e-con {
		padding: 100px 0 64px;
	}

	.sun-mem-hero__lede {
		font-size: 16px;
	}

	.sun-mem-hero__inner.e-con > .e-con-inner > .sun-mem-hero__lede.elementor-widget {
		margin-block-end: 26px !important;
	}

	.sun-mem-hero__cta.e-con,
	.sun-mem-join__cta.e-con,
	.sun-mem-cta__row.e-con {
		flex-direction: column !important;
		align-items: stretch;
		width: 100%;
	}

	.sun-mem-hero__inner.e-con > .e-con-inner > .sun-mem-hero__cta {
		max-width: 100% !important;
		width: 100%;
	}

	.sun-mem-hero__cta .elementor-widget-button,
	.sun-mem-join__cta .elementor-widget-button,
	.sun-mem-cta__row .elementor-widget-button {
		width: 100%;
	}

	.sun-mem-hero__cta .elementor-button,
	.sun-mem-join__cta .elementor-button,
	.sun-mem-cta__row .elementor-button {
		display: block;
		width: 100%;
		text-align: center;
	}

	.sun-mem-arrives__img img,
	.sun-mem-shared__img img,
	.sun-mem-gift__img img {
		aspect-ratio: 4 / 3;
	}

	.sun-mem-cards.e-con {
		flex-direction: column !important;
		flex-wrap: nowrap !important;
		gap: 18px !important;
	}

	.sun-mem-cards.e-con > .sun-mem-card.e-con {
		flex: 0 0 auto !important;
		width: 100% !important;
		padding: 28px 22px 26px;
	}

	.sun-mem-ticks--two .elementor-icon-list-items {
		grid-template-columns: 1fr;
	}

	.sun-mem-acc .e-n-accordion-item-title {
		padding: 17px 16px;
	}

	.sun-mem-acc__panel {
		padding: 0 16px 20px;
	}

	.sun-mem-join__aside.sun-mem-join__aside {
		padding: 26px 22px;
	}

	/* band: a scroll-snap row; the next photo peeks in at the edge */
	.sun-mem-band.e-con {
		padding-top: 60px !important;
	}

	.sun-mem-band__line.elementor-widget {
		margin-block-end: 30px !important;
	}

	.sun-mem-band__grid.e-con-full,
	.sun-mem-band__grid.e-con-boxed > .e-con-inner {
		overflow-x: auto;
		overscroll-behavior-x: contain;
		scroll-snap-type: x mandatory;
		scroll-padding-inline: 16px;
		scrollbar-width: none;
		padding: 0 16px !important;
		gap: 8px !important;
	}

	.sun-mem-band__grid.e-con-full::-webkit-scrollbar,
	.sun-mem-band__grid.e-con-boxed > .e-con-inner::-webkit-scrollbar {
		display: none;
	}

	.sun-mem-band__grid > .sun-mem-band__item.e-con,
	.sun-mem-band__grid > .e-con-inner > .sun-mem-band__item.e-con {
		flex: 0 0 78vw !important;
		scroll-snap-align: start;
	}

	.sun-mem-band__cap {
		padding: 10px 2px 0;
	}

	.sun-mem-arrives,
	.sun-mem-clubs,
	.sun-mem-shared,
	.sun-mem-benefits,
	.sun-mem-join,
	.sun-mem-gift,
	.sun-mem-cta {
		padding: 60px 0;
	}

	/* the spec rows stack at narrow widths: key above value, both left-aligned,
	   so the value never collides with a two-line key */
	.sun-mem-card__spec .sun-mem-spec li {
		flex-direction: column;
		align-items: flex-start;
		gap: 3px;
	}

	.sun-mem-card__spec .sun-mem-v {
		text-align: left;
	}
}

@media (min-width: 1025px) and (max-width: 1239px) {

	/* cards are narrow enough here for a package line to wrap: reserve two
	   lines so the spec rows still line up across the three cards */
	.sun-mem-card__box .sun-mem-box {
		min-height: calc(2em * 1.45);
	}
}

@media (prefers-reduced-motion: reduce) {
	.sun-mem-btn .elementor-button {
		transition: none;
	}
}

@media (max-width: 767px) {
	/* Phones: the three photos stack as landscape frames. A side-scrolling row is a scroll region a
	   keyboard cannot reach (axe scrollable-region-focusable), and stacking needs no instructions. */
	.sun-mem-band__grid.e-con > .e-con-inner,
	.sun-mem-band__grid.e-con {
		flex-direction: column !important;
		flex-wrap: nowrap !important;
		overflow: visible !important;
		scroll-snap-type: none !important;
		gap: 3px !important;
		padding: 0 !important;
	}
	.sun-mem-band__grid.e-con > .sun-mem-band__item.e-con,
	.sun-mem-band__grid.e-con > .e-con-inner > .sun-mem-band__item.e-con {
		flex: 0 0 auto !important;
		width: 100% !important;
		max-width: none !important;
	}
	.sun-mem-band__img img { aspect-ratio: 3 / 2 !important; }
}
/* Focal points for the 2026-10-09 photographs (picked and viewed at full size; see membership-page-build.py) */
.sun-mem-hero.e-con { background-position: 60% 50% !important; }
.sun-mem-arrives__img { --sun-mem-focal: 42% 55%; }
.sun-mem-band__item:nth-child(1) { --sun-mem-focal: 50% 55%; }
.sun-mem-band__item:nth-child(2) { --sun-mem-focal: 45% 50%; }
.sun-mem-band__item:nth-child(3) { --sun-mem-focal: 50% 50%; }
.sun-mem-shared__img { --sun-mem-focal: 50% 40%; }
.sun-mem-gift__img { --sun-mem-focal: 50% 50%; }

/* ==========================================================================
   52. VILLA landing page (/villa/, page 996715) — hero tour film
   Owner, 2026-10-08: "add the video from sunstonevilla.com to the /villa landing page".
   The film is [sunstone_hero_video] (sunstone-hero-video.php; component CSS in § 49) in a shortcode
   widget inside the hero column. It is lifted out to fill the whole section, under the section's own
   overlay (the 19% tint + the hillside-edge SVG), with the heading above both:
     film z 0  <  .elementor-background-overlay z 1  <  heading z 2
   The container, column and widget-wrap are made static so the absolutely-positioned widget resolves
   against the section itself. Elementor makes .elementor-container position:relative, which inset the
   film by the section's tablet/phone padding (30/20 px) on every side.
   ========================================================================== */
.sun-villa-hero.elementor-section { position: relative; }
.sun-villa-hero > .elementor-container,
.sun-villa-hero > .elementor-container > .elementor-column,
.sun-villa-hero > .elementor-container > .elementor-column > .elementor-widget-wrap { position: static; }
.sun-villa-hero .sun-villa-hero__video.elementor-widget {
	position: absolute !important;
	inset: 0;
	z-index: 0;
	width: 100% !important;
	max-width: none !important;
	margin: 0 !important;
}
.sun-villa-hero__video > .elementor-widget-container,
.sun-villa-hero__video .elementor-shortcode { height: 100%; }
.sun-villa-hero > .elementor-background-overlay { z-index: 1; pointer-events: none; }
.sun-villa-hero .elementor-widget:not(.sun-villa-hero__video) { position: relative; z-index: 2; }
/* Heading legibility on a moving picture. Measured at 4 fps across the whole film, the 19% tint left the
   white h1 under 3:1 (large-text minimum) on 17-21% of frames, worst 1.57:1 in the sunlit stretches at
   ~14 s and ~25 s. A soft oval behind the heading only, flat at 44% across the whole h1 box, then fading
   to nothing well above the hillside edge: worst frame ~4.6:1, and the rest of the film stays bright.
   Sits between the film/overlay (z 0/1) and the heading (z 2). */
.sun-villa-hero::after {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 1;
	pointer-events: none;
	background: radial-gradient(ellipse 52% 22% at 50% 48%, rgba(20, 16, 24, 0.44) 0 58%, rgba(20, 16, 24, 0) 100%);
}
@media (max-width: 767px) {
	/* two-line heading spanning the width: wider oval, centred on it */
	.sun-villa-hero::after {
		background: radial-gradient(ellipse 95% 22% at 50% 47%, rgba(20, 16, 24, 0.44) 0 58%, rgba(20, 16, 24, 0) 100%);
	}
}
/* the pause control sits above the overlay and clear of the hillside edge */
.sun-villa-hero .sun-hero-video__toggle { z-index: 3; bottom: max(72px, 9vw); }
@media (max-width: 767px) {
	.sun-villa-hero .sun-hero-video__toggle { right: 12px; bottom: 56px; }
}

/* ==========================================================================
   53. HOME hero, desktop (page 118, section 9922b4c)
   Owner, 2026-10-09 ("update the desktop hero", screenshot with an arrow): the heading and the two buttons
   move from the middle of the film to its foot, just above the hills. The section's own Elementor setting
   was already "content position: bottom"; the column centred it. Desktop only: tablet and phone are untouched.
   Measured at 1280-2560: the buttons end 30-43px above the hill crest (y 917 at 1744x1038).
   The montage (D124) puts white text over sunlit frames: worst frame 2.33:1 with no scrim. The oval below,
   between the film's overlay (z 1, which carries the hills) and the text, measured over the whole 15 s loop at
   2 fps: heading worst 5.43:1 (needs 3), button labels worst 5.36:1 (needs 4.5). It never reaches the hills.
   ========================================================================== */
@media (min-width: 1025px) {
	.elementor-118 .elementor-element-9922b4c > .elementor-container { align-items: flex-end !important; }
	.elementor-118 .elementor-element-9922b4c > .elementor-container > .elementor-column > .elementor-widget-wrap {
		align-content: flex-end !important;
		padding-bottom: calc(1.4vw + 16px) !important;
	}
	.elementor-118 .elementor-element-9922b4c > .elementor-container > .elementor-column > .elementor-widget-wrap::before {
		content: "";
		position: absolute;
		z-index: -1;
		inset: -60px max(-14vw, -260px) -6px;
		background: radial-gradient(closest-side at 50% 60%, rgba(20, 16, 24, .5), rgba(20, 16, 24, .39) 60%, rgba(20, 16, 24, 0));
		pointer-events: none;
	}
}

/* ==========================================================================
   54. CHOOSE YOUR MOMENT (/choose-your-moment/, page 997833) -- private draft
   --------------------------------------------------------------------------
   Owner, 2026-10-10: "Create an original page design using elementor elements and
   content plan specific to experiences at Sunstone." A standalone page beside the
   Estate hub (/experiences/), organised by guest moment, place as the second thread.
   Design: .copy-migration/elementor/moments-page-build.py -> designs/layout/moments.json.
   Plan and fact table: designs/moments/CONTENT-PLAN.md.

   Revision 2 (Sprint 2, design lane): the page gets a rhythm. Five chapters no longer
   share one photo-plus-copy template. One family, four deliberate modes, chosen by what
   each photograph and each moment wants:
     A  01 Arrive and linger   a wide courtyard photograph, the copy on a white panel that
                               overlaps it (landscape photo -> wide, copy offset like a note)
     B  02 Make it part of     type-led: a large title, a small portrait storefront photo,
        the week               the three facts set as a row (an address wants words first)
     E  03 Sunstone ELIXIR     a portrait photograph bleeding to the screen edge, full
                               height, with the one large numeral on the page (the quiet
                               night chapter; a portrait file wants height, not width)
     D  04 Gather your people  a wide banner photograph over a three-part text band: header,
                               story, 2x2 facts (the room is the subject; it wants width)
     C  06 Stay the night      a full-bleed photograph with the copy on a SOLID ink panel
                               (the destination; a landscape file at its largest)
   Everything else holds still so the five can move: one type scale, one button set, one
   spacing scale, one folio (the small numeral set beside the eyebrow).

   Revision 3 (Sprint 2 build, orchestrator): the stylesheet below is the design lane's, adopted
   whole. A block at the very end ("54z") adds what the build needed and the lanes asked for: the
   pinned moment bar (sun-mom-nav), full-card hit areas (the stretched link was boxed to the title
   band), light links on ink, the occasion cards as a stacked list on a phone (the rail hid the two
   cards a host needs), a shorter hero photo on short phones, and an arrow fallback. Every rule in 54z
   is scoped to the sun-mom- namespace.

   Rules that won:
   - Colour and type are the kit's: ink #242E35, cream #F4F1EA, Cormorant Infant for
     display and running text, Alata for eyebrows and buttons, square corners. Gold is
     ornament (#B98D58) on ink; gold TEXT is #85602F on cream and white (5.0:1; #906A3C
     fails on cream at 4.31:1). Gold over a photograph is never text.
   - Text never sits straight on a photograph. The hero is a split: ink panel left,
     photograph right, so no scrim is needed; the stay chapter sets its copy on a solid
     ink panel. (Baseline measured 5.3:1 minimum on the photograph at 1440 and 1920, but at
     1920 the copy column collapsed to 352 px: a five-line title, a four-line lede, and the
     second button wrapped onto its own row.)
   - Running text is Cormorant, whose x-height is small: body is 19 px (18 phone), not 17.
   - No gradients, no radius, no shadow heavier than the hover lift.
   - Sections alternate ground (ink / white / cream), no two neighbours alike, on phone too.
   - The index cards and the "Mark the occasion" cards are ONE link each: the title is
     the anchor and its ::after stretches over the card, so a screen reader meets one
     link per card, not a link plus an image link.
   - The "Mark the occasion" cards are three plain containers: three across on a desktop,
     a CSS scroll-snap rail on a phone with the next card peeking in. No JavaScript.
   - Layout only needs the markup that already exists: every chapter is placed by the
     classes it carries (sun-mom-ch--arrive|montecito|elixir|gather|stay), not by child
     order. The optional hero line break (<br>, <em>) is styled if present, harmless if not.
   - Stack-to-column breakpoint is 900 (not 1024), phone is 767.
   - No price, no capacity, no claim lives in this stylesheet or in the page.

   Scoping: the `sun-mom-` namespace only (WordPress emits no slug body class on this
   install, so a body-class prefix would silently match nothing).
   TO REVERT: delete this whole section, then `wp post delete 997833 --force`.
   ========================================================================== */

/* ---------------------------------------------------------------- reset: Elementor's container defaults */
.sun-mom-hero__panel, .sun-mom-hero__cta,
.sun-mom-index__grid, .sun-mom-card,
.sun-mom-ch__media, .sun-mom-ch__copy, .sun-mom-ch__cta,
.sun-mom-occ, .sun-mom-close__copy, .sun-mom-close__media, .sun-mom-close__cta {
	--padding-top: 0px; --padding-right: 0px; --padding-bottom: 0px; --padding-left: 0px;
	--gap: 0px; --row-gap: 0px; --column-gap: 0px;
}
.sun-mom-index, .sun-mom-ch, .sun-mom-celebrate, .sun-mom-know { scroll-margin-top: var(--sun-mom-off, 56px); }
/* ---------------------------------------------------------------- vocabulary */
.sun-mom-eyebrow .elementor-heading-title {
	margin: 0;
	font-family: Alata, sans-serif !important;
	font-size: 12px !important;
	font-weight: 400 !important;
	line-height: 1.5 !important;
	letter-spacing: 3px !important;
	text-transform: uppercase;
	color: #85602F !important;                 /* 5.0:1 on cream and white */
}
.sun-mom-ch--ink .sun-mom-eyebrow .elementor-heading-title,
.sun-mom-ch--elixir .sun-mom-eyebrow .elementor-heading-title,
.sun-mom-ch--stay .sun-mom-eyebrow .elementor-heading-title,
.sun-mom-close .sun-mom-eyebrow .elementor-heading-title,
.sun-mom-hero .sun-mom-eyebrow .elementor-heading-title { color: var(--sun-gold-ornament, #B98D58) !important; }   /* 4.62:1, and only on solid ink */
.sun-mom-h2 .elementor-heading-title {
	margin: 10px 0 18px;
	font-size: clamp(36px, 4.2vw, 58px) !important;
	line-height: 1.04 !important;
	letter-spacing: -0.005em;
	color: #242E35 !important;
	text-wrap: balance;
}
.sun-mom-body p {
	margin: 0 0 14px;
	max-width: 31em;
	font-size: 19px;
	line-height: 1.6;
	color: #3A4244;                             /* 9.4:1 on cream; Cormorant is a light face, so the text runs darker than the baseline 6:1 grey */
	text-wrap: pretty;
}
.sun-mom-body p:last-child { margin-bottom: 0; }
.sun-mom-body--center { text-align: center; }
.sun-mom-body--center p { margin-inline: auto; max-width: 34em; }

/* buttons */
.sun-mom-btn .elementor-button {
	min-height: 52px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	padding: 0 30px;
	border-radius: 0;
	border: 1px solid transparent;
	font-family: Alata, sans-serif;
	font-size: 12px;
	letter-spacing: 2.5px;
	text-transform: uppercase;
	transition: background-color 0.2s ease, color 0.2s ease, border-color 0.2s ease;
}
.sun-mom-btn--primary .elementor-button {
	background: var(--sun-gold-ornament, #B98D58);
	border-color: var(--sun-gold-ornament, #B98D58);
	color: #242E35 !important;
}
.sun-mom-btn--primary .elementor-button:focus-visible { background: #FFFFFF; border-color: #FFFFFF; }
@media (hover: hover) { .sun-mom-btn--primary .elementor-button:hover { background: #FFFFFF; border-color: #FFFFFF; } }
.sun-mom-btn--ghost .elementor-button {
	background: transparent;
	border-color: rgba(255, 255, 255, 0.7);
	color: #FFFFFF !important;
}
.sun-mom-btn--ghost .elementor-button:focus-visible { background: #FFFFFF; border-color: #FFFFFF; color: #242E35 !important; }
@media (hover: hover) { .sun-mom-btn--ghost .elementor-button:hover { background: #FFFFFF; border-color: #FFFFFF; color: #242E35 !important; } }
.sun-mom-btn--dark .elementor-button {
	background: #242E35;
	border-color: #242E35;
	color: #FFFFFF !important;
}
.sun-mom-btn--dark .elementor-button:focus-visible {
	background: var(--sun-gold-ornament, #B98D58);
	border-color: var(--sun-gold-ornament, #B98D58);
	color: #242E35 !important;
}
@media (hover: hover) {
	.sun-mom-btn--dark .elementor-button:hover {
		background: var(--sun-gold-ornament, #B98D58);
		border-color: var(--sun-gold-ornament, #B98D58);
		color: #242E35 !important;
	}
}
/* a quiet text action beside a filled one */
.sun-mom-btn--link .elementor-button {
	min-height: 48px;
	padding: 0 4px;
	background: transparent;
	border-color: transparent;
	color: #242E35 !important;
	text-decoration: underline;
	text-decoration-color: var(--sun-gold-text, #906A3C);
	text-decoration-thickness: 1px;
	text-underline-offset: 7px;
}
.sun-mom-btn--link .elementor-button:focus-visible { color: #85602F !important; text-decoration-color: #85602F; }
@media (hover: hover) { .sun-mom-btn--link .elementor-button:hover { color: #85602F !important; text-decoration-color: #85602F; } }
.sun-mom-btn .elementor-button:focus-visible { outline: 2px solid #242E35; outline-offset: 3px; }
.sun-mom-hero .sun-mom-btn .elementor-button:focus-visible,
.sun-mom-ch--ink .sun-mom-btn .elementor-button:focus-visible,
.sun-mom-ch--elixir .sun-mom-btn .elementor-button:focus-visible,
.sun-mom-ch--stay .sun-mom-btn .elementor-button:focus-visible,
.sun-mom-close .sun-mom-btn .elementor-button:focus-visible { outline-color: #FFFFFF; }
/* kit rule `.elementor-kit-13 button` outranks single-class rules: these are <a>, but keep the weight explicit */
.sun-mom-btn .elementor-button.elementor-button { box-shadow: none; }

/* ---------------------------------------------------------------- 1. hero
   Desktop: a split. Ink panel on the left, the photograph filling the right, so the title
   never sits on the picture. The 760 px max-width of the baseline panel is gone: the panel
   column is the content grid's left edge plus 540 px, and the photograph takes the rest. */
.sun-mom-hero.sun-mom-hero {
	position: relative;
	display: flex;
	flex-direction: column;
	align-items: stretch;
	gap: 0 !important;
	padding: 0 !important;
	background-color: #242E35 !important;
	overflow: hidden;
	isolation: isolate;
}
.sun-mom-hero__img.sun-mom-hero__img { position: relative; width: 100% !important; max-width: none !important; margin: 0 !important; line-height: 0; }
.sun-mom-hero__img img {
	display: block;
	width: 100%;
	height: auto;
	aspect-ratio: 3 / 2;
	object-fit: cover;
	object-position: 50% 62%;
}
.sun-mom-hero__panel.sun-mom-hero__panel { gap: 0 !important; padding: 30px 24px 52px !important; }
.sun-mom-hero .sun-mom-eyebrow .elementor-heading-title { color: #F4F1EA !important; }
.sun-mom-hero__title .elementor-heading-title {
	margin: 12px 0 18px;
	color: #FFFFFF !important;
	font-size: clamp(38px, 5.2vw, 76px) !important;
	line-height: 1.02 !important;
	letter-spacing: -0.01em;
	text-wrap: balance;
}
/* optional markup: <br> after "come." and <em> round the second sentence. Gold on solid ink only. */
.sun-mom-hero__title em { font-style: italic; color: var(--sun-gold-ornament, #B98D58); }
.sun-mom-hero__lede p {
	max-width: 34em;
	margin: 0 0 26px;
	color: rgba(255, 255, 255, 0.92) !important;
	font-size: 19px;
	line-height: 1.5;
	text-wrap: pretty;
}
.sun-mom-hero__cta.sun-mom-hero__cta { gap: 14px !important; flex-wrap: wrap; width: auto !important; }
.sun-mom-hero__note p {
	max-width: 52ch;
	text-wrap: balance;
	margin: 20px 0 0;
	color: rgba(255, 255, 255, 0.82) !important;
	font-size: 17px;
	line-height: 1.45;
	letter-spacing: 0.1px;
}
@media (min-width: 901px) {
	.sun-mom-hero.sun-mom-hero {
		display: grid !important;
		grid-template-columns: minmax(0, calc(max(0px, (100vw - 1200px) / 2) + 24px + 560px)) minmax(0, 1fr);
		min-height: clamp(560px, calc(100vh - 80px), 800px);
	}
	.sun-mom-hero__panel.sun-mom-hero__panel {
		grid-column: 1; grid-row: 1;
		justify-content: center;
		padding: 88px 56px 88px max(24px, calc((100vw - 1200px) / 2 + 24px)) !important;
	}
	.sun-mom-hero__img.sun-mom-hero__img { grid-column: 2; grid-row: 1; min-height: 100%; }
	.sun-mom-hero__img > .elementor-widget-container,
	.sun-mom-hero__img .elementor-image { position: absolute; inset: 0; height: 100%; }
	.sun-mom-hero__img img { height: 100%; aspect-ratio: auto; object-position: 66% 56%; }
	/* a short gold rule leads the eyebrow: ornament on solid ink */
	.sun-mom-hero .sun-mom-eyebrow .elementor-heading-title::before {
		content: ""; display: inline-block; width: 40px; height: 1px; margin-right: 16px; vertical-align: middle;
		background: var(--sun-gold-ornament, #B98D58);
	}
}

/* ---------------------------------------------------------------- 2. index
   Desktop: six upright cards, three across, large numerals. Phone: six rows, thumb height. */
.sun-mom-index { padding-block: 96px; background: #FFFFFF; }
.sun-mom-index__inner { text-align: center; }
.sun-mom-index__grid.sun-mom-index__grid {
	display: grid !important;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 24px !important;
	margin-top: 40px;
	text-align: left;
}
.sun-mom-card.sun-mom-card {
	position: relative;
	display: grid !important;
	grid-template-columns: minmax(0, 1fr);
	grid-template-rows: auto 1fr auto;
	row-gap: 8px;
	min-height: 204px;
	padding: 26px 64px 26px 30px !important;
	background: #F4F1EA;
	border: 1px solid rgba(36, 46, 53, 0.12);
	transition: border-color 0.2s ease, background-color 0.2s ease, box-shadow 0.2s ease;
}
.sun-mom-card > .sun-mom-card__num { grid-row: 1; margin-bottom: 12px; }
.sun-mom-card > .sun-mom-card__title { grid-row: 2; align-self: end; }
.sun-mom-card > .sun-mom-card__place { grid-row: 3; align-self: start; }
.sun-mom-card::before {            /* a gold rule that draws along the top edge on hover and focus */
	content: ""; position: absolute; left: -1px; top: -1px; height: 2px; width: 100%;
	background: var(--sun-gold-ornament, #B98D58);
	transform: scaleX(0); transform-origin: left; transition: transform 0.35s ease;
}
.sun-mom-card:focus-within::before { transform: scaleX(1); }
@media (hover: hover) { .sun-mom-card:hover::before { transform: scaleX(1); } }
.sun-mom-card__num .elementor-heading-title {
	margin: 0;
	font-family: "Cormorant Infant", serif !important;
	font-size: 48px !important;
	font-weight: 300 !important;
	line-height: 1 !important;
	color: #85602F !important;
}
.sun-mom-card__title .elementor-heading-title { margin: 0; font-size: 29px !important; line-height: 1.1 !important; text-wrap: balance; }
.sun-mom-card__title a { color: #242E35 !important; text-decoration: none !important; }
.sun-mom-card__title a::after { content: ""; position: absolute; inset: 0; }        /* the whole card is the link */
.sun-mom-card__title a:focus-visible { outline: none; }
.sun-mom-card__title a:focus-visible::after { outline: 2px solid #242E35; outline-offset: 3px; }
.sun-mom-card__place p {
	margin: 0;
	font-family: Alata, sans-serif;
	font-size: 12px;
	letter-spacing: 2px;
	line-height: 1.5;
	text-transform: uppercase;
	color: #4A5352;                             /* 7.2:1 on cream */
}
.sun-mom-card::after {
	content: "\2192";
	content: "\2192" / "";
	position: absolute;
	right: 26px;
	bottom: 24px;
	color: #85602F;
	font-size: 22px;
	line-height: 1;
	transition: transform 0.2s ease;
}
@media (hover: hover) {
	.sun-mom-card:hover { background: #FFFFFF; border-color: var(--sun-gold-ornament, #B98D58); box-shadow: 0 10px 28px rgba(36, 46, 53, 0.08); }
	.sun-mom-card:hover::after { transform: translateX(4px); }
}

/* ---------------------------------------------------------------- 3. chapters: the shared frame */
.sun-mom-ch { position: relative; padding-block: 104px; }
.sun-mom-ch--cream { background: #F4F1EA; }
.sun-mom-ch--white { background: #FFFFFF; }
.sun-mom-ch--ink { background: #242E35; }
.sun-mom-ch__inner > .e-con-inner { gap: 72px; align-items: center !important; }
.sun-mom-ch__media.sun-mom-ch__media { position: relative; isolation: isolate; flex: 0 0 44% !important; width: 44% !important; }
.sun-mom-ch__copy.sun-mom-ch__copy { flex: 1 1 0 !important; width: auto !important; min-width: 0; padding: 0 !important; }
.sun-mom-ch__img.sun-mom-ch__img { position: relative; margin: 0 !important; }
.sun-mom-ch__img img { display: block; width: 100%; aspect-ratio: 4 / 5; object-fit: cover; object-position: 50% 50%; }

/* The folio: a small numeral set on the baseline of the eyebrow, one grid row. The numeral is
   decoration (aria-hidden); the eyebrow names the place. Hierarchy is then title > folio > eyebrow. */
.sun-mom-ch__copy.sun-mom-ch__copy {
	display: grid !important;
	grid-template-columns: auto minmax(0, 1fr);
	column-gap: 16px;
	row-gap: 0;
	align-content: center;
	align-items: baseline;
}
.sun-mom-ch__copy > * { grid-column: 1 / -1; min-width: 0; }
.sun-mom-ch__copy > .sun-mom-ch__num { grid-column: 1; }
.sun-mom-ch__copy > .sun-mom-eyebrow { grid-column: 2; }
.sun-mom-ch__num .elementor-heading-title {
	margin: 0;
	font-family: "Cormorant Infant", serif !important;
	font-size: 38px !important;
	font-weight: 300 !important;
	line-height: 1 !important;
	color: #85602F !important;
}
.sun-mom-ch--ink .sun-mom-ch__num .elementor-heading-title,
.sun-mom-ch--elixir .sun-mom-ch__num .elementor-heading-title,
.sun-mom-ch--stay .sun-mom-ch__num .elementor-heading-title { color: var(--sun-gold-ornament, #B98D58) !important; }
.sun-mom-ch--ink .sun-mom-h2 .elementor-heading-title,
.sun-mom-ch--elixir .sun-mom-h2 .elementor-heading-title,
.sun-mom-ch--stay .sun-mom-h2 .elementor-heading-title { color: #FFFFFF !important; }
.sun-mom-ch--ink .sun-mom-body p,
.sun-mom-ch--elixir .sun-mom-body p,
.sun-mom-ch--stay .sun-mom-body p { color: rgba(255, 255, 255, 0.9) !important; }
.sun-mom-ch__cta.sun-mom-ch__cta { margin-top: 30px; gap: 8px 22px !important; flex-wrap: wrap; align-items: center; width: auto !important; }

/* the facts: icons in gold, hairlines in ink; each chapter sets them its own way below */
.sun-mom-facts { margin: 24px 0 0; }
.sun-mom-facts .elementor-icon-list-items { display: flex; flex-direction: column; gap: 0; }
.sun-mom-facts .elementor-icon-list-item {
	align-items: flex-start;
	padding: 12px 0;
	border-top: 1px solid rgba(36, 46, 53, 0.14);
}
.sun-mom-facts .elementor-icon-list-item:last-child { border-bottom: 1px solid rgba(36, 46, 53, 0.14); }
.sun-mom-facts .elementor-icon-list-icon {
	flex: 0 0 30px;
	width: 30px !important;
	min-width: 30px;
	padding-top: 5px;
	text-align: left;
	color: #85602F;
}
.sun-mom-facts .elementor-icon-list-icon i { display: inline-block; width: 18px; font-size: 14px; text-align: left; color: #85602F; }
.sun-mom-facts .elementor-icon-list-icon svg { width: 14px; height: 14px; fill: #85602F; }
.sun-mom-facts .elementor-icon-list-text { padding: 0 !important; align-self: flex-start; text-align: left; font-size: 17px; line-height: 1.4; color: #2F383D; }
.sun-mom-ch--stay .sun-mom-facts .elementor-icon-list-item { border-color: rgba(255, 255, 255, 0.2); }
.sun-mom-ch--stay .sun-mom-facts .elementor-icon-list-icon,
.sun-mom-ch--stay .sun-mom-facts .elementor-icon-list-icon i { color: var(--sun-gold-ornament, #B98D58); }
.sun-mom-ch--stay .sun-mom-facts .elementor-icon-list-icon svg { fill: var(--sun-gold-ornament, #B98D58); }
.sun-mom-ch--stay .sun-mom-facts .elementor-icon-list-text { color: rgba(255, 255, 255, 0.92); }

/* ---- Mode A. 01 Arrive: the photograph wide, the copy a white panel laid over its edge */
@media (min-width: 901px) {
	.sun-mom-ch--arrive .sun-mom-ch__inner > .e-con-inner {
		display: grid !important;
		grid-template-columns: repeat(12, minmax(0, 1fr));
		column-gap: 24px;
		align-items: start !important;
	}
	.sun-mom-ch--arrive .sun-mom-ch__media.sun-mom-ch__media { grid-column: 1 / span 8; grid-row: 1; width: 100% !important; }
	.sun-mom-ch--arrive .sun-mom-ch__img img { aspect-ratio: 4 / 3; object-position: 50% 62%; }
	.sun-mom-ch--arrive .sun-mom-ch__copy.sun-mom-ch__copy {
		grid-column: 7 / span 6; grid-row: 1;
		position: relative; z-index: 2;
		margin-top: 64px;
		padding: 52px 52px 56px !important;
		background: #FFFFFF;
		border: 1px solid rgba(36, 46, 53, 0.08);
	}
	.sun-mom-ch--arrive.sun-mom-ch--flip .sun-mom-ch__media.sun-mom-ch__media { grid-column: 5 / span 8; }
	.sun-mom-ch--arrive.sun-mom-ch--flip .sun-mom-ch__copy.sun-mom-ch__copy { grid-column: 1 / span 6; }
}
.sun-mom-ch--arrive .sun-mom-facts { margin-top: 22px; }
.sun-mom-ch--arrive .sun-mom-facts .elementor-icon-list-item { border: 0; padding: 7px 0; }
.sun-mom-ch--arrive .sun-mom-facts .elementor-icon-list-item:first-child { border-top: 1px solid rgba(36, 46, 53, 0.14); padding-top: 14px; }

/* ---- Mode B. 02 Montecito: type first. A large title, a small portrait photograph, facts as a row */
@media (min-width: 901px) {
	.sun-mom-ch--montecito { padding-block: 84px; }
	.sun-mom-ch--montecito .sun-mom-ch__inner > .e-con-inner { gap: 88px; align-items: start !important; }
	.sun-mom-ch--montecito .sun-mom-ch__media.sun-mom-ch__media { flex: 0 0 30% !important; width: 30% !important; }
	.sun-mom-ch--montecito .sun-mom-ch__copy.sun-mom-ch__copy { align-content: start; padding-top: 6px !important; }
	.sun-mom-ch--montecito .sun-mom-h2 .elementor-heading-title { font-size: clamp(44px, 5.2vw, 76px) !important; line-height: 1 !important; margin: 14px 0 26px; }
	.sun-mom-ch--montecito .sun-mom-ch__img img { aspect-ratio: 3 / 4; object-position: 50% 30%; }
	.sun-mom-ch--montecito.sun-mom-ch--flip .sun-mom-ch__inner > .e-con-inner { flex-direction: row-reverse; }
	/* a thin gold outline set behind the photograph, drawn on the side that faces the copy: ornament */
	.sun-mom-ch--montecito .sun-mom-ch__img::before {
		content: ""; position: absolute; inset: 18px -18px -18px 18px;
		border: 1px solid var(--sun-gold-ornament, #B98D58); z-index: -1; pointer-events: none;
	}
	.sun-mom-ch--montecito.sun-mom-ch--flip .sun-mom-ch__img::before { inset: 18px 18px -18px -18px; }
	.sun-mom-ch--montecito .sun-mom-facts .elementor-icon-list-items { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0 32px; }
	.sun-mom-ch--montecito .sun-mom-facts .elementor-icon-list-item {
		flex-direction: column; align-items: flex-start; gap: 8px;
		padding: 16px 0 0; border: 0; border-top: 2px solid var(--sun-gold-ornament, #B98D58);
	}
	.sun-mom-ch--montecito .sun-mom-facts .elementor-icon-list-item:last-child { border-bottom: 0; }
	.sun-mom-ch--montecito .sun-mom-facts .elementor-icon-list-icon { flex: 0 0 auto; width: auto !important; min-width: 0; padding-top: 0; }
	.sun-mom-ch--montecito .sun-mom-facts .elementor-icon-list-text { font-size: 17px; }
}

/* ---- Mode E. 03 Sunstone ELIXIR: a portrait photograph bleeding to the left edge, full height; the
        one big numeral on the page. */
@media (min-width: 901px) {
	.sun-mom-ch--elixir { padding-block: 120px; overflow: hidden; overflow: clip; }
	.sun-mom-ch--elixir .sun-mom-ch__inner.sun-mom-ch__inner,
	.sun-mom-ch--elixir .sun-mom-ch__inner > .e-con-inner { position: static; }
	.sun-mom-ch--elixir .sun-mom-ch__media.sun-mom-ch__media {
		position: absolute !important; left: 0; top: 0; bottom: 0; z-index: 0;
		flex: none !important; width: var(--mom-photo) !important;
	}
	.sun-mom-ch--elixir .sun-mom-ch__img.sun-mom-ch__img,
	.sun-mom-ch--elixir .sun-mom-ch__img > .elementor-widget-container,
	.sun-mom-ch--elixir .sun-mom-ch__img .elementor-image { position: absolute; inset: 0; height: 100%; width: 100%; max-width: none !important; }
	.sun-mom-ch--elixir .sun-mom-ch__img img { height: 100%; aspect-ratio: auto; object-position: 38% 62%; }
	.sun-mom-ch--elixir .sun-mom-ch__inner > .e-con-inner { flex-direction: row !important; justify-content: flex-end; }
	.sun-mom-ch--elixir {
		--mom-photo: min(42vw, 720px);
		--mom-gap: max(64px, calc((100vw - var(--mom-photo) - 560px) / 2));
	}
	.sun-mom-ch--elixir .sun-mom-ch__copy.sun-mom-ch__copy {
		position: relative; z-index: 1;
		flex: 0 0 auto !important;
		width: min(560px, calc(100vw - var(--mom-photo) - var(--mom-gap) - 24px)) !important;
		margin-right: auto;
		margin-left: calc(var(--mom-photo) + var(--mom-gap) - max(0px, (100vw - 1200px) / 2) - 24px);
	}
	.sun-mom-ch--elixir .sun-mom-ch__copy > .sun-mom-ch__num { grid-column: 1 / -1; }
	.sun-mom-ch--elixir .sun-mom-ch__copy > .sun-mom-eyebrow { grid-column: 1 / -1; }
	.sun-mom-ch--elixir .sun-mom-ch__num .elementor-heading-title { font-size: 128px !important; line-height: 0.85 !important; margin-bottom: 22px; }
}

/* ---- Mode D. 04 Gather: a banner photograph, then header | story | facts in one band */
@media (min-width: 901px) {
	.sun-mom-ch--gather { padding-block: 96px; }
	.sun-mom-ch--gather .sun-mom-ch__inner > .e-con-inner { flex-direction: column !important; flex-wrap: nowrap !important; gap: 56px; align-items: stretch !important; }
	.sun-mom-ch--gather .sun-mom-ch__media.sun-mom-ch__media { flex: 0 0 auto !important; width: 100% !important; }
	.sun-mom-ch--gather .sun-mom-ch__img img { aspect-ratio: 21 / 9; object-position: 50% 58%; }
	.sun-mom-ch--gather .sun-mom-ch__copy.sun-mom-ch__copy {
		flex: 0 0 auto !important; width: 100% !important;
		grid-template-columns: minmax(0, 4fr) minmax(0, 8fr);
		grid-template-rows: auto auto auto auto 1fr;
		column-gap: 72px;
		align-content: start; align-items: start;
	}
	.sun-mom-ch--gather .sun-mom-ch__copy > .sun-mom-ch__num { grid-column: 1; grid-row: 1; }
	.sun-mom-ch--gather .sun-mom-ch__copy > .sun-mom-eyebrow { grid-column: 1; grid-row: 2; margin-top: 8px; }
	.sun-mom-ch--gather .sun-mom-ch__copy > .sun-mom-h2 { grid-column: 1; grid-row: 3; }
	.sun-mom-ch--gather .sun-mom-ch__copy > .sun-mom-ch__cta { grid-column: 1; grid-row: 4; margin-top: 8px; }
	.sun-mom-ch--gather .sun-mom-ch__copy > .sun-mom-body { grid-column: 2; grid-row: 1 / span 3; }
	.sun-mom-ch--gather .sun-mom-ch__copy > .sun-mom-facts { grid-column: 2; grid-row: 4 / span 2; margin-top: 0; }
	.sun-mom-ch--gather .sun-mom-ch__num .elementor-heading-title { margin-bottom: 4px; }
	.sun-mom-ch--gather .sun-mom-h2 .elementor-heading-title { margin-top: 8px; }
	.sun-mom-ch--gather .sun-mom-facts .elementor-icon-list-items { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 40px; }
	.sun-mom-ch--gather .sun-mom-facts .elementor-icon-list-item:nth-last-child(2) { border-bottom: 1px solid rgba(36, 46, 53, 0.14); }
}
.sun-mom-ch--gather .sun-mom-body p { max-width: 36em; }

/* ---- Mode C. 06 Stay: full-bleed photograph, the copy on a solid ink panel */
@media (min-width: 901px) {
	.sun-mom-ch--stay { padding-block: 88px; min-height: 720px; display: flex; flex-direction: column; justify-content: center; background: #242E35; overflow: hidden; overflow: clip; }
	.sun-mom-ch--stay .sun-mom-ch__inner.sun-mom-ch__inner,
	.sun-mom-ch--stay .sun-mom-ch__inner > .e-con-inner { position: static; }
	.sun-mom-ch--stay .sun-mom-ch__media.sun-mom-ch__media {
		position: absolute !important; inset: 0; z-index: 0; flex: none !important; width: 100% !important;
	}
	.sun-mom-ch--stay .sun-mom-ch__img.sun-mom-ch__img,
	.sun-mom-ch--stay .sun-mom-ch__img > .elementor-widget-container,
	.sun-mom-ch--stay .sun-mom-ch__img .elementor-image { position: absolute; inset: 0; height: 100%; width: 100%; max-width: none !important; }
	.sun-mom-ch--stay .sun-mom-ch__img img { height: 100%; aspect-ratio: auto; object-position: 50% 76%; }
	.sun-mom-ch--stay .sun-mom-ch__inner > .e-con-inner { flex-direction: row !important; justify-content: flex-end; align-items: center !important; }
	.sun-mom-ch--stay.sun-mom-ch--flip .sun-mom-ch__inner > .e-con-inner { justify-content: flex-start; }
	.sun-mom-ch--stay .sun-mom-ch__copy.sun-mom-ch__copy {
		position: relative; z-index: 1;
		flex: 0 0 min(100%, 540px) !important; width: min(100%, 540px) !important;
		padding: 56px 52px 60px !important;
		background: #242E35;
	}
}
.sun-mom-ch--stay .sun-mom-btn--dark .elementor-button {
	background: var(--sun-gold-ornament, #B98D58); border-color: var(--sun-gold-ornament, #B98D58); color: #242E35 !important;
}
.sun-mom-ch--stay .sun-mom-btn--dark .elementor-button:focus-visible { background: #FFFFFF; border-color: #FFFFFF; }
@media (hover: hover) { .sun-mom-ch--stay .sun-mom-btn--dark .elementor-button:hover { background: #FFFFFF; border-color: #FFFFFF; } }
.sun-mom-ch--stay .sun-mom-btn--link .elementor-button { color: #FFFFFF !important; text-decoration-color: var(--sun-gold-ornament, #B98D58); }
.sun-mom-ch--stay .sun-mom-btn--link .elementor-button:focus-visible { color: var(--sun-gold-ornament, #B98D58) !important; }
@media (hover: hover) { .sun-mom-ch--stay .sun-mom-btn--link .elementor-button:hover { color: var(--sun-gold-ornament, #B98D58) !important; } }

/* ---------------------------------------------------------------- 4. celebrate (three linked cards) */
.sun-mom-celebrate { padding-block: 104px; background: #FFFFFF; }
.sun-mom-celebrate__inner { text-align: center; }
.sun-mom-celebrate__inner > .e-con-inner {
	display: grid !important;
	grid-template-columns: 1fr auto auto 1fr;
	column-gap: 16px;
	align-items: baseline;
	justify-items: center;
}
.sun-mom-celebrate__inner > .e-con-inner > * { grid-column: 1 / -1; width: 100%; }
.sun-mom-celebrate__inner > .e-con-inner > .sun-mom-ch__num { grid-column: 2; width: auto; }
.sun-mom-celebrate__inner > .e-con-inner > .sun-mom-eyebrow { grid-column: 3; width: auto; }
.sun-mom-ch__num--center { text-align: center; }
.sun-mom-celebrate .sun-mom-ch__num .elementor-heading-title { font-family: "Cormorant Infant", serif !important; font-size: 38px !important; font-weight: 300 !important; line-height: 1 !important; margin: 0; color: #85602F !important; }
.sun-mom-cards.sun-mom-cards {
	display: grid !important;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 28px !important;
	margin-top: 44px;
	text-align: left;
}
.sun-mom-occ.sun-mom-occ {
	position: relative;
	display: flex !important;
	flex-direction: column;
	gap: 0 !important;
	padding: 0 0 28px !important;
	background: #F4F1EA;
	border: 1px solid rgba(36, 46, 53, 0.1);
	transition: border-color 0.2s ease, box-shadow 0.2s ease;
}
.sun-mom-occ__img.sun-mom-occ__img { margin: 0 !important; overflow: hidden; }
.sun-mom-occ__img img { display: block; width: 100%; aspect-ratio: 4 / 3; object-fit: cover; transition: transform 0.5s ease; }
@media (hover: hover) {
	.sun-mom-occ:hover .sun-mom-occ__img img { transform: scale(1.03); }
	.sun-mom-occ:hover { border-color: var(--sun-gold-ornament, #B98D58); box-shadow: 0 10px 28px rgba(36, 46, 53, 0.08); }
}
.sun-mom-occ__title .elementor-heading-title { margin: 24px 0 10px; padding: 0 28px; font-size: 30px !important; line-height: 1.1 !important; text-wrap: balance; }
.sun-mom-occ__title a { color: #242E35 !important; text-decoration: none !important; }
.sun-mom-occ__title a::after { content: ""; position: absolute; inset: 0; z-index: 2; }   /* the whole card is the link */
.sun-mom-occ__title a:focus-visible { outline: none; }
.sun-mom-occ__title a:focus-visible::after { outline: 2px solid #242E35; outline-offset: -4px; }
.sun-mom-occ__body p { margin: 0 0 18px; padding: 0 28px; font-size: 19px; line-height: 1.5; color: #3A4244; }
.sun-mom-occ__cue { margin-top: auto; }
.sun-mom-occ__cue p {
	margin: 0;
	padding: 0 28px;
	font-family: Alata, sans-serif;
	font-size: 12px;
	letter-spacing: 2.4px;
	text-transform: uppercase;
	color: #85602F;
}
.sun-mom-occ__cue p::after { content: " \2192"; content: " \2192" / ""; }

/* ---------------------------------------------------------------- 5. good to know (nested accordion) */
.sun-mom-know { padding-block: 96px; background: #FFFFFF; border-top: 1px solid rgba(36, 46, 53, 0.1); }
.sun-mom-know__inner { text-align: center; }
.sun-mom-know__acc { margin-top: 32px; text-align: left; }
.sun-mom-know__acc .e-n-accordion-item { border-bottom: 1px solid rgba(36, 46, 53, 0.16); background: transparent; }
.sun-mom-know__acc .e-n-accordion-item:first-child { border-top: 1px solid rgba(36, 46, 53, 0.16); }
.sun-mom-know__acc .e-n-accordion-item-title {
	cursor: pointer;
	border: 0 !important;                    /* the widget draws a 1px box round every title; the item rule is the line */
	background: transparent !important;
	padding: 20px 4px !important;
	min-height: 56px;
}
.sun-mom-know__acc .e-n-accordion-item > .e-con { padding: 0 4px 22px !important; border: 0 !important; }
.sun-mom-know__acc .e-n-accordion-item-title:focus-visible { outline: 2px solid #242E35; outline-offset: -2px; }
.sun-mom-know__acc .e-n-accordion-item-title-text {
	margin: 0;
	font-family: "Cormorant Infant", serif;
	font-size: 24px;
	line-height: 1.25;
	color: #242E35;
}
.sun-mom-know__acc .e-n-accordion-item-title-icon { color: #85602F; }
.sun-mom-know__acc .e-n-accordion-item-title-icon svg,
.sun-mom-know__acc .e-n-accordion-item-title-icon i { width: 13px; height: 13px; font-size: 13px; fill: #85602F; }
.sun-mom-know__acc .sun-mom-body p { max-width: none; font-size: 19px; line-height: 1.55; color: #3A4244; }
.sun-mom-know__more p { margin: 32px 0 0; max-width: none; font-size: 19px; line-height: 1.7; text-align: center; color: #3A4244; }
.sun-mom-know__more a { padding-block: 4px; }

/* ---------------------------------------------------------------- 6. closing band */
.sun-mom-close.sun-mom-close {
	display: flex;
	flex-direction: row;
	align-items: stretch;
	gap: 0 !important;
	padding: 0 !important;
	min-height: 540px;
	background-color: #242E35 !important;
}
.sun-mom-close__copy.sun-mom-close__copy {
	flex: 0 0 50% !important;
	width: 50% !important;
	justify-content: center;
	padding: 88px 64px 88px max(24px, calc((100vw - 1200px) / 2 + 24px)) !important;
}
.sun-mom-close .sun-mom-h2 .elementor-heading-title { color: #FFFFFF !important; }
.sun-mom-close .sun-mom-body p { color: rgba(255, 255, 255, 0.9) !important; }
.sun-mom-close__cta.sun-mom-close__cta { margin-top: 30px; gap: 14px !important; flex-wrap: wrap; width: auto !important; }
.sun-mom-close__media.sun-mom-close__media { position: relative; flex: 1 1 50% !important; width: 50% !important; overflow: hidden; min-height: 100%; }
.sun-mom-close__img.sun-mom-close__img { position: absolute !important; inset: 0; margin: 0 !important; width: 100% !important; max-width: none !important; }
.sun-mom-close__img > .elementor-widget-container,
.sun-mom-close__img .elementor-image { height: 100%; }
.sun-mom-close__img img { display: block; width: 100%; height: 100%; object-fit: cover; object-position: 40% 50%; }

/* ---------------------------------------------------------------- tablet and below */
@media (max-width: 900px) {
	/* stacked hero: a band no taller than half the screen, so the title and the button stay on the first screen */
	.sun-mom-hero__img img { aspect-ratio: 16 / 9; max-height: 52vh; }
	.sun-mom-hero__panel.sun-mom-hero__panel { padding: 28px 32px 56px !important; }
	.sun-mom-index { padding-block: 64px; }
	.sun-mom-index__grid.sun-mom-index__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px !important; margin-top: 28px; }
	.sun-mom-card.sun-mom-card { min-height: 164px; padding: 22px 56px 22px 24px !important; }
	.sun-mom-card__num .elementor-heading-title { font-size: 44px !important; }
	.sun-mom-card__title .elementor-heading-title { font-size: 25px !important; }
	.sun-mom-ch { padding-block: 60px; }
	.sun-mom-ch__inner > .e-con-inner,
	.sun-mom-ch--flip .sun-mom-ch__inner > .e-con-inner { flex-direction: column !important; flex-wrap: nowrap !important; gap: 32px; align-items: stretch !important; }
	.sun-mom-ch__media.sun-mom-ch__media { flex: 0 0 auto !important; width: 100% !important; }
	.sun-mom-ch__copy.sun-mom-ch__copy { flex: 0 0 auto !important; width: 100% !important; }
	.sun-mom-ch__img img { aspect-ratio: 16 / 10; }
	.sun-mom-ch__num .elementor-heading-title { font-size: 34px !important; }
	.sun-mom-h2 .elementor-heading-title { font-size: clamp(32px, 6.4vw, 44px) !important; }

	/* A and C: the photograph runs to both screen edges (the kit gives every container 10 px of side padding) */
	.sun-mom-ch--arrive, .sun-mom-ch--stay,
	.sun-mom-ch--arrive .sun-mom-ch__inner, .sun-mom-ch--stay .sun-mom-ch__inner { padding-inline: 0 !important; }
	.sun-mom-ch--arrive .sun-mom-ch__inner > .e-con-inner { gap: 0; }
	.sun-mom-ch--arrive .sun-mom-ch__copy.sun-mom-ch__copy { position: relative; z-index: 2; margin: -48px 24px 0; width: auto !important; padding: 36px 32px 40px !important; background: #FFFFFF; border: 1px solid rgba(36, 46, 53, 0.08); }
	/* B: the small portrait photograph, kept small */
	.sun-mom-ch--montecito .sun-mom-ch__img img { aspect-ratio: 16 / 9; object-position: 50% 26%; }
	/* E: the photograph leads, in a 4:3 band, the numeral steps down */
	.sun-mom-ch--elixir .sun-mom-ch__img img { aspect-ratio: 16 / 9; object-position: 40% 66%; }
	.sun-mom-ch--elixir .sun-mom-ch__num .elementor-heading-title { font-size: 72px !important; line-height: 0.9 !important; }
	.sun-mom-ch--elixir .sun-mom-ch__copy > .sun-mom-ch__num { grid-column: 1 / -1; }
	.sun-mom-ch--elixir .sun-mom-ch__copy > .sun-mom-eyebrow { grid-column: 1 / -1; margin-top: 10px; }
	/* D: banner */
	.sun-mom-ch--gather .sun-mom-ch__img img { aspect-ratio: 2 / 1; object-position: 50% 58%; }
	/* C: photograph band, then the ink panel */
	.sun-mom-ch--stay { background: #242E35; padding-block: 0; }
	.sun-mom-ch--stay .sun-mom-ch__inner > .e-con-inner { gap: 0; }
	.sun-mom-ch--stay .sun-mom-ch__media.sun-mom-ch__media { padding: 0; }
	.sun-mom-ch--stay .sun-mom-ch__img img { aspect-ratio: 16 / 9; object-position: 50% 74%; }
	.sun-mom-ch--stay .sun-mom-ch__copy.sun-mom-ch__copy { padding: 44px 44px 52px !important; }

	.sun-mom-celebrate { padding-block: 68px; }
	.sun-mom-cards.sun-mom-cards { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 20px !important; margin-top: 32px; }
	.sun-mom-cards .sun-mom-occ:nth-child(3) { grid-column: 1 / -1; }
	.sun-mom-cards .sun-mom-occ:nth-child(3) .sun-mom-occ__img img { aspect-ratio: 16 / 7; }
	.sun-mom-know { padding-block: 64px; }
	.sun-mom-close.sun-mom-close { flex-direction: column-reverse; min-height: 0; }
	.sun-mom-close__copy.sun-mom-close__copy { flex: 0 0 auto !important; width: 100% !important; padding: 48px 32px 56px !important; }
	.sun-mom-close__media.sun-mom-close__media { flex: 0 0 auto !important; width: 100% !important; min-height: 0; aspect-ratio: 16 / 9; }
}

/* ---------------------------------------------------------------- phone */
@media (max-width: 767px) {
	.sun-mom-hero__img img { aspect-ratio: 3 / 2; }
	.sun-mom-hero__panel.sun-mom-hero__panel { padding: 14px 22px 34px !important; }
	.sun-mom-hero__title .elementor-heading-title { margin: 6px 0 10px; font-size: 38px !important; line-height: 1.04 !important; }
	.sun-mom-hero__lede p { margin-bottom: 18px; font-size: 17px; line-height: 1.42; }
	.sun-mom-hero__cta.sun-mom-hero__cta { width: 100% !important; gap: 10px !important; }
	.sun-mom-hero__cta .sun-mom-btn,
	.sun-mom-hero__cta .elementor-button { width: 100%; justify-content: center; }
	.sun-mom-hero__cta .elementor-button { min-height: 48px; }
	.sun-mom-hero__note p { margin-top: 14px; font-size: 16px; line-height: 1.4; }

	.sun-mom-index { padding-block: 36px; }
	.sun-mom-index__grid.sun-mom-index__grid { grid-template-columns: 1fr; gap: 8px !important; margin-top: 14px; }
	/* a phone card is a row again: numeral | title and place | arrow, 64 px tall at least */
	.sun-mom-card.sun-mom-card {
		grid-template-columns: auto minmax(0, 1fr); grid-template-rows: auto auto; column-gap: 14px; row-gap: 0; align-items: center;
		min-height: 66px; padding: 10px 44px 10px 16px !important;
	}
	.sun-mom-card > .sun-mom-card__num { grid-column: 1; grid-row: 1 / span 2; margin: 0; }
	.sun-mom-card > .sun-mom-card__title { grid-column: 2; grid-row: 1; align-self: end; }
	.sun-mom-card > .sun-mom-card__place { grid-column: 2; grid-row: 2; align-self: start; }
	.sun-mom-card__num .elementor-heading-title { font-size: 32px !important; }
	.sun-mom-card__title .elementor-heading-title { font-size: 21px !important; margin-bottom: 2px; }
	.sun-mom-card__place p { font-size: 12px; letter-spacing: 1.5px; line-height: 1.4; }
	.sun-mom-card::after { right: 16px; bottom: auto; top: 50%; transform: translateY(-50%); }
	@media (hover: hover) { .sun-mom-card:hover::after { transform: translate(4px, -50%); } }

	.sun-mom-h2 .elementor-heading-title { margin: 4px 0 10px; font-size: 32px !important; }
	.sun-mom-body p { margin-bottom: 10px; font-size: 17px; line-height: 1.5; }

	.sun-mom-ch { padding-block: 36px; }
	.sun-mom-ch__inner > .e-con-inner,
	.sun-mom-ch--flip .sun-mom-ch__inner > .e-con-inner { gap: 20px; }
	.sun-mom-ch__img img { aspect-ratio: 16 / 10; }
	.sun-mom-ch__num .elementor-heading-title { font-size: 32px !important; }
	.sun-mom-ch__copy.sun-mom-ch__copy { column-gap: 12px; }
	/* both actions on one row where they fit: a 48 px button and a 48 px text link */
	.sun-mom-ch__cta.sun-mom-ch__cta { margin-top: 18px; gap: 8px 14px !important; }
	.sun-mom-ch__cta .sun-mom-btn--dark .elementor-button,
	.sun-mom-ch__cta .sun-mom-btn--primary .elementor-button,
	.sun-mom-ch__cta .sun-mom-btn--ghost .elementor-button { min-height: 48px; padding: 0 20px; letter-spacing: 2px; }
	.sun-mom-facts { margin-top: 16px; }
	.sun-mom-facts .elementor-icon-list-item { padding: 9px 0; }
	.sun-mom-facts .elementor-icon-list-text { font-size: 16px; line-height: 1.36; }

	.sun-mom-ch--arrive { padding-top: 0; padding-bottom: 36px; }
	.sun-mom-ch--arrive .sun-mom-ch__img img { aspect-ratio: 3 / 2; }
	.sun-mom-ch--arrive .sun-mom-ch__copy.sun-mom-ch__copy { margin: -36px 16px 0; padding: 24px 20px 26px !important; }
	.sun-mom-ch--montecito .sun-mom-ch__img img { aspect-ratio: 16 / 10; }
	.sun-mom-ch--elixir .sun-mom-ch__img img { aspect-ratio: 16 / 10; }
	.sun-mom-ch--elixir .sun-mom-ch__num .elementor-heading-title { font-size: 60px !important; }
	.sun-mom-ch--gather .sun-mom-ch__img img { aspect-ratio: 16 / 9; }
	.sun-mom-ch--stay .sun-mom-ch__img img { aspect-ratio: 16 / 10; }
	.sun-mom-ch--stay .sun-mom-ch__copy.sun-mom-ch__copy { padding: 30px 34px 38px !important; }

	.sun-mom-celebrate { padding-block: 40px; }
	/* the numeral and the long eyebrow stack on a phone, centred */
	.sun-mom-celebrate__inner > .e-con-inner { grid-template-columns: minmax(0, 1fr); row-gap: 0; }
	.sun-mom-celebrate__inner > .e-con-inner > .sun-mom-ch__num,
	.sun-mom-celebrate__inner > .e-con-inner > .sun-mom-eyebrow { grid-column: 1 / -1; }
	.sun-mom-celebrate .sun-mom-ch__num .elementor-heading-title { font-size: 32px !important; margin-bottom: 4px; }
	/* a scroll-snap rail: one card and the edge of the next, bleeding to the screen edge */
	.sun-mom-cards.sun-mom-cards {
		display: flex !important;
		flex-wrap: nowrap !important;
		grid-template-columns: none;
		gap: 14px !important;
		box-sizing: border-box;
		width: 100vw !important;
		max-width: 100vw !important;
		margin: 18px 0 0 calc(50% - 50vw) !important;      /* bleed to both screen edges */
		padding: 0 24px 8px !important;
		overflow-x: auto;
		overscroll-behavior-x: contain;
		scroll-snap-type: x mandatory;
		scroll-padding-inline: 24px;
		scrollbar-width: none;
		-webkit-overflow-scrolling: touch;
	}
	.sun-mom-cards.sun-mom-cards::-webkit-scrollbar { display: none; }
	.sun-mom-cards .sun-mom-occ.sun-mom-occ { flex: 0 0 80% !important; width: 80% !important; max-width: none; scroll-snap-align: start; padding-bottom: 20px !important; }
	.sun-mom-cards .sun-mom-occ:nth-child(3) .sun-mom-occ__img img { aspect-ratio: 4 / 3; }
	.sun-mom-occ__img img { aspect-ratio: 3 / 2; }
	.sun-mom-cards .sun-mom-occ:nth-child(3) .sun-mom-occ__img img { aspect-ratio: 3 / 2; }
	.sun-mom-occ__title .elementor-heading-title { margin: 16px 0 8px; padding: 0 20px; font-size: 25px !important; }
	.sun-mom-occ__body p { margin-bottom: 14px; padding: 0 20px; font-size: 17px; line-height: 1.42; }
	.sun-mom-occ__cue p { padding: 0 20px; }

	.sun-mom-know { padding-block: 40px; }
	.sun-mom-know__acc { margin-top: 14px; }
	.sun-mom-know__acc .e-n-accordion-item-title { padding: 14px 2px !important; min-height: 52px; }
	.sun-mom-know__acc .e-n-accordion-item-title-text { font-size: 21px; }
	.sun-mom-know__acc .sun-mom-body p { font-size: 17px; line-height: 1.5; }
	.sun-mom-know__more p { margin-top: 20px; font-size: 16px; line-height: 1.6; }

	.sun-mom-close__copy.sun-mom-close__copy { padding: 36px 22px 44px !important; }
	.sun-mom-close__cta.sun-mom-close__cta { width: 100% !important; gap: 10px !important; }
	.sun-mom-close__cta .sun-mom-btn,
	.sun-mom-close__cta .elementor-button { width: 100%; justify-content: center; }
	.sun-mom-close__media.sun-mom-close__media { aspect-ratio: 16 / 9; }
}

@media (prefers-reduced-motion: reduce) {
	.sun-mom-btn .elementor-button,
	.sun-mom-card.sun-mom-card, .sun-mom-card.sun-mom-card::before, .sun-mom-card.sun-mom-card::after,
	.sun-mom-occ.sun-mom-occ { transition: none; }
	.sun-mom-occ__img img { transition: none; }
	@media (hover: hover) {
		.sun-mom-occ:hover .sun-mom-occ__img img { transform: none; }
		.sun-mom-card:hover::after { transform: none; }
		.sun-mom-card:hover::before { transform: scaleX(1); }
	}
	.sun-mom-card:focus-within::before { transform: scaleX(1); }
	.sun-mom-cards.sun-mom-cards { scroll-behavior: auto; }
	.sun-mom-know__acc .e-n-accordion-item, .sun-mom-know__acc .e-n-accordion-item-title { transition: none !important; }
}

/* ==========================================================================
   54z. BUILD ADDITIONS (Sprint 2, orchestrator) -- namespace sun-mom- only
   ========================================================================== */

/* anchor offsets: the pinned bar is 48 px; the fixed header (80 px, 90 px at 900 and below) hides on a
   scroll down and shows on a scroll up, and every section carries 36 px or more of top padding of its own */
.sun-mom-index, .sun-mom-ch, .sun-mom-celebrate, .sun-mom-know { --sun-mom-off: 56px; }

/* ---------------------------------------------------------------- the moment bar */
.sun-mom-nav.sun-mom-nav {
	position: sticky;
	top: 0;
	z-index: 90;                       /* under the site header (11000) while it shows */
	width: 100%;
	min-height: 48px;
	padding: 0 !important;
	background: #FFFFFF;
	border-block: 1px solid rgba(36, 46, 53, 0.14);
	--padding-top: 0px; --padding-right: 0px; --padding-bottom: 0px; --padding-left: 0px; --gap: 0px;
}
.sun-mom-nav__list { width: 100%; }
.sun-mom-nav__list ol {
	display: flex;
	width: 100%;
	max-width: 1200px;
	margin: 0 auto;
	padding: 0;
	list-style: none;
}
.sun-mom-nav__list li { flex: 1 1 0; min-width: 0; margin: 0; padding: 0; list-style: none; }
.sun-mom-nav__list a {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 10px;
	min-width: 44px;
	min-height: 48px;
	padding: 0 4px;
	color: #242E35 !important;
	text-decoration: none !important;
	box-shadow: inset 0 -2px 0 transparent;
	transition: box-shadow 0.2s ease;
}
.sun-mom-nav__n { font-family: "Cormorant Infant", serif; font-size: 22px; line-height: 1; color: #85602F; }
.sun-mom-nav__t {                      /* in the accessible name always; on screen from 1100 px */
	position: absolute;
	width: 1px;
	height: 1px;
	overflow: hidden;
	clip-path: inset(50%);
	white-space: nowrap;
	font-family: Alata, sans-serif;
	font-size: 12px;
	letter-spacing: 1.6px;
	text-transform: uppercase;
}
@media (min-width: 1100px) {
	.sun-mom-nav__t { position: static; width: auto; height: auto; overflow: visible; clip-path: none; }
}
@media (hover: hover) { .sun-mom-nav__list a:hover { box-shadow: inset 0 -2px 0 var(--sun-gold-ornament, #B98D58); } }
.sun-mom-nav__list a:focus-visible { outline: 2px solid #242E35; outline-offset: -3px; }

/* ---------------------------------------------------------------- the bar, and what else sits at the top of the screen */
/* The site header is fixed from 1025 px (80 px tall, z-index 11000) and returns on any scroll up. Vamtam puts
   .vamtam-sticky-header--fixed-shown on it while it shows, so the bar steps down 80 px to sit under it and takes
   the top again when the header hides. Before this, the returning header covered all six links. */
@media (min-width: 1025px) {
	.sun-mom-nav.sun-mom-nav { transition: translate 0.32s cubic-bezier(0.32, 0.72, 0, 1); }
	body:has(.vamtam-sticky-header--fixed-shown) .sun-mom-nav.sun-mom-nav { translate: 0 80px; }
}
@media (min-width: 1025px) and (prefers-reduced-motion: reduce) {
	.sun-mom-nav.sun-mom-nav { transition: none; }
}
/* A signed-in editor also has the WordPress admin bar, which covered the bar: 32 px; 46 px at 782 px and below;
   absolute (it scrolls away) at 600 px and below, where the bar takes the top again. Visitors never see it. */
.admin-bar .sun-mom-nav.sun-mom-nav { top: 32px; }
@media (max-width: 782px) { .admin-bar .sun-mom-nav.sun-mom-nav { top: 46px; } }
@media (max-width: 600px) { .admin-bar .sun-mom-nav.sun-mom-nav { top: 0; } }

/* ---------------------------------------------------------------- the whole card is the link */
/* Elementor makes every widget position:relative, so the title's ::after was boxed to the title band */
.sun-mom-card__title, .sun-mom-card__title .elementor-widget-container, .sun-mom-card__title .elementor-heading-title,
.sun-mom-occ__title, .sun-mom-occ__title .elementor-widget-container, .sun-mom-occ__title .elementor-heading-title { position: static !important; }
.sun-mom-card, .sun-mom-occ { cursor: pointer; }
/* the link layer sits above the card's own text and numeral, so a tap anywhere on the card lands on the link;
   the decorative arrow lets the tap through */
.sun-mom-card__title a::after, .sun-mom-occ__title a::after { z-index: 3; }
.sun-mom-card::after, .sun-mom-occ__cue, .sun-mom-card__num, .sun-mom-card__place { pointer-events: none; }

/* ---------------------------------------------------------------- light links on ink */
.sun-mom-ch--elixir .sun-mom-btn--link .elementor-button,
.sun-mom-close .sun-mom-btn--link .elementor-button { color: #FFFFFF !important; text-decoration-color: var(--sun-gold-ornament, #B98D58); }
.sun-mom-ch--elixir .sun-mom-btn--link .elementor-button:focus-visible,
.sun-mom-close .sun-mom-btn--link .elementor-button:focus-visible { color: var(--sun-gold-ornament, #B98D58) !important; text-decoration-color: currentColor; }
@media (hover: hover) {
	.sun-mom-ch--elixir .sun-mom-btn--link .elementor-button:hover,
	.sun-mom-close .sun-mom-btn--link .elementor-button:hover { color: var(--sun-gold-ornament, #B98D58) !important; text-decoration-color: currentColor; }
}
.sun-mom-ch--elixir .sun-mom-btn .elementor-button:focus-visible,
.sun-mom-close .sun-mom-btn .elementor-button:focus-visible { outline: 2px solid #FFFFFF; outline-offset: 3px; }

/* hero buttons: the place-naming labels are longer; keep the pair on one row beside the 560 px panel */
@media (min-width: 901px) {
	.sun-mom-hero__cta .sun-mom-btn .elementor-button { padding: 0 22px; letter-spacing: 2px; }
}

/* ---------------------------------------------------------------- tablet and below */
@media (max-width: 900px) {
	.sun-mom-index, .sun-mom-ch, .sun-mom-celebrate, .sun-mom-know { --sun-mom-off: 56px; }
}

/* ---------------------------------------------------------------- phone */
@media (max-width: 767px) {
	/* short phones: keep the primary button on the first screen under browser chrome */
	.sun-mom-hero__img img { max-height: 32vh; max-height: 32svh; }

	/* the three occasion cards as a stacked list: all three visible, no hidden swipe (the rail showed
	   a 78 px sliver of card 2 and none of card 3 -- the two cards a host needs) */
	.sun-mom-cards.sun-mom-cards {
		display: grid !important;
		grid-template-columns: minmax(0, 1fr);
		gap: 12px !important;
		width: auto !important;
		max-width: none !important;
		margin: 18px 0 0 !important;
		padding: 0 !important;
		overflow: visible;
		scroll-snap-type: none;
	}
	.sun-mom-cards .sun-mom-occ.sun-mom-occ {
		display: grid !important;
		grid-template-columns: 104px minmax(0, 1fr);
		grid-template-rows: auto auto 1fr;
		column-gap: 14px;
		align-items: start;
		flex: none !important;
		width: auto !important;
		padding: 12px !important;
	}
	.sun-mom-cards .sun-mom-occ__img.sun-mom-occ__img { grid-column: 1; grid-row: 1 / span 3; width: 104px; margin: 0 !important; }
	.sun-mom-cards .sun-mom-occ__img img,
	.sun-mom-cards .sun-mom-occ:nth-child(3) .sun-mom-occ__img img { width: 104px; height: 104px; aspect-ratio: 1 / 1; object-fit: cover; }
	.sun-mom-cards .sun-mom-occ__title { grid-column: 2; grid-row: 1; }
	.sun-mom-cards .sun-mom-occ__body { grid-column: 2; grid-row: 2; }
	.sun-mom-cards .sun-mom-occ__cue { grid-column: 2; grid-row: 3; align-self: end; }
	.sun-mom-cards .sun-mom-occ__title .elementor-heading-title { margin: 0 0 4px; padding: 0; font-size: 22px !important; line-height: 1.12 !important; }
	.sun-mom-cards .sun-mom-occ__body p { margin: 0 0 8px; padding: 0; font-size: 16px; line-height: 1.38; }
	.sun-mom-cards .sun-mom-occ__cue p { padding: 0; }
}

/* ==========================================================================
   54s. "COMING UP" STRIP -- inside chapter 05 (D137 part 4a)
   --------------------------------------------------------------------------
   Elementor's Posts widget (classic skin) in Manual Selection mode, run through Query ID
   sunstone_upcoming_events (sunstone-events-query.php): events sorted by start, finished ones hidden. Manual
   Selection sets posts_per_page to -1 whatever the widget says, so a rule below shows the first three. The date is
   the event's own, printed by that mu-plugin's get_the_date filter. A ledger, not boxes, so it reads apart from
   the three cards above it. When every pick has passed the whole block hides itself.
   TO REVERT: delete this block and the `soon` container in moments-page-build.py, then re-import.
   ========================================================================== */
.sun-mom-soon.sun-mom-soon { margin-top: 64px; text-align: center; }
.sun-mom-soon:not(:has(.elementor-post)) { display: none !important; }
.sun-mom-soon__list { margin-top: 22px; }
.sun-mom-soon__list .elementor-posts-container { gap: 0 36px; }
.sun-mom-soon__list .elementor-post:nth-child(n+4) { display: none; }
.sun-mom-soon__list .elementor-post {
	position: relative;
	margin: 0;
	padding: 24px 52px 28px 0;
	text-align: left;
	background: transparent;
	border-top: 1px solid rgba(36, 46, 53, 0.22);
	overflow: visible;                    /* Elementor's classic skin sets hidden, which clipped the focus ring below to nothing */
	transition: border-color 0.2s ease;
}
.sun-mom-soon__list .elementor-post__text { display: flex; flex-direction: column; margin: 0; padding: 0; }
.sun-mom-soon__list .elementor-post__meta-data { order: -1; margin: 0 0 10px; padding: 0; line-height: 1.5; }
.sun-mom-soon__list .elementor-post__meta-data .elementor-post-date {
	font-family: Alata, sans-serif; font-size: 12px; font-weight: 400; line-height: 1.5;
	letter-spacing: 2.4px; text-transform: uppercase; color: #85602F;      /* 5.7:1 on white */
}
.sun-mom-soon__list .elementor-post__title,
.sun-mom-soon__list .elementor-post__title a {
	margin: 0; padding: 0;
	font-family: "Cormorant Infant", serif; font-size: 26px; font-weight: 400; line-height: 1.14;
}
.sun-mom-soon__list .elementor-post__title a { color: #242E35; text-decoration: none; }
.sun-mom-soon__list .elementor-post__title a::after { content: ""; position: absolute; inset: 0; }    /* the whole row is the link */
.sun-mom-soon__list .elementor-post__title a:focus-visible { outline: none; }
.sun-mom-soon__list .elementor-post__title a:focus-visible::after { outline: 2px solid #242E35; outline-offset: 8px; }   /* clear of the first letter of the date */
.sun-mom-soon__list .elementor-post::after {
	content: "\2192"; content: "\2192" / "";
	position: absolute; right: 6px; bottom: 28px;
	color: #85602F; font-size: 22px; line-height: 1; transition: transform 0.2s ease;
	pointer-events: none;                 /* decorative: a tap on the arrow must reach the link beneath it */
}
@media (hover: hover) {
	.sun-mom-soon__list .elementor-post:hover { border-top-color: var(--sun-gold-ornament, #B98D58); }
	.sun-mom-soon__list .elementor-post:hover::after { transform: translateX(4px); }
	.sun-mom-soon__list .elementor-post:hover .elementor-post__title a { color: #85602F; }
}
.sun-mom-soon__all.sun-mom-soon__all { margin-top: 30px; }
@media (max-width: 767px) {
	.sun-mom-soon.sun-mom-soon { margin-top: 48px; }
	.sun-mom-soon__list .elementor-post { padding: 20px 44px 22px 0; }
	.sun-mom-soon__list .elementor-post::after { bottom: 22px; }
	.sun-mom-soon__list .elementor-post__title,
	.sun-mom-soon__list .elementor-post__title a { font-size: 24px; }
}
@media (prefers-reduced-motion: reduce) {
	.sun-mom-soon__list .elementor-post, .sun-mom-soon__list .elementor-post::after { transition: none; }
	@media (hover: hover) { .sun-mom-soon__list .elementor-post:hover::after { transform: none; } }
}

/* ==========================================================================
   54m. MOTION -- "things rise into the light" (Sprint 2; owner answers 1a 2a 3a 4a)
   --------------------------------------------------------------------------
   brand/IDENTITY.md section 6 is the only motion spec on file and is a proposal, not a ratified rule. This
   takes its idea and its limits (content rises into the light; opacity and transform only) and nothing
   else. Three pieces, CSS only, no script:
     1. text blocks rise 26 px and fade in as they enter the screen
     2. chapter photographs settle from 107% to 100% as they cross it
     3. the moment bar underlines the chapter you are in
   A fourth, a 1 px gold rule drawing in under each chapter eyebrow, was built, measured and dropped: the
   eyebrow sits 3 px above its heading, so the rule left 1 px to the heading's ink at 390 px and 4.5 px at
   1440 (chapter 04); moved under the heading it lands on the first line of body copy, which starts at the
   heading widget's bottom edge. There is no clean slot for it without changing the spacing.
   The hero stays still (answer 3a). Nothing loops, autoplays or follows the pointer.
   Each piece is scroll-linked (animation-timeline), so it follows the scrollbar, not the clock, and plays
   back when you scroll up. Where that is unsupported (Firefox today; Chrome and Edge before 115; Safari
   before 26), and under prefers-reduced-motion, the page is the finished static page: nothing here changes
   layout, hides content or waits on a script. Elementor's entrance animations are not used: section 22c
   records the failure to avoid, an element left at opacity 0 when its observer never fires.
   Individual transform properties (translate, scale) are used so the hover rules above still compose.
   TO REVERT: delete this block, then turn "overflow: hidden; overflow: clip;" back into
   "overflow: hidden;" on .sun-mom-ch--elixir and .sun-mom-ch--stay (clip keeps a view() timeline alive
   inside the box; hidden makes the box a scroll container and the animation never runs there).
   ========================================================================== */
@media (prefers-reduced-motion: no-preference) {
@supports (animation-timeline: view()) {

	@keyframes sun-mom-rise   { from { opacity: 0; translate: 0 26px; } to { opacity: 1; translate: none; } }
	@keyframes sun-mom-settle { from { scale: 1.07; } to { scale: 1; } }

	/* 1. text blocks rise as they enter. The accordion and the line under it are left out on purpose: they
	   change height when a row opens, which would rewind a rise that had finished while someone is reading. */
	.sun-mom-index__inner > .elementor-element,
	.sun-mom-index__inner > .e-con-inner > .elementor-element,
	.sun-mom-ch__copy > .elementor-element,
	.sun-mom-celebrate__inner > .elementor-element,
	.sun-mom-celebrate__inner > .e-con-inner > .elementor-element,
	.sun-mom-know__inner > .elementor-element:nth-child(-n+2),
	.sun-mom-know__inner > .e-con-inner > .elementor-element:nth-child(-n+2),
	.sun-mom-close__copy > .elementor-element {
		animation: sun-mom-rise linear both;
		animation-timeline: view();
		animation-range: entry 4% entry 52%;
	}
	.sun-mom-ch__copy > .elementor-element:nth-child(3) { animation-range: entry 8% entry 56%; }
	.sun-mom-ch__copy > .elementor-element:nth-child(4) { animation-range: entry 12% entry 60%; }
	.sun-mom-ch__copy > .elementor-element:nth-child(5) { animation-range: entry 16% entry 64%; }
	.sun-mom-ch__copy > .elementor-element:nth-child(6) { animation-range: entry 20% entry 68%; }

	/* 2. chapter photographs settle (a slow push-in with no film). The timeline lives on the photo's own box. */
	.sun-mom-ch__img { view-timeline: --mom-photo block; overflow: clip; }
	.sun-mom-ch__img img { animation: sun-mom-settle linear both; animation-timeline: --mom-photo; animation-range: entry 0% cover 50%; }

}
/* 3. the moment bar underlines the chapter you are in. Same pattern as the /elixir/ sticky bar: each chapter
   is a named view timeline, hoisted to the body so the bar can read all six. A link is lit while its chapter
   spans the middle of the screen. Each window is widened by 40 px at both ends so that one underline is
   still growing while the last is shrinking: without that overlap, nothing is lit for about 100 px of scroll
   at every handoff (measured). 40 px is enough for the tallest chapter, because a ramp is 4% of its window. */
@supports (animation-timeline: view()) and (timeline-scope: --a) {
	body:has(.sun-mom-nav) { timeline-scope: --m1, --m2, --m3, --m4, --m5, --m6; }
	#sun-m-arrive { view-timeline: --m1 block; }    #sun-m-montecito { view-timeline: --m2 block; }
	#sun-m-elixir { view-timeline: --m3 block; }    #sun-m-gather { view-timeline: --m4 block; }
	#sun-m-celebrate { view-timeline: --m5 block; } #sun-m-stay { view-timeline: --m6 block; }
	/* Inset 0: read the chapters against the whole viewport, not the viewport minus html's scroll-padding. A signed-in
	   previewer has 32 px of it (46 px under 783 px) for the admin bar and a visitor has none, which shifted these
	   windows by that much and dipped the underline to about 55% at two handoffs. Declared after the shorthands,
	   which would reset it. */
	#sun-m-arrive, #sun-m-montecito, #sun-m-elixir, #sun-m-gather, #sun-m-celebrate, #sun-m-stay { view-timeline-inset: 0px; }

	@keyframes sun-mom-on { 0% { scale: 0 1; } 4%, 96% { scale: 1 1; } 100% { scale: 0 1; } }
	.sun-mom-nav__list a { position: relative; }
	.sun-mom-nav__list a::after {
		content: ""; position: absolute; left: 26%; right: 26%; bottom: 0; height: 2px; background: #B98D58;
		scale: 0 1;
		animation: sun-mom-on linear both;
		animation-range: cover calc(50vh - 40px) cover calc(100% - 50vh + 40px);
	}
	.sun-mom-nav__list li:nth-child(1) a::after { animation-timeline: --m1; }
	.sun-mom-nav__list li:nth-child(2) a::after { animation-timeline: --m2; }
	.sun-mom-nav__list li:nth-child(3) a::after { animation-timeline: --m3; }
	.sun-mom-nav__list li:nth-child(4) a::after { animation-timeline: --m4; }
	.sun-mom-nav__list li:nth-child(5) a::after { animation-timeline: --m5; }
	.sun-mom-nav__list li:nth-child(6) a::after { animation-timeline: --m6; }
}
}
@media print {
	/* `*` does not match pseudo-elements, and the bar underline is an ::after */
	.sun-mom-hero *, .sun-mom-index *, .sun-mom-ch *, .sun-mom-celebrate *, .sun-mom-know *, .sun-mom-close *, .sun-mom-nav *,
	.sun-mom-nav *::after { animation: none !important; }
}


/* ==========================================================================
   54r. MOBILE REVISION (Sprint 3) -- phones and small tablets only
   --------------------------------------------------------------------------
   Every rule in this block sits inside a max-width media query of 900 px or less, so nothing here reaches a
   desktop (901 px and up). Rules are numbered R1, R2 ... so a revert can take them out one by one.

   R1. Chapter 01's photograph never loaded on a phone (found by the Sprint 3 baseline; introduced by block 54m).
       At 767 px and below, chapter 01 gives its photograph `aspect-ratio: 3 / 2`. Its wrapper has no definite
       width inside Elementor's wrapping flex column, so the wrapper is 0 px high until the image arrives: a
       260 px layout shift in itself. Block 54m then put `overflow: clip` on that wrapper, which clipped the
       image to nothing, so the browser's lazy-load trigger saw no visible area and never fetched it. The photo
       stayed missing and the copy panel sat on top of where it should be. A definite width makes the wrapper
       reserve its height before the image loads: no shift, and nothing for the clip to hide. Checked in a cold
       cache with the image requests held (mobile_lib.preload_report).
   ========================================================================== */
@media (max-width: 767px) {
	.sun-mom-ch__img.sun-mom-ch__img { width: 100%; }                 /* R1 */
}


/* ---- Sprint 3 mobile revision, part 2: the design, touch and accessibility lanes' rules (D139) ------------------------------
   Sources: M1 to M16 from the design lane (measured on the final file at 12 phone and tablet profiles, then looked at by the
   orchestrator); T1b, T2 and T3a from the UX lane; A1b, A3 and A4 from the accessibility lane (A1b top edge only). Each is
   scoped to a query of 900 px or narrower, or to the landscape-phone query (orientation: landscape, max-height 500px,
   hover: none, which a pointer device never matches). T1, the hover gate, is not here: it rewrites 15 existing rules above
   and keeps every one of them for a pointer device. ----------------------------------------------------------------------- */

/* M1  Hero H1 follows the width (29 px at 320, 38 px from 432) and sets each sentence on its own line: two lines at every phone width (was three at 320 to 390);
   430 keeps today's size and 412 gets 36 px. Largest size that holds two lines with the em as a block, measured: 30 px at 320, 34 at 360, 35 at 375, 37 at 390, 39+ at 412 and 430. */
@media (max-width: 480px) {
	.sun-mom-hero__title .elementor-heading-title { font-size: clamp(29px, 8.8vw, 38px) !important; }
	.sun-mom-hero__title em { display: block; }
}

/* M2  Hero panel rhythm: 12 px of air saved above, between and below the parts, so the primary button clears the fold on a 740 to 844 px phone. */
@media (max-width: 767px) {
	.sun-mom-hero__panel.sun-mom-hero__panel { padding: 12px 22px 28px !important; }
	.sun-mom-hero__title .elementor-heading-title { margin: 4px 0 8px; }
	.sun-mom-hero__lede p { margin-bottom: 14px; }
	.sun-mom-hero__cta.sun-mom-hero__cta { gap: 8px !important; }
	.sun-mom-hero__note p { margin-top: 12px; }
}

/* M3  Hero photograph: 3:2 where the screen has room (the 64vw cap trims 10 to 12 px at 390 to 430, e.g. 260 to 250 at 390; 66.7vw would keep it), a strip (never under 150 px) where it does not; replaces the 32svh cap (min() keeps it).
   In a strip the window sits at 70% so the vine rows (74 to 90% of the file) stay in and the arch's side pillars still frame it (the lintel is the top 30%). */
@media (max-width: 767px) and (orientation: portrait) {
	.sun-mom-hero__img img { aspect-ratio: auto; max-height: none; object-position: 50% 70%;
		height: clamp(150px, min(32vh, calc(100vh - 530px)), 64vw);            /* fallback where svh is unknown */
		height: clamp(150px, min(32svh, calc(100vh - 530px)), 64vw); }
}

/* M4  One text edge, 22 px, the hero's: the sections under the hero sat 34 px in, which cost line length (about a line per paragraph at 320 px). */
@media (max-width: 599px) {
	.sun-mom-index__inner.sun-mom-index__inner,
	.sun-mom-celebrate__inner.sun-mom-celebrate__inner,
	.sun-mom-know__inner.sun-mom-know__inner,
	.sun-mom-ch:not(.sun-mom-ch--arrive):not(.sun-mom-ch--elixir):not(.sun-mom-ch--stay) .sun-mom-ch__inner.sun-mom-ch__inner { padding-inline: 12px !important; }
	.sun-mom-ch--stay .sun-mom-ch__copy.sun-mom-ch__copy { padding: 30px 22px 38px !important; }
}

/* M5  Index as compact rows: 60 px rows (66 and 81 before), the 8 px gap kept, 28 px section padding: about 60 px less scroll, targets stay 60 px tall. */
@media (max-width: 767px) {
	.sun-mom-index { padding-block: 28px; }
	.sun-mom-index__grid.sun-mom-index__grid { margin-top: 10px; }
	.sun-mom-card.sun-mom-card { min-height: 60px; padding: 8px 40px 8px 14px !important; }
}

/* M6  Line breaks: fewer lone words on a last line (alone: 4 to 1 at 390, 10 to 4 at 320; with M4's wider column 0 in the combined exploration), no place name split across a label (progressive: ignored where text-wrap is unsupported). */
@media (max-width: 767px) {
	.sun-mom-eyebrow .elementor-heading-title { text-wrap: pretty; }
	.sun-mom-card__place p,
	.sun-mom-occ__title .elementor-heading-title,
	.sun-mom-soon__list .elementor-post__title,
	.sun-mom-ch--montecito .sun-mom-eyebrow .elementor-heading-title,
	.sun-mom-ch--elixir .sun-mom-eyebrow .elementor-heading-title { text-wrap: balance; }       /* keeps "Coast Village Road" and "Poured in Montecito" whole */
	.sun-mom-facts .elementor-icon-list-text,
	.sun-mom-occ__body p,
	.sun-mom-know__acc .sun-mom-body p,
	.sun-mom-know__more p { text-wrap: pretty; }
}

/* M7  'Coming up' ledger: rows 14 px tighter, nothing hidden: about 90 px less scroll at every phone width. */
@media (max-width: 767px) {
	.sun-mom-soon.sun-mom-soon { margin-top: 32px; }
	.sun-mom-soon__list { margin-top: 10px; }
	.sun-mom-soon__list .elementor-post { padding: 14px 40px 16px 0; }
	.sun-mom-soon__list .elementor-post__meta-data { margin-bottom: 6px; }
	.sun-mom-soon__list .elementor-post__title,
	.sun-mom-soon__list .elementor-post__title a { font-size: 22px; line-height: 1.16; }
	.sun-mom-soon__list .elementor-post::after { bottom: 16px; }
	.sun-mom-soon__all.sun-mom-soon__all { margin-top: 12px; }
}

/* M8  Chapter pace (phones, up to 599 px): tall, mid, tallest, short, tall. 02 leads with type, 03 runs edge to edge in 4:3, 04 is a wide band, 06 opens to 3:2.
   Every window is the same or larger than today's except 04, which keeps the table, candles and chairs (checked with a saliency map). */
@media (max-width: 599px) {
	.sun-mom-ch--montecito .sun-mom-h2 .elementor-heading-title { font-size: clamp(34px, 10vw, 42px) !important; line-height: 1 !important; }
	.sun-mom-ch--elixir, .sun-mom-ch--elixir .sun-mom-ch__inner.sun-mom-ch__inner { padding-inline: 0 !important; }
	.sun-mom-ch--elixir .sun-mom-ch__copy.sun-mom-ch__copy { padding: 0 22px !important; }
	.sun-mom-ch--elixir .sun-mom-ch__img img { aspect-ratio: 4 / 3; object-position: 40% 62%; }
	.sun-mom-ch--gather .sun-mom-ch__img img { aspect-ratio: 21 / 9; object-position: 50% 58%; }
	.sun-mom-ch--stay .sun-mom-ch__img img { aspect-ratio: 3 / 2; }
}

/* M9  Occasion cards: the thumbnail floats, so the text runs beside it and then under it at full card width (the column beside it was 180 px). */
@media (max-width: 599px) {
	.sun-mom-cards .sun-mom-occ.sun-mom-occ { display: flow-root !important; padding: 12px !important; }
	.sun-mom-cards .sun-mom-occ__img.sun-mom-occ__img { float: left; width: 88px; margin: 0 14px 6px 0 !important; }
	.sun-mom-cards .sun-mom-occ__img img,
	.sun-mom-cards .sun-mom-occ:nth-child(3) .sun-mom-occ__img img { width: 88px; height: 88px; }
	.sun-mom-cards .sun-mom-occ__title, .sun-mom-cards .sun-mom-occ__body, .sun-mom-cards .sun-mom-occ__cue { grid-column: auto; grid-row: auto; }
	.sun-mom-cards .sun-mom-occ__body p { margin-bottom: 8px; }
}

/* M10  Tablets and large phones, 600 to 900 px: the photographs were 16:10 at 768 px wide (480 px tall). 01, 04 and 06 become wide bands; 02 and 03, whose files are portrait,
   sit centred at 62% in 4:3 (a window that shows more of the file than 16:10 did), so full-width and inset alternate and no portrait photograph is cropped harder. */
@media (min-width: 600px) and (max-width: 900px) {
	.sun-mom-ch--arrive .sun-mom-ch__img img, .sun-mom-ch--stay .sun-mom-ch__img img { aspect-ratio: 2 / 1; }
	.sun-mom-ch--gather .sun-mom-ch__img img { aspect-ratio: 5 / 2; }
	.sun-mom-ch--montecito .sun-mom-ch__media.sun-mom-ch__media, .sun-mom-ch--elixir .sun-mom-ch__media.sun-mom-ch__media { width: 62% !important; align-self: center; }
	.sun-mom-ch--montecito .sun-mom-ch__img img, .sun-mom-ch--elixir .sun-mom-ch__img img { aspect-ratio: 4 / 3; }
}

/* M11  Tablets, 768 to 900 px: the three occasions as rows with a 200 px photograph, like the phone list but roomier (768 px had two tall cards and a wide one). */
@media (min-width: 768px) and (max-width: 900px) {
	.sun-mom-cards.sun-mom-cards { display: grid !important; grid-template-columns: minmax(0, 1fr); gap: 14px !important; margin-top: 28px; }
	.sun-mom-cards .sun-mom-occ:nth-child(3) { grid-column: auto; }
	.sun-mom-cards .sun-mom-occ.sun-mom-occ { display: grid !important; grid-template-columns: 200px minmax(0, 1fr); grid-template-rows: auto auto 1fr; column-gap: 24px; align-items: start; padding: 16px !important; }
	.sun-mom-cards .sun-mom-occ__img.sun-mom-occ__img { grid-column: 1; grid-row: 1 / span 3; width: 200px; margin: 0 !important; }
	.sun-mom-cards .sun-mom-occ__img img,
	.sun-mom-cards .sun-mom-occ:nth-child(3) .sun-mom-occ__img img { width: 200px; height: 150px; aspect-ratio: auto; }
	.sun-mom-cards .sun-mom-occ__title { grid-column: 2; grid-row: 1; }
	.sun-mom-cards .sun-mom-occ__body { grid-column: 2; grid-row: 2; }
	.sun-mom-cards .sun-mom-occ__cue { grid-column: 2; grid-row: 3; align-self: end; }
	.sun-mom-cards .sun-mom-occ__title .elementor-heading-title { margin: 0 0 6px; padding: 0; font-size: 26px !important; }
	.sun-mom-cards .sun-mom-occ__body p { margin: 0 0 10px; padding: 0; font-size: 18px; line-height: 1.45; }
	.sun-mom-cards .sun-mom-occ__cue p { padding: 0; }
}

/* M12  Tablets, 768 to 900 px: index and good-to-know paddings back to a tablet's measure (the 768 px jump was 185 px). */
@media (min-width: 768px) and (max-width: 900px) {
	.sun-mom-know { padding-block: 48px; }
	.sun-mom-index { padding-block: 48px; }
	.sun-mom-card.sun-mom-card { min-height: 128px; }
	.sun-mom-know__acc .e-n-accordion-item-title { padding: 14px 4px !important; min-height: 52px; }
}

/* M13  Landscape phones (667, 844, 915, 932 wide): the hero is a composition, panel left, photograph right, not a stretched stack or a 560 px desktop split. */
@media (orientation: landscape) and (max-height: 500px) and (hover: none) {
	.sun-mom-hero.sun-mom-hero { display: grid !important; grid-template-columns: minmax(0, 58%) minmax(0, 1fr); min-height: 0; }
	.sun-mom-hero__panel.sun-mom-hero__panel { grid-column: 1; grid-row: 1; justify-content: center; padding: 16px 28px 20px max(24px, 4vw) !important; }
	.sun-mom-hero__img.sun-mom-hero__img { grid-column: 2; grid-row: 1; min-height: 100%; }
	.sun-mom-hero__img > .elementor-widget-container, .sun-mom-hero__img .elementor-image { position: absolute; inset: 0; height: 100%; }
	.sun-mom-hero__img img { height: 100%; aspect-ratio: auto; max-height: none; object-position: 66% 56%; }
	.sun-mom-hero .sun-mom-eyebrow .elementor-heading-title::before { display: none; }
	.sun-mom-hero__title .elementor-heading-title { margin: 2px 0 6px; font-size: clamp(28px, 4.4vw, 42px) !important; }
	.sun-mom-hero__title em { display: block; }
	.sun-mom-hero__lede p { margin-bottom: 10px; font-size: 16px; line-height: 1.4; }
	.sun-mom-hero__cta.sun-mom-hero__cta { width: 100% !important; gap: 8px !important; flex-direction: row; flex-wrap: wrap; }
	.sun-mom-hero__cta .sun-mom-btn { flex: 1 1 auto; width: auto; }
	.sun-mom-hero__cta .elementor-button { width: 100%; min-height: 48px; padding: 0 16px; letter-spacing: 2px; }
	.sun-mom-hero__note p { margin-top: 8px; font-size: 15px; line-height: 1.35; }
}

/* M14  Landscape phones up to 900 px wide: chapters as two columns (photograph 42%, copy beside it), not a 530 px photograph above the copy. */
@media (max-width: 900px) and (orientation: landscape) and (max-height: 500px) {
	.sun-mom-ch { padding-block: 40px; }
	.sun-mom-ch__inner > .e-con-inner { flex-direction: row !important; flex-wrap: nowrap !important; align-items: center !important; gap: 28px; }
	.sun-mom-ch--flip .sun-mom-ch__inner > .e-con-inner { flex-direction: row-reverse !important; }
	.sun-mom-ch__media.sun-mom-ch__media { flex: 0 0 42% !important; width: 42% !important; }
	.sun-mom-ch__copy.sun-mom-ch__copy { flex: 1 1 0 !important; width: auto !important; min-width: 0; }
	.sun-mom-ch .sun-mom-ch__img img { aspect-ratio: 1 / 1; }
	.sun-mom-ch.sun-mom-ch--arrive, .sun-mom-ch.sun-mom-ch--arrive .sun-mom-ch__inner { padding-inline: 14px !important; }
	.sun-mom-ch--arrive .sun-mom-ch__inner > .e-con-inner { gap: 28px; }
	.sun-mom-ch--arrive .sun-mom-ch__copy.sun-mom-ch__copy { margin: 0; padding: 26px 28px 28px !important; }
	.sun-mom-ch--stay .sun-mom-ch__inner > .e-con-inner { gap: 0; }
	.sun-mom-ch--stay .sun-mom-ch__copy.sun-mom-ch__copy { padding: 36px 36px 40px !important; }
	.sun-mom-ch--elixir .sun-mom-ch__num .elementor-heading-title { font-size: 56px !important; }
}

/* M15  Landscape phones 901 to 932 px wide (desktop layout): section padding was 96 to 120 px of a 412 to 430 px screen; now 48 to 56 px. */
@media (min-width: 901px) and (orientation: landscape) and (max-height: 500px) and (hover: none) {
	.sun-mom-index, .sun-mom-celebrate, .sun-mom-know { padding-block: 48px; }
	.sun-mom-ch, .sun-mom-ch--montecito, .sun-mom-ch--gather { padding-block: 48px; }
	.sun-mom-ch--elixir { padding-block: 56px; }
	.sun-mom-ch--stay { padding-block: 48px; min-height: 0; }
	.sun-mom-soon.sun-mom-soon { margin-top: 40px; }
}

/* M16  Landscape phones 901 to 932 px wide: the same line-break rules as the phone (M6) for the labels and card titles that left one word alone. */
@media (min-width: 901px) and (orientation: landscape) and (max-height: 500px) and (hover: none) {
	.sun-mom-eyebrow .elementor-heading-title { text-wrap: pretty; }
	.sun-mom-card__place p, .sun-mom-occ__title .elementor-heading-title, .sun-mom-soon__list .elementor-post__title { text-wrap: balance; }
	.sun-mom-occ__body p { text-wrap: pretty; }
}


/* ---- touch lane ---- */
/* ==== T1b: after a tap the card's link keeps focus, so `.sun-mom-card:focus-within::before` (kept global by T1: it is a keyboard rule) would leave the gold rule drawn on a touch screen; draw it only for keyboard focus ==== */
@media (max-width: 900px), (orientation: landscape) and (max-height: 500px) and (hover: none) {
	/* focus-within is meant for the keyboard: draw the rule only while the card's link is :focus-visible */
	.sun-mom-card:focus-within:not(:has(a:focus-visible))::before { transform: scaleX(0); }
}
/* ==== END T1b ==== */

/* ==== T2: pressed feedback. Today there is no :active rule and the site sets -webkit-tap-highlight-color to transparent (parent theme
   base.less:60), so a finger gets no answer until the page moves. opacity, scale and translate only: no layout, no repaint of a colour.
   Each pressed look is held back 90 ms with a zero-length transition that starts after a delay: a scroll that starts on the element inside
   90 ms makes the browser drop :active before anything changed, so a flick never flashes; a deliberate press shows at once after that. ==== */
@media (max-width: 900px), (orientation: landscape) and (max-height: 500px) and (hover: none) {
	.sun-mom-btn .elementor-button:active { scale: 0.97; opacity: 0.86; transition: scale 0s linear 90ms, opacity 0s linear 90ms; }
	.sun-mom-btn--link .elementor-button:active { scale: 1; opacity: 0.55; transition: opacity 0s linear 90ms; }
	.sun-mom-card:active, .sun-mom-occ:active { scale: 0.985; opacity: 0.88; transition: scale 0s linear 90ms, opacity 0s linear 90ms; }
	.sun-mom-card:active::after { translate: 4px 0; transition: translate 0s linear 90ms; }
	.sun-mom-nav__list a:active .sun-mom-nav__n { opacity: 0.6; transition: opacity 0s linear 90ms; }
	.sun-mom-soon__list .elementor-post:active { opacity: 0.7; transition: opacity 0s linear 90ms; }
	.sun-mom-soon__list .elementor-post:active::after { translate: 4px 0; transition: translate 0s linear 90ms; }
	.sun-mom-know__acc .e-n-accordion-item-title:active { opacity: 0.6; transition: opacity 0s linear 90ms; }
}
/* ==== END T2 ==== */

/* ==== T3a: the current-chapter underline is #B98D58 on white = 2.99:1 (under the 3:1 a state indicator needs), 2 px by 31 px at 390.
   Gold text colour #85602F is 5.7:1 on white (the kit's own token), 3 px, a little wider. Only where the underline exists. ==== */
@media (max-width: 900px) {
	.sun-mom-nav__list a::after { background: #85602F; height: 3px; left: 18%; right: 18%; }
}
/* ==== END T3a ==== */


/* ---- accessibility lane ---- */

/* A1b  WCAG 2.4.11 Focus Not Obscured: the moment bar is sticky and 50 px tall, and a browser treats a control in the top 50 px as
   already visible, so a keyboard user tabbing backwards could land with the focused control wholly under the bar (measured at
   320 x 568: "Browse the Villa gallery" at 0.4 to 48.4 px, 60 of 60 sample points covered). A top scroll margin of 56 px (bar plus 6)
   on the controls makes the browser scroll them clear. It sits on the controls, not the chapters, so the six anchors land where
   they did. The lane's bottom margin for the back-to-top button was left out: that button never hid a control (19 touched, none
   fully covered). */
@media (max-width: 900px) {
	@supports selector(html:has(.sun-mom-nav)) {
		html:has(.sun-mom-nav) :is(a[href], button, summary, [tabindex]:not([tabindex="-1"])) { scroll-margin-top: 56px; }
	}
}

/* A3  The bar's current-chapter marker in forced-colors mode, where an author background is replaced and the line vanished (1.0:1). */
@media (max-width: 900px) and (forced-colors: active) {
	.sun-mom-nav__list a::after { background-color: Highlight; forced-color-adjust: none; }
}

/* A4  Opt out of automatic dark mode (Chrome on Android, Samsung Internet): the page has no dark design, and in emulation the hero
   button label fell from 4.62:1 to 2.43:1 and the gold accent to 2.83:1. The photographs were not changed. */
@media (max-width: 900px) {
	html:has(.sun-mom-nav) { color-scheme: only light; }
}


/* ==========================================================================
   55. CAREERS (/careers/, role pages /careers/<slug>/) -- private drafts
   --------------------------------------------------------------------------
   Contract: docs/audits/careers-sprint/spec/CONTRACT.md and W1-A 4.2-4.4. Look: W1-B "First light".
   Markup comes from the sunstone-careers*.php mu-plugins, the Elementor page, and single-sun_job.php.
   Behaviour: js/sun-careers.js. Everything here is in the `sun-car-` namespace.
   Rules that hold:
   - Colour is the kit's. Ink #242E35, cream #F4F1EA, white. Gold TEXT on cream or white is #85602F (5.0:1 and up; #906A3C is
     4.3:1 on cream). #B98D58 is ornament, or text on solid ink only (4.62:1). No text over a photograph. No gradient, radius or shadow
     heavier than the hover lift. Borders a person must see are #6E6E6E (hairlines are decoration only).
   - Buttons: ink fill on light grounds; gold fill with ink text on ink grounds (O14). `--quiet` on ink is a white outline.
   - Every :hover sits in (hover: hover). Controls are 44 px or more. A card is one link (its ::after stretches). No overflow:hidden
     on a card, list or section (it clips the focus ring, D137). Images sit in boxes with a definite width and an aspect-ratio (D138).
   - Nothing here animates for more than 150 ms, and everything stops under prefers-reduced-motion.
   - Kit rules (.elementor-kit-13 button / input / h1) outrank one class, so controls and headings carry two classes.
   TO REVERT: delete this whole section.
   ========================================================================== */

/* ---------------------------------------------------------------- 55.0 shared */
html:has(.sun-car-roles, .sun-car-role, .sun-car-pg-hero, .sun-car-talent) { color-scheme: only light; }   /* O13: gold on ink falls to 2.4:1 under forced darkening */
.sun-car-roles[hidden], .sun-car-card[hidden], .sun-car-list[hidden], .sun-car-empty[hidden], .sun-car-clear[hidden],
.sun-car-stickybar[hidden], .sun-car-share__share[hidden], .sun-car-tools[hidden] { display: none !important; }
.sun-car-roles, .sun-car-roles-wrap, .sun-car-pg-life, .sun-car-pg-process, .sun-car-pg-faq, .sun-car-pg-eeo, .sun-car-talent, .sun-car-apply { scroll-margin-top: 16px; }
.sun-car-pg-hero__panel, .sun-car-pg-hero__cta, .sun-car-pg-hero__media, .sun-car-pg-card, .sun-car-pg-step {   /* reset: Elementor's container defaults */
	--padding-top: 0px; --padding-right: 0px; --padding-bottom: 0px; --padding-left: 0px;
	--gap: 0px; --row-gap: 0px; --column-gap: 0px;
}
.sun-car-eyebrow, .sun-car-eyebrow .elementor-heading-title {
	margin: 0 0 12px;
	font-family: Alata, sans-serif !important;
	font-size: 12px !important;
	font-weight: 400 !important;
	line-height: 1.5 !important;
	letter-spacing: 3px !important;
	text-transform: uppercase;
	color: #85602F !important;                   /* 5.0:1 on cream, 5.7:1 on white */
	text-wrap: pretty;
}
.sun-car-eyebrow .elementor-heading-title { margin: 0; }
:is(.sun-car-pg-hero, .sun-car-pg-life, .sun-car-talent, .sun-car-apply, .sun-car-banner, .sun-car-role__hero) .sun-car-eyebrow,
:is(.sun-car-pg-hero, .sun-car-pg-life, .sun-car-talent, .sun-car-apply, .sun-car-banner, .sun-car-role__hero) .sun-car-eyebrow .elementor-heading-title { color: #B98D58 !important; }   /* 4.62:1, solid ink only */
.sun-car-h2 .elementor-heading-title {
	margin: 10px 0 18px;
	font-size: clamp(36px, 4.2vw, 58px) !important;
	line-height: 1.04 !important;
	letter-spacing: -0.005em;
	color: #242E35 !important;
	text-wrap: balance;
}
.sun-car-body p {
	margin: 0 0 14px;
	max-width: 31em;
	font-size: 19px;
	line-height: 1.6;
	color: #3A4244;                              /* 10.3:1 white, 9.1:1 cream */
	text-wrap: pretty;
}
.sun-car-body p:last-child { margin-bottom: 0; }
:is(.sun-car-pg-hero, .sun-car-pg-life, .sun-car-talent) .sun-car-h2 .elementor-heading-title { color: #FFFFFF !important; }
:is(.sun-car-pg-hero, .sun-car-pg-life, .sun-car-talent) .sun-car-body p { color: rgba(255, 255, 255, 0.92) !important; }

/* buttons: the variant sets six custom properties, one rule per state reads them (works on <a>, <button> and Elementor's widget) */
.sun-car-btn--primary { --sun-car-bg: #242E35; --sun-car-fg: #FFFFFF; --sun-car-bd: #242E35; --sun-car-bg2: #85602F; --sun-car-fg2: #FFFFFF; --sun-car-bd2: #85602F; }   /* 13.8:1; hover 5.7:1 */
.sun-car-btn--quiet { --sun-car-bg: transparent; --sun-car-fg: #242E35; --sun-car-bd: #242E35; --sun-car-bg2: #242E35; --sun-car-fg2: #FFFFFF; --sun-car-bd2: #242E35; }
:is(.sun-car-pg-hero, .sun-car-pg-life, .sun-car-talent, .sun-car-apply, .sun-car-banner, .sun-car-role__hero, .sun-car-stickybar) .sun-car-btn--primary {
	--sun-car-bg: #B98D58; --sun-car-fg: #242E35; --sun-car-bd: #B98D58; --sun-car-bg2: #FFFFFF; --sun-car-fg2: #242E35; --sun-car-bd2: #FFFFFF;   /* O14: 4.62:1 */
}
:is(.sun-car-pg-hero, .sun-car-pg-life, .sun-car-talent, .sun-car-apply, .sun-car-banner, .sun-car-role__hero, .sun-car-stickybar) .sun-car-btn--quiet {
	--sun-car-bg: transparent; --sun-car-fg: #FFFFFF; --sun-car-bd: rgba(255, 255, 255, 0.7); --sun-car-bg2: #FFFFFF; --sun-car-fg2: #242E35; --sun-car-bd2: #FFFFFF;
}
a.sun-car-btn.sun-car-btn, button.sun-car-btn.sun-car-btn, .sun-car-btn .elementor-button.elementor-button {
	box-sizing: border-box;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 44px;
	min-height: 52px;
	margin: 0;
	padding: 0 30px;
	border: 1px solid var(--sun-car-bd, #242E35);
	border-radius: 0;
	background: var(--sun-car-bg, #242E35);
	color: var(--sun-car-fg, #FFFFFF);
	font-family: Alata, sans-serif;
	font-size: 12px;
	font-weight: 400;
	letter-spacing: 2.5px;
	line-height: 1.3;
	text-align: center;
	text-decoration: none;
	text-transform: uppercase;
	box-shadow: none;
	cursor: pointer;
	transition: background-color 0.15s ease, color 0.15s ease, border-color 0.15s ease;
}
a.sun-car-btn.sun-car-btn:focus-visible, button.sun-car-btn.sun-car-btn:focus-visible, .sun-car-btn .elementor-button.elementor-button:focus-visible {
	background: var(--sun-car-bg2, #85602F); border-color: var(--sun-car-bd2, #85602F); color: var(--sun-car-fg2, #FFFFFF);
}
@media (hover: hover) {
	a.sun-car-btn.sun-car-btn:hover, button.sun-car-btn.sun-car-btn:hover, .sun-car-btn .elementor-button.elementor-button:hover {
		background: var(--sun-car-bg2, #85602F); border-color: var(--sun-car-bd2, #85602F); color: var(--sun-car-fg2, #FFFFFF);
	}
}
.sun-car-btn:focus-visible, .sun-car-btn .elementor-button:focus-visible { outline: 3px solid var(--sun-focus-ring, #906A3C); outline-offset: 3px; }
:is(.sun-car-pg-hero, .sun-car-pg-life, .sun-car-talent, .sun-car-apply, .sun-car-banner, .sun-car-role__hero, .sun-car-stickybar) :is(.sun-car-btn, .elementor-button):focus-visible { outline-color: #FFFFFF; }

/* ---------------------------------------------------------------- 55.1 the Careers page (Elementor)
   Grounds: ink hero, white roles, cream, ink life, cream, white, cream, ink talent (O8). */
.sun-car-pg-hero.sun-car-pg-hero {
	position: relative;
	display: flex;
	flex-direction: column;
	align-items: stretch;
	gap: 0 !important;
	padding: 0 !important;
	background-color: #242E35 !important;
	isolation: isolate;
}
.sun-car-pg-hero__media.sun-car-pg-hero__media { order: -1; position: relative; width: 100% !important; max-width: none !important; margin: 0 !important; line-height: 0; }
.sun-car-pg-hero__media img { display: block; width: 100%; height: auto; aspect-ratio: 3 / 2; object-fit: cover; object-position: 50% 60%; }
.sun-car-pg-hero__panel.sun-car-pg-hero__panel { gap: 0 !important; padding: 14px 22px 34px !important; }
.sun-car-pg-hero.sun-car-pg-hero h1 {
	margin: 4px 0 12px;
	font-size: clamp(29px, 8.8vw, 38px) !important;
	font-weight: 300 !important;
	line-height: 1.04 !important;
	letter-spacing: -0.01em;
	color: #FFFFFF !important;
	text-wrap: balance;
}
.sun-car-pg-hero h1 em { display: block; font-style: italic; color: #B98D58; }   /* the second sentence on its own line; gold on solid ink only */
.sun-car-pg-hero .sun-car-body p { margin: 0 0 18px; max-width: 34em; font-size: 17px; line-height: 1.42; }
.sun-car-pg-hero__cta.sun-car-pg-hero__cta { gap: 8px 14px !important; flex-wrap: wrap; width: auto !important; }
.sun-car-count {                     /* [sunstone_careers_count]: one plain-text line, set like the eyebrow (D1 P4: it was a 36 px serif 10 px under the buttons) */
	min-height: 1.5em;                 /* reserved, so the line cannot shift the layout */
	margin: 22px 0 0;
	font-family: Alata, sans-serif;
	font-size: 12px;
	font-weight: 400;
	letter-spacing: 3px;
	line-height: 1.5;
	text-transform: uppercase;
	color: #85602F;
}
.sun-car-pg-hero .sun-car-count { color: #B98D58; }
.sun-car-roles-wrap.sun-car-roles-wrap { padding: 36px 22px !important; background-color: #FFFFFF; }
.sun-car-pg-values.sun-car-pg-values { padding-block: 36px !important; background-color: #F4F1EA; }
.sun-car-pg-life.sun-car-pg-life { padding-block: 36px !important; background-color: #242E35; }
.sun-car-pg-process.sun-car-pg-process { padding-block: 36px !important; background-color: #F4F1EA; }
.sun-car-pg-faq.sun-car-pg-faq { padding-block: 36px !important; background-color: #FFFFFF; }
.sun-car-pg-eeo.sun-car-pg-eeo { padding-block: 36px !important; background-color: #F4F1EA; }
.sun-car-pg-life img { display: block; width: 100%; height: auto; object-fit: cover; }
.sun-car-pg-card.sun-car-pg-card { min-width: 0; padding: 26px 24px !important; background: #FFFFFF; border: 1px solid rgba(36, 46, 53, 0.12); }
.sun-car-pg-step.sun-car-pg-step { min-width: 0; padding-top: 18px !important; border-top: 1px solid rgba(36, 46, 53, 0.3); }
.sun-car-pg-card .elementor-heading-title, .sun-car-pg-step .elementor-heading-title { font-size: 25px !important; line-height: 1.1 !important; color: #242E35 !important; text-wrap: balance; }
.sun-car-pg-card p, .sun-car-pg-step p { font-size: 18px; line-height: 1.5; color: #3A4244; }
.sun-car-pg-faq .e-n-accordion-item-title { min-height: 56px; padding: 14px 4px !important; }
.sun-car-pg-faq .e-n-accordion-item-title-text { color: #242E35; }
.sun-car-pg-eeo p { max-width: 40em; font-size: 17px; line-height: 1.55; color: #3A4244; }
@media (min-width: 768px) {
	.sun-car-pg-hero__panel.sun-car-pg-hero__panel { padding: 28px 32px 56px !important; }
	.sun-car-pg-hero.sun-car-pg-hero h1 { font-size: clamp(38px, 5.2vw, 76px) !important; }
	.sun-car-pg-hero .sun-car-body p { font-size: 19px; line-height: 1.5; }
	.sun-car-roles-wrap.sun-car-roles-wrap { padding-inline: 24px !important; }
	.sun-car-pg-values.sun-car-pg-values, .sun-car-pg-life.sun-car-pg-life, .sun-car-pg-process.sun-car-pg-process,
	.sun-car-pg-faq.sun-car-pg-faq, .sun-car-pg-eeo.sun-car-pg-eeo { padding-block: 64px !important; }
	.sun-car-roles-wrap.sun-car-roles-wrap { padding-block: 64px !important; }
}
@media (min-width: 901px) {
	.sun-car-pg-hero.sun-car-pg-hero {
		display: grid !important;
		grid-template-columns: minmax(0, calc(max(0px, (100vw - 1200px) / 2) + 24px + 560px)) minmax(0, 1fr);
		min-height: clamp(560px, calc(100vh - 80px), 800px);
	}
	.sun-car-pg-hero__panel.sun-car-pg-hero__panel { grid-column: 1; grid-row: 1; justify-content: center; padding: 88px 56px 88px max(24px, calc((100vw - 1200px) / 2 + 24px)) !important; }
	.sun-car-pg-hero__media.sun-car-pg-hero__media { order: 0; grid-column: 2; grid-row: 1; min-height: 100%; }
	.sun-car-pg-hero__media > .elementor-widget-container, .sun-car-pg-hero__media .elementor-image { position: absolute; inset: 0; height: 100%; }
	.sun-car-pg-hero__media img { height: 100%; aspect-ratio: auto; object-position: 50% 55%; }
	.sun-car-pg-hero .sun-car-eyebrow .elementor-heading-title::before, .sun-car-pg-hero p.sun-car-eyebrow::before {
		content: ""; display: inline-block; width: 40px; height: 1px; margin-right: 16px; vertical-align: middle; background: #B98D58;
	}
	.sun-car-pg-values.sun-car-pg-values, .sun-car-pg-life.sun-car-pg-life, .sun-car-pg-process.sun-car-pg-process,
	.sun-car-pg-faq.sun-car-pg-faq, .sun-car-pg-eeo.sun-car-pg-eeo, .sun-car-roles-wrap.sun-car-roles-wrap { padding-block: 96px !important; }
	.sun-car-roles, .sun-car-roles-wrap, .sun-car-pg-life, .sun-car-pg-process, .sun-car-pg-faq, .sun-car-pg-eeo, .sun-car-talent, .sun-car-apply { scroll-margin-top: 96px; }   /* fixed 80 px header */
}

/* 55.1b the page's own hooks, as the Elementor build (designs/layout/careers.json) names them: a boxed __inner, grids of cards and steps,
   the life chapter (photograph beside an ink panel, a card row, a photo row), card and step numerals. Ink cards in the life section. */
.sun-car-pg-hero__lede p { max-width: 34em; margin: 0 0 18px; font-size: 17px; line-height: 1.42; color: rgba(255, 255, 255, 0.92) !important; text-wrap: pretty; }
.sun-car-pg-values__inner.sun-car-pg-values__inner, .sun-car-pg-life__inner.sun-car-pg-life__inner, .sun-car-pg-process__inner.sun-car-pg-process__inner,
.sun-car-pg-faq__inner.sun-car-pg-faq__inner, .sun-car-pg-eeo__inner.sun-car-pg-eeo__inner {
	box-sizing: border-box; width: 100%; max-width: 1200px; margin-inline: auto; padding-inline: 22px !important;
	--padding-top: 0px; --padding-bottom: 0px; --gap: 0px;
}
.sun-car-pg-values__grid.sun-car-pg-values__grid, .sun-car-pg-life__grid.sun-car-pg-life__grid, .sun-car-pg-process__list.sun-car-pg-process__list {
	display: grid !important; grid-template-columns: repeat(auto-fit, minmax(min(100%, 240px), 1fr)); gap: 16px !important; margin-top: 28px;
}
.sun-car-pg-process__list.sun-car-pg-process__list { grid-template-columns: repeat(auto-fit, minmax(min(100%, 190px), 1fr)); gap: 20px !important; }
.sun-car-pg-card .sun-car-pg-card__num .elementor-heading-title, .sun-car-pg-step .sun-car-pg-step__num .elementor-heading-title {
	margin: 0 0 8px !important; font-family: "Cormorant Infant", serif !important; font-size: 44px !important; font-weight: 300 !important; line-height: 1 !important; color: #85602F !important;
}
.sun-car-pg-life .sun-car-pg-card .sun-car-pg-card__num .elementor-heading-title { color: #B98D58 !important; }
.sun-car-pg-life .sun-car-pg-card.sun-car-pg-card { background: transparent; border-color: rgba(255, 255, 255, 0.3); }
.sun-car-pg-life .sun-car-pg-card .elementor-heading-title { color: #FFFFFF !important; }
.sun-car-pg-life .sun-car-pg-card p { color: rgba(255, 255, 255, 0.92); }
.sun-car-pg-process__notice-title .elementor-heading-title, .sun-car-pg-eeo__sub .elementor-heading-title { margin: 24px 0 8px; font-size: 24px !important; line-height: 1.15 !important; color: #242E35 !important; }
.sun-car-pg-life__chapter.sun-car-pg-life__chapter { display: flex; flex-direction: column; gap: 0 !important; margin-bottom: 8px; }
.sun-car-pg-life__media.sun-car-pg-life__media { width: 100% !important; margin: 0 !important; line-height: 0; }
.sun-car-pg-life__media img { display: block; width: 100%; height: auto; aspect-ratio: 3 / 2; object-fit: cover; }
.sun-car-pg-life__panel.sun-car-pg-life__panel { gap: 0 !important; padding: 28px 0 8px !important; background: #242E35; }
.sun-car-pg-life__photos.sun-car-pg-life__photos { display: grid !important; grid-template-columns: minmax(0, 1fr); gap: 12px !important; margin-top: 28px; }
.sun-car-pg-life__photo { margin: 0 !important; line-height: 0; }
.sun-car-pg-life__photo img { display: block; width: 100%; height: auto; aspect-ratio: 3 / 2; object-fit: cover; }
@media (min-width: 768px) {
	:is(.sun-car-pg-values__inner, .sun-car-pg-life__inner, .sun-car-pg-process__inner, .sun-car-pg-faq__inner, .sun-car-pg-eeo__inner) { padding-inline: 24px !important; }
	.sun-car-pg-life__photos.sun-car-pg-life__photos { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px !important; }
}
@media (min-width: 901px) {
	.sun-car-pg-life__chapter.sun-car-pg-life__chapter { display: grid !important; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); align-items: center; }
	.sun-car-pg-life__panel.sun-car-pg-life__panel { padding: 24px 0 24px 56px !important; }
}

/* ---------------------------------------------------------------- 55.2 the listing */
.sun-car-roles { max-width: 1200px; margin-inline: auto; }
.sun-car-roles__title {
	margin: 0 0 22px;
	font-family: "Cormorant Infant", serif;
	font-size: clamp(36px, 4.2vw, 58px);
	font-weight: 400;
	line-height: 1.04;
	letter-spacing: -0.005em;
	color: #242E35;
	text-wrap: balance;
}
.sun-car-roles:not(.sun-car-js) .sun-car-tools { display: none; }                         /* no scripting: the list is whole, the tools are absent */
.sun-car-roles.sun-car-js:not(.sun-car-ready) .sun-car-tools { opacity: 0.5; pointer-events: none; }   /* script failed to load: do not offer a dead control */
.sun-car-tools { display: grid; grid-template-columns: minmax(0, 1fr); gap: 18px; margin: 0 0 22px; }
.sun-car-search, .sun-car-sortwrap { display: flex; flex-direction: column; gap: 6px; min-width: 0; }
.sun-car-search__label, .sun-car-sortwrap__label, .sun-car-facet__legend {
	padding: 0;
	font-family: Alata, sans-serif;
	font-size: 12px;
	letter-spacing: 2px;
	line-height: 1.5;
	text-transform: uppercase;
	color: #4A5352;                              /* 7.9:1 on white */
}
.sun-car-tools .sun-car-search .sun-car-search__input.sun-car-search__input,
.sun-car-tools .sun-car-sortwrap .sun-car-sort.sun-car-sort {
	box-sizing: border-box;
	width: 100%;
	min-height: 48px;
	margin: 0;
	padding: 8px 14px;
	border: 1px solid #6E6E6E;                   /* 5.1:1 on white */
	border-radius: 0;
	background-color: #FFFFFF;
	font-family: "Cormorant Infant", serif;
	font-size: 19px;
	line-height: 1.3;
	color: #242E35;
	box-shadow: none;
	transition: none;
}
.sun-car-facet { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; min-width: 0; margin: 0; padding: 0; border: 0; }
.sun-car-facet__legend { width: 100%; margin-bottom: 4px; }
.sun-car-chip.sun-car-chip {
	box-sizing: border-box;
	display: inline-flex;
	align-items: center;
	gap: 8px;
	min-width: 44px;
	min-height: 44px;
	margin: 0;
	padding: 0 16px;
	border: 1px solid #6E6E6E;
	border-radius: 0;
	background: #FFFFFF;
	font-family: Alata, sans-serif;
	font-size: 12px;
	font-weight: 400;
	letter-spacing: 1.5px;
	line-height: 1.2;
	text-transform: uppercase;
	color: #242E35;
	cursor: pointer;
	transition: background-color 0.15s ease, color 0.15s ease;
}
.sun-car-chip::before {                         /* a fixed box, so selecting never changes the chip's width; the tick is text, not colour alone */
	content: "";
	flex: 0 0 14px;
	box-sizing: border-box;
	width: 14px;
	height: 14px;
	border: 1px solid currentColor;
	font-size: 11px;
	line-height: 12px;
	text-align: center;
}
.sun-car-chip.sun-car-chip[aria-pressed="true"] { background: #242E35; border-color: #242E35; color: #FFFFFF; }   /* 13.8:1 */
.sun-car-chip[aria-pressed="true"]::before { content: "\2713"; }
.sun-car-chip__n { color: #4A5352; }
.sun-car-chip[aria-pressed="true"] .sun-car-chip__n { color: #FFFFFF; }
@media (hover: hover) {
	.sun-car-chip.sun-car-chip:hover { background: #F4F1EA; }
	.sun-car-chip.sun-car-chip[aria-pressed="true"]:hover { background: #3A4A54; }
}
.sun-car-clear.sun-car-clear {
	box-sizing: border-box;
	justify-self: start;
	min-width: 44px;
	min-height: 44px;
	margin: 0;
	padding: 0 4px;
	border: 0;
	background: transparent;
	font-family: Alata, sans-serif;
	font-size: 12px;
	letter-spacing: 2px;
	text-transform: uppercase;
	text-decoration: underline;
	text-decoration-color: #85602F;
	text-underline-offset: 6px;
	color: #242E35;
	cursor: pointer;
}
@media (hover: hover) { .sun-car-clear.sun-car-clear:hover { color: #85602F; } }
.sun-car-status { min-height: 28px; margin: 0 0 14px; font-family: Alata, sans-serif; font-size: 12px; letter-spacing: 2.5px; line-height: 28px; text-transform: uppercase; color: #4A5352; }
.sun-car-list { display: grid; gap: 8px; margin: 0; padding: 0; list-style: none; }

/* a role card: one link, the whole card is the target */
.sun-car-card {
	position: relative;
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	row-gap: 6px;
	min-height: 120px;
	margin: 0;
	padding: 14px 44px 14px 16px;
	background: #F4F1EA;
	border: 1px solid rgba(36, 46, 53, 0.12);
	transition: border-color 0.15s ease, background-color 0.15s ease, box-shadow 0.15s ease;
}
.sun-car-card::before {                         /* a gold rule draws along the top edge */
	content: ""; position: absolute; left: -1px; top: -1px; width: calc(100% + 2px); height: 2px;
	background: #B98D58; transform: scaleX(0); transform-origin: left; transition: transform 0.15s ease;
}
.sun-car-card:focus-within::before { transform: scaleX(1); }
.sun-car-card::after {
	content: "\2192"; content: "\2192" / "";
	position: absolute; right: 16px; bottom: 14px;
	font-size: 22px; line-height: 1; color: #85602F;
	transition: transform 0.15s ease;
}
.sun-car-card__eyebrow { margin: 0; font-family: Alata, sans-serif; font-size: 12px; letter-spacing: 2px; line-height: 1.5; text-transform: uppercase; color: #4A5352; text-wrap: balance; }
.sun-car-card__title { margin: 0; font-family: "Cormorant Infant", serif; font-size: 26px; font-weight: 400; line-height: 1.1; color: #242E35; text-wrap: balance; overflow-wrap: anywhere; }
.sun-car-card .sun-car-card__link { color: #242E35; text-decoration: none; }
.sun-car-card__link::after { content: ""; position: absolute; inset: 0; }                 /* stretched link */
.sun-car-card .sun-car-card__link:focus-visible { outline: none; box-shadow: none; }
.sun-car-card .sun-car-card__link:focus-visible::after { outline: var(--sun-focus-ring-width, 3px) solid var(--sun-focus-ring, #906A3C); outline-offset: 2px; }
.sun-car-card__summary {
	margin: 0; max-width: 40em; font-size: 18px; line-height: 1.45; color: #3A4244;
	display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; line-clamp: 2; overflow: hidden;
}
.sun-car-facts { display: flex; flex-wrap: wrap; gap: 2px 18px; margin: 4px 0 0; padding: 0; list-style: none; }
.sun-car-fact { margin: 0; font-family: Alata, sans-serif; font-size: 12px; letter-spacing: 1.6px; line-height: 1.5; text-transform: uppercase; color: #4A5352; }
.sun-car-fact--pay { font-family: "Cormorant Infant", serif; font-size: 22px; font-weight: 500; letter-spacing: 0; line-height: 1.2; text-transform: none; color: #242E35; }
.sun-car-badge { box-sizing: border-box; font-family: Alata, sans-serif; font-size: 12px; letter-spacing: 2px; line-height: 1.3; text-transform: uppercase; }
.sun-car-badge--new { position: absolute; top: -1px; right: -1px; padding: 4px 10px; background: #B98D58; color: #242E35; }   /* 4.62:1, text not colour */
@media (hover: hover) {
	.sun-car-card:hover { background: #FFFFFF; border-color: #B98D58; box-shadow: 0 10px 28px rgba(36, 46, 53, 0.08); }
	.sun-car-card:hover::before { transform: scaleX(1); }
	.sun-car-card:hover::after { transform: translateX(4px); }
}
@media (min-width: 901px) {
	.sun-car-list { gap: 16px; }
	.sun-car-card { grid-template-columns: minmax(0, 1fr) 260px; column-gap: 40px; min-height: 104px; padding: 26px 72px 26px 32px; }
	.sun-car-card > .sun-car-card__eyebrow, .sun-car-card > .sun-car-card__title, .sun-car-card > .sun-car-card__summary { grid-column: 1; }
	.sun-car-card > .sun-car-facts { grid-column: 2; grid-row: 1 / span 3; flex-direction: column; align-self: center; margin: 0; }
	.sun-car-card__title { font-size: 34px; }
	.sun-car-card::after { right: 28px; bottom: 26px; }
	.sun-car-tools { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 22px 32px; }
	.sun-car-search { grid-column: span 2; }
	.sun-car-sortwrap { grid-column: 3; }
	.sun-car-clear.sun-car-clear { grid-column: 1 / -1; }
	.sun-car-roles :is(a, button, input, select) { scroll-margin-top: 96px; }
}
@media (min-width: 768px) and (max-width: 900px) { .sun-car-card { min-height: 128px; padding: 18px 56px 18px 24px; } }

/* empty and no-match states */
.sun-car-empty { padding: 28px 22px; background: #F4F1EA; border: 1px solid rgba(36, 46, 53, 0.12); }
.sun-car-empty__title { margin: 0 0 8px; font-family: "Cormorant Infant", serif; font-size: 30px; font-weight: 400; line-height: 1.1; color: #242E35; }
.sun-car-empty__text { max-width: 36em; margin: 0 0 20px; font-size: 18px; line-height: 1.5; color: #3A4244; }
.sun-car-empty--none { padding-block: 40px; }

/* ---------------------------------------------------------------- 55.3 the role page
   One grid, three zones: full-bleed bands (hero, apply, related, talent) and, from 900 px, a body column with the at-a-glance panel beside it. */
.sun-car-role {
	--sun-car-x: max(22px, calc((100% - 1200px) / 2));
	display: grid;
	grid-template-columns: var(--sun-car-x) minmax(0, 1fr) var(--sun-car-x);
	color: #242E35;
}
.sun-car-article, .sun-car-article > .page-content { width: 100%; max-width: none; margin: 0; padding: 0 !important; }   /* O17: the parent theme's article and page-content paddings must not narrow the bands (its 80 px bottom pad on small screens too) */
.sun-car-role > * { grid-column: 1 / -1; min-width: 0; padding-inline: var(--sun-car-x); }
.sun-car-role__hero { display: grid; grid-template-columns: minmax(0, 1fr); align-content: start; padding-block: 28px 40px; background: #242E35; color: #FFFFFF; }
.sun-car-crumbs ol { display: flex; flex-wrap: wrap; align-items: center; margin: 0 0 14px; padding: 0; list-style: none; }
.sun-car-crumbs li { margin: 0; font-family: Alata, sans-serif; font-size: 12px; letter-spacing: 2px; line-height: 1.5; text-transform: uppercase; color: rgba(255, 255, 255, 0.86); }
.sun-car-crumbs li + li::before { content: "/"; content: "/" / ""; margin: 0 10px; color: #B98D58; }
.sun-car-crumbs li a { display: inline-flex; align-items: center; min-height: 44px; color: #FFFFFF; text-decoration: underline; text-decoration-color: #B98D58; text-underline-offset: 6px; }
@media (hover: hover) { .sun-car-crumbs li a:hover { text-decoration-color: #FFFFFF; } }
.sun-car-role .sun-car-role__title {
	margin: 0 0 14px;
	font-family: "Cormorant Infant", serif;
	font-size: clamp(34px, 5vw, 64px);
	font-weight: 300;
	line-height: 1.04;
	letter-spacing: -0.01em;
	color: #FFFFFF;
	text-wrap: balance;
	overflow-wrap: break-word;
	hyphens: none;
}
.sun-car-role__lede { max-width: 34em; margin: 0 0 22px; font-size: 19px; line-height: 1.5; color: rgba(255, 255, 255, 0.92); text-wrap: pretty; }
.sun-car-role__cta { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 14px; }
.sun-car-share { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; }
.sun-car-share__msg { min-height: 24px; font-size: 17px; line-height: 24px; color: rgba(255, 255, 255, 0.92); }
.sun-car-share__copy { min-width: 9em; }                                                     /* label and message cannot move the row */
.sun-car-role__media { grid-row: auto; width: 100%; margin: 28px 0 0; line-height: 0; }
.sun-car-role__media img { display: block; width: 100%; height: auto; aspect-ratio: 3 / 2; object-fit: cover; }

.sun-car-glance { padding-block: 32px 8px; background: #F4F1EA; }
.sun-car-glance__list { margin: 0; padding: 4px 22px; background: #FFFFFF; border: 1px solid rgba(36, 46, 53, 0.14); }
.sun-car-glance__row { display: grid; grid-template-columns: minmax(0, 1fr); gap: 4px; margin: 0; padding: 12px 0; border-top: 1px solid rgba(36, 46, 53, 0.14); }   /* D1 R3: label above value, every row, full panel width */
.sun-car-glance__row:first-child { border-top: 0; }
.sun-car-glance dt { margin: 0; font-family: Alata, sans-serif; font-size: 12px; letter-spacing: 2px; line-height: 1.5; text-transform: uppercase; color: #4A5352; }
.sun-car-glance dd { margin: 0; font-size: 22px; line-height: 1.2; color: #242E35; overflow-wrap: break-word; word-break: normal; hyphens: none; }   /* D1 R3: never mid-word unless one word is wider than the panel */
.sun-car-role__body { padding-block: 24px 56px; background: #F4F1EA; }
.sun-car-block { margin: 0 0 32px; max-width: 40em; }
.sun-car-role .sun-car-block__title { margin: 0 0 12px; font-family: "Cormorant Infant", serif; font-size: 30px; font-weight: 400; line-height: 1.1; color: #242E35; text-wrap: balance; }
.sun-car-block p { margin: 0 0 14px; font-size: 19px; line-height: 1.6; color: #3A4244; text-wrap: pretty; }
.sun-car-block__list { margin: 0; padding: 0 0 0 1.3em; list-style-type: "\2013\00a0\00a0"; }
.sun-car-block__list li { margin: 0 0 8px; padding-left: 4px; font-size: 19px; line-height: 1.5; color: #3A4244; }
.sun-car-block__list li::marker { color: #85602F; }

.sun-car-apply, .sun-car-banner, .sun-car-talent { padding-block: 44px 52px; background: #242E35; color: #FFFFFF; }
:not(.sun-car-role) > .sun-car-talent { padding-inline: max(22px, calc((100% - 1200px) / 2 + 24px)); }   /* on the Careers page, outside the role grid */
.sun-car-apply__title, .sun-car-banner__title, .sun-car-talent__title, .sun-car-related__title {
	margin: 0 0 14px; font-family: "Cormorant Infant", serif; font-size: clamp(32px, 4.2vw, 52px); font-weight: 400; line-height: 1.05; letter-spacing: -0.005em; text-wrap: balance;
}
.sun-car-role .sun-car-apply__title, .sun-car-role .sun-car-banner__title, .sun-car-talent .sun-car-talent__title { color: #FFFFFF; }
.sun-car-apply__intro, .sun-car-banner__text, .sun-car-talent__text { max-width: 34em; margin: 0 0 22px; font-size: 18px; line-height: 1.5; color: rgba(255, 255, 255, 0.92); }
.sun-car-apply__form, .sun-car-talent__form { max-width: 720px; }
/* Gravity Forms on ink: labels, hints and the consent line print in white; fields stay light (white fill, ink text, a visible boundary). Errors sit on a white strip. */
:is(.sun-car-apply, .sun-car-talent) :is(.gfield_label, legend.gfield_label, .gform-field-label, .gfield_description, .gfield_consent_label, .gfield_consent_description, .ginput_counter, .gform_required_legend, .gfield_required, .instruction, label) { color: #FFFFFF !important; }
:is(.sun-car-apply, .sun-car-talent) :is(.gform_validation_errors, .gfield_validation_message, .validation_message) { padding: 8px 12px; background: #FFFFFF; color: #8A1F11 !important; }   /* 9.2:1 on white */
:is(.sun-car-apply, .sun-car-talent) :is(input[type="submit"], button.gform_button, .gform_button) {
	min-height: 52px; padding: 0 30px; border: 1px solid #B98D58; border-radius: 0; background: #B98D58; color: #242E35;
	font-family: Alata, sans-serif; font-size: 12px; letter-spacing: 2.5px; text-transform: uppercase; cursor: pointer;
}
@media (hover: hover) { :is(.sun-car-apply, .sun-car-talent) :is(input[type="submit"], button.gform_button, .gform_button):hover { background: #FFFFFF; border-color: #FFFFFF; } }
.sun-car-banner .sun-car-btn { margin-top: 4px; }

.sun-car-related { padding-block: 44px 52px; background: #FFFFFF; }
.sun-car-role .sun-car-related__title { color: #242E35; }
.sun-car-list--related { margin-top: 8px; }
.sun-car-related__all { margin: 22px 0 0; }
.sun-car-related .sun-car-related__all a { display: inline-flex; align-items: center; min-height: 44px; font-family: Alata, sans-serif; font-size: 12px; letter-spacing: 2.5px; text-transform: uppercase; color: #242E35; text-decoration: underline; text-decoration-color: #85602F; text-underline-offset: 7px; }
@media (hover: hover) { .sun-car-related .sun-car-related__all a:hover { color: #85602F; } }

/* the phone and tablet apply bar: fixed, so it takes no room in the flow */
.sun-car-stickybar {
	position: fixed; left: 0; right: 0; bottom: 0; z-index: 10000;
	box-sizing: border-box; display: flex; align-items: center; gap: 12px;
	padding: 10px 16px;                         /* D1 R4: the theme's back-to-top control (a fixed 70 x 50 box in the corner) is hidden while this bar shows, see 55.6 */
	padding-bottom: calc(10px + env(safe-area-inset-bottom, 0px));
	background: #242E35; border-top: 1px solid rgba(255, 255, 255, 0.2); color: #FFFFFF;
}
.sun-car-stickybar__title { flex: 1 1 auto; min-width: 0; margin: 0; font-size: 18px; line-height: 1.2; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.sun-car-stickybar__cta { flex: 0 0 auto; min-height: 48px !important; padding: 0 22px !important; }
html.sun-car-has-sticky { scroll-padding-bottom: 96px; }
.sun-car-role:has(.sun-car-stickybar) > :nth-last-child(2) { padding-bottom: 88px; }       /* the bar is the last child; the last band keeps its content clear of it */
@media (prefers-reduced-motion: no-preference) { .sun-car-stickybar:not([hidden]) { animation: sun-car-fade 0.15s linear; } }
@keyframes sun-car-fade { from { opacity: 0; } to { opacity: 1; } }

@media (min-width: 900px) {
	.sun-car-stickybar { display: none !important; }
	html.sun-car-has-sticky { scroll-padding-bottom: 0; }
	.sun-car-role:has(.sun-car-stickybar) > :nth-last-child(2) { padding-bottom: 52px; }
	.sun-car-role { grid-template-columns: var(--sun-car-x) minmax(0, 1fr) 48px 340px var(--sun-car-x); }
	.sun-car-role > * { grid-column: 1 / -1; }
	.sun-car-role__hero { padding-block: 64px 56px; }
	.sun-car-role__hero:has(.sun-car-role__media) { grid-template-columns: minmax(0, 1fr) minmax(0, 460px); column-gap: 56px; }
	.sun-car-role__hero:has(.sun-car-role__media) > * { grid-column: 1; }
	.sun-car-role__hero:has(.sun-car-role__media) > .sun-car-role__media { grid-column: 2; grid-row: 1 / span 6; align-self: center; margin: 0; }
	.sun-car-role__body { grid-row: 2; padding-block: 56px; padding-right: calc(var(--sun-car-x) + 388px); }
	.sun-car-glance { grid-column: 4 / 5; grid-row: 2; z-index: 1; align-self: start; position: sticky; top: 104px; margin-top: 56px; padding: 0; background: transparent; }   /* sits over the body band's right-hand gutter */
	.sun-car-glance__list { padding: 8px 26px; }
	.sun-car-apply:has(.sun-car-apply__form), .sun-car-talent:has(.sun-car-talent__form) { display: grid; grid-template-columns: minmax(0, 4fr) minmax(0, 7fr); column-gap: 64px; align-items: start; }
	.sun-car-apply > .sun-car-apply__form, .sun-car-talent > .sun-car-talent__form { grid-column: 2; grid-row: 1 / span 3; max-width: none; }
	.sun-car-apply > :not(.sun-car-apply__form), .sun-car-talent > :not(.sun-car-talent__form) { grid-column: 1; }
	.sun-car-apply, .sun-car-banner, .sun-car-talent, .sun-car-related { padding-block: 80px; }
	.sun-car-role :is(a, button, input, select, textarea) { scroll-margin-top: 96px; }
}
@media (max-width: 899.98px) { .sun-car-glance { grid-row: auto; } }
@media (max-width: 359px) { .sun-car-stickybar__title { display: none; } .sun-car-stickybar__cta { flex: 1 1 auto; } }

/* ---------------------------------------------------------------- 55.4 phones and tablets */
@media (max-width: 767px) {
	/* O15: each facet is one scrolling line of 44 px chips (scroll-snap); the rail has room for the focus ring */
	.sun-car-tools { gap: 12px; }
	.sun-car-facet { flex-wrap: nowrap; gap: 8px; margin: -5px -22px -5px 0; padding: 5px 22px 5px 2px; overflow-x: auto; overscroll-behavior-x: contain; scroll-snap-type: x proximity; scroll-padding-inline: 2px; scrollbar-width: none; }
	.sun-car-facet::-webkit-scrollbar { display: none; }
	.sun-car-chip.sun-car-chip { flex: 0 0 auto; scroll-snap-align: start; white-space: nowrap; }
	.sun-car-search__label { margin-bottom: 0; }
	.sun-car-roles__title { margin-bottom: 14px; font-size: 36px; }
	.sun-car-role .sun-car-block__title { font-size: 27px; }
	.sun-car-role__cta > a.sun-car-btn--primary { width: 100%; }
}
@media (max-width: 900px) {
	/* T2: pressed feedback, held back 90 ms so a scroll flick never flashes */
	.sun-car-card:active { scale: 0.985; opacity: 0.88; transition: scale 0s linear 90ms, opacity 0s linear 90ms; }
	.sun-car-card:active::after { translate: 4px 0; transition: translate 0s linear 90ms; }
	.sun-car-btn:active, .sun-car-btn .elementor-button:active { scale: 0.97; opacity: 0.86; transition: scale 0s linear 90ms, opacity 0s linear 90ms; }
	.sun-car-chip:active { opacity: 0.7; transition: opacity 0s linear 90ms; }
	/* the rule on a card is a keyboard cue: draw it only while the link is :focus-visible (after a tap the link keeps focus) */
	.sun-car-card:focus-within:not(:has(a:focus-visible))::before { transform: scaleX(0); }
}
@media (orientation: landscape) and (max-height: 500px) and (hover: none) {
	.sun-car-roles-wrap.sun-car-roles-wrap, .sun-car-pg-values.sun-car-pg-values, .sun-car-pg-life.sun-car-pg-life, .sun-car-pg-process.sun-car-pg-process,
	.sun-car-pg-faq.sun-car-pg-faq, .sun-car-pg-eeo.sun-car-pg-eeo { padding-block: 40px !important; }
	.sun-car-apply, .sun-car-banner, .sun-car-talent, .sun-car-related { padding-block: 40px; }
}

/* ---------------------------------------------------------------- 55.5 reduced motion, forced colours, print */
@media (prefers-reduced-motion: reduce) {
	[class*="sun-car-"], [class*="sun-car-"]::before, [class*="sun-car-"]::after { transition: none !important; animation: none !important; }
}
@media (forced-colors: active) {
	.sun-car-card::before { background-color: Highlight; forced-color-adjust: none; }
	.sun-car-chip[aria-pressed="true"] { outline: 2px solid Highlight; outline-offset: -3px; }
	.sun-car-badge--new { border: 1px solid CanvasText; }
	.sun-car-stickybar { border-top: 1px solid CanvasText; }
}
@media print {
	.elementor-location-header, .elementor-location-footer, [data-elementor-type="header"], [data-elementor-type="footer"], .sun-skip-link, .vamtam-scroll-to-top,
	.sun-car-stickybar, .sun-car-apply, .sun-car-related, .sun-car-talent, .sun-car-tools, .sun-car-status, .sun-car-crumbs, .sun-car-share__share, .sun-car-share__msg, .sun-car-role__cta > a, .sun-car-role__media { display: none !important; }
	.sun-car-role { display: block; }
	.sun-car-role > * { padding: 0 !important; background: #FFFFFF !important; color: #000000 !important; position: static !important; }
	.sun-car-role__hero, .sun-car-role__body, .sun-car-glance, .sun-car-banner { display: block !important; }
	.sun-car-role .sun-car-role__title, .sun-car-role .sun-car-banner__title, .sun-car-role__lede, .sun-car-banner__text, .sun-car-eyebrow { color: #000000 !important; }
	.sun-car-role .sun-car-role__title { font-size: 26pt; }
	.sun-car-block, .sun-car-block__list, .sun-car-glance__row { break-inside: avoid; }
	.sun-car-block p, .sun-car-block__list li, .sun-car-glance dd { font-size: 11pt; color: #000000; }
	.sun-car-glance__list { border: 1px solid #000000; }
	/* the page address, under the title: the copy button carries it in data-url */
	.sun-car-share { display: block !important; margin-bottom: 12pt; }
	.sun-car-share button.sun-car-share__copy { display: block !important; min-width: 0 !important; min-height: 0 !important; padding: 0 !important; border: 0 !important; background: transparent !important; font-size: 0 !important; }
	.sun-car-share__copy::after { content: attr(data-url); font-family: Alata, sans-serif; font-size: 9pt; letter-spacing: 0; text-transform: none; color: #000000; }
	.sun-car-card { break-inside: avoid; background: #FFFFFF; border: 1px solid #000000; }
	.sun-car-card::before, .sun-car-card::after { display: none; }
}
/* ---------------------------------------------------------------- 55.6 D1 design wrap-up
   Measured by the orchestrator at 1440 and 390 on the private drafts. Later than 55.0-55.5 on purpose: same-specificity rules here win.
   No new colour. Every colour below is a pair this section already uses. */

/* P1: one left edge. --sun-car-gut is the side gutter of every section's 1200 px box, so a heading, a card, a grid and the hero text start on one x. */
html:has(.sun-car-roles, .sun-car-role, .sun-car-pg-hero, .sun-car-talent) { --sun-car-gut: 22px; }
@media (min-width: 768px) { html:has(.sun-car-roles, .sun-car-role, .sun-car-pg-hero, .sun-car-talent) { --sun-car-gut: 24px; } }
.sun-car-roles-wrap.sun-car-roles-wrap { padding-inline: 0 !important; }                    /* the gutter moves onto .sun-car-roles, as the other sections have it on their __inner */
.sun-car-roles { box-sizing: border-box; padding-inline: var(--sun-car-gut, 22px); }
.sun-car-list.sun-car-list { margin: 0; padding: 0; }                                        /* the theme's list margin (30 px) pushed every card in from its heading */
.sun-car-list.sun-car-list--related { margin-top: 8px; }
.sun-car-card .sun-car-facts.sun-car-facts { margin-inline: 0; margin-block-end: 0; padding: 0; }   /* the theme's list indent (about 30 px) pushed type and pay in from the title */
.sun-car-pg-values__grid.sun-car-pg-values__grid, .sun-car-pg-life__grid.sun-car-pg-life__grid, .sun-car-pg-process__list.sun-car-pg-process__list,
.sun-car-pg-life__chapter.sun-car-pg-life__chapter, .sun-car-pg-life__photos.sun-car-pg-life__photos { padding: 0 !important; }   /* Elementor's 10 px container padding */
.sun-car-pg-values__grid.sun-car-pg-values__grid, .sun-car-pg-life__grid.sun-car-pg-life__grid { gap: 14px 16px !important; }
.sun-car-pg-process__list.sun-car-pg-process__list { gap: 14px 20px !important; }
@media (min-width: 768px) and (max-width: 900px) { .sun-car-pg-hero__panel.sun-car-pg-hero__panel { padding-left: var(--sun-car-gut, 24px) !important; } }   /* 901 and up already reads the same edge from the viewport */

/* P2: the roles heading is ink and the size of every other section heading (the kit's h2 rule had made it slate at 62 px) */
.sun-car-roles .sun-car-roles__title.sun-car-roles__title {
	margin-top: 10px;
	font-size: clamp(36px, 4.2vw, 58px) !important;
	line-height: 1.04 !important;
	color: #242E35 !important;                   /* 13.8:1 on white */
}

/* P3: air under a card or step title, and the first line of body text starts at one height across a row.
   Where subgrid exists (Chrome 117, Safari 16, Firefox 71) each card spans one parent row per child (values 4: numeral, title, text, text;
   life 2; steps 3) and the row gap is the spacing, so the tallest title in a row sets the title track. Without it, a 14 px margin gives the air only.
   If a card gains or loses a widget, change its span. */
.sun-car-pg-card .sun-car-pg-card__title .elementor-heading-title, .sun-car-pg-step .sun-car-pg-step__title .elementor-heading-title { margin: 0 0 14px !important; }
@supports (grid-template-rows: subgrid) {
	.sun-car-pg-values__grid > .sun-car-pg-card.sun-car-pg-card, .sun-car-pg-life__grid > .sun-car-pg-card.sun-car-pg-card, .sun-car-pg-process__list > .sun-car-pg-step.sun-car-pg-step {
		display: grid !important; grid-template-columns: minmax(0, 1fr); grid-template-rows: subgrid; row-gap: normal; align-content: start;
	}
	.sun-car-pg-values__grid > .sun-car-pg-card.sun-car-pg-card { grid-row: span 4; }
	.sun-car-pg-life__grid > .sun-car-pg-card.sun-car-pg-card { grid-row: span 2; }
	.sun-car-pg-process__list > .sun-car-pg-step.sun-car-pg-step { grid-row: span 3; }
	.sun-car-pg-card .sun-car-pg-card__title .elementor-heading-title, .sun-car-pg-step .sun-car-pg-step__title .elementor-heading-title,
	.sun-car-pg-card .sun-car-pg-card__num .elementor-heading-title, .sun-car-pg-step .sun-car-pg-step__num .elementor-heading-title { margin-bottom: 0 !important; }
}

/* P4: the hero. The headline balances its lines (the em inherits it); on a phone the two buttons are one width, full width, stacked. */
.sun-car-pg-hero.sun-car-pg-hero h1, .sun-car-pg-hero.sun-car-pg-hero h1 em { text-wrap: balance; }
@media (max-width: 767px) {
	.sun-car-pg-hero__cta.sun-car-pg-hero__cta { flex-direction: column; align-items: stretch; width: 100% !important; }
	.sun-car-pg-hero__cta.sun-car-pg-hero__cta > .sun-car-btn { width: 100%; max-width: 100%; }
	.sun-car-pg-hero__cta .sun-car-btn .elementor-button.elementor-button { width: 100%; }
}

/* P5: the list card on a phone fills the heading's edge; the right side keeps room for the arrow. Pay breaks between the figures and "per hour", not inside them
   (balance picks that break; wrapping the amount in its own span, in the PHP, would make it certain). */
@media (max-width: 767px) { .sun-car-card { padding: 20px 52px 20px 20px; } }
.sun-car-fact--pay { text-wrap: balance; }

/* P6: the questions. Left on the same edge as the heading (the 880 px box the Elementor build gives the inner container used to centre the column),
   and the title row has room for its icon, same inset for the answer. */
.sun-car-pg-faq__inner.sun-car-pg-faq__inner, .sun-car-pg-eeo__inner.sun-car-pg-eeo__inner { --content-width: 100%; }
.sun-car-pg-faq__inner > .e-con-inner, .sun-car-pg-eeo__inner > .e-con-inner { width: 100%; max-width: none; margin-inline: 0; padding-inline: 0; }
.sun-car-pg-faq__acc { width: 100%; max-width: 880px; margin-inline: 0; }
.sun-car-pg-faq .e-n-accordion-item-title { min-height: 56px; padding: 14px 18px !important; }
.sun-car-pg-faq__acc .e-n-accordion-item > [role="region"] { padding-inline: 18px !important; }

/* R1: the parent theme's own title bar is not printed on a role (lagar-child/templates/header/page-title.php returns early); its empty wrapper goes too */
.single-sun_job #sub-header { display: none; }

/* R2: the body and the at-a-glance panel share one grid row, which ends where the body ends; every later band is a full-width row above the panel in the stack.
   Sticky only where there is room beside the body (900 px and up) and height for the panel. */
.sun-car-role > :is(.sun-car-apply, .sun-car-banner, .sun-car-related, .sun-car-talent) { position: relative; z-index: 2; }   /* above the panel's z-index 1, so a panel that ever reaches them paints beneath */
@media (min-width: 900px) and (max-height: 639px) { .sun-car-glance { position: static; } }   /* a panel taller than the window cannot stay in view; let it scroll with the page */

/* R3 sits in the base rules above (label over value, break-word). R4: the panel's box keeps the hero's edge and less side padding; the back-to-top control gives way to the bar. */
@media (max-width: 899.98px) {
	.sun-car-glance__list { padding: 2px 16px; }
	html.sun-car-has-sticky .vamtam-scroll-to-top { display: none !important; }
}

/* R5: a role hero without a photograph reads as the page hero's family: the 40 px gold rule before the eyebrow, three lines at most for the title */
.sun-car-role__hero .sun-car-eyebrow { margin: 6px 0 14px; }
.sun-car-role__hero .sun-car-eyebrow::before { content: ""; display: inline-block; width: 40px; height: 1px; margin-right: 16px; vertical-align: middle; background: #B98D58; }
.sun-car-role .sun-car-role__title { max-width: 14em; }                                    /* balanced, and on a role with no photograph not stretched across the 1200 px box; three lines hold for titles up to about 60 characters */
@media (max-width: 767px) { .sun-car-role__hero .sun-car-eyebrow::before { width: 28px; margin-right: 12px; } }
@media print { .sun-car-role__hero .sun-car-eyebrow::before { display: none; } .single-sun_job #sub-header { display: none; } }
/* 55.7 Pay figures never break inside the range (the PHP wraps only the money; " per hour" may wrap) */
.sun-car-nowrap {
	white-space: nowrap;
}

/* 55.8 Application and talent forms (measured on the live form, owner screenshot 2026-10-14).
   The Name field sat 2 px off the half-width fields below it (its columns were a flex row with a 12 px gap and a 6 px negative margin,
   the half-width fields a 16 px grid gap), so Last and Phone, and First and Email, did not share an edge. And the theme's 20 px vertical
   padding on inputs left 7 px of content height in the 47 px file input, so the "Choose File" button was cut off. */
.gform-theme--orbital.sun-car-form_wrapper .ginput_complex {
	display: grid !important;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	column-gap: 16px;
	margin-inline: 0 !important;
}
.gform-theme--orbital.sun-car-form_wrapper .ginput_complex > span {
	padding-inline: 0 !important;
	margin: 0 !important;
	min-inline-size: 0;
}
@media (max-width: 479px) {
	.gform-theme--orbital.sun-car-form_wrapper .ginput_complex { grid-template-columns: minmax(0, 1fr); row-gap: 8px; }   /* a 146 px input with 30 px side padding leaves 85 px for a name */
}
.gform-theme--orbital.sun-car-form_wrapper .ginput_container_fileupload input[type="file"] {
	block-size: auto !important;
	min-block-size: 47px;
	padding: 0 !important;
	line-height: 45px;
	display: flex;
	align-items: center;
}
.gform-theme--orbital.sun-car-form_wrapper .ginput_container_fileupload input[type="file"]::file-selector-button {
	block-size: 45px;
	margin-inline-end: 14px;
	cursor: pointer;
}

/* 55.9 Application and talent forms: states, focus, file preview, button, confirmation (dark panel).
   Found by the owner's screenshot of a failed submit, then an audit of the whole form on the #242E35 ground (measured, 1440 px):
   - error messages were white text in a white box (the label rule above forces every .gfield_description white), so they read as
     empty extra inputs, and they sat ABOVE the input, pushing it out of line with its neighbour;
   - the error summary was #C02B0A on #242E35, 2.4:1;
   - keyboard focus drew no ring at all on the white inputs (a #242E35 outline on a #242E35 panel);
   - the file already uploaded in a failed attempt was shown as a #242E35 file name (1.0:1), a 100% in #545D5C (2.0:1) and a loose
     trash icon, while the file input above it still said "No file chosen";
   - the submit button was #242E35 on the #242E35 panel (only its border showed), and the thank-you message was #242E35 on it.
   Error colour #FF9E8A is 6.9:1 on #242E35; the focus ring #B98D58 is 4.6:1 and the button text on it is 4.6:1. */
.gform-theme--orbital.sun-car-form_wrapper {
	--sun-err: #FF9E8A;
	--sun-ring: #B98D58;
}
.gform-theme--orbital.sun-car-form_wrapper .gform_fields { row-gap: 30px; }

/* Sub-labels (First, Last) one step quieter than the field label. */
.gform-theme--orbital.sun-car-form_wrapper .ginput_complex label {
	margin-block-end: 6px;
	font-size: 12px;
	letter-spacing: 0.14em;
	color: rgba(255, 255, 255, 0.82) !important;
}

/* Keyboard focus you can see. */
.gform-theme--orbital.sun-car-form_wrapper :is(input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]), textarea, select):focus-visible {
	outline: 3px solid var(--sun-ring) !important;
	outline-offset: 2px !important;
	box-shadow: none !important;
}
.gform-theme--orbital.sun-car-form_wrapper .gform_footer .gform_button:focus-visible {
	outline: 3px solid #FFFFFF !important;
	outline-offset: 3px !important;
}

/* Textareas: a note is a few lines, not a 290 px slab. */
.gform-theme--orbital.sun-car-form_wrapper textarea { min-block-size: 168px; block-size: 168px; resize: vertical; }

/* Error states. The message goes BELOW its input (so a half-width pair stays on one line), in plain coloured text, no box. */
.gform-theme--orbital.sun-car-form_wrapper .gfield.gfield_error { display: flex; flex-direction: column; }
.gform-theme--orbital.sun-car-form_wrapper .gfield_error .gfield_validation_message {
	order: 90;
	margin: 10px 0 0;
	padding: 0 !important;
	background: transparent !important;
	border: 0;
	color: var(--sun-err) !important;
	font: 400 14px/1.4 Alata, sans-serif !important;
	letter-spacing: 0.02em;
}
.gform-theme--orbital.sun-car-form_wrapper .gfield_error .gfield_validation_message::before {
	content: "!";
	display: inline-grid;
	place-items: center;
	inline-size: 17px;
	block-size: 17px;
	margin-inline-end: 8px;
	border: 1.5px solid currentColor;
	border-radius: 50%;
	font-size: 11px;
	line-height: 1;
	vertical-align: 1px;
}
.gform-theme--orbital.sun-car-form_wrapper .gfield_error .gfield_validation_message.validation_message--hidden-on-empty:empty { display: none; }
.gform-theme--orbital.sun-car-form_wrapper .gfield_error :is(input:not([type="checkbox"]):not([type="radio"]), textarea, select) {
	border-color: var(--sun-err) !important;
	box-shadow: 0 0 0 1px var(--sun-err) !important;
}
.gform-theme--orbital.sun-car-form_wrapper .gform_validation_errors {
	margin: 0 0 28px;
	padding: 18px 22px;
	background: rgba(255, 158, 138, 0.08);
	border: 1px solid var(--sun-err);
	border-inline-start-width: 4px;
	border-radius: 0;
	box-shadow: none;
	color: #FFD9D0;
}
.gform-theme--orbital.sun-car-form_wrapper .gform_validation_errors .gform_submission_error {
	margin: 0 0 8px;
	color: #FFFFFF;
	font: 400 15px/1.45 Alata, sans-serif;
	letter-spacing: 0.02em;
	text-transform: none;
}
.gform-theme--orbital.sun-car-form_wrapper .gform_validation_errors .gform-icon,
.gform-theme--orbital.sun-car-form_wrapper .gform_validation_errors .gform-icon::before { color: var(--sun-err) !important; }
.gform-theme--orbital.sun-car-form_wrapper .gform_validation_errors .gform-icon { background: transparent !important; border-color: var(--sun-err) !important; }
.gform-theme--orbital.sun-car-form_wrapper .gform_validation_errors :is(li, a) {
	color: #FFD9D0;
	font-family: "Cormorant Infant", Georgia, serif;
	font-size: 18px;
	line-height: 1.45;
}
.gform-theme--orbital.sun-car-form_wrapper .gform_validation_errors a { text-decoration: underline; text-underline-offset: 3px; }
.gform-theme--orbital.sun-car-form_wrapper .gform_validation_errors a:hover { color: #FFFFFF; }

/* A file that already went up in a failed attempt: a plain row (name, status, remove), and no "No file chosen" above it. */
.gform-theme--orbital.sun-car-form_wrapper .ginput_container_fileupload:has(.ginput_preview) input[type="file"] { display: none; }
.gform-theme--orbital.sun-car-form_wrapper .ginput_preview_list { margin: 0; }
.gform-theme--orbital.sun-car-form_wrapper .ginput_preview {
	position: static !important;
	display: grid !important;
	grid-template-columns: minmax(0, 1fr) auto;
	align-items: center;
	column-gap: 12px;
	row-gap: 8px;
	padding: 8px 6px 12px 16px;
	border: 1px solid rgba(255, 255, 255, 0.4);
	background: rgba(255, 255, 255, 0.06);
}
.gform-theme--orbital.sun-car-form_wrapper .gfield_fileupload_filename {
	grid-area: 1 / 1;
	color: #FFFFFF !important;
	font: 400 15px/1.3 Alata, sans-serif !important;
	overflow-wrap: anywhere;
}
.gform-theme--orbital.sun-car-form_wrapper .gform_delete_file {
	position: static !important;
	grid-area: 1 / 2;
	display: grid !important;
	place-items: center;
	inline-size: 44px;
	block-size: 44px;
	margin: 0;
	padding: 0;
	background: transparent;
	border: 0;
	color: #FFFFFF !important;
	cursor: pointer;
}
.gform-theme--orbital.sun-car-form_wrapper .gform_delete_file .dashicons { color: inherit !important; font-size: 22px; inline-size: 22px; block-size: 22px; }
.gform-theme--orbital.sun-car-form_wrapper .gform_delete_file .dashicons::before,
.gform-theme--orbital.sun-car-form_wrapper .gform_delete_file::before { color: currentColor !important; }
.gform-theme--orbital.sun-car-form_wrapper .gform_delete_file:hover { color: var(--sun-err) !important; }
.gform-theme--orbital.sun-car-form_wrapper .gform_delete_file:focus-visible { outline: 3px solid var(--sun-ring); outline-offset: 0; }
.gform-theme--orbital.sun-car-form_wrapper .gfield_fileupload_progress {
	grid-area: 2 / 1 / 3 / 3;
	position: static !important;
	display: flex !important;
	align-items: center;
	gap: 14px;
	margin: 0 10px 0 0;
}
.gform-theme--orbital.sun-car-form_wrapper .gfield_fileupload_progress_complete::after { display: none !important; }
.gform-theme--orbital.sun-car-form_wrapper .gfield_fileupload_progressbar { flex: 1; block-size: 4px; background: rgba(255, 255, 255, 0.25) !important; }
.gform-theme--orbital.sun-car-form_wrapper .gfield_fileupload_progressbar_progress { background: var(--sun-ring) !important; }
.gform-theme--orbital.sun-car-form_wrapper .gfield_fileupload_percent { font-size: 0 !important; color: transparent !important; }
.gform-theme--orbital.sun-car-form_wrapper .gfield_fileupload_progress_complete .gfield_fileupload_percent::after {
	content: "Added \2713";
	color: #FFFFFF;
	font: 400 13px/1 Alata, sans-serif;
	letter-spacing: 0.06em;
	white-space: nowrap;
}

/* Consent: one plain sentence (not a scroll box), a readable link, and the box in line with the column edge. */
.gform-theme--orbital.sun-car-form_wrapper .gfield--type-consent .gfield_consent_description {
	max-block-size: none;
	overflow: visible;
	padding: 0;
	border: 0;
	background: transparent;
	margin-block-end: 6px;
}
.gform-theme--orbital.sun-car-form_wrapper :is(.gfield_consent_description, .gfield_description, .gfield_consent_label) a {
	color: #FFFFFF !important;
	text-decoration: underline !important;
	text-underline-offset: 3px;
}
.gform-theme--orbital.sun-car-form_wrapper :is(.gfield_consent_description, .gfield_description, .gfield_consent_label) a:hover { color: #B98D58 !important; }
.gform-theme--orbital.sun-car-form_wrapper .gfield--type-consent input[type="checkbox"] { margin-inline-start: -11px; }

/* The send button: gold on the ink panel (it was ink on ink), white on hover, full width on a phone. */
:is(.sun-car-apply, .sun-car-talent) .gform-theme--orbital.gform_wrapper .gform_footer .gform_button {
	background-color: #B98D58 !important;
	border: 1px solid #B98D58 !important;
	color: #242E35 !important;
	min-height: 52px;
}
:is(.sun-car-apply, .sun-car-talent) .gform-theme--orbital.gform_wrapper .gform_footer .gform_button:hover {
	background-color: #FFFFFF !important;
	border-color: #FFFFFF !important;
	color: #242E35 !important;
}
.gform-theme--orbital.sun-car-form_wrapper .gform_footer { margin-block-start: 8px; }
@media (max-width: 599px) {
	.gform-theme--orbital.sun-car-form_wrapper .gform_footer .gform_button { inline-size: 100%; }
}

/* The thank-you after sending. It was ink text on the ink panel. */
:is(.sun-car-apply, .sun-car-talent) .gform_confirmation_message {
	padding: 4px 0 4px 22px;
	border-inline-start: 3px solid #B98D58;
	color: #FFFFFF !important;
	font-size: 26px;
	line-height: 1.3;
}

/* ==== END 55 ==== */

/* ==========================================================================
   56. JOURNEY (private draft page; flag: post meta _sunstone_journey = 1) -- namespace sun-jrn-
   --------------------------------------------------------------------------
   Contract: docs/audits/journey-sprint/spec/CONTRACT.md (O4 section 56, O6 viewport units, O8 chooser = a list of links,
   O9 one sticky path bar, O12 art by CSS mask, O14 loops ship empty). Class and attribute names: BUILD-SPEC 2. Look: DESIGN 5.3.
   Markup comes from the Elementor page (journey-page-build.py); behaviour from js/sun-journey.js, which adds only markers
   (html.sun-jrn-js, aria-current, the bar label, .sun-jrn-in, .sun-jrn-playing). This section styles the finished page with
   JavaScript off: nothing here waits for a script to show content.
   Rules that hold:
   - Phone first. The base rules (no media query) are the 360 to 430 rendering. Everything wider is a min-width layer after
     them: 768, 901 and 1025 are the site's breakpoints.
   - Tokens only (TOKENS.md): ink #242E35, cream #F4F1EA, white, gold ornament #B98D58, gold TEXT on light #85602F, body #3A4244,
     the ELIXIR ground #141018 on the ELIXIR stop alone. Cormorant Infant and Alata only. Square corners, no gradient, one
     shadow (the hover lift). Gold is never text on a photograph; text never sits straight on a photograph.
   - Every :hover sits in (hover: hover). Every tap target is 44 px or more and 8 px from the next. Focus rings stay global
     (the site ring); this section only keeps the sticky bar from covering a focused control.
   - Viewport units: vh then svh, never dvh (O6). Safe-area insets on every edge a rule touches. No scroll-padding on html.
   - Motion: opacity, translate, scale, plus stroke-dashoffset on aria-hidden art. Scroll-linked where animation-timeline is
     supported, a one-time reveal where it is not and JS runs, nothing under prefers-reduced-motion.
   - No box that can be 0 high has overflow:hidden or clip (D138). No native nesting. No stylesheet imports, no font-face, no URL that is not an inline data URI.
   TO REVERT: delete this whole section (banner to END 56). Removing the post meta alone switches the script and body class off.
   ========================================================================== */

/* ---------------------------------------------------------------- 56.0 tokens, grounds, page-wide settings */
/* Everything is scoped to body.sun-journey (the PHP flag adds it), so removing the post meta makes this whole section inert. */
body.sun-journey {
	--sun-jrn-ink: #242E35;
	--sun-jrn-ink-2: #2F383D;              /* pressed / selected ground inside an ink block (54) */
	--sun-jrn-cream: #F4F1EA;
	--sun-jrn-white: #FFFFFF;
	--sun-jrn-gold: #B98D58;               /* ornament; text only on solid ink */
	--sun-jrn-gold-text: #85602F;          /* gold text on cream or white: 5.02:1 and 5.66:1 */
	--sun-jrn-plum: #141018;               /* the ELIXIR stop's own ground (TOKENS 1.2); that stop only */
	--sun-jrn-hdr: 90px;                   /* the theme header on a phone: 90 px at 360 to 430 (S0-A B10); 80 px from 1025 */
	--sun-jrn-bar: 48px;                   /* the sticky path bar */
	--sun-jrn-now: 24px;                   /* the bar's progress strip, drawn below the bar */
	--sun-jrn-peek: 190px;                 /* how much of the chooser shows under the hero on the first screen */
	--sun-jrn-off: calc(var(--sun-jrn-bar) + var(--sun-jrn-now) + 8px);   /* scroll-margin: nothing lands under the bar */
	--sun-jrn-edge: max(22px, env(safe-area-inset-left, 0px));
	--sun-jrn-edger: max(22px, env(safe-area-inset-right, 0px));
	--sun-jrn-ease: cubic-bezier(0.32, 0.72, 0, 1);
	/* light ground (default) */
	--sun-jrn-bg: var(--sun-jrn-cream);
	--sun-jrn-fg: #242E35;                 /* headings */
	--sun-jrn-tx: #3A4244;                 /* running copy */
	--sun-jrn-ey: #85602F;                 /* eyebrows and links */
	--sun-jrn-gl: #85602F;                 /* art line colour */
	--sun-jrn-ln: rgba(36, 46, 53, 0.14);  /* hairlines */
	--sun-jrn-bd: #6E6E6E;                 /* a border a person must see */
	--sun-jrn-btn-bg: #242E35;
	--sun-jrn-btn-fg: #FFFFFF;
	--sun-jrn-btn-hv-bg: #B98D58;
	--sun-jrn-btn-hv-fg: #242E35;
}
/* the whole page keeps the light scheme at every width: it has no dark design, and gold on ink falls to 2.4:1 under forced darkening (54r A4) */
html:has(.sun-jrn-choose) { color-scheme: only light; }

/* dark grounds: the hero, the chooser, a path's heading band, ink frames, and the ELIXIR stop */
.sun-jrn-hero, .sun-jrn-choose, .sun-jrn-path__head, .sun-jrn-fr--ink, .sun-jrn-fr--elixir {
	--sun-jrn-bg: #242E35;
	--sun-jrn-fg: #FFFFFF;
	--sun-jrn-tx: rgba(255, 255, 255, 0.9);
	--sun-jrn-ey: #B98D58;
	--sun-jrn-gl: #B98D58;
	--sun-jrn-ln: rgba(255, 255, 255, 0.2);
	--sun-jrn-bd: rgba(255, 255, 255, 0.7);
	--sun-jrn-btn-bg: #B98D58;
	--sun-jrn-btn-fg: #242E35;
	--sun-jrn-btn-hv-bg: #FFFFFF;
	--sun-jrn-btn-hv-fg: #242E35;
}
.sun-jrn-fr--elixir { --sun-jrn-bg: #141018; }

/* Elementor containers: take back its padding and gap variables so the edges below are the only edges */
.sun-jrn-hero, .sun-jrn-choose, .sun-jrn-nav, .sun-jrn-path, .sun-jrn-path__head, .sun-jrn-path__frames, .sun-jrn-fr, .sun-jrn-fr__media, .sun-jrn-fr__copy,
.sun-jrn-fr__cta, .sun-jrn-close, .sun-jrn-hero__media, .sun-jrn-hero__panel, .sun-jrn-hero__cta {
	--padding-top: 0px; --padding-right: 0px; --padding-bottom: 0px; --padding-left: 0px;
	--gap: 0px; --row-gap: 0px; --column-gap: 0px;
	box-sizing: border-box;
}
.sun-jrn-hero > .e-con-inner, .sun-jrn-choose > .e-con-inner, .sun-jrn-path > .e-con-inner, .sun-jrn-path__frames > .e-con-inner, .sun-jrn-fr > .e-con-inner,
.sun-jrn-close > .e-con-inner, .sun-jrn-hero__panel > .e-con-inner, .sun-jrn-fr__copy > .e-con-inner {
	width: 100%; max-width: none; margin: 0; padding: 0; gap: 0;
}

/* one anchor offset for every jump target and control: the bar and its strip (and the header while it is shown, below).
   Not on html: scroll-padding there shifted every view-timeline window by the admin bar (D137). */
.sun-jrn-path, .sun-jrn-fr, .sun-jrn-close { scroll-margin-top: var(--sun-jrn-off); }
/* the chooser sits above the bar's own place in the page, so only the theme header can cover it */
.sun-jrn-choose, .sun-jrn-choose :is(a[href], button, [tabindex]:not([tabindex="-1"])) { scroll-margin-top: calc(var(--sun-jrn-hdr) + 8px); }
.sun-jrn-path :is(a[href], button, [tabindex]:not([tabindex="-1"])),
.sun-jrn-close :is(a[href], button, [tabindex]:not([tabindex="-1"])) { scroll-margin-top: var(--sun-jrn-off); }
/* a container with tabindex="-1" takes focus from a fragment jump but is not a keyboard stop, so it needs no ring */
.sun-jrn-path:focus, .sun-jrn-fr:focus { outline: none; }

/* ---------------------------------------------------------------- 56.1 type roles (phone sizes; the section 54 scale) */
.sun-jrn-hero__label, .sun-jrn-hero__label .elementor-heading-title, .sun-jrn-kicker.sun-jrn-kicker, .sun-jrn-kicker.sun-jrn-kicker .elementor-heading-title,
.sun-jrn-draft, .sun-jrn-draft .elementor-widget-container {
	margin: 0;
	font-family: Alata, sans-serif;
	font-size: 12px;
	font-weight: 400;
	line-height: 1.5;
	letter-spacing: 3px;
	text-transform: uppercase;
	color: var(--sun-jrn-ey);
}
.sun-jrn-hero__title, .sun-jrn-hero__title .elementor-heading-title {
	margin: 0;
	font-family: "Cormorant Infant", serif;
	font-size: clamp(34px, 10vw, 40px);
	font-weight: 300;
	line-height: 1.02;
	letter-spacing: -0.01em;
	text-wrap: balance;
	color: var(--sun-jrn-fg);
}
.sun-jrn-h2.sun-jrn-h2, .sun-jrn-h2.sun-jrn-h2 .elementor-heading-title {
	margin: 0;
	font-family: "Cormorant Infant", serif;
	font-size: clamp(32px, 8.4vw, 40px);
	font-weight: 300;
	line-height: 1.04;
	letter-spacing: -0.005em;
	text-wrap: balance;
	color: var(--sun-jrn-fg);
}
.sun-jrn-h3.sun-jrn-h3, .sun-jrn-h3.sun-jrn-h3 .elementor-heading-title {
	margin: 0;
	font-family: "Cormorant Infant", serif;
	font-size: clamp(29px, 8.2vw, 34px);
	font-weight: 400;
	line-height: 1.06;
	letter-spacing: -0.005em;
	text-wrap: balance;
	color: var(--sun-jrn-fg);
}
.sun-jrn-hero__lede, .sun-jrn-hero__lede p, .sun-jrn-body.sun-jrn-body, .sun-jrn-body.sun-jrn-body p, .sun-jrn-choose__body, .sun-jrn-choose__body p {
	margin: 0;
	font-family: "Cormorant Infant", serif;
	font-size: 17px;
	font-weight: 400;
	line-height: 1.5;
	max-width: 31em;
	text-wrap: pretty;
	color: var(--sun-jrn-tx);
}
.sun-jrn-body.sun-jrn-body p + p, .sun-jrn-hero__lede p + p { margin-top: 0.75em; }
.sun-jrn-aside.sun-jrn-aside, .sun-jrn-aside.sun-jrn-aside p {      /* "In your glass: ..." visible to everyone, never toggled */
	margin: 0;
	font-family: "Cormorant Infant", serif;
	font-size: 16px;
	font-weight: 400;
	line-height: 1.4;
	max-width: 31em;
	color: var(--sun-jrn-tx);
}
.sun-jrn-aside.sun-jrn-aside { padding-top: 12px; border-top: 1px solid var(--sun-jrn-ln); }
.sun-jrn-age.sun-jrn-age, .sun-jrn-age.sun-jrn-age p {              /* the 21+ sentence: ordinary text, same screen as the primary link */
	margin: 0;
	font-family: "Cormorant Infant", serif;
	font-size: 16px;
	font-weight: 400;
	line-height: 1.4;
	max-width: 31em;
	color: var(--sun-jrn-tx);
}
.sun-jrn-age.sun-jrn-age { padding-top: 14px; border-top: 1px solid var(--sun-jrn-ln); }
.sun-jrn-body a, .sun-jrn-aside a, .sun-jrn-age a { color: var(--sun-jrn-ey); text-decoration: underline; text-underline-offset: 3px; }
.sun-jrn-draft.sun-jrn-draft { font-size: 11px; letter-spacing: 1.5px; }
.sun-jrn-draft .elementor-widget-container { display: inline-block; padding: 4px 10px; border: 1px solid currentColor; }

/* ---------------------------------------------------------------- 56.2 buttons and links (kit button rules beat one class: doubled) */
.sun-jrn-btn.sun-jrn-btn .elementor-button {
	display: inline-flex; align-items: center; justify-content: center;
	box-sizing: border-box;
	width: 100%;
	min-height: 52px;
	padding: 0 24px;
	border: 1px solid transparent;
	border-radius: 0;
	font-family: Alata, sans-serif;
	font-size: 12px;
	font-weight: 400;
	line-height: 1.3;
	letter-spacing: 2.5px;
	text-align: center;
	text-transform: uppercase;
	text-decoration: none;
	transition: background-color 0.2s ease, color 0.2s ease, border-color 0.2s ease;
}
.sun-jrn-btn--primary.sun-jrn-btn .elementor-button { background: var(--sun-jrn-btn-bg); border-color: var(--sun-jrn-btn-bg); color: var(--sun-jrn-btn-fg) !important; }
.sun-jrn-btn--primary.sun-jrn-btn .elementor-button:focus-visible { background: var(--sun-jrn-btn-hv-bg); border-color: var(--sun-jrn-btn-hv-bg); color: var(--sun-jrn-btn-hv-fg) !important; }
.sun-jrn-btn--ghost.sun-jrn-btn .elementor-button { background: transparent; border-color: var(--sun-jrn-bd); color: var(--sun-jrn-fg) !important; }
.sun-jrn-btn--ghost.sun-jrn-btn .elementor-button:focus-visible { background: var(--sun-jrn-fg); border-color: var(--sun-jrn-fg); color: var(--sun-jrn-bg) !important; }
.sun-jrn-btn--link.sun-jrn-btn .elementor-button {
	width: auto; min-height: 48px; padding: 0 4px; justify-content: flex-start;
	background: transparent; border-color: transparent; color: var(--sun-jrn-fg) !important;
	text-decoration: underline; text-decoration-color: var(--sun-jrn-ey); text-decoration-thickness: 1px; text-underline-offset: 7px;
}
.sun-jrn-btn--link.sun-jrn-btn .elementor-button:focus-visible { color: var(--sun-jrn-ey) !important; }
.sun-jrn-btn .elementor-button-wrapper { display: block; }
@media (hover: hover) {
	.sun-jrn-btn--primary.sun-jrn-btn .elementor-button:hover { background: var(--sun-jrn-btn-hv-bg); border-color: var(--sun-jrn-btn-hv-bg); color: var(--sun-jrn-btn-hv-fg) !important; }
	.sun-jrn-btn--ghost.sun-jrn-btn .elementor-button:hover { background: var(--sun-jrn-fg); border-color: var(--sun-jrn-fg); color: var(--sun-jrn-bg) !important; }
	.sun-jrn-btn--link.sun-jrn-btn .elementor-button:hover { color: var(--sun-jrn-ey) !important; }
}
/* text links that are widgets of their own: "Next: place", "Choose another feeling", the also-list. 48 px rows, 8 px apart. */
.sun-jrn-next:is(a), .sun-jrn-next a, .sun-jrn-back:is(a), .sun-jrn-back a, .sun-jrn-also a {      /* the class is on the anchor (a.sun-jrn-next) or on a widget around it */
	display: flex; align-items: center;
	box-sizing: border-box;
	min-height: 48px;
	font-family: Alata, sans-serif;
	font-size: 12px;
	letter-spacing: 2.4px;
	line-height: 1.4;
	text-transform: uppercase;
	text-decoration: none;
	color: var(--sun-jrn-fg);
}
.sun-jrn-next:is(a)::after, .sun-jrn-next a::after { content: "\2192"; content: "\2192" / ""; margin-left: 10px; transition: translate 0.2s ease; }   /* arrow, decorative: no alternative text */
.sun-jrn-back:is(a)::before, .sun-jrn-back a::before { content: "\2191"; content: "\2191" / ""; margin-right: 10px; }
.sun-jrn-next:is(a), .sun-jrn-next a, .sun-jrn-back:is(a), .sun-jrn-back a { text-decoration: underline; text-decoration-color: var(--sun-jrn-ey); text-decoration-thickness: 1px; text-underline-offset: 7px; }
.sun-jrn-also { margin: 0; padding: 0; list-style: none; }
.sun-jrn-also ul, .sun-jrn-also ol { margin: 0; padding: 0; list-style: none; }
.sun-jrn-also li { margin: 0 0 8px; padding: 0; list-style: none; }
.sun-jrn-also li:last-child { margin-bottom: 0; }
.sun-jrn-also a {
	padding: 0 16px; min-height: 52px; justify-content: space-between;
	border: 1px solid var(--sun-jrn-bd);
	font-family: "Cormorant Infant", serif; font-size: 19px; letter-spacing: 0; text-transform: none; line-height: 1.2;
	transition: background-color 0.2s ease, border-color 0.2s ease;
}
.sun-jrn-also a::after { content: "\2192"; content: "\2192" / ""; margin-left: 12px; color: var(--sun-jrn-ey); }
@media (hover: hover) {
	.sun-jrn-also a:hover { border-color: var(--sun-jrn-gold); }
	.sun-jrn-next:is(a):hover::after, .sun-jrn-next a:hover::after { translate: 4px 0; }
	.sun-jrn-back:is(a):hover, .sun-jrn-back a:hover, .sun-jrn-next:is(a):hover, .sun-jrn-next a:hover { color: var(--sun-jrn-ey); }
}

/* ---------------------------------------------------------------- 56.3 the hero: a photograph over an ink panel (O11; DESIGN 5.3 items 1, 2, 3) */
.sun-jrn-hero {
	position: relative;
	display: flex; flex-direction: column;
	width: 100%;
	/* the first screen is the stage minus a peek of the chooser, so the question is on screen and the answers are one short scroll away */
	min-height: calc(100vh - var(--sun-jrn-hdr) - var(--sun-jrn-peek));
	min-height: calc(100svh - var(--sun-jrn-hdr) - var(--sun-jrn-peek));
	background: var(--sun-jrn-ink);
	padding: 0 !important;
}
.sun-jrn-hero > .e-con-inner { display: flex; flex-direction: column; flex: 1 1 auto; }
/* the photograph takes whatever height the panel leaves (item 2: it grows with the screen), never under 150 px, so its box is never 0 high */
.sun-jrn-hero__media {
	position: relative;
	display: block;
	flex: 1 1 auto;
	width: 100%;
	min-height: 150px;
	min-height: clamp(150px, 24vh, 320px);
	min-height: clamp(150px, 24svh, 320px);
	background: var(--sun-jrn-ink-2);       /* what shows before the photograph paints */
}
.sun-jrn-hero .sun-jrn-hero__img, .sun-jrn-hero .sun-jrn-hero__img .elementor-widget-container { position: absolute; inset: 0; width: 100%; height: 100%; margin: 0; }
.sun-jrn-hero .sun-jrn-hero__img img { display: block; width: 100%; height: 100%; max-width: none; object-fit: cover; object-position: 50% 40%; }
/* the ridge: a hillside line cut across the photograph's foot, ink below it, gold on it (CSS mask, 2 data URIs under 300 bytes each) */
.sun-jrn-hero__media::before, .sun-jrn-hero__media::after {
	content: ""; position: absolute; left: 0; right: 0; bottom: -1px; height: 26px; z-index: 2; pointer-events: none;
	-webkit-mask-repeat: no-repeat; mask-repeat: no-repeat;
	-webkit-mask-size: 100% 100%; mask-size: 100% 100%;
}
.sun-jrn-hero__media::before { background-color: #242E35; -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 390 44' preserveAspectRatio='none'%3E%3Cpath d='M0 30C40 20 70 8 120 14S190 30 240 20S330 2 390 12V44H0Z' fill='%23000'/%3E%3C/svg%3E"); mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 390 44' preserveAspectRatio='none'%3E%3Cpath d='M0 30C40 20 70 8 120 14S190 30 240 20S330 2 390 12V44H0Z' fill='%23000'/%3E%3C/svg%3E"); }
.sun-jrn-hero__media::after  { background-color: #B98D58; -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 390 44' preserveAspectRatio='none'%3E%3Cpath d='M0 30C40 20 70 8 120 14S190 30 240 20S330 2 390 12' fill='none' stroke='%23000' stroke-width='1.5' vector-effect='non-scaling-stroke'/%3E%3C/svg%3E"); mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 390 44' preserveAspectRatio='none'%3E%3Cpath d='M0 30C40 20 70 8 120 14S190 30 240 20S330 2 390 12' fill='none' stroke='%23000' stroke-width='1.5' vector-effect='non-scaling-stroke'/%3E%3C/svg%3E"); }
.sun-jrn-hero__panel {
	position: relative;
	display: flex; flex-direction: column; gap: 8px;
	flex: none;
	padding: 6px var(--sun-jrn-edger) 24px var(--sun-jrn-edge);
	background: var(--sun-jrn-ink);
}
/* coursed stone, behind the headline only and never behind the cards (item 3) */
.sun-jrn-hero__panel::before {
	content: ""; position: absolute; left: 0; right: 0; top: 0; height: 62%; z-index: 0; pointer-events: none;
	background-color: #FFFFFF; opacity: 0.04;
	-webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='80' viewBox='0 0 120 80'%3E%3Cpath d='M0 0H120M0 0V20M60 0V20M120 0V20M0 20H120M30 20V40M90 20V40M0 40H120M0 40V60M60 40V60M120 40V60M0 60H120M30 60V80M90 60V80' fill='none' stroke='%23000' stroke-width='1'/%3E%3C/svg%3E"); mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='80' viewBox='0 0 120 80'%3E%3Cpath d='M0 0H120M0 0V20M60 0V20M120 0V20M0 20H120M30 20V40M90 20V40M0 40H120M0 40V60M60 40V60M120 40V60M0 60H120M30 60V80M90 60V80' fill='none' stroke='%23000' stroke-width='1'/%3E%3C/svg%3E");
	-webkit-mask-size: 120px 80px; mask-size: 120px 80px;
}
.sun-jrn-hero__panel > * { position: relative; z-index: 1; }
.sun-jrn-hero__label, .sun-jrn-hero__label .elementor-heading-title { color: #B98D58; }
.sun-jrn-hero__lede, .sun-jrn-hero__lede p { font-size: 16px; line-height: 1.35; }
.sun-jrn-hero__cta { margin-top: 6px; }
.sun-jrn-hero .sun-jrn-draft { align-self: flex-start; margin-bottom: 4px; }

/* ---------------------------------------------------------------- 56.4 the chooser: a labelled list of four links, two by two (O8; DESIGN 5.3 items 3, 5) */
.sun-jrn-choose {
	display: flex; flex-direction: column;
	width: 100%;
	background: var(--sun-jrn-ink);
	padding: 4px var(--sun-jrn-edger) 40px var(--sun-jrn-edge) !important;
}
.sun-jrn-choose::before { content: ""; display: block; flex: none; align-self: flex-start; width: 40px; height: 2px; margin-bottom: 18px; background: #B98D58; }
.sun-jrn-choose .sun-jrn-h2 { margin-bottom: 8px; }
.sun-jrn-choose__body, .sun-jrn-choose__body p { margin-bottom: 14px; color: rgba(255, 255, 255, 0.9); }
.sun-jrn-choose__list { margin: 0; padding: 0; list-style: none; display: grid; grid-template-columns: minmax(0, 1fr); gap: 8px; }
.sun-jrn-choose__item { margin: 0; padding: 0; list-style: none; min-width: 0; }
.sun-jrn-choose__link {
	position: relative;
	display: flex; flex-wrap: wrap; align-items: center; align-content: flex-start; gap: 4px 8px;
	box-sizing: border-box;
	min-height: 64px;
	padding: 11px 12px 10px;
	border: 1px solid rgba(255, 255, 255, 0.7);
	border-radius: 0;
	background: transparent;
	color: #FFFFFF;
	text-decoration: none;
	transition: background-color 0.2s ease, border-color 0.2s ease;
}
.sun-jrn-choose__link svg { flex: none; width: 28px; height: 28px; color: #B98D58; }
.sun-jrn-choose__word { flex: 1 1 auto; min-width: 0; font-family: "Cormorant Infant", serif; font-size: 22px; font-weight: 400; line-height: 1; color: #FFFFFF; }
.sun-jrn-choose__hint { display: block; flex: 0 0 100%; font-family: "Cormorant Infant", serif; font-size: 15px; line-height: 1.2; text-wrap: balance; color: rgba(255, 255, 255, 0.82); }
.sun-jrn-choose__link[aria-current] { background: var(--sun-jrn-ink-2); border-color: #B98D58; box-shadow: inset 0 2px 0 #B98D58; }
@media (hover: hover) { .sun-jrn-choose__link:hover { background: var(--sun-jrn-ink-2); border-color: #B98D58; } }

/* ---------------------------------------------------------------- 56.5 the sticky path bar (O9): four links, the current one underlined; no call to action */
.sun-jrn-nav.sun-jrn-nav {
	position: sticky;
	top: var(--sun-jrn-top, 0px);
	z-index: 90;                              /* under the theme header (11000) while it shows; nothing of ours is higher */
	width: 100%;
	min-height: var(--sun-jrn-bar);
	margin: 0;
	padding: 0 !important;
	background: #FFFFFF;
	border-block: 1px solid rgba(36, 46, 53, 0.14);
	box-sizing: border-box;
}
.sun-jrn-nav__list, .sun-jrn-nav ol, .sun-jrn-nav ul { display: flex; gap: 8px; width: 100%; max-width: 1200px; margin: 0 auto; padding: 0 max(8px, env(safe-area-inset-right, 0px)) 0 max(8px, env(safe-area-inset-left, 0px)); list-style: none; box-sizing: border-box; }
.sun-jrn-nav li { flex: 1 1 0; min-width: 0; margin: 0; padding: 0; list-style: none; }
.sun-jrn-nav__link {
	position: relative;
	display: flex; align-items: center; justify-content: center;
	box-sizing: border-box;
	min-width: 44px;
	min-height: var(--sun-jrn-bar);
	padding: 0 2px;
	text-align: center;
	color: #242E35 !important;
	text-decoration: none !important;
}
.sun-jrn-nav__word { font-family: "Cormorant Infant", serif; font-size: clamp(15px, 4.3vw, 17px); font-weight: 500; line-height: 1.1; }
/* the current path: a 3 px underline in the gold text colour (3:1 or more against white) and the word kept as text, so colour is not the only cue */
.sun-jrn-nav__link::after { content: ""; position: absolute; left: 10%; right: 10%; bottom: 0; height: 3px; background: #85602F; scale: 0 1; transition: scale 0.2s ease; }
.sun-jrn-nav__link[aria-current="location"]::after { scale: 1 1; }
.sun-jrn-nav__link[aria-current="location"] .sun-jrn-nav__word { color: #85602F; }
@media (hover: hover) { .sun-jrn-nav__link:hover .sun-jrn-nav__word { color: #85602F; } }
/* the progress strip ("2 of 4 . Montecito") is drawn under the bar, out of flow: filling it later moves nothing (no layout shift) and it is aria-hidden */
.sun-jrn-nav__now {
	position: absolute; left: 0; right: 0; top: 100%;
	box-sizing: border-box;
	height: var(--sun-jrn-now);
	margin: 0; padding: 0 var(--sun-jrn-edger) 0 var(--sun-jrn-edge);
	background: #FFFFFF;
	border-bottom: 1px solid rgba(36, 46, 53, 0.14);
	font-family: Alata, sans-serif; font-size: 12px; line-height: var(--sun-jrn-now); letter-spacing: 1.6px; text-transform: uppercase; white-space: nowrap;
	color: #85602F;
	pointer-events: none;
}
.sun-jrn-nav__now:empty { display: none; }
/* the admin bar of a signed-in editor (preview) sits over the top of the screen: 32 px, 46 px to 782, absolute (gone) at 600 and below */
.admin-bar .sun-jrn-nav.sun-jrn-nav { top: calc(var(--sun-jrn-top, 0px) + 32px); }
@media (max-width: 782px) { .admin-bar .sun-jrn-nav.sun-jrn-nav { top: calc(var(--sun-jrn-top, 0px) + 46px); } }
@media (max-width: 600px) { .admin-bar .sun-jrn-nav.sun-jrn-nav { top: var(--sun-jrn-top, 0px); } }
/* while the theme's fixed header is showing (it returns on any scroll up) the bar steps down to sit under it, and anchors clear both */
.sun-jrn-nav.sun-jrn-nav { transition: translate 0.32s var(--sun-jrn-ease); }
body:has(.vamtam-sticky-header--fixed-shown) .sun-jrn-nav.sun-jrn-nav { translate: 0 var(--sun-jrn-hdr); }
body.sun-journey:has(.vamtam-sticky-header--fixed-shown) { --sun-jrn-off: calc(var(--sun-jrn-hdr) + var(--sun-jrn-bar) + var(--sun-jrn-now) + 8px); }

/* ---------------------------------------------------------------- 56.6 paths and frames */
.sun-jrn-path { display: flex; flex-direction: column; width: 100%; background: var(--sun-jrn-cream); padding: 0 !important; }
.sun-jrn-path__head { display: flex; flex-direction: column; width: 100%; padding: 40px var(--sun-jrn-edger) 32px var(--sun-jrn-edge) !important; background: var(--sun-jrn-ink); }
.sun-jrn-path__head::before { content: ""; display: block; flex: none; width: 40px; height: 2px; margin-bottom: 16px; background: #B98D58; }
.sun-jrn-path__frames { display: flex; flex-direction: column; width: 100%; }

.sun-jrn-fr {
	position: relative;
	display: flex; flex-direction: column;
	width: 100%;
	background: var(--sun-jrn-bg);
	padding: 0 !important;
}
.sun-jrn-fr--cream { --sun-jrn-bg: #F4F1EA; }
.sun-jrn-fr--white { --sun-jrn-bg: #FFFFFF; }
.sun-jrn-fr > .e-con-inner { display: flex; flex-direction: column; }
/* the photograph box: a definite width and an aspect-ratio, so its height is never 0 before the image arrives (D138) */
.sun-jrn-fr__media { position: relative; display: block; flex: none; width: 100%; aspect-ratio: 4 / 3; background: var(--sun-jrn-ink-2); }
.sun-jrn-fr .sun-jrn-fr__img, .sun-jrn-fr .sun-jrn-fr__img .elementor-widget-container { position: absolute; inset: 0; width: 100%; height: 100%; margin: 0; }
.sun-jrn-fr .sun-jrn-fr__img img { display: block; width: 100%; height: 100%; max-width: none; object-fit: cover; object-position: 50% 40%; }
/* art on a photograph frame: a tile in the frame's own ground straddling the photograph's foot, so line-work never sits on the picture */
.sun-jrn-fr__media .sun-jrn-art {
	position: absolute; left: var(--sun-jrn-edge); bottom: -32px; z-index: 3;
	box-sizing: border-box; width: 64px; height: 64px; padding: 10px;
	background: var(--sun-jrn-bg);
}
.sun-jrn-art { display: block; flex: none; max-width: 100%; color: var(--sun-jrn-gl); pointer-events: none; }
.sun-jrn-art svg { display: block; width: 100%; height: 100%; }           /* the class is on the html widget's root; the svg fills it */
.sun-jrn-art[data-draft-art^="route"] { width: 100%; height: auto; }
.sun-jrn-art[data-draft-art^="route"] svg { height: auto; }
/* a text-led frame has no photograph: the glyph stands alone at 96 px and the box takes only its own height */
.sun-jrn-fr--text .sun-jrn-fr__media { aspect-ratio: auto; background: transparent; padding: 36px var(--sun-jrn-edger) 0 var(--sun-jrn-edge); }
.sun-jrn-fr--text .sun-jrn-fr__media .sun-jrn-art { position: static; width: 96px; height: 96px; padding: 0; background: transparent; }
.sun-jrn-fr__copy { display: flex; flex-direction: column; gap: 12px; padding: 32px var(--sun-jrn-edger) 36px var(--sun-jrn-edge); }
.sun-jrn-fr:not(.sun-jrn-fr--text) .sun-jrn-fr__media:has(.sun-jrn-art) + .sun-jrn-fr__copy { padding-top: 52px; }   /* clears the art tile's 32 px overhang */
.sun-jrn-fr--text .sun-jrn-fr__media + .sun-jrn-fr__copy { padding-top: 20px; }
.sun-jrn-fr__copy > .elementor-element { margin: 0; }
.sun-jrn-fr__cta { display: flex; flex-direction: column; gap: 8px; margin-top: 8px; }
.sun-jrn-fr__cta > .elementor-element { margin: 0; width: 100%; }
/* the links frame: where the path ends. The primary link, the other places, then the 21+ sentence, all on one screen */
.sun-jrn-fr--links .sun-jrn-fr__copy { gap: 14px; padding-bottom: 40px; }
.sun-jrn-fr--links .sun-jrn-also { margin-top: 4px; }
.sun-jrn-fr--links .sun-jrn-back { margin-top: 4px; }
/* ELIXIR keeps its own ground (--sun-jrn-bg, set in 56.0) and is the same height as any other stop; its tile and text follow that ground */
/* DRAFT-ART: one small tag per frame that carries a piece still marked as draft; it goes when the builder drops data-draft-art on approval */
@supports selector(:has(a)) {
	.sun-jrn-fr:has([data-draft-art])::after {
		content: "DRAFT-ART"; content: "DRAFT-ART" / "";
		position: absolute; right: var(--sun-jrn-edger); bottom: 6px; z-index: 4;
		font-family: Alata, sans-serif; font-size: 11px; line-height: 1; letter-spacing: 1.5px; color: var(--sun-jrn-ey);
		pointer-events: none;
	}
}

/* loops: poster first. The slot sits over the photograph; the <video> exists only after the script's policy passes, and ships empty (O14) */
.sun-jrn-loop { position: absolute; inset: 0; z-index: 1; margin: 0; padding: 0; pointer-events: none; }
.sun-jrn-loop__v { display: block; width: 100%; height: 100%; object-fit: cover; opacity: 0; transition: opacity 480ms var(--sun-jrn-ease); }
.sun-jrn-loop.sun-jrn-playing .sun-jrn-loop__v { opacity: 1; }
.sun-jrn-loop__pause {
	position: absolute; right: 8px; bottom: 8px; z-index: 2;
	box-sizing: border-box; width: 44px; height: 44px; margin: 0; padding: 0;
	border: 1px solid rgba(255, 255, 255, 0.7); border-radius: 50%;     /* the one round control, as the home hero's */
	background: rgba(20, 16, 24, 0.55);
	font-size: 0; line-height: 0; color: #FFFFFF;
	pointer-events: auto;
	cursor: pointer;
}
.sun-jrn-loop__pause[hidden] { display: none; }
.sun-jrn-loop__pause::before { content: ""; position: absolute; left: 16px; top: 14px; width: 4px; height: 14px; background: #FFFFFF; box-shadow: 8px 0 0 #FFFFFF; }
@media (hover: hover) { .sun-jrn-loop__pause:hover { background: rgba(20, 16, 24, 0.8); } }

/* ---------------------------------------------------------------- 56.7 the close */
.sun-jrn-close {
	display: flex; flex-direction: column; gap: 14px;
	width: 100%;
	background: var(--sun-jrn-cream);
	padding: 48px var(--sun-jrn-edger) calc(48px + env(safe-area-inset-bottom, 0px)) var(--sun-jrn-edge) !important;
}
.sun-jrn-close::before { content: ""; display: block; flex: none; width: 40px; height: 2px; background: #B98D58; }
.sun-jrn-close .sun-jrn-back:is(a), .sun-jrn-close .sun-jrn-back a { text-decoration: none; }

/* ---------------------------------------------------------------- 56.8 pressed feedback on a touch screen (T2: held back 90 ms so a flick never flashes) */
@media (hover: none) {
	.sun-jrn-btn .elementor-button:active { scale: 0.97; opacity: 0.86; transition: scale 0s linear 90ms, opacity 0s linear 90ms; }
	.sun-jrn-choose__link:active { background: var(--sun-jrn-ink-2); transition: background-color 0s linear 90ms; }
	.sun-jrn-nav__link:active .sun-jrn-nav__word, .sun-jrn-next:is(a):active, .sun-jrn-next a:active, .sun-jrn-back:is(a):active, .sun-jrn-back a:active, .sun-jrn-also a:active { opacity: 0.6; transition: opacity 0s linear 90ms; }
	.sun-jrn-loop__pause:active { background: rgba(20, 16, 24, 0.8); }
}

/* ---------------------------------------------------------------- 56.9 motion (opacity, translate, scale; stroke-dashoffset on aria-hidden art) */
@media (prefers-reduced-motion: no-preference) {
	/* T1: scroll-linked, where the browser can (Chrome and Edge 115 and up, Safari 26). It follows the thumb and plays back on scroll up. */
	@supports (animation-timeline: view()) {
		@keyframes sun-jrn-rise   { from { opacity: 0; translate: 0 26px; } to { opacity: 1; translate: none; } }
		@keyframes sun-jrn-settle { from { scale: 1.07; } to { scale: 1; } }
		@keyframes sun-jrn-draw   { from { stroke-dashoffset: 1000; } to { stroke-dashoffset: 0; } }
		.sun-jrn-r { animation: sun-jrn-rise linear both; animation-timeline: view(); animation-range: entry 4% entry 52%; }
		.sun-jrn-fr__copy > .sun-jrn-r:nth-child(3) { animation-range: entry 8% entry 56%; }
		.sun-jrn-fr__copy > .sun-jrn-r:nth-child(4) { animation-range: entry 12% entry 60%; }
		.sun-jrn-fr__copy > .sun-jrn-r:nth-child(5) { animation-range: entry 16% entry 64%; }
		/* the photograph settles inside its own absolutely placed box, which has a definite size from the media box's aspect-ratio */
		.sun-jrn-fr .sun-jrn-fr__img { view-timeline: --sun-jrn-photo block; overflow: clip; }
		.sun-jrn-fr .sun-jrn-fr__img img { animation: sun-jrn-settle linear both; animation-timeline: --sun-jrn-photo; animation-range: entry 0% cover 50%; }
		/* a glyph draws itself (allow-list by id, so the dotted route, ridge and textures are never touched). The dash is longer than any glyph path,
		   so the finished state is the plain line. The attribute may sit on the widget root or on the svg; the paths are found either way. */
		.sun-jrn-fr :is([data-draft-art^="vine"], [data-draft-art^="barrel"], [data-draft-art^="glass"], [data-draft-art^="lintel"], [data-draft-art^="sun"], [data-draft-art^="pair"], [data-draft-art^="flight"], [data-draft-art^="roofline"]) { view-timeline: --sun-jrn-glyph block; }
		.sun-jrn-fr :is([data-draft-art^="vine"], [data-draft-art^="barrel"], [data-draft-art^="glass"], [data-draft-art^="lintel"], [data-draft-art^="sun"], [data-draft-art^="pair"], [data-draft-art^="flight"], [data-draft-art^="roofline"]) :is(path, circle, line, polyline) {
			stroke-dasharray: 1000;
			animation: sun-jrn-draw linear both; animation-timeline: --sun-jrn-glyph; animation-range: entry 10% entry 70%;
		}
	}
	/* T2: the reveal fallback. The script adds html.sun-jrn-reveal only here (no animation-timeline, motion allowed), after marking what is already on screen, so nothing visible blinks out. */
	@supports not (animation-timeline: view()) {
		html.sun-jrn-reveal .sun-jrn-r:not(.sun-jrn-in) { opacity: 0; translate: 0 26px; }
		html.sun-jrn-reveal .sun-jrn-r { transition: opacity 0.5s var(--sun-jrn-ease), translate 0.5s var(--sun-jrn-ease); }
		html.sun-jrn-reveal .sun-jrn-r.sun-jrn-in, html.sun-jrn-reveal .sun-jrn-r:focus-within { opacity: 1; translate: none; }
	}
}
/* T0: reduced motion is the finished page. A colour change is not motion and stays; everything that travels stops, and no video is shown. */
@media (prefers-reduced-motion: reduce) {
	.sun-jrn-nav.sun-jrn-nav, .sun-jrn-nav__link::after, .sun-jrn-next:is(a)::after, .sun-jrn-next a::after, .sun-jrn-r, .sun-jrn-loop__v { transition: none; }
	.sun-jrn-r, .sun-jrn-fr .sun-jrn-fr__img img { animation: none; }
	.sun-jrn-loop { display: none; }
	html.sun-jrn-reveal .sun-jrn-r { opacity: 1; translate: none; }
}
/* data saver: never a video, whatever the script thinks */
@media (prefers-reduced-data: reduce) { .sun-jrn-loop { display: none; } }

/* ---------------------------------------------------------------- 56.10 phones that are short (360 x 740 and its kin) */
@media (max-height: 779px) {
	.sun-jrn-hero__panel { gap: 6px; padding-bottom: 18px; }
	.sun-jrn-hero__title, .sun-jrn-hero__title .elementor-heading-title { font-size: clamp(30px, 9vw, 34px); }
	.sun-jrn-hero__lede, .sun-jrn-hero__lede p { font-size: 15.5px; line-height: 1.3; }
	.sun-jrn-choose__hint { font-size: 14.5px; }
}

/* ---------------------------------------------------------------- 56.11 from 340 px: the chooser goes two by two */
@media (min-width: 340px) {
	.sun-jrn-choose__list { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
	.sun-jrn-choose__link { min-height: 92px; }
}
/* from 430 px: a little more room for the glyph and the word (DESIGN 5.3 item 5) */
@media (min-width: 430px) {
	.sun-jrn-choose__link svg { width: 32px; height: 32px; }
	.sun-jrn-choose__word { font-size: 24px; }
	.sun-jrn-hero__media { min-height: clamp(180px, 28svh, 340px); }
}
@media (min-width: 430px) and (min-height: 900px) { .sun-jrn-fr__media { aspect-ratio: 1 / 1; } }

/* ---------------------------------------------------------------- 56.12 tablet: from 768 px */
@media (min-width: 768px) {
	.sun-jrn-hero {
		flex-direction: row;
		min-height: calc(100vh - var(--sun-jrn-hdr));
		min-height: calc(100svh - var(--sun-jrn-hdr));
	}
	.sun-jrn-hero > .e-con-inner { flex-direction: row; }
	.sun-jrn-hero__media { flex: 0 0 45%; width: 45%; min-height: 0; }
	.sun-jrn-hero__media::before, .sun-jrn-hero__media::after { display: none; }       /* the ridge belongs to the stacked phone layout */
	.sun-jrn-hero__panel { flex: 1 1 auto; justify-content: center; padding: 48px var(--sun-jrn-edger) 48px 40px; }
	.sun-jrn-hero__title, .sun-jrn-hero__title .elementor-heading-title { font-size: clamp(38px, 5.2vw, 76px); }
	.sun-jrn-hero__lede, .sun-jrn-hero__lede p, .sun-jrn-body.sun-jrn-body, .sun-jrn-body.sun-jrn-body p, .sun-jrn-choose__body, .sun-jrn-choose__body p { font-size: 19px; line-height: 1.6; }
	.sun-jrn-hero__cta { max-width: 320px; }
	.sun-jrn-choose { padding: 8px var(--sun-jrn-edger) 56px var(--sun-jrn-edge) !important; }
	.sun-jrn-choose__list { max-width: 720px; }
	.sun-jrn-h2.sun-jrn-h2, .sun-jrn-h2.sun-jrn-h2 .elementor-heading-title { font-size: clamp(36px, 5vw, 50px); }
	.sun-jrn-h3.sun-jrn-h3, .sun-jrn-h3.sun-jrn-h3 .elementor-heading-title { font-size: clamp(32px, 3.6vw, 44px); }
	.sun-jrn-nav__word { font-size: 19px; }
	.sun-jrn-path__head { padding: 56px var(--sun-jrn-edger) 40px var(--sun-jrn-edge) !important; }
	.sun-jrn-fr, .sun-jrn-fr > .e-con-inner { flex-direction: row; align-items: stretch; }
	.sun-jrn-fr__media { flex: 0 0 45%; width: 45%; aspect-ratio: auto; min-height: 420px; }
	.sun-jrn-fr__media .sun-jrn-art { left: auto; right: -32px; bottom: 32px; }       /* the tile straddles the photograph's side edge */
	.sun-jrn-fr--text .sun-jrn-fr__media { min-height: 0; flex: 0 0 auto; width: auto; padding: 48px 0 0 var(--sun-jrn-edge); }
	.sun-jrn-fr__copy { flex: 1 1 auto; justify-content: center; padding: 48px var(--sun-jrn-edger) 48px 56px; }
	.sun-jrn-fr:not(.sun-jrn-fr--text) .sun-jrn-fr__media:has(.sun-jrn-art) + .sun-jrn-fr__copy { padding-top: 48px; }
	.sun-jrn-fr--links, .sun-jrn-fr--links > .e-con-inner { flex-direction: column; }
	.sun-jrn-fr__cta { flex-direction: row; align-items: center; flex-wrap: wrap; }
	.sun-jrn-fr__cta > .elementor-element { width: auto; }
	.sun-jrn-btn.sun-jrn-btn .elementor-button { width: auto; min-width: 220px; }
	.sun-jrn-close { padding-top: 72px !important; }
}
@media (min-width: 768px) and (max-width: 900px) { .sun-jrn-fr__copy { padding-left: 40px; } }

/* ---------------------------------------------------------------- 56.13 desktop: from 901 and 1025 px (S2-A polishes these; they only keep the page whole) */
@media (min-width: 901px) {
	.sun-jrn-choose__list { grid-template-columns: repeat(4, minmax(0, 1fr)); max-width: 1200px; }
	.sun-jrn-choose__link { min-height: 120px; padding: 16px 16px 14px; }
	.sun-jrn-hero__panel { padding-left: 64px; }
	.sun-jrn-fr__copy { padding-left: 72px; }
	.sun-jrn-fr__copy > .elementor-element, .sun-jrn-fr__copy .sun-jrn-body { max-width: 34em; }
}
@media (min-width: 1025px) {
	body.sun-journey { --sun-jrn-hdr: 80px; }    /* the header is fixed and 80 px tall from here */
	.sun-jrn-nav__word { font-size: 21px; }
	.sun-jrn-hero__media { flex-basis: 55%; width: 55%; }
	.sun-jrn-fr__media { flex-basis: 42%; width: 42%; }
}
@media (min-width: 1025px) and (hover: hover) { .sun-jrn-choose__link:hover { box-shadow: 0 10px 28px rgba(36, 46, 53, 0.08); } }   /* the site's one shadow: a hover lift */

/* ---------------------------------------------------------------- 56.14 landscape phone: no full-height lock, the photograph beside the panel */
@media (orientation: landscape) and (max-height: 500px) and (hover: none) {
	.sun-jrn-hero { flex-direction: row; min-height: 0; }
	.sun-jrn-hero > .e-con-inner { flex-direction: row; }
	.sun-jrn-hero__media { flex: 0 0 38%; width: 38%; min-height: 220px; }
	.sun-jrn-hero__media::before, .sun-jrn-hero__media::after { display: none; }
	.sun-jrn-hero__panel { flex: 1 1 auto; justify-content: center; }
	.sun-jrn-hero__lede, .sun-jrn-hero__lede p { font-size: 15px; }
	.sun-jrn-fr__media { aspect-ratio: 16 / 9; }
}
@media (orientation: landscape) and (max-height: 500px) and (hover: none) and (min-width: 768px) {
	.sun-jrn-fr__media { aspect-ratio: auto; min-height: 240px; }       /* the frame is a row here: the photograph takes the copy's height */
}

/* ---------------------------------------------------------------- 56.15 forced colours and print */
@media (forced-colors: active) {
	.sun-jrn-nav__link[aria-current="location"]::after { background-color: Highlight; forced-color-adjust: none; }
	.sun-jrn-choose__link { border-color: CanvasText; }
	.sun-jrn-choose__link[aria-current] { border-color: Highlight; box-shadow: none; outline: 2px solid Highlight; }
	.sun-jrn-also a, .sun-jrn-btn--ghost.sun-jrn-btn .elementor-button { border-color: CanvasText; }
	.sun-jrn-loop__pause { border-color: CanvasText; }
}
@media print {
	.sun-jrn-nav.sun-jrn-nav, .sun-jrn-loop, .sun-jrn-fr::after, .sun-jrn-hero__media::before, .sun-jrn-hero__media::after, .sun-jrn-hero__panel::before { display: none !important; }
	.sun-jrn-hero { min-height: 0; }
	.sun-jrn-r, .sun-jrn-fr .sun-jrn-fr__img img, .sun-jrn-fr :is(path, circle, line, polyline) { animation: none !important; opacity: 1 !important; translate: none !important; scale: 1 !important; stroke-dasharray: none !important; }
	html.sun-jrn-reveal .sun-jrn-r { opacity: 1 !important; translate: none !important; }
	.sun-jrn-fr { break-inside: avoid; }
}
/* ==== END 56 ==== */


/* ==========================================================================
   57. HOME NEWSLETTER BAND (page 118, container 345439f9)
   --------------------------------------------------------------------------
   The band used to send people to /blog/#subscribe-form, a second page, with a
   competing "Reserve a tasting" button beside it. It now holds the form itself:
   one email field and one button in a row (stacked under 560 px), the consent
   line under them, and a thank-you that replaces the form in place (GF ajax).
   Everything is scoped to the form's own wrapper, .sun-nl-home_wrapper
   (form cssClass "sun-nl-home"), so Contact and Blog newsletter forms are
   untouched. Ground is ink #242E35: gold #B98D58 is the ground's own gold
   (D117, 4.62:1 with ink text), white inputs keep the #8A8880 edge from 47d.
   ========================================================================== */
.sun-nl-home-widget { width: 100%; max-width: 560px; margin-inline: auto; }

.gform-theme--orbital.gform_wrapper.sun-nl-home_wrapper { margin: 0; }
.gform-theme--orbital.gform_wrapper.sun-nl-home_wrapper form {
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto;
	column-gap: 12px;
	row-gap: 16px;
	align-items: start;
}
/* Flatten GF's wrappers so the email, consent and button sit on the form's own grid. */
.sun-nl-home_wrapper .gform-body,
.sun-nl-home_wrapper .gform_fields { display: contents; }
.sun-nl-home_wrapper .gfield { margin: 0; padding: 0; min-width: 0; }
.sun-nl-home_wrapper .gfield--type-email { grid-column: 1; grid-row: 1; }
.sun-nl-home_wrapper .gfield--type-consent { grid-column: 1 / -1; grid-row: 2; text-align: left; }
.sun-nl-home_wrapper .gform_footer { width: 100%; }
.sun-nl-home_wrapper .gform_footer {
	grid-column: 2; grid-row: 1;
	margin: 0; padding: 0; align-self: start;
}

/* Email: the label stays for assistive tech (GF hides it), the placeholder is the visible cue. */
.gform-theme--orbital.gform_wrapper.sun-nl-home_wrapper input[type="email"] {
	min-block-size: 52px; block-size: 52px; padding-inline: 18px;
	background-color: #FFFFFF; color: #242E35;
}
.gform-theme--orbital.gform_wrapper.sun-nl-home_wrapper input[type="email"] { text-align: left; }
.sun-nl-home_wrapper input[type="email"]::placeholder { color: #6B6A66; opacity: 1; text-align: left; }

/* Button: the band's one solid control, so the eye has somewhere to go. */
.gform-theme--orbital.gform_wrapper.sun-nl-home_wrapper .gform_footer .gform_button {
	--gf-local-min-height: 52px; --gf-local-min-width: 0; --gf-local-height: 52px;
	height: 52px !important; min-height: 52px !important; min-width: 0 !important;
	padding-inline: 28px; line-height: 1;
	background-color: #B98D58 !important; border: 1px solid #B98D58 !important;
	color: #242E35 !important; white-space: nowrap; cursor: pointer;
	transition: background-color 0.2s ease, color 0.2s ease;
}
.gform-theme--orbital.gform_wrapper.sun-nl-home_wrapper .gform_footer .gform_button:hover {
	background-color: #FFFFFF !important; border-color: #FFFFFF !important; color: #242E35 !important;
}
.gform-theme--orbital.gform_wrapper.sun-nl-home_wrapper :is(input[type="email"], .gform_button):focus-visible {
	outline: 3px solid #FFFFFF; outline-offset: 3px;
}

/* Consent: quiet, readable, and not a scroll box. White on ink is 13:1. */
.gform-theme--orbital.gform_wrapper.sun-nl-home_wrapper :is(.gfield_consent_label, .gfield_consent_description, .gfield_consent_description_text, .ginput_container_consent label) {
	color: #FFFFFF !important; font-size: 15px !important; line-height: 1.5;
}
.gform-theme--orbital.gform_wrapper.sun-nl-home_wrapper .gfield_consent_description {
	margin: 8px 0 0; padding: 0; border: 0; max-height: none; overflow: visible; background: none;
}
.gform-theme--orbital.gform_wrapper.sun-nl-home_wrapper .gfield_consent_label a,
.gform-theme--orbital.gform_wrapper.sun-nl-home_wrapper .gfield_consent_description a { color: #FFFFFF; }
.sun-nl-home_wrapper .gfield--type-consent .gfield_label { display: none; }
.gform-theme--orbital.gform_wrapper.sun-nl-home_wrapper .ginput_container_consent { display: flex !important; align-items: flex-start; gap: 12px; }
.gform-theme--orbital.gform_wrapper.sun-nl-home_wrapper input[type="checkbox"] {
	inline-size: 24px; block-size: 24px; min-inline-size: 24px; margin: 1px 0 0; flex: none;
	border: 1px solid #FFFFFF !important; background-color: transparent;
}
.gform-theme--orbital.gform_wrapper.sun-nl-home_wrapper input[type="checkbox"]:checked { background-color: #B98D58; }
.sun-nl-home_wrapper .gfield_consent_label { margin: 0; }
.gform-theme--orbital.gform_wrapper.sun-nl-home_wrapper input[type="checkbox"]:focus-visible {
	outline: 3px solid #FFFFFF; outline-offset: 3px;
}

/* Errors: coral text below the field, never colour alone (same recipe as 55.9). */
.sun-nl-home_wrapper .gfield_validation_message,
.sun-nl-home_wrapper .gform_submission_error {
	background: none; border: 0; padding: 8px 0 0; margin: 0;
	color: #FF9E8A !important; font-size: 15px; text-align: left;
}
.sun-nl-home_wrapper .gfield_validation_message::before { content: "! "; font-weight: 700; }
.sun-nl-home_wrapper .gfield_error :is(input[type="email"], input[type="checkbox"]) {
	border-color: #FF9E8A !important; box-shadow: 0 0 0 1px #FF9E8A;
}

/* Thank-you replaces the form in place. */
.sun-nl-home-widget .gform_confirmation_message {
	color: #FFFFFF; font-size: 26px; line-height: 1.3; padding: 20px 0 0;
	border-top: 1px solid #B98D58; text-align: center;
}
.sun-nl-home-widget .gform_confirmation_message a {
	color: #FFFFFF; text-decoration: underline; text-underline-offset: 0.18em; text-decoration-thickness: 1px;
}
.sun-nl-home-widget .gform_confirmation_message a:hover { text-decoration-thickness: 2px; }
@media (prefers-reduced-motion: no-preference) {
	.sun-nl-home-widget .gform_confirmation_message { animation: sun-nl-in 0.5s cubic-bezier(0.32, 0.72, 0, 1) both; }
	@keyframes sun-nl-in { from { opacity: 0; translate: 0 8px; } to { opacity: 1; translate: 0 0; } }
}

/* Phones and narrow tablets: stacked, button full width, 52 px targets. */
@media (max-width: 560px) {
	.gform-theme--orbital.gform_wrapper.sun-nl-home_wrapper form { grid-template-columns: minmax(0, 1fr); }
	.sun-nl-home_wrapper .gfield--type-consent { grid-row: 3; }
	.sun-nl-home_wrapper .gform_footer { grid-column: 1; grid-row: 2; }
	.gform-theme--orbital.gform_wrapper.sun-nl-home_wrapper .gform_footer .gform_button { width: 100% !important; }
	.sun-nl-home-widget .gform_confirmation_message { font-size: 22px; }
}
/* ==== END 57 ==== */

/* ==========================================================================
   58. SPRINT 2026-10-14 UX HARDENING
   Source: audit L3 (UX / accessibility / mobile). Append-only: nothing above is edited.
   Each block carries its finding id. No !important except where the rule it overrides is
   inline or already !important (named in the block).
   58a L3-01  scroll-to-top vs form fields (phones)
   58b L3-04  Tock "Book now" label contrast
   58c L3-05  Lodgify guests value contrast
   58d L3-08  touch targets: hamburger, header logo, footer links, Commerce7 product titles
   58e L3-09  text under 14 px: C7 prices / variants / buttons, spec scale, post dates, desktop nav
   58f L3-12  Commerce7 "Join the Club" button (CSS half)
   58g L3-13  reduced motion: Vamtam blurred letters
   ========================================================================== */

/* 58a. L3-01. #scroll-to-top is fixed, 70x50, z-index 200, bottom-right. On a phone the fields of a
   Gravity Forms form run to 24-40 px from the screen edge, so the tile sits on the last 30-46 px of every
   full-width field and swallows taps there. A 44 px target cannot clear a 24 px gutter, so on phones and
   narrow tablets the tile is dropped on pages that carry a form field. Measured: it covers fields at 390 and
   768, nothing at 900 and up, so 899 is the cut. Careers (.sun-car-form_wrapper) and the staged home
   newsletter band (.sun-nl-home_wrapper) are excluded so those forms behave as before. Pages without a
   field keep the tile. */
@media (max-width: 899px) {
	body:has(.gform_wrapper:not(.sun-car-form_wrapper):not(.sun-nl-home_wrapper) :is(input:not([type="hidden"]), textarea, select)) #scroll-to-top {
		display: none;
	}
}

/* 58b. L3-04. Tock's own rule colours the label `inherit !important` from .TockButton-white, whose colour is
   #344ef4 (2.33:1 on the ink button the site paints behind it). The site rule that asks for white sits at a
   lower specificity than Tock's !important, so the lever is the parent: colour .TockButton-white itself.
   Specificity (1,3,0) beats Tock's (1,2,2) without !important. Scoped to the reservation card, where the
   site forces the button ground to ink. */
.sun-res-card #Tock_widget_container .TockInlineButton-container.TockButton-white {
	color: #FFFFFF;
}

/* 58c. L3-05. Lodgify guests value: gold #B98D58 on the white widget = 2.99:1. D117: #906A3C on light = 4.87:1. */
#lodgify-search-bar [data-testid="guests-breakdown-trigger-value"] {
	color: #906A3C;
}

/* 58d. L3-08. Touch targets at phone width. Size only; no colour, no position change to any C7-owned node.
   - Hamburger: 30x30 -> 44x44 (Elementor draws it from padding .25em at 20 px). The mobile header shows up to
     1024 px, so this is not media-limited. */
.sun-hdr--mobile .elementor-menu-toggle {
	min-width: 44px;
	min-height: 44px;
	margin-left: -7px; /* the 7 px of extra box sits left of the icon, so the icon stays where it was */
	align-items: center;
	justify-content: center;
}
/* - Header logo link: 17 px high (line-height 0 + inline image) -> 44 px box, image unchanged. */
.sun-hdr--mobile .sun-hdr__logo a {
	display: flex;
	align-items: center;
	justify-content: center; /* the image stays centred in the link, as before */
	min-height: 44px;
}
/* - Footer menu links: 34 px -> 44 px on phones (the existing rule above sets padding .35em !important, so only
     min-height and centring are added here). */
@media (max-width: 767px) {
	.sun-footer-menu .elementor-nav-menu--main .elementor-item {
		min-height: 44px;
		align-items: center;
	}
}
/* - C7 product title link (collection cards, 22 px high at 390). Block box, 44 px minimum on phones only (a
     desktop title is already 31-62 px); the heading above keeps its own margins. */
@media (max-width: 767px) {
	body .c7wp-wrap .c7-product__title a,
	body #c7-content .c7-product__title a {
		display: block;
		min-height: 44px;
	}
}

/* 58e. L3-09. Text under 14 px. */
/* - C7 price 12 -> 16 px (price is the number a buyer needs), variant label 12 -> 14 px. 27e/3139 only sets colour. */
body .c7wp-wrap .c7-product__add-to-cart__price,
body #c7-content .c7-product__add-to-cart__price {
	font-size: 16px;
}
body .c7wp-wrap .c7-product__add-to-cart__price__variant,
body #c7-content .c7-product__add-to-cart__price__variant {
	font-size: 14px;
}
/* - T1b fix (SR1-02). The label sits straight after the price with no space between them, so the line has no
     break point and a 14 px label ran 5-28 px past the card at 320-375 px. Below 390 px it takes its own line
     (block, still 14 px); 390 px and up is unchanged. Measured with 0 cards over the edge at 320/360/375/390. */
@media (max-width: 389px) {
	body .c7wp-wrap .c7-product__add-to-cart__price__variant,
	body #c7-content .c7-product__add-to-cart__price__variant {
		display: block;
		max-width: 100%;
		overflow-wrap: anywhere;
	}
}
/* - Add to Cart on the product page 12 -> 14 px (phones; desktop is already 14). C7 draws it from
     `body #c7-content .c7-btn { font-size: var(--vamtam-h6-font-size) }`, which is 12 px on phones. Collection
     cards are excluded: their button is 87 px wide beside the quantity box and does not fit 14 px (PROPOSED). */
body .c7wp-wrap .c7-product__add-to-cart__form .c7-btn--primary:not(.c7-product-collection *),
body #c7-content .c7-product__add-to-cart__form .c7-btn--primary:not(.c7-product-collection *) {
	font-size: 14px;
}
/* - Spec sheet: scale end values 10 -> 12 px, labels 10-11 -> 14 px, footnote 10 -> 12 px. */
.ssv-specs__ends {
	font-size: 12px;
}
.ssv-specs .ssv-specs__label {
	font-size: 14px;
}
.ssv-specs .ssv-specs__note {
	font-size: 12px;
}
/* - Event / post dates in the Elementor posts widget 10 -> 12 px. */
.elementor-posts-container .elementor-post__meta-data .elementor-post-date {
	font-size: 12px;
}
/* - Desktop header nav 11 -> 14 px. Elementor writes the size per widget id at (0,5,0); this selector is (0,5,2).
     T1b fix (SR1-01): at 14 px the RESERVE link ran under the Commerce7 cart box from 1025 to ~1065 px, and sat
     under 8 px from it up to 1095 px with a classic 15 px scrollbar. 14 px therefore starts at 1100 px (measured every
     5 px, 1025-1460, with and without a scrollbar: RESERVE-to-cart gap 9.9 px at 1100 with a scrollbar, one row,
     no clipping). Between 1025 and 1099 px the nav keeps its old 11 px (a known small-text item; the proper fix is a
     header redesign, not CSS). 1280-1439 px takes 1.4 px tracking: at 1280 the header grid jumps and 2 px (or 1.6 px)
     left only 5-7 px to the cart. 1025-1279 px letter-spacing is the 1.6 px of the narrow-desktop block above. */
@media (min-width: 1100px) {
	.sun-hdr--desktop .elementor-widget-nav-menu .elementor-nav-menu--main > .elementor-nav-menu > li > a.elementor-item {
		font-size: 14px;
		letter-spacing: 2px;
	}
}
@media (min-width: 1280px) and (max-width: 1439px) {
	.sun-hdr--desktop .elementor-widget-nav-menu .elementor-nav-menu--main > .elementor-nav-menu > li > a.elementor-item {
		letter-spacing: 1.4px;
	}
}

/* 58f. L3-12 (CSS half). "Join the Club" on /club/ computes 12 px on phones: `body #c7-content .c7-btn` (1,1,1) takes
   the size from --vamtam-h6-font-size (12 px below desktop) and beats the club rule's own 12 px at (0,3,0). Same
   (1,2,1) weight as the C7 rule plus one class, so it wins without !important. */
body .c7wp-wrap .c7-club .c7-btn--primary,
body #c7-content .c7-club .c7-btn--primary {
	font-size: 14px;
}

/* 58g. L3-13. Under reduced motion the Vamtam blurred-letter headline shows its final state at once. The
   animation is written inline by script (`style="animation: ... vamtam-blurred-letters"`), so `animation: none`
   needs !important to win; opacity/filter then return to the final values (the base rule starts letters at 0). */
@media (prefers-reduced-motion: reduce) {
	.elementor-widget-vamtam-animated-headline.elementor-headline--style-blurred_letters .vamtam-word .vamtam-letter {
		animation: none !important;
		opacity: 1;
		filter: none;
	}
}
/* ==== END 58 ==== */

/* ==========================================================================
   59. Happenings home band (D150) -- namespace sun-hap-
   --------------------------------------------------------------------------
   The band directly under the home hero (page 118, after section 9922b4c): today at the estate (open/closed pill, today's
   sun arc, NWS weather with a 3-day row), the next three events, and two quick actions. Markup is server-rendered by the
   [sunstone_happenings] shortcode in an Elementor legacy section with CSS class sun-hap-host (59b); the S1-S4 mock HTML
   is the contract (docs: mock NOTES.md). Ported from the owner-approved mock unchanged, except owner ruling 2c: the
   quick actions lost "Reserve a tasting", so the row is Directions + Call (the primary-button rules are gone; phones
   get two equal halves instead of three thirds, desktop keeps natural widths beside the heading). Condensed per D150 addendum 2 (owner screenshot): moon, hours/address
   line and the phone outlook toggle removed; on wide cards sun and weather sit side by side.
   Rules that hold:
   - Every selector starts with .sun-hap (or .sun-hap-host for the Elementor wrapper), so it outranks .elementor-kit-13
     h2/h3/a (0,1,1) without !important. No global selectors, no font-face: Alata and Cormorant Infant are already served.
   - Tokens: ink #242E35, slate #545D5C, cream #F4F1EA, white cards, gold TEXT #85602F on cream / #906A3C on white,
     #B98D58 ornament only, control borders #8A8880.
   - Layout follows container queries (sun-hap-head, sun-hap-today, sun-hap-events) plus the 768 / 1025 site breakpoints.
   - Targets 44 px or more (48 px buttons and phone links). The site focus ring on every stop; scroll-margin keeps a
     focused stop clear of the fixed header. Motion only under prefers-reduced-motion: no-preference.
   TO REVERT: delete this whole section (banner to END 59). With the shortcode still on the page the band renders unstyled.
   ========================================================================== */

/* 59a. The band (condensed, D150 addendum 2: no moon, no hours/address line, outlook always shown) */
.sun-hap {
	--sun-hap-ink: #242E35;
	--sun-hap-slate: #545D5C;
	--sun-hap-cream: #F4F1EA;
	--sun-hap-card: #FFFFFF;
	--sun-hap-gold-on-cream: #85602F;
	--sun-hap-gold-on-white: #906A3C;
	--sun-hap-ornament: #B98D58;
	--sun-hap-control: #8A8880;
	--sun-hap-hair: #E6E0D4;
	--sun-hap-serif: "Cormorant Infant", Georgia, serif;
	--sun-hap-sans: "Alata", system-ui, sans-serif;
	--sun-hap-pad: clamp(16px, 4vw, 56px);
	--sun-hap-card-pad: clamp(16px, 2.2vw, 30px);

	position: relative;
	box-sizing: border-box;
	width: 100%;
	max-width: 100%;
	margin: 0;
	padding: clamp(28px, 3.8vw, 52px) 0 clamp(32px, 4.2vw, 60px);
	background: linear-gradient(to bottom, #F9F8F4 0, var(--sun-hap-cream) clamp(72px, 9vw, 140px)) var(--sun-hap-cream);
	color: var(--sun-hap-ink);
	font-family: var(--sun-hap-serif);
	font-size: 17px;
	line-height: 1.35;
}

.sun-hap *,
.sun-hap *::before,
.sun-hap *::after { box-sizing: border-box; }

.sun-hap :is(h2, h3, p, ol, ul, li, dl, dt, dd) { margin: 0; padding: 0; }   /* (0,1,1): ties theme ul:not(), loads after it */
.sun-hap :is(ol, ul) { list-style: none; }

.sun-hap .sun-hap-sr {
	position: absolute !important;
	width: 1px; height: 1px;
	margin: -1px; padding: 0;
	overflow: hidden;
	clip: rect(0 0 0 0);
	clip-path: inset(50%);
	white-space: nowrap;
	border: 0;
}

.sun-hap .sun-hap__inner {
	width: 100%;
	max-width: 1240px;
	margin: 0 auto;
	padding: 0 var(--sun-hap-pad);
}

/* ---- band heading ------------------------------------------------------ */
.sun-hap .sun-hap__head {
	display: flex;
	flex-wrap: wrap;
	align-items: flex-end;
	justify-content: space-between;
	gap: 14px 32px;
	margin-bottom: clamp(18px, 2.2vw, 28px);
	container: sun-hap-head / inline-size;
}
.sun-hap .sun-hap__titles {
	display: flex;
	flex-direction: column;
	gap: 6px;
}
.sun-hap .sun-hap__date {           /* DOM: after the h2; shown above it */
	order: -1;
	font-family: var(--sun-hap-sans);
	font-size: 12px;
	line-height: 1.3;
	letter-spacing: .28em;
	text-transform: uppercase;
	color: var(--sun-hap-gold-on-cream);
}
.sun-hap .sun-hap__title {
	margin: 0;
	font-family: var(--sun-hap-serif);
	font-weight: 300;
	font-size: clamp(38px, 3.7vw, 52px);
	line-height: 1.02;
	letter-spacing: 0;
	color: var(--sun-hap-ink);
	text-transform: none;
}

/* ---- grid of cards ----------------------------------------------------- */
.sun-hap .sun-hap__grid {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	gap: clamp(12px, 1.6vw, 22px);
	align-items: stretch;
}
@media (min-width: 1025px) {
	.sun-hap .sun-hap__grid { grid-template-columns: minmax(0, 1.18fr) minmax(0, 1fr); }
	.sun-hap.sun-hap--no-events .sun-hap__grid { grid-template-columns: minmax(0, 1fr); }
}

.sun-hap .sun-hap-card {
	min-width: 0;
	display: flex;
	flex-direction: column;
	padding: var(--sun-hap-card-pad);
	background: var(--sun-hap-card);
	border: 1px solid var(--sun-hap-hair);
	container-type: inline-size;
}
.sun-hap .sun-hap__today  { container-name: sun-hap-today; }
.sun-hap .sun-hap__events { container-name: sun-hap-events; }

.sun-hap .sun-hap-card__head {
	display: flex;
	flex-wrap: wrap;               /* the pill drops under the title when both do not fit; neither shrinks */
	align-items: center;
	justify-content: space-between;
	gap: 8px 16px;
	margin-bottom: 14px;
}
.sun-hap .sun-hap-card__title {
	margin: 0;
	font-family: var(--sun-hap-serif);
	font-weight: 500;
	font-size: 25px;
	line-height: 1.15;
	letter-spacing: 0;
	color: var(--sun-hap-ink);
	text-transform: none;
}

/* ---- shared bits ------------------------------------------------------- */
.sun-hap .sun-hap-ico {
	display: block;
	flex: none;
	width: 20px;
	height: 20px;
	fill: none;
	stroke: currentColor;
	stroke-width: 1.5;
	stroke-linecap: round;
	stroke-linejoin: round;
}
.sun-hap .sun-hap-ampm {
	font-family: var(--sun-hap-sans);
	font-size: max(12px, .46em);    /* labels never below 12 px */
	letter-spacing: .06em;
	text-transform: uppercase;
	vertical-align: .18em;
}
.sun-hap time { font: inherit; color: inherit; }

.sun-hap .sun-hap-link {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	min-height: 44px;
	font-family: var(--sun-hap-sans);
	font-size: 13px;
	letter-spacing: .16em;
	text-transform: uppercase;
	color: var(--sun-hap-gold-on-white);
	text-decoration: none;
}
.sun-hap .sun-hap-link:hover { color: var(--sun-hap-ink); }
.sun-hap .sun-hap-link:hover > span,
.sun-hap .sun-hap-link:hover { text-decoration: underline; text-underline-offset: 5px; text-decoration-thickness: 1px; }
.sun-hap .sun-hap-link__arrow { width: 18px; height: 18px; }

/* One focus ring for every stop: the site token (3px #906A3C + 2px white). */
.sun-hap a:focus-visible {
	outline: var(--sun-focus-ring-width, 3px) solid var(--sun-focus-ring, #906A3C);
	outline-offset: var(--sun-focus-ring-gap, 2px);
	box-shadow: 0 0 0 var(--sun-focus-ring-gap, 2px) var(--sun-focus-ring-inner, #FFFFFF);
}

/* ---- status pill ------------------------------------------------------- */
.sun-hap .sun-hap-pill {
	display: inline-flex;
	flex: none;
	align-items: center;
	gap: 9px;
	margin: 0;
	padding: 6px 13px 6px 11px;
	border-radius: 999px;
	background: var(--sun-hap-cream);
	font-family: var(--sun-hap-sans);
	font-size: 12px;
	line-height: 1.2;
	letter-spacing: .12em;
	text-transform: uppercase;
	color: var(--sun-hap-ink);
	white-space: nowrap;
}
.sun-hap .sun-hap-pill__dot {
	width: 8px;
	height: 8px;
	border-radius: 50%;
	flex: none;
	background: var(--sun-hap-ornament);
	box-shadow: 0 0 0 3px rgba(185, 141, 88, .22);
}
.sun-hap .sun-hap-pill--closed .sun-hap-pill__dot {
	background: transparent;
	border: 1.5px solid var(--sun-hap-slate);
	box-shadow: none;
}

/* ---- sky: today's sun (decorative arc + printed times) ------------------ */
/* 21rem wide at most, so the arc is never taller than ~110 px. */
.sun-hap .sun-hap-sky {
	width: 100%;
	max-width: 21rem;
	margin: 0 auto;
}
.sun-hap .sun-hap-sky__art {
	display: block;
	width: 100%;
	height: auto;
	aspect-ratio: 400 / 132;
	overflow: visible;
}
.sun-hap .sun-hap-sky__horizon { stroke: #D8D1C2; stroke-width: 1; fill: none; }
.sun-hap .sun-hap-sky__tick { stroke: var(--sun-hap-ornament); stroke-width: 1.25; fill: none; }
.sun-hap .sun-hap-sky__track {
	fill: none;
	stroke: var(--sun-hap-ornament);
	stroke-width: 1.25;
	stroke-linecap: round;
	stroke-dasharray: .35 1.15;
	opacity: .8;
}
.sun-hap .sun-hap-sky__done {
	fill: none;
	stroke: var(--sun-hap-ornament);
	stroke-width: 2;
	stroke-linecap: round;
}
.sun-hap .sun-hap-sky__disc { fill: var(--sun-hap-ornament); }
/* Night: the day's arc, fully travelled, in slate; the sun rests dimmed at the sunset end. */
.sun-hap--night .sun-hap-sky__track { stroke: var(--sun-hap-slate); opacity: .55; }
.sun-hap--night .sun-hap-sky__done  { stroke: var(--sun-hap-slate); stroke-width: 1.5; opacity: .7; }
.sun-hap--night .sun-hap-sky__tick  { stroke: var(--sun-hap-slate); }
.sun-hap .sun-hap-sky.is-done .sun-hap-sky__body { opacity: .45; }

.sun-hap .sun-hap-sky__times {
	padding: 0;
	display: grid;
	grid-template-columns: 1fr 1fr;
	align-items: end;
	gap: 0 10px;
	margin-top: 6px;
}
.sun-hap .sun-hap-sky__item--start { text-align: left; }
.sun-hap .sun-hap-sky__item--end   { text-align: right; }
.sun-hap .sun-hap-sky dt {
	font-family: var(--sun-hap-sans);
	font-size: 12px;
	line-height: 1.3;
	letter-spacing: .1em;
	text-transform: uppercase;
	color: var(--sun-hap-slate);
	white-space: nowrap;
}
.sun-hap .sun-hap-sky dd {
	margin: 1px 0 0;
	font-family: var(--sun-hap-serif);
	font-weight: 500;
	font-size: 25px;
	line-height: 1.1;
	font-variant-numeric: lining-nums;
	color: var(--sun-hap-ink);
	white-space: nowrap;
}

/* ---- weather (the only block left in the info row) ---------------------- */
.sun-hap .sun-hap-today__info {
	margin-top: 16px;
	padding-top: 14px;
	border-top: 1px solid var(--sun-hap-hair);
}
.sun-hap .sun-hap-wx__when {
	font-family: var(--sun-hap-sans);
	font-size: 12px;
	line-height: 1.3;
	letter-spacing: .14em;
	text-transform: uppercase;
	color: var(--sun-hap-slate);
}
.sun-hap .sun-hap-wx__now {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 2px 10px;
	margin-top: 4px;
}
.sun-hap .sun-hap-wx__icon { width: 30px; height: 30px; color: var(--sun-hap-ornament); stroke-width: 1.25; }
.sun-hap .sun-hap-wx__temp {
	font-family: var(--sun-hap-serif);
	font-weight: 300;
	font-size: 44px;
	line-height: .95;
	font-variant-numeric: lining-nums;
	color: var(--sun-hap-ink);
}
.sun-hap .sun-hap-wx__cond { font-size: 20px; line-height: 1.15; color: var(--sun-hap-ink); }
.sun-hap .sun-hap-wx__tonight {
	margin-top: 6px;
	font-size: 16px;
	line-height: 1.3;
	color: var(--sun-hap-slate);
}
.sun-hap .sun-hap-wx__low { color: var(--sun-hap-ink); font-variant-numeric: lining-nums; }
.sun-hap .sun-hap-wx__src {
	margin-top: 6px;
	font-size: 15px;
	font-style: italic;
	line-height: 1.3;
	color: var(--sun-hap-slate);
}

/* Next 3 days: always shown, three equal columns. Phones and narrow cards stack each day
   (name / icon + temp / conditions), centred. */
.sun-hap .sun-hap-outlook__list {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	margin: 12px 0 0;
	padding: 0;
	list-style: none;
	border-top: 1px solid var(--sun-hap-hair);
	border-bottom: 1px solid var(--sun-hap-hair);
}
.sun-hap .sun-hap-outlook__day {
	display: grid;
	grid-template-columns: auto auto;
	grid-template-areas: "name name" "icon temp" "cond cond";
	justify-content: center;
	align-content: start;
	align-items: center;
	gap: 1px 6px;
	min-width: 0;
	padding: 8px 4px;
	font-size: 15px;
	line-height: 1.25;
	text-align: center;
}
.sun-hap .sun-hap-outlook__day + .sun-hap-outlook__day { border-left: 1px solid var(--sun-hap-hair); }
.sun-hap .sun-hap-outlook__name { grid-area: name; color: var(--sun-hap-ink); }
.sun-hap .sun-hap-outlook__icon { grid-area: icon; width: 16px; height: 16px; color: var(--sun-hap-ornament); }
.sun-hap .sun-hap-outlook__temp { grid-area: temp; font-weight: 500; font-size: 18px; font-variant-numeric: lining-nums; text-align: left; }
.sun-hap .sun-hap-outlook__cond { grid-area: cond; color: var(--sun-hap-slate); font-style: italic; overflow-wrap: anywhere; }

/* ---- Today card layouts (container sun-hap-today) ---------------------- */
.sun-hap .sun-hap-today__body {
	display: flex;
	flex-direction: column;
	flex: 1;
}
/* Weather unavailable: the sun alone, centred in the card (a little larger where the card is wide). */
.sun-hap .sun-hap__today--nowx .sun-hap-today__body { justify-content: center; }
@container sun-hap-today (min-width: 30rem) {
	.sun-hap .sun-hap__today--nowx .sun-hap-sky { max-width: 25rem; }
}

/* Two columns (Today card >= 30rem: desktop beside the events, tablets): sun left, weather now right,
   the 3-day row and the source across the foot, pinned to the card bottom so it lines up with
   "See all events". The info and weather wrappers dissolve (display: contents; plain divs, no role)
   so their children sit on the card grid; the hairline between the columns is the ::before. */
@container sun-hap-today (min-width: 30rem) {
	.sun-hap .sun-hap__today:not(.sun-hap__today--nowx) .sun-hap-today__body {
		display: grid;
		grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr);
		grid-template-rows: minmax(0, 1fr) auto auto auto minmax(0, 1fr) minmax(14px, auto) auto auto auto;
		grid-template-areas:
			"sky ."
			"sky when"
			"sky now"
			"sky tonight"
			"sky ."
			". ."
			"out out"
			"src src"
			"foot foot";
		column-gap: 36px;
	}
	.sun-hap .sun-hap__today:not(.sun-hap__today--nowx) .sun-hap-today__body::before {
		content: "";
		grid-area: 1 / 2 / 6 / 3;
		justify-self: start;
		width: 1px;
		margin-left: -18px;
		background: var(--sun-hap-hair);
	}
	.sun-hap .sun-hap-today__body > .sun-hap-today__info,
	.sun-hap .sun-hap-today__info > .sun-hap-wx { display: contents; }
	.sun-hap .sun-hap-today__body > .sun-hap-sky { grid-area: sky; align-self: center; }
	.sun-hap .sun-hap-wx__when    { grid-area: when; }
	.sun-hap .sun-hap-wx__now     { grid-area: now; }
	.sun-hap .sun-hap-wx__tonight { grid-area: tonight; }
	.sun-hap .sun-hap-outlook__list { grid-area: out; margin-top: 0; }
	.sun-hap .sun-hap-wx__src     { grid-area: src; }
	.sun-hap .sun-hap-today__foot { grid-area: foot; }

	/* each day on two lines: name + icon + temp, then conditions */
	.sun-hap .sun-hap-outlook__day {
		grid-template-columns: auto auto minmax(0, 1fr);
		grid-template-areas: "name icon temp" "cond cond cond";
		justify-content: stretch;
		gap: 1px 7px;
		padding: 8px 12px;
		text-align: left;
	}
	.sun-hap .sun-hap-outlook__day:first-child { padding-left: 0; }
	.sun-hap .sun-hap-outlook__day:last-child  { padding-right: 0; }
}

/* Wide (no events: the Today card spans the band): sun | weather now | next 3 days, one row. */
@container sun-hap-today (min-width: 52rem) {
	.sun-hap .sun-hap__today:not(.sun-hap__today--nowx) .sun-hap-today__body {
		grid-template-columns: minmax(0, 1fr) minmax(0, .8fr) minmax(0, 1.25fr);
		grid-template-rows: minmax(0, 1fr) auto auto auto minmax(0, 1fr) auto;
		grid-template-areas:
			"sky .       ."
			"sky when    out"
			"sky now     out"
			"sky tonight src"
			"sky .       ."
			"foot foot   foot";
		column-gap: 44px;
	}
	.sun-hap .sun-hap__today:not(.sun-hap__today--nowx) .sun-hap-today__body::before { margin-left: -22px; }
	.sun-hap .sun-hap-outlook__list { align-self: end; }
	.sun-hap .sun-hap-wx__src { align-self: start; }
	.sun-hap .sun-hap-outlook__day {
		grid-template-columns: auto auto;
		grid-template-areas: "name name" "icon temp" "cond cond";
		justify-content: center;
		padding: 8px 6px;
		text-align: center;
	}
	.sun-hap .sun-hap-outlook__day:first-child,
	.sun-hap .sun-hap-outlook__day:last-child { padding-left: 6px; padding-right: 6px; }
}

/* ---- See all events in the Today foot (no events only) ------------------ */
.sun-hap .sun-hap-today__foot {
	margin-top: 16px;
	padding-top: 6px;
	border-top: 1px solid var(--sun-hap-hair);
}

/* ---- quick actions ----------------------------------------------------- */
.sun-hap .sun-hap-actions {
	display: flex;
	flex: 0 1 auto;
	flex-wrap: nowrap;
	gap: 10px;
	margin: 0;
	padding: 0;
	list-style: none;
}
.sun-hap .sun-hap-actions > li { flex: 1 1 auto; display: flex; min-width: 0; }
.sun-hap .sun-hap-btn {
	flex: 1 1 auto;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	min-height: 48px;
	padding: 0 14px;
	border: 1px solid var(--sun-hap-control);
	border-radius: 0;
	background: transparent;
	font-family: var(--sun-hap-sans);
	font-size: 15px;
	line-height: 1.1;
	letter-spacing: 0;
	color: var(--sun-hap-ink);
	text-decoration: none;
	white-space: nowrap;
}
.sun-hap .sun-hap-btn__icon { width: 17px; height: 17px; color: var(--sun-hap-gold-on-cream); }
.sun-hap .sun-hap-btn:hover {
	background: var(--sun-hap-ink);
	border-color: var(--sun-hap-ink);
	color: #FFFFFF;
	text-decoration: none;
}
.sun-hap .sun-hap-btn:hover .sun-hap-btn__icon { color: #FFFFFF; }
.sun-hap .sun-hap-btn__label { white-space: nowrap; }

/* The theme underlines every link inside a content li/p at (0,3,3)
   (.page-content.the-content-parent li a:not(.elementor-button):not(:has(img))).
   Buttons and whole-row event links are not prose links: (0,4,1) here. */
.sun-hap.sun-hap .sun-hap-actions a.sun-hap-btn,
.sun-hap.sun-hap .sun-hap-events__list a.sun-hap-event__link { text-decoration: none; }
.sun-hap.sun-hap p a.sun-hap-link {
	text-decoration: underline;
	text-decoration-thickness: 1px;
	text-underline-offset: 5px;
}

/* ---- events ------------------------------------------------------------ */
.sun-hap .sun-hap-events__list {
	display: flex;
	flex-direction: column;
	flex: 1 0 auto;
	margin: 0 -10px;
	padding: 0;
	list-style: none;
}
.sun-hap .sun-hap-event { display: flex; flex: 1 0 auto; margin: 0; padding: 0; }
.sun-hap .sun-hap-event + .sun-hap-event { border-top: 1px solid var(--sun-hap-hair); }
.sun-hap .sun-hap-event__link {
	display: grid;
	grid-template-columns: 50px minmax(0, 1fr) 16px;
	grid-template-areas:
		"tile title arrow"
		"tile meta  arrow";
	align-items: center;
	align-content: center;
	flex: 1;
	column-gap: 14px;
	row-gap: 3px;
	padding: 12px 10px;
	color: var(--sun-hap-ink);
	text-decoration: none;
}
.sun-hap .sun-hap-event__title {
	grid-area: title;
	align-self: end;
	font-family: var(--sun-hap-serif);
	font-weight: 500;
	font-size: 20px;
	line-height: 1.15;
	color: var(--sun-hap-ink);
	text-decoration: underline;
	text-decoration-color: transparent;
	text-decoration-thickness: 1px;
	text-underline-offset: 4px;
}
.sun-hap .sun-hap-event__tile {
	grid-area: tile;
	align-self: start;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	width: 50px;
	min-height: 54px;
	padding: 4px 3px 6px;
	background: var(--sun-hap-cream);
	border-top: 2px solid var(--sun-hap-ornament);
	text-align: center;
}
.sun-hap .sun-hap-event__mon {
	font-family: var(--sun-hap-sans);
	font-size: 12px;
	line-height: 1.2;
	letter-spacing: .14em;
	margin-right: -.14em;
	text-transform: uppercase;
	color: var(--sun-hap-gold-on-cream);
}
.sun-hap .sun-hap-event__day {
	font-family: var(--sun-hap-serif);
	font-weight: 500;
	font-size: 24px;
	line-height: 1;
	font-variant-numeric: lining-nums;
	color: var(--sun-hap-ink);
	white-space: nowrap;
}
.sun-hap .sun-hap-event__meta {
	grid-area: meta;
	align-self: start;
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	gap: 0 10px;
	font-size: 15px;
	line-height: 1.3;
	color: var(--sun-hap-slate);
}
.sun-hap .sun-hap-event__when {
	font-family: var(--sun-hap-sans);
	font-size: 12px;
	letter-spacing: .12em;
	text-transform: uppercase;
	color: var(--sun-hap-slate);
}
.sun-hap .sun-hap-event__when .sun-hap-ampm { font-size: 1em; vertical-align: 0; letter-spacing: inherit; }
.sun-hap .sun-hap-event__venue { font-style: italic; }
.sun-hap .sun-hap-event__thumb { display: none; }
.sun-hap .sun-hap-event__arrow {
	grid-area: arrow;
	width: 16px;
	height: 16px;
	color: var(--sun-hap-gold-on-white);
}
.sun-hap .sun-hap-event__link:hover { background: #FBFAF7; }
.sun-hap .sun-hap-event__link:hover .sun-hap-event__title { text-decoration-color: var(--sun-hap-ornament); }
.sun-hap .sun-hap-event__link:focus-visible { outline-offset: 0; }
.sun-hap .sun-hap-events__all {
	margin-top: 4px;
	padding-top: 4px;
	border-top: 1px solid var(--sun-hap-hair);
}

/* a running event: "Happening now" replaces the day (contract, not mocked) */
.sun-hap .sun-hap-event--now .sun-hap-event__day {
	font-family: var(--sun-hap-sans);
	font-size: 10px;
	letter-spacing: .1em;
	line-height: 1.25;
	text-transform: uppercase;
	white-space: normal;
}

/* Thumbnails only where the card holds them beside a two-line title (tablets, desktop >= ~1200 px);
   hidden on phones and at ~1025-1199 (owner ruling 3a). */
@container sun-hap-events (min-width: 26rem) {
	.sun-hap .sun-hap-event__link {
		grid-template-columns: 50px minmax(0, 1fr) 76px 16px;
		grid-template-areas:
			"tile title thumb arrow"
			"tile meta  thumb arrow";
	}
	.sun-hap .sun-hap-event__thumb {
		grid-area: thumb;
		display: block;
		width: 76px;
		height: 57px;
		object-fit: cover;
		align-self: center;
	}
}
@container sun-hap-events (min-width: 34rem) {
	.sun-hap .sun-hap-event__link { grid-template-columns: 50px minmax(0, 1fr) 88px 16px; }
	.sun-hap .sun-hap-event__thumb { width: 88px; height: 66px; }
}

@media (prefers-reduced-motion: no-preference) {
	.sun-hap .sun-hap-event__arrow,
	.sun-hap .sun-hap-link__arrow { transition: transform .2s ease; }
	.sun-hap .sun-hap-event__link:hover .sun-hap-event__arrow,
	.sun-hap .sun-hap-link:hover .sun-hap-link__arrow { transform: translateX(3px); }
	.sun-hap .sun-hap-btn,
	.sun-hap .sun-hap-event__link { transition: background-color .2s ease, color .2s ease, border-color .2s ease; }
}

/* ---- band head < 40rem (phones, small tablets) -------------------------- */
/* The two actions take a full row as equal halves, and the phone number leaves the label (it stays in
   the accessible name: "Call (805) ..."). At 40rem and up both keep their natural width beside the heading. */
@container sun-hap-head (max-width: 39.99rem) {
	.sun-hap .sun-hap-actions { flex: 1 1 100%; }
	.sun-hap .sun-hap-actions > li { flex: 1 1 0; }
	.sun-hap .sun-hap-btn__more--num {
		position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0;
		overflow: hidden; clip: rect(0 0 0 0); clip-path: inset(50%); border: 0;
	}
}

/* ---- phones ------------------------------------------------------------ */
@media (max-width: 767px) {
	.sun-hap { padding: 24px 0 28px; }
	.sun-hap .sun-hap__head { margin-bottom: 16px; }
	.sun-hap .sun-hap__title { font-size: 36px; }
	.sun-hap .sun-hap-card { padding: 14px 16px 16px; }
	.sun-hap .sun-hap-card__title { font-size: 24px; }
	.sun-hap .sun-hap-card__head { gap: 6px 16px; margin-bottom: 10px; }
	.sun-hap .sun-hap-sky { max-width: 18.5rem; }          /* arc <= ~98 px tall */
	.sun-hap .sun-hap-sky__times { margin-top: 2px; }
	.sun-hap .sun-hap-sky dd { font-size: 24px; }
	.sun-hap .sun-hap-wx__temp { font-size: 40px; }
	.sun-hap .sun-hap-wx__cond { font-size: 19px; }
	.sun-hap .sun-hap-today__info { margin-top: 12px; padding-top: 10px; }
	.sun-hap .sun-hap-outlook__list { margin-top: 10px; }
	.sun-hap .sun-hap-outlook__day { padding: 6px 4px; line-height: 1.2; }
	.sun-hap .sun-hap-event__link { padding: 8px 10px; column-gap: 12px; row-gap: 2px; }
	.sun-hap .sun-hap-event__title { font-size: 18px; }
	.sun-hap .sun-hap-events__all { margin-top: 2px; padding-top: 2px; }
	.sun-hap .sun-hap-link { min-height: 48px; }
}

@media (forced-colors: active) {
	.sun-hap .sun-hap-card { border-color: CanvasText; }
	.sun-hap .sun-hap-btn { border-color: ButtonText; }
	.sun-hap a:focus-visible { outline-color: Highlight; box-shadow: none; }
}

/* Keyboard focus must not land under the fixed site header (90-160 px tall). */
.sun-hap a[href] { scroll-margin-top: 176px; scroll-margin-bottom: 24px; }

/* 59b. Host: the Elementor legacy section (section > column > widget-wrap > shortcode widget) that carries the band,
   CSS class sun-hap-host. It adds nothing around the band: no padding, margin or gap at any level (Elementor's 10 px
   column-gap padding, the 20 px widget spacing and any boxed max-width are cancelled), so the band runs edge to edge.
   The doubled class lifts these over Elementor's per-element post CSS (.elementor-118 .elementor-element.elementor-element-x). */
.elementor .elementor-section.sun-hap-host.sun-hap-host {
	margin: 0;
	padding: 0;
	min-height: 0;
	border: 0;
}
.elementor .elementor-section.sun-hap-host.sun-hap-host > .elementor-container {
	width: 100%;
	max-width: none;
	min-height: 0;
	margin: 0;
	padding: 0;
	gap: 0;
}
.elementor .elementor-section.sun-hap-host.sun-hap-host > .elementor-container > .elementor-column {
	width: 100%;
	min-height: 0;
	margin: 0;
	padding: 0;
}
.elementor .elementor-section.sun-hap-host.sun-hap-host > .elementor-container > .elementor-column > .elementor-widget-wrap {
	margin: 0;
	padding: 0;
	gap: 0;
}
.elementor .elementor-section.sun-hap-host.sun-hap-host .elementor-widget-wrap > .elementor-widget {
	--kit-widget-spacing: 0px;
	width: 100%;
	max-width: none;
	margin: 0;
	padding: 0;
}
.elementor .elementor-section.sun-hap-host.sun-hap-host .elementor-widget-container,
.elementor .elementor-section.sun-hap-host.sun-hap-host .elementor-shortcode {
	margin: 0;
	padding: 0;
}
/* ==== END 59 ==== */

/* ==========================================================================
   60. HOME hero: no sideways scroll at laptop widths (page 118, section 9922b4c)
   Found by the 2026-10-14 sprint (D149 open item). The legibility scrim in section 53 is a ::before
   whose left and right inset is max(-14vw, -260px), so it reaches up to 14vw past the hero on each
   side. Between 1025 and about 1278 px that is further than the viewport edge (the 260 px cap only
   keeps it inside from 1279 px), and the page scrolled sideways by up to 86 px (measured on the page
   as it stands after the Happenings band, at 1025, 1100, 1200: 86, 59, 23 px; 0 from 1279 px). The
   overflow is the scrim alone: with section 53 removed it is 0, and it predates the sprint.
   `overflow-x: clip` cuts only the part beyond the hero's own box, which is off screen anyway: the scrim
   looks the same, the hero height is unchanged (811-855 px, measured), overflow-y stays visible, and
   clip makes no scroll container, so nothing else in the section is affected. Same breakpoint as
   section 53.
   TO REVERT: delete this whole section (banner to END 60).
   ========================================================================== */
@media (min-width: 1025px) {
	.elementor-118 .elementor-element-9922b4c { overflow-x: clip; }
}
/* ==== END 60 ==== */

/* ==========================================================================
   61. Lodgify booking bar (Villa pages: [sunstone_lodgify], sunstone-villa.php)
   --------------------------------------------------------------------------
   Lodgify mounts its portable search bar into #lodgify-search-bar in the light DOM, so site-wide rules
   leak in. Three did the damage: `.elementor-kit-13 a {color:#242E35}` painted the Search label and icon
   ink on the ink button (it read as a blank box); the kit/Vamtam global `button` style (padding 20px 0,
   gold Alata, transparent) hit the dates and guests triggers, so the three controls stood 96 / 69 / 96 px
   with two fonts; Lodgify's own 8 px radius and outline frame on the dates sat beside the square guests box, and the bar shrank to max-content.
   Here: one row of three 56 px controls, square, 1 px #C9C7C1 rules, Alata throughout, ink Search with a
   white label. Phones: Lodgify stacks them; each stays 56 px and full width. The #id prefix outranks the
   kit (0,1,1) and Lodgify's hashed classes (0,1,0) without !important.
   TO REVERT: delete this section; 58c (guests value colour) is independent.
   ========================================================================== */
#lodgify-search-bar {
	--lodgify-ui-body-font: "Alata", sans-serif;
	--sun-ldg-rule: #C9C7C1;
	--sun-ldg-h: 56px;
}
/* The shortcode widget is a flex item in a centred column, so it shrink-wrapped the bar to its content. */
.elementor-widget-shortcode:has(#lodgify-search-bar) {
	align-self: stretch;
	width: 100%;
}
#lodgify-search-bar #portable-search-bar {
	align-items: stretch;
	gap: 12px;
	max-width: 880px;
}
@media (min-width: 768px) {
	#lodgify-search-bar #portable-search-bar {
		flex-direction: row;
		flex-wrap: nowrap;
	}
}
#lodgify-search-bar #portable-search-bar > div:empty {
	display: none;
}
/* Undo the theme's global button style on Lodgify's two trigger buttons. */
#lodgify-search-bar button {
	background: transparent;
	border-radius: 0;
	color: #242E35;
	font-family: "Alata", sans-serif;
	font-size: 15px;
	font-weight: 400;
	min-height: var(--sun-ldg-h);
	padding: 0;
	text-shadow: none;
}
/* Dates: one bordered field split in two. */
#lodgify-search-bar button[aria-controls]:has([data-testid="start-date-button"]) {
	border-radius: 0;
	flex: 2 1 0;
	height: var(--sun-ldg-h);
	min-width: 0;
}
#lodgify-search-bar [data-testid="start-date-button"],
#lodgify-search-bar [data-testid="end-date-button"] {
	border: 1px solid var(--sun-ldg-rule);
	border-radius: 0;
	box-shadow: none;
	height: var(--sun-ldg-h);
	min-height: var(--sun-ldg-h);
	min-width: 0;
	outline: 0; /* Lodgify draws this field's frame as an outline; the border above replaces it */
	padding: 8px 40px 8px 16px;
}
#lodgify-search-bar [data-testid="end-date-button"] {
	border-left: 0;
}
#lodgify-search-bar [data-testid="start-date-button"]::before,
#lodgify-search-bar [data-testid="end-date-button"]::before,
#lodgify-search-bar [data-testid="start-date-button"]::after,
#lodgify-search-bar [data-testid="end-date-button"]::after {
	border-radius: 0;
}
#lodgify-search-bar [data-testid="start-date-button"] label,
#lodgify-search-bar [data-testid="end-date-button"] label {
	color: #545D5C;
	font-family: "Alata", sans-serif;
	font-size: 15px;
	left: 16px;
}
#lodgify-search-bar .date {
	color: #242E35;
	font-family: "Alata", sans-serif;
	font-size: 15px;
}
/* Guests: same height and rule as the dates. */
#lodgify-search-bar [data-testid="guests-breakdown-trigger"] {
	border: 1px solid var(--sun-ldg-rule);
	flex: 1 1 0;
	height: var(--sun-ldg-h);
	max-width: none;
	min-width: 0;
	padding: 7px 16px;
}
#lodgify-search-bar [data-testid="guests-breakdown-trigger"] label {
	color: #545D5C;
	font-family: "Alata", sans-serif;
	font-size: 12px;
	letter-spacing: .04em;
	line-height: 1.2;
}
#lodgify-search-bar [data-testid="guests-breakdown-trigger"] .value-wrapper {
	font-family: "Alata", sans-serif;
	font-size: 15px;
	line-height: 1.3;
}
#lodgify-search-bar [data-testid="guests-breakdown-trigger"] svg {
	color: #906A3C;
}
/* Search: ink, white label and icon. */
#lodgify-search-bar a[data-testid="button"] {
	background: #242E35;
	color: #FFFFFF;
	flex: 0 0 auto;
	font-family: "Alata", sans-serif;
	font-size: 15px;
	gap: 10px;
	height: var(--sun-ldg-h);
	letter-spacing: .1em;
	min-width: 160px;
	padding: 0 32px;
	text-transform: uppercase;
	transition: background-color .2s;
}
#lodgify-search-bar a[data-testid="button"]:hover {
	background: #11181D;
	color: #FFFFFF;
}
#lodgify-search-bar a[data-testid="button"] svg {
	color: #FFFFFF;
	height: 20px;
	width: 20px;
}
#lodgify-search-bar button:focus-visible,
#lodgify-search-bar a[data-testid="button"]:focus-visible,
#lodgify-search-bar [data-testid$="-date-button"]:focus-visible {
	outline: 2px solid #906A3C;
	outline-offset: 2px;
}
/* Pop-overs (calendar, guests). Lodgify portals them to <body> inside Radix wrappers at z-index 999, under the
   fixed site header (11000), so a calendar that opens upward lost its month row behind the header. The kit
   button style also reached the steppers (26x42, padding 20px 0), knocking the pets row out of line.
   html:root outranks the :root custom property the shortcode prints inline (sunstone-villa.php). */
html:root {
	--ldg-component-modal-z-index: 11001;
}
body [data-radix-popper-content-wrapper] {
	z-index: 11001 !important; /* Radix writes z-index inline from the variable on mount; this pins it */
}
body [data-radix-popper-content-wrapper] button {
	font-family: "Alata", sans-serif;
	padding: 0; /* the kit's 20px 0 made every calendar day 73 px tall, so the calendar fitted neither above nor below */
}
body [data-radix-popper-content-wrapper] button[data-testid$="-add-button"] {
	color: #242E35;
}
body [data-radix-popper-content-wrapper] button[data-testid="search-bar.guests-breakdown-done-cta"] {
	border: 1px solid #242E35;
	color: #242E35;
	font-family: "Alata", sans-serif;
	font-size: 14px;
	letter-spacing: .1em;
	min-height: 48px;
	padding: 0 24px;
	text-transform: uppercase;
}
/* Each stepper sizes to its count, so the pets row (wider "0" box) sat 21 px out of line. Fix the width. */
body [data-radix-popper-content-wrapper] div:has(> button[data-testid$="-remove-button"]) {
	flex: 0 0 148px;
	width: 148px;
}
body [data-radix-popper-content-wrapper] button[data-testid$="-remove-button"],
body [data-radix-popper-content-wrapper] button[data-testid$="-add-button"] {
	flex: 0 0 auto;
}
body [data-radix-popper-content-wrapper] button:focus-visible {
	outline: 2px solid #906A3C;
	outline-offset: 2px;
}
@media (max-width: 767px) {
	#lodgify-search-bar #portable-search-bar {
		gap: 10px;
	}
	#lodgify-search-bar button[aria-controls]:has([data-testid="start-date-button"]),
	#lodgify-search-bar [data-testid="guests-breakdown-trigger"],
	#lodgify-search-bar a[data-testid="button"] {
		flex: 0 0 auto;
		width: 100%;
	}
}
/* ==== END 61 ==== */

/* ==========================================================================
   62. Montecito Wine Lounge (/sunstone-montecito-wine-lounge/, page 995391) -- namespace sun-mtc-
   --------------------------------------------------------------------------
   What: the redesign in the 2026-10-19 build spec. Classes are added by walker ops (containers css_classes,
   widgets _css_classes); this section styles only those classes and what sits inside them.
     hero 29071895 .sun-mtc-hero (+ __eyebrow, __title = h1 42e94a13, __meta, two .sun-mtc-btn)
     intro 44707d1d .sun-mtc-intro, facts strip 27295cfb .sun-mtc-facts moved to its top, cards .sun-mtc-fact
     menu 1305b076 .sun-mtc-menu (+ image widget .sun-mtc-menu__img)
     specials 303b502f .sun-mtc-specials, grid 62778723 .sun-mtc-specials__grid, cards .sun-mtc-special
     club + private 500ef571 .sun-mtc-duo, halves .sun-mtc-duo__card, club image .sun-mtc-duo__img
     closing band 77782382 .sun-mtc-visit; buttons .sun-mtc-btn (--solid ink fill, --light white on ink)
   Why: the hero was 100vh with a -110 px top margin under a solid 80 px header (30 px of photo cut off, the
   h1 alone over the photo, no action on the first screen); facts sat below the intro; the menu was a centred
   check-list; the three offers had no anchor; the halves were bare text.
   Rules that hold:
   - Hero text sits on an opaque cream card (#F9F8F4, the colour of the header-shape hills), never on the photo,
     so heading/meta contrast is the token pair (ink 13:1, slate 6.4:1, gold #85602F 5.3:1), not a photo guess.
     The card is anchored bottom-right over the window, width min(540px, 56vw), so it stays right of the
     "1294" number and the SUNSTONE WINE LOUNGE wall sign (left 31% of the image) at 768-1920 px.
   - Desktop hero: margin-top 0 (was -110), min-height min(78vh, 840px) (was 100vh); background-position-y
     62% keeps "1294" and the wall sign in frame above the hills at 1024-1920.
   - Phones (<768): stacked. Photo band min(96vw, 480px) tall with the photo width-bound (100% auto, -16vw)
     so the frame (lit SUNSTONE sign, 1294, wall sign) holds at every phone width; the tint/hills overlay is cut
     to the band; the card becomes a cream text band below it. Both hero buttons stay on the first screen at
     360x780, 390x844 and 430x932.
   - Menu goes side by side from 768 px (photo beside the list), so tablets do not stack a full-width photo.
   - Cream sections (#F4F1EA: menu, duo) set --sun-mtc-gold: #85602F; white surfaces keep #906A3C.
   - Specificity: Elementor's per-element post CSS is .elementor-995391 .elementor-element.elementor-element-<id>
     (0,3,0 to 0,5,0, plus 0,8,0 on the hero widget-wrap alignment, which is left alone). Rules here double a
     namespace class to land one step above, so there is no !important in this section. Flex/grid goes on
     .e-con-inner for boxed containers and on the container itself for full-width ones.
   TO REVERT: delete this whole section (banner to END 62). The walker classes are inert without it.
   ========================================================================== */
.elementor-995391 .sun-mtc-hero,
.elementor-995391 .sun-mtc-intro,
.elementor-995391 .sun-mtc-menu,
.elementor-995391 .sun-mtc-specials,
.elementor-995391 .sun-mtc-duo,
.elementor-995391 .sun-mtc-visit {
	--sun-mtc-gold: #906A3C;
	--sun-mtc-ink: #242E35;
	--sun-mtc-slate: #545D5C;
	--sun-mtc-hair: #DEDDD9;
}
.elementor-995391 .sun-mtc-hero { --sun-mtc-gold: #85602F; }

/* ---- 62a. Buttons: Elementor button widget, the anchor is .elementor-button ---------------------------- */
.elementor-995391 .sun-mtc-btn.sun-mtc-btn.elementor-widget-button .elementor-button {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 48px;
	padding: 0 28px;
	border: 1px solid var(--sun-mtc-gold, #906A3C);
	border-radius: 0;
	background-color: transparent;
	color: var(--sun-mtc-gold, #906A3C);
	fill: currentColor;
	font-family: "Alata", sans-serif;
	font-size: 14px;
	font-weight: 400;
	line-height: 1.2;
	letter-spacing: .1em;
	text-align: center;
	text-transform: uppercase;
	scroll-margin-top: 112px;  /* the fixed header is 80-90 px */
}
.elementor-995391 .sun-mtc-btn.sun-mtc-btn.elementor-widget-button .elementor-button .elementor-button-content-wrapper,
.elementor-995391 .sun-mtc-btn.sun-mtc-btn.elementor-widget-button .elementor-button .elementor-button-text {
	color: inherit;
}
.elementor-995391 .sun-mtc-btn.sun-mtc-btn.elementor-widget-button .elementor-button:hover,
.elementor-995391 .sun-mtc-btn.sun-mtc-btn.elementor-widget-button .elementor-button:focus {
	background-color: var(--sun-mtc-gold, #906A3C);
	border-color: var(--sun-mtc-gold, #906A3C);
	color: #FFFFFF;
}
.elementor-995391 .sun-mtc-btn.sun-mtc-btn.elementor-widget-button .elementor-button:focus-visible {
	outline: 2px solid #242E35;
	outline-offset: 3px;
}
/* --solid: ink fill, white label; hover inverts to an ink outline */
.elementor-995391 .sun-mtc-btn.sun-mtc-btn--solid.elementor-widget-button .elementor-button {
	background-color: #242E35;
	border-color: #242E35;
	color: #FFFFFF;
}
.elementor-995391 .sun-mtc-btn.sun-mtc-btn--solid.elementor-widget-button .elementor-button:hover,
.elementor-995391 .sun-mtc-btn.sun-mtc-btn--solid.elementor-widget-button .elementor-button:focus {
	background-color: transparent;
	border-color: #242E35;
	color: #242E35;
}
/* --light: white outline on ink; hover fills white (matches the element CSS on 592500cd / 3f52421d) */
.elementor-995391 .sun-mtc-btn.sun-mtc-btn--light.elementor-widget-button .elementor-button {
	background-color: transparent;
	border-color: #FFFFFF;
	color: #FFFFFF;
}
.elementor-995391 .sun-mtc-btn.sun-mtc-btn--light.elementor-widget-button .elementor-button:hover,
.elementor-995391 .sun-mtc-btn.sun-mtc-btn--light.elementor-widget-button .elementor-button:focus {
	background-color: #FFFFFF;
	border-color: #FFFFFF;
	color: #242E35;
}
.elementor-995391 .sun-mtc-btn.sun-mtc-btn--light.elementor-widget-button .elementor-button:focus-visible {
	outline-color: #F4F1EA;
}
@media (prefers-reduced-motion: no-preference) {
	.elementor-995391 .sun-mtc-btn.sun-mtc-btn.elementor-widget-button .elementor-button {
		transition: background-color .3s cubic-bezier(.22, .61, .36, 1), color .3s cubic-bezier(.22, .61, .36, 1), border-color .3s cubic-bezier(.22, .61, .36, 1);
	}
}
@media (max-width: 767px) {
	.elementor-995391 .sun-mtc-btn.sun-mtc-btn.elementor-widget-button { width: 100%; }
	.elementor-995391 .sun-mtc-btn.sun-mtc-btn.elementor-widget-button .elementor-button { width: 100%; }
}

/* ---- 62b. Hero: legacy section > container > column > widget-wrap (the widget-wrap is the card) ------- */
.elementor-995391 .sun-mtc-hero.sun-mtc-hero.elementor-section {
	margin-top: 0;      /* Elementor setting: -110px under a solid 80 px header */
	margin-bottom: 0;
	padding: 0 clamp(24px, 6vw, 96px) clamp(56px, 6vw, 88px);
}
.elementor-995391 .sun-mtc-hero.sun-mtc-hero.elementor-section:not(.elementor-motion-effects-element-type-background) {
	background-position: 50% 62%;
}
.elementor-995391 .sun-mtc-hero.sun-mtc-hero.elementor-section > .elementor-container {
	min-height: calc(min(78vh, 840px) - clamp(56px, 6vw, 88px));   /* section total <= 78vh; Elementor setting: 100vh (tablet 50vh, mobile 70vh) */
	max-width: 1600px;
	align-items: flex-end;
}
.elementor-995391 .sun-mtc-hero.sun-mtc-hero .elementor-container > .elementor-column {
	display: flex;
	align-items: flex-end;
	justify-content: flex-end;
}
.elementor-995391 .sun-mtc-hero.sun-mtc-hero .elementor-column > .elementor-widget-wrap.elementor-element-populated {
	flex: 0 0 auto;
	width: min(540px, 56vw);
	margin: 0;
	padding: clamp(28px, 3.2vw, 48px);
	gap: 0 12px;
	background: #F9F8F4;
	outline: 1px solid rgba(185, 141, 88, .55);   /* #B98D58 ornament hairline inside the card */
	outline-offset: -10px;
	box-shadow: 0 40px 80px -48px rgba(36, 46, 53, .55);
}
.elementor-995391 .sun-mtc-hero .elementor-widget-wrap > .elementor-element {
	margin: 0;   /* 0,3,0: the per-widget margins below (0,4,0) win over it */
}
.elementor-995391 .sun-mtc-hero .sun-mtc-hero__eyebrow.sun-mtc-hero__eyebrow {
	margin-bottom: 16px;
}
.elementor-995391 .sun-mtc-hero .sun-mtc-hero__eyebrow .elementor-heading-title {
	color: var(--sun-mtc-gold);
	font-family: "Alata", sans-serif;
	font-size: 13px;
	font-weight: 400;
	letter-spacing: .24em;
	line-height: 1.3;
	text-transform: uppercase;
}
.elementor-995391 .sun-mtc-hero .sun-mtc-hero__title.sun-mtc-hero__title {
	margin-bottom: 14px;
}
.elementor-995391 .sun-mtc-hero .sun-mtc-hero__title.sun-mtc-hero__title .elementor-headline {
	color: var(--sun-mtc-ink);
	font-size: clamp(56px, 6vw, 96px);
	font-weight: 300;
	letter-spacing: -.01em;
	line-height: 1;
	text-align: left;
}
.elementor-995391 .sun-mtc-hero .sun-mtc-hero__title.sun-mtc-hero__title .vamtam-word .vamtam-letter {
	color: var(--sun-mtc-ink);
	line-height: 1;
}
.elementor-995391 .sun-mtc-hero .sun-mtc-hero__meta.sun-mtc-hero__meta {
	margin-bottom: 26px;
	color: var(--sun-mtc-slate);
	font-family: "Cormorant Infant", serif;
	font-size: 20px;
	line-height: 1.4;
}
.elementor-995391 .sun-mtc-hero .sun-mtc-hero__meta p { margin: 0; }
.elementor-995391 .sun-mtc-hero.sun-mtc-hero .elementor-widget-wrap > .sun-mtc-btn {
	flex: 1 1 auto;
	width: auto;
	margin-top: 0;
}
.elementor-995391 .sun-mtc-hero.sun-mtc-hero .sun-mtc-btn .elementor-button { width: 100%; }

@media (max-width: 767px) {
	.elementor-995391 .sun-mtc-hero.sun-mtc-hero.elementor-section {
		padding: min(96vw, 480px) 0 0;
	}
	.elementor-995391 .sun-mtc-hero.sun-mtc-hero.elementor-section:not(.elementor-motion-effects-element-type-background) {
		background-color: #F9F8F4;
		background-position: 50% -16vw;   /* image is 3:4 at 100vw wide: the band shows 12-84% of its height */
		background-size: 100% auto;
	}
	.elementor-995391 .sun-mtc-hero.sun-mtc-hero > .elementor-background-overlay {
		height: min(96vw, 480px);          /* tint and hills stop at the photo band */
	}
	.elementor-995391 .sun-mtc-hero.sun-mtc-hero.elementor-section > .elementor-container {
		min-height: 0;
	}
	.elementor-995391 .sun-mtc-hero.sun-mtc-hero .elementor-column > .elementor-widget-wrap.elementor-element-populated {
		width: 100%;
		padding: 26px 20px 36px;
		row-gap: 10px;
		outline: 0;
		box-shadow: none;
	}
	.elementor-995391 .sun-mtc-hero .sun-mtc-hero__eyebrow.sun-mtc-hero__eyebrow { margin-bottom: 2px; }
	.elementor-995391 .sun-mtc-hero .sun-mtc-hero__title.sun-mtc-hero__title { margin-bottom: 0; }
	.elementor-995391 .sun-mtc-hero .sun-mtc-hero__title.sun-mtc-hero__title .elementor-headline { font-size: 52px; }
	.elementor-995391 .sun-mtc-hero .sun-mtc-hero__meta.sun-mtc-hero__meta { margin-bottom: 12px; font-size: 19px; }
	.elementor-995391 .sun-mtc-hero.sun-mtc-hero .elementor-widget-wrap > .sun-mtc-btn { flex: 1 1 100%; }
}
@media (min-width: 768px) and (max-width: 1024px) {
	.elementor-995391 .sun-mtc-hero.sun-mtc-hero .elementor-column > .elementor-widget-wrap.elementor-element-populated { row-gap: 12px; }
	.elementor-995391 .sun-mtc-hero .sun-mtc-hero__meta.sun-mtc-hero__meta { margin-bottom: 14px; }
}

/* ---- 62c. Intro: facts strip on top, then an editorial split (eyebrow + h2 | text) ------------------- */
.elementor-995391 .sun-mtc-intro.sun-mtc-intro.e-con {
	--padding-top: clamp(40px, 5vw, 72px);
	--padding-bottom: clamp(56px, 6.5vw, 96px);
}
.elementor-995391 .sun-mtc-intro.sun-mtc-intro > .e-con-inner > .elementor-widget {
	text-align: left;
}
.elementor-995391 .sun-mtc-intro.sun-mtc-intro > .e-con-inner > .elementor-widget-text-editor {
	--container-widget-width: 100%;
	width: 100%;
	max-width: 62ch;
	color: var(--sun-mtc-slate);
}
/* No lead-paragraph emphasis: paragraph 1 carries the farming/certification wording, which stays body size. */
.elementor-995391 .sun-mtc-intro.sun-mtc-intro > .e-con-inner > .elementor-widget-text-editor p:last-child { margin-bottom: 0; }
.elementor-995391 .sun-mtc-intro.sun-mtc-intro > .e-con-inner > .sun-mtc-facts {
	margin-bottom: clamp(40px, 6vw, 96px);
}
@media (min-width: 1025px) {
	.elementor-995391 .sun-mtc-intro.sun-mtc-intro > .e-con-inner {
		display: grid;
		grid-template-columns: minmax(0, 5fr) minmax(0, 7fr);
		grid-template-rows: auto auto auto 1fr;
		column-gap: clamp(48px, 6vw, 112px);
		row-gap: 0;
		align-items: start;
	}
	.elementor-995391 .sun-mtc-intro.sun-mtc-intro > .e-con-inner > .sun-mtc-facts { grid-column: 1 / -1; grid-row: 1; }
	.elementor-995391 .sun-mtc-intro.sun-mtc-intro > .e-con-inner > .sun-eyebrow-p { grid-column: 1; grid-row: 2; margin-bottom: 18px; }
	.elementor-995391 .sun-mtc-intro.sun-mtc-intro > .e-con-inner > .elementor-widget-heading:not(.sun-eyebrow-p) { grid-column: 1; grid-row: 3; }
	.elementor-995391 .sun-mtc-intro.sun-mtc-intro > .e-con-inner > .elementor-widget-text-editor { grid-column: 2; grid-row: 2 / span 3; padding-top: 4px; }
}
@media (max-width: 1024px) {
	.elementor-995391 .sun-mtc-intro.sun-mtc-intro > .e-con-inner { align-items: stretch; }
}

/* facts strip: one hairline frame, three equal cells (full-width container: grid on the container) */
.elementor-995391 .sun-mtc-intro .sun-mtc-facts.sun-mtc-facts.e-con {
	--width: 100%;
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 0;
	width: 100%;
	padding: 0;
	border: 1px solid var(--sun-mtc-hair);
	background: #FFFFFF;
}
.elementor-995391 .sun-mtc-facts .sun-mtc-fact.sun-mtc-fact {
	--width: auto;
	--container-widget-width: auto;
	width: auto;
	max-width: none;
	margin: 0;
	padding: clamp(24px, 2.8vw, 40px);
	border: 0;
	background: transparent;
}
.elementor-995391 .sun-mtc-facts .sun-mtc-fact.sun-mtc-fact + .sun-mtc-fact { border-left: 1px solid var(--sun-mtc-hair); }
.elementor-995391 .sun-mtc-facts .sun-mtc-fact.sun-mtc-fact > .elementor-widget-container {
	padding: 0;
	border: 0;
	background: transparent;
}
.elementor-995391 .sun-mtc-facts .sun-mtc-fact.sun-mtc-fact .elementor-heading-title,
.elementor-995391 .sun-mtc-facts .sun-mtc-fact.sun-mtc-fact .elementor-icon-box-title {
	margin-block-end: 6px;
	font-size: 30px;
	line-height: 1.15;
}
.elementor-995391 .sun-mtc-facts .sun-mtc-fact.sun-mtc-fact .elementor-icon-box-description { margin: 0; }
.elementor-995391 .sun-mtc-facts .sun-mtc-fact.sun-mtc-fact .elementor-widget-text-editor p { margin: 0; }
.elementor-995391 .sun-mtc-facts .sun-mtc-fact.sun-mtc-fact .ha-business-hour-wrapper { max-width: 26rem; }
@media (min-width: 768px) and (max-width: 1024px) {
	.elementor-995391 .sun-mtc-intro .sun-mtc-facts.sun-mtc-facts.e-con { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.elementor-995391 .sun-mtc-facts .sun-mtc-fact.sun-mtc-fact:first-child { grid-column: 1 / -1; }
	.elementor-995391 .sun-mtc-facts .sun-mtc-fact.sun-mtc-fact + .sun-mtc-fact { border-left: 0; border-top: 1px solid var(--sun-mtc-hair); }
	.elementor-995391 .sun-mtc-facts .sun-mtc-fact.sun-mtc-fact + .sun-mtc-fact + .sun-mtc-fact { border-left: 1px solid var(--sun-mtc-hair); }
}
@media (max-width: 767px) {
	.elementor-995391 .sun-mtc-intro .sun-mtc-facts.sun-mtc-facts.e-con { grid-template-columns: minmax(0, 1fr); }
	.elementor-995391 .sun-mtc-facts .sun-mtc-fact.sun-mtc-fact { padding: 22px 20px 24px; }
	.elementor-995391 .sun-mtc-facts .sun-mtc-fact.sun-mtc-fact + .sun-mtc-fact { border-left: 0; border-top: 1px solid var(--sun-mtc-hair); }
	.elementor-995391 .sun-mtc-facts .sun-mtc-fact.sun-mtc-fact .elementor-heading-title,
	.elementor-995391 .sun-mtc-facts .sun-mtc-fact.sun-mtc-fact .elementor-icon-box-title { font-size: 28px; }
}

/* ---- 62d. Menu: heading + ruled list | image; stacked on phones with the image last ------------------ */
.elementor-995391 .sun-mtc-menu.sun-mtc-menu.e-con {
	--padding-top: clamp(56px, 6.5vw, 96px);
	--padding-bottom: clamp(56px, 6.5vw, 96px);
}
.elementor-995391 .sun-mtc-menu.sun-mtc-menu.e-con:not(.elementor-motion-effects-element-type-background) {
	--sun-mtc-gold: #85602F;
	background-color: #F4F1EA;
}
.elementor-995391 .sun-mtc-menu.sun-mtc-menu > .e-con-inner > .elementor-widget { text-align: left; }
.elementor-995391 .sun-mtc-menu.sun-mtc-menu .sun-eyebrow-p .elementor-heading-title { color: #85602F; }
.elementor-995391 .sun-mtc-menu.sun-mtc-menu > .e-con-inner > .elementor-widget-icon-list {
	--container-widget-width: 100%;
	width: 100%;
	max-width: none;
	margin-top: 22px;
}
.elementor-995391 .sun-mtc-menu.sun-mtc-menu .elementor-widget-icon-list .elementor-icon-list-items {
	display: block;
	margin: 0;
}
.elementor-995391 .sun-mtc-menu.sun-mtc-menu .elementor-widget-icon-list .elementor-icon-list-item {
	display: block;
	border-top: 1px solid #D6CFC0;
}
.elementor-995391 .sun-mtc-menu.sun-mtc-menu .elementor-widget-icon-list .elementor-icon-list-item:last-child { border-bottom: 1px solid #D6CFC0; }
.elementor-995391 .sun-mtc-menu.sun-mtc-menu .elementor-widget-icon-list .elementor-icon-list-icon { display: none; }
.elementor-995391 .sun-mtc-menu.sun-mtc-menu .elementor-widget-icon-list .elementor-icon-list-item > .elementor-icon-list-text {
	display: grid;
	grid-template-columns: minmax(0, 12.5em) minmax(0, 1fr);
	column-gap: 28px;
	align-items: baseline;
	padding: 20px 0;
	color: var(--sun-mtc-slate);
	font-size: 20px;
	line-height: 1.45;
}
.elementor-995391 .sun-mtc-menu.sun-mtc-menu .elementor-icon-list-item .elementor-icon-list-text strong {
	margin: 0;
	color: var(--sun-mtc-ink, #242E35);
	font-size: 24px;
	font-weight: 500;
	line-height: 1.2;
}
.elementor-995391 .sun-mtc-menu.sun-mtc-menu .sun-mtc-menu__img.sun-mtc-menu__img {
	--container-widget-width: 100%;
	width: 100%;
	max-width: none;
	margin: 0;
}
.elementor-995391 .sun-mtc-menu.sun-mtc-menu .sun-mtc-menu__img img {
	display: block;
	width: 100%;
	height: auto;
	aspect-ratio: 3 / 2;
	object-fit: cover;
}
/* Side by side from 768: stacking the photo under the list on tablets added ~550-690 px (measured). */
@media (min-width: 768px) {
	.elementor-995391 .sun-mtc-menu.sun-mtc-menu > .e-con-inner {
		display: grid;
		grid-template-columns: minmax(0, 7fr) minmax(0, 5fr);
		grid-template-rows: auto auto 1fr;
		column-gap: clamp(48px, 6vw, 112px);
		row-gap: 0;
		align-items: start;
	}
	.elementor-995391 .sun-mtc-menu.sun-mtc-menu > .e-con-inner > .sun-eyebrow-p { grid-column: 1; grid-row: 1; margin-bottom: 18px; }
	.elementor-995391 .sun-mtc-menu.sun-mtc-menu > .e-con-inner > .elementor-widget-heading:not(.sun-eyebrow-p) { grid-column: 1; grid-row: 2; }
	.elementor-995391 .sun-mtc-menu.sun-mtc-menu > .e-con-inner > .elementor-widget-icon-list { grid-column: 1; grid-row: 3; margin-top: 36px; }
	.elementor-995391 .sun-mtc-menu.sun-mtc-menu .sun-mtc-menu__img.sun-mtc-menu__img {
		grid-column: 2;
		grid-row: 1 / span 3;
		align-self: stretch;
	}
	.elementor-995391 .sun-mtc-menu.sun-mtc-menu .sun-mtc-menu__img > .elementor-widget-container { height: 100%; }
	.elementor-995391 .sun-mtc-menu.sun-mtc-menu .sun-mtc-menu__img img {
		height: 100%;
		min-height: 480px;
		aspect-ratio: auto;
	}
}
@media (min-width: 768px) and (max-width: 1024px) {
	.elementor-995391 .sun-mtc-menu.sun-mtc-menu > .e-con-inner > .elementor-widget-icon-list { margin-top: 24px; }
	.elementor-995391 .sun-mtc-menu.sun-mtc-menu .elementor-widget-icon-list .elementor-icon-list-item > .elementor-icon-list-text {
		display: block;
		padding: 14px 0;
		font-size: 19px;
	}
	.elementor-995391 .sun-mtc-menu.sun-mtc-menu .elementor-icon-list-item .elementor-icon-list-text strong {
		display: block;
		margin-bottom: 2px;
		font-size: 22px;
	}
	.elementor-995391 .sun-mtc-menu.sun-mtc-menu .sun-mtc-menu__img img { min-height: 0; }
}
@media (max-width: 767px) {
	.elementor-995391 .sun-mtc-menu.sun-mtc-menu > .e-con-inner { align-items: stretch; }
	.elementor-995391 .sun-mtc-menu.sun-mtc-menu .sun-mtc-menu__img.sun-mtc-menu__img { margin-top: 28px; }
	.elementor-995391 .sun-mtc-menu.sun-mtc-menu .sun-mtc-menu__img img { aspect-ratio: 16 / 9; }
}
@media (max-width: 767px) {
	.elementor-995391 .sun-mtc-menu.sun-mtc-menu .elementor-widget-icon-list .elementor-icon-list-item > .elementor-icon-list-text {
		display: block;
		padding: 16px 0;
		font-size: 19px;
	}
	.elementor-995391 .sun-mtc-menu.sun-mtc-menu .elementor-icon-list-item .elementor-icon-list-text strong {
		display: block;
		margin-bottom: 2px;
		font-size: 22px;
	}
}

/* ---- 62e. Specials: three equal cards, the "N% off" is the anchor at the foot of each -------------- */
.elementor-995391 .sun-mtc-specials.sun-mtc-specials.e-con {
	--padding-top: clamp(56px, 6.5vw, 96px);
	--padding-bottom: clamp(56px, 6.5vw, 96px);
}
.elementor-995391 .sun-mtc-specials .sun-mtc-specials__grid.sun-mtc-specials__grid.e-con {
	--width: 100%;
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: clamp(16px, 2vw, 28px);
	width: 100%;
	margin-top: clamp(24px, 3vw, 40px);
	padding: 0;
}
.elementor-995391 .sun-mtc-specials .sun-mtc-special.sun-mtc-special.e-con {
	--width: auto;
	width: auto;
	max-width: none;
	gap: 12px;
	padding: clamp(28px, 3vw, 40px);
	border: 0;
	background-color: #F4F1EA;
	--sun-mtc-gold: #85602F;
}
/* Rows are shared across the three cards (subgrid): title | hours (Happy Hour only) | offer, so every
   "N% off" starts on the same line whatever the title or hours above it. */
@media (min-width: 768px) {
	.elementor-995391 .sun-mtc-specials .sun-mtc-special.sun-mtc-special.e-con {
		display: grid;
		grid-row: span 3;
		grid-template-rows: subgrid;
		align-content: start;
	}
	/* a subgrid with its own row-gap shifts items by half the difference; share the parent's 12 px instead */
	.elementor-995391 .sun-mtc-specials .sun-mtc-specials__grid.sun-mtc-specials__grid.e-con { row-gap: 12px; }
	.elementor-995391 .sun-mtc-specials .sun-mtc-special.sun-mtc-special > .elementor-widget-heading { grid-row: 1; }
	.elementor-995391 .sun-mtc-specials .sun-mtc-special.sun-mtc-special > .elementor-widget-text-editor.elementor-widget { grid-row: 3; margin-top: 8px; align-self: start; }
}
.elementor-995391 .sun-mtc-specials .sun-mtc-special.sun-mtc-special > .elementor-widget-text-editor {
	margin-top: auto;
	padding-top: 20px;
	border-top: 1px solid #D6CFC0;
	color: var(--sun-mtc-slate);
}
.elementor-995391 .sun-mtc-specials .sun-mtc-special.sun-mtc-special > .elementor-widget-text-editor p { margin: 0; }
.elementor-995391 .sun-mtc-specials .sun-mtc-special.sun-mtc-special > .elementor-widget-text-editor strong {
	display: block;
	margin-bottom: 10px;
	color: var(--sun-mtc-ink);
	font-family: "Cormorant Infant", serif;
	font-size: clamp(52px, 4.8vw, 68px);
	font-weight: 400;
	letter-spacing: -.01em;
	line-height: 1;
}
@media (min-width: 768px) and (max-width: 1024px) {
	.elementor-995391 .sun-mtc-specials .sun-mtc-specials__grid.sun-mtc-specials__grid.e-con { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.elementor-995391 .sun-mtc-specials .sun-mtc-special.sun-mtc-special:first-child { grid-column: 1 / -1; margin-bottom: 4px; }
}
@media (max-width: 767px) {
	.elementor-995391 .sun-mtc-specials .sun-mtc-specials__grid.sun-mtc-specials__grid.e-con { grid-template-columns: minmax(0, 1fr); }
	.elementor-995391 .sun-mtc-specials .sun-mtc-special.sun-mtc-special > .elementor-widget-text-editor strong { font-size: 52px; }
}

/* ---- 62f. Club + private events: white cards on cream ---------------------------------------------
   >= 768: stacked full-width cards on one two-column rhythm. The club card is a feature (photo left, copy
   right); the private-events card is a band (eyebrow + h2 left, copy + button right). Without a club photo
   the club card falls back to the band layout. Phones: one column, photo on top. */
.elementor-995391 .sun-mtc-duo.sun-mtc-duo.e-con {
	--padding-top: clamp(56px, 6.5vw, 96px);
	--padding-bottom: clamp(56px, 6.5vw, 96px);
}
.elementor-995391 .sun-mtc-duo.sun-mtc-duo.e-con:not(.elementor-motion-effects-element-type-background) {
	background-color: #F4F1EA;
}
.elementor-995391 .sun-mtc-duo.sun-mtc-duo > .e-con-inner {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	gap: clamp(16px, 2.4vw, 28px);
	align-items: stretch;
}
.elementor-995391 .sun-mtc-duo .sun-mtc-duo__card.sun-mtc-duo__card.e-con {
	--width: auto;
	--sun-mtc-pad: clamp(24px, 4vw, 56px);
	width: auto;
	max-width: none;
	gap: 14px;
	padding: var(--sun-mtc-pad);
	background-color: #FFFFFF;
	justify-content: flex-start;
}
.elementor-995391 .sun-mtc-duo .sun-mtc-duo__card.sun-mtc-duo__card > .elementor-widget { text-align: left; }
.elementor-995391 .sun-mtc-duo .sun-mtc-duo__card.sun-mtc-duo__card .elementor-widget-text-editor p:last-child { margin-bottom: 0; }
.elementor-995391 .sun-mtc-duo .sun-mtc-duo__card.sun-mtc-duo__card > .sun-mtc-btn { padding-top: 8px; }
.elementor-995391 .sun-mtc-duo .sun-mtc-duo__img.sun-mtc-duo__img {
	--container-widget-width: auto;
	width: calc(100% + 2 * var(--sun-mtc-pad));
	max-width: none;
	margin: calc(-1 * var(--sun-mtc-pad)) calc(-1 * var(--sun-mtc-pad)) 10px;
}
.elementor-995391 .sun-mtc-duo .sun-mtc-duo__img img {
	display: block;
	width: 100%;
	height: auto;
	aspect-ratio: 3 / 2;
	object-fit: cover;
}
@media (min-width: 768px) {
	.elementor-995391 .sun-mtc-duo .sun-mtc-duo__card.sun-mtc-duo__card.e-con {
		display: grid;
		grid-template-columns: minmax(0, 5fr) minmax(0, 7fr);
		grid-template-rows: auto auto 1fr;
		column-gap: var(--sun-mtc-pad);
		row-gap: 14px;
		align-items: start;
	}
	.elementor-995391 .sun-mtc-duo .sun-mtc-duo__card.sun-mtc-duo__card > .sun-eyebrow-p { grid-column: 1; grid-row: 1; }
	.elementor-995391 .sun-mtc-duo .sun-mtc-duo__card.sun-mtc-duo__card > .elementor-widget-heading:not(.sun-eyebrow-p) { grid-column: 1; grid-row: 2 / span 2; }
	.elementor-995391 .sun-mtc-duo .sun-mtc-duo__card.sun-mtc-duo__card > .elementor-widget-text-editor { grid-column: 2; grid-row: 1 / span 2; }
	.elementor-995391 .sun-mtc-duo .sun-mtc-duo__card.sun-mtc-duo__card > .sun-mtc-btn { grid-column: 2; grid-row: 3; padding-top: 10px; }
	/* feature: photo bleeds to the card's left, top and bottom edges; copy stacks in the right column */
	.elementor-995391 .sun-mtc-duo .sun-mtc-duo__card.sun-mtc-duo__card:has(> .sun-mtc-duo__img) {
		grid-template-rows: auto auto auto 1fr;
		align-content: center;
	}
	.elementor-995391 .sun-mtc-duo .sun-mtc-duo__card.sun-mtc-duo__card > .sun-mtc-duo__img.sun-mtc-duo__img {
		grid-column: 1;
		grid-row: 1 / -1;
		align-self: stretch;
		width: calc(100% + var(--sun-mtc-pad));
		height: calc(100% + 2 * var(--sun-mtc-pad));
		margin: calc(-1 * var(--sun-mtc-pad)) 0 calc(-1 * var(--sun-mtc-pad)) calc(-1 * var(--sun-mtc-pad));
	}
	.elementor-995391 .sun-mtc-duo .sun-mtc-duo__card.sun-mtc-duo__card > .sun-mtc-duo__img > .elementor-widget-container { height: 100%; }
	.elementor-995391 .sun-mtc-duo .sun-mtc-duo__card.sun-mtc-duo__card > .sun-mtc-duo__img img {
		height: 100%;
		min-height: 320px;
		aspect-ratio: auto;
	}
	.elementor-995391 .sun-mtc-duo .sun-mtc-duo__card.sun-mtc-duo__card:has(> .sun-mtc-duo__img) > .sun-eyebrow-p { grid-column: 2; grid-row: 1; }
	.elementor-995391 .sun-mtc-duo .sun-mtc-duo__card.sun-mtc-duo__card:has(> .sun-mtc-duo__img) > .elementor-widget-heading:not(.sun-eyebrow-p) { grid-column: 2; grid-row: 2; }
	.elementor-995391 .sun-mtc-duo .sun-mtc-duo__card.sun-mtc-duo__card:has(> .sun-mtc-duo__img) > .elementor-widget-text-editor { grid-column: 2; grid-row: 3; }
	.elementor-995391 .sun-mtc-duo .sun-mtc-duo__card.sun-mtc-duo__card:has(> .sun-mtc-duo__img) > .sun-mtc-btn { grid-column: 2; grid-row: 4; }
}

/* ---- 62g. Closing band (ink) --------------------------------------------------------------------- */
.elementor-995391 .sun-mtc-visit.sun-mtc-visit.e-con {
	--padding-top: clamp(64px, 7vw, 104px);
	--padding-bottom: clamp(64px, 7vw, 104px);
}
.elementor-995391 .sun-mtc-visit.sun-mtc-visit .sun-eyebrow-p .elementor-heading-title { color: #F4F1EA; }

@media (forced-colors: active) {
	.elementor-995391 .sun-mtc-btn.sun-mtc-btn.elementor-widget-button .elementor-button { border-color: ButtonText; }
	.elementor-995391 .sun-mtc-btn.sun-mtc-btn.elementor-widget-button .elementor-button:focus-visible { outline-color: Highlight; }
}
/* ==== END 62 ==== */

/* ==========================================================================
   63. Villa events (/villa/events/, page 996733) -- namespace sun-vev-
   --------------------------------------------------------------------------
   What: the redesign in the 2026-10-19 villa-events spec. Classes are added by walker ops (containers
   css_classes, widgets _css_classes); this section styles only those classes and what sits inside them.
     hero 175c2e6f .sun-vev-hero (legacy section; eyebrow 312cfd70 .sun-vev-hero__eyebrow, h1 19d0f452
       .sun-vev-hero__title; the header-shape swoosh is the section's Elementor background overlay)
     intro 491c9999 .sun-vev-intro (#F9F8F4; text 77cc51b6 .sun-vev-intro__text, actions 3d106001 .sun-vev-actions)
     gallery 1c0ab1ab .sun-vev-gallery (#FFF; Elementor gallery widget 2ac5fed0 .sun-vev-gallery__grid)
     good to know 4b40be12 .sun-vev-know (#F4F1EA; terms 4d24f6cc .sun-vev-know__text, actions 60513b95)
     plan your stay 3f63d5da .sun-vev-stay (dark, stairs photo at 72% ink)
     buttons .sun-vev-btn (gold outline) / --solid (ink fill) / --light (white outline on dark)
   Why: the hero was 100vh with a -110 px top margin under the solid 80 px header (110 px of photo hidden)
   and a black 19% tint as the only scrim; every band below it was the same dark stairs photo, so the page
   read as one long dark slab with a 306 px-tile gallery and centred legal text 680 px wide.
   Rules that hold:
   - Hero: margin-top 0 (Elementor setting -110). Height = --sun-vev-hero-h: min(78vh, 840px) on desktop,
     min(64vh, 620px) on tablets, 64svh clamped 400-560 px on phones (all <= 70vh). The text block is centred
     in the band between --sun-vev-hero-lift (top padding, a share of the hero height) and the swoosh
     (8.27vw = 216/2613 of the width, plus a gap), so it never touches the hills at any width.
   - Hero photo knobs (set these when the new photo lands; any landscape photo works):
       --sun-vev-hero-pos          background-position on desktop (default 50% 50%)
       --sun-vev-hero-pos-tablet   768-1024 px (default: inherits --sun-vev-hero-pos)
       --sun-vev-hero-pos-mobile   < 768 px (default 50% 50%; portrait crop of a landscape: set x to the subject)
       --sun-vev-hero-scrim        opacity of the whole scrim, 0-1 (default 1; do not go below the value
                                   that keeps the measured title contrast >= 4.5:1)
   - Scrim, not gold: the title is white and the eyebrow cream (#F4F1EA) over two layers in ink #242E35:
     a vertical gradient on the section (::before) and a soft pool centred on the text block (widget-wrap
     ::before, z-index -1 so it sits under the swoosh overlay). Sized so that white text stays >= 4.5:1
     even over a pure-white photo; the Elementor 19% black tint is folded into it (overlay colour cleared,
     the swoosh image on the overlay is untouched).
   - Gallery stays the Elementor gallery widget (lightbox intact). CSS only re-flows its grid:
     every photo is landscape (2026-10-19 set), so no tall tiles:
     >= 1025: 3 columns, tile 1 is 2x2 and tile 6 (the marquee panorama) spans 2 columns, rows 3:2, 4 full rows;
     768-1024: 2 columns of 3:2 tiles, 4 rows; < 768: 2 columns, tiles 1 and 8 are 2x2, rows 4:3, 7 full rows.
     The spans are by position: re-check them if the gallery order or count changes. Row height comes from the widget's inline size via container units (cqw).
   - Gold text: #906A3C on white/#F9F8F4, #85602F on #F4F1EA (--sun-vev-gold per section); #B98D58 not used.
   - Specificity: Elementor's per-element post CSS is .elementor-<post> .elementor-element.elementor-element-<id>
     (0,3,0 to 0,6,0; the hero widget-wrap alignment is 0,8,0 and is left alone: the text is placed with
     padding instead). Rules here start .elementor-996733 and double a namespace
     class to land one step above, so there is no !important in this section. Flex/grid goes on
     .e-con-inner for boxed containers and on the container itself for e-con-full ones.
   TO REVERT: delete this whole section (banner to END 63). The walker classes are inert without it.
   ========================================================================== */
.elementor-996733 .sun-vev-hero,
.elementor-996733 .sun-vev-intro,
.elementor-996733 .sun-vev-gallery,
.elementor-996733 .sun-vev-know,
.elementor-996733 .sun-vev-stay {
	--sun-vev-gold: #906A3C;
	--sun-vev-ink: #242E35;
	--sun-vev-slate: #545D5C;
	--sun-vev-cream: #F4F1EA;
}
.elementor-996733 .sun-vev-know { --sun-vev-gold: #85602F; }

/* ---- 63a. Shared type: eyebrows, h2s, body ------------------------------------------------------------ */
.elementor-996733 :is(.sun-vev-hero, .sun-vev-intro, .sun-vev-gallery, .sun-vev-know, .sun-vev-stay) .sun-eyebrow-p.sun-eyebrow-p .elementor-heading-title {
	color: var(--sun-vev-gold);
	font-family: "Alata", sans-serif;
	font-size: 13px;
	font-weight: 400;
	letter-spacing: .24em;
	line-height: 1.4;
	text-transform: uppercase;
}
.elementor-996733 :is(.sun-vev-intro, .sun-vev-gallery, .sun-vev-know, .sun-vev-stay).e-con > .e-con-inner > .elementor-widget-heading:not(.sun-eyebrow-p) .elementor-heading-title {
	color: var(--sun-vev-ink);
	font-size: clamp(38px, 3.9vw, 58px);
	font-weight: 400;
	letter-spacing: -.005em;
	line-height: 1.08;
	text-wrap: balance;
}
.elementor-996733 :is(.sun-vev-intro, .sun-vev-gallery, .sun-vev-know, .sun-vev-stay).e-con > .e-con-inner > .sun-eyebrow-p.elementor-widget {
	margin-bottom: 4px;
}
.elementor-996733 :is(.sun-vev-intro, .sun-vev-know).e-con > .e-con-inner > .elementor-widget-text-editor {
	color: var(--sun-vev-slate);
	font-size: 20px;
	line-height: 1.55;
}
.elementor-996733 :is(.sun-vev-intro, .sun-vev-know, .sun-vev-stay) .elementor-widget-text-editor p:last-child { margin-bottom: 0; }

/* ---- 63b. Buttons: Elementor button widget, the anchor is .elementor-button ---------------------------- */
.elementor-996733 .sun-vev-btn.sun-vev-btn.elementor-widget-button .elementor-button {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 48px;
	padding: 0 28px;
	border: 1px solid var(--sun-vev-gold, #906A3C);
	border-radius: 0;
	background-color: transparent;
	color: var(--sun-vev-gold, #906A3C);
	fill: currentColor;
	font-family: "Alata", sans-serif;
	font-size: 14px;
	font-weight: 400;
	line-height: 1.2;
	letter-spacing: .1em;
	text-align: center;
	text-transform: uppercase;
	scroll-margin-top: 112px;   /* the fixed header is 80-90 px */
}
.elementor-996733 .sun-vev-btn.sun-vev-btn.elementor-widget-button .elementor-button .elementor-button-content-wrapper,
.elementor-996733 .sun-vev-btn.sun-vev-btn.elementor-widget-button .elementor-button .elementor-button-text {
	color: inherit;
}
.elementor-996733 .sun-vev-btn.sun-vev-btn.elementor-widget-button .elementor-button:hover,
.elementor-996733 .sun-vev-btn.sun-vev-btn.elementor-widget-button .elementor-button:focus {
	background-color: var(--sun-vev-gold, #906A3C);
	border-color: var(--sun-vev-gold, #906A3C);
	color: #FFFFFF;
}
.elementor-996733 .sun-vev-btn.sun-vev-btn.elementor-widget-button .elementor-button:focus-visible {
	outline: 2px solid #242E35;
	outline-offset: 3px;
}
/* --solid: ink fill, white label; hover inverts to an ink outline */
.elementor-996733 .sun-vev-btn.sun-vev-btn--solid.elementor-widget-button .elementor-button {
	background-color: #242E35;
	border-color: #242E35;
	color: #FFFFFF;
}
.elementor-996733 .sun-vev-btn.sun-vev-btn--solid.elementor-widget-button .elementor-button:hover,
.elementor-996733 .sun-vev-btn.sun-vev-btn--solid.elementor-widget-button .elementor-button:focus {
	background-color: transparent;
	border-color: #242E35;
	color: #242E35;
}
/* --light: white outline on the dark band; hover fills white */
.elementor-996733 .sun-vev-btn.sun-vev-btn--light.elementor-widget-button .elementor-button {
	background-color: transparent;
	border-color: #FFFFFF;
	color: #FFFFFF;
}
.elementor-996733 .sun-vev-btn.sun-vev-btn--light.elementor-widget-button .elementor-button:hover,
.elementor-996733 .sun-vev-btn.sun-vev-btn--light.elementor-widget-button .elementor-button:focus {
	background-color: #FFFFFF;
	border-color: #FFFFFF;
	color: #242E35;
}
.elementor-996733 .sun-vev-btn.sun-vev-btn--light.elementor-widget-button .elementor-button:focus-visible {
	outline-color: #F4F1EA;
}
@media (prefers-reduced-motion: no-preference) {
	.elementor-996733 .sun-vev-btn.sun-vev-btn.elementor-widget-button .elementor-button {
		transition: background-color .3s cubic-bezier(.22, .61, .36, 1), color .3s cubic-bezier(.22, .61, .36, 1), border-color .3s cubic-bezier(.22, .61, .36, 1);
	}
}
/* action rows (3d106001, 60513b95 and the unclassed row in the stay band): e-con-full, so flex is on the container */
.elementor-996733 :is(.sun-vev-intro, .sun-vev-know, .sun-vev-stay) .e-con-full.e-con.e-con {
	--gap: 12px 16px;
	--row-gap: 12px;
	--column-gap: 16px;
	--flex-wrap: wrap;
	margin-top: clamp(20px, 2.4vw, 32px);
}
@media (max-width: 767px) {
	.elementor-996733 .sun-vev-btn.sun-vev-btn.elementor-widget-button { width: 100%; }
	.elementor-996733 .sun-vev-btn.sun-vev-btn.elementor-widget-button .elementor-button { width: 100%; }
	.elementor-996733 :is(.sun-vev-intro, .sun-vev-know, .sun-vev-stay) .e-con-full.e-con.e-con {
		--width: 100%;
		width: 100%;
		margin-top: 20px;
	}
}

/* ---- 63c. Hero: legacy section > container > column > widget-wrap ------------------------------------- */
.elementor-996733 .sun-vev-hero.sun-vev-hero.elementor-section {
	--sun-vev-hero-pos: 55% 75%;      /* 996708, Villa at sunset: keep the house and the lit sky */
	--sun-vev-hero-pos-tablet: var(--sun-vev-hero-pos);
	--sun-vev-hero-pos-mobile: 62% 80%;
	--sun-vev-hero-scrim: 1;
	--sun-vev-hero-h: min(78vh, 840px);
	--sun-vev-hero-swoosh: 8.27vw;                                        /* header-shape-1-1.svg is 2613 x 216 */
	/* Text placement for 996708: the Villa fills the lower half, so the text sits in the sky above it.
	   pb sets where the text block ends (content is bottom-aligned); for a photo with a calm lower half,
	   use pb = swoosh + clamp(28px, 3.4vw, 56px) and pt = h * .36 instead. */
	--sun-vev-hero-pb: calc(var(--sun-vev-hero-h) * .54);
	--sun-vev-hero-pt: calc(var(--sun-vev-hero-h) * .10);
	margin-top: 0;          /* Elementor setting: -110px, which hid 110 px of photo under the solid header */
	margin-bottom: 0;
	padding: var(--sun-vev-hero-pt) 0 var(--sun-vev-hero-pb);
}
.elementor-996733 .sun-vev-hero.sun-vev-hero.elementor-section:not(.elementor-motion-effects-element-type-background) {
	background-position: var(--sun-vev-hero-pos);
}
.elementor-996733 .sun-vev-hero.sun-vev-hero.elementor-section > .elementor-container {
	min-height: calc(var(--sun-vev-hero-h) - var(--sun-vev-hero-pt) - var(--sun-vev-hero-pb));   /* Elementor setting: 100vh / 50vh / 70vh */
	max-width: 1600px;
}
/* scrim layer 1: vertical ink gradient over the photo, under the swoosh overlay (DOM order: ::before, overlay, container) */
.elementor-996733 .sun-vev-hero.sun-vev-hero.elementor-section::before {
	content: "";
	position: absolute;
	inset: 0;
	pointer-events: none;
	opacity: var(--sun-vev-hero-scrim);
	/* tuned for text in the upper half (996708's sunset sky): darkest behind the text band, lighter over the house */
	background: linear-gradient(180deg,
		rgba(36, 46, 53, .42) 0%,
		rgba(36, 46, 53, .48) 20%,
		rgba(36, 46, 53, .44) 42%,
		rgba(36, 46, 53, .24) 60%,
		rgba(36, 46, 53, .30) 82%,
		rgba(36, 46, 53, .40) 100%);
}
.elementor-996733 .sun-vev-hero.sun-vev-hero.elementor-section > .elementor-background-overlay {
	background-color: transparent;   /* Elementor setting #00000030; folded into the scrim above. The swoosh image stays. */
}
/* scrim layer 2: a soft pool behind the text block; follows the text wherever it wraps */
.elementor-996733 .sun-vev-hero.sun-vev-hero .elementor-column > .elementor-widget-wrap::before {
	content: "";
	position: absolute;
	z-index: -1;
	top: -70%;
	bottom: -70%;
	left: max(-6%, calc(50% - 620px));
	right: max(-6%, calc(50% - 620px));
	pointer-events: none;
	opacity: var(--sun-vev-hero-scrim);
	background: radial-gradient(closest-side, rgba(36, 46, 53, .62) 0%, rgba(36, 46, 53, .54) 45%, rgba(36, 46, 53, .26) 78%, rgba(36, 46, 53, 0) 100%);
}
.elementor-996733 .sun-vev-hero .elementor-widget-wrap > .elementor-element.elementor-widget {
	margin: 0;
}
.elementor-996733 .sun-vev-hero .sun-vev-hero__eyebrow.sun-vev-hero__eyebrow {
	margin-bottom: clamp(10px, 1.2vw, 18px);
}
.elementor-996733 .sun-vev-hero .sun-eyebrow-p.sun-eyebrow-p.sun-vev-hero__eyebrow .elementor-heading-title {
	color: var(--sun-vev-cream);   /* never gold over a photo */
}
.elementor-996733 .sun-vev-hero .sun-vev-hero__title.sun-vev-hero__title .elementor-heading-title {
	max-width: 13em;
	margin-inline: auto;
	color: #FFFFFF;
	font-size: clamp(46px, 6vw, 96px);
	font-weight: 300;
	letter-spacing: -.01em;
	line-height: 1.02;
	text-wrap: balance;
	text-shadow: 0 1px 28px rgba(36, 46, 53, .35);
}
@media (min-width: 768px) and (max-width: 1024px) {
	.elementor-996733 .sun-vev-hero.sun-vev-hero.elementor-section {
		--sun-vev-hero-h: min(64vh, 620px);
		--sun-vev-hero-pt: calc(var(--sun-vev-hero-h) * .10);
		--sun-vev-hero-pb: calc(var(--sun-vev-hero-h) * .50);
		padding-inline: 32px;
	}
	.elementor-996733 .sun-vev-hero.sun-vev-hero.elementor-section:not(.elementor-motion-effects-element-type-background) {
		background-position: var(--sun-vev-hero-pos-tablet);
	}
}
@media (max-width: 767px) {
	.elementor-996733 .sun-vev-hero.sun-vev-hero.elementor-section {
		--sun-vev-hero-h: clamp(400px, 64vh, 560px);
		--sun-vev-hero-pt: calc(var(--sun-vev-hero-h) * .12);
		--sun-vev-hero-pb: calc(var(--sun-vev-hero-h) * .42);
		padding-inline: 20px;
	}
	@supports (height: 1svh) {
		.elementor-996733 .sun-vev-hero.sun-vev-hero.elementor-section { --sun-vev-hero-h: clamp(400px, 64svh, 560px); }
	}
	.elementor-996733 .sun-vev-hero.sun-vev-hero.elementor-section:not(.elementor-motion-effects-element-type-background) {
		background-position: var(--sun-vev-hero-pos-mobile);
	}
	.elementor-996733 .sun-vev-hero.sun-vev-hero.elementor-section::before {
		background: linear-gradient(180deg,
			rgba(36, 46, 53, .38) 0%,
			rgba(36, 46, 53, .46) 24%,
			rgba(36, 46, 53, .42) 50%,
			rgba(36, 46, 53, .26) 66%,
			rgba(36, 46, 53, .38) 100%);
	}
	.elementor-996733 .sun-vev-hero.sun-vev-hero .elementor-column > .elementor-widget-wrap::before {
		top: -45%;
		bottom: -45%;
		left: -12%;
		right: -12%;
		background: radial-gradient(farthest-side, rgba(36, 46, 53, .54) 0%, rgba(36, 46, 53, .46) 55%, rgba(36, 46, 53, .18) 85%, rgba(36, 46, 53, 0) 100%);
	}
	.elementor-996733 .sun-vev-hero .sun-vev-hero__title.sun-vev-hero__title .elementor-heading-title {
		font-size: clamp(40px, 11.5vw, 50px);
		line-height: 1.04;
	}
	.elementor-996733 .sun-vev-hero .sun-eyebrow-p.sun-eyebrow-p.sun-vev-hero__eyebrow .elementor-heading-title {
		font-size: 12px;
		letter-spacing: .22em;
	}
}

/* ---- 63d. Intro (#F9F8F4): centred editorial block, CTAs side by side ---------------------------------- */
.elementor-996733 .sun-vev-intro.sun-vev-intro.e-con {
	--padding-top: clamp(48px, 6vw, 88px);
	--padding-bottom: clamp(64px, 7vw, 104px);
}
.elementor-996733 .sun-vev-intro.sun-vev-intro > .e-con-inner {
	row-gap: 16px;
}
.elementor-996733 .sun-vev-intro.sun-vev-intro > .e-con-inner > .elementor-widget-heading:not(.sun-eyebrow-p) {
	max-width: min(100%, 860px);   /* two balanced lines at desktop size instead of one 1200 px line */
}
.elementor-996733 .sun-vev-intro .sun-vev-intro__text.sun-vev-intro__text {
	--container-widget-width: 100%;
	width: 100%;
	max-width: 60ch;
	text-align: center;
}
.elementor-996733 .sun-vev-intro .sun-vev-actions.sun-vev-actions.e-con {
	--justify-content: center;
}

/* ---- 63e. Gallery (#FFF): heading left, photographs large ------------------------------------------- */
.elementor-996733 .sun-vev-gallery.sun-vev-gallery.e-con {
	--padding-top: clamp(64px, 7vw, 104px);
	--padding-bottom: clamp(64px, 7vw, 104px);
}
.elementor-996733 .sun-vev-gallery.sun-vev-gallery > .e-con-inner {
	align-items: stretch;
	row-gap: 12px;
}
.elementor-996733 .sun-vev-gallery.sun-vev-gallery > .e-con-inner > .elementor-widget-heading {
	width: 100%;
	text-align: left;
}
.elementor-996733 .sun-vev-gallery__grid.sun-vev-gallery__grid.elementor-widget-gallery {
	--sun-vev-gap: 12px;
	--sun-vev-cols: 3;
	--sun-vev-ratio: .6667;   /* row height / column width: 3:2 tiles */
	--container-widget-width: 100%;
	width: 100%;
	max-width: none;
}
.elementor-996733 .sun-vev-gallery__grid.sun-vev-gallery__grid.elementor-widget-gallery > .elementor-widget-container {
	margin: clamp(24px, 3vw, 40px) 0 0;   /* Elementor setting 26px */
	container-type: inline-size;          /* row height below is measured in cqw of this box */
}
.elementor-996733 .sun-vev-gallery__grid.sun-vev-gallery__grid .elementor-gallery__container.e-gallery-grid {
	display: grid;
	grid-template-columns: repeat(var(--sun-vev-cols), minmax(0, 1fr));
	grid-auto-rows: calc((100cqw - (var(--sun-vev-cols) - 1) * var(--sun-vev-gap)) / var(--sun-vev-cols) * var(--sun-vev-ratio));
	grid-auto-flow: row dense;
	gap: var(--sun-vev-gap);
}
.elementor-996733 .sun-vev-gallery__grid.sun-vev-gallery__grid .e-gallery-item.elementor-gallery-item {
	overflow: hidden;
	background-color: #F4F1EA;   /* placeholder tone while the lazy thumbnail loads */
}
.elementor-996733 .sun-vev-gallery__grid.sun-vev-gallery__grid .e-gallery-item .e-gallery-image {
	height: 100%;
	padding-bottom: 0;   /* the grid row sets the height, not the widget's 3:2 padding hack */
}
.elementor-996733 .sun-vev-gallery__grid.sun-vev-gallery__grid .e-gallery-item.elementor-gallery-item:focus-visible {
	outline: 2px solid #242E35;
	outline-offset: 3px;
}
/* hover caption (the alt text): 16 px serif on a 72% ink veil, so it holds 4.5:1 over any photo */
.elementor-996733 .sun-vev-gallery__grid.sun-vev-gallery__grid.elementor-widget-gallery .e-gallery-item.elementor-gallery-item:is(:hover, :focus-visible) .elementor-gallery-item__overlay {
	background-color: rgba(36, 46, 53, .72);
}
.elementor-996733 .sun-vev-gallery__grid.sun-vev-gallery__grid.elementor-widget-gallery .elementor-gallery-item__content .elementor-gallery-item__title {
	color: #FFFFFF;
	font-family: "Cormorant Infant", serif;
	font-size: 17px;
	letter-spacing: 0;
	line-height: 1.35;
	text-transform: none;
}
@media (prefers-reduced-motion: no-preference) {
	.elementor-996733 .sun-vev-gallery__grid.sun-vev-gallery__grid .e-gallery-item .e-gallery-image.e-gallery-image-loaded {
		transform-origin: 50% 50%;
		transition: transform .9s cubic-bezier(.22, .61, .36, 1);
	}
	.elementor-996733 .sun-vev-gallery__grid.sun-vev-gallery__grid .e-gallery-item:hover .e-gallery-image.e-gallery-image-loaded {
		transform: scale(1.035);
	}
}
@media (min-width: 1025px) {
	.elementor-996733 .sun-vev-gallery__grid.sun-vev-gallery__grid .e-gallery-item.elementor-gallery-item:nth-child(1) {
		grid-column: span 2;
		grid-row: span 2;
	}
	.elementor-996733 .sun-vev-gallery__grid.sun-vev-gallery__grid .e-gallery-item.elementor-gallery-item:nth-child(6) {
		grid-column: span 2;
	}
}
@media (min-width: 768px) and (max-width: 1024px) {
	.elementor-996733 .sun-vev-gallery__grid.sun-vev-gallery__grid.elementor-widget-gallery {
		--sun-vev-cols: 2;
		--sun-vev-gap: 10px;
	}
}
@media (max-width: 767px) {
	.elementor-996733 .sun-vev-gallery__grid.sun-vev-gallery__grid.elementor-widget-gallery {
		--sun-vev-cols: 2;
		--sun-vev-gap: 8px;
		--sun-vev-ratio: .75;   /* 4:3 cells; the two 2x2 tiles stay ~4:3 */
	}
	.elementor-996733 .sun-vev-gallery__grid.sun-vev-gallery__grid .e-gallery-item.elementor-gallery-item:nth-child(1) {
		grid-column: span 2;
		grid-row: span 2;
	}
	.elementor-996733 .sun-vev-gallery__grid.sun-vev-gallery__grid .e-gallery-item.elementor-gallery-item:nth-child(8) {
		grid-column: span 2;
		grid-row: span 2;
	}
}

/* ---- 63f. Good to know (#F4F1EA): heading left ~35%, terms right at 62ch, button below --------------- */
.elementor-996733 .sun-vev-know.sun-vev-know.e-con {
	--padding-top: clamp(64px, 7vw, 104px);
	--padding-bottom: clamp(64px, 7vw, 104px);
}
.elementor-996733 .sun-vev-know.sun-vev-know > .e-con-inner {
	align-items: stretch;
	row-gap: 12px;
}
.elementor-996733 .sun-vev-know.sun-vev-know > .e-con-inner > .elementor-widget {
	text-align: left;
}
.elementor-996733 .sun-vev-know .sun-vev-know__text.sun-vev-know__text {
	--container-widget-width: 100%;
	width: 100%;
	max-width: 62ch;
	margin-top: 8px;
	text-align: left;
}
.elementor-996733 .sun-vev-know .sun-vev-actions.sun-vev-actions.e-con {
	--justify-content: flex-start;
}
@media (min-width: 1025px) {
	.elementor-996733 .sun-vev-know.sun-vev-know > .e-con-inner {
		display: grid;
		grid-template-columns: minmax(0, 35fr) minmax(0, 65fr);
		grid-template-rows: auto auto 1fr;
		column-gap: clamp(48px, 6vw, 112px);
		row-gap: 0;
		align-items: start;
	}
	.elementor-996733 .sun-vev-know.sun-vev-know > .e-con-inner > .sun-eyebrow-p { grid-column: 1; grid-row: 1; margin-bottom: 14px; }
	.elementor-996733 .sun-vev-know.sun-vev-know > .e-con-inner > .elementor-widget-heading:not(.sun-eyebrow-p) { grid-column: 1; grid-row: 2; }
	.elementor-996733 .sun-vev-know.sun-vev-know > .e-con-inner > .sun-vev-know__text { grid-column: 2; grid-row: 1 / span 2; margin-top: 0; padding-top: 4px; }
	.elementor-996733 .sun-vev-know.sun-vev-know > .e-con-inner > .sun-vev-actions { grid-column: 2; grid-row: 3; }
}

/* ---- 63g. Plan your stay (dark band): spacing and light buttons only ------------------------------- */
.elementor-996733 .sun-vev-stay.sun-vev-stay.e-con {
	--padding-top: clamp(64px, 7.5vw, 112px);
	--padding-bottom: clamp(64px, 7.5vw, 112px);
	--sun-vev-gold: #F4F1EA;
}
.elementor-996733 .sun-vev-stay.sun-vev-stay > .e-con-inner {
	row-gap: 16px;
}
.elementor-996733 .sun-vev-stay.sun-vev-stay > .e-con-inner > .elementor-widget-heading:not(.sun-eyebrow-p) .elementor-heading-title {
	color: #FFFFFF;
}
.elementor-996733 .sun-vev-stay.sun-vev-stay > .e-con-inner > .elementor-widget-text-editor {
	max-width: min(100%, 56ch);
	color: var(--sun-vev-cream);
	font-size: 20px;
	line-height: 1.55;
}

/* ---- 63h. Phones and tablets: tighter rhythm --------------------------------------------------------- */
@media (max-width: 767px) {
	.elementor-996733 :is(.sun-vev-hero, .sun-vev-intro, .sun-vev-gallery, .sun-vev-know, .sun-vev-stay) .sun-eyebrow-p.sun-eyebrow-p .elementor-heading-title {
		font-size: 12px;
		letter-spacing: .22em;
	}
	.elementor-996733 :is(.sun-vev-intro, .sun-vev-gallery, .sun-vev-know, .sun-vev-stay).e-con > .e-con-inner > .elementor-widget-heading:not(.sun-eyebrow-p) .elementor-heading-title {
		font-size: 36px;
		line-height: 1.1;
	}
	.elementor-996733 .sun-vev-intro.sun-vev-intro.e-con { --padding-top: 40px; --padding-bottom: 56px; }
	.elementor-996733 .sun-vev-gallery.sun-vev-gallery.e-con,
	.elementor-996733 .sun-vev-know.sun-vev-know.e-con,
	.elementor-996733 .sun-vev-stay.sun-vev-stay.e-con { --padding-top: 56px; --padding-bottom: 56px; }
	.elementor-996733 :is(.sun-vev-intro, .sun-vev-know, .sun-vev-stay).e-con > .e-con-inner > .elementor-widget-text-editor {
		font-size: 19px;
		line-height: 1.5;
	}
}

@media (forced-colors: active) {
	.elementor-996733 .sun-vev-btn.sun-vev-btn.elementor-widget-button .elementor-button { border-color: ButtonText; }
	.elementor-996733 .sun-vev-btn.sun-vev-btn.elementor-widget-button .elementor-button:focus-visible,
	.elementor-996733 .sun-vev-gallery__grid.sun-vev-gallery__grid .e-gallery-item.elementor-gallery-item:focus-visible { outline-color: Highlight; }
}
/* ==== END 63 ==== */

/* ==========================================================================
   64. Preferred Vendors directory ([sunstone_vendors]) -- namespace sun-vnd
   --------------------------------------------------------------------------
   Estate guide: Cormorant to read, Alata for small caps, hairlines. Sticky index from 1025; to 1024 a 56px sticky bar.
   Markup: sunstone-vendors-render.php; behaviour: js/sun-vendors.js. Two classes per selector outrank the kit.
   Icons: Tabler Icons 3.49.0 (MIT), see sunstone-vendors-icons.php. Chips, guide pick, desktop guide layout: SPEC-V3 section 3.
   TO REVERT: delete this whole section (banner to END 64).
   ========================================================================== */
.sun-vnd-host.sun-vnd-host { --vpad: 24px; display: block; box-sizing: border-box; width: 100%; max-width: calc(1200px + 2 * var(--vpad)); margin-inline: auto; padding-inline: var(--vpad); }
.sun-vnd { --vi: #242E35; --vs: #545D5C; --vl: #4A5352; --vg: #906A3C; --vo: #B98D58; --vn: #A5793F; --vh: rgba(36, 46, 53, .12); --vp: #F9F8F4; --bar: 56px; --vgap: 112px; --vf: "Cormorant Infant", Georgia, serif; --va: "Alata", system-ui, sans-serif; --vx: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 6h-6a2 2 0 0 0 -2 2v10a2 2 0 0 0 2 2h10a2 2 0 0 0 2 -2v-6'/%3E%3Cpath d='M11 13l9 -9'/%3E%3Cpath d='M15 4h5v5'/%3E%3C/svg%3E"); color: var(--vs); font: 400 18px/1.4 var(--vf); }
.sun-vnd [hidden] { display: none !important; }
.sun-vnd *, .sun-vnd *::before, .sun-vnd *::after { box-sizing: border-box; }
.sun-vnd :is(ul, ol, li, p, figure) { margin: 0; padding: 0; list-style: none; }
.sun-vnd__aside { margin-bottom: 48px; }
.sun-vnd__main { display: flow-root; }
.sun-vnd__tools { display: grid; grid-template-columns: minmax(0, 1fr); }

.sun-vnd .sun-vnd__label { display: block; margin: 0; font: 400 12px/18px var(--va); letter-spacing: 1.5px; text-transform: uppercase; color: var(--vl); }
.sun-vnd .sun-vnd__field input.sun-vnd__input[type="search"],
.sun-vnd .sun-vnd__field input.sun-vnd__input[type="search"]:focus { display: block; width: 100%; height: 48px; margin: 0; padding: 10px 0 8px 32px; border: 0; border-bottom: 1px solid #8A8880; border-radius: 0; background: transparent; color: var(--vi); font: 400 20px/1.2 var(--vf); letter-spacing: 0; -webkit-appearance: none; appearance: none; }
.sun-vnd .sun-vnd__field input.sun-vnd__input[type="search"]::placeholder { color: #6E6E6E; opacity: 1; font-style: italic; }
.sun-vnd .sun-vnd__status { margin: 14px 0 0; font: italic 400 18px/26px var(--vf); color: var(--vs); }
.sun-vnd .sun-vnd__toggle,
.sun-vnd .sun-vnd__toggle:is(:focus, :active) { display: flex; align-items: baseline; gap: 14px; width: 100%; min-height: 48px; margin: 0; padding: 12px 0 8px; border: 0; border-bottom: 1px solid #8A8880; border-radius: 0; background: transparent; color: var(--vi); font: 400 20px/1.2 var(--vf); letter-spacing: 0; text-align: left; text-transform: none; cursor: pointer; }
.sun-vnd .sun-vnd__toggle-label { flex: none; font: 400 12px/18px var(--va); letter-spacing: 1.5px; text-transform: uppercase; color: var(--vl); }
.sun-vnd .sun-vnd__toggle-value { flex: 1; min-width: 0; overflow-wrap: anywhere; }
.sun-vnd .sun-vnd__toggle::after { content: "+"; content: "+" / ""; flex: none; margin-left: auto; color: var(--vg); font: 300 28px/1 var(--vf); }
.sun-vnd .sun-vnd__toggle[aria-expanded="true"]::after { content: "\2212"; content: "\2212" / ""; }

.sun-vnd__index { padding: 6px 0 18px; border-bottom: 1px solid var(--vh); }
.sun-vnd .sun-vnd__index-family { margin-top: 14px; padding-top: 6px; border-top: 1px solid var(--vh); }
.sun-vnd .sun-vnd__pick { --pc: #3A4244; position: relative; display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: baseline; column-gap: 12px; width: 100%; min-height: 44px; margin: 0; padding: 7px 0; border: 0; border-radius: 0; background: transparent; color: var(--pc); font: 500 17px/22px var(--vf); letter-spacing: 0; text-align: left; text-transform: none; cursor: pointer; }
.sun-vnd .sun-vnd__pick:is(:focus, :active) { background: transparent; color: var(--pc); }
.sun-vnd .sun-vnd__pick:is(.sun-vnd__pick--all, .sun-vnd__pick--guide) { --pc: var(--vi); font-size: 20px; font-weight: 600; }
.sun-vnd .sun-vnd__pick--family { grid-template-columns: 20px minmax(0, 1fr) auto; column-gap: 12px; padding-right: 26px; --pc: var(--vi); font-size: 20px; font-weight: 600; }
.sun-vnd .sun-vnd__pick--cat { padding-left: 30px; }
.sun-vnd .sun-vnd__pick-n { color: var(--vs); font: 400 12px/1 var(--va); letter-spacing: .5px; font-variant-numeric: tabular-nums; }
.sun-vnd .sun-vnd__pick[aria-pressed="true"]::after { content: ""; position: absolute; left: -6px; top: 8px; bottom: 8px; width: 2px; background: var(--vg); }
.sun-vnd .sun-vnd__pick[aria-pressed="true"] { --pc: var(--vi); font-weight: 700; }
@media (hover: hover) {
	.sun-vnd .sun-vnd__pick:hover { background: transparent; --pc: var(--vi); color: var(--pc); }
	.sun-vnd .sun-vnd__pick:not([aria-pressed="true"]):hover .sun-vnd__pick-n { color: var(--vg); }
	.sun-vnd .sun-vnd__toggle:hover { background: transparent; color: var(--vi); border-bottom-color: var(--vi); }
}

.sun-vnd__jump { margin-top: 12px; }
.sun-vnd .sun-vnd__jump-list > li { padding: 4px 0 10px; border-top: 1px solid var(--vh); }
.sun-vnd__jump-list ul { display: flex; flex-wrap: wrap; gap: 0 22px; }
.sun-vnd .sun-vnd__jump a { display: inline-flex; align-items: center; min-height: 44px; color: var(--vg); font: 400 18px/24px var(--vf); text-decoration: underline; text-underline-offset: 3px; }
.sun-vnd .sun-vnd__jump-list > li > a { color: var(--vi); font-size: 21px; font-weight: 500; }

.sun-vnd .sun-vnd__families > :not(.sun-vnd__to-guide):not([hidden]) ~ :not([hidden]) { margin-top: var(--vgap); }
.sun-vnd__interlude img, .sun-vnd img.sun-vnd__banner-img { display: block; width: 100%; max-width: 100%; height: auto; aspect-ratio: 16 / 9; object-fit: cover; }
.sun-vnd .sun-vnd__banner + .sun-vnd__family-head { border-top: 0; padding-top: 30px; }
.sun-vnd__family-head { position: relative; display: flex; align-items: baseline; gap: 0 24px; padding: 28px 0 34px; border-top: 1px solid var(--vi); }
.sun-vnd__family-head::after { content: ""; position: absolute; left: 0; bottom: 0; width: 64px; height: 1px; background: var(--vo); }
.sun-vnd .sun-vnd__num { flex: none; color: var(--vn); font: 300 88px/.8 var(--vf); font-variant-numeric: lining-nums; }
.sun-vnd .sun-vnd__family-title { margin: 0; color: var(--vi); font: 400 52px/56px var(--vf); letter-spacing: 0; text-transform: none; }
.sun-vnd__group { margin-top: 56px; }
.sun-vnd .sun-vnd__group-title { margin: 0 0 12px; padding-top: 16px; border-top: 1px solid var(--vh); color: var(--vl); font: 400 15px/22px var(--va); letter-spacing: 1.8px; text-transform: uppercase; }
.sun-vnd .sun-vnd__group-n { margin-left: 10px; color: var(--vg); letter-spacing: 1px; }
.sun-vnd__family-head + .sun-vnd__list { margin-top: 8px; }
.sun-vnd .sun-vnd__badges { display: flex; flex-wrap: wrap; gap: 8px; margin: 0 0 14px; }
.sun-vnd .sun-vnd__badge { padding: 4px 12px; border: 1px solid var(--vg); color: var(--vg); font: 400 12px/16px var(--va); letter-spacing: 1.5px; text-transform: uppercase; }
.sun-vnd .sun-vnd__badge--pending, .sun-vnd .sun-vnd__note--pending { border-style: dashed; }
.sun-vnd__pending { margin-left: 8px; color: var(--vl); font: italic 400 13px/1 var(--vf); letter-spacing: 0; text-transform: none; }
.sun-vnd .sun-vnd__note { max-width: 60ch; margin: 0 0 18px; color: var(--vs); font: italic 400 18px/26px var(--vf); }
.sun-vnd .sun-vnd__note--pending { padding-left: 12px; border-left: 1px dashed var(--vg); }

.sun-vnd__list { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); column-gap: 32px; }
.sun-vnd .sun-vnd__entry { position: relative; padding: 15px 0 16px; border-top: 1px solid var(--vh); }
.sun-vnd .sun-vnd__name { color: var(--vi); font: 500 22px/27px var(--vf); overflow-wrap: anywhere; }
.sun-vnd .sun-vnd__name .sun-vnd__plain, .sun-vnd .sun-vnd__name a.sun-vnd__site.sun-vnd__site { color: inherit; text-decoration: none; }
.sun-vnd .sun-vnd__site { display: inline-block; padding-block: 7px; margin-block: -7px; }
.sun-vnd .sun-vnd__site::after { content: ""; position: absolute; inset: 0; }
.sun-vnd .sun-vnd__name a.sun-vnd__site.sun-vnd__site:focus { color: var(--vi); }
.sun-vnd .sun-vnd__desc { margin-top: 1px; color: var(--vs); font: italic 400 17px/23px var(--vf); }
.sun-vnd .sun-vnd__meta { display: flex; flex-wrap: wrap; gap: 0 16px; margin-top: 4px; color: var(--vs); font: 400 15px/21px var(--va); letter-spacing: .2px; text-transform: none; overflow-wrap: anywhere; }
.sun-vnd .sun-vnd__domain::after { content: ""; display: inline-block; width: 14px; height: 14px; margin-left: 6px; vertical-align: -1px; background-color: currentColor; color: var(--vg); -webkit-mask: var(--vx) center / 100% no-repeat; mask: var(--vx) center / 100% no-repeat; }
.sun-vnd .sun-vnd__ig { position: relative; z-index: 1; display: inline-block; padding-block: 3px; margin-block: -3px; }
.sun-vnd .sun-vnd__meta a.sun-vnd__ig.sun-vnd__ig, .sun-vnd .sun-vnd__meta a.sun-vnd__ig.sun-vnd__ig:focus { color: var(--vg); text-decoration: none; }
@media (hover: hover) {
	.sun-vnd .sun-vnd__name a.sun-vnd__site.sun-vnd__site:hover { color: var(--vg); text-decoration: underline; text-underline-offset: 4px; }
	.sun-vnd .sun-vnd__meta a.sun-vnd__ig.sun-vnd__ig:hover { color: var(--vi); text-decoration: underline; text-underline-offset: 4px; }
}

.sun-vnd .sun-vnd__guide-title::after { content: ""; display: block; width: 64px; height: 1px; margin-top: 16px; background: var(--vo); }
.sun-vnd .sun-vnd__guide-title { margin: 0 0 24px; color: var(--vi); font: 400 34px/1.1 var(--vf); letter-spacing: 0; text-transform: none; }
.sun-vnd__tiles { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px 16px; }
.sun-vnd__tiles > li:last-child { grid-column: 1 / -1; }
.sun-vnd a.sun-vnd__tile, .sun-vnd a.sun-vnd__tile:is(:hover, :focus, :active) { position: relative; display: flex; flex-direction: column; height: 100%; color: var(--vi); text-decoration: none; }
.sun-vnd__tile-media { display: block; overflow: hidden; background: #E9E4D8; }
.sun-vnd img.sun-vnd__tile-img { display: block; width: 100%; max-width: 100%; height: auto; aspect-ratio: 1 / 1; object-fit: cover; }
.sun-vnd .sun-vnd__tile[data-value="guest-logistics"] .sun-vnd__tile-img { object-position: 50% 40%; }
.sun-vnd .sun-vnd__tile-label { display: flex; align-items: flex-start; gap: 8px; margin-top: 14px; color: var(--vi); font: 500 22px/1.15 var(--vf); text-decoration-thickness: 1px; text-underline-offset: 5px; }
.sun-vnd .sun-vnd__tile-count { display: block; margin-top: 6px; color: var(--vg); font: 400 12px/16px var(--va); letter-spacing: 1.5px; text-transform: uppercase; }
.sun-vnd a.sun-vnd__tile--all, .sun-vnd a.sun-vnd__tile--all:is(:hover, :focus, :active) { align-items: center; justify-content: center; min-height: 96px; padding: 16px; background: var(--vi); color: #F4F1EA; text-align: center; }
.sun-vnd .sun-vnd__tile--all .sun-vnd__tile-label { justify-content: center; margin-top: 0; color: #F4F1EA; font-size: 26px; }
.sun-vnd .sun-vnd__tile--all .sun-vnd__tile-count { color: #F4F1EA; }
.sun-vnd.is-guide :is(.sun-vnd__families, .sun-vnd__empty) { display: none; }
.sun-vnd.is-js:not(.is-guide) .sun-vnd__guide { display: none; }
.sun-vnd.is-guide .sun-vnd__disclaimer { max-width: 70ch; margin-top: 64px; }
.sun-vnd .sun-vnd__to-guide { display: flex; align-items: center; gap: 10px; width: max-content; max-width: 100%; min-height: 32px; margin: 0 0 22px; padding: 0; border: 0; border-radius: 0; font: 400 13px/1 var(--va); letter-spacing: 2px; text-transform: uppercase; cursor: pointer; }
.sun-vnd .sun-vnd__to-guide, .sun-vnd .sun-vnd__to-guide:is(:hover, :focus, :active) { background: transparent; color: var(--vi); }
.sun-vnd__empty { margin-top: 32px; padding: clamp(32px, 6vw, 72px); background: #F4F1EA; border-top: 1px solid var(--vo); }
.sun-vnd .sun-vnd__empty-title { color: var(--vi); font: 400 30px/36px var(--vf); }
.sun-vnd .sun-vnd__empty-text { max-width: 46ch; margin-top: 10px; color: #3A4244; font: 400 19px/28px var(--vf); }
.sun-vnd :is(.sun-vnd__reset, .sun-vnd__widen),
.sun-vnd :is(.sun-vnd__reset, .sun-vnd__widen):is(:focus, :active) { display: inline-flex; align-items: center; min-height: 48px; margin: 28px 12px 0 0; padding: 0 32px; border: 1px solid var(--vi); border-radius: 0; background: var(--vi); color: #FFF; font: 400 13px/1 var(--va); letter-spacing: 2px; text-transform: uppercase; cursor: pointer; }
.sun-vnd .sun-vnd__disclaimer { position: relative; max-width: 58ch; margin-top: 112px; padding-top: 30px; color: var(--vl); font: italic 400 18px/27px var(--vf); }
.sun-vnd .sun-vnd__disclaimer::before { content: ""; position: absolute; left: 0; top: 0; width: 48px; height: 1px; background: var(--vo); }
.sun-vnd .sun-vnd__main > .sun-vnd__empty:not([hidden]) + .sun-vnd__disclaimer { margin-top: 56px; }
@media (hover: hover) {
	.sun-vnd .sun-vnd__reset:hover { background: var(--vs); border-color: var(--vs); color: #FFF; }
	.sun-vnd .sun-vnd__widen:hover { background: var(--vi); color: #FFF; }
	.sun-vnd .sun-vnd__clear:hover, .sun-vnd .sun-vnd__to-guide:hover { text-decoration: underline; text-underline-offset: 5px; }
	.sun-vnd .sun-vnd__tile:hover .sun-vnd__tile-img { opacity: .9; }
	.sun-vnd .sun-vnd__tile:hover .sun-vnd__tile-label { text-decoration: underline; }
}
.sun-vnd .sun-vnd__widen, .sun-vnd .sun-vnd__widen:is(:focus, :active) { background: transparent; color: var(--vi); }
.sun-vnd .sun-vnd__clear,
.sun-vnd .sun-vnd__clear:is(:focus, :active) { display: inline-flex; align-items: center; min-height: 24px; margin: 0; padding: 0; border: 0; border-radius: 0; background: transparent; color: var(--vg); font: 400 12px/1 var(--va); letter-spacing: 1.5px; text-transform: uppercase; cursor: pointer; }
.sun-vnd.is-filtered .sun-vnd__status { margin-bottom: 4px; }
.sun-vnd .sun-vnd__skip { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }
.sun-vnd .sun-vnd__skip:is(:focus, :active) { position: fixed; top: 100px; left: 12px; z-index: 12000; width: auto; height: auto; margin: 0; padding: 14px 22px; overflow: visible; clip: auto; background: var(--vp); color: var(--vi); font: 400 13px/1 var(--va); letter-spacing: 2px; text-transform: uppercase; text-decoration: none; }
.sun-vnd .sun-vnd__back { margin-top: 32px; }
.sun-vnd .sun-vnd__back a { display: inline-flex; align-items: center; min-height: 24px; color: var(--vg); font: 400 13px/1 var(--va); letter-spacing: 1.5px; text-transform: uppercase; text-decoration: underline; text-underline-offset: 4px; }
.sun-vnd .sun-vnd__scrim { display: none; }
.sun-vnd[data-sun-vnd-has-guide] .sun-vnd__clear.sun-vnd__clear { display: none; }

@media (min-width: 768px) {
	.sun-vnd__tiles { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 32px 28px; }
	.sun-vnd__tiles > li:last-child { grid-column: auto; }
	.sun-vnd img.sun-vnd__tile-img { aspect-ratio: 4 / 3; }
	.sun-vnd .sun-vnd__tile-label { font-size: 24px; }
	.sun-vnd a.sun-vnd__tile--all { min-height: 0; }
	.sun-vnd .sun-vnd__guide-title { font-size: 40px; }
	.sun-vnd img.sun-vnd__banner-img { aspect-ratio: 21 / 9; }
}
@media (min-width: 1025px) {
	.sun-vnd .sun-vnd__tile-label { font-size: 26px; }
	.sun-vnd img.sun-vnd__banner-img { aspect-ratio: 3 / 1; }
	.sun-vnd__layout { display: grid; grid-template-columns: 240px minmax(0, 1fr); column-gap: clamp(40px, 5vw, 64px); align-items: start; }
	.sun-vnd__main { min-width: 0; }
	.sun-vnd .sun-vnd__aside { position: sticky; top: 104px; display: flex; flex-direction: column; max-height: calc(100vh - 128px); margin: -6px 0 0 -6px; padding: 6px; overflow-y: auto; overscroll-behavior: contain; scrollbar-width: thin; scrollbar-color: var(--vo) transparent; }
	.sun-vnd:not(.is-js) .sun-vnd__aside { position: static; max-height: none; overflow: visible; }
	.sun-vnd__tools { display: contents; }
	.sun-vnd__aside > *, .sun-vnd__field, .sun-vnd__index { flex: none; }
	.sun-vnd__field { order: 1; }
	.sun-vnd .sun-vnd__status { order: 2; margin: 12px 0 14px; }
	.sun-vnd .sun-vnd__clear { order: 2; align-self: flex-start; margin-bottom: 14px; }
	.sun-vnd__index { order: 3; border-bottom: 0; }
	.sun-vnd__jump { order: 3; }
	.sun-vnd__main, .sun-vnd__family, .sun-vnd__group { scroll-margin-top: 104px; }
	.sun-vnd .sun-vnd__pick { min-height: 32px; padding: 5px 0; }
	.sun-vnd .sun-vnd__pick--family { min-height: 38px; padding: 8px 26px 4px 0; }
	.sun-vnd .sun-vnd__jump a { min-height: 32px; }
}

@media (max-width: 1024px) {
	.sun-vnd .sun-vnd__aside { display: contents; }
	.sun-vnd .sun-vnd__tools { position: sticky; top: 0; z-index: 30; grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr); gap: 0 20px; align-items: center; min-height: var(--bar); margin-inline: calc(-1 * var(--vpad)); padding: 3px var(--vpad); background: var(--vp); border-bottom: 1px solid rgba(36, 46, 53, .18); }
	.sun-vnd .sun-vnd__label { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }
	.sun-vnd .sun-vnd__field input.sun-vnd__input[type="search"],
	.sun-vnd .sun-vnd__field input.sun-vnd__input[type="search"]:focus { font-size: 17px; }
	.sun-vnd .sun-vnd__toggle,
	.sun-vnd .sun-vnd__toggle:is(:focus, :active) { min-height: 48px; padding-block: 6px; }
	.sun-vnd .sun-vnd__index { position: absolute; top: 100%; left: 0; right: 0; z-index: 29; max-height: calc(100vh - var(--sun-vnd-bar, 56px) - 16px); max-height: calc(100dvh - var(--sun-vnd-bar, 56px) - 16px); padding: 10px var(--vpad) 64px; overflow-y: auto; overscroll-behavior: contain; background: var(--vp); border-bottom: 1px solid rgba(36, 46, 53, .4); }
	.sun-vnd .sun-vnd__status { margin: 16px 0 40px; }
	.sun-vnd.is-filtered .sun-vnd__status { margin-bottom: 0; }
	.sun-vnd .sun-vnd__clear { min-height: 44px; margin-bottom: 40px; }
	.sun-vnd .sun-vnd__back a { min-height: 44px; }
	.sun-vnd .sun-vnd__scrim { display: block; position: fixed; inset: 0; z-index: 28; background: rgba(36, 46, 53, .32); }
	.sun-vnd__jump { margin-bottom: 40px; }
	.sun-vnd .sun-vnd__ig { padding-block: 13px; margin-block: 0; }
	.sun-vnd__main, .sun-vnd__main :is(a, button, section) { scroll-margin-top: calc(var(--sun-vnd-bar, 56px) + 16px); }
	.sun-vnd { --vgap: 80px; }
	.sun-vnd .sun-vnd__to-guide { min-height: 44px; margin-bottom: 14px; }
	.sun-vnd[data-sun-vnd-has-guide].sun-vnd .sun-vnd__status { margin-bottom: 26px; }
	.sun-vnd .sun-vnd__num { font-size: 72px; }
	.sun-vnd .sun-vnd__family-title { font-size: 44px; line-height: 48px; }
	.sun-vnd__group { margin-top: 44px; }
}
@media (min-width: 768px) and (max-width: 1024px) {
	.sun-vnd .sun-vnd__index { columns: 2; column-gap: 48px; }
	.sun-vnd__index-list > li { break-inside: avoid; }
	.sun-vnd__jump-list { columns: 2; column-gap: 48px; }
	.sun-vnd__jump-list > li { break-inside: avoid; }
}

@media (max-width: 767px) {
	.sun-vnd-host.sun-vnd-host { --vpad: 20px; }
	.sun-vnd .sun-vnd__tools { grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr); gap: 0 12px; }
	.sun-vnd .sun-vnd__field input.sun-vnd__input[type="search"],
	.sun-vnd .sun-vnd__field input.sun-vnd__input[type="search"]:focus { font-size: 16px; }
	.sun-vnd .sun-vnd__toggle,
	.sun-vnd .sun-vnd__toggle:is(:focus, :active) { display: grid; grid-template-columns: minmax(0, 1fr) auto; grid-template-rows: auto auto; align-items: center; gap: 0 8px; padding-block: 5px; line-height: 1.1; }
	.sun-vnd .sun-vnd__toggle-label { grid-area: 1 / 1; line-height: 14px; font-size: 12px; }
	.sun-vnd .sun-vnd__toggle-value { grid-area: 2 / 1; overflow: hidden; font-size: 17px; line-height: 20px; white-space: nowrap; text-overflow: ellipsis; }
	.sun-vnd .sun-vnd__toggle::after { grid-area: 1 / 2 / 3 / 3; margin-left: 0; }
	.sun-vnd { --vgap: 64px; }
	.sun-vnd .sun-vnd__families .sun-vnd__family > figure.sun-vnd__banner.sun-vnd__banner, .sun-vnd .sun-vnd__families > figure.sun-vnd__interlude[data-sun-vnd-interlude] { margin-inline: calc(-1 * var(--vpad)); }
	.sun-vnd__family-head { gap: 0 16px; padding: 22px 0 26px; }
	.sun-vnd .sun-vnd__num { font-size: 56px; }
	.sun-vnd .sun-vnd__family-title { font-size: 34px; line-height: 38px; }
	.sun-vnd__group { margin-top: 36px; }
	.sun-vnd .sun-vnd__entry { padding: 13px 0 14px; }
	.sun-vnd .sun-vnd__site { padding-block: 9px; margin-block: -9px; }
	.sun-vnd .sun-vnd__disclaimer { margin-top: 72px; font-size: 17px; line-height: 26px; }
}

@media (prefers-reduced-motion: no-preference) {
	.sun-vnd .sun-vnd__families.is-fade { animation: sun-vnd-in 150ms ease-out; }
	.sun-vnd :is(.sun-vnd__pick, .sun-vnd__site, .sun-vnd__ig, .sun-vnd__reset, .sun-vnd__toggle) { transition: color 150ms, background-color 150ms, border-color 150ms; }
	.sun-vnd .sun-vnd__tile-img { transition: opacity 150ms; }
	.sun-vnd :is(.sun-vnd__entry, .sun-vnd__chip) { transition: background-color 150ms, box-shadow 150ms, color 150ms, border-color 150ms; }
	.sun-vnd .sun-vnd__scrim:not([hidden]) { animation: sun-vnd-scrim 150ms ease-out; }
	@keyframes sun-vnd-in { from { opacity: .35; } to { opacity: 1; } }
	@keyframes sun-vnd-scrim { from { opacity: 0; } to { opacity: 1; } }
}
@media (prefers-reduced-motion: reduce) {
	.sun-vnd, .sun-vnd *, .sun-vnd *::before, .sun-vnd *::after { transition: none !important; animation: none !important; }
}
@media (forced-colors: active) {
	.sun-vnd .sun-vnd__pick[aria-pressed="true"] { outline: 2px solid Highlight; outline-offset: -3px; }
	.sun-vnd .sun-vnd__pick[aria-pressed="true"]::after, .sun-vnd__family-head::after, .sun-vnd .sun-vnd__disclaimer::before { forced-color-adjust: none; background: CanvasText; }
	.sun-vnd__family-head { border-top-color: CanvasText; }
	.sun-vnd :is(.sun-vnd__tools, .sun-vnd__index) { border-bottom-color: CanvasText; }
	.sun-vnd :is(.sun-vnd__reset, .sun-vnd__widen) { border-color: ButtonText; }
	.sun-vnd .sun-vnd__scrim { forced-color-adjust: none; }
	.sun-vnd .sun-vnd__guide-title::after { forced-color-adjust: none; background: CanvasText; }
	.sun-vnd .sun-vnd__tile--all { border: 1px solid CanvasText; }
	.sun-vnd.sun-vnd :is(a, button, input):focus-visible { outline-color: Highlight; }
	.sun-vnd .sun-vnd__domain::after { forced-color-adjust: none; background-color: LinkText; }
	.sun-vnd .sun-vnd__chip[aria-pressed="true"] { forced-color-adjust: none; background: Highlight; border-color: Highlight; color: HighlightText; }
}
@media (scripting: enabled) and (max-width: 1024px) {
	.sun-vnd:not(.is-js) .sun-vnd__aside::before { content: ""; display: block; height: var(--bar); }
}
@media (max-width: 1024px) and (max-height: 480px) {
	.sun-vnd .sun-vnd__tools { position: static; }
	.sun-vnd .sun-vnd__index { position: static; max-height: none; }
	.sun-vnd .sun-vnd__scrim { display: none; }
}
@media print {
	.sun-vnd { --vg: #242E35; --vn: #242E35; --vo: #242E35; --vs: #242E35; --vl: #242E35; }
	.sun-vnd :is(.sun-vnd__tools, .sun-vnd__toggle, .sun-vnd__index, .sun-vnd__jump, .sun-vnd__skip, .sun-vnd__back, .sun-vnd__clear, .sun-vnd__widen, .sun-vnd__scrim, .sun-vnd__interlude, .sun-vnd__guide, .sun-vnd__banner, .sun-vnd__to-guide, .sun-vnd__chips) { display: none !important; }
	.sun-vnd .sun-vnd__families[hidden].sun-vnd__families { display: block !important; }
	.sun-vnd { --vgap: 28px; }
	.sun-vnd .sun-vnd__list { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.sun-vnd :is(.sun-vnd__meta, .sun-vnd__desc, .sun-vnd__disclaimer) { font-size: 10pt; }
	.sun-vnd.is-guide :is(.sun-vnd__families, .sun-vnd__empty) { display: block; }
	.sun-vnd .sun-vnd__entry { break-inside: avoid; }
	.sun-vnd :is(.sun-vnd__family-head, .sun-vnd__family-title, .sun-vnd__group-title) { break-after: avoid; }
}
/* 64a. SPEC-V3: icons, chips, focus, entry ground, desktop guide. */
.sun-vnd .sun-vnd__ico { display: inline-block; flex: none; width: 20px; height: 20px; overflow: visible; vertical-align: -4px; }
.sun-vnd .sun-vnd__tile-label .sun-vnd__ico { margin-top: calc((1.15em - 20px) / 2); }
.sun-vnd .sun-vnd__pick .sun-vnd__ico--chevron-down { position: absolute; right: 0; top: 50%; width: 16px; height: 16px; margin-top: -8px; color: var(--vs); transition: transform 150ms ease-out; }
.sun-vnd .sun-vnd__pick--family .sun-vnd__ico:first-child { align-self: center; position: relative; top: -1px; }
.sun-vnd .sun-vnd__index-family:has([aria-pressed="true"]) .sun-vnd__ico--chevron-down { transform: rotate(180deg); }
.sun-vnd__field { position: relative; }
.sun-vnd .sun-vnd__field .sun-vnd__ico--search { position: absolute; left: 2px; bottom: 14px; color: var(--vs); pointer-events: none; }
.sun-vnd .sun-vnd__to-guide .sun-vnd__ico { color: var(--vg); }
.sun-vnd.sun-vnd :is(a, button, input):focus-visible { outline: 2px solid #906A3C; outline-offset: 3px; box-shadow: 0 0 0 2px #FFF; }
.sun-vnd .sun-vnd__chips { display: none; }
@media (max-width: 1024px) {
	.sun-vnd .sun-vnd__chips { display: flex; gap: 8px; margin: 0 calc(-1 * var(--vpad)); padding: 6px var(--vpad) 6px; overflow-x: auto; overscroll-behavior-x: contain; scroll-snap-type: x proximity; scroll-padding-inline: var(--vpad); scrollbar-width: none; -webkit-mask-image: linear-gradient(90deg, #000 calc(100% - 36px), transparent); mask-image: linear-gradient(90deg, #000 calc(100% - 36px), transparent); }
	.sun-vnd .sun-vnd__chips::-webkit-scrollbar { display: none; }
	.sun-vnd__family-head + .sun-vnd__chips { margin-top: 8px; margin-bottom: -6px; }
	.sun-vnd .sun-vnd__chip, .sun-vnd .sun-vnd__chip:is(:focus, :active) { flex: none; min-height: 44px; margin: 0; padding: 0 18px; scroll-snap-align: start; border: 1px solid #8A8880; border-radius: 0; background: var(--vp); color: var(--vi); font: 400 13px/1 var(--va); letter-spacing: 1.5px; text-transform: uppercase; white-space: nowrap; cursor: pointer; }
	.sun-vnd .sun-vnd__chip[aria-pressed="true"], .sun-vnd .sun-vnd__chip[aria-pressed="true"]:is(:focus, :active) { border-color: var(--vi); background: var(--vi); color: #F4F1EA; }
}
@media (hover: hover) {
	.sun-vnd .sun-vnd__entry:is(:hover, :focus-within) { --vg: #85602F; background: #F4F1EA; box-shadow: -12px 0 0 #F4F1EA, 12px 0 0 #F4F1EA; }
	.sun-vnd .sun-vnd__name a.sun-vnd__site.sun-vnd__site:is(:hover, :focus-visible) { color: var(--vi); text-decoration: underline; text-decoration-color: #906A3C; text-decoration-thickness: 1px; text-underline-offset: 5px; }
	.sun-vnd .sun-vnd__chip[aria-pressed="false"]:hover { border-color: var(--vi); background: #F4F1EA; }
}
@media (min-width: 1025px) {
	.sun-vnd.is-guide .sun-vnd__layout { grid-template-columns: minmax(0, 1fr); }
	.sun-vnd.is-guide .sun-vnd__aside { position: static; flex-direction: row; flex-wrap: wrap; align-items: flex-end; gap: 0 32px; max-height: none; margin: 0 0 40px; padding: 6px; overflow: visible; }
	.sun-vnd.is-guide .sun-vnd__index { display: none; }
	.sun-vnd.is-guide .sun-vnd__field { flex: 0 1 460px; }
	.sun-vnd.is-guide .sun-vnd__status { margin: 0 0 10px; }
	.sun-vnd.is-guide .sun-vnd__tiles { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 40px 28px; }
	.sun-vnd.is-guide .sun-vnd__tiles > li:last-child { grid-column: 1 / -1; }
	.sun-vnd.is-guide a.sun-vnd__tile--all, .sun-vnd.is-guide a.sun-vnd__tile--all:is(:hover, :focus, :active) { flex-direction: row; gap: 20px; min-height: 72px; padding: 0 32px; }
	.sun-vnd.is-guide .sun-vnd__tile--all .sun-vnd__tile-count { margin-top: 0; }
	.sun-vnd.is-guide .sun-vnd__guide-title { margin-bottom: 32px; }
	.sun-vnd.is-guide .sun-vnd__disclaimer { margin-top: 56px; }
}
/* 64b. Page 998061 bands (D152: owner chose CSS over page edits) */
.elementor-998061.elementor-998061 .elementor-element.elementor-element-b143fb7 { --gap: 20px 20px; --row-gap: 20px; --column-gap: 20px; }
.elementor-998061.elementor-998061 .elementor-element.elementor-element-2f4f3e0 { --content-width: 1200px; --padding-bottom: 56px; }
.elementor-998061.elementor-998061 .elementor-element.elementor-element-9831ca0 { width: 100%; max-width: 680px; text-align: left; }
.elementor-998061 .elementor-element-9831ca0 p:first-child { font-size: 22px; line-height: 1.5; }
.elementor-998061.elementor-998061 .elementor-element.elementor-element-b4617b4 { margin-top: 12px; }
.elementor-998061.elementor-998061 .elementor-element.elementor-element-b4617b4 .elementor-button { padding: 18px 40px; border: 1px solid #F4F1EA; border-radius: 0; background: #F4F1EA; color: #242E35; font: 400 14px/1.2 "Alata", system-ui, sans-serif; letter-spacing: 2px; text-transform: uppercase; }
.elementor-998061.elementor-998061 .elementor-element.elementor-element-b4617b4 .elementor-button:is(:hover, :focus-visible) { border-color: #B98D58; background: #B98D58; color: #242E35; }
.elementor-998061.elementor-998061 .elementor-element.elementor-element-b4617b4 .elementor-button:focus-visible { outline: 2px solid #F4F1EA; outline-offset: 3px; }
@media (min-width: 1025px) { .elementor-998061.elementor-998061 .elementor-element.elementor-element-9012b66 { --min-height: 50vh; --padding-bottom: 80px; } }
@media (max-width: 1024px) {
	.elementor-998061.elementor-998061 .elementor-element.elementor-element-2f4f3e0 { --padding-bottom: 44px; }
	.elementor-998061 .elementor-element-9831ca0 p:first-child { font-size: 21px; }
}
@media (max-width: 767px) {
	.elementor-998061.elementor-998061 .elementor-element.elementor-element-2f4f3e0 { --padding-bottom: 32px; }
	.elementor-998061 .elementor-element-9831ca0 p:first-child { font-size: 20px; }
}
/* ==== END 64 ==== */

/* ==========================================================================
   65. C7 CHECKOUT STACKING -- let the checkout layer own the viewport (D154 wave 0)
   --------------------------------------------------------------------------
   WHAT'S BROKEN, verified live on /checkout/cart/, /customer, /delivery,
   /payment, /review at 1440, 1024 and 390 px (evidence in the
   orchestrator scratch, 2026-10-20): Commerce7 mounts its checkout as a
   full-screen takeover, `div#c7-content.c7-content--checkout { position:
   fixed; z-index: 9999; overflow-y: scroll; inset: 0; }`, meant to sit above
   and scroll independently of the page behind it. It cannot, because:
     - the theme's `#main-content { position: relative; z-index: 9; }`
       (themes/lagar/vamtam/assets/css/dist/all.css:1587) opens a stacking
       context around the checkout's own ancestor chain, so its z:9999
       resolves only inside that z:9 context — it never reaches the root.
     - the site header (`header.elementor-location-header`, its sticky child
       section fixed at z:11000) and `footer.main-footer` (relative, z:10)
       sit in the ROOT stacking context the checkout never joined, so they
       paint over it anyway. `#c7wp-cart-box` (fixed, z:99999) and
       `#scroll-to-top` (fixed, z:200) do too.
     - the page behind is taller than the checkout, so the mouse wheel
       scrolls the WINDOW, not the checkout's own `overflow-y: scroll`
       layer — `#c7-content`'s scrollTop never moves and "Continue to
       Delivery" (y≈941 at 1440) is below the fold with no way to reach it.
   Net effect confirmed by `elementFromPoint`: the email input and the
   wallet-pay button hit the footer, not the checkout (before/dbg4.log).

   THE FIX. Only while the checkout layer is mounted — scoped by
   `body:has(#c7-content.c7-content--checkout)`, the class C7 sets only on
   the checkout route, so `/cart/`, product pages and a bare `/checkout/`
   that renders nothing are untouched:
     1. Drop `#main-content` out of its own stacking context so the
        checkout's z:9999 resolves against the root instead of a z:9 island.
     2. Hide the site chrome that would otherwise paint over or behind the
        takeover: the Elementor header location (which contains its fixed
        sticky section — hiding the wrapper hides the fixed child with it,
        since `display: none` on an ancestor drops the whole subtree
        regardless of the descendant's own position), the theme page-title
        bar, the site footer, the C7 header cart/account bar, and the
        scroll-to-top button.
     3. Lock the page behind so wheel/touch scroll goes to the checkout's
        own `overflow-y: scroll` layer instead of the window.
     4. The 21+ dialog (§28, `.sun-age-dialog`, z:100001 — verified on the
        live DOM 2026-10-20) already outranks the checkout's z:9999, so no
        change is needed here; left as a comment so the next person does not
        have to re-derive it.
   Selectors below were read off the live DOM (`#main-content`,
   `header.elementor-location-header`, `header.page-header`,
   `footer#main-footer.main-footer`, `#c7wp-cart-box`, `#scroll-to-top`),
   not guessed.

   NOT IN SCOPE: restyling anything inside `#c7-content`. That is C7's own
   markup; this section only clears the site chrome out of its way.

   TO REVERT: delete this section. `#main-content` goes back to its
   `all.css` z-index of 9, the header/footer/cart-box/scroll-to-top reappear
   on top of the checkout, and the window scrolls again instead of the
   overlay.
   ========================================================================== */

/* 1. join the root stacking context so z:9999 is no longer trapped inside a z:9 ancestor */
body:has(#c7-content.c7-content--checkout) #main-content {
	z-index: auto;
}

/* 2. site chrome that would otherwise sit on top of (or behind) the checkout.
   `header.elementor-location-header` and `[data-elementor-type="header"]`
   are the same element here (verified), kept both because the brief's
   contract names both and a future header rebuild may drop one of the two
   markers. */
body:has(#c7-content.c7-content--checkout) header.elementor-location-header,
body:has(#c7-content.c7-content--checkout) [data-elementor-type="header"],
body:has(#c7-content.c7-content--checkout) header.page-header,
body:has(#c7-content.c7-content--checkout) footer.main-footer,
body:has(#c7-content.c7-content--checkout) #c7wp-cart-box,
body:has(#c7-content.c7-content--checkout) #scroll-to-top {
	display: none;
}

/* 3. the checkout layer is the intended scroller (`overflow-y: scroll` is
   its own, untouched); stop the window under it from taking the wheel. */
html:has(#c7-content.c7-content--checkout),
body:has(#c7-content.c7-content--checkout) {
	overflow: hidden;
}

/* 4. §28's `.sun-age-dialog` is `position: fixed; z-index: 100001;` — already
   above this layer's z:9999, so it is not re-raised here. If a future edit
   to §28 ever drops its z-index at or below 9999, raise it while the
   checkout is mounted:
   body:has(#c7-content.c7-content--checkout) .sun-age-dialog { z-index: 10000; }
*/


/* ==== END 65 ==== */



/* ==========================================================================
   66. COMMERCE7 CART + CHECKOUT (plan.md — "47" renumbered to 66 by the
       orchestrator). Lane A: 66.0 tokens, 66.1 cart page, 66.2 side cart.
       Lane B (checkout, all steps) is spliced in afterward as 66.3.
   --------------------------------------------------------------------------
   WHAT. Restyles the Commerce7 cart page, empty cart and side cart (drawer)
         to match the Sunstone system already applied to the rest of the
         site by §1-8/26/27/28/46. Checkout is 66.3, Lane B — not touched
         here.
   WHY.  §1-8's token remap targets `.c7wp-wrap` / `#c7-content` only. The
         cart page is inside that scope and mainly needs its small-target,
         hierarchy and density defects fixed (plan §2.1/2.2). The side cart
         renders into `<body>`, OUTSIDE `#c7-content` (§8 is commented out on
         purpose — c7-sec-1-8.css:708-730), so it ships with ZERO Sunstone
         styling today: stock Commerce7 grey + royal-blue buttons, and a
         "Remove" control that computes white text on a white ground and
         disappears. 66.2 restates the brand system there directly.
   RULES THAT HOLD (plan.md §5 has the full architecture):
     - Every selector below starts with `body #c7-content .c7-cart`,
       `body .c7-side-cart`, or is a `:root` token in 66.0. No bare C7 class,
       no unscoped `.c7-order-item` (its internal shape differs between the
       cart and checkout — plan D-K14).
     - No `--c7-*` token is trusted inside `.c7-side-cart`: §8 is commented
       out, so those tokens resolve to Commerce7 stock there, not Sunstone's.
     - `!important` budget for the WHOLE of §66 (both lanes) is 2, spent
       entirely in 66.3 (Lane B: D-K05's iframe margin, and a focus-ring
       restatement). Lane A spends none.
     - No new DOM node, no new visible string, no new colour. Every colour
       below is one of §27's existing pairs. The handful of `.c7-sr-only`
       reveals below only un-hide a string Commerce7 already renders — never
       a bare `.c7-sr-only` selector, and never inside
       `.c7-order-summary__item--subtotal` (D-K25 — that row's `span::before
       { content: '(' }` would print stray brackets around a revealed span).
     - Breakpoints: the cart page's own layout flip is C7's 768/769
       (`.c7-mobile-only`); type/spacing-only cart rules that do NOT depend
       on a C7 flip use the Sunstone 1024/767 vocabulary; the side cart has
       exactly one breakpoint anywhere in commerce7.css (480) and every
       side-cart rule below uses only that one (plan §5.5).
     - Do-not-touch (plan §5.7): `.c7-sr-only` as a bare selector;
       `.c7--hidden` / `.c7--visible` / `.c7--rotate-180`; `.c7-sr-updates` /
       `[aria-live]` / `[role="status"]`; any `:focus-visible` override
       (§26 owns the ring; the two rings below are deliberately NOT ring
       rules, see 66.1); `#c7wp-cart-box`; `.elementor-*`; `@keyframes spin`.
   TO REVERT: delete §66 in full (66.0-66.3, spliced by the orchestrator).
            Nothing outside it depends on these rules — §1-8/26/27/28/46
            keep their own selectors and `var()` fallbacks untouched. §8's
            comment is amended by the orchestrator to point here.
   ========================================================================== */

/* --------------------------------------------------------------------------
   66.0 TOKENS — shared primitives for §66. Lane A owns this block; Lane B
        (66.3) reads these and defines none of its own (plan §6.4.3). Every
        value aliases an existing Sunstone colour (§27) or Commerce7's own
        error pair; no new colour is introduced anywhere in §66.
   -------------------------------------------------------------------------- */
:root{
	--sw-co-ink:            #242E35;
	--sw-co-slate:          #545D5C;
	--sw-co-cream:          #F4F1EA;
	--sw-co-cream-lt:       #F9F8F4;
	--sw-co-rule:           #DEDDD9;
	--sw-co-field-border:   #938F82;
	--sw-co-muted:          #6E6E6E;
	--sw-co-gold-on-light:  #906A3C; /* white / #F9F8F4 grounds */
	--sw-co-gold-on-cream:  #85602F; /* #F4F1EA grounds — brand kit */
	--sw-co-ornament:       #B98D58; /* non-text ornament only, never a text colour */
	--sw-co-err:            #CA0505; /* Commerce7's own --c7-error, aliased: that
	                                     token does not reach #c7-content, §1's
	                                     remap never defines it */
	--sw-co-err-bg:         #FFEBEB;
	--sw-co-ctl-h:          48px;
	--sw-co-tap:            44px;
}

@keyframes sw-co-pulse{
	0%, 100% { opacity: .35; }
	50%      { opacity: 1; }
}


/* ==========================================================================
   66.1 CART PAGE  —  scope: body #c7-content .c7-cart
   ========================================================================== */

/* D-C10 (h1 half): "Cart" renders ~62px, competing at display scale with the
   "Order Summary" h2 below. 40px desktop / 34px phone (DESIGN_VARIANCE 4
   keeps it centred — §4.3's centred-hero avoidance does not fire at this
   dial, so C7's centred h1 stays as-is, just smaller). */
body #c7-content .c7-cart h1.c7-h1{
	font-size: 40px;
}
@media screen and (max-width: 767px){
	body #c7-content .c7-cart h1.c7-h1{
		font-size: 34px;
	}
}

/* D-C01: "Remove" is 20px plain serif text with no affordance — WCAG 2.5.5
   (44px floor, 48 on phone) and the only destructive control on the page
   looks like a caption. */
body #c7-content .c7-cart .c7-order-item__details > button.c7-link{
	display: inline-flex;
	align-items: center;
	min-height: var(--sw-co-tap);
	padding: 14px 2px;
	font-family: "Alata", sans-serif;
	font-size: 12px;
	letter-spacing: 2px;
	text-transform: uppercase;
	color: var(--sw-co-slate);
	text-decoration: none;
}
body #c7-content .c7-cart .c7-order-item__details > button.c7-link:hover{
	color: var(--sw-co-gold-on-light);
	text-decoration: underline;
}
@media screen and (max-width: 767px){
	body #c7-content .c7-cart .c7-order-item__details > button.c7-link{
		min-height: 48px;
	}
}

/* D-C02: the product title link is 24px tall, the second most-clicked thing
   on the page, below the 44px floor. */
body #c7-content .c7-cart .c7-order-item__title a{
	display: inline-block;
	padding-block: 10px;
	font-size: 20px;
}
@media screen and (max-width: 767px){
	body #c7-content .c7-cart .c7-order-item__title a{
		font-size: 18px;
	}
}

/* D-C11: the Merlot's description repeats its title verbatim — a Commerce7
   product-data issue, not fixable in CSS (owner action O-4). This only
   reduces the visual/scroll cost. NOTE: the fix row in plan §2.1 suggests
   14px, but that is body prose and the plan's own acceptance check A2 (and
   D-C13's restated floor) requires >=16px for text in p/li/div nodes. A2 is
   the binding numbered gate, so this ships at 16px, not 14px — recorded as a
   deliberate deviation in lane-a-notes.md. */
body #c7-content .c7-cart .c7-order-item__description{
	font-size: 16px;
	color: var(--sw-co-slate);
	max-width: 42ch;
}

/* D-C13 (remaining catch): the callout line is the one other piece of body
   prose on this page not already covered by a named rule above. */
body #c7-content .c7-cart .c7-callout{
	font-size: 16px;
	color: var(--sw-co-slate);
}

/* D-C04: Commerce7 renders EACH / QTY / TOTAL as sr-only labels, so the row
   reads as two identical $75.00 values with no anchor between title and
   price — the single largest cause of the dead vertical void. Un-hide
   Commerce7's OWN strings on exactly these three selectors (never a bare
   `.c7-sr-only` reset — see D-K25 in the §66 banner). */
body #c7-content .c7-cart .c7-order-item__price > .c7-sr-only,
body #c7-content .c7-cart .c7-order-item__quantity > label.c7-sr-only,
body #c7-content .c7-cart .c7-order-item__total .c7-sr-only{
	position: static;
	width: auto;
	height: auto;
	margin: 0 0 4px;
	padding: 0;
	overflow: visible;
	clip: auto;
	clip-path: none;
	white-space: normal;
	display: block;
	font-family: "Alata", sans-serif;
	font-size: 12px;
	font-weight: 400;
	letter-spacing: 2px;
	text-transform: uppercase;
	color: var(--sw-co-slate);
}

/* D-C05: at <=767 the row keeps the desktop 3-column grid, so the title
   wraps 4 lines and the qty select is clipped to a sliver. __image,
   __details and __pricing are direct children of .c7-order-item on the cart
   page, so they are re-areaed with no DOM move. */
@media screen and (max-width: 767px){
	body #c7-content .c7-cart .c7-order-item{
		display: grid;
		grid-template-columns: 72px 1fr;
		grid-template-areas:
			"img details"
			"pricing pricing";
		column-gap: 16px;
		row-gap: 8px;
	}
	body #c7-content .c7-cart .c7-order-item__image{
		grid-area: img;
	}
	body #c7-content .c7-cart .c7-order-item__details{
		grid-area: details;
	}
	body #c7-content .c7-cart .c7-order-item__pricing{
		grid-area: pricing;
		display: flex;
		flex-wrap: wrap;
		align-items: flex-end;
		justify-content: space-between;
		gap: 8px;
	}
}

/* D-C06: the quantity control is a bare native select — white box, black
   system triangle, hairline border — against cream. Font kept at 16px (not
   the fix row's literal 14px) to clear acceptance check A3's input-font
   floor and avoid iOS auto-zoom; border colour kept at the token
   --sw-co-field-border (#938F82, §27's measured 3:1 value) rather than the
   fix row's literal #8A8880, so this does not drift from the rest of §66 —
   both noted as deviations in lane-a-notes.md. */
body #c7-content .c7-cart .c7-order-item__quantity select[name="c7-quantityOther"]{
	appearance: none;
	-webkit-appearance: none;
	height: var(--sw-co-ctl-h);
	min-width: 80px;
	padding: 0 34px 0 12px;
	border: 1px solid var(--sw-co-field-border);
	border-radius: 0;
	background-color: var(--sw-co-cream-lt);
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%23242E35' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
	background-repeat: no-repeat;
	background-position: right 12px center;
	font-family: "Alata", sans-serif;
	font-size: 16px;
	color: var(--sw-co-ink);
}

/* Quantity "Other" state (plan §4, UNVERIFIED in markup — resolved this
   session: screenshotted at build/diag-qty-other-cartpage.png. Choosing
   "Other" swaps the select for a text input plus an "Update" button. The
   exact class on the revealed input was not captured in this session — see
   lane-a-notes.md — so it is reached narrowly by type, never by a bare
   `input` selector, and still scoped under __quantity. */
body #c7-content .c7-cart .c7-order-item__quantity input[type="number"],
body #c7-content .c7-cart .c7-order-item__quantity input[type="text"]{
	height: var(--sw-co-ctl-h);
	min-width: 80px;
	padding: 0 12px;
	border: 1px solid var(--sw-co-field-border);
	border-radius: 0;
	background: var(--sw-co-cream-lt);
	font-family: "Alata", sans-serif;
	font-size: 16px;
	color: var(--sw-co-ink);
}
body #c7-content .c7-cart .c7-order-item__quantity .c7-form__field{
	margin-bottom: 0;
}
body #c7-content .c7-cart .c7-order-item__quantity .c7-btn{
	margin-top: 8px;
}

/* D-C03: the coupon toggle is 20px with a hard-coded black (#000000) chevron
   — brand break plus a target-size failure. Chevron rotation on
   [aria-expanded] is C7's own `.c7--rotate-180` utility (do-not-touch) — no
   rotate rule is written here. */
body #c7-content .c7-cart .c7-form--coupon-code-container > button.c7-link{
	display: flex;
	align-items: center;
	justify-content: space-between;
	width: 100%;
	min-height: var(--sw-co-tap);
	padding: 12px 0;
	font-family: "Alata", sans-serif;
	font-size: 12px;
	letter-spacing: 2px;
	text-transform: uppercase;
	color: var(--sw-co-slate);
}
body #c7-content .c7-cart .c7-form--coupon-code-container > button.c7-link svg{
	stroke: currentColor;
	width: 16px;
	height: 16px;
}

/* D-C16: placeholder-as-label. The coupon field ships
   `<label class="c7-required c7-sr-only">Coupon code</label>` with
   `placeholder="Coupon code"` — the skill's "No placeholder-as-label. Ever."
   Un-hide C7's own label; the placeholder is left exactly as C7 wrote it. */
body #c7-content .c7-cart #c7-coupon-group label.c7-sr-only{
	position: static;
	width: auto;
	height: auto;
	margin: 0 0 6px;
	padding: 0;
	overflow: visible;
	clip: auto;
	clip-path: none;
	white-space: normal;
	display: block;
	font-family: "Alata", sans-serif;
	font-size: 12px;
	letter-spacing: 2px;
	text-transform: uppercase;
	color: var(--sw-co-slate);
}
/* Coupon field input: kept >=16px to match A3 and avoid iOS zoom. The field
   border's dead-error-border bug (same mechanism as D-K17) is NOT fixed
   here — D-K17 is not in Lane A's owned defect list per BRIEF-A.md, and the
   §66 !important budget is Lane B's to spend. Flagged to the orchestrator in
   lane-a-notes.md and HANDOFF-A.md rather than silently patched. */
body #c7-content .c7-cart #c7-coupon-group input{
	font-size: 16px;
}

/* D-C08: "PROCEED TO CHECKOUT" sits OUTSIDE the bordered Order Summary card,
   floating detached below it. Move the border to the aside so it encloses
   summary + button; the inner card loses its own border so it is not
   doubled. Pure CSS, no DOM move. */
body #c7-content .c7-cart aside.c7-cart__summary-container{
	border: 1px solid var(--sw-co-rule);
	padding: 24px;
}
body #c7-content .c7-cart aside.c7-cart__summary-container .c7-order-summary{
	border: 0;
	padding: 0;
}
body #c7-content .c7-cart aside.c7-cart__summary-container > a.c7-btn--primary{
	margin-top: 16px;
	width: 100%;
}

/* D-C10 (h2 half): "Order Summary" renders at the same display scale as the
   page h1 — the card's job is reference, not a second headline. */
body #c7-content .c7-cart .c7-order-summary > h2.c7-h2{
	font-family: "Alata", sans-serif;
	font-size: 13px;
	font-weight: 400;
	letter-spacing: 2px;
	text-transform: uppercase;
	color: var(--sw-co-slate);
}

/* D-C09: gold money values render #906A3C on the #F4F1EA summary ground;
   the brand kit requires #85602F there. Scoped to the Estimated Total row,
   the one value the wireframe (plan §3.1) gives gold weight to — the
   Subtotal row stays plain ink, inherited. */
body #c7-content .c7-cart .c7-order-summary__item--total .c7-order-summary__value{
	color: var(--sw-co-gold-on-cream);
	font-size: 24px;
}

/* D-C14: 190px rows and a loose vertical rhythm push the page to 1994px
   (1440) / 3146px (390) for a 2-item cart. Tighten the row padding; D-C05's
   re-area does the rest at <=767. */
body #c7-content .c7-cart .c7-order-item{
	padding-block: 20px;
}

/* D-C12 (owner question Q4 — default (a) RECOMMENDED: hold the bottle image
   at today's size. The Merlot shot has a "90 POINTS" score badge baked into
   the image; growing the bottle grows the badge proportionally, and the
   brief holds score claims under a decision (plan risk R-6). Only the plate
   and object-fit ship in the default block below. Q4b is the 96px variant,
   commented, directly below — switch by deleting the default block and
   uncommenting Q4b. Do not run both at once. */
body #c7-content .c7-cart .c7-order-item__image{
	background: var(--sw-co-cream-lt);
}
body #c7-content .c7-cart .c7-order-item__image img{
	object-fit: contain;
}
/* Q4b: owner picks (b) — 96px bottle presence, accepting the enlarged badge
   (plan risk R-6) or (c) ask Commerce7 for an unbadged asset first.
body #c7-content .c7-cart .c7-order-item__image{
	width: 96px;
	background: var(--sw-co-cream-lt);
}
body #c7-content .c7-cart .c7-order-item__image img{
	width: 96px;
	object-fit: contain;
}
@media screen and (max-width: 767px){
	body #c7-content .c7-cart .c7-order-item__image{ width: 72px; }
	body #c7-content .c7-cart .c7-order-item__image img{ width: 72px; }
}
*/

/* D-C07 (owner question Q5 — default (a) RECOMMENDED: keep both PROCEED TO
   CHECKOUT buttons on the phone cart, styled identically — one action at
   the two decision points of a long scroll, not two competing intents. No
   extra rule needed: both already inherit the primary-button treatment.
   Q5b is the outlined-top variant, commented, directly below. */
/* Q5b: owner picks (b) — outline the top (.c7-mobile-only) button so only
   the bottom one in the summary card is filled.
body #c7-content .c7-cart .c7-cart__header .c7-btn--primary.c7-mobile-only{
	background: transparent;
	color: var(--sw-co-ink);
	border-color: var(--sw-co-ink);
}
body #c7-content .c7-cart .c7-cart__header .c7-btn--primary.c7-mobile-only:hover{
	background: var(--sw-co-ink);
	color: #FFFFFF;
}
*/

/* D-K20 (Lane A half): c7-sec-1-8.css:455-459 fades disabled buttons to
   opacity:.35 — white on slate at 35% is far below 3:1. Replace with an
   explicit, readable disabled palette, scoped to the cart only so other
   pages keep today's behaviour. */
body #c7-content .c7-cart .c7-btn[disabled]:not(.c7-btn--loading){
	opacity: 1;
	background: var(--sw-co-cream);
	color: var(--sw-co-muted);
	border-color: var(--sw-co-field-border);
	cursor: not-allowed;
}

/* D-K21 (Lane A half): c7-sec-1-8.css:421-431 applies the primary button's
   hover colour on bare :focus, not :focus-visible, so a mouse click sticks
   "Proceed to Checkout" in its hover colour. Narrow to :focus-visible inside
   the cart scope only; this is a state reset, not a ring, so it does not
   touch the §26 focus-visible indicator or its transition-property. */
body #c7-content .c7-cart .c7-btn--primary:not([disabled]):focus:not(:focus-visible){
	background: var(--c7-primary-button-bg);
	border-color: var(--c7-primary-button-bg);
	color: var(--c7-primary-button-text-color);
}

/* D-K19 (Lane A half): no new rule needed. §26c already restates
   `transition-property: color, background-color, border-color !important`
   on a GLOBAL `[focus-visible]`-family selector (a, button, [tabindex], …)
   that covers every control in .c7-cart already — verified by A15 rather
   than re-declared here. */

/* D-C15 / loading, block: the loading block is always in the DOM
   (`c7--hidden` toggles it) — an unstyled spinner would flash a default grey
   ring on every quantity change. Styled via `color` (currentColor-safe)
   rather than guessing the bundle's exact border declaration. */
body #c7-content .c7-cart .c7-loading--block{
	background: rgba(249, 248, 244, .72);
}
body #c7-content .c7-cart .c7-spinner{
	color: var(--sw-co-slate);
}
/* Loading, inline cell: `.c7-loading--overlay` co-applied to
   .c7-order-item__total uses `background: var(--c7-bg)` (white), which
   flashes white on this cream page during a quantity recalculation. */
body #c7-content .c7-cart .c7-order-item__total.c7-loading--overlay{
	background: var(--sw-co-cream-lt);
}

/* Item removed: no rule. The role="status" live region and the per-row
   border-top / last-child border-bottom pattern are C7's own and already
   degrade cleanly to one row and to zero rows (plan §4, risk-free by
   construction) — do-not-touch per §5.7. */

@media (prefers-reduced-motion: reduce){
	/* D-K22 (Lane A half): commerce7.css has no prefers-reduced-motion block
	   at all, so @keyframes spin runs unconditionally. Swap to a gentler
	   opacity pulse under a NEW keyframes name (never redefine `spin`
	   itself — do-not-touch, §5.7). */
	body #c7-content .c7-cart .c7-spinner::before{
		animation: sw-co-pulse 1.2s ease-in-out infinite;
	}
}

/* D-E01: ~190px dead band around a single-button empty state inside a
   1843px page. Hook confirmed in commerce7.css:
   `.c7-cart .c7-notice--empty { margin: 80px auto; max-width: 700px;
   text-align: center }`. Tightened; no `:has()` needed. */
body #c7-content .c7-cart .c7-notice--empty{
	margin: 48px auto;
	max-width: 42ch;
}
/* D-E02: the empty-state sentence renders ~16px in a 1440px-wide field,
   centred and adrift. */
body #c7-content .c7-cart .c7-notice--empty p{
	font-family: "Cormorant Infant", serif;
	font-size: 20px;
	color: var(--sw-co-ink);
	max-width: 34ch;
	margin: 0 auto 24px;
}
/* D-E03: one exit only (START SHOPPING) — cannot add a second link without
   a new DOM node (owner action O-5). CSS gives the single control proper
   weight. */
body #c7-content .c7-cart .c7-notice--empty .c7-btn{
	min-width: 240px;
	min-height: var(--sw-co-ctl-h);
	margin-top: 24px;
}
/* D-E04: body floor, same as D-C13 — already satisfied by D-E02's 20px. */


/* ==========================================================================
   66.2 SIDE CART  —  scope: body .c7-side-cart (renders outside #c7-content;
       no --c7-* token below is trusted — §8 is commented out)
   ========================================================================== */

/* D-S01 / D-S09: the side cart ships with ZERO Sunstone button styling —
   stock Commerce7 grey "View Cart" and royal-blue "Proceed to Checkout",
   and two equally weighted buttons (no single primary). §1-8's `.c7-btn`
   rules never reach this scope. Restate the brand button system here in
   full. Specificity: `body .c7-side-cart .c7-btn--primary` is (0,2,1),
   beating the C7 bundle's own `.c7-btn--primary` at (0,1,0) — no
   !important needed (plan §5.4). Transition is deliberately NOT `all` (it
   is `color, background-color, border-color`), so this scope never needs
   D-K19's ring-transition workaround in the first place. */
body .c7-side-cart .c7-btn{
	display: inline-flex;
	align-items: center;
	justify-content: center;
	box-sizing: border-box;
	min-height: var(--sw-co-ctl-h);
	padding: 16px 27px;
	border: 1px solid transparent;
	border-radius: 0;
	font-family: "Alata", sans-serif;
	font-size: 14px;
	font-weight: 400;
	letter-spacing: 3px;
	text-transform: uppercase;
	text-decoration: none;
	cursor: pointer;
	transition: color .3s, background-color .3s, border-color .3s;
}
body .c7-side-cart .c7-btn--primary{
	background: var(--sw-co-ink);
	color: #FFFFFF;
	border-color: var(--sw-co-ink);
}
body .c7-side-cart .c7-btn--primary:not([disabled]):hover{
	background: var(--sw-co-slate);
	border-color: var(--sw-co-slate);
	color: #FFFFFF;
}
body .c7-side-cart .c7-btn--alt{
	background: transparent;
	color: var(--sw-co-ink);
	border-color: var(--sw-co-ink);
}
body .c7-side-cart .c7-btn--alt:not([disabled]):hover{
	background: var(--sw-co-ink);
	color: #FFFFFF;
}
/* D-K20 (Lane A half, side cart): same readable-disabled palette as 66.1. */
body .c7-side-cart .c7-btn[disabled]:not(.c7-btn--loading){
	opacity: 1;
	background: var(--sw-co-cream);
	color: var(--sw-co-muted);
	border-color: var(--sw-co-field-border);
	cursor: not-allowed;
}
body .c7-side-cart .c7-order-summary__buttons{
	display: flex;
	gap: 12px;
	margin-top: 16px;
}
body .c7-side-cart .c7-order-summary__buttons .c7-btn{
	flex: 1 1 0;
}
@media screen and (max-width: 480px){
	/* DOM order is View Cart, then Proceed to Checkout; column-reverse puts
	   Proceed to Checkout first visually, matching plan §3.3's phone
	   wireframe ("primary first on phones") with no DOM move. */
	body .c7-side-cart .c7-order-summary__buttons{
		flex-direction: column-reverse;
	}
}

/* D-S02: "Remove" is in the DOM but invisible in both screenshots. Step 0
   diagnosis (lane-a-notes.md): computed style is color: rgb(255,255,255)
   (white), backgroundColor transparent, opacity 1, display inline-flex,
   rect 44x44 — not clipped, not the .elementor-kit-13 trap. ROOT CAUSE,
   confirmed by walking the live DOM and matched stylesheet rules:
   `.c7-side-cart` is NOT an independent body-level portal as the plan
   assumed — it is nested `#c7wp-cart-box > #c7-cart > div > .c7-side-cart`,
   i.e. INSIDE the header cart-icon widget's own root. §46's
   `body #c7wp-cart-box .c7-user-nav__cart button.c7-link { color:#fff }`
   (c7-sec-46-header.css:278, written for the 44x44 header icon toggle) is
   ID-anchored at specificity (1,2,2) and, because `.c7-link` is the SAME
   generic class Commerce7 reuses for "Remove", it also matches the
   drawer's Remove button — which is exactly why it is 44x44 (the header
   icon's own box size) and white. No class-only selector can outrank an
   id selector, so this rule anchors on the drawer's own `id="c7-side-cart"`
   to tie it at (1,2,2) and win on source order (no !important spent).
   This is a deliberate, narrow deviation from the `body .c7-side-cart`
   class-prefix convention used by every other rule in 66.2 — see
   lane-a-notes.md for the full trace and the orchestrator flag. */
body #c7-side-cart .c7-order-item__details button.c7-link{
	display: inline-flex;
	align-items: center;
	width: auto;
	height: auto;
	min-height: var(--sw-co-tap);
	padding: 14px 2px;
	background: none;
	border: 0;
	font-family: "Alata", sans-serif;
	font-size: 12px;
	letter-spacing: 2px;
	text-transform: uppercase;
	color: var(--sw-co-slate);
	text-decoration: none;
}
body #c7-side-cart .c7-order-item__details button.c7-link:hover{
	color: var(--sw-co-gold-on-light);
	text-decoration: underline;
}

/* D-S03: .c7-side-cart__content-container is `flex: auto; overflow-y: auto`
   with no min-height, so its default min-height:auto refuses to shrink
   below content, and the list overflows UNDER the fixed footer instead of
   scrolling. min-height:0 is the whole fix; everything else in commerce7.css
   is already correct. */
body .c7-side-cart__content-container{
	flex: 1 1 auto;
	min-height: 0;
	overscroll-behavior: contain;
}
body .c7-side-cart__summary-container{
	flex: 0 0 auto;
}
/* D-S04: the ~195px void at 1440 between the last item and the Subtotal
   rule falls out of D-S03's flex column directly — no separate rule. */

/* Quantity select + sr-only reveal pair with D-C06 / D-C04, scoped to the
   drawer (plan §3.3's wireframe shows the same styled "[1 v]" control and
   revealed EACH/QTY/TOTAL labels here; Step 0 confirmed the drawer's
   quantity control is the same editable <select name="c7-quantityOther">
   as the cart page, carrying .c7-order-items--cart). */
body .c7-side-cart .c7-order-item__quantity select[name="c7-quantityOther"]{
	appearance: none;
	-webkit-appearance: none;
	height: var(--sw-co-ctl-h);
	min-width: 72px;
	padding: 0 30px 0 10px;
	border: 1px solid var(--sw-co-field-border);
	border-radius: 0;
	background-color: var(--sw-co-cream-lt);
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%23242E35' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
	background-repeat: no-repeat;
	background-position: right 10px center;
	font-family: "Alata", sans-serif;
	font-size: 16px;
	color: var(--sw-co-ink);
}
body .c7-side-cart .c7-order-item__quantity input[type="number"],
body .c7-side-cart .c7-order-item__quantity input[type="text"]{
	height: var(--sw-co-ctl-h);
	min-width: 72px;
	padding: 0 10px;
	border: 1px solid var(--sw-co-field-border);
	border-radius: 0;
	background: var(--sw-co-cream-lt);
	font-family: "Alata", sans-serif;
	font-size: 16px;
	color: var(--sw-co-ink);
}
body .c7-side-cart .c7-order-item__quantity .c7-form__field{
	margin-bottom: 0;
}

/* D-C02 parity (side cart): the product title link is the same <44px
   control as the cart page's D-C02 (WCAG 2.5.5) — not separately numbered
   in the plan's D-S* list, but caught by this session's own target-size
   sweep at 390 (A1's floor applies here too) and fixed rather than left as
   a gap. No known §46 collision for this selector (checked against the
   same #c7wp-cart-box rules that broke D-S02 — none target a bare anchor),
   so the plain `.c7-side-cart` class prefix is enough here. */
body .c7-side-cart .c7-order-item__title a{
	display: inline-block;
	padding-block: 10px;
}

/* D-S10: same unlabelled $/select/$ triple as D-C04, scoped to the drawer. */
body .c7-side-cart .c7-order-item__price > .c7-sr-only,
body .c7-side-cart .c7-order-item__quantity > label.c7-sr-only,
body .c7-side-cart .c7-order-item__total .c7-sr-only{
	position: static;
	width: auto;
	height: auto;
	margin: 0 0 4px;
	padding: 0;
	overflow: visible;
	clip: auto;
	clip-path: none;
	white-space: normal;
	display: block;
	font-family: "Alata", sans-serif;
	font-size: 12px;
	font-weight: 400;
	letter-spacing: 2px;
	text-transform: uppercase;
	color: var(--sw-co-slate);
}

/* D-S05: at <=480 titles wrap to 4 lines in a ~90px column. Same re-area as
   D-C05, scoped to the drawer and keyed to the side cart's own 480
   breakpoint (plan §5.5 — the side cart uses no other breakpoint). */
@media screen and (max-width: 480px){
	body .c7-side-cart .c7-order-item{
		display: grid;
		grid-template-columns: 64px 1fr;
		grid-template-areas:
			"img details"
			"pricing pricing";
		column-gap: 12px;
		row-gap: 8px;
	}
	body .c7-side-cart .c7-order-item__image{
		grid-area: img;
	}
	body .c7-side-cart .c7-order-item__details{
		grid-area: details;
	}
	body .c7-side-cart .c7-order-item__pricing{
		grid-area: pricing;
		display: flex;
		flex-wrap: wrap;
		align-items: flex-end;
		justify-content: space-between;
		gap: 8px;
	}
}

/* D-S06: the shipping incentive (hook: .c7-carrot / .c7-carrot__message,
   confirmed in the live DOM — Step 0) renders as a flat grey system box, the
   drawer's one merchandising asset, looking like a validation warning.
   D-S07 (the exclamation mark) is Commerce7's own string — owner action O-1,
   not touched here; copy stays verbatim. */
body .c7-side-cart .c7-carrot{
	background: var(--sw-co-cream);
	border: 1px solid var(--sw-co-ornament);
	padding: 16px;
	margin: 0 0 16px;
}
body .c7-side-cart .c7-carrot__message p{
	margin: 0;
	font-family: "Alata", sans-serif;
	font-size: 16px;
	line-height: 1.5;
	color: var(--sw-co-ink);
}

/* D-S08: the drawer title renders ~44px Cormorant, as large as the page h1,
   beside a ~24px bare "✕" (stroke="#000000", not brand ink) with a likely
   ~24px hit box. */
body .c7-side-cart .c7-side-cart__header h2.c7-h2{
	font-size: 28px;
}
body .c7-side-cart #c7-side-cart__header__close{
	width: 48px;
	height: 48px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	background: none;
	border: 0;
}
body .c7-side-cart #c7-side-cart__header__close svg{
	stroke: currentColor;
	color: var(--sw-co-ink);
	width: 20px;
	height: 20px;
}

/* D-K21 (Lane A half, side cart): this scope's .c7-btn--primary is defined
   from scratch above with no bare-:focus hover trick, so D-K21's bug cannot
   occur here — nothing further to override. */

/* D-C15 / D-K22 parity for the drawer's own loading block and spinner. */
body .c7-side-cart .c7-loading--block{
	background: rgba(249, 248, 244, .72);
}
body .c7-side-cart .c7-spinner{
	color: var(--sw-co-slate);
}
@media (prefers-reduced-motion: reduce){
	body .c7-side-cart .c7-spinner::before{
		animation: sw-co-pulse 1.2s ease-in-out infinite;
	}
	/* D-K22: the drawer's open/close transform transition runs regardless of
	   OS setting (no prefers-reduced-motion block anywhere in commerce7.css).
	   The ring/indicator selectors in §26 are untouched — this only
	   disables the drawer's own slide transition. */
	body .c7-side-cart{
		transition: none;
	}
}

/* ---- 66.3 Checkout, all steps ---- */
/* ==========================================================================
   66.3 CHECKOUT, ALL STEPS (Lane B)
   --------------------------------------------------------------------------
   Scope discipline (plan 5.1/5.2): every selector below begins with
   `body #c7-checkout`. Nothing here touches `.c7-cart` or `.c7-side-cart`
   (Lane A), `:root` (Lane A owns 47.0/66.0's tokens), or
   `#c7-content.c7-content--checkout`'s own inline position/z-index/overflow
   (wave 0's job, confirmed live — see lane-b-notes.md R-5).

   Tokens: Lane B defines none. Every colour below is either a literal (the
   brand hex, same value the `--sw-co-*` token would resolve to) or a
   `var(--sw-co-*, <literal fallback>)` read, so the rule is correct whether
   or not Lane A's token block has landed yet.

   Specificity (plan 5.4): where a rule competes with an existing Sunstone
   rule at equal weight, the plan accepts the tie and lets source order
   decide (this section is spliced after sections 1-28, so it wins any tie).
   Where the plan calls for an unambiguous win instead of a tie, the
   selector is bumped — either with the `[aria-invalid='true']` attribute
   (D-K17) or, for the button system, by compounding `#c7-checkout` with its
   own `.c7-checkout` class (the same element carries both), mirroring how
   Lane A bumps cart buttons through the `.c7-cart` descendant class.

   !important budget: exactly two, both named where they appear (D-K05's
   wallet iframe, D-K11's checkbox-ring transition-property). Nothing else
   in this file uses it.

   Breakpoints (D-K18): the checkout layout flip is C7's own 1000/1001, used
   only where a rule's correctness depends on that flip (none do here — the
   header/header--mobile DOM split and the `.c7--visible` / `.c7--rotate-180`
   utilities already carry that weight). Everything below that is type or
   spacing only uses the Sunstone vocabulary, 1024/767.
   ========================================================================== */

/* --------------------------------------------------------------------------
   Header: logo (D-K01, D-K03, D-M04) and breadcrumbs (D-K02, D-K03, D-M01)
   -------------------------------------------------------------------------- */

/* D-K01: the logo renders ~190px wide, consuming roughly the top third of
   the first viewport. D-K03: the breadcrumbs AND the logo are duplicated in
   the DOM (header vs header--mobile) — every rule here names the parent
   explicitly, never a bare .c7-checkout-logo or .c7-breadcrumbs. */
body #c7-checkout .c7-checkout__header .c7-checkout-logo {
	max-height: 56px;
	width: auto;
}
body #c7-checkout .c7-checkout__header--mobile .c7-checkout-logo {
	max-height: 40px;
	width: auto;
}
/* D-M04: the logo LINK must still clear the 44px tap floor. `inline-block`
   (not flex) avoids turning the `<img>` into a flex item — flex items
   default to `min-height:auto`, which was overriding the image's own
   `max-height` cap back up by several pixels (confirmed by computed-style
   inspection: `min-height` read `0px` before this rule and `auto` after an
   earlier flex version of it). The bare `<a>` also measured a shorter hit
   box than its own image (`getBoundingClientRect` h24 on desktop) until
   `inline-block` was added, so both header instances get it, with padding
   only on mobile where the 40px logo needs the extra few px to clear 44. */
body #c7-checkout .c7-checkout__header > a {
	display: inline-block;
}
body #c7-checkout .c7-checkout__header--mobile > a {
	display: inline-block;
	padding: 2px 0;
}

/* D-K02: typography, shared because both header instances need to match —
   each selector in the group is still parent-scoped, so this is not the
   bare `.c7-breadcrumbs` rule 5.7 forbids. Font-family/letter-spacing/
   uppercase are already inherited correctly from c7-sec-1-8.css:140-147's
   `.c7-breadcrumbs ol` rule; only what's wrong is restated. */
body #c7-checkout .c7-checkout__header .c7-breadcrumbs li,
body #c7-checkout .c7-checkout__header--mobile .c7-breadcrumbs li {
	font-size: 12px;
	letter-spacing: 2px;
	color: var(--sw-co-slate, #545D5C);
}
body #c7-checkout .c7-checkout__header .c7-breadcrumbs .c7-step-count,
body #c7-checkout .c7-checkout__header--mobile .c7-breadcrumbs .c7-step-count {
	color: var(--sw-co-gold-on-light, #906A3C);
}
/* beats c7-sec-1-8.css:645-648's `.c7-breadcrumbs .c7-active { color:
   var(--vamtam-accent-color-1) }` (gold) — here the active step is ink,
   gold is reserved for the step-count digit and the underline below. */
body #c7-checkout .c7-checkout__header .c7-breadcrumbs li.c7-active,
body #c7-checkout .c7-checkout__header--mobile .c7-breadcrumbs li.c7-active {
	color: var(--sw-co-ink, #242E35);
}

/* D-K02 desktop: a single hairline track, active step underlined in gold. */
body #c7-checkout .c7-checkout__header .c7-breadcrumbs ol {
	display: flex;
	flex-wrap: wrap;
	gap: 28px;
	padding-bottom: 12px;
	border-bottom: 1px solid var(--sw-co-rule, #DEDDD9);
}
body #c7-checkout .c7-checkout__header .c7-breadcrumbs li.c7-active {
	padding-bottom: 10px;
	margin-bottom: -11px;
	border-bottom: 2px solid var(--sw-co-gold-on-light, #906A3C);
}

/* D-M01: mobile breadcrumbs wrap 3+1 today, orphaning "4. REVIEW" alone on
   its own line. flex-basis 50% gives a balanced 2x2 block instead — chosen
   deliberately over a new breakpoint, so this section adds none outside the
   1024/767 and 1000/1001 vocabularies already in use (plan 5.5). */
body #c7-checkout .c7-checkout__header--mobile .c7-breadcrumbs ol {
	display: flex;
	flex-wrap: wrap;
	row-gap: 6px;
	padding-bottom: 10px;
	border-bottom: 1px solid var(--sw-co-rule, #DEDDD9);
}
/* Commerce7's own bundle puts `margin: 0 2px` on every breadcrumb `li`
   (not a Sunstone rule — not in any of sections 1-28). Flexbox counts
   margin in an item's outer size for wrapping purposes, so two items at
   `flex-basis:50%` (195px) plus 4px of margin each totalled 398px — 8px
   over the 390px row, which silently forced every item onto its own line
   instead of 2x2. Found by inspecting computed box models, not guessed;
   zeroed here and replaced with the ol's own `row-gap` for vertical
   breathing room between the two rows. */
body #c7-checkout .c7-checkout__header--mobile .c7-breadcrumbs li {
	flex: 0 0 50%;
	margin: 0;
	padding: 4px 0;
	box-sizing: border-box;
}
body #c7-checkout .c7-checkout__header--mobile .c7-breadcrumbs li.c7-active {
	padding-bottom: 2px;
	border-bottom: 2px solid var(--sw-co-gold-on-light, #906A3C);
}

/* --------------------------------------------------------------------------
   Step heading (D-K04) and vertical rhythm (VISUAL_DENSITY 5, feeds M06/B9)
   -------------------------------------------------------------------------- */

/* D-K04: "Customer" renders ~48px centred while every field below it is
   left-aligned — two alignment rules with nothing governing which is which.
   Chrome (logo, breadcrumbs, the wallet divider headings) stays centred as
   C7 ships it; only the step heading down is touched. Beats
   c7-sec-1-8.css:124-130's `#c7-content h1.c7-h1 { text-align:center;
   font-size:62px }` — both (1,1,1); this selector adds the
   `.c7-checkout__content` class, landing at (1,2,2). Font-size at <=767 is
   the Sunstone type breakpoint (D-K18: cosmetic scaling only, not a layout
   dependency). */
body #c7-checkout .c7-checkout__content h1.c7-h1 {
	text-align: left;
	font-size: 32px;
	margin-bottom: 20px;
}
@media screen and (max-width: 767px) {
	body #c7-checkout .c7-checkout__content h1.c7-h1 {
		font-size: 26px;
	}
}

/* Tightens the step's vertical rhythm a little (VISUAL_DENSITY 5), feeding
   the <=1500px (390) / <=1200px (1440, above the footer) targets (M06/B9). */
body #c7-checkout .c7-checkout__alt-payment {
	margin-bottom: 20px;
}
body #c7-checkout .c7-form__field {
	margin-bottom: 20px;
}

/* --------------------------------------------------------------------------
   Wallet row (D-K05) — Apple/Google Pay centring
   -------------------------------------------------------------------------- */

/* D-K05: the wrapper already carries an inline `style="text-align:center"`,
   but the iframe inside it carries its own inline `margin-right:25px`,
   which `text-align` can't cancel. Setting `display` here is safe — the
   inline style never declares that property. */
body #c7-checkout #fullsteam-hosted-digital-wallet-div {
	display: flex;
	justify-content: center;
	align-items: center;
	gap: 12px;
	flex-wrap: wrap;
}
/* The first of this file's two !important uses (plan 5.4 budget item 1):
   beats the iframe's own inline `margin-right:25px`, which has no other
   remedy. Does not touch the iframe's interior or apple-pay-button
   (5.7 do-not-touch — apple-pay-button is aria-hidden in the dump but is the
   real control on Safari). */
body #c7-checkout #fullsteam-hosted-digital-wallet-div iframe {
	margin-right: 0 !important;
}

/* --------------------------------------------------------------------------
   Returning-customer path (D-M05)
   -------------------------------------------------------------------------- */

/* D-M05: "Already have an account? Log in" is a 24px inline link buried
   between the wallet divider and the guest form — the cheapest conversion
   on the screen and the least visible thing on it. No reordering, no new
   copy; `:has()` is an established pattern in this codebase (wave0, §28). */
body #c7-checkout .c7-checkout__content p:has(> a[href$="/customer/login"]) {
	background: var(--sw-co-cream-lt, #F9F8F4);
	padding: 16px;
	margin: 0 0 20px;
	font-size: 16px;
}
body #c7-checkout .c7-link[href$="/customer/login"] {
	display: inline-flex;
	align-items: center;
	min-height: 44px;
	color: var(--sw-co-gold-on-light, #906A3C);
	text-decoration: underline;
}

/* --------------------------------------------------------------------------
   Form fields, labels, consent text, checkbox (D-K09, D-K10, D-K11, D-K12)
   -------------------------------------------------------------------------- */

/* Shared field fix (Lane B half of plan 5.8's c7-sec-1-8.css:548-556 row):
   the input/select/textarea focus border is #B98D58, 2.99:1 on white —
   below the 3:1 UI floor section 27 exists to enforce, and 27 deliberately
   left this one rule un-repointed. Tied in specificity with the existing
   (1,3,2) rule; wins on source order, same pattern the plan uses for the
   base field-border rule. */
body #c7-checkout .c7-form input:focus:not([disabled]),
body #c7-checkout .c7-form select:focus:not([disabled]),
body #c7-checkout .c7-form textarea:focus:not([disabled]) {
	border-color: var(--sw-co-gold-on-light, #906A3C);
}

/* D-K17 — THE MOST IMPORTANT RULE IN THIS FILE. Commerce7's own error
   border (`.c7-form input[aria-invalid='true']`, specificity (0,2,1)) is
   beaten by Sunstone's own field-border rules at (1,2,2)
   (c7-sec-1-8.css:519-547 and c7-sec-27-palette.css:163-178), so an invalid
   field never visibly changes colour — every field on steps 2-4 is affected
   whenever a customer submits something invalid. The `.c7-form__field`
   class bumps this past a tie, to (1,3,2), exactly as plan 5.4 specifies.
   Colour is Commerce7's own `--c7-error` red, aliased (not invented) —
   verified contrast 5.0:1 on #F9F8F4, 4.9:1 on #F4F1EA, both pass AA. */
body #c7-checkout .c7-form .c7-form__field input[aria-invalid='true'] {
	border-color: var(--sw-co-err, #CA0505);
	border-width: 2px;
}
body #c7-checkout .c7-form .c7-form__field input[aria-invalid='true']:focus-visible {
	box-shadow: 0 0 0 3px var(--sw-co-err-bg, #FFEBEB);
}
body #c7-checkout .c7-form__error {
	color: var(--sw-co-err, #CA0505);
	font-size: 16px;
	margin-top: 6px;
}
body #c7-checkout .c7-block__error {
	color: var(--sw-co-err, #CA0505);
}

/* D-K10: the consent line renders forced uppercase ("BY SUBSCRIBING YOU
   AGREE…") though the DOM holds it in sentence case. TRACED LIVE (not
   guessed) before writing this: neither target is a `label` element — the
   consent text is `p.c7-form__help` and the checkbox text is
   `span.c7-checkbox__label` — so c7-sec-1-8.css:581-590 (which matches only
   `label`) cannot be the source, confirmed by walking
   `document.styleSheets` against the live element: it found no matching
   rule in any same-origin sheet. The uppercase is coming from Commerce7's
   own commerce7.css bundle, which is cross-origin and unreadable via the
   CSSOM. CSS-only override; the string itself is untouched and stays
   verbatim (Q2 default a: sentence case, 16px, slate). D-K12 mitigation
   folded in here too: the `<p>` is inside `label.c7-checkbox`, so clicking
   the legal text silently toggles the subscription (not fixable in CSS,
   owner action O-3) — `cursor:default` at least stops it looking
   clickable. */
body #c7-checkout .c7-form .c7-checkbox .c7-form__help {
	text-transform: none;
	font-size: 16px;
	line-height: 1.5;
	color: var(--sw-co-slate, #545D5C);
	cursor: default;
	letter-spacing: normal; /* orchestrator: the forced-caps tracking read as spaced-out prose once the case was fixed */
}
/* Q2b alternative (sentence case, keep today's smaller size) — not shipped:
body #c7-checkout .c7-form .c7-checkbox .c7-form__help { text-transform: none; font-size: 12px; }
*/
/* Q2c alternative (leave uppercase = remove the rule above) — not shipped. */

body #c7-checkout .c7-form .c7-checkbox .c7-checkbox__label {
	text-transform: none;
	letter-spacing: normal; /* orchestrator: the label is the action, the consent line is its fine print */
	font-size: 16px;
	line-height: 1.5;
	color: var(--sw-co-ink, #242E35);
}

/* D-K11: the real control is the span — `before.json` confirms the input
   itself is zero-height (`INPUT. false h0`), by design. Greenfield: zero
   checkbox rules exist anywhere in sections 1-28. */
body #c7-checkout .c7-checkbox__control {
	display: inline-block;
	box-sizing: border-box;
	width: 24px;
	height: 24px;
	border: 2px solid var(--sw-co-slate, #545D5C);
	background: #FFFFFF;
	vertical-align: middle;
	position: relative;
}
body #c7-checkout .c7-checkbox input:checked + .c7-checkbox__control {
	background: var(--sw-co-ink, #242E35);
	border-color: var(--sw-co-ink, #242E35);
}
body #c7-checkout .c7-checkbox input:checked + .c7-checkbox__control::after {
	content: "";
	position: absolute;
	left: 6px;
	top: 1px;
	width: 6px;
	height: 12px;
	border: solid #FFFFFF;
	border-width: 0 2px 2px 0;
	transform: rotate(45deg);
}
/* Section 26b's ring list does not cover this span (it isn't natively
   focusable and carries no class 26b names), so this is the one new focus
   rule plan 5.7 permits. The second and last !important in this file (plan
   5.4 budget item 2): restates transition-property exactly as 26c does, in
   case Commerce7's own transition on this element would otherwise fade the
   ring in over time. */
body #c7-checkout .c7-checkbox input:focus-visible + .c7-checkbox__control {
	outline: 3px solid var(--sw-co-gold-on-light, #906A3C);
	outline-offset: 2px;
	box-shadow: 0 0 0 2px #FFFFFF;
	transition-property: color, background-color, border-color !important;
}

/* --------------------------------------------------------------------------
   Buttons (D-K19/D-K20/D-K21 Lane B halves, plan 5.6 button system)
   -------------------------------------------------------------------------- */

/* Plan 5.6: within cart+checkout the primary button fills ink by default
   (site-wide default is slate, which is reserved for hover) — a deliberate
   brand decision for this section, not tied to one defect id. The
   `#c7-checkout.c7-checkout` compound (both on the same element) bumps this
   past a tie with the existing (1,1,1) rule, to (1,2,1) — the same technique
   Lane A uses via `.c7-cart` to avoid relying on source order for buttons. */
body #c7-checkout.c7-checkout .c7-btn--primary {
	background: var(--sw-co-ink, #242E35);
	border-color: var(--sw-co-ink, #242E35);
	color: #FFFFFF;
}
body #c7-checkout.c7-checkout .c7-btn--primary:not([disabled]):hover {
	background: var(--sw-co-slate, #545D5C);
	border-color: var(--sw-co-slate, #545D5C);
	color: #FFFFFF;
}
/* D-K21: c7-sec-1-8.css:421-431 applies the HOVER colour on bare `:focus`
   too, so a mouse-clicked button sticks in the hover state. Restored to the
   DEFAULT fill for focus-that-is-not-keyboard-focus; `:focus-visible` itself
   is untouched — section 26b already draws its ring over whichever fill is
   current, and this section adds no competing ring on `.c7-btn`. */
body #c7-checkout.c7-checkout .c7-btn--primary:not([disabled]):focus:not(:focus-visible) {
	background: var(--sw-co-ink, #242E35);
	border-color: var(--sw-co-ink, #242E35);
	color: #FFFFFF;
}

/* Plan 5.6 secondary/"alt" (the coupon "Apply" is the one `.c7-btn--alt`
   on this surface): outlined ink, filled only on hover. */
body #c7-checkout.c7-checkout .c7-btn--alt {
	background: transparent;
	border-color: var(--sw-co-ink, #242E35);
	color: var(--sw-co-ink, #242E35);
}
body #c7-checkout.c7-checkout .c7-btn--alt:not([disabled]):hover {
	background: var(--sw-co-ink, #242E35);
	border-color: var(--sw-co-ink, #242E35);
	color: #FFFFFF;
}

/* D-K20: `opacity:.35` (c7-sec-1-8.css:455-459) renders white-on-slate at
   roughly 35% — unreadable. Replaced with an explicit disabled palette,
   scoped to checkout only (plan 5.8: other pages keep today's behaviour
   unless a future section changes it). Ties with the existing (1,3,1)
   #c7-content-scoped rule at the same weight once bumped with
   `.c7-checkout`, to (1,4,1) — a clean win, not a tie. */
body #c7-checkout.c7-checkout .c7-btn[disabled]:not(.c7-btn--loading) {
	opacity: 1;
	background: var(--sw-co-cream, #F4F1EA);
	border-color: var(--sw-co-field-border, #938F82);
	color: var(--sw-co-muted, #6E6E6E);
	cursor: not-allowed;
}

/* D-C03 (Lane B half): the coupon toggle lives inside `#c7-checkout-summary`,
   physically inside `#c7-checkout` and out of Lane A's `.c7-cart`/
   `.c7-side-cart` reach, even though it is the same defect Lane A fixes on
   the cart page. 20px plain text, black `stroke="#000000"` chevron (not a
   brand colour). Per plan section 4's state table, the chevron ROTATION on
   `[aria-expanded]` is Commerce7's own `.c7--rotate-180` utility — not
   redefined here (5.7 do-not-touch). */
body #c7-checkout .c7-form--coupon-code-container > button.c7-link {
	display: flex;
	align-items: center;
	justify-content: space-between;
	width: 100%;
	min-height: 48px;
	font-family: Alata, sans-serif;
	font-size: 12px;
	letter-spacing: 2px;
	text-transform: uppercase;
	color: var(--sw-co-slate, #545D5C);
}
body #c7-checkout .c7-form--coupon-code-container > button.c7-link svg {
	stroke: currentColor;
	width: 16px;
	height: 16px;
}

/* D-C16 (Lane B half): checkout's own coupon form repeats the cart's
   placeholder-as-label defect (`<label class="c7-required c7-sr-only">
   Coupon code</label>` with `placeholder="Coupon code"`) — again, physically
   inside `#c7-checkout`, out of Lane A's reach. Allowed reveal per plan 5.7;
   no new string, the label text already exists in the DOM. */
body #c7-checkout #c7-coupon-group label.c7-sr-only {
	position: static;
	display: block;
	width: auto;
	height: auto;
	margin: 0 0 6px;
	overflow: visible;
	clip: auto;
	white-space: normal;
	font-family: Alata, sans-serif;
	font-size: 12px;
	letter-spacing: 2px;
	text-transform: uppercase;
	color: var(--sw-co-slate, #545D5C);
}

/* --------------------------------------------------------------------------
   Order summary rail (D-K07, D-K08, D-K16, D-K24)
   -------------------------------------------------------------------------- */

/* D-K07: the panel's own `<h2>Order Summary</h2>` is `c7-sr-only`, so the
   rail opens on a bare "Edit Cart" link with no title. Allowed reveal per
   plan 5.7 (named by id, not a bare `.c7-sr-only` override). Gated to
   >=1024 per the plan: below that the mobile toggle already labels the
   panel "Order Summary". */
@media screen and (min-width: 1024px) {
	body #c7-checkout #c7-checkout__summary-container-label {
		position: static;
		width: auto;
		height: auto;
		margin: 0 0 16px;
		overflow: visible;
		clip: auto;
		white-space: normal;
		font-family: Alata, sans-serif;
		font-size: 13px;
		letter-spacing: 2px;
		text-transform: uppercase;
		color: var(--sw-co-slate, #545D5C);
	}
}

/* D-K08: "Edit Cart" is a 28px plain link. Gold-on-cream per the brand kit
   (the summary rail's ground is #F4F1EA, pairs with D-C09 on the cart). */
body #c7-checkout .c7-order-items__title a.c7-link {
	display: inline-flex;
	align-items: center;
	min-height: 44px;
	padding: 10px 2px;
	font-family: Alata, sans-serif;
	font-size: 12px;
	letter-spacing: 2px;
	text-transform: uppercase;
	color: var(--sw-co-gold-on-cream, #85602F);
}

/* D-K24: zero CSS rules exist anywhere in the Commerce7 bundle for either of
   these two hooks — claimed here as the primary typography hooks for the
   summary row labels and the mobile toggle title (below). */
body #c7-checkout .c7-order-summary__title {
	font-family: Alata, sans-serif;
	font-size: 12px;
	letter-spacing: 2px;
	text-transform: uppercase;
	color: var(--sw-co-slate, #545D5C);
}

/* D-K16: the "(805) 688-9463" callout was clipped at the bottom edge of the
   summary rail by a fixed-height/overflow trap — visible in
   vp-1440-co-top.png, the DESKTOP sidebar rail only. Let the rail size to
   its content and scroll as one with the page. Does not set `display` on
   this container (R-1 forbids that — `.c7--visible` forces `display:block
   !important` on it when the mobile panel opens) and does not touch
   `#c7-content`'s own inline position/z-index (5.7 do-not-touch).

   GATED TO >=1001px, found by screenshot review, not by a numeric check:
   below 1000px this container becomes C7's `position:absolute` mobile
   drawer (R-1), and `overflow:visible` there let the drawer's content
   spill out past its own background, bleeding the page behind it into
   view (confirmed in shots-b/390-state-summary-open-top.png before this
   gate was added). This rule's correctness depends on which C7 layout the
   container is in, so — per D-K18 — it uses C7's own 1000/1001 breakpoint,
   not the Sunstone type/spacing vocabulary. */
@media screen and (min-width: 1001px) {
	body #c7-checkout .c7-checkout__summary-container {
		height: auto;
		max-height: none;
		overflow: visible;
	}
}

/* --------------------------------------------------------------------------
   Legal footer (D-K09)
   -------------------------------------------------------------------------- */

/* D-K09: Prop 65 and the legal links render at 20px tall in a 12px font
   band. Never hidden, shortened or reworded. Owner (D154 Q3, 2026-10-20):
   "make it smaller" than the 15px first shipped -- 13px, still above the
   original 12px and in the same slate. */
body #c7-checkout .c7-prop65 p {
	font-size: 13px;
	line-height: 1.6;
	max-width: 72ch;
	color: var(--sw-co-slate, #545D5C);
}
/* Q3b alternative (16px, matching body exactly) — not shipped:
body #c7-checkout .c7-prop65 p { font-size: 16px; line-height: 1.6; max-width: 72ch; }
*/
/* the Prop65 link is mid-sentence inline text; inline-block + padding grows
   its own hit box to 44px without changing the surrounding text flow beyond
   the one line it sits on. */
body #c7-checkout .c7-prop65 p a {
	display: inline-block;
	min-height: 44px;
	padding: 14px 0;
	text-decoration: underline;
	color: var(--sw-co-ink, #242E35);
}
body #c7-checkout .c7-checkout__footer ul li a {
	display: inline-flex;
	align-items: center;
	min-height: 44px;
	padding: 4px 0;
	font-size: 16px;
	text-decoration: underline;
	color: var(--sw-co-ink, #242E35);
}

/* --------------------------------------------------------------------------
   Mobile summary toggle (D-M02)
   -------------------------------------------------------------------------- */

/* D-M02: renders as a thin gold-on-cream strip with a black system chevron;
   does not look pressable, and it is the only way to audit the order on a
   phone. Rotation on `[aria-expanded="true"]` is C7's own `.c7--rotate-180`
   utility (plan section 4 state table) — not redefined here. */
body #c7-checkout .c7-checkout-mobile__summary-toggle {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	width: 100%;
	min-height: 56px;
	padding: 10px 16px;
	background: var(--sw-co-cream, #F4F1EA);
	border-top: 1px solid var(--sw-co-field-border, #938F82);
	border-bottom: 1px solid var(--sw-co-field-border, #938F82);
}
body #c7-checkout .c7-checkout-mobile__summary-toggle__title {
	font-family: Alata, sans-serif;
	font-size: 16px;
	color: var(--sw-co-ink, #242E35);
}
body #c7-checkout .c7-checkout-mobile__summary-toggle__count {
	font-size: 16px;
	color: var(--sw-co-ink, #242E35);
}
body #c7-checkout .c7-checkout-mobile__summary-toggle__total {
	font-size: 16px;
	color: var(--sw-co-gold-on-cream, #85602F);
	margin-left: auto;
}
body #c7-checkout .c7-checkout-mobile__summary-toggle svg {
	stroke: currentColor;
	color: var(--sw-co-slate, #545D5C);
}

/* --------------------------------------------------------------------------
   Reduced motion (D-K22 Lane B half)
   -------------------------------------------------------------------------- */

/* commerce7.css ships no `prefers-reduced-motion` block at all, so
   `@keyframes spin` runs regardless of OS setting. The side cart's own
   transform transition is Lane A's half; this is the spinner wherever it
   can appear inside checkout (e.g. `.c7-btn--loading`). The `@keyframes
   spin` name itself is never redefined (5.7 do-not-touch) — only this
   scoped selector's `animation` property is turned off. */
@media (prefers-reduced-motion: reduce) {
	body #c7-checkout .c7-spinner::before {
		animation: none;
	}
}

/* 66.4 Orchestrator addendum. D-K17 parity on the cart page coupon field
   (Lane A handoff 1): the same Sunstone field-border rules that hide
   Commerce7's error border in checkout also hide it on the cart's coupon
   input, which does receive aria-invalid="true" on a rejected code. The id
   in the selector outranks the (1,2,2) field rules without !important. */
body #c7-content .c7-cart #c7-coupon-group input[aria-invalid='true'] {
	border-color: var(--sw-co-err, #CA0505);
	border-width: 2px;
}

/* ---- 66.5 Checkout delivery and payment (D154 Q1) ---- */
/* D156 67.5 M-01: the radio-card, Edit, "Add new ..." and saved-card rules below also
   serve the club "Change" modals (identical markup): `body :is(#c7-checkout, .c7-modal)`. */
/* ==========================================================================
   66.5 CHECKOUT, DELIVERY + PAYMENT STEPS (Lane E)
   --------------------------------------------------------------------------
   Scope discipline: every selector begins `body #c7-checkout`, the same
   scope 66.3 (Lane B, Customer step) uses. Nothing here redefines a 66.3
   rule; this section only reaches markup 66.3's class list never covers
   (`.c7-radio*`, `.c7-tabs`/`.c7-tab`, `.c7-notice`, `.c7-credit-card*`,
   `.c7-card-type`, `.c7-account-block__default`, the loyalty block) or
   finishes a cross-lane gap 66.3's own builder flagged but could not reach
   (D-C04 inside `#c7-checkout-summary`, HANDOFF-B).

   Tokens: none defined here (66.0 owns `:root`). Every colour is a
   `var(--sw-co-*, <literal fallback>)` read, same convention as 66.3.

   Specificity: no tie-break is needed anywhere in this section -- every
   rule either targets a class 66.3/67 never mention, or scopes narrower
   than 66.3's own generic `.c7-form__field`/`.c7-link` rules (which do not
   exist for these selectors), so plain `body #c7-checkout <selector>` wins
   outright without a bumped compound.

   !important budget: 0 (66.3 already spent its two; this section adds
   none).

   Breakpoints: D-K18 applies -- the delivery/payment layout itself does not
   flip at any width in these two steps (the tab switch and radio list are
   the same single-column shape from 1440 down to 360), so every rule below
   is type/spacing only and uses the Sunstone 1024/767 vocabulary where a
   breakpoint is needed at all.
   ========================================================================== */

/* --------------------------------------------------------------------------
   D-E-SUM01: the checkout summary rail repeats the cart's D-C04 defect
   (unlabelled EACH / QTY / TOTAL) inside #c7-checkout-summary. Lane B found
   this but could not reach it (its scope stops at #c7-checkout, and D-C04 is
   a Lane-A-numbered defect for a Lane-A-scoped container) -- see HANDOFF-B
   HANDOFFS. Reusing 66.1's technique, adapted to the real DOM read from the
   fixtures: the checkout summary's quantity label is a plain
   `<span class="c7-sr-only">`, not the `<label>` the cart page uses, so the
   selector is narrowed to match what is actually there instead of copying
   66.1's selector verbatim. This is still one of the three allowed reveals
   named in plan 5.7 (price / quantity / total), never a bare `.c7-sr-only`.
   -------------------------------------------------------------------------- */
body #c7-checkout #c7-checkout-summary .c7-order-item__price > .c7-sr-only,
body #c7-checkout #c7-checkout-summary .c7-order-item__quantity > .c7-sr-only,
body #c7-checkout #c7-checkout-summary .c7-order-item__total .c7-sr-only {
	position: static;
	width: auto;
	height: auto;
	margin: 0 0 4px;
	padding: 0;
	overflow: visible;
	clip: auto;
	clip-path: none;
	white-space: normal;
	display: block;
	font-family: "Alata", sans-serif;
	font-size: 12px;
	font-weight: 400;
	letter-spacing: 2px;
	text-transform: uppercase;
	color: var(--sw-co-slate, #545D5C);
}

/* --------------------------------------------------------------------------
   Delivery/Payment tabs (D-E-TAB01) -- Shipping/Pickup, Credit Card/other
   -------------------------------------------------------------------------- */

/* D-E-TAB01: confirmed live (diag-e2.py) -- unselected AND selected
   `.c7-tab` both render at 14px with `color: rgb(185,141,88)` (#B98D58),
   measured 3.0:1 on white, below the 4.5:1 floor for 14px text. #B98D58 is
   also the brand kit's ornament colour, which the brand system forbids as a
   text colour anywhere ("never a text colour", SHARED.md). This is almost
   certainly section 1's C7-token remap reaching further than intended, not
   a rule anyone wrote on purpose. Re-pointed to the same ink/gold-underline
   vocabulary the breadcrumbs already use (66.3 D-K02), so the two tab-like
   controls on this screen read as one family. */
body #c7-checkout .c7-tabs {
	display: flex;
	gap: 0;
	border-bottom: 1px solid var(--sw-co-rule, #DEDDD9);
	margin-bottom: 24px;
}
body #c7-checkout .c7-tab {
	flex: 1 1 0;
	box-sizing: border-box;
	min-height: 48px;
	padding: 14px 4px;
	border: 0;
	border-bottom: 2px solid transparent;
	background: transparent;
	font-family: "Alata", sans-serif;
	font-size: 12px;
	letter-spacing: 2px;
	text-transform: uppercase;
	color: var(--sw-co-slate, #545D5C);
}
body #c7-checkout .c7-tab[aria-selected='true'] {
	color: var(--sw-co-ink, #242E35);
	border-bottom-color: var(--sw-co-gold-on-light, #906A3C);
}

/* --------------------------------------------------------------------------
   Choice boxes (D-E-RAD01-04) -- shipping/pickup address, shipping method,
   saved credit card. `.c7-radio.c7-radio--box` and its `__label__*` parts.
   -------------------------------------------------------------------------- */

/* D-E-RAD01: confirmed live -- `.c7-radio--box` ships with no border and no
   background in either state, so a list of two or three boxes reads as one
   undifferentiated block of text; the only cue for which one is chosen is
   an 18px circle's border colour. Framed as a real card, with a visible
   selected state, matching the restrained-card language the rest of this
   file already uses (66.1's cart summary border, 67.1's drop-down border). */
body :is(#c7-checkout, .c7-modal) .c7-radio.c7-radio--box {
	border: 1px solid var(--sw-co-field-border, #938F82);
	margin-bottom: 12px;
	transition: border-color .2s ease, background-color .2s ease;
}
body :is(#c7-checkout, .c7-modal) .c7-radio.c7-radio--box:last-of-type {
	margin-bottom: 0;
}
body :is(#c7-checkout, .c7-modal) .c7-radio.c7-radio--box:has(input:checked) {
	border-color: var(--sw-co-ink, #242E35);
	background: var(--sw-co-cream-lt, #F9F8F4);
}

/* D-E-RAD02: confirmed live -- the only visual difference between a chosen
   and unchosen option is the 18px control's border colour (no fill, no
   dot). A colour-only, low-contrast distinction is also a reliance on the
   gold/grey border difference alone, which is not everyone's cue. Added an
   explicit ink dot for the checked state, same construction as 66.3's own
   checkbox fix (D-K11) one section up. */
/* `.c7-radio--box` is a flex row and Commerce7 gives this element its own
   `flex-basis` (confirmed live: an explicit `width` alone rendered 18x22,
   an ellipse, because flex-basis wins the main axis over `width`) -- `flex`
   pins both axes so the circle is actually round. */
/* D-E-RAD02 root cause, confirmed live with a debug outline: the real
   native `<input type="radio">` is sized 0x0 by Commerce7's own CSS, but
   Chromium still paints its native OS glyph at the input's default
   intrinsic size regardless of the 0x0 box, bleeding a second, off-centre
   dark blob behind the custom `.c7-radio__control` dot drawn below.
   `appearance: none` on the input (the same property this file's checkbox
   fix (66.3 D-K11) relies on implicitly via a zero-height input) removes
   the native glyph entirely; the input stays in the accessibility tree and
   keyboard/focus behaviour is unaffected. */
body :is(#c7-checkout, .c7-modal) .c7-radio input[type="radio"] {
	appearance: none;
	-webkit-appearance: none;
}
body :is(#c7-checkout, .c7-modal) .c7-radio__control {
	flex: 0 0 22px;
	box-sizing: border-box;
	width: 22px;
	height: 22px;
	border: 2px solid var(--sw-co-field-border, #938F82);
	border-radius: 50%;
	background: #FFFFFF;
	position: relative;
}
body :is(#c7-checkout, .c7-modal) .c7-radio input:checked + .c7-radio__control {
	border-color: var(--sw-co-ink, #242E35);
}
body :is(#c7-checkout, .c7-modal) .c7-radio input:checked + .c7-radio__control::after {
	content: "";
	position: absolute;
	top: 50%;
	left: 50%;
	width: 10px;
	height: 10px;
	margin: -5px 0 0 -5px;
	transform: none;
	border-radius: 50%;
	background: var(--sw-co-ink, #242E35);
}
/* Section 26b's ring list does not cover this element (same reasoning as
   66.3's checkbox ring, D-K11): it is not natively focusable and carries no
   class 26b names. */
body :is(#c7-checkout, .c7-modal) .c7-radio input:focus-visible + .c7-radio__control {
	outline: 3px solid var(--sw-co-gold-on-light, #906A3C);
	outline-offset: 2px;
	box-shadow: 0 0 0 2px #FFFFFF;
}

/* D-E-RAD03: confirmed live, two separate run-together-text bugs with the
   same cause -- the DOM has no space between a title and the badge/value
   that follows it ("Tyler Testing DO NOT SHIPDEFAULT", "UPS Ground$17.72").
   `justify-content: space-between` on the title row supplies the missing
   gap without touching the string. Also un-does `__title`/`__description`
   inheriting the box's own 12px uppercase tracked Alata -- a saved name and
   a street address are content, not a caption, the same distinction 66.3's
   D-K10 draws for the consent line. */
body :is(#c7-checkout, .c7-modal) .c7-radio__label {
	flex: 1 1 auto;
	display: grid;
	grid-template-columns: 1fr auto;
	column-gap: 16px;
	row-gap: 4px;
	align-items: center;
	width: 100%;
}
body :is(#c7-checkout, .c7-modal) .c7-radio__label__title {
	grid-column: 1;
	display: flex;
	flex-wrap: wrap;
	justify-content: space-between;
	align-items: baseline;
	gap: 4px 12px;
	font-family: "Cormorant Infant", serif;
	font-size: 18px;
	letter-spacing: normal;
	text-transform: none;
	color: var(--sw-co-ink, #242E35);
}
body :is(#c7-checkout, .c7-modal) .c7-radio__label__description {
	grid-column: 1;
	font-family: "Cormorant Infant", serif;
	font-size: 16px;
	letter-spacing: normal;
	text-transform: none;
	line-height: 1.5;
	color: var(--sw-co-slate, #545D5C);
}
body :is(#c7-checkout, .c7-modal) .c7-radio__label__default {
	font-family: "Alata", sans-serif;
	font-size: 12px;
	letter-spacing: 1.5px;
	text-transform: uppercase;
	color: var(--sw-co-gold-on-light, #906A3C);
}
body :is(#c7-checkout, .c7-modal) .c7-radio__label__value {
	font-family: "Alata", sans-serif;
	font-size: 16px;
	letter-spacing: normal;
	text-transform: none;
	color: var(--sw-co-ink, #242E35);
}
/* D-E-RAD04: the per-option "Edit" button (address, card) is a bare
   `.c7-link` at ~12px with no padding -- same affordance/target-size defect
   as the cart's "Remove" (D-C01) and this file's own "Edit Cart" (D-K08),
   same fix: Alata 12px uppercase, 44px hit box via padding, slate->gold on
   hover. Placed in its own grid column so it sits at the row's right edge
   and spans both the title and description rows. */
/* Commerce7 ships this button `position: absolute` (confirmed live,
   diag-e.py), pinned near the box's top-right corner regardless of
   document flow -- it overlaps the "Default" badge pushed to the same
   corner by the `justify-content: space-between` rule above. `position:
   static` returns it to normal flow so the grid placement below actually
   governs it; this is a plain affordance button, not a container Commerce7
   opens/closes with `.c7--hidden`/`.c7--visible`, so 5.7's position
   restriction does not apply here. */
body :is(#c7-checkout, .c7-modal) .c7-radio__label > button.c7-link {
	position: static;
	grid-column: 2;
	grid-row: 1 / -1;
	display: inline-flex;
	align-items: center;
	justify-content: flex-end;
	align-self: center;
	min-height: 44px;
	padding: 12px 2px;
	font-family: "Alata", sans-serif;
	font-size: 12px;
	letter-spacing: 2px;
	text-transform: uppercase;
	color: var(--sw-co-slate, #545D5C);
	white-space: nowrap;
}
body :is(#c7-checkout, .c7-modal) .c7-radio__label > button.c7-link:hover {
	color: var(--sw-co-gold-on-light, #906A3C);
	text-decoration: underline;
}

/* --------------------------------------------------------------------------
   Secondary link buttons (D-E-LNK01) -- Add new address, Add new card,
   Add a gift card, Add delivery instructions, Add gift message. All six
   share the same pre-existing defect: plain body text (20px Cormorant, the
   page default) with no Alata/uppercase treatment and no 44px hit box --
   same class of defect as D-C01/D-K08/D-M05 elsewhere in this file.
   -------------------------------------------------------------------------- */
body :is(#c7-checkout, .c7-modal) .c7-form--shipping-address > button.c7-link,
body :is(#c7-checkout, .c7-modal) .c7-form--creditCard > button.c7-link,
body :is(#c7-checkout, .c7-modal) .c7-link.c7-form__field,
body :is(#c7-checkout, .c7-modal) .c7-expand-link {
	display: inline-flex;
	align-items: center;
	min-height: 44px;
	padding: 12px 2px;
	font-family: "Alata", sans-serif;
	font-size: 12px;
	letter-spacing: 2px;
	text-transform: uppercase;
	color: var(--sw-co-slate, #545D5C);
}
body :is(#c7-checkout, .c7-modal) .c7-form--shipping-address > button.c7-link:hover,
body :is(#c7-checkout, .c7-modal) .c7-form--creditCard > button.c7-link:hover,
body :is(#c7-checkout, .c7-modal) .c7-link.c7-form__field:hover,
body :is(#c7-checkout, .c7-modal) .c7-expand-link:hover {
	color: var(--sw-co-gold-on-light, #906A3C);
	text-decoration: underline;
}

/* --------------------------------------------------------------------------
   Notices (D-E-NOT01) -- the shipping-signature note, the "secure and
   encrypted" payment notice.
   -------------------------------------------------------------------------- */

/* D-E-NOT01: `.c7-notice` ships with no background/padding, so it reads as
   a stray paragraph rather than a callout -- the same visual-weight problem
   D-C13/D-E02 solved for the cart's callout text, same fix reused. The
   secure-payment notice's inline SVG also carries a hard-coded
   `stroke="#000000"` (pure black, which the brand kit has nowhere) -- same
   pattern as D-C03's chevron, same fix (`stroke: currentColor`). */
body #c7-checkout .c7-notice {
	display: flex;
	align-items: flex-start;
	gap: 10px;
	background: var(--sw-co-cream-lt, #F9F8F4);
	padding: 16px;
	margin-bottom: 20px;
}
body #c7-checkout .c7-notice p {
	margin: 0;
	font-size: 16px;
	line-height: 1.5;
	color: var(--sw-co-slate, #545D5C);
}
body #c7-checkout .c7-notice svg {
	flex: 0 0 20px;
	width: 20px;
	height: 20px;
	margin-top: 2px;
	stroke: currentColor;
	color: var(--sw-co-slate, #545D5C);
}

/* --------------------------------------------------------------------------
   Saved credit card (D-E-CC01-02)
   -------------------------------------------------------------------------- */

/* D-E-CC01: confirmed live -- the same run-together-text bug as D-E-RAD03,
   different markup shape: `.c7-account-block__default`("Default") sits
   directly after "4242" with no DOM space, rendering "4242DEFAULT". A flex
   row with `gap` supplies the missing space; `.c7-card-type`'s existing
   rule-bordered logo box (c7-sec-1-8 territory, untouched) is left alone,
   only given room to breathe via `gap`. */
body :is(#c7-checkout, .c7-modal) .c7-credit-card {
	display: flex;
	align-items: center;
	gap: 16px;
}
body :is(#c7-checkout, .c7-modal) .c7-credit-card__number {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	gap: 4px 10px;
	margin: 0 0 2px;
	font-family: "Alata", sans-serif;
	font-size: 16px;
	letter-spacing: 1px;
	text-transform: none;
	color: var(--sw-co-ink, #242E35);
}
body :is(#c7-checkout, .c7-modal) .c7-account-block__default {
	font-family: "Alata", sans-serif;
	font-size: 12px;
	letter-spacing: 1.5px;
	text-transform: uppercase;
	color: var(--sw-co-gold-on-light, #906A3C);
}
/* D-E-CC02: the expiry line inherited the box's 20px/16px uppercase-tracked
   default with nothing of its own -- tightened to the same small Alata
   label treatment the rest of this section uses for secondary facts. */
body :is(#c7-checkout, .c7-modal) .c7-credit-card__expiry {
	margin: 0;
	font-family: "Alata", sans-serif;
	font-size: 12px;
	letter-spacing: 2px;
	text-transform: uppercase;
	color: var(--sw-co-slate, #545D5C);
}

/* --------------------------------------------------------------------------
   The hosted card iframe (D-E-PAY01, UNVERIFIED -- see lane-e-notes.md)
   -------------------------------------------------------------------------- */

/* D-E-PAY01: the fixture captures a member with a saved default card, so
   the "Add new card" state (where the processor's hosted iframe actually
   mounts) never renders here and cannot be screenshotted without typing
   into a live form, which is forbidden. Styled defensively, same posture
   D-K05 already proved safe for the Apple/Google Pay iframe one section up:
   size the WRAPPER so the frame sits full-width in the form, at the same
   rhythm as a text field, without reaching into the iframe's own interior. */
body #c7-checkout .c7-form--creditCard iframe {
	display: block;
	width: 100%;
	max-width: 100%;
}

/* --------------------------------------------------------------------------
   Loyalty points (D-E-LOY01)
   -------------------------------------------------------------------------- */

/* D-E-LOY01: the block has no separation from the card/gift-card list above
   it and its `<p role="heading" aria-level="2"><b>` fake-heading renders as
   plain 20px body prose, the same display scale as everything else on the
   step -- given the small-caps label treatment this file uses everywhere
   else for a block title (D-K24, D-E-LOY01's own sibling blocks). */
body #c7-checkout .c7-form--loyalty-points-container {
	padding-top: 16px;
	margin-top: 4px;
	border-top: 1px solid var(--sw-co-rule, #DEDDD9);
}
body #c7-checkout .c7-form--loyalty-points-container > p:first-child {
	margin: 0 0 8px;
	font-family: "Alata", sans-serif;
	font-size: 13px;
	letter-spacing: 2px;
	text-transform: uppercase;
	color: var(--sw-co-slate, #545D5C);
}
body #c7-checkout .c7-form--loyalty-points-container > p:first-child b {
	font-weight: 400;
}
body #c7-checkout .c7-form--loyalty-points-container > p:not(:first-child) {
	margin: 0;
	font-size: 16px;
	color: var(--sw-co-slate, #545D5C);
}

/* --------------------------------------------------------------------------
   Reduced motion (the one transition this section adds)
   -------------------------------------------------------------------------- */
@media (prefers-reduced-motion: reduce) {
	body :is(#c7-checkout, .c7-modal) .c7-radio.c7-radio--box {
		transition: none;
	}
}

/* ---- 66.6 Checkout review step, summary labels, 3-step breadcrumb (orchestrator, D154 Q1) ----
   Found in the orchestrator's live check of 66.5 on the real member checkout
   (delivery, payment, review opened by URL; nothing submitted).
   R-01  summary rail: 66.5's revealed labels sat inline in Commerce7's flex
         rows ("ITEM PRICE$45.00", "QUANTITY OF1"). Label on its own line for
         price; a word gap for quantity; pricing laid out as price / qty+total.
   R-02  review step: "Shipping"/"Payment" h2 at 40px beside the details and a
         plain 20px serif "Edit" (28px target) -- now the same block language
         as 66.5's choice cards: Alata label-size heading, 44px Edit action.
   R-03  44px targets without moving layout: completed breadcrumb steps (16px)
         and tel: links in address blocks (20-24px), by padding + equal
         negative margin on an inline-block.
   R-04  members have 3 steps, not 4: 66.3's 2x2 (flex-basis 50%) orphaned
         "3. Review" on phones. One row of three when there is no 4th step.
   R-05  the phone order-summary total was ornament gold (#B98D58) on cream:
         gold-on-cream text token instead. */

/* R-01 */
body #c7-checkout #c7-checkout-summary .c7-order-item__price {
	flex-wrap: wrap;
	column-gap: 8px;
}
body #c7-checkout #c7-checkout-summary .c7-order-item__price > .c7-sr-only {
	flex: 0 0 100%;
}
body #c7-checkout #c7-checkout-summary .c7-order-item__quantity > .c7-sr-only {
	margin: 0 6px 0 0;
}
body #c7-checkout #c7-checkout-summary .c7-order-item__pricing {
	align-items: flex-end;
	column-gap: 28px;
}

/* R-02 */
body #c7-checkout .c7-checkout__review-block {
	padding: 20px 24px;
	border: 1px solid var(--sw-co-rule, #DEDDD9);
	background: #FFFFFF;
	column-gap: 24px;
	align-items: start;
}
body #c7-checkout .c7-checkout__review-block + .c7-checkout__review-block {
	margin-top: 12px;
}
body #c7-checkout .c7-checkout__review-block > .c7-h2 {
	margin: 4px 0 0;
	font-family: "Alata", sans-serif;
	font-size: 12px;
	line-height: 1.4;
	font-weight: 400;
	letter-spacing: 2px;
	text-transform: uppercase;
	color: var(--sw-co-ink, #242E35);
}
body #c7-checkout .c7-checkout__review__details__shipping-address p,
body #c7-checkout .c7-checkout__review__details__shipping-method p {
	font-size: 18px;
	line-height: 1.5;
	color: var(--sw-co-ink, #242E35);
}
body #c7-checkout .c7-checkout__review__details__empty-message p {
	font-size: 16px;
	color: var(--sw-co-slate, #545D5C);
}
body #c7-checkout .c7-checkout__review-block > a.c7-link {
	display: inline-flex;
	align-items: center;
	align-self: start;
	min-height: 44px;
	margin-top: -12px;
	padding: 0 4px;
	font-family: "Alata", sans-serif;
	font-size: 12px;
	letter-spacing: 2px;
	text-transform: uppercase;
	text-decoration: none;
	color: var(--sw-co-ink, #242E35);
}
body #c7-checkout .c7-checkout__review-block > a.c7-link:hover {
	color: var(--sw-co-gold-on-light, #906A3C);
}

/* R-03 */
body #c7-checkout .c7-breadcrumbs li.c7-completed > a,
body #c7-checkout a[href^="tel:"] {
	display: inline-block;
	padding-block: 14px;
	margin-block: -14px;
}

/* R-04 */
body #c7-checkout .c7-checkout__header--mobile .c7-breadcrumbs ol:not(:has(> li:nth-child(4))) > li {
	flex-basis: 33.333%;
}
@media screen and (max-width: 380px) {
	body #c7-checkout .c7-checkout__header--mobile .c7-breadcrumbs ol:not(:has(> li:nth-child(4))) > li {
		letter-spacing: 1px;
	}
}

/* R-05 */
body #c7-checkout .c7-checkout-mobile__summary-toggle__total {
	color: var(--sw-co-gold-on-cream, #85602F);
}

/* ---- 66.7 Phone order-summary drawer + quantity mark (orchestrator, D154) ----
   S-01  At <=1000px Commerce7 opens the summary as an absolute overlay
         (z-index 100) that ends mid-form, cutting the next heading in half
         ("Shipping Method") with the rest of the form running on beneath it.
         Its wrapper is already a flex column with the summary ordered first
         (order:-1), so only while it is OPEN it is put back in the flow: the
         form moves down below it instead of being covered. Closed, nothing
         changes (Commerce7's display:none stands; .c7--visible is not
         redefined). `flex:none` stops the 400px flex-basis becoming a height.
         Uses C7's own 1000/1001 breakpoint (D-K18).
   S-02  Commerce7 prints a "✕" before each summary quantity ("✕ 1"); with the
         66.5 label revealed it read "✕ QUANTITY OF 1". The label replaces it. */

/* S-01 */
@media screen and (max-width: 1000px) {
	body #c7-checkout .c7-checkout__summary-container.c7--visible {
		position: relative;
		top: auto;
		flex: none;
		width: 100%;
		box-shadow: none;
		border-bottom: 1px solid var(--sw-co-rule, #DEDDD9);
		margin-bottom: 8px;
	}
}

/* S-02 */
body #c7-checkout #c7-checkout-summary .c7-order-item__quantity::before {
	content: none;
}
body #c7-checkout #c7-checkout-summary .c7-order-item__quantity {
	margin-left: 0; /* C7's 5px offset existed for the removed mark */
}

/* ==== END 66 ==== */

/* ==========================================================================
   67. COMMERCE7 MEMBER ACCOUNT (D156) -- header account menu + C7 modals
   --------------------------------------------------------------------------
   WHAT. 67.0 the signed-in account icon; 67.1 the account drop-down; 67.2 every
         Commerce7 modal (Create an Account after a club join, Change
         Password, address book, card, the club skip/ship/frequency modals).
   WHY.  67.1: section 46's `#c7-account a { color:#FFF }` (written for the
         name link on the dark header) also reaches the links inside the
         white drop-down, so the member's name, Dashboard, Order History,
         Account Details and Log out render white on white; only the hovered
         row shows (stock grey chip). 67.2: modals render into <body>,
         outside #c7-content, so the Sunstone field and button rules never
         reach them -- every unfocused field has a white border on white
         (invisible), 30px of left padding floats the password dots away
         from their label, and the actions are gold text at 2.6:1.
   RULES. Scopes: `body #c7wp-cart-box #c7-account .c7-user-nav__account__dropdown`
         and `body .c7-modal`. No display/position/visibility changes on
         C7's own open/close containers (.c7--visible forces display:block).
         No new strings, no new colours (tokens from 66.0 with fallbacks),
         no !important.
   REVERT. Delete this section and run bin/sync-live.sh.
   ========================================================================== */

/* 67.0 Signed-in account trigger ------------------------------------------
   Signed in, Commerce7 swaps the person icon for the text "Hello <name>"
   (128px). Beside the gold Reserve button it overlapped by 14px at 1440 and
   by up to 65px at 1280/1025. Keep the signed-out treatment (section 46): the
   same 44px person icon, the greeting kept as the link's accessible name
   (font-size 0 hides it visually, not from assistive tech). The drop-down
   still opens on hover/focus and leads with the member's name. */
body #c7wp-cart-box #c7-account a.c7-user-nav__account__name {
	position: relative;
	display: inline-block;
	box-sizing: border-box;
	width: 44px;
	min-width: 44px;
	height: 44px;
	padding: 0;
	overflow: hidden;
	white-space: nowrap;
	font-size: 0;
	letter-spacing: 0;
	color: #FFFFFF;
	vertical-align: middle;
	transition: color .2s ease;
}
body #c7wp-cart-box #c7-account a.c7-user-nav__account__name > svg {
	display: none;
}
body #c7wp-cart-box #c7-account a.c7-user-nav__account__name::before {
	content: "";
	position: absolute;
	inset: 0;
	margin: auto;
	width: 22px;
	height: 22px;
	background-color: currentColor;
	-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='round'%3E%3Ccircle cx='12' cy='8' r='4'/%3E%3Cpath d='M4 21c0-4.4 3.6-7 8-7s8 2.6 8 7'/%3E%3C/svg%3E") center / contain no-repeat;
	mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='round'%3E%3Ccircle cx='12' cy='8' r='4'/%3E%3Cpath d='M4 21c0-4.4 3.6-7 8-7s8 2.6 8 7'/%3E%3C/svg%3E") center / contain no-repeat;
}
body #c7wp-cart-box #c7-account a.c7-user-nav__account__name:hover,
body #c7wp-cart-box #c7-account a.c7-user-nav__account__name[aria-expanded='true'] {
	color: var(--sun-gold-ornament, #B98D58);
}
@media (prefers-reduced-motion: reduce) {
	body #c7wp-cart-box #c7-account a.c7-user-nav__account__name { transition: none; }
}

/* 67.1 Header account drop-down -------------------------------------------
   Specificity: section 46's rule is (2,1,2); every rule here is >= (2,1,3)
   or (2,2,2). */
body #c7wp-cart-box #c7-account .c7-user-nav__account__dropdown {
	box-sizing: border-box;
	width: 300px;
	max-width: calc(100vw - 24px);
	background: #FFFFFF;
	border: 1px solid var(--sw-co-rule, #DEDDD9);
	border-radius: 0;
	box-shadow: 0 14px 36px rgba(36, 46, 53, .14);
	text-align: left;
}
body #c7wp-cart-box #c7-account .c7-user-nav__account__dropdown__header {
	padding: 22px 24px 18px;
}
body #c7wp-cart-box #c7-account .c7-user-nav__account__dropdown__header p {
	margin: 0;
}
/* the member's name: the one serif line in the panel, sentence case as stored */
body #c7wp-cart-box #c7-account .c7-user-nav__account__dropdown__header p a {
	display: block;
	min-height: 0;
	padding: 0;
	font-family: inherit;
	font-size: 22px;
	line-height: 1.25;
	letter-spacing: normal;
	text-transform: none;
	color: var(--sw-co-ink, #242E35);
	overflow-wrap: anywhere;
	background: transparent;
}
/* the email: lower case as typed, never tracked capitals */
body #c7wp-cart-box #c7-account .c7-user-nav__account__dropdown__header p a span {
	display: block;
	margin-top: 6px;
	font-family: inherit;
	font-size: 16px;
	line-height: 1.4;
	letter-spacing: normal;
	text-transform: none;
	color: var(--sw-co-slate, #545D5C);
	overflow-wrap: anywhere;
}
body #c7wp-cart-box #c7-account .c7-user-nav__account__dropdown__header p a:hover {
	color: var(--sw-co-gold-on-light, #906A3C);
}
body #c7wp-cart-box #c7-account .c7-user-nav__account__dropdown ul {
	margin: 0;
	padding: 8px 0;
	list-style: none;
	border-top: 1px solid var(--sw-co-rule, #DEDDD9);
	border-bottom: 1px solid var(--sw-co-rule, #DEDDD9);
}
body #c7wp-cart-box #c7-account .c7-user-nav__account__dropdown ul li {
	margin: 0;
	padding: 0;
}
body #c7wp-cart-box #c7-account .c7-user-nav__account__dropdown ul li a {
	display: flex;
	align-items: center;
	box-sizing: border-box;
	width: 100%;
	min-height: 44px;
	padding: 0 24px;
	font-family: "Alata", sans-serif;
	font-size: 12px;
	letter-spacing: 2px;
	text-transform: uppercase;
	color: var(--sw-co-ink, #242E35);
	background: transparent;
	border-radius: 0;
	margin: 0; /* C7's own 10px inset pushed the links off the name's left edge */
	transition: color .2s, background-color .2s;
}
body #c7wp-cart-box #c7-account .c7-user-nav__account__dropdown ul li a:hover,
body #c7wp-cart-box #c7-account .c7-user-nav__account__dropdown ul li a:focus-visible {
	background: var(--sw-co-cream, #F4F1EA);
	color: var(--sw-co-gold-on-cream, #85602F);
}
body #c7wp-cart-box #c7-account .c7-user-nav__account__dropdown a.c7-user-nav__account__dropdown__logout {
	display: flex;
	align-items: center;
	gap: 10px;
	box-sizing: border-box;
	width: 100%;
	min-height: 52px;
	margin: 0;
	padding: 0 24px;
	font-family: "Alata", sans-serif;
	font-size: 12px;
	letter-spacing: 2px;
	text-transform: uppercase;
	color: var(--sw-co-slate, #545D5C);
	background: transparent;
	text-decoration: none;
	transition: color .2s, background-color .2s;
}
body #c7wp-cart-box #c7-account .c7-user-nav__account__dropdown a.c7-user-nav__account__dropdown__logout:hover,
body #c7wp-cart-box #c7-account .c7-user-nav__account__dropdown a.c7-user-nav__account__dropdown__logout:focus-visible {
	background: var(--sw-co-cream, #F4F1EA);
	color: var(--sw-co-gold-on-cream, #85602F);
}
body #c7wp-cart-box #c7-account .c7-user-nav__account__dropdown a.c7-user-nav__account__dropdown__logout svg {
	width: 18px;
	height: 18px;
	flex: 0 0 18px;
}
@media (prefers-reduced-motion: reduce) {
	body #c7wp-cart-box #c7-account .c7-user-nav__account__dropdown a { transition: none; }
}

/* 67.2 Commerce7 modals ----------------------------------------------------- */
body .c7-modal .c7-modal__header {
	align-items: center;
	padding: 24px 20px 12px 28px;
}
body .c7-modal .c7-modal__header .c7-h1 {
	margin: 0;
	font-size: 30px;
	line-height: 1.2;
	text-transform: none;
	color: var(--sw-co-ink, #242E35);
}
/* close: a real 44px target (was 24px wide) */
body .c7-modal .c7-modal__header > button {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	flex: 0 0 44px;
	width: 44px;
	height: 44px;
	padding: 0;
	color: var(--sw-co-ink, #242E35);
	background: transparent;
}
body .c7-modal .c7-modal__content {
	padding: 0 28px 28px;
}
body .c7-modal .c7-form__required-fields-notice,
body .c7-modal .c7-form__help {
	font-size: 16px;
	line-height: 1.5;
	color: var(--sw-co-slate, #545D5C);
}
body .c7-modal .c7-form__help {
	padding-top: 6px;
}
body .c7-modal .c7-form__field {
	margin-bottom: 20px;
}
body .c7-modal .c7-form label:not(.c7-radio):not(.c7-checkbox) {
	padding: 0 0 8px;
	font-family: "Alata", sans-serif;
	font-size: 12px;
	letter-spacing: 2px;
	text-transform: uppercase;
	color: var(--sw-co-ink, #242E35);
}
/* fields: visible box, text starts at the label's edge. (0,5,3) beats the
   Elementor kit's (0,3,1)/(0,4,1) input rules that set the white border. */
body .c7-modal .c7-form :is(input:not([type=checkbox]):not([type=radio]):not([type=hidden]), select, textarea) {
	box-sizing: border-box;
	width: 100%;
	min-height: var(--sw-co-ctl-h, 48px);
	padding: 12px 16px;
	font-size: 18px;
	color: var(--sw-co-ink, #242E35);
	background: #FFFFFF;
	border: 1px solid var(--sw-co-field-border, #938F82);
	border-radius: 0;
	box-shadow: none;
}
body .c7-modal .c7-form :is(input:not([type=checkbox]):not([type=radio]):not([type=hidden]), select, textarea):focus {
	border-color: var(--sw-co-gold-on-light, #906A3C);
}
/* (0,7,3): must outrank the field rule above, which is (0,5,3) */
body .c7-modal .c7-form .c7-form__field :is(input:not([type=checkbox]):not([type=radio]):not([type=hidden]), select, textarea)[aria-invalid='true'] {
	border-color: var(--sw-co-err, #CA0505);
	border-width: 2px;
}
body .c7-modal .c7-form__error,
body .c7-modal .c7-block__error {
	margin-top: 6px;
	font-size: 16px;
	color: var(--sw-co-err, #CA0505);
}
/* actions: one filled primary, one outlined secondary, both 48px */
body .c7-modal .c7-form__buttons {
	gap: 12px;
	justify-content: flex-end;
	flex-wrap: wrap;
	margin-top: 8px;
}
body .c7-modal .c7-btn.c7-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	box-sizing: border-box;
	min-height: var(--sw-co-ctl-h, 48px);
	padding: 14px 24px;
	border: 1px solid transparent;
	border-radius: 0;
	font-family: "Alata", sans-serif;
	font-size: 13px;
	font-weight: 400;
	letter-spacing: 2px;
	text-transform: uppercase;
	text-decoration: none;
	cursor: pointer;
	transition: color .3s, background-color .3s, border-color .3s;
}
body .c7-modal .c7-btn.c7-btn--primary {
	background: var(--sw-co-ink, #242E35);
	border-color: var(--sw-co-ink, #242E35);
	color: #FFFFFF;
}
body .c7-modal .c7-btn.c7-btn--primary:not([disabled]):hover {
	background: var(--sw-co-slate, #545D5C);
	border-color: var(--sw-co-slate, #545D5C);
	color: #FFFFFF;
}
body .c7-modal .c7-btn.c7-btn--alt {
	background: transparent;
	border-color: var(--sw-co-ink, #242E35);
	color: var(--sw-co-ink, #242E35);
}
body .c7-modal .c7-btn.c7-btn--alt:not([disabled]):hover {
	background: var(--sw-co-ink, #242E35);
	color: #FFFFFF;
}
body .c7-modal .c7-btn.c7-btn[disabled]:not(.c7-btn--loading) {
	opacity: 1;
	background: var(--sw-co-cream, #F4F1EA);
	border-color: var(--sw-co-field-border, #938F82);
	color: var(--sw-co-muted, #6E6E6E);
	cursor: not-allowed;
}
@media (max-width: 480px) {
	body .c7-modal .c7-modal__header { padding: 20px 12px 8px 20px; }
	body .c7-modal .c7-modal__header .c7-h1 { font-size: 26px; }
	body .c7-modal .c7-modal__content { padding: 0 20px 24px; }
	/* primary on top, both full width */
	body .c7-modal .c7-form__buttons { flex-direction: column-reverse; }
	body .c7-modal .c7-form__buttons .c7-btn.c7-btn { width: 100%; }
}
@media (prefers-reduced-motion: reduce) {
	body .c7-modal .c7-btn.c7-btn { transition: none; }
}

/* ---- 67.3 Member sign-in screens (D156) ---- */
/* ==========================================================================
   67.3 MEMBER SIGN-IN SCREENS (D156) -- signed-out /profile/* account screens
   --------------------------------------------------------------------------
   Screens: /profile/login, /forgot-password, /create-account, /magic-link,
            /reset-password-link-error, /account-activation-error. All six
            render the same Commerce7 root, confirmed live:
            `section.c7-content.c7-account-login`, inside `body #c7-content`
            (not inside `.c7-account` consistently -- activation-error omits
            that wrapper -- so the scope used throughout is
            `body #c7-content .c7-account-login`, never the wrapper).
   TOKENS. Reuses the `--sw-co-*` primitives Lane A defines at 66.0. This
            section defines none of its own, per plan precedent (66.3/67.2).
   REVERT. Delete this section and run bin/sync-live.sh.
   ========================================================================== */

/* --------------------------------------------------------------------------
   LC-01. Heading. `#c7-content h1.c7-h1` (c7-sec-1-8.css:124-130) is 62px,
   centred, and shrinks only via Elementor's own responsive kit variable
   (50px at tablet, 32px at phone -- confirmed live, not written by this
   file). A 62/50px centred heading over a left-aligned 500px-wide form
   reads oversized and unbalanced -- the same defect class as checkout's
   D-K04, same fix: flatten to two fixed sizes, left-align so it lines up
   with the fields and links below it. Beats the unconditional (1,1,1) base
   rule at (1,2,1) via the extra `.c7-account-login` class. Chrome above the
   form (logo, nav) is untouched; only the in-form heading moves. */
body #c7-content .c7-account-login h1.c7-h1 {
	text-align: left;
	font-size: 32px;
	margin-bottom: 20px;
}
@media screen and (max-width: 767px) {
	body #c7-content .c7-account-login h1.c7-h1 {
		font-size: 26px;
	}
}

/* --------------------------------------------------------------------------
   LC-02. Facebook sign-in button. Live-measured at 1440: the Facebook
   button renders 54.8px tall in the site's default (unstyled-variant) fill
   -- `#F9F8F4` cream background, slate text -- because `.c7-btn--facebook`
   matches only the bare `.c7-btn` rule (c7-sec-1-8.css:389+), not
   `--primary` or `--alt`. Google's own widget directly beneath it renders a
   fixed 40px `div[role="button"]` (Google-owned markup, cannot be styled --
   confirmed live, out of reach per brief). 40px is below this project's own
   44px control floor, so matching it exactly would import that shortfall
   into a control we DO own; the closest compliant height is the brand's own
   48px standard control height (matches 66.0/67.2's `--sw-co-ctl-h`, same
   height as every field and primary/secondary button on these screens), the
   nearest number to Google's 40px this project can ship without breaking
   its own floor. Recoloured to the brand's outlined-ink secondary (the
   system's only other button face besides filled-ink primary) instead of
   the off-system cream fill; the Facebook glyph keeps its brand blue
   (#1877F2, inline in the SVG, untouched -- that is brand identification,
   not a new colour this file introduces). Width is untouched: Commerce7
   already hard-codes 350px / `max-width:400px` / `min-width:min-content` on
   both buttons, confirmed equal at every width down to 360px. */
body #c7-content .c7-account-login .c7-btn--facebook {
	box-sizing: border-box;
	min-height: var(--sw-co-ctl-h, 48px);
	padding: 0 20px;
	background: transparent;
	border-color: var(--sw-co-ink, #242E35);
	color: var(--sw-co-ink, #242E35);
}
body #c7-content .c7-account-login .c7-btn--facebook:not([disabled]):hover {
	background: var(--sw-co-ink, #242E35);
	color: #FFFFFF;
}

/* LC-03. Live-measured at 360px: "Sign in with Facebook" wraps to two
   lines inside the fixed-width button (the 27px side padding from the base
   `.c7-btn` rule leaves too little room), so the button is 54.8px tall at
   390px and 71.6px at 360px -- an inconsistent height between two adjacent
   required widths. `white-space: nowrap` plus the smaller label size this
   file's other small buttons already use (c7-sec-1-8.css's
   `--primary--small` pattern) keeps it on one line and at the 48px height
   LC-02 sets. */
@media screen and (max-width: 480px) {
	body #c7-content .c7-account-login .c7-btn--facebook {
		padding: 0 14px;
		font-size: 12px;
		letter-spacing: 2px;
	}
	body #c7-content .c7-account-login .c7-btn--facebook span {
		white-space: nowrap;
	}
}

/* --------------------------------------------------------------------------
   LC-04. "Forgot your password?" sits alone in its own paragraph (not
   embedded in a sentence with other text), so WCAG 2.5.5's inline-target
   exception does not apply to it the way it does to the "Create one" /
   "Log in" links below (those stay untouched -- their size is genuinely
   constrained by surrounding sentence text, the exception's own wording).
   Live-measured: 142 x 20px, well under the 44px floor. */
body #c7-content .c7-account-login .c7-account-login__password-options a.c7-link {
	display: inline-flex;
	align-items: center;
	min-height: 44px;
}

/* --------------------------------------------------------------------------
   LC-05. D-K17's own defect class, confirmed again on these forms.
   Commerce7's `.c7-form input[aria-invalid='true']` is (0,2,1); Sunstone's
   14-selector field-border list (c7-sec-1-8.css:519-547) is (1,2,2) and
   wins, so a rejected email/password/full-name/confirm-password field shows
   the error text but never changes its own border. Same fix as 66.4 and the
   checkout section: add the `.c7-account-login` class to clear the tie
   outright, (1,3,2). Colour is Commerce7's own `--c7-error` red, aliased. */
body #c7-content .c7-account-login .c7-form input[aria-invalid='true'] {
	border-color: var(--sw-co-err, #CA0505);
	border-width: 2px;
}
body #c7-content .c7-account-login .c7-form input[aria-invalid='true']:focus-visible {
	box-shadow: 0 0 0 3px var(--sw-co-err-bg, #FFEBEB);
}
/* LC-06. The inline error text under a field carries no Sunstone colour or
   size rule on these screens; stated explicitly rather than left to
   whatever Commerce7 ships today, same as 67.2 and the checkout section. */
body #c7-content .c7-account-login .c7-form__error {
	color: var(--sw-co-err, #CA0505);
	font-size: 16px;
	margin-top: 6px;
}

/* --------------------------------------------------------------------------
   LC-07. The expired-link screens (reset-password-link-error,
   account-activation-error) show `.c7-message.c7-message--alert-error` in
   exactly the same neutral cream box (`#F9F8F4`, 1px `#DEDDD9`,
   c7-sec-1-8.css:651-657) as any informational notice would use -- no
   modifier rule exists anywhere in the bundle for `--alert-error`. A member
   landing here on a dead link gets no visual severity cue that anything
   failed. Retinted with the brand's own error pair (not a new colour); the
   inline SVG's `stroke="#000"` attribute is overridden the same way the
   `currentColor` pattern elsewhere in this file expects. No text changes --
   the legal/explanatory copy and its link stay exactly as shipped. */
body #c7-content .c7-account-login .c7-message--alert-error {
	background: var(--sw-co-err-bg, #FFEBEB);
	border-color: var(--sw-co-err, #CA0505);
	color: var(--sw-co-err, #CA0505);
}
body #c7-content .c7-account-login .c7-message--alert-error svg {
	stroke: var(--sw-co-err, #CA0505);
}
body #c7-content .c7-account-login .c7-message--alert-error a.c7-link {
	color: var(--sw-co-err, #CA0505);
	text-decoration: underline;
}

/* --------------------------------------------------------------------------
   LC-08. The secondary "Cancel" button (forgot-password, magic-link) is the
   site default `.c7-btn--alt` -- slate (`#545D5C`) outline and text
   (c7-sec-1-8.css's `--c7-alt-button-text-color`) -- not the brand's
   outlined-ink secondary the brief's button system calls for. Same
   specificity technique as LC-01/02: the `.c7-account-login` class clears
   the existing (0,2,1)-ish tie cleanly. */
body #c7-content .c7-account-login .c7-btn--alt {
	border-color: var(--sw-co-ink, #242E35);
	color: var(--sw-co-ink, #242E35);
}
body #c7-content .c7-account-login .c7-btn--alt:not([disabled]):hover {
	background: var(--sw-co-ink, #242E35);
	color: #FFFFFF;
}

/* --------------------------------------------------------------------------
   LC-09. Live-measured at 360-768px (Commerce7 stacks `.c7-form__buttons`
   to a column below ~1000px, its own layout flip): "Cancel" renders at
   x:30/width:300, "Send Reset Email" at x:40/width:290 directly below it --
   a leftover ~10px left margin from the row layout's button-to-button
   spacing that was never zeroed for the stacked state, so the primary
   button reads indented and narrower than the secondary one above it.
   Replaced the margin-based gap with an explicit `gap`, same pattern 67.2
   uses for its modal actions; margin zeroed on both buttons so neither
   layout (row or column) carries a stray offset. */
body #c7-content .c7-account-login .c7-form__buttons {
	gap: 12px;
}
body #c7-content .c7-account-login .c7-form__buttons .c7-btn {
	margin: 0;
}

/* --------------------------------------------------------------------------
   LC-10. Create-account's "Subscribe to receive emails" checkbox.
   `.c7-checkbox__control` carries no Sunstone rule anywhere in sections
   1-28 (greenfield, same gap plan 5.8/D-K11 found on checkout's identical
   component) and is absent from section 26b's focus-ring list (it is a
   `<span>`, not natively focusable, and 26b does not name it). Styled to
   match the exact precedent already shipped for this same Commerce7
   component in the checkout section: ink fill + white check when checked,
   one ring rule restating `transition-property` to defeat
   c7-sec-1-8.css:410's `transition: all .3s !important`, same as 26c and
   the checkout section's own checkbox ring (plan 5.4's `!important` budget
   is scoped per-section; this is this section's one and only use, for the
   same documented reason). */
body #c7-content .c7-account-login .c7-checkbox__control {
	box-sizing: border-box;
	position: relative;
	width: 20px;
	height: 20px;
	border: 1px solid var(--sw-co-field-border, #938F82);
	background: #FFFFFF;
}
body #c7-content .c7-account-login .c7-checkbox input:checked + .c7-checkbox__control {
	background: var(--sw-co-ink, #242E35);
	border-color: var(--sw-co-ink, #242E35);
}
body #c7-content .c7-account-login .c7-checkbox input:checked + .c7-checkbox__control::after {
	content: "";
	position: absolute;
	left: 6px;
	top: 2px;
	width: 5px;
	height: 10px;
	border: solid #FFFFFF;
	border-width: 0 2px 2px 0;
	transform: rotate(45deg);
}
body #c7-content .c7-account-login .c7-checkbox input:focus-visible + .c7-checkbox__control {
	outline: 3px solid var(--sw-co-gold-on-light, #906A3C);
	outline-offset: 2px;
	box-shadow: 0 0 0 2px #FFFFFF;
	transition-property: color, background-color, border-color !important;
}

/* --------------------------------------------------------------------------
   LC-11. Sentence-embedded links fail axe `link-in-text-block` (SC 1.4.1):
   confirmed live via axe-core on login ("Create one"), create-account
   ("Log in") and activation-error ("Request a new password..."):
   `.c7-link` text is ink #242E35 on slate #545D5C body text, 2.04:1, and no
   underline, so colour alone is what tells link from prose. This is the
   exact defect the site already has a fix for -- section 36 underlines it
   for `.elementor-widget-text-editor`/`.page-content` prose and
   `#c7-content .c7-error-page p a`, and 42b repeats it for Gravity Forms
   consent text -- but neither selector list reaches `.c7-account-login`,
   a different Commerce7 root class. Same fix, same values, extended to this
   scope. "Forgot your password?" (LC-04) and the alert-error link (LC-07,
   already underlined there) also match this selector; underlining them too
   is harmless and consistent with section 36's own pattern, not a new
   decoration this file invents. */
body #c7-content .c7-account-login p a.c7-link:not(.c7-btn) {
	text-decoration: underline;
	text-decoration-thickness: 1px;
	text-underline-offset: 0.18em;
}

@media (prefers-reduced-motion: reduce) {
	body #c7-content .c7-account-login .c7-btn--facebook,
	body #c7-content .c7-account-login .c7-btn--alt {
		transition: none;
	}
}

/* ---- 67.4 Member account area (D156) ---- */
/* ==========================================================================
   67.4 MEMBER ACCOUNT AREA (D156)
   --------------------------------------------------------------------------
   Scope: `body #c7-content .c7-account` and the `.c7-account-*` blocks
   inside it (Dashboard, Account Details, Saved Addresses, Saved Credit
   Cards, Club Memberships list, Order History, Loyalty, Reservations,
   Allocations) — every screen in BRIEF-D.md's table. Club membership detail
   (/club-membership/:id) and the shipment editor are a later lane.

   Modals: 67.2 already owns every `.c7-modal`'s header, fields and buttons.
   This section adds only the content 67.2 does not reach inside the club
   "Change" modals — the saved-address/card picker radio boxes and the
   cancel-reason radios — scoped `body .c7-modal .c7-radio`, per BRIEF-D's
   allowance. The personal/password/address/card modals (67.2's own) and the
   cancel modal's two buttons were checked against this brief and need no
   change: "NEVER MIND" already renders `c7-btn--primary` (the easy, filled
   way out) and "CONTINUE CANCELLATION" already renders `c7-btn--alt`
   (quieter, outlined) — Commerce7's own markup, not something this section
   wrote.

   Tokens: no new ones. Every colour below reads an existing --sw-co-* name
   from 66.0/67.0 with its literal fallback, same convention as 67.1/67.2.
   !important budget spent here: 0.
   ========================================================================== */

/* D-M01: `.c7-account-block__title` ("Personal Information", "Password",
   "Gift Cards" on /account; "Loyalty Points", "Addresses", "Payment",
   "Account" on the dashboard; "Shipping Address", "Payment Method", "Status"
   on the club list) renders 18px Cormorant Infant at weight 500 — the same
   family, and close to the same size, as the plain-text content one line
   below it (confirmed via computed style), so every block reads as an
   undifferentiated white box exactly as the brief describes. Restated as
   the same Alata label treatment 66.1's D-C10 already gives "Order
   Summary", with a rule to separate the label from its content — the
   block's job is reference, not a headline, same reasoning as D-C10. */
body #c7-content .c7-account .c7-account-block__title {
	padding-bottom: 10px;
	margin-bottom: 14px;
	border-bottom: 1px solid var(--sw-co-rule, #DEDDD9);
	font-family: "Alata", sans-serif;
	font-size: 13px;
	font-weight: 400;
	letter-spacing: 2px;
	text-transform: uppercase;
	color: var(--sw-co-ink, #242E35);
}

/* D-M02: every text action in this scope ("Edit", "Change", "Delete",
   "Register Card", "View all", "Learn more", "Cancel membership", the
   "<- Dashboard" / "<- Account Details" back links) is a bare
   `button.c7-link` or `a.c7-link` with no Sunstone rule reaching it inside
   `#c7-content` — computed style showed 20px Cormorant Infant, plain ink,
   no hover treatment (confirmed: account.html, dashboard.html). The same
   class renders correctly, gold Alata, in the body-level club modals
   ("Add new address" etc.), so this is specifically an `#c7-content` reset
   clobbering Commerce7's own `.c7-link` — not something fixable by touching
   that reset (sections 1-8, do-not-touch). Restated here as the c7-link
   pattern 66.1/66.2/67.1 already use site-wide, doubled per 67.2's own
   `.c7-btn.c7-btn` precedent for the extra specificity margin.
   `:visited` is written explicitly: the back links are bare `<a>` with no
   author colour reaching them, so once a member has navigated through the
   account they render the browser's default visited-link blue (confirmed —
   pixel-sampled on the rendered fixture, not just computed style, since the
   browser does not let script read the real applied :visited colour back).
   That is the one `rgb(56, 96, 214)`-adjacent blue this lane found outside
   the loyalty ring (D-M06). */
body #c7-content .c7-account .c7-link.c7-link,
body #c7-content .c7-account .c7-link.c7-link:visited {
	display: inline-flex;
	align-items: center;
	min-height: 44px;
	padding: 4px 2px;
	font-family: "Alata", sans-serif;
	font-size: 12px;
	letter-spacing: 2px;
	text-transform: uppercase;
	color: var(--sw-co-slate, #545D5C);
	background: transparent;
	border: 0;
	text-decoration: none;
}
body #c7-content .c7-account .c7-link.c7-link:hover {
	color: var(--sw-co-gold-on-light, #906A3C);
	text-decoration: underline;
}

/* D-M03: "Welcome to your account!" and "Log out" are two text nodes with
   no space between them in the DOM
   (`<p>Welcome to your account!<a class="c7-link">Log out</a></p>`), so
   they run together as "...account!Log out". CSS-only spacing; the strings
   are unchanged. */
body #c7-content .c7-account__header p a.c7-link {
	margin-left: 6px;
}

/* D-M04: "Delete My Account" is a `.c7-btn--alt` — the exact same outlined
   weight as "Add Address" and "Add Credit Card", its only siblings on the
   screen, so the one destructive control reads as a third ordinary option
   rather than the quiet, careful one it should be. Border dropped; colour
   starts muted and only resolves toward the error red on hover/focus, so
   the destructive intent shows up when the member actually reaches for it,
   not at rest. */
body #c7-content .c7-account-details__delete-account .c7-btn.c7-btn--alt {
	border-color: transparent;
	background: transparent;
	padding-left: 4px;
	padding-right: 4px;
	color: var(--sw-co-muted, #6E6E6E);
}
body #c7-content .c7-account-details__delete-account .c7-btn.c7-btn--alt:hover,
body #c7-content .c7-account-details__delete-account .c7-btn.c7-btn--alt:focus-visible {
	background: transparent;
	border-color: transparent;
	color: var(--sw-co-err, #CA0505);
}

/* D-M05: `.c7-account-blocks` is a CSS grid (`align-items: normal`, i.e.
   stretch). On /account, Personal Information and Password share row 1;
   Password's card stretches to match Personal Information's taller
   content, leaving the whole right column empty below "Change" — this is
   the brief's "right column under Password is empty space on desktop"
   (confirmed via computed style and screenshot). The orphaned 3rd item
   (Gift Cards) then sits alone in row 2 column 1, leaving row 2 column 2
   empty. `align-items: start` stops the stretch; letting Gift Cards span
   the full row uses that freed space instead of leaving it blank. The same
   grid, with the same stretch behaviour, is reused for the single-item
   Addresses/Payment blocks and the club list's Shipping Address + Payment
   Method pair, so the alignment fix is written once at the shared class. */
body #c7-content .c7-account .c7-account-blocks {
	align-items: start;
}
body #c7-content .c7-account .c7-account-block--gift-card {
	grid-column: 1 / -1;
}

/* D-M06: the loyalty tier ring's filled arc is Commerce7's own
   `rgb(56, 96, 214)` — the exact stock royal blue the acceptance list bans
   (confirmed via computed style, dashboard.html). The track ring already
   computes to `rgb(222, 221, 217)`, i.e. --sw-co-rule, so only the fill
   needs a value. This is an SVG stroke on a decorative progress indicator,
   not text, so the ornament token (never used for text per 66.0) is the
   correct read here. */
body #c7-content .c7-account .c7-progress__bar {
	stroke: var(--sw-co-ornament, #B98D58);
}

/* D-M07: the Dashboard / Club Memberships / Order History / Account
   Details tabs give no colour feedback on the three inactive items —
   confirmed by computed style (no :hover/:focus-visible rule reaches
   them inside #c7-content) — only the current tab's gold underline shows
   any state at all. Minimal affordance added, matching 67.1's own
   dropdown hover pair; no outline/focus-ring property touched. */
body #c7-content .c7-account__menu ul li:not(.c7-active) a:hover,
body #c7-content .c7-account__menu ul li:not(.c7-active) a:focus-visible {
	color: var(--sw-co-gold-on-light, #906A3C);
}

/* D-M08: the dashboard's own `<h1>` ships `c7-sr-only` — screen-reader
   only — so that screen has zero visible h1s, while every sibling screen
   in this lane (Account Details, Club Memberships, Orders, Loyalty,
   Reservations, Allocations) shows one. The text is Commerce7's own
   "Dashboard" string, already in the DOM; only the sr-only clip is undone,
   the same technique 66.1's D-C04 uses. Margin is left alone so whatever
   rhythm the rest of this codebase gives a visible `h1.c7-h1` applies
   unchanged. */
body #c7-content .c7-account-dashboard h1.c7-h1.c7-sr-only {
	position: static;
	width: auto;
	height: auto;
	padding: 0;
	overflow: visible;
	clip: auto;
	clip-path: none;
	white-space: normal;
}

/* D-M09: inside the club "Change" modals (address-book picker, payment
   picker) and the cancel-reason step, Commerce7's native
   `<input type="radio">` paints with the browser's default blue accent,
   and the address/card picker's own selected-box border follows the same
   blue — confirmed via screenshot (modal-club-address, modal-club-cancel).
   67.2 owns the modal's fields and buttons only, not `.c7-radio`; this is
   content inside the modal that 67.2 does not cover, which BRIEF-D allows
   styling. `:has()` is an existing pattern in this codebase (age-gate
   dialog, PDP related-products), not a new technique introduced here. */
body .c7-modal .c7-radio input[type="radio"] {
	accent-color: var(--sw-co-ink, #242E35);
}
body .c7-modal .c7-radio--box:has(input:checked) {
	border-color: var(--sw-co-ink, #242E35);
}

/* D-M10: the "Log out" link's icon ships `stroke="currentColor"` as a
   presentation attribute, but Commerce7's own stylesheet sets a literal
   `stroke` on the svg that wins over the attribute (CSS always beats
   presentation attributes) — confirmed via computed style: the anchor's
   `color` correctly resolves to slate from D-M02, but the icon's `stroke`
   still computed to `rgb(50, 81, 174)`, a blue close enough to the banned
   `rgb(56, 96, 214)` to read as the same mistake. Same pattern and fix as
   the coupon-field icon elsewhere in this codebase: restate `currentColor`
   at enough specificity to win, no `!important` needed. */
body #c7-content .c7-account .c7-link svg {
	stroke: currentColor;
}


/* ---- 67.5 Member account: orchestrator fixes after the live check (D156) ----
   M-01  Club "Change" modals (address and card pickers) use exactly the
         checkout's Delivery/Payment markup, so 66.5's radio-card, Edit,
         "Add new ..." and saved-card rules were widened to
         `body :is(#c7-checkout, .c7-modal)` in place (one source of truth).
         Here: only the modal-specific spacing. The nested .c7-form__field
         wrappers each took 67.2's 20px, stacking ~70px between links.
   M-02  Three-button rows (Change to Pickup / Cancel / Update Membership)
         wrapped into a ragged 2+1. Stack them full width, primary first,
         the same order 67.2 already uses on phones.
   M-03  44px targets: the small outlined "Add address" / "Add Credit Card"
         (36px) and tel: links in address blocks (19-24px), the latter by
         padding + equal negative margin so the address block does not move. */

/* M-01 */
body .c7-modal .c7-form__field .c7-form__field {
	margin-bottom: 0;
}
body .c7-modal .c7-form--shipping-address,
body .c7-modal .c7-form--creditCard {
	margin-bottom: 8px;
}
body .c7-modal .c7-form > [role="tabpanel"] > .c7-form__field + .c7-form__field {
	margin-bottom: 0;
}

/* M-02 */
body .c7-modal .c7-form__buttons:has(> .c7-btn:nth-child(3)) {
	flex-direction: column-reverse;
	align-items: stretch;
}
body .c7-modal .c7-form__buttons:has(> .c7-btn:nth-child(3)) > .c7-btn.c7-btn {
	width: 100%;
	margin: 0;
}

/* M-03 */
body #c7-content .c7-account .c7-btn.c7-btn--alt--small {
	min-height: 44px;
}
body #c7-content .c7-account a[href^="tel:"],
body .c7-modal a[href^="tel:"] {
	display: inline-block;
	padding-block: 12px;
	margin-block: -12px;
}

/* M-04  In the modals Commerce7's `.c7-form .c7-radio` row wraps and the text
         takes the full width, so every radio sat on its own line above its
         label (address card and the cancel-reason list; the checkout Delivery and
         Payment cards had the same fault). One row: control,
         then the label filling the rest. */
body :is(#c7-checkout, .c7-modal) .c7-form .c7-radio {
	flex-wrap: nowrap;
	align-items: flex-start;
	column-gap: 14px;
}
body :is(#c7-checkout, .c7-modal) .c7-form .c7-radio > .c7-radio__label {
	flex: 1 1 auto;
	width: auto;
	min-width: 0;
}
body :is(#c7-checkout, .c7-modal) .c7-form .c7-radio:not(.c7-radio--box) {
	align-items: center;
	min-height: 44px;
}

/* M-05  The phone order-summary item count ("1 Item") on the checkout review
         step was ornament gold on cream, like the total fixed in 66.6 R-05. */
body #c7-checkout .c7-checkout-mobile__items-toggle {
	color: var(--sw-co-gold-on-cream, #85602F);
}

/* M-06  The hold notice ("Your membership is on hold until … Remove the hold
         to start receiving shipments again.") is one sentence with the action
         inside it. 67.4's D-M02 Alata-capitals action style turned the
         in-sentence link into a 12px tracked label. In a .c7-message it reads
         as part of the sentence: inherited serif, ink, underlined (the
         section 36 in-prose link pattern), still a 44px target. */
body #c7-content .c7-account .c7-message .c7-link.c7-link {
	display: inline;
	min-height: 0;
	padding: 13px 0;
	margin: -13px 0;
	font-family: inherit;
	font-size: inherit;
	letter-spacing: normal;
	text-transform: none;
	color: var(--sw-co-ink, #242E35);
	text-decoration: underline;
	text-decoration-thickness: 1px;
	text-underline-offset: 0.18em;
}
body #c7-content .c7-account .c7-message .c7-link.c7-link:hover {
	color: var(--sw-co-gold-on-light, #906A3C);
}

/* ==== END 67 ==== */


/* ==========================================================================
   68. ADOPT-A-VINE (/adopt-a-vine/, page 995386) -- D158
   --------------------------------------------------------------------------
   Styles the classes the D158 walker ops add (site/.copy-migration/elementor/adopt-a-vine-redesign-ops.py):
     .sun-aav-hero   hero section 49a0daf2: lede line + "Adopt a vine" button under the animated h1
     .sun-aav-intro  intro 12ef8ff5: numbered row-post photo + copy
     .sun-aav-incl   includes 712bba24: copy + oak photo (sticky on desktop) beside six .sun-aav-tile icon boxes
     .sun-aav-close  close 5a7eef34: price as display type over the harvested-grape photo
     .sun-aav-btn    the outlined light button used in the hero and the close
   Every selector is scoped to the page, so nothing reaches another page.
   Base rules are the finished, static page. Motion is 68.6 only: inside prefers-reduced-motion: no-preference,
   scroll-linked parts additionally inside @supports (animation-timeline: view()). Where either is false the
   page simply is the end state; nothing waits on a script or starts hidden (the section 22c failure).
   Opacity and transform (translate/scale) only. Nothing loops or follows the pointer.
   TO REVERT: delete this section, sync, then bin/elementor-json revert 995386.
   ========================================================================== */

/* 68.1 hero ------------------------------------------------------------- */
.elementor-995386 .sun-aav-hero::before {
	/* ink scrim centred on the text block; ends well above the cream swoosh, which paints over it */
	content: ""; position: absolute; inset: 0; z-index: 0; pointer-events: none;
	background: radial-gradient(ellipse 52% 40% at 50% 50%, rgba(36, 46, 53, .52) 0%, rgba(36, 46, 53, .28) 55%, rgba(36, 46, 53, 0) 100%);
}
.elementor-995386 .sun-aav-hero > .elementor-container { position: relative; z-index: 1; }
.elementor-995386 .sun-aav-hero .sun-aav-hero__lede { margin: 6px auto 0; max-width: 34ch; }
.elementor-995386 .sun-aav-hero .sun-aav-hero__lede p {
	margin: 0; color: #FFFFFF; text-align: center;
	font-size: clamp(19px, 0.9vw + 13px, 26px); line-height: 1.35;
	text-shadow: 0 1px 14px rgba(36, 46, 53, .55);
}
.elementor-995386 .sun-aav-hero .sun-aav-hero__cta { margin-top: 26px; }
/* no one-word last lines ("on it.", "vine?") at any width */
.elementor-995386 :is(.sun-aav-hero__lede p, .sun-aav-intro h2, .sun-aav-incl h2, .sun-aav-close h2, .sun-aav-price__note) { text-wrap: balance; }
.elementor-995386 :is(.sun-aav-intro .elementor-widget-text-editor p, .sun-aav-incl__head .elementor-widget-text-editor p, .sun-aav-tile .elementor-icon-box-description) { text-wrap: pretty; }

/* 68.2 the outlined light button (hero + close) ------------------------- */
.elementor-995386 .sun-aav-btn.sun-aav-btn .elementor-button {
	display: inline-flex; align-items: center; justify-content: center; min-height: 48px;
	padding: 14px 34px; border: 1px solid #FFFFFF; border-radius: 0;
	background-color: rgba(36, 46, 53, .18); color: #FFFFFF;
	transition: background-color .35s cubic-bezier(.16, 1, .3, 1), color .35s cubic-bezier(.16, 1, .3, 1), translate .35s cubic-bezier(.16, 1, .3, 1);
}
.elementor-995386 .sun-aav-btn.sun-aav-btn .elementor-button .elementor-button-text { color: inherit; }
.elementor-995386 .sun-aav-btn.sun-aav-btn .elementor-button:hover,
.elementor-995386 .sun-aav-btn.sun-aav-btn .elementor-button:focus-visible { background-color: #FFFFFF; color: #242E35; }
.elementor-995386 .sun-aav-btn.sun-aav-btn .elementor-button:focus-visible { outline: 2px solid #FFFFFF; outline-offset: 3px; }

/* 68.3 intro ------------------------------------------------------------ */
.elementor-995386 .sun-aav-intro > .e-con-inner { gap: clamp(32px, 5vw, 80px); }
.elementor-995386 .sun-aav-intro .sun-aav-intro__photo,
.elementor-995386 .sun-aav-intro .sun-aav-intro__photo .elementor-widget-container { width: 100%; }
.elementor-995386 .sun-aav-intro .sun-aav-intro__photo .elementor-widget-container { overflow: hidden; overflow: clip; }
.elementor-995386 .sun-aav-intro .sun-aav-intro__photo img {
	display: block; width: 100%; height: 520px; object-fit: cover; object-position: 30% 50%;
}

/* 68.4 includes --------------------------------------------------------- */
.elementor-995386 .sun-aav-incl > .e-con-inner { gap: clamp(40px, 5vw, 88px); }
.elementor-995386 .e-con.sun-aav-incl__head.sun-aav-incl__head { --width: 38%; }
.elementor-995386 .e-con.sun-aav-incl__grid.sun-aav-incl__grid {
	--width: 62%; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; padding: 0;
}
.elementor-995386 .sun-aav-incl .sun-aav-incl__photo { margin-top: 32px; width: 100%; max-width: none; }
.elementor-995386 .sun-aav-incl .sun-aav-incl__photo .elementor-widget-container { width: 100%; overflow: hidden; overflow: clip; }
.elementor-995386 .sun-aav-incl__head .elementor-widget-text-editor { max-width: 60ch; }
.elementor-995386 .sun-aav-incl .sun-aav-incl__photo img { display: block; width: 100%; height: 340px; object-fit: cover; object-position: 60% 40%; }

.elementor-995386 .sun-aav-tile.sun-aav-tile {
	position: relative; margin: 0; width: auto; max-width: none;
	background: #F9F8F4; border: 1px solid #E4E0D6; padding: 30px 28px 32px;
}
.elementor-995386 .sun-aav-tile.sun-aav-tile::before {
	/* gold rule along the top edge; ornament gold is a graphic here, never text */
	content: ""; position: absolute; left: -1px; right: -1px; top: -1px; height: 2px; background: #B98D58;
	transform-origin: 0 50%;
}
.elementor-995386 .sun-aav-tile .elementor-icon-box-wrapper { text-align: left; }
.elementor-995386 .sun-aav-tile .elementor-icon-box-icon { margin: 0 0 18px; line-height: 1; }
.elementor-995386 .sun-aav-tile .elementor-icon-box-icon .elementor-icon { font-size: 26px; color: #906A3C; fill: #906A3C; }
.elementor-995386 .sun-aav-tile .elementor-icon-box-title {
	margin: 0 0 6px; font-family: "Cormorant Infant", serif; font-size: 27px; line-height: 1.15; font-weight: 500; color: #242E35;
}
.elementor-995386 .sun-aav-tile .elementor-icon-box-description { margin: 0; font-size: 18px; line-height: 1.45; color: #545D5C; }

@media (min-width: 1025px) {
	.elementor-995386 .e-con.sun-aav-incl__head.sun-aav-incl__head { position: sticky; top: 120px; }
}
@media (max-width: 1024px) {
	.elementor-995386 .sun-aav-incl > .e-con-inner { flex-direction: column; }
	.elementor-995386 .e-con.sun-aav-incl__head.sun-aav-incl__head,
	.elementor-995386 .e-con.sun-aav-incl__grid.sun-aav-incl__grid { --width: 100%; }
	.elementor-995386 .e-con.sun-aav-incl__grid.sun-aav-incl__grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
	.elementor-995386 .sun-aav-incl .sun-aav-incl__photo img { height: 300px; }
	.elementor-995386 .sun-aav-intro .sun-aav-intro__photo img { height: 420px; }
}
@media (min-width: 901px) and (max-width: 1024px) {
	.elementor-995386 .sun-aav-intro h2.elementor-heading-title { font-size: 42px; }
}
@media (max-width: 900px) {
	/* tablet portrait: photo above the copy, not two cramped columns (the 4-line h2 at 768) */
	.elementor-995386 .sun-aav-intro > .e-con-inner { flex-direction: column; }
	.elementor-995386 .sun-aav-intro > .e-con-inner > .e-con.e-con.e-con { --width: 100%; }
}
@media (max-width: 767px) {
	.elementor-995386 .e-con.sun-aav-incl__grid.sun-aav-incl__grid { grid-template-columns: minmax(0, 1fr); gap: 12px; }
	/* phones: icon beside the text, so six tiles stay short */
	.elementor-995386 .sun-aav-tile.sun-aav-tile { padding: 20px 20px 22px; }
	.elementor-995386 .sun-aav-tile .elementor-icon-box-wrapper { display: grid; grid-template-columns: 34px minmax(0, 1fr); column-gap: 14px; align-items: start; }
	.elementor-995386 .sun-aav-tile .elementor-icon-box-icon { margin: 4px 0 0; }
	.elementor-995386 .sun-aav-tile .elementor-icon-box-icon .elementor-icon { font-size: 22px; }
	.elementor-995386 .sun-aav-tile .elementor-icon-box-title { font-size: 24px; }
	.elementor-995386 .sun-aav-tile .elementor-icon-box-description { font-size: 17px; }
	.elementor-995386 .sun-aav-incl .sun-aav-incl__photo { margin-top: 24px; }
	.elementor-995386 .sun-aav-incl .sun-aav-incl__photo img { height: 220px; }
	.elementor-995386 .sun-aav-intro .sun-aav-intro__photo img { height: 300px; }
}

/* 68.5 close: the price, over the harvested grapes ---------------------- */
.elementor-995386 .e-con.sun-aav-close { position: relative; isolation: isolate; overflow: hidden; overflow: clip; }
.elementor-995386 .e-con.sun-aav-close::before {
	content: ""; display: block; position: absolute; top: 0; left: 0; width: 100%; height: 100%; inset: 0;
	z-index: -1; opacity: 1; mix-blend-mode: normal; border: 0; border-radius: 0; pointer-events: none;
	background:
		linear-gradient(rgba(36, 46, 53, .80), rgba(36, 46, 53, .90)),
		url("/app/uploads/2026/10/place-vineyard-winery-harvested-red-grapes-closeup-55-20260911-1536x864.jpg") center / cover no-repeat;
}
.elementor-995386 .sun-aav-close .sun-aav-price { display: flex; flex-direction: column; align-items: center; gap: 8px; margin: 6px 0 0; }
.elementor-995386 .sun-aav-close .sun-aav-price__amt {
	font-family: "Cormorant Infant", serif; font-weight: 500; font-size: clamp(64px, 4vw + 40px, 96px); line-height: 1; color: #FFFFFF;
}
.elementor-995386 .sun-aav-close .sun-aav-price__lbl {
	font-family: Alata, sans-serif; font-size: 13px; line-height: 1.4; letter-spacing: .18em; text-transform: uppercase; color: #DEDDD9;
}
.elementor-995386 .sun-aav-close .sun-aav-price__note { margin: 14px 0 6px; font-size: 19px; line-height: 1.45; color: #F4F1EA; }
@media (max-width: 767px) {
	.elementor-995386 .e-con.sun-aav-close::before {
		background:
			linear-gradient(rgba(36, 46, 53, .80), rgba(36, 46, 53, .90)),
			url("/app/uploads/2026/10/place-vineyard-winery-harvested-red-grapes-closeup-55-20260911-768x432.jpg") center / cover no-repeat;
	}
}

/* 68.6 motion ----------------------------------------------------------- */
@media (prefers-reduced-motion: no-preference) {
	@keyframes sun-aav-up     { from { opacity: 0; translate: 0 18px; } to { opacity: 1; translate: none; } }
	@keyframes sun-aav-rise   { from { opacity: 0; translate: 0 28px; } to { opacity: 1; translate: none; } }
	@keyframes sun-aav-settle { from { scale: 1.08; } to { scale: 1; } }
	@keyframes sun-aav-drift  { to { opacity: 0; translate: 0 -56px; } }
	@keyframes sun-aav-draw   { from { scale: 0 1; } to { scale: 1 1; } }

	/* hero: the line and the button follow the headline's blur-in once, on load (clock, not scroll) */
	.elementor-995386 .sun-aav-hero .sun-aav-hero__lede { animation: sun-aav-up 1s cubic-bezier(.16, 1, .3, 1) .85s both; }
	.elementor-995386 .sun-aav-hero .sun-aav-hero__cta  { animation: sun-aav-up 1s cubic-bezier(.16, 1, .3, 1) 1.1s both; }
	/* buttons answer the pointer: a 2 px lift, a press */
	.elementor-995386 .sun-aav-btn.sun-aav-btn .elementor-button:hover { translate: 0 -2px; }
	.elementor-995386 .sun-aav-btn.sun-aav-btn .elementor-button:active { translate: none; scale: .98; }

	@supports (animation-timeline: view()) {
		/* hero copy lifts away as the hero leaves; at the top of the page it is at rest (progress 0) */
		.elementor-995386 .sun-aav-hero > .elementor-container {
			animation: sun-aav-drift linear both; animation-timeline: scroll(root block); animation-range: 0px 70vh;
		}
		/* photographs settle as they cross the screen */
		.elementor-995386 .sun-aav-intro .sun-aav-intro__photo .elementor-widget-container,
		.elementor-995386 .sun-aav-incl .sun-aav-incl__photo .elementor-widget-container { view-timeline: --aav-photo block; }
		.elementor-995386 .sun-aav-intro .sun-aav-intro__photo img,
		.elementor-995386 .sun-aav-incl .sun-aav-incl__photo img {
			animation: sun-aav-settle linear both; animation-timeline: --aav-photo; animation-range: entry 0% cover 55%;
		}
		.elementor-995386 .e-con.sun-aav-close { view-timeline: --aav-close block; }
		.elementor-995386 .e-con.sun-aav-close::before { animation: sun-aav-settle linear both; animation-timeline: --aav-close; animation-range: entry 0% cover 60%; }

		/* copy rises into place as it enters */
		.elementor-995386 .sun-aav-intro .e-con > .elementor-widget-heading,
		.elementor-995386 .sun-aav-intro .e-con > .elementor-widget-text-editor,
		.elementor-995386 .sun-aav-incl__head > .elementor-widget-heading,
		.elementor-995386 .sun-aav-incl__head > .elementor-widget-text-editor,
		.elementor-995386 .sun-aav-close > .e-con-inner > .elementor-widget,
		.elementor-995386 .sun-aav-close > .e-con-inner > .e-con {
			animation: sun-aav-rise linear both; animation-timeline: view(); animation-range: entry 4% entry 52%;
		}
		.elementor-995386 .sun-aav-intro .e-con > .elementor-widget:nth-child(3),
		.elementor-995386 .sun-aav-close > .e-con-inner > :nth-child(3) { animation-range: entry 10% entry 58%; }
		.elementor-995386 .sun-aav-close > .e-con-inner > :nth-child(4) { animation-range: entry 16% entry 64%; }

		/* the six tiles arrive one after another, each drawing its gold rule */
		.elementor-995386 .sun-aav-tile.sun-aav-tile { animation: sun-aav-rise linear both; animation-timeline: view(); animation-range: entry 0% entry 60%; }
		.elementor-995386 .sun-aav-tile.sun-aav-tile::before { animation: sun-aav-draw linear both; animation-timeline: view(); animation-range: entry 35% cover 30%; }
		@media (min-width: 1025px) {
			.elementor-995386 .sun-aav-tile.sun-aav-tile:nth-child(even) { animation-range: entry 8% entry 68%; }
		}
		@media (min-width: 768px) and (max-width: 1024px) {
			.elementor-995386 .sun-aav-tile.sun-aav-tile:nth-child(3n+2) { animation-range: entry 8% entry 68%; }
			.elementor-995386 .sun-aav-tile.sun-aav-tile:nth-child(3n)   { animation-range: entry 16% entry 76%; }
		}
	}
}
@media print {
	.elementor-995386 :is(.sun-aav-hero, .sun-aav-intro, .sun-aav-incl, .sun-aav-close) *,
	.elementor-995386 :is(.sun-aav-hero, .sun-aav-intro, .sun-aav-incl, .sun-aav-close),
	.elementor-995386 :is(.sun-aav-tile, .sun-aav-close)::before { animation: none !important; }
}
/* ==== END 68 ==== */


/* ==========================================================================
   69. WEDDING GEO-GATE LAYOUT FOLLOW-UPS (D159)
   --------------------------------------------------------------------------
   sunstone-geofence.php removes wedding elements server-side for visitors it
   classifies inside the fence (never CSS hiding: the markup is not sent).
   These rules only re-flow what is left so the page has no hole. They do
   nothing on the normal page, where the counted children are all present.
     69.1 /press/ intro counters (.sun-press-stats, §-press "intro counters"):
          the grid is three equal columns; when the "Wedding features"
          counter is not rendered, the remaining two are centred at the same
          column width instead of leaving the third column empty.
     69.2 /host-a-private-event/ photo row 668d0b1e: two 50% columns. When the
          ceremony column 72597dcd is not rendered (map E23), the remaining
          "Intimate Seating" column 1bcf1c6f takes the full row instead of
          leaving its right half empty. Phones already stack both at 100%.
   TO REVERT: delete §69.
   ========================================================================== */
.sun-press-stats:not(:has(> .sun-press-stat:nth-child(3))) {
	grid-template-columns: repeat(2, minmax(0, calc((100% - 24px) / 3)));
	justify-content: center;
}
.elementor-995387 .elementor-element-668d0b1e:not(:has(> .elementor-element-72597dcd)) > .elementor-element-1bcf1c6f {
	--width: 100%;
}
/* ==== END 69 ==== */


/* ==========================================================================
   70. HOME: SUNSTONE ELIXIR FEATURE + AWARD BAND (owner rulings 1a 2a 3a 4b 5a, 2026-10-23)
   --------------------------------------------------------------------------
   Home page (post 118). The wine carousel (section 31ef61e2) is archived: hidden at all
   breakpoints with hide_desktop/tablet/mobile, ids and content kept. Its place is taken by
   two containers that reuse the ELIXIR page's own classes (§ "sun-elx-*", sections 1 to 3 of
   the Elixir block), so the hero looks and behaves like the original:
     70.1 .sun-elx-hero--home   the hero derivative: film on the LEFT on desktop (the page above it
                                is copy-left), smaller, h2 not h1. Stacks at <=1024 like the original.
     70.2 .sun-elx-proof        the award band: Elementor counter (count-up on scroll, no script of
                                ours), a "Winner again in 2026" chip, a <details> reveal, the booking
                                button and a small "Shop" link.
     70.3 motion                scroll-linked rise, behind @supports and prefers-reduced-motion.
     70.4 .sun-hap-award        the award strip under the Happenings cards (replaces 70.2 once applied).
   No new script. The film is [sunstone_hero_video lazy="1"]: lazy poster, film requested on first view.
   TO REVERT: delete §70, then clear hide_desktop/hide_tablet/hide_mobile and css_classes on 31ef61e2
   (or `bin/elementor-json revert 118`, which also undoes any staff edits made since).
   ========================================================================== */

/* ---------------------------------------------------------------- 70.1 hero */
.sun-elx-hero.sun-elx-hero.sun-elx-hero--home { min-height: clamp(520px, 74vh, 720px); }
.sun-elx-hero--home .sun-elx-hero__title .elementor-heading-title {
	font-size: clamp(38px, 5vw, 66px) !important;
}
@media (min-width: 1025px) {
	.sun-elx-hero.sun-elx-hero.sun-elx-hero--home { flex-direction: row-reverse !important; }
	.sun-elx-hero--home .sun-elx-hero__copy.sun-elx-hero__copy {
		padding: 72px 40px 72px 64px !important;        /* narrow right gutter: both buttons fit on one row at 1440 */
	}
}
.sun-elx-hero--home .sun-hero-video { transition: transform 1.4s cubic-bezier(0.2, 0.7, 0.2, 1); }
@media (hover: hover) and (prefers-reduced-motion: no-preference) {
	.sun-elx-hero--home .sun-elx-hero__media:hover .sun-hero-video { transform: scale(1.04); }
}

/* ---------------------------------------------------------------- 70.2 award band */
.sun-elx-proof.sun-elx-proof {
	padding: 0 !important;
	background-color: #141018 !important;
	border-top: 1px solid rgba(185, 141, 88, 0.45);
}
.sun-elx-proof__inner.sun-elx-proof__inner {
	display: grid !important;
	grid-template-columns: auto minmax(0, 1fr) auto;
	align-items: center;
	gap: 28px 56px;
	width: 100%;
	max-width: 1200px;
	margin-inline: auto;
	padding: 48px 24px !important;
}
.sun-elx-proof__stat.sun-elx-proof__stat { gap: 0 !important; align-items: flex-start !important; width: auto !important; }
.sun-elx-proof__count .elementor-counter-number-wrapper {
	justify-content: flex-start;
	font-family: var(--e-global-typography-vamtam_h2-font-family), serif;
	font-size: clamp(76px, 9vw, 112px);
	font-weight: 400;
	line-height: 0.9;
	color: #FFFFFF;
}
.sun-elx-proof__count .elementor-counter-title {
	margin-top: 10px;
	font-family: Alata, sans-serif;
	font-size: 12px;
	font-weight: 400;
	letter-spacing: 3px;
	text-align: left;
	text-transform: uppercase;
	color: var(--sun-gold-ornament, #B98D58);      /* 4.62:1 on ink */
}
.sun-elx-proof__chip .elementor-heading-title {
	display: inline-flex;
	align-items: center;
	margin: 20px 0 0;
	padding: 8px 16px 8px 14px;
	border: 1px solid rgba(185, 141, 88, 0.75);
	border-radius: 999px;
	background: rgba(185, 141, 88, 0.12);
	font-family: Alata, sans-serif !important;
	font-size: 11.5px !important;
	font-weight: 400 !important;
	letter-spacing: 2px !important;
	line-height: 1 !important;
	text-transform: uppercase;
	color: #F4F1EA !important;
	transition: background-color 0.3s ease, border-color 0.3s ease;
}
.sun-elx-proof__chip .elementor-heading-title::before {
	content: "";
	width: 6px;
	height: 6px;
	margin-right: 10px;
	background: var(--sun-gold-ornament, #B98D58);
	transform: rotate(45deg);
}
.sun-elx-proof__stat:hover .sun-elx-proof__chip .elementor-heading-title {
	border-color: var(--sun-gold-ornament, #B98D58);
	background: rgba(185, 141, 88, 0.22);
}
.sun-elx-proof__copy.sun-elx-proof__copy { gap: 0 !important; align-items: flex-start !important; }
.sun-elx-proof__title .elementor-heading-title {
	max-width: 22ch;
	margin: 8px 0 14px;
	color: #FFFFFF !important;
	font-size: clamp(26px, 3vw, 40px) !important;
	line-height: 1.1 !important;
}
.sun-elx-proof .sun-elx-proof__details summary {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	padding: 6px 0;
	border-bottom: 1px solid rgba(185, 141, 88, 0.8);
	font-family: Alata, sans-serif;
	font-size: 11px;
	letter-spacing: 2.4px;
	text-transform: uppercase;
	list-style: none;
	cursor: pointer;
	color: rgba(255, 255, 255, 0.88);
	transition: color 0.2s ease, border-color 0.2s ease;
}
.sun-elx-proof__details summary::-webkit-details-marker { display: none; }
.sun-elx-proof__details summary::after {
	content: "+";
	font-size: 16px;
	line-height: 1;
	transition: transform 0.3s ease;
}
.sun-elx-proof__details[open] summary::after { transform: rotate(45deg); }
.sun-elx-proof .sun-elx-proof__details summary:hover,
.sun-elx-proof .sun-elx-proof__details summary:focus-visible { color: #FFFFFF; border-bottom-color: #FFFFFF; }
.sun-elx-proof .sun-elx-proof__details summary:focus-visible { outline: 2px solid #FFFFFF; outline-offset: 4px; }
.sun-elx-proof .sun-elx-proof__details p {
	max-width: 50ch;
	margin: 14px 0 0;
	color: rgba(255, 255, 255, 0.9);
	font-size: 16px;
	line-height: 1.55;
}
.sun-elx-proof__details[open] p { animation: sun-elx-home-rise 0.45s ease both; }
.sun-elx-proof__act.sun-elx-proof__act { gap: 20px !important; align-items: flex-start !important; width: auto !important; }
.sun-elx-proof__shop .elementor-button.elementor-button {
	min-height: 0;
	padding: 6px 0 !important;
	border: 0 !important;
	border-bottom: 1px solid rgba(185, 141, 88, 0.8) !important;
	border-radius: 0 !important;
	background: transparent !important;
	font-family: Alata, sans-serif;
	font-size: 12px;
	letter-spacing: 2.4px;
	text-transform: uppercase;
	color: rgba(255, 255, 255, 0.9) !important;
}
.sun-elx-proof__shop .elementor-button-text::after { content: "\2192"; display: inline-block; margin-left: 10px; transition: transform 0.25s ease; }
.sun-elx-proof__shop .elementor-button.elementor-button:hover,
.sun-elx-proof__shop .elementor-button.elementor-button:focus-visible {
	color: #FFFFFF !important;
	border-bottom-color: #FFFFFF !important;
	background: transparent !important;
}
.sun-elx-proof__shop .elementor-button.elementor-button:hover .elementor-button-text::after { transform: translateX(4px); }
.sun-elx-proof__shop .elementor-button.elementor-button:focus-visible { outline: 2px solid #FFFFFF; outline-offset: 4px; }

@media (max-width: 1024px) {
	.sun-elx-proof__inner.sun-elx-proof__inner { grid-template-columns: auto minmax(0, 1fr); padding: 44px 40px !important; }
	.sun-elx-proof__act.sun-elx-proof__act { grid-column: 1 / -1; flex-direction: row !important; align-items: center !important; gap: 28px !important; }
}
@media (max-width: 767px) {
	.sun-elx-proof__inner.sun-elx-proof__inner { grid-template-columns: minmax(0, 1fr); gap: 22px; padding: 36px 22px 40px !important; }
	.sun-elx-proof__stat.sun-elx-proof__stat { flex-direction: row !important; flex-wrap: wrap !important; align-items: center !important; gap: 14px 20px !important; width: 100% !important; }
	.sun-elx-proof__stat > .elementor-element { width: auto !important; flex: 0 0 auto !important; }
	.sun-elx-proof__count .elementor-counter-number-wrapper { font-size: 76px; }
	.sun-elx-proof__chip .elementor-heading-title { margin-top: 0; }
	.sun-elx-proof__act.sun-elx-proof__act { flex-direction: column !important; align-items: stretch !important; gap: 14px !important; }
	.sun-elx-proof__act .sun-elx-btn .elementor-button { width: 100%; min-height: 48px; justify-content: center; }
	.sun-elx-proof__shop { align-self: center; }
}

/* ---------------------------------------------------------------- 70.3 motion */
@keyframes sun-elx-home-rise {
	from { opacity: 0; transform: translateY(22px); }
	to   { opacity: 1; transform: none; }
}
@supports (animation-timeline: view()) {
	@media (prefers-reduced-motion: no-preference) {
		.sun-elx-hero--home .sun-elx-hero__copy > .elementor-element,
		.sun-elx-proof__inner > * {
			animation: sun-elx-home-rise linear both;
			animation-timeline: view();
			animation-range: entry 0% entry 60%;
		}
		.sun-elx-hero--home .sun-elx-hero__copy > .elementor-element:nth-child(2) { animation-range: entry 4% entry 64%; }
		.sun-elx-hero--home .sun-elx-hero__copy > .elementor-element:nth-child(n+3) { animation-range: entry 8% entry 68%; }
		.sun-elx-proof__inner > :nth-child(2) { animation-range: entry 6% entry 66%; }
		.sun-elx-proof__inner > :nth-child(3) { animation-range: entry 12% entry 72%; }
	}
}
@media print {
	.sun-elx-hero--home .sun-elx-hero__copy > .elementor-element,
	.sun-elx-proof__inner > * { animation: none !important; }
}
/* ---------------------------------------------------------------- 70.4 award strip in Happenings
   Owner rulings 1a 2a 3a 4b 5a (D162 addendum 1). A card row in the Happenings band's own vocabulary:
   cream ground, white card, hairline #E6E0D4, ink serif title, gold-on-white caps. Pulled up into the
   band's bottom padding so the gap above it equals the gap between the band's two cards. The count-up is
   Elementor's counter widget (no script of ours). 70.2 above is the retired dark band: delete it once the
   second ops file (2026-10-23-home-award-into-happenings.json) is applied. */
.sun-hap-award.sun-hap-award {
	--sun-ha-p: clamp(16px, 4vw, 56px);
	--sun-ha-ink: #242E35;
	--sun-ha-gold: #906A3C;                 /* 4.87:1 on white */
	--sun-ha-hair: #E6E0D4;
	position: relative;
	margin-top: calc(-1 * clamp(32px, 4.2vw, 60px) + clamp(12px, 1.6vw, 22px)) !important;
	padding: 0 max(var(--sun-ha-p), calc((100% - 1240px) / 2 + var(--sun-ha-p))) clamp(32px, 4.2vw, 60px) !important;
	background-color: #F4F1EA !important;
}
.sun-hap-award__card.sun-hap-award__card {
	display: grid !important;
	grid-template-columns: auto minmax(0, 1fr) auto;
	align-items: center;
	gap: 14px 36px;
	width: 100%;
	padding: clamp(16px, 2.2vw, 30px) !important;
	background: #FFFFFF;
	border: 1px solid var(--sun-ha-hair);
}
/* Elementor's default container padding would inset the inner columns from the card's own padding */
.sun-hap-award__copy.sun-hap-award__copy,
.sun-hap-award__act.sun-hap-award__act { padding: 0 !important; }
.sun-hap-award__count { padding-right: 36px; border-right: 1px solid var(--sun-ha-hair); }
.sun-hap-award__count .elementor-counter { display: flex; flex-direction: row; align-items: center; justify-content: flex-start; gap: 14px; text-align: left; }   /* the widget's own column-reverse loses */
.sun-hap-award__count .elementor-counter-number-wrapper {
	order: 1;
	flex: 0 0 auto;
	width: auto;
	justify-content: flex-start;
	font-family: var(--e-global-typography-vamtam_h2-font-family), "Cormorant Infant", Georgia, serif;
	font-size: clamp(52px, 5vw, 68px);
	font-weight: 300;
	line-height: 0.9;
	color: var(--sun-ha-ink);
}
.sun-hap-award__count .elementor-counter-title {
	order: 2;
	flex: 0 1 auto;
	max-width: 7ch;
	margin: 0;
	font-family: Alata, system-ui, sans-serif;
	font-size: 11px;
	font-weight: 400;
	letter-spacing: 0.24em;
	line-height: 1.45;
	text-align: left;
	text-transform: uppercase;
	color: var(--sun-ha-gold);
}
.sun-hap-award__copy.sun-hap-award__copy { gap: 0 !important; align-items: flex-start !important; width: auto !important; }
.sun-hap-award__title .elementor-heading-title {
	max-width: none;
	margin: 0;
	font-family: "Cormorant Infant", Georgia, serif !important;
	font-size: clamp(24px, 2.2vw, 30px) !important;
	font-weight: 300 !important;
	line-height: 1.1 !important;
	color: var(--sun-ha-ink) !important;
}
.sun-hap-award__again .elementor-heading-title {
	display: flex;
	align-items: center;
	margin: 10px 0 0;
	font-family: Alata, system-ui, sans-serif !important;
	font-size: 11.5px !important;
	font-weight: 400 !important;
	letter-spacing: 0.24em !important;
	line-height: 1.3 !important;
	text-transform: uppercase;
	color: var(--sun-ha-gold) !important;
}
.sun-hap-award__again .elementor-heading-title::before {
	content: "";
	flex: none;
	width: 6px;
	height: 6px;
	margin-right: 10px;
	background: #B98D58;
	transform: rotate(45deg);
}
.sun-hap-award__act.sun-hap-award__act { align-items: center !important; gap: 22px !important; width: auto !important; }
.sun-hap-award__cta .elementor-button.elementor-button {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 48px;
	padding: 0 24px !important;
	border: 1px solid var(--sun-ha-ink) !important;
	border-radius: 0 !important;
	background: var(--sun-ha-ink) !important;
	font-family: Alata, system-ui, sans-serif;
	font-size: 15px;
	line-height: 1.1;
	color: #FFFFFF !important;
	transition: background-color 0.2s ease, color 0.2s ease;
}
.sun-hap-award__cta .elementor-button.elementor-button:hover,
.sun-hap-award__cta .elementor-button.elementor-button:focus-visible { background: transparent !important; color: var(--sun-ha-ink) !important; }
.sun-hap-award__shop .elementor-button.elementor-button {
	min-height: 0;
	padding: 6px 0 !important;
	border: 0 !important;
	border-bottom: 1px solid #B98D58 !important;
	border-radius: 0 !important;
	background: transparent !important;
	font-family: Alata, system-ui, sans-serif;
	font-size: 12px;
	letter-spacing: 0.24em;
	text-transform: uppercase;
	color: var(--sun-ha-ink) !important;
}
.sun-hap-award__shop .elementor-button-text::after { content: "\2192"; display: inline-block; margin-left: 10px; transition: transform 0.25s ease; }
.sun-hap-award__shop .elementor-button.elementor-button:hover,
.sun-hap-award__shop .elementor-button.elementor-button:focus-visible { border-bottom-color: var(--sun-ha-ink) !important; background: transparent !important; color: var(--sun-ha-ink) !important; }
.sun-hap-award__shop .elementor-button:hover .elementor-button-text::after { transform: translateX(4px); }
.sun-hap-award .elementor-button:focus-visible { outline: 2px solid var(--sun-ha-ink); outline-offset: 3px; }

@media (max-width: 1024px) {
	.sun-hap-award__card.sun-hap-award__card { grid-template-columns: auto minmax(0, 1fr); }
	.sun-hap-award__act.sun-hap-award__act { grid-column: 1 / -1; }
}
@media (max-width: 767px) {
	.sun-hap-award__card.sun-hap-award__card { grid-template-columns: minmax(0, 1fr); gap: 16px; }
	.sun-hap-award__count { padding: 0 0 16px; border-right: 0; border-bottom: 1px solid var(--sun-ha-hair); }
	.sun-hap-award__count .elementor-counter-number-wrapper { font-size: 56px; }
	.sun-hap-award__count .elementor-counter-title { max-width: none; }
	.sun-hap-award__act.sun-hap-award__act { flex-direction: column !important; align-items: stretch !important; gap: 14px !important; }
	.sun-hap-award__cta .elementor-button.elementor-button { width: 100%; justify-content: center; }
	.sun-hap-award__shop { align-self: center; }
}
@supports (animation-timeline: view()) {
	@media (prefers-reduced-motion: no-preference) {
		.sun-hap-award__card {
			animation: sun-elx-home-rise linear both;
			animation-timeline: view();
			animation-range: entry 0% entry 60%;
		}
	}
}
@media print { .sun-hap-award__card { animation: none !important; } }
/* ==== END 70 ==== */

/* ==========================================================================
   71. SUNSTONE SOCIETY (/society/ page and the event-page note) -- site D167, Wave 1
   Namespace .sun-society-*. Kit tokens only: ink #242E35, cream #F4F1EA, white, gold text #85602F on cream,
   gold #B98D58 on solid ink. Markup: the Elementor design society.json, plus sunstone-society.php for the
   .sun-society-note aside (under a flagged event), .sun-society-tables (the #tables list) and .sun-society-join.
   No animation, no film, no counter: the page stays short and works with zero events.
   ========================================================================== */
.sun-society-hero.sun-society-hero { padding: 56px 22px 52px !important; background-color: #242E35; gap: 0 !important; }
.sun-society-eyebrow { margin: 0 0 14px; font-family: Alata, sans-serif; font-size: 12px; font-weight: 400; letter-spacing: 3px; line-height: 1.5; text-transform: uppercase; color: #85602F; }
.sun-society-hero .sun-society-eyebrow { color: #B98D58; }
.sun-society-hero.sun-society-hero h1 { margin: 0 0 18px; font-size: clamp(34px, 9vw, 52px) !important; font-weight: 300 !important; line-height: 1.04 !important; letter-spacing: -0.01em; color: #FFFFFF !important; text-wrap: balance; }
.sun-society-hero .sun-society-lede p { margin: 0 0 6px; max-width: 30em; font-size: 20px; line-height: 1.4; color: #FFFFFF; }
.sun-society-section.sun-society-section { padding: 44px 22px !important; gap: 0 !important; }
.sun-society-section--cream.sun-society-section--cream { background-color: #F4F1EA; }
.sun-society-section--white.sun-society-section--white { background-color: #FFFFFF; }
.sun-society-section .elementor-heading-title { margin: 0 0 14px; font-size: clamp(26px, 6.5vw, 34px) !important; font-weight: 300 !important; line-height: 1.1 !important; color: #242E35 !important; text-wrap: balance; }
.sun-society-section p { max-width: 36em; margin: 0 0 14px; font-size: 18px; line-height: 1.5; color: #3A4244; }
.sun-society-section a { color: #242E35; text-decoration: underline; text-underline-offset: 3px; }
.sun-society-section a:hover, .sun-society-section a:focus-visible { color: #85602F; }
.sun-society-section a:focus-visible, .sun-society-note a:focus-visible { outline: 3px solid var(--sun-focus-ring, #906A3C); outline-offset: 3px; }
.sun-society-small.sun-society-small p { font-size: 15px; line-height: 1.5; color: #3A4244; }

/* 71.1 the #tables list: a quiet line when empty, one row per flagged public event otherwise */
.sun-society-tables { max-width: 36em; }
.sun-society-tables__empty { margin: 0; font-size: 18px; line-height: 1.5; color: #3A4244; }
.sun-society-tables__list { margin: 0; padding: 0; list-style: none; }
.sun-society-tables__item { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 4px 18px; padding: 14px 0; border-top: 1px solid rgba(36, 46, 53, 0.3); font-size: 18px; line-height: 1.4; }
.sun-society-tables__item:last-child { border-bottom: 1px solid rgba(36, 46, 53, 0.3); }
.sun-society-tables__when { font-family: Alata, sans-serif; font-size: 12px; letter-spacing: 2.5px; text-transform: uppercase; color: #85602F; }

/* 71.2 the note under a flagged event: a sibling after the post content, text and one link, no image */
.sun-society-note { box-sizing: border-box; max-width: 40em; margin: 32px auto 0; padding: 18px 22px; border: 1px solid rgba(36, 46, 53, 0.3); background-color: #F4F1EA; }
.sun-society-note__text { margin: 0 0 8px; font-size: 18px; line-height: 1.45; color: #242E35; }
.sun-society-note__link { display: inline-block; min-height: 44px; padding-top: 10px; font-family: Alata, sans-serif; font-size: 12px; letter-spacing: 2.5px; text-transform: uppercase; color: #242E35; text-decoration: underline; text-underline-offset: 4px; }
.sun-society-note__link:hover, .sun-society-note__link:focus-visible { color: #85602F; }

/* 71.3 the form, once it exists (HELD: the slot is empty and hidden until then) */
.sun-society-join { max-width: 36em; }
.sun-society-join .gform_wrapper .gfield_label, .sun-society-join .gform_wrapper legend { font-size: 16px; color: #242E35; }
.sun-society-join .gform_wrapper input[type="text"], .sun-society-join .gform_wrapper input[type="email"] { min-height: 48px; border: 1px solid #8A8880; border-radius: 0; background: #FFFFFF; font-size: 17px; }
.sun-society-join .gform_wrapper input[type="checkbox"] { width: 22px; height: 22px; accent-color: #242E35; }
.sun-society-join .gform_wrapper input:focus-visible { outline: 3px solid var(--sun-focus-ring, #906A3C); outline-offset: 2px; }
.sun-society-join .gform_wrapper .gform_button { min-height: 52px; padding: 0 30px; border: 1px solid #242E35; border-radius: 0; background: #242E35; color: #FFFFFF; font-family: Alata, sans-serif; font-size: 12px; letter-spacing: 2.5px; text-transform: uppercase; cursor: pointer; }
@media (hover: hover) { .sun-society-join .gform_wrapper .gform_button:hover { background: #85602F; border-color: #85602F; } }
.sun-society-join .gform_wrapper .gform_button:focus-visible { background: #85602F; border-color: #85602F; outline: 3px solid var(--sun-focus-ring, #906A3C); outline-offset: 3px; }

@media (min-width: 768px) {
	.sun-society-hero.sun-society-hero { padding: 96px 48px 88px !important; }
	.sun-society-section.sun-society-section { padding: 72px 48px !important; }
}
/* ==== END 71 ==== */

/* ==== 72 — Sunstone Collaborate (/collaborate/) ==== */
/* Namespace .sun-collab-*. Kit tokens only: ink #242E35, cream #F4F1EA, white, gold text #85602F on cream,
   gold #B98D58 on solid ink, ornament #906A3C (focus ring). Markup: the Elementor design collaborate.json
   (Lane A), plus the FAQ native <details><summary> and the <dl class="sun-collab-ladder"> ladder in an
   Elementor html widget. Same shadcn-adjacent voice as § 71 Society: no animation, generous whitespace,
   kit typography. All selectors double-prefixed so Elementor inline widget rules do not win. */

/* 72.1 hero — ink section, headline + lede at phone (image hidden), image at desktop */
.sun-collab-hero.sun-collab-hero { padding: 44px 22px 44px !important; background-color: #242E35; gap: 0 !important; }
.sun-collab-hero .sun-collab-eyebrow.sun-collab-eyebrow { color: #B98D58; }
.sun-collab-hero.sun-collab-hero h1 { margin: 0 0 18px; font-size: clamp(32px, 7.2vw, 56px) !important; font-weight: 300 !important; line-height: 1.04 !important; letter-spacing: -0.01em; color: #FFFFFF !important; text-wrap: balance; }
.sun-collab-hero .sun-collab-lede.sun-collab-lede p { margin: 0; max-width: 30em; font-size: 20px; line-height: 1.4; color: #FFFFFF; }
.sun-collab-hero .sun-collab-hero__image.sun-collab-hero__image { display: none; }

/* 72.2 shared section surface — eyebrow, headings, body, links, focus */
.sun-collab-eyebrow.sun-collab-eyebrow { margin: 0 0 14px; font-family: Alata, sans-serif; font-size: 12px; font-weight: 400; letter-spacing: 3px; line-height: 1.5; text-transform: uppercase; color: #85602F; }
.sun-collab-who.sun-collab-who,
.sun-collab-offer.sun-collab-offer,
.sun-collab-ask.sun-collab-ask,
.sun-collab-standards.sun-collab-standards,
.sun-collab-apply.sun-collab-apply,
.sun-collab-faq.sun-collab-faq { padding: 32px 22px !important; gap: 0 !important; }
.sun-collab-who.sun-collab-who,
.sun-collab-ask.sun-collab-ask,
.sun-collab-apply.sun-collab-apply { background-color: #F4F1EA; }
.sun-collab-offer.sun-collab-offer,
.sun-collab-standards.sun-collab-standards,
.sun-collab-faq.sun-collab-faq { background-color: #FFFFFF; }
.sun-collab-who .elementor-heading-title,
.sun-collab-offer .elementor-heading-title,
.sun-collab-ask .elementor-heading-title,
.sun-collab-standards .elementor-heading-title,
.sun-collab-apply .elementor-heading-title,
.sun-collab-faq .elementor-heading-title { margin: 0 0 14px; font-size: clamp(26px, 6.5vw, 34px) !important; font-weight: 300 !important; line-height: 1.1 !important; color: #242E35 !important; text-wrap: balance; }
.sun-collab-who p,
.sun-collab-offer p,
.sun-collab-ask p,
.sun-collab-standards p,
.sun-collab-apply p,
.sun-collab-faq p { max-width: 36em; margin: 0 0 14px; font-size: 18px; line-height: 1.5; color: #3A4244; }
.sun-collab-lede.sun-collab-lede p { max-width: 30em; font-size: 20px; line-height: 1.4; color: #3A4244; }
.sun-collab-who a,
.sun-collab-offer a,
.sun-collab-ask a,
.sun-collab-standards a,
.sun-collab-apply a,
.sun-collab-faq a { color: #242E35; text-decoration: underline; text-underline-offset: 3px; }
.sun-collab-who a:hover, .sun-collab-who a:focus-visible,
.sun-collab-offer a:hover, .sun-collab-offer a:focus-visible,
.sun-collab-ask a:hover, .sun-collab-ask a:focus-visible,
.sun-collab-standards a:hover, .sun-collab-standards a:focus-visible,
.sun-collab-apply a:hover, .sun-collab-apply a:focus-visible,
.sun-collab-faq a:hover, .sun-collab-faq a:focus-visible { color: #85602F; }
.sun-collab-hero a:hover, .sun-collab-hero a:focus-visible { color: #B98D58; }
.sun-collab-who a:focus-visible,
.sun-collab-offer a:focus-visible,
.sun-collab-ask a:focus-visible,
.sun-collab-standards a:focus-visible,
.sun-collab-apply a:focus-visible,
.sun-collab-faq a:focus-visible,
.sun-collab-hero a:focus-visible { outline: 3px solid var(--sun-focus-ring, #906A3C); outline-offset: 3px; }
.sun-collab-small.sun-collab-small { font-size: 15px; line-height: 1.5; color: #4A5560; }
.sun-collab-small.sun-collab-small p { font-size: 15px; line-height: 1.5; color: #4A5560; }

/* 72.3 rule — a quiet horizontal between chapters, pure CSS */
.sun-collab-rule.sun-collab-rule { height: 1px; margin: 0; border: 0; background-color: rgba(36, 46, 53, 0.3); }

/* 72.4 who — two tiers at desktop, stacked at phone */
.sun-collab-who__grid.sun-collab-who__grid { display: grid; grid-template-columns: 1fr; gap: 32px; margin-top: 24px; }
.sun-collab-tier.sun-collab-tier { display: flex; flex-direction: column; gap: 12px; }
.sun-collab-tier .elementor-heading-title { margin: 0 0 6px; font-size: clamp(20px, 4.5vw, 24px) !important; font-weight: 400 !important; line-height: 1.15 !important; color: #242E35 !important; }
.sun-collab-tier img { display: block; width: 100%; height: auto; aspect-ratio: 4 / 5; object-fit: cover; }

/* 72.5 ladder — <dl> inside an html widget: dt bold, dd indent, 36em measure */
.sun-collab-ladder.sun-collab-ladder { max-width: 36em; margin: 0; padding: 0; }
.sun-collab-ladder dt.sun-collab-ladder__term,
.sun-collab-ladder.sun-collab-ladder dt { margin: 18px 0 4px; font-family: Alata, sans-serif; font-size: 16px; font-weight: 700; line-height: 1.4; color: #242E35; }
.sun-collab-ladder.sun-collab-ladder dt:first-child { margin-top: 0; }
.sun-collab-ladder.sun-collab-ladder dd { margin: 0 0 0 1.5em; max-width: 36em; font-size: 18px; line-height: 1.5; color: #3A4244; }

/* 72.6 standards list — plain <ul>, kit cream rule between items */
.sun-collab-standards__list.sun-collab-standards__list { max-width: 36em; margin: 18px 0 0; padding: 0; list-style: none; }
.sun-collab-standards__list.sun-collab-standards__list li { padding: 14px 0; border-top: 1px solid rgba(36, 46, 53, 0.3); font-size: 18px; line-height: 1.5; color: #3A4244; }
.sun-collab-standards__list.sun-collab-standards__list li:last-child { border-bottom: 1px solid rgba(36, 46, 53, 0.3); }

/* 72.7 apply — form max 36em, inherit the Orbital form skin from sunstone-forms.php */
.sun-collab-apply__form.sun-collab-apply__form { max-width: 36em; }
.sun-collab-apply__form .gform_wrapper .gfield_label,
.sun-collab-apply__form .gform_wrapper legend { font-size: 16px; color: #242E35; }
.sun-collab-apply__form .gform_wrapper input[type="text"],
.sun-collab-apply__form .gform_wrapper input[type="email"],
.sun-collab-apply__form .gform_wrapper input[type="url"],
.sun-collab-apply__form .gform_wrapper textarea { min-height: 48px; border: 1px solid #8A8880; border-radius: 0; background: #FFFFFF; font-size: 17px; }
.sun-collab-apply__form .gform_wrapper input[type="checkbox"] { width: 22px; height: 22px; accent-color: #242E35; }
.sun-collab-apply__form .gform_wrapper input:focus-visible,
.sun-collab-apply__form .gform_wrapper textarea:focus-visible { outline: 3px solid var(--sun-focus-ring, #906A3C); outline-offset: 2px; }
.sun-collab-apply__form .gform_wrapper .gform_button { min-height: 52px; padding: 0 30px; border: 1px solid #242E35; border-radius: 0; background: #242E35; color: #FFFFFF; font-family: Alata, sans-serif; font-size: 12px; letter-spacing: 2.5px; text-transform: uppercase; cursor: pointer; }
@media (hover: hover) { .sun-collab-apply__form .gform_wrapper .gform_button:hover { background: #85602F; border-color: #85602F; } }
.sun-collab-apply__form .gform_wrapper .gform_button:focus-visible { background: #85602F; border-color: #85602F; outline: 3px solid var(--sun-focus-ring, #906A3C); outline-offset: 3px; }

/* 72.8 faq — native <details><summary>, caret styled, cream focus ring on summary */
.sun-collab-faq__list.sun-collab-faq__list { max-width: 42em; margin: 18px 0 0; padding: 0; list-style: none; }
.sun-collab-faq__item.sun-collab-faq__item { padding: 0; border-top: 1px solid rgba(36, 46, 53, 0.3); }
.sun-collab-faq__item.sun-collab-faq__item:last-child { border-bottom: 1px solid rgba(36, 46, 53, 0.3); }
.sun-collab-faq__item.sun-collab-faq__item > summary { list-style: none; cursor: pointer; display: flex; align-items: baseline; justify-content: space-between; gap: 18px; padding: 18px 0; font-family: Alata, sans-serif; font-size: 18px; font-weight: 400; line-height: 1.3; color: #242E35; }
.sun-collab-faq__item.sun-collab-faq__item > summary::-webkit-details-marker { display: none; }
.sun-collab-faq__item.sun-collab-faq__item > summary::after { content: "+"; flex: 0 0 auto; font-family: Alata, sans-serif; font-size: 20px; line-height: 1; color: #85602F; }
.sun-collab-faq__item.sun-collab-faq__item[open] > summary::after { content: "–"; }
.sun-collab-faq__item.sun-collab-faq__item > summary:focus-visible { outline: 3px solid var(--sun-focus-ring, #906A3C); outline-offset: 3px; background-color: #F4F1EA; }
.sun-collab-faq__item.sun-collab-faq__item > p,
.sun-collab-faq__item.sun-collab-faq__item .sun-collab-faq__answer { margin: 0 0 18px; max-width: 36em; font-size: 18px; line-height: 1.5; color: #3A4244; }

/* 72.9 breakpoints — tablet 768 lifts horizontal pad; 1024 lays out the two who-tiers side by side */
@media (min-width: 768px) {
	.sun-collab-hero.sun-collab-hero { padding: 44px 48px 44px !important; }
	.sun-collab-who.sun-collab-who,
	.sun-collab-offer.sun-collab-offer,
	.sun-collab-ask.sun-collab-ask,
	.sun-collab-standards.sun-collab-standards,
	.sun-collab-apply.sun-collab-apply,
	.sun-collab-faq.sun-collab-faq { padding: 44px 48px !important; }
	.sun-collab-hero .sun-collab-hero__image.sun-collab-hero__image { display: block; width: 100%; height: auto; aspect-ratio: 4 / 3; object-fit: cover; object-position: 50% 33%; }
}
@media (min-width: 1024px) {
	.sun-collab-who__grid.sun-collab-who__grid { grid-template-columns: 1fr 1fr; gap: 48px; }
}

/* ==== 72 FLAIR LAYER (2026-10-28) — additive. ========================== */
/* All rules below are additive to the §72 v1 base above. They do not
   override any v1 selector, except where documented inline. Introduced:
    • per-section fade/rise scroll reveal (scroll-driven animations where
      supported; otherwise the Collaborate JS adds .is-in-view)
    • hero text gradient (Elaya B5 — text-only, white→gray on ink), plus a
      cursor-follow spotlight behind the hero text column
    • per-word tagline reveal section .sun-collab-reveal (new, inserted
      between .sun-collab-offer and .sun-collab-ask)
    • "pinned-feel" ask ladder: the title position: sticky inside its
      scroll range; each ladder item fades + slides in in sequence
    • grain overlay on cream sections, SVG data URI, no asset
    • sticky Apply pill, body-fixed, injected by the mu-plugin in
      wp_footer, fades in past the hero
   All movement is behind prefers-reduced-motion: reduce. */

/* ----- shared tokens -------------------------------------------------- */
.sun-collab-hero.sun-collab-hero,
.sun-collab-who.sun-collab-who,
.sun-collab-offer.sun-collab-offer,
.sun-collab-reveal.sun-collab-reveal,
.sun-collab-ask.sun-collab-ask,
.sun-collab-standards.sun-collab-standards,
.sun-collab-apply.sun-collab-apply,
.sun-collab-faq.sun-collab-faq {
  --sun-ease: cubic-bezier(0.22, 1, 0.36, 1);
  --sun-dur: 500ms;
}

/* ----- 72.flair.1 — scroll reveals ----------------------------------- */
/* Progressive enhancement: @supports(animation-timeline) uses native scroll-driven
   animation (Chrome 115+, Edge 115+, FF experimental). Fallback adds .is-in-view
   via IntersectionObserver in the mu-plugin JS. Both paths animate transform +
   opacity only (per Elaya B7). */
.sun-collab-who.sun-collab-who,
.sun-collab-offer.sun-collab-offer,
.sun-collab-reveal.sun-collab-reveal,
.sun-collab-ask.sun-collab-ask,
.sun-collab-standards.sun-collab-standards,
.sun-collab-apply.sun-collab-apply,
.sun-collab-faq.sun-collab-faq { opacity: 0; transform: translateY(32px); transition: opacity 700ms var(--sun-ease), transform 700ms var(--sun-ease); }
.is-in-view.is-in-view { opacity: 1; transform: none; }

@supports (animation-timeline: view()) {
  .sun-collab-who.sun-collab-who,
  .sun-collab-offer.sun-collab-offer,
  .sun-collab-reveal.sun-collab-reveal,
  .sun-collab-ask.sun-collab-ask,
  .sun-collab-standards.sun-collab-standards,
  .sun-collab-apply.sun-collab-apply,
  .sun-collab-faq.sun-collab-faq {
    animation: sun-collab-rise linear both;
    animation-timeline: view();
    animation-range: entry 0% cover 25%;
    opacity: 0;
    transform: translateY(32px);
    transition: none;
  }
}
@keyframes sun-collab-rise { to { opacity: 1; transform: none; } }

/* ----- 72.flair.2 — hero text gradient + cursor-follow spotlight ----- */
/* Elaya B5: hero H1 is a left-to-right text-gradient on the dark theme (#FFF → #9B9B9B).
   Keeps Alata/Cormorant kit font (not Geist). Everything else kit-identical. */
.sun-collab-hero.sun-collab-hero h1 {
  background: linear-gradient(90deg, #FFFFFF 0%, #9B9B9B 100%);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  color: transparent !important; /* beats §72 v1 color: #FFF !important */
}
/* Fallback for browsers without background-clip:text support — H1 reverts to #FFF */
@supports not (background-clip: text) {
  .sun-collab-hero.sun-collab-hero h1 { background: none; color: #FFFFFF !important; -webkit-text-fill-color: initial; }
}

/* Hero cursor spotlight — JS sets --mx/--my in px (default: top-left of hero). Soft radial
   wash behind the text column; opacity-only animated. */
.sun-collab-hero.sun-collab-hero { position: relative; isolation: isolate; --mx: 20%; --my: 30%; }
.sun-collab-hero.sun-collab-hero::before {
  content: ""; position: absolute; inset: 0; z-index: 0; pointer-events: none;
  background: radial-gradient(600px 420px at var(--mx) var(--my), rgba(185, 141, 88, 0.22), transparent 60%);
  opacity: 0; transition: opacity 500ms var(--sun-ease);
}
.sun-collab-hero.has-spotlight::before { opacity: 1; }
.sun-collab-hero.sun-collab-hero > * { position: relative; z-index: 1; }

/* ----- 72.flair.3 — grain overlay on cream sections ------------------ */
/* Inline SVG noise. Fractal noise, baseFrequency tuned so grain stays
   subtle on 1x and 2x. Overlay sits under everything else (z-index 0). */
.sun-collab-who.sun-collab-who,
.sun-collab-reveal.sun-collab-reveal,
.sun-collab-ask.sun-collab-ask,
.sun-collab-apply.sun-collab-apply { position: relative; isolation: isolate; }
.sun-collab-who.sun-collab-who::after,
.sun-collab-reveal.sun-collab-reveal::after,
.sun-collab-ask.sun-collab-ask::after,
.sun-collab-apply.sun-collab-apply::after {
  content: ""; position: absolute; inset: 0; z-index: 0; pointer-events: none;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 200'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 0.145  0 0 0 0 0.18  0 0 0 0 0.208  0 0 0 0.08 0'/></filter><rect width='100%25' height='100%25' filter='url(%23n)'/></svg>");
  background-size: 180px 180px;
  mix-blend-mode: multiply;
  opacity: 0.6;
}
.sun-collab-who.sun-collab-who > *,
.sun-collab-reveal.sun-collab-reveal > *,
.sun-collab-ask.sun-collab-ask > *,
.sun-collab-apply.sun-collab-apply > * { position: relative; z-index: 1; }

/* ----- 72.flair.4 — tagline reveal section (B11 mandatory) ----------- */
/* Cream section with centered large text, per-word reveal keyed by JS.
   Minimum two lines of text live inside .sun-collab-reveal__text as
   <span class="sun-collab-reveal__word">A</span> <span>short</span> ...
   JS adds .is-lit to each span as it crosses the trigger line. */
.sun-collab-reveal.sun-collab-reveal { padding: 96px 22px !important; background-color: #F4F1EA; }
.sun-collab-reveal .sun-collab-reveal__text { max-width: 18em; margin: 0 auto; font-family: "Cormorant Infant", "Cormorant Garamond", Georgia, serif; font-weight: 400; font-size: clamp(40px, 7vw, 72px) !important; line-height: 1.08; letter-spacing: -0.01em; color: #242E35; text-wrap: balance; }
.sun-collab-reveal .sun-collab-reveal__word { display: inline-block; color: rgba(36, 46, 53, 0.26); transition: color 650ms var(--sun-ease), transform 650ms var(--sun-ease); will-change: color, transform; }
.sun-collab-reveal .sun-collab-reveal__word.is-lit { color: #242E35; }
.sun-collab-reveal .sun-collab-reveal__break { display: block; height: 0; }

/* ----- 72.flair.5 — ask ladder entrance ------------------------------ */
/* The ladder items get a soft stagger via the parent section's reveal; the
   section's own `opacity: 0 → 1 translateY(32px) → 0` is the main entrance.
   No pinned treatment: the Elementor `.sun-collab-ask` container is
   flex-direction: column, which makes a sticky-H2 + offset-ladder layout
   stack awkwardly. The tagline reveal above carries the "big moment"
   instead. */
@media (min-width: 1024px) {
  .sun-collab-ask.sun-collab-ask { padding: 96px 22px !important; }
  .sun-collab-ask .sun-collab-ask__ladder { max-width: 48em; margin-inline: auto; }
}

/* ----- 72.flair.6 — sticky Apply pill --------------------------------- */
/* Injected by sunstone-collaborate.php in wp_footer with aria-labelled anchor
   to #apply. Hidden until the user scrolls past the hero (JS adds .is-visible).
   Placed bottom-LEFT so it does not collide with the Vamtam theme's own
   back-to-top button at bottom-right. */
.sun-collab-cta-pill.sun-collab-cta-pill {
  position: fixed; left: 20px; bottom: 24px; z-index: 50;
  display: inline-flex; align-items: center; gap: 8px;
  padding: 14px 22px;
  background: #242E35; color: #FFFFFF;
  border: 1px solid rgba(255, 255, 255, 0.1);
  border-radius: 999px;
  font-family: Alata, sans-serif; font-size: 14px; letter-spacing: 2px; text-transform: uppercase;
  text-decoration: none;
  box-shadow: 0 10px 30px -8px rgba(0, 0, 0, 0.3);
  opacity: 0; transform: translateY(16px); pointer-events: none;
  transition: opacity 450ms var(--sun-ease), transform 450ms var(--sun-ease);
}
.sun-collab-cta-pill.sun-collab-cta-pill.is-visible { opacity: 1; transform: none; pointer-events: auto; }
/* Hover state only on devices that actually hover (desktop pointer); mobile taps
   leave :focus/:focus-visible stuck, which previously made the pill text invisible
   because it matched the background. */
@media (hover: hover) and (pointer: fine) {
  .sun-collab-cta-pill.sun-collab-cta-pill:hover { background: #B98D58; color: #242E35; }
}
.sun-collab-cta-pill.sun-collab-cta-pill:focus-visible { outline: 3px solid #906A3C; outline-offset: 2px; }
.sun-collab-cta-pill__arrow { display: inline-block; transition: transform 300ms var(--sun-ease); }
@media (hover: hover) and (pointer: fine) {
  .sun-collab-cta-pill.sun-collab-cta-pill:hover .sun-collab-cta-pill__arrow { transform: translateX(3px); }
}
.sun-collab-cta-pill.sun-collab-cta-pill:focus-visible .sun-collab-cta-pill__arrow { transform: translateX(3px); }
@media (max-width: 480px) {
  .sun-collab-cta-pill.sun-collab-cta-pill { left: 12px; bottom: 16px; padding: 12px 18px; font-size: 12px; letter-spacing: 1.5px; }
}

/* Vamtam theme auto-renders .elementor-page-title above the Elementor hero. On
   /collaborate/ that duplicates the H1 and pushes the real hero down a full
   screen on mobile. Hide it. The post id gates it, so no other page is touched. */
.page-id-998104 .elementor-page-title { display: none !important; }

/* ----- 72.flair.7 — motion kill-switch (prefers-reduced-motion) ------ */
@media (prefers-reduced-motion: reduce) {
  .sun-collab-who.sun-collab-who,
  .sun-collab-offer.sun-collab-offer,
  .sun-collab-reveal.sun-collab-reveal,
  .sun-collab-ask.sun-collab-ask,
  .sun-collab-standards.sun-collab-standards,
  .sun-collab-apply.sun-collab-apply,
  .sun-collab-faq.sun-collab-faq { opacity: 1 !important; transform: none !important; animation: none !important; transition: none !important; }
  .sun-collab-reveal .sun-collab-reveal__word { color: #242E35 !important; transition: none !important; }
  .sun-collab-hero.sun-collab-hero::before { display: none; }
  .sun-collab-ladder .sun-collab-ladder__item { opacity: 1 !important; transform: none !important; transition: none !important; }
  .sun-collab-cta-pill { transition: none !important; opacity: 1; transform: none; pointer-events: auto; }
  .sun-collab-cta-pill__arrow { transition: none !important; }
}
/* ==== END 72 FLAIR LAYER ==== */
/* ==== END 72 ==== */
