/* ============================================================================
   competition.css — single competition page + listing.
   ============================================================================ */

.dtr-single-comp { padding: 32px 0 80px; }

.dtr-breadcrumbs { font-size: 0.85rem; color: var(--dtr-grey-600); margin-bottom: 24px; }
.dtr-breadcrumbs__list { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 8px; }
.dtr-breadcrumbs__list li:not(:last-child)::after { content: " / "; opacity: 0.5; margin-left: 8px; }
.dtr-breadcrumbs a { color: inherit; }

.dtr-single-comp__layout { display: grid; grid-template-columns: 1fr; gap: 32px; }
@media (min-width: 1024px) { .dtr-single-comp__layout { grid-template-columns: 1.2fr 1fr; gap: 48px; } }

.dtr-single-comp__media { position: relative; }
.dtr-single-comp__media .dtr-badge { position: absolute; top: 16px; left: 16px; z-index: 3; }

/* --- Native WooCommerce product gallery ----------------------------------
 * The three wc-product-gallery-* theme supports declared in inc/woocommerce.php
 * opt this theme into Woo's native gallery JS: a FlexSlider carousel for the
 * main image, photoswipe lightbox, and inline zoom. The rules below brand-style
 * the gallery chrome (arrows, thumbs, trigger) so it matches the rest of the
 * site. Targets the standard markup Woo emits: .woocommerce-product-gallery,
 * .flex-direction-nav (arrows), .flex-control-thumbs (thumb nav), and the
 * .woocommerce-product-gallery__trigger zoom button.
 * ------------------------------------------------------------------------- */
.dtr-single-comp__media .woocommerce-product-gallery { position: relative; }
.dtr-single-comp__media .woocommerce-product-gallery__wrapper { margin: 0; }
.dtr-single-comp__media .woocommerce-product-gallery__image { border-radius: var(--dtr-radius-lg); overflow: hidden; background: var(--dtr-grey-100); }
.dtr-single-comp__media .woocommerce-product-gallery__image a { display: block; }
.dtr-single-comp__media .woocommerce-product-gallery__image img { display: block; width: 100%; height: auto; aspect-ratio: 4 / 3; object-fit: cover; border-radius: var(--dtr-radius-lg); }

/* PhotoSwipe zoom trigger overlaid on the main image (top-right). */
.dtr-single-comp__media .woocommerce-product-gallery__trigger {
	position: absolute; top: 12px; right: 12px; z-index: 4;
	width: 40px; height: 40px;
	display: flex; align-items: center; justify-content: center;
	background: rgba(255, 255, 255, 0.92);
	color: var(--dtr-primary);
	border-radius: 50%;
	text-decoration: none;
	font-size: 1.05rem;
	box-shadow: var(--dtr-shadow-sm);
	transition: background var(--dtr-transition), color var(--dtr-transition), transform var(--dtr-transition);
}
.dtr-single-comp__media .woocommerce-product-gallery__trigger:hover,
.dtr-single-comp__media .woocommerce-product-gallery__trigger:focus-visible {
	background: var(--dtr-gold); color: var(--dtr-primary); transform: scale(1.05);
}

/* FlexSlider prev/next arrows on the main image. Reveal on hover (desktop)
 * and always-visible on touch (no hover) so swipe + tap both work. */
