/* ==========================================================================
   OMTB 2026 — depth & motion layer

   Loaded after main.css. Everything here is additive: it deepens and animates
   the approved layout without changing its structure, spacing or palette.
   Every effect is disabled under prefers-reduced-motion.
   ========================================================================== */

:root {
	/* Elevation tinted with the brand red rather than neutral grey, so cards
	   sit in the OMTB world instead of floating on a generic grey page. */
	--omtb-e1: 0 1px 2px rgba(58, 8, 0, .10), 0 2px 6px rgba(58, 8, 0, .07);
	--omtb-e2: 0 2px 4px rgba(58, 8, 0, .10), 0 8px 18px rgba(58, 8, 0, .10);
	--omtb-e3: 0 4px 8px rgba(58, 8, 0, .12), 0 18px 38px rgba(58, 8, 0, .16);
	--omtb-e4: 0 8px 14px rgba(58, 8, 0, .16), 0 34px 66px rgba(58, 8, 0, .22);

	--omtb-gold:      #f5c451;
	--omtb-gold-soft: rgba(245, 196, 81, .55);

	--omtb-ease:   cubic-bezier(.22, 1, .36, 1);
	--omtb-spring: cubic-bezier(.34, 1.56, .64, 1);
}

/* A whisper of film grain keeps large flat areas from looking dead.
   Kept very low and in soft-light: multiply at any real strength darkens
   white text into the background. */
body::after {
	content: "";
	position: fixed; inset: 0; z-index: 9999;
	pointer-events: none; opacity: .045; mix-blend-mode: soft-light;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='140' height='140' filter='url(%23n)' opacity='.55'/%3E%3C/svg%3E");
}

/* ==========================================================================
   Scroll reveals
   ========================================================================== */
.omtb-reveal {
	opacity: 0;
	transform: translate3d(0, 26px, 0);
	transition: opacity .75s var(--omtb-ease), transform .75s var(--omtb-ease);
	transition-delay: var(--omtb-delay, 0ms);
	will-change: opacity, transform;
}
.omtb-reveal.is-in { opacity: 1; transform: none; }

/* ==========================================================================
   Header
   ========================================================================== */
.omtb-header { position: sticky; top: 0; }
.omtb-header__bar {
	transition: box-shadow .35s var(--omtb-ease), backdrop-filter .35s, min-height .35s var(--omtb-ease);
}
.omtb-header.is-stuck .omtb-header__bar {
	box-shadow: 0 10px 30px rgba(0, 0, 0, .34);
	backdrop-filter: saturate(1.25) blur(2px);
	min-height: 56px;
}
.omtb-header.is-stuck .omtb-logo img { height: 56px; transition: height .35s var(--omtb-ease); }
.omtb-logo img { transition: height .35s var(--omtb-ease), transform .4s var(--omtb-spring); }
.omtb-logo:hover img { transform: translateY(-1px) scale(1.02); }

