/* Accessibility updates, November 2026.
   Each block is tagged with its item ID from REMEDIATION-PLAN.md. */

.screen-reader-text {
	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;
}

/* ---- A1: skip link ------------------------------------------------- */
.gi-skip-link {
	position: absolute;
	left: -9999px;
	top: 0;
	z-index: 1000000;
	background: #383735;
	color: #fff !important;
	padding: 12px 16px;
	font-family: 'Montserrat', sans-serif;
	font-size: 15px;
	text-decoration: underline;
}
.gi-skip-link:focus {
	left: 16px;
	top: 16px;
	outline: 3px solid #fff !important;
	box-shadow: 0 0 0 5px #383735;
}
#main-content:focus { outline: none; }
/* The header is position:fixed; keep anything scrolled into view by keyboard
   focus (skip link target, Tab) below it (WCAG 2.4.11). */
html { scroll-padding-top: 110px; }
@media (max-width: 767px) { html { scroll-padding-top: 96px; } }

/* ---- F-MENU: visible keyboard focus everywhere --------------------- */
/* The theme removes outlines in the header (".site_header .header__content *:focus"). */
a:focus-visible,
button:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
summary:focus-visible,
[role="button"]:focus-visible,
[tabindex]:not([tabindex="-1"]):focus-visible,
.select2-selection:focus-visible,
.site_header .header__content *:focus-visible {
	outline: 2px solid #383735 !important;
	outline-offset: 2px !important;
	box-shadow: 0 0 0 4px #fff !important;
}

/* ---- F-MENU: closed dropdowns are hidden, not just transparent ----- */
.site_header .nav .menu .nav__dd,
.site_header .nav > .menu > li > .sub-menu {
	visibility: hidden;
	transition: opacity .3s, top .3s, visibility 0s linear .3s;
}
@media (min-width: 1200px) {
	.site_header .nav > .menu > li:hover > .nav__dd,
	.site_header .nav > .menu > li.gi-open > .nav__dd {
		visibility: visible;
		opacity: 1;
		top: 100%;
		pointer-events: auto;
		transition-delay: 0s;
	}
	.site_header .nav > .menu > li:hover > .sub-menu,
	.site_header .nav > .menu > li.gi-open > .sub-menu {
		visibility: visible;
		opacity: 1;
		top: calc(100% + 32px);
		pointer-events: auto;
		transition-delay: 0s;
	}
}
/* Disclosure button: invisible to mouse users, shown when it has keyboard focus. */
.site_header .nav > .menu > li > .gi-dd-toggle {
	position: absolute;
	width: 1px; height: 1px;
	margin: 0; padding: 0;
	overflow: hidden;
	clip-path: inset(50%);
	border: 0;
	background: transparent;
	cursor: pointer;
}
.site_header .nav > .menu > li > .gi-dd-toggle:focus-visible {
	width: 22px; height: 22px;
	clip-path: none;
	overflow: visible;
	margin-left: 2px;
	margin-right: -24px; /* takes no net space, so the menu doesn't shift */
	vertical-align: middle;
	position: relative;
	z-index: 2; /* paint above the next menu item (re-check N2) */
	background: #fff url("../images/arrow-right.svg") no-repeat center / 8px 10px;
	transform: rotate(90deg);
}
.site_header .nav > .menu > li.gi-open > .gi-dd-toggle:focus-visible { transform: rotate(-90deg); }

/* Menu card titles: were <h3>, now <p> (F-HEADINGS); same look as before. */
.site_header .nav .nav__dd-inner .nav__dd-image-content p.nav__dd-title {
	font-family: 'Playfair Display', sans-serif;
	font-weight: 600;
	font-size: 30px;
	line-height: 1.3333;
	letter-spacing: 0.06em;
	margin-bottom: 10px;
	color: #fff;
}