.dtr-single-comp__media .flex-direction-nav { list-style: none; padding: 0; margin: 0; }
.dtr-single-comp__media .flex-direction-nav li { position: static; margin: 0; }
.dtr-single-comp__media .flex-direction-nav a {
	position: absolute; top: 50%; transform: translateY(-50%);
	width: 44px; height: 44px;
	display: flex; align-items: center; justify-content: center;
	background: rgba(255, 255, 255, 0.92);
	color: var(--dtr-primary);
	border-radius: 50%;
	text-decoration: none;
	text-indent: -9999px;
	overflow: hidden;
	box-shadow: var(--dtr-shadow-sm);
	opacity: 0;
	z-index: 3;
	transition: opacity var(--dtr-transition), background var(--dtr-transition), color var(--dtr-transition);
}
.dtr-single-comp__media .woocommerce-product-gallery:hover .flex-direction-nav a,
.dtr-single-comp__media .flex-direction-nav a:focus-visible { opacity: 1; }
.dtr-single-comp__media .flex-direction-nav a:hover,
.dtr-single-comp__media .flex-direction-nav a:focus-visible { background: var(--dtr-gold); color: var(--dtr-primary); }
.dtr-single-comp__media .flex-direction-nav a.flex-prev { left: 12px; }
.dtr-single-comp__media .flex-direction-nav a.flex-next { right: 12px; }
.dtr-single-comp__media .flex-direction-nav a::before {
	content: ""; display: block;
	width: 10px; height: 10px;
	border-top: 2px solid currentColor;
	border-right: 2px solid currentColor;
	text-indent: 0;
	position: absolute; top: 50%; left: 50%;
}
.dtr-single-comp__media .flex-direction-nav a.flex-prev::before { transform: translate(-30%, -50%) rotate(-135deg); }
.dtr-single-comp__media .flex-direction-nav a.flex-next::before { transform: translate(-70%, -50%) rotate(45deg); }
.dtr-single-comp__media .flex-direction-nav .flex-disabled { opacity: 0 !important; pointer-events: none; }
@media (hover: none) {
	.dtr-single-comp__media .flex-direction-nav a { opacity: 1; }
}

/* Thumbnails -- uniform squares in a horizontal row BELOW the main image.
 * Active thumb gets a gold border + full opacity; inactive thumbs dim slightly
 * so the active one reads at a glance. */
.dtr-single-comp__media .flex-control-nav.flex-control-thumbs {
	list-style: none;
	margin: 12px 0 0;
	padding: 0;
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(72px, 1fr));
	gap: 8px;
}
.dtr-single-comp__media .flex-control-nav.flex-control-thumbs li { margin: 0; cursor: pointer; }
.dtr-single-comp__media .flex-control-nav.flex-control-thumbs li img {
	display: block;
	width: 100%;
	aspect-ratio: 1 / 1;
	object-fit: cover;
	border-radius: var(--dtr-radius-sm);
	border: 2px solid transparent;
	opacity: 0.7;
	transition: opacity var(--dtr-transition), border-color var(--dtr-transition);
}
.dtr-single-comp__media .flex-control-nav.flex-control-thumbs li img:hover,
.dtr-single-comp__media .flex-control-nav.flex-control-thumbs li img.flex-active {
	opacity: 1; border-color: var(--dtr-gold);
}
@media (max-width: 599px) {
	.dtr-single-comp__media .flex-control-nav.flex-control-thumbs {
		grid-template-columns: repeat(auto-fill, minmax(64px, 1fr));
		gap: 6px;
	}
}

/* PhotoSwipe fullscreen lightbox -- brand the top bar overlay. */
.pswp__top-bar, .pswp__caption { background: rgba(18, 67, 80, 0.85); }

.dtr-single-comp__title { font-size: clamp(1.75rem, 4vw, 2.75rem); margin: 0 0 16px; }

.dtr-single-comp__price { display: flex; align-items: baseline; flex-wrap: wrap; gap: 12px; padding: 16px 0; border-bottom: 1px solid var(--dtr-grey-100); margin-bottom: 16px; }
.dtr-single-comp__price-label { color: var(--dtr-grey-600); }
.dtr-single-comp__price-value { font-family: var(--dtr-font-heading); font-size: 2rem; font-weight: 800; color: var(--dtr-primary); }
.dtr-single-comp__cash { color: var(--dtr-grey-600); font-size: 0.95rem; }

.dtr-single-comp__progress { margin: 16px 0 24px; }
.dtr-single-comp__sold-line { margin: 8px 0 0; color: var(--dtr-grey-600); font-size: 0.95rem; }
/* No opacity here — Lighthouse measures the effective rendered colour and
 * grey-600 at 0.75 alpha over white fails AA. grey-600 alone passes (4.83:1). */
.dtr-single-comp__sold-line small { font-size: 0.75rem; color: var(--dtr-grey-600); }