/* A gold rule wipes in beneath the link being hovered. */
.omtb-nav a { position: relative; }
.omtb-nav a::after {
	content: "";
	position: absolute; left: 0; right: 0; bottom: -5px; height: 2px;
	background: linear-gradient(90deg, var(--omtb-gold), #fff5d6);
	transform: scaleX(0); transform-origin: left;
	transition: transform .38s var(--omtb-ease);
	border-radius: 2px;
}
.omtb-nav a:hover::after { transform: scaleX(1); }
.omtb-nav .current-menu-item > a::after,
.omtb-nav .omtb-nav__item--active > a::after { transform: scaleX(1); opacity: .85; }

.omtb-social a {
	position: relative;
	transition: transform .38s var(--omtb-spring), filter .3s;
}
.omtb-social a:hover {
	transform: translateY(-3px) scale(1.12);
	filter: drop-shadow(0 4px 8px rgba(0, 0, 0, .45));
}

/* ==========================================================================
   Hero — depth, parallax, entrance
   ========================================================================== */
.omtb-hero { perspective: 1400px; }

/* A soft light that follows the pointer, giving the flat art some volume. */
.omtb-hero::before {
	content: "";
	position: absolute; inset: 0; z-index: 1; pointer-events: none;
	background: radial-gradient(
		420px circle at var(--omtb-mx, 68%) var(--omtb-my, 38%),
		rgba(255, 210, 140, .20), transparent 62%);
	opacity: 0; transition: opacity .6s var(--omtb-ease);
}
.omtb-hero:hover::before { opacity: 1; }

/* Vignette anchors the composition. */
.omtb-hero::after {
	content: "";
	position: absolute; inset: 0; z-index: 1; pointer-events: none;
	background: radial-gradient(120% 90% at 50% 45%, transparent 52%, rgba(40, 4, 0, .42));
}

.omtb-hero__watermark {
	transition: transform 1.1s var(--omtb-ease);
	transform: translateY(-50%) rotate(180deg) translateZ(0)
	           translateX(calc(var(--omtb-px, 0) * -12px));
}

.omtb-hero__trophy img {
	transform-style: preserve-3d;
	animation: omtb-float 7s ease-in-out infinite;
	transition: filter .5s var(--omtb-ease);
	filter: drop-shadow(0 22px 30px rgba(0, 0, 0, .5));
}
.omtb-hero:hover .omtb-hero__trophy img {
	filter: drop-shadow(0 26px 40px rgba(0, 0, 0, .58))
	        drop-shadow(0 0 26px rgba(245, 196, 81, .28));
}
@keyframes omtb-float {
	0%, 100% { transform: translateY(0) rotateZ(0deg); }
	50%      { transform: translateY(-16px) rotateZ(.6deg); }
}

/* The roundel's gold ring turns slowly; the numeral stays upright. */
.omtb-badge img { animation: omtb-spin 26s linear infinite; }
.omtb-badge span { text-shadow: 0 2px 10px rgba(0, 0, 0, .5); }
@keyframes omtb-spin { to { transform: rotate(360deg); } }

/* Staggered entrance for the hero copy. */
.omtb-hero__eyebrow,
.omtb-hero__title,
.omtb-hero__intro,
.omtb-hero__trophy,
.omtb-badge {
	animation: omtb-rise .95s var(--omtb-ease) both;
}
.omtb-hero__trophy  { animation-delay: .05s; }
.omtb-hero__eyebrow { animation-delay: .20s; }
.omtb-hero__title   { animation-delay: .32s; }
.omtb-hero__intro   { animation-delay: .46s; }
.omtb-badge         { animation-delay: .60s; }

@keyframes omtb-rise {
	from { opacity: 0; transform: translate3d(0, 30px, 0); }
	to   { opacity: 1; transform: none; }
}
/* The trophy inherits its float loop once the entrance finishes. */
.omtb-hero__trophy { animation-name: omtb-rise; }

.omtb-hero__title {
	text-shadow: 0 3px 18px rgba(60, 6, 0, .40);
}

/* ==========================================================================
   Cards — pointer-tracked 3D tilt + gold specular sweep
   ========================================================================== */
.omtb-card,
.omtb-strip__logo,
.omtb-list__item,
.omtb-stat3d {
	position: relative;
	transform-style: preserve-3d;
	transition: transform .45s var(--omtb-ease), box-shadow .45s var(--omtb-ease);
	box-shadow: var(--omtb-e2);
}

/* JS sets --omtb-rx / --omtb-ry from the pointer position. */
.omtb-tilt {
	transform:
		perspective(900px)
		rotateX(var(--omtb-rx, 0deg))
		rotateY(var(--omtb-ry, 0deg))
		translateY(var(--omtb-lift, 0));
	box-shadow: var(--omtb-e4);
}

.omtb-card::after,
.omtb-strip__logo::after {
	content: "";
	position: absolute; inset: 0;
	border-radius: inherit; pointer-events: none;
	background: linear-gradient(105deg,
		transparent 38%,
		rgba(255, 236, 190, .55) 48%,
		rgba(255, 255, 255, .18) 54%,
		transparent 64%);
	transform: translateX(-130%);
	opacity: 0;
	transition: transform .95s var(--omtb-ease), opacity .3s;
}
.omtb-card:hover::after,
.omtb-strip__logo:hover::after { transform: translateX(130%); opacity: 1; }

.omtb-card:hover, .omtb-list__item:hover { --omtb-lift: -6px; }

.omtb-card h3 { transition: color .3s var(--omtb-ease); }
.omtb-card:hover h3 { color: var(--omtb-red); }

/* Winners logo tiles get a gold rim as they lift. */
.omtb-strip__logo {
	transition: transform .45s var(--omtb-ease), box-shadow .45s var(--omtb-ease),
	            outline-color .45s var(--omtb-ease);
	outline: 2px solid transparent; outline-offset: -2px;
}
.omtb-strip__item:hover .omtb-strip__logo {
	outline-color: var(--omtb-gold-soft);
	box-shadow: var(--omtb-e4), 0 0 0 6px rgba(245, 196, 81, .10);
}
.omtb-strip__logo img { transition: transform .5s var(--omtb-spring); }
.omtb-strip__item:hover .omtb-strip__logo img { transform: scale(1.07); }
.omtb-strip__item h3 { transition: color .3s, letter-spacing .35s var(--omtb-ease); }
.omtb-strip__item:hover h3 { color: var(--omtb-gold); letter-spacing: .07em; }

/* ==========================================================================
   Year pills — physical press
   ========================================================================== */
.omtb-years a {
	box-shadow: var(--omtb-e1);
	transition: transform .38s var(--omtb-spring), box-shadow .38s var(--omtb-ease),
	            background .25s, color .25s;
}
.omtb-years a:hover {
	transform: translateY(-4px) scale(1.06);
	box-shadow: var(--omtb-e3);
	background: #fff;
	color: var(--omtb-red);
}
.omtb-years a:active { transform: translateY(-1px) scale(.98); }
.omtb-years .is-active a {
	box-shadow: 0 6px 16px rgba(194, 37, 0, .40), inset 0 -2px 6px rgba(0, 0, 0, .22);
}
.omtb-years .is-active a:hover { background: var(--omtb-red); color: #fff; }

/* ==========================================================================
   Media viewer
   ========================================================================== */
.omtb-viewer__stage {
	box-shadow: var(--omtb-e3);
	transition: box-shadow .5s var(--omtb-ease);
	overflow: hidden;
}
.omtb-viewer__stage:hover { box-shadow: var(--omtb-e4); }
.omtb-viewer__stage img { transition: transform 1.1s var(--omtb-ease); }
.omtb-viewer__stage:hover img { transform: scale(1.025); }

.omtb-thumb {
	border-radius: 2px; overflow: hidden;
	box-shadow: var(--omtb-e1);
	transition: transform .38s var(--omtb-spring), box-shadow .38s var(--omtb-ease), opacity .3s;
}
.omtb-thumb:hover { transform: translateX(-5px) scale(1.05); box-shadow: var(--omtb-e3); z-index: 2; }
.omtb-thumb img { transition: transform .5s var(--omtb-ease), filter .4s; }
.omtb-thumb:hover img { transform: scale(1.08); filter: saturate(1.1); }
.omtb-thumb.is-active { box-shadow: var(--omtb-e3), 0 0 0 3px rgba(194, 37, 0, .28); }

/* ==========================================================================
   Figures & captions
   ========================================================================== */
.omtb-figure {
	overflow: hidden; border-radius: 2px;
	box-shadow: var(--omtb-e3);
	transition: box-shadow .5s var(--omtb-ease);
}
.omtb-figure:hover { box-shadow: var(--omtb-e4); }
.omtb-figure img { transition: transform 1.2s var(--omtb-ease); }
.omtb-figure:hover img { transform: scale(1.03); }

.omtb-caption__label { position: relative; }
.omtb-caption__label::after {
	content: ""; position: absolute; left: 0; bottom: -4px; height: 2px; width: 100%;
	background: linear-gradient(90deg, var(--omtb-red), transparent);
	transform: scaleX(0); transform-origin: left;
	transition: transform .6s var(--omtb-ease);
}
.omtb-caption:hover .omtb-caption__label::after { transform: scaleX(1); }

/* ==========================================================================
   Rail navigation
   ========================================================================== */
.omtb-rail__nav a {
	transition: transform .35s var(--omtb-ease), color .25s, letter-spacing .35s var(--omtb-ease);
}
.omtb-rail__nav a:hover { transform: translateX(-6px); letter-spacing: .09em; }
.omtb-rail__nav .is-active a { text-shadow: 0 1px 0 rgba(255, 255, 255, .6); }
.omtb-rail__trophy {
	transition: transform .8s var(--omtb-spring), filter .6s;
	filter: drop-shadow(0 10px 18px rgba(58, 8, 0, .22));
}
.omtb-rail__trophy:hover { transform: translateY(-8px) rotateZ(-2deg) scale(1.04); }

/* ==========================================================================
   Buttons & forms
   ========================================================================== */
.omtb-btn {
	position: relative; overflow: hidden; isolation: isolate;
	box-shadow: var(--omtb-e2);
	transition: transform .35s var(--omtb-spring), box-shadow .35s var(--omtb-ease), background .3s;
}
.omtb-btn::before {
	content: ""; position: absolute; inset: 0; z-index: -1;
	background: linear-gradient(120deg, var(--omtb-red), var(--omtb-orange));
	opacity: 0; transition: opacity .35s var(--omtb-ease);
}
.omtb-btn:hover { transform: translateY(-3px); box-shadow: var(--omtb-e3); }
.omtb-btn:hover::before { opacity: 1; }
.omtb-btn:active { transform: translateY(-1px) scale(.985); }

.omtb-formcard {
	box-shadow: var(--omtb-e3);
	transition: box-shadow .5s var(--omtb-ease), transform .5s var(--omtb-ease);
}
.omtb-formcard:hover { box-shadow: var(--omtb-e4); }

.omtb-field { transition: border-color .25s, box-shadow .3s var(--omtb-ease), transform .3s var(--omtb-ease); }
.omtb-field:focus-within { transform: translateY(-2px); }
.omtb-field > label { transition: color .25s; }
.omtb-field:focus-within > label { color: var(--omtb-red); font-weight: 500; }

/* ==========================================================================
   CAPTCHA
   ========================================================================== */
.omtb-captcha { margin: 4px 0 10px; }
.omtb-captcha__row { display: flex; align-items: center; gap: 10px; margin-bottom: 9px; }
.omtb-captcha__img {
	border: 1px solid #9b9b9b; border-radius: 2px; background: #fff;
	box-shadow: var(--omtb-e1); user-select: none;
}
.omtb-captcha__refresh {
	flex: 0 0 auto; width: 38px; height: 38px;
	border: 1px solid #9b9b9b; border-radius: 2px; background: #fff;
	cursor: pointer; font-size: 19px; line-height: 1; color: var(--omtb-ink);
	transition: transform .4s var(--omtb-spring), color .25s, border-color .25s, box-shadow .3s;
}
.omtb-captcha__refresh:hover {
	color: var(--omtb-red); border-color: var(--omtb-red);
	transform: rotate(-90deg); box-shadow: var(--omtb-e2);
}
.omtb-captcha__refresh.is-busy { animation: omtb-spin .7s linear infinite; }

/* ==========================================================================
   Stat band
   ========================================================================== */
.omtb-stats3d {
	position: relative;
	background: var(--omtb-black);
	color: #fff;
	padding: 62px 0 66px;
	overflow: hidden;
}
.omtb-stats3d::before {
	content: "";
	position: absolute; inset: -40% -10% auto -10%; height: 150%;
	background: radial-gradient(60% 60% at 20% 20%, rgba(194, 37, 0, .40), transparent 70%),
	            radial-gradient(50% 50% at 85% 70%, rgba(247, 93, 0, .28), transparent 70%);
	pointer-events: none;
}
.omtb-stats3d__grid {
	position: relative;
	display: grid; grid-template-columns: repeat(3, 1fr); gap: 22px;
}
.omtb-stat3d {
	background: linear-gradient(160deg, rgba(255, 255, 255, .09), rgba(255, 255, 255, .03));
	border: 1px solid rgba(255, 255, 255, .13);
	border-radius: 4px 24px 4px 24px;
	padding: 30px 28px 32px;
	backdrop-filter: blur(6px);
	box-shadow: var(--omtb-e3);
}
.omtb-stat3d:hover { --omtb-lift: -8px; border-color: var(--omtb-gold-soft); }
.omtb-stat3d__n {
	display: block;
	font-size: clamp(44px, 5.4vw, 76px); font-weight: 900; line-height: 1;
	letter-spacing: -.03em;
	background: linear-gradient(180deg, #fff 30%, var(--omtb-gold));
	-webkit-background-clip: text; background-clip: text; color: transparent;
}
.omtb-stat3d__l {
	display: block; margin-top: 12px;
	font-family: var(--omtb-serif); font-size: 15px; line-height: 1.5;
	color: rgba(255, 255, 255, .82);
}
.omtb-stats3d__lead {
	position: relative;
	display: flex; align-items: baseline; gap: 16px; flex-wrap: wrap;
	margin-bottom: 30px;
}
.omtb-stats3d__lead h2 {
	margin: 0; font-size: clamp(22px, 2.8vw, 34px); font-weight: 800;
	text-transform: uppercase; letter-spacing: -.01em;
}
.omtb-stats3d__lead p { margin: 0; font-family: var(--omtb-serif); font-size: 14.5px; color: rgba(255, 255, 255, .68); }

/* ==========================================================================
   Footer
   ========================================================================== */
.omtb-footer { position: relative; overflow: hidden; }
.omtb-footer::before {
	content: "";
	position: absolute; top: 0; left: 0; right: 0; height: 3px;
	background: linear-gradient(90deg, var(--omtb-red), var(--omtb-orange), var(--omtb-gold), var(--omtb-red));
	background-size: 300% 100%;
	animation: omtb-shift 9s linear infinite;
}
@keyframes omtb-shift { to { background-position: 300% 0; } }
.omtb-footer__nav a { position: relative; transition: color .25s, transform .3s var(--omtb-ease); }
.omtb-footer__nav a:hover { transform: translateY(-2px); color: var(--omtb-gold); }
.omtb-footer__logo img { transition: transform .5s var(--omtb-spring), filter .4s; }
.omtb-footer__logo img:hover { transform: scale(1.05) rotate(-1deg); }

/* ==========================================================================
   Empty states & misc
   ========================================================================== */
.omtb-empty { box-shadow: var(--omtb-e2); }
.omtb-notice { box-shadow: var(--omtb-e1); animation: omtb-rise .5s var(--omtb-ease) both; }

.omtb-arrow {
	border-radius: 50%;
	transition: transform .35s var(--omtb-spring), background .3s, color .25s;
}
.omtb-arrow:hover { transform: translateY(-50%) scale(1.25); color: var(--omtb-gold); }

/* ==========================================================================
   Respect the user's motion preference
   ========================================================================== */
@media (prefers-reduced-motion: reduce) {
	*, *::before, *::after {
		animation-duration: .001ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: .001ms !important;
		scroll-behavior: auto !important;
	}
	.omtb-reveal { opacity: 1; transform: none; }
	.omtb-tilt { transform: none; }
	body::after { display: none; }
}

@media (max-width: 900px) {
	/* Tilt and pointer lighting are meaningless on touch; keep the depth only. */
	.omtb-tilt { transform: none; }
	.omtb-stats3d__grid { grid-template-columns: 1fr; }
	.omtb-header { position: static; }
}