/* ---- F-MOBILE-NAV --------------------------------------------------- */
button.btn-mobile-nav,
button.back-to,
.homepage-slider [role="button"] {
	background: transparent;
	border: 0;
	padding: 0;
	font: inherit;
	color: inherit;
	cursor: pointer;
}
.site_header .nav li.back-to-item { list-style: none; padding: 0 !important; margin: 0 !important; }
/* Genesis ".js nav button:focus" turns Back #b8a99d on white (2.28:1); keep it dark (re-check 3, N6). */
.js .site_header nav button.back-to:focus,
.js .site_header nav button.back-to:focus-visible { color: #383735; }
/* Try at Home FAQ heads are now buttons; show keyboard focus. */
.js-accordion .accordion__head[role="button"] { cursor: pointer; }
@media (max-width: 1199px) {
	/* Closed slide-in menu is hidden from screen readers and the Tab order. */
	.site_header .header__nav {
		visibility: hidden;
		transition: transform .3s, opacity .3s, visibility 0s linear .3s;
	}
	body.has-mobile-nav .site_header .header__nav {
		visibility: visible;
		transition-delay: 0s;
	}
	.site_header .nav > .menu > li > .sub-menu.sub-menu-is-visible,
	.site_header .nav .menu .nav__dd.sub-menu-is-visible {
		visibility: visible;
		transition-delay: 0s;
	}
	.site_header .nav > .menu > li > .gi-dd-toggle { display: none; }
	button.back-to { width: 100%; text-align: left; }
}
/* Old off-canvas menu that the current header never opens. */
.mobile_menu { display: none !important; }

/* ---- A2: cart count badge ------------------------------------------ */
.header-cart-link { position: relative; }
.header-cart-link .header-cart-count {
	position: absolute;
	top: -7px;
	right: -9px;
	min-width: 17px;
	height: 17px;
	padding: 0 4px;
	border-radius: 9px;
	background: #383735;
	color: #fff;
	font-family: 'Montserrat', sans-serif;
	font-size: 11px;
	font-weight: 600;
	line-height: 17px;
	text-align: center;
}
.header-cart-link .header-cart-count.is-empty { display: none; }

/* ---- F-CONTRAST ------------------------------------------------------ */
/* Place order and Proceed to checkout: dark text on the blush button (6.27:1). */
#place_order,
.woocommerce #place_order,
.wc-proceed-to-checkout .checkout-button,
.woocommerce a.checkout-button {
	color: #383735 !important;
}
/* Add to cart: darker gray (4.67:1). Before an option is chosen: dark text on light gray. */
.single_add_to_cart_button,
.woocommerce button.single_add_to_cart_button {
	background-color: #71747e !important;
	color: #fff !important;
}
.single_add_to_cart_button.disabled,
.woocommerce button.single_add_to_cart_button.disabled {
	background-color: #ccced4 !important;
	color: #383735 !important;
	opacity: 1 !important; /* WooCommerce fades it to 50%, which drops the text below 4.5:1 */
}
/* Product price (4.66:1). */
.summary .price,
.summary .price bdi,
.summary .price .woocommerce-Price-amount,
.woocommerce-variation-price .price {
	color: #827166 !important;
}
/* Footer links. */
.footer-wrap .footer-link,
.footer-wrap .footer-links a {
	color: #6b6b6b !important; /* 5.33:1 on white, 4.70:1 on the beige My Account background */
}

/* ---- F-SLIDER: pause controls --------------------------------------- */
.gi-slider-pause {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	margin: 8px 0;
	padding: 6px 10px;
	min-height: 32px;
	background: #fff;
	color: #383735;
	border: 1px solid #383735;
	border-radius: 2px;
	font-family: 'Montserrat', sans-serif;
	font-size: 12px;
	letter-spacing: 0.04em;
	cursor: pointer;
}
.gi-slider-pause__icon {
	width: 10px; height: 10px;
	border-left: 3px solid #383735;
	border-right: 3px solid #383735;
	box-sizing: border-box;
}
.gi-slider-pause.is-paused .gi-slider-pause__icon {
	border-right: 0;
	border-left: 9px solid #383735;
	border-top: 5px solid transparent;
	border-bottom: 5px solid transparent;
}
.homepage-slider .gi-slider-pause {
	position: absolute;
	z-index: 5;
	left: 16px;
	bottom: 16px;
}
.homepage-slider .inner { position: relative; }
@media (max-width: 1024px) {
	/* Keep clear of the slide dots at the bottom. */
	.homepage-slider .gi-slider-pause { top: 12px; bottom: auto; left: 12px; }
}

/* ---- F-CHECKOUT-ERRORS ---------------------------------------------- */
.gi-field-errors__intro { margin: 8px 0 4px; }
.gi-field-errors { margin: 0 0 0 18px; padding: 0; list-style: disc; }
.gi-field-errors a { text-decoration: underline; }
.gi-field-error {
	margin: 4px 0 0;
	color: #a4001c;
	font-size: 13px;
}

/* ---- F-MINOR: show-password button at least 24 x 24 px --------------- */
.woocommerce form .show-password-input,
.woocommerce-page form .show-password-input {
	min-width: 24px;
	min-height: 24px;
}

/* ---- F-HEADINGS: former <h6> elements keep their look ---------------- */
.card-featured-dress-v2 .gi-card-price {
	font-family: 'Montserrat', sans-serif;
	font-weight: 500;
	font-size: 15px;
	line-height: 1.25;
	margin: 0 0 0.25rem;
}
.slider-testimonials-v2 .gi-testimonial-author {
	font-family: 'Montserrat', sans-serif;
	font-style: normal;
	font-weight: 700;
	font-size: 22px;
	line-height: 150%;
	color: #000;
	margin: 0 0 0.25rem;
}
@media (max-width: 767px) {
	.slider-testimonials-v2 .gi-testimonial-author {
		font-size: 18px;
		margin-bottom: 2px;
	}
}

/* ---- F-MENU: closed header search box leaves the Tab order ------------ */
body:not(.has-search) .site_header .header__actions .search-form {
	visibility: hidden;
	transition: all .3s, visibility 0s linear .3s;
}

/* ---- Scroll-in animations: never leave focused content transparent ---- */
[data-aos]:focus-within {
	opacity: 1 !important;
	transform: none !important;
	transition: none !important;
}
@media (prefers-reduced-motion: reduce) {
	[data-aos] {
		opacity: 1 !important;
		transform: none !important;
		transition: none !important;
	}
}

/* ---- F-SLIDER: slider dot buttons are at least 24 x 24 px ------------- */
.slick-dots li button,
.slick-dots-new li button {
	min-width: 24px;
	min-height: 24px;
}

/* ---- F-MOBILE-NAV / F-MENU: the theme hides search submit buttons
   (opacity 0); show one when it has keyboard focus ------------------- */
.site_header .search-form .search__btn:focus-visible { opacity: 1; }

/* ---- F-MENU review fixes --------------------------------------------- */
/* Tall dropdowns scroll inside short windows. */
@media (min-width: 1200px) {
	.site_header .nav .menu .nav__dd {
		max-height: calc(100vh - 100px);
		overflow-y: auto;
	}
	/* Escape hides a hover-opened dropdown until the pointer leaves (WCAG 1.4.13). */
	.site_header .nav > .menu > li.gi-dismissed > .nav__dd,
	.site_header .nav > .menu > li.gi-dismissed > .sub-menu {
		visibility: hidden !important;
		opacity: 0 !important;
		pointer-events: none !important;
	}
}
/* Links inside overflow:hidden image boxes (the image sits on top of the link):
   draw the focus frame on the box itself, above the image. */
.card__img:focus-within,
.image-fit:focus-within,
.woocommerce-product-gallery__image:focus-within,
.nav__dd-image:focus-within {
	position: relative;
}
.card__img:focus-within::after,
.image-fit:focus-within::after,
.woocommerce-product-gallery__image:focus-within::after,
.nav__dd-image:focus-within::after {
	content: '';
	position: absolute;
	inset: 0;
	border: 3px solid #383735;
	box-shadow: inset 0 0 0 3px #fff;
	z-index: 20;
	pointer-events: none;
}
/* The hover-zoom image would sit on top of a focused gallery link. */
.woocommerce-product-gallery__image a:focus-visible ~ .zoomImg { opacity: 0 !important; }

/* ---- F-CONTRAST review fixes ----------------------------------------- */
/* Sale products: WooCommerce fades the struck-through old price to 70%. */
.summary .price del,
.summary .price del bdi,
.woocommerce-variation-price .price del {
	opacity: 1 !important;
}
/* "Try On At Home!" button under Add to cart: same fix as Place order. */
.woocommerce a.try-on-btn,
a.try-on-btn {
	color: #383735 !important;
}
/* Sale badge on product cards. */
.woocommerce span.onsale,
span.onsale {
	color: #383735 !important;
}
/* Sort dropdown on shop, category and search pages. */
.woocommerce .woocommerce-ordering select,
select.orderby {
	background-color: #71747e !important;
	color: #fff !important;
}
/* Price-range dash on product cards (WooCommerce default #958e09). */
.woocommerce ul.products li.product .price {
	color: #050507;
}
/* FAQ accordion headings (product-page accordions are white and keep their own rule). */
.accordion,
.accordion-active,
.accordion:hover,
.accordion:focus {
	background-color: #71747e;
}
/* Contact and Stockists form Submit (Ninja Forms field 4). The page prints its own
   <style> after this file, so these need extra specificity. */
body .nf-field-element #nf-field-4,
body .nf-form-cont .nf-field-element #nf-field-4,
.nf-form-cont input[type="submit"],
.nf-form-cont input[type="button"] {
	background-color: #71747e !important;
	color: #fff !important;
}
/* Blog and shop pagination. */
ul.page-numbers li a.page-numbers,
body .archive-pagination li a,
body .archive-pagination .pagination-next > a,
body .archive-pagination .pagination-previous > a { color: #71747e !important; }
ul.page-numbers li span.page-numbers.current,
body .archive-pagination li.active a { background-color: #71747e !important; color: #fff !important; }
/* Veils & Capes landing page: gray body text (#8e8e8e, 2.9 to 3.3:1) and the inactive tab. */
.best-seller-headline p,
.product-content p,
.vc-best-seller-headline p,
.vc-carousel-header p,
.vc-faq-answer a,
.vc-faq-answer p,
.vc-faq-cta p,
.vc-faq-description,
.vc-faq-item,
.vc-founder-description,
.vc-founder-description p,
.vc-founders-subtitle,
.vc-founders-text p,
.vc-product-content p,
.vc-slider-cta p,
.vc-slider-label,
.vc-testimonial-header p,
.vc-testimonial-tes-info p,
.vc-testimonial-text {
	color: #6b6b6b !important;
}
.vc-tab-btn:not(.active) {
	color: #2e2e2e !important;
	opacity: 1 !important;
}
/* Chicago page testimonial location. */
.card-testimonial .card__subhead h5 { color: #6b6e78; }
/* Try-at-home date picker weekday labels. */
.litepicker .container__months .month-item-weekdays-row > div { color: #6b6b6b !important; }
/* Home hero: text sits on photos; a soft shadow keeps it readable on light areas. */
.homepage-slider .text-wrap,
.homepage-slider .text-wrap .heading,
.homepage-slider .text-wrap .text {
	text-shadow: 0 1px 3px rgba(0, 0, 0, .55), 0 0 14px rgba(0, 0, 0, .35);
}
.homepage-slider .slider_btn { text-shadow: none; }

/* F-HEADINGS review: the card price is now a <p>; a phone-only rule hides
   description paragraphs in these cards, so keep the price visible. */
@media (max-width: 767px) {
	.card-featured-dress-v2 .gi-card-price { display: block !important; }
}

/* ---- F-SLIDER review fixes ------------------------------------------- */
@media (max-width: 400px) {
	/* Icon-only on very small screens so it doesn't cover the slide heading. */
	.homepage-slider .gi-slider-pause { padding: 6px 8px; position: static; margin: 8px 12px; }
	.homepage-slider .gi-slider-pause .gi-slider-pause__text {
		position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap;
	}
}
.featured-logos-slider > .gi-slider-pause { margin: 10px 16px; }
.gi-anim-paused { animation-play-state: paused !important; }
@media (prefers-reduced-motion: reduce) {
	.vc-logo-track { animation-play-state: paused !important; }
}
.gi-video-pause {
	position: absolute;
	z-index: 5;
	left: 12px;
	bottom: 12px;
}

/* F-MINOR review: converted empty header cells have no data-title label. */
.woocommerce table.shop_table_responsive tr td.gi-was-th::before,
.woocommerce-page table.shop_table_responsive tr td.gi-was-th::before { content: none !important; }
@media (max-width: 768px) {
	/* Re-check F-MINOR 1: the converted cell is empty, so don't draw a blank band on phones. */
	.woocommerce table.shop_table_responsive tr td.gi-was-th,
	.woocommerce-page table.shop_table_responsive tr td.gi-was-th { display: none !important; }
}

/* ---- Re-check fixes --------------------------------------------------- */
/* style.css makes every button transparent on hover/focus; keep pause buttons solid. */
.gi-slider-pause:hover,
.gi-slider-pause:focus,
.gi-slider-pause:active {
	background: #fff !important;
	color: #383735 !important;
}
/* Error summary links: at least 24px tall targets (WCAG 2.5.8). */
.gi-field-errors li { margin: 2px 0; }
.gi-field-errors a { display: inline-block; min-height: 24px; line-height: 24px; }
/* WooCommerce's own server-side error list: same 24px targets (re-check R1). */
.woocommerce-checkout .woocommerce-NoticeGroup-checkout .woocommerce-error li a,
.woocommerce-checkout .woocommerce-error li a { display: inline-block; min-height: 24px; line-height: 24px; }

/* Follow-up 14: mega-menu column titles that have their own page are clickable on desktop and
   tappable on mobile (mega-menu.css set pointer-events:none on every column title). Titles with
   no page (.gi-menu-heading, no href) stay plain text. */
.site_header .nav .nav__dd-inner > .sub-menu > li > a[href] { pointer-events: auto; cursor: pointer; }

/* The slide-in menu's Back buttons now exist at every width; desktop dropdowns don't show them. */
@media (min-width: 1200px) {
	.site_header .nav .back-to,
	.site_header .nav li.back-to-item { display: none !important; }
}
/* "#" parents are buttons without an href now; keep the pointer cursor. */
.site_header .nav > .menu > li > a.gi-dd-parent { cursor: pointer; }