.dtr-single-comp__countdown { margin: 24px 0; }
.dtr-single-comp__countdown .dtr-eyebrow { display: block; margin-bottom: 8px; }

.dtr-notice { padding: 16px; border-radius: var(--dtr-radius-md); }
.dtr-notice--closed { background: var(--dtr-grey-100); color: var(--dtr-grey-900); }
.dtr-notice--soldout { background: var(--dtr-cream); border: 1px solid var(--dtr-gold); color: var(--dtr-grey-900); }
.dtr-notice--soldout strong { display: block; font-family: var(--dtr-font-heading); color: var(--dtr-primary); font-size: 1.1rem; }
.dtr-notice--soldout p { margin: 8px 0 0; }

/* --- Enter form (skill question + qty) ------------------------------------ */
.dtr-enter-form { background: var(--dtr-cream); border: 1px solid var(--dtr-beige); border-radius: var(--dtr-radius-lg); padding: 24px; }
.dtr-enter-form__skill { border: 0; padding: 0; margin: 0 0 24px; }
.dtr-enter-form__skill legend { font-family: var(--dtr-font-heading); font-weight: 700; color: var(--dtr-primary); padding: 0 0 8px; font-size: 0.95rem; }
.dtr-enter-form__question { font-size: 1.1rem; font-weight: 600; color: var(--dtr-primary); margin: 0 0 12px; }
.dtr-enter-form__option { display: flex; align-items: center; gap: 10px; padding: 10px 12px; background: var(--dtr-white); border: 2px solid transparent; border-radius: var(--dtr-radius-md); margin-bottom: 8px; cursor: pointer; transition: border-color var(--dtr-transition); }
.dtr-enter-form__option:hover { border-color: var(--dtr-gold); }
.dtr-enter-form__option input { accent-color: var(--dtr-gold); }
.dtr-enter-form__qty { margin-bottom: 16px; }
.dtr-enter-form__qty-info { font-size: 0.85rem; color: var(--dtr-grey-600); font-weight: 600; margin: 0 0 8px; }
.dtr-enter-form__qty-row { display: flex; align-items: center; gap: 12px; margin-bottom: 12px; }
.dtr-enter-form__qty-row label { font-family: var(--dtr-font-heading); font-weight: 600; }
.dtr-enter-form__qty-input { width: 96px; min-height: 44px; padding: 10px 12px; border: 2px solid var(--dtr-grey-300); border-radius: var(--dtr-radius-sm); font-family: var(--dtr-font-body); font-size: 1.1rem; font-weight: 700; text-align: center; color: var(--dtr-primary); }
.dtr-enter-form__qty-input:focus-visible { outline: 3px solid var(--dtr-gold); outline-offset: 1px; border-color: var(--dtr-gold); }
/* Single row of quick-add buttons on desktop; wraps to multiple rows on mobile. */
.dtr-enter-form__quick { display: flex; flex-wrap: wrap; gap: 8px; }
.dtr-enter-form__quick-btn { flex: 1 1 auto; min-width: 56px; min-height: 44px; padding: 8px 12px; background: var(--dtr-white); color: var(--dtr-primary); border: 2px solid var(--dtr-primary); border-radius: var(--dtr-radius-md); font-family: var(--dtr-font-heading); font-weight: 700; font-size: 0.95rem; cursor: pointer; transition: background var(--dtr-transition), color var(--dtr-transition), border-color var(--dtr-transition); }
.dtr-enter-form__quick-btn:hover { background: var(--dtr-primary); color: var(--dtr-white); }
.dtr-enter-form__quick-btn:focus-visible { outline: 3px solid var(--dtr-gold); outline-offset: 2px; }
.dtr-enter-form__quick-btn[disabled], .dtr-enter-form__quick-btn.is-disabled { background: var(--dtr-grey-100); color: var(--dtr-grey-600); border-color: var(--dtr-grey-300); cursor: not-allowed; opacity: 0.6; }
.dtr-enter-form__quick-btn[disabled]:hover, .dtr-enter-form__quick-btn.is-disabled:hover { background: var(--dtr-grey-100); color: var(--dtr-grey-600); }
.dtr-enter-form__qty-max { margin: 12px 0 0; padding: 10px 14px; border-radius: var(--dtr-radius-md); background: var(--dtr-cream); border: 1px solid var(--dtr-beige); color: var(--dtr-gold-text); font-weight: 600; font-size: 0.9rem; }
.dtr-enter-form__submit { width: 100%; font-size: 1.05rem; padding: 14px 24px; }
.dtr-enter-form__note { text-align: center; font-size: 0.85rem; color: var(--dtr-grey-600); margin: 12px 0 0; }

/* JS validation feedback (competition-form.js). The message sits directly above
   the submit button; the skill fieldset gets a danger-coloured outline. */
.dtr-enter-form__error { margin: 0 0 12px; padding: 10px 14px; border-radius: var(--dtr-radius-md); background: rgba( 217, 76, 58, 0.08 ); border: 1px solid var(--dtr-red); color: var(--dtr-red); font-weight: 600; font-size: 0.95rem; }
.dtr-enter-form__skill--error { border: 2px solid var(--dtr-red); border-radius: var(--dtr-radius-md); padding: 12px; }
.dtr-enter-form__skill--error legend { color: var(--dtr-red); }
/* Underline + darker teal — Lighthouse "link-in-text-block" flags links that
 * rely on colour alone within paragraph text. Free-entry CTA is statutory. */
.dtr-enter-form__note a { color: var(--dtr-teal-text); text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 2px; }

/* --- Spec table ----------------------------------------------------------- */
.dtr-single-comp__details { margin-top: 64px; }
.dtr-spec-table { width: 100%; border-collapse: collapse; margin: 16px 0; }
.dtr-spec-table th, .dtr-spec-table td { padding: 12px 16px; border-bottom: 1px solid var(--dtr-grey-100); text-align: left; }
.dtr-spec-table th { width: 40%; color: var(--dtr-grey-600); font-weight: 600; }
.dtr-spec-table td { color: var(--dtr-primary); font-weight: 600; }

/* --- Competition terms ---------------------------------------------------- */
.dtr-single-comp__terms { margin-top: 48px; padding: 32px; background: var(--dtr-cream); border-radius: var(--dtr-radius-lg); border-left: 4px solid var(--dtr-gold); }
.dtr-comp-terms { display: grid; grid-template-columns: 1fr; gap: 8px 24px; margin: 0; }
@media (min-width: 600px) { .dtr-comp-terms { grid-template-columns: max-content 1fr; gap: 12px 32px; } }
.dtr-comp-terms dt { font-family: var(--dtr-font-heading); font-weight: 700; color: var(--dtr-primary); margin: 0; }
.dtr-comp-terms dd { margin: 0 0 8px; color: var(--dtr-grey-900); }
/* Underline links inside dd — Lighthouse "link-in-text-block" flags links
 * inside paragraph/text contexts that rely on colour alone. */
.dtr-comp-terms dd a { text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 2px; }

/* --- Sticky mobile CTA ---------------------------------------------------- */
.dtr-sticky-cta { position: fixed; left: 0; right: 0; bottom: 0; background: var(--dtr-white); border-top: 1px solid var(--dtr-grey-100); box-shadow: 0 -4px 16px rgba(18,67,80,0.08); padding: 12px 16px; display: flex; align-items: center; justify-content: space-between; gap: 12px; z-index: 40; }
.dtr-sticky-cta__price { font-family: var(--dtr-font-heading); font-weight: 800; color: var(--dtr-primary); font-size: 1.25rem; }
.dtr-sticky-cta .dtr-btn { flex-shrink: 0; }
@media (min-width: 768px) { .dtr-sticky-cta { display: none; } }

/* --- Competitions archive hero ------------------------------------------- */
/* Teal banner above the product grid. Mirrors the visual treatment used by
 * the About / How It Works heroes for site-wide consistency. Output by
 * dtr_render_competitions_hero() in inc/woocommerce.php; copy is editable
 * in Customizer -> "Competitions Archive Hero". */
.dtr-comp-hero {
	position: relative;
	padding: clamp(48px, 8vw, 96px) 24px clamp(40px, 6vw, 80px);
	background:
		radial-gradient(circle at 15% 20%, rgba(226, 160, 58, 0.18), transparent 55%),
		radial-gradient(circle at 85% 80%, rgba(32, 133, 156, 0.18), transparent 55%),
		linear-gradient(180deg, var(--dtr-primary) 0%, var(--dtr-primary-dark) 100%);
	color: var(--dtr-white);
	overflow: hidden;
	margin-bottom: clamp(32px, 5vw, 56px);
}
.dtr-comp-hero::before {
	content: "";
	position: absolute;
	inset: 0;
	background: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='60' height='60' viewBox='0 0 60 60'><circle cx='30' cy='30' r='1' fill='%23FDFAF2' fill-opacity='0.05'/></svg>");
	pointer-events: none;
}
.dtr-comp-hero__inner {
	position: relative;
	max-width: 760px;
	margin: 0 auto;
	text-align: center;
}
.dtr-comp-hero__eyebrow {
	color: var(--dtr-gold);
	margin: 0 0 12px;
}
.dtr-comp-hero__title {
	color: var(--dtr-white);
	font-family: var(--dtr-font-heading);
	font-size: clamp(2rem, 5vw, 3.5rem);
	font-weight: 800;
	line-height: 1.1;
	margin: 0 0 1rem;
}
.dtr-comp-hero__sub {
	font-family: var(--dtr-font-body);
	font-size: clamp(1rem, 1.6vw, 1.2rem);
	line-height: 1.55;
	color: rgba(253, 250, 242, 0.92);
	max-width: 620px;
	margin: 0 auto;
}

/* ── Bonus-prize progress bar (star milestones) ───────────────────────────── */
.dtr-comp-bonus {
	margin-block: 1.1rem;
}
.dtr-comp-bonus__value {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 0.1rem;
	margin: 0 0 0.6rem;
	text-align: center;
}
.dtr-comp-bonus__value-eyebrow {
	font-family: var(--dtr-font-heading);
	font-size: 0.72rem;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.08em;
	color: var(--dtr-primary);
}
.dtr-comp-bonus__value-amount {
	font-family: var(--dtr-font-heading);
	font-size: 2rem;
	font-weight: 800;
	line-height: 1;
	color: var(--dtr-gold-text);
}
.dtr-comp-bonus__sold {
	font-family: var(--dtr-font-heading);
	font-size: 0.85rem;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.04em;
	color: var(--dtr-primary);
	margin: 0 0 0.4rem;
}
.dtr-comp-bonus__track {
	position: relative;
	width: 100%;
	height: 14px;
	background: var(--dtr-grey-100);
	border-radius: var(--dtr-radius-pill);
}
.dtr-comp-bonus__fill {
	position: absolute;
	inset-block: 0;
	inset-inline-start: 0;
	height: 100%;
	background: linear-gradient(90deg, var(--dtr-teal), var(--dtr-gold));
	border-radius: var(--dtr-radius-pill);
	transition: width 0.4s ease-in-out;
}
.dtr-comp-bonus__stars {
	position: absolute;
	inset: 0;
	display: flex;
	justify-content: space-between;
	align-items: center;
	padding-inline: 0.35rem;
}
.dtr-comp-bonus__star {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 26px;
	height: 26px;
	background: var(--dtr-gold);
	color: var(--dtr-white);
	font-size: 0.85rem;
	line-height: 1;
	border-radius: var(--dtr-radius-sm);
	box-shadow: 0 1px 3px rgba(18, 67, 80, 0.25);
}
.dtr-comp-bonus__count {
	margin: 0.55rem 0 0;
	text-align: center;
	font-size: 0.9rem;
	font-weight: 600;
	color: var(--dtr-grey-900);
}
.dtr-comp-bonus__count-sold { color: var(--dtr-gold-text); font-weight: 800; }
.dtr-comp-bonus__count small {
	display: block;
	margin-top: 0.15rem;
	font-size: 0.72rem;
	font-weight: 400;
	color: var(--dtr-grey-600, #6b7280);
}
