/*
 * TRA design tokens + shared primitives.
 *
 * Every section root carries `class="tra tra-<slug>"`, so tokens are scoped and
 * cannot leak into other plugins/widgets. Elementor style controls override the
 * custom properties on {{WRAPPER}}, which is why all section CSS must consume
 * var(--tra-*) instead of hard-coded hex values.
 *
 * Breakpoints (mobile-first): md 768px, lg 1024px, xl 1280px.
 */

.tra {
	/* Brand palette */
	--tra-primary: #414142;
	--tra-accent: #cf2135;
	--tra-gold: #d5af34;
	--tra-cream: #f6e09f;
	--tra-surface: #ffffff;
	--tra-muted: #d3d3d3;

	/* Derived surfaces */
	--tra-ink: var(--tra-primary);
	--tra-ink-soft: color-mix(in srgb, var(--tra-primary) 70%, transparent);
	--tra-ink-faint: color-mix(in srgb, var(--tra-primary) 60%, transparent);
	--tra-hairline: color-mix(in srgb, var(--tra-muted) 30%, transparent);

	/* Typography */
	--tra-font: "Inter", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif;
	--tra-fs-3xs: 0.625rem;
	--tra-fs-2xs: 0.6875rem;
	--tra-fs-xs: 0.75rem;
	--tra-fs-sm: 0.875rem;
	--tra-fs-base: 1rem;
	--tra-fs-lg: 1.125rem;
	--tra-fs-xl: 1.25rem;
	--tra-fs-2xl: 1.5rem;
	--tra-fs-3xl: 1.875rem;
	--tra-fs-4xl: 2.25rem;
	--tra-fs-5xl: 3rem;
	--tra-fs-6xl: 3.75rem;
	--tra-fs-7xl: 4.5rem;

	/* Layout */
	--tra-max: 80rem;
	--tra-pad-block: 6rem;
	--tra-pad-inline: 1.5rem;

	/* Radii */
	--tra-r-sm: 0.5rem;
	--tra-r-md: 1rem;
	--tra-r-lg: 1.5rem;
	--tra-r-xl: 2rem;
	--tra-r-2xl: 2.5rem;
	--tra-r-3xl: 3rem;
	--tra-r-4xl: 4rem;
	--tra-r-pill: 9999px;

	/* Elevation */
	--tra-shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);
	--tra-shadow-md: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
	--tra-shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1);
	--tra-shadow-2xl: 0 25px 50px -12px rgb(0 0 0 / 0.25);

	--tra-transition: 200ms cubic-bezier(0.4, 0, 0.2, 1);

	box-sizing: border-box;
	color: var(--tra-ink);
	font-family: var(--tra-font);
	-webkit-font-smoothing: antialiased;
	line-height: 1.5;
}

.tra *,
.tra *::before,
.tra *::after {
	box-sizing: border-box;
}

/* Low-specificity reset so Elementor/parent-theme typography cannot break layout. */
.tra :where(h1, h2, h3, h4, h5, h6, p, figure, blockquote, dl, dd) {
	margin: 0;
}

.tra :where(ul, ol) {
	margin: 0;
	padding: 0;
	list-style: none;
}

.tra :where(img, svg, iframe, video) {
	display: block;
	max-width: 100%;
}

.tra :where(a) {
	color: inherit;
	text-decoration: none;
	transition: color var(--tra-transition), background-color var(--tra-transition), border-color var(--tra-transition);
}

.tra :where(button, input, select, textarea) {
	font: inherit;
	color: inherit;
}

/*
 * Elementor's "Inline Font Icons" experiment replaces `<i class="fas …">` with a
 * bare `<svg class="e-font-icon-svg">`. Elementor only sizes those inside its own
 * widgets, so an unconstrained SVG stretches to the parent's width. Size it like
 * a font glyph (height 1em, width from the glyph's aspect ratio) so sections look
 * identical whether the experiment is on or off.
 */
.tra :where(svg.e-font-icon-svg) {
	width: auto;
	height: 1em;
	fill: currentColor;
}

/* ---------------------------------------------------------------- layout */

.tra-section {
	padding: var(--tra-pad-block) var(--tra-pad-inline);
	background-color: var(--tra-section-bg, transparent);
}

.tra-section--dark {
	--tra-ink: #ffffff;
	--tra-ink-soft: rgb(255 255 255 / 0.6);
	--tra-ink-faint: rgb(255 255 255 / 0.4);
	--tra-hairline: rgb(255 255 255 / 0.1);
	background-color: var(--tra-section-bg, var(--tra-primary));
	color: #ffffff;
}

.tra-section--hairline-bottom {
	border-bottom: 1px solid var(--tra-hairline);
}

.tra-container {
	width: 100%;
	max-width: var(--tra-max);
	margin-inline: auto;
}

.tra-container--3xl {
	--tra-max: 48rem;
}

.tra-container--4xl {
	--tra-max: 56rem;
}

.tra-container--5xl {
	--tra-max: 64rem;
}

/*
 * Long-form pages wrap their content in `max-w-5xl px-6`, i.e. the inline
 * padding sits *inside* the 64rem box, so the text column is 64rem minus the
 * padding. Pair with a width modifier: `tra-container--5xl tra-container--article`.
 */
.tra-container--article {
	max-width: calc(var(--tra-max) - 2 * var(--tra-pad-inline));
}

.tra-center {
	text-align: center;
}

/* Responsive card grid: 1 / 2 / N columns. */
.tra-grid {
	display: grid;
	grid-template-columns: 1fr;
	gap: var(--tra-grid-gap, 2rem);
}

@media (min-width: 768px) {
	.tra-grid--2,
	.tra-grid--3,
	.tra-grid--4 {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

@media (min-width: 1024px) {
	.tra-grid--3 {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}

	.tra-grid--4 {
		grid-template-columns: repeat(4, minmax(0, 1fr));
	}
}

/*
 * Typography.
 *
 * Line heights are explicit because the parent theme's reset sets
 * `h1..h6 { line-height: 1.2 }` (element selector) and because the source
 * design pairs every step of the scale with a fixed leading:
 *   xs 12/16, sm 14/20, base 16/24, lg 18/28, xl 20/28, 2xl 24/32,
 *   3xl 30/36, 4xl 36/40, 5xl+ 1.
 */

.tra-h1 {
	font-size: var(--tra-fs-5xl);
	font-weight: 900;
	letter-spacing: -0.05em;
	line-height: 1;
	color: var(--tra-ink);
}

.tra-h2 {
	font-size: var(--tra-fs-3xl);
	font-weight: 900;
	letter-spacing: -0.05em;
	line-height: 1.2;
	color: var(--tra-ink);
}

.tra-h3 {
	font-size: var(--tra-fs-xl);
	font-weight: 900;
	line-height: 1.4;
	color: var(--tra-ink);
}

.tra-h4 {
	font-size: var(--tra-fs-lg);
	font-weight: 900;
	line-height: 1.5556;
	color: var(--tra-ink);
}

@media (min-width: 768px) {
	.tra-h1 {
		font-size: var(--tra-fs-7xl);
	}

	.tra-h2 {
		font-size: var(--tra-fs-5xl);
		line-height: 1;
	}
}

.tra-lead {
	font-size: var(--tra-fs-xl);
	font-weight: 500;
	line-height: 1.625;
	color: var(--tra-ink-soft);
}

.tra-body {
	font-size: var(--tra-fs-sm);
	line-height: 1.625;
	color: var(--tra-ink-faint);
}

.tra-accent {
	color: var(--tra-accent);
}

.tra-gold {
	color: var(--tra-gold);
}

/* Small gold/dark all-caps label used above blocks. */
.tra-eyebrow {
	font-size: var(--tra-fs-xs);
	line-height: 1.3333;
	font-weight: 900;
	letter-spacing: 0.3em;
	text-transform: uppercase;
	color: var(--tra-gold);
}

/* Pill badge (hero). */
.tra-badge {
	display: inline-flex;
	align-items: center;
	gap: 0.5rem;
	padding: 0.25rem 1rem;
	border-radius: var(--tra-r-pill);
	background-color: color-mix(in srgb, var(--tra-accent) 10%, transparent);
	color: var(--tra-accent);
	font-size: var(--tra-fs-3xs);
	font-weight: 900;
	letter-spacing: 0.2em;
	text-transform: uppercase;
}

.tra-badge__dot {
	width: 0.375rem;
	height: 0.375rem;
	border-radius: var(--tra-r-pill);
	background-color: currentColor;
	animation: tra-pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
}

@keyframes tra-pulse {
	0%,
	100% {
		opacity: 1;
	}

	50% {
		opacity: 0.4;
	}
}

@media (prefers-reduced-motion: reduce) {
	.tra *,
	.tra *::before,
	.tra *::after {
		animation-duration: 0.001ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: 0.001ms !important;
	}
}

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

.tra-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 0.5rem;
	padding: 1.25rem 2.5rem;
	border: 0;
	border-radius: var(--tra-r-pill);
	font-size: var(--tra-fs-sm);
	line-height: 1.4286;
	font-weight: 700;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	cursor: pointer;
	transition: background-color var(--tra-transition), color var(--tra-transition), border-color var(--tra-transition);
}

.tra-btn--accent {
	background-color: var(--tra-accent);
	color: #ffffff;
	box-shadow: 0 20px 25px -5px color-mix(in srgb, var(--tra-accent) 20%, transparent);
}

.tra-btn--accent:hover,
.tra-btn--accent:focus-visible {
	background-color: var(--tra-gold);
	color: #ffffff;
}

.tra-btn--outline {
	background-color: transparent;
	border: 2px solid var(--tra-muted);
	color: var(--tra-ink);
}

.tra-btn--outline:hover,
.tra-btn--outline:focus-visible {
	border-color: var(--tra-accent);
	color: var(--tra-accent);
}

.tra-btn--compact {
	padding: 0.75rem 1.5rem;
	border-radius: var(--tra-r-sm);
	font-size: var(--tra-fs-3xs);
	font-weight: 900;
	letter-spacing: 0.15em;
}

.tra-btn--block {
	width: 100%;
}

.tra :where(a, button):focus-visible {
	outline: 2px solid var(--tra-accent);
	outline-offset: 3px;
}

/* ----------------------------------------------------------------- cards */

.tra-card {
	padding: 2rem;
	background-color: var(--tra-surface);
	border: 1px solid var(--tra-hairline);
	border-radius: var(--tra-r-2xl);
	transition: border-color var(--tra-transition), box-shadow var(--tra-transition), background-color var(--tra-transition);
}

.tra-card--hover:hover {
	border-color: var(--tra-accent);
	box-shadow: var(--tra-shadow-2xl);
}

/* Square icon tile inside cards. */
.tra-icon-tile {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 3.5rem;
	height: 3.5rem;
	border-radius: var(--tra-r-md);
	background-color: color-mix(in srgb, var(--tra-cream) 30%, transparent);
	color: var(--tra-accent);
	font-size: var(--tra-fs-2xl);
	box-shadow: var(--tra-shadow-sm);
	transition: transform var(--tra-transition);
}

/* Round icon bullet used in feature lists. */
.tra-icon-dot {
	display: flex;
	flex: 0 0 auto;
	align-items: center;
	justify-content: center;
	width: 3rem;
	height: 3rem;
	border-radius: var(--tra-r-pill);
	background-color: color-mix(in srgb, var(--tra-accent) 10%, transparent);
	color: var(--tra-accent);
}

.tra-icon-dot--gold {
	background-color: color-mix(in srgb, var(--tra-gold) 10%, transparent);
	color: var(--tra-gold);
}

/* Frosted panel used on dark sections. */
.tra-panel {
	padding: 2.5rem;
	background-color: rgb(255 255 255 / 0.05);
	backdrop-filter: blur(12px);
	border: 1px solid rgb(255 255 255 / 0.1);
	border-radius: var(--tra-r-3xl);
}

/* ------------------------------------------------- long-form (prose) text */

/*
 * Rich-text areas rendered from WYSIWYG controls. Mirrors the source page's
 * `.prose-content` rules: 1.1rem paragraphs at 80% ink, 1.5rem rhythm.
 */
.tra-prose {
	font-size: 1.1rem;
	line-height: 1.5;
	color: color-mix(in srgb, var(--tra-ink) 80%, transparent);
}

.tra-prose > :first-child {
	margin-top: 0;
}

.tra-prose > :last-child {
	margin-bottom: 0;
}

.tra-prose p {
	margin: 0 0 1.5rem;
}

.tra-prose h2 {
	margin: 4rem 0 2rem;
	font-size: var(--tra-fs-3xl);
	font-weight: 900;
	letter-spacing: -0.05em;
	line-height: 1.2;
	color: var(--tra-ink);
}

.tra-prose h3 {
	margin: 3rem 0 1.5rem;
	font-size: var(--tra-fs-2xl);
	font-weight: 900;
	line-height: 1.3333;
	color: var(--tra-ink);
}

.tra-prose h4 {
	margin: 2rem 0 1rem;
	font-size: var(--tra-fs-xl);
	font-weight: 900;
	line-height: 1.4;
	text-transform: uppercase;
	color: var(--tra-ink);
}

.tra-prose strong,
.tra-prose b {
	font-weight: 900;
	color: var(--tra-ink);
}

.tra-prose em {
	font-style: italic;
}

.tra-prose a {
	color: var(--tra-accent);
	text-decoration: underline;
	text-underline-offset: 0.2em;
}

.tra-prose a:hover {
	color: var(--tra-gold);
}

.tra-prose ul,
.tra-prose ol {
	margin: 0 0 1.5rem;
	padding-left: 1.5rem;
	list-style: disc;
}

.tra-prose ol {
	list-style: decimal;
}

.tra-prose li {
	margin-bottom: 0.5rem;
}

/* The source forces white copy inside dark panels. */
.tra-section--dark .tra-prose,
.tra-panel .tra-prose {
	color: rgb(255 255 255 / 0.9);
}

/* ------------------------------------------------------ heading side bar */

/*
 * Long-form pages mark each H2 with a thick coloured rule on the left
 * (`border-l-8 border-brand-accent pl-8` in the source).
 */
.tra-heading--bar {
	border-left: 8px solid var(--tra-accent);
	padding-left: 2rem;
}

.tra-heading--bar-gold {
	border-left-color: var(--tra-gold);
}

/* Uppercase variant used by the course/landing pages. */
.tra-heading--upper {
	text-transform: uppercase;
}

/* Small rounded index badge (module/step numbers). */
.tra-index {
	display: inline-flex;
	flex: 0 0 auto;
	align-items: center;
	justify-content: center;
	width: 2.5rem;
	height: 2.5rem;
	border-radius: var(--tra-r-sm);
	background-color: var(--tra-accent);
	color: #ffffff;
	font-size: var(--tra-fs-sm);
	font-weight: 900;
	line-height: 1;
}

.tra-index--gold {
	background-color: var(--tra-gold);
}

.tra-index--dark {
	background-color: var(--tra-primary);
}

/* Soft blurred glow used as hero/section decoration. */
.tra-glow {
	position: absolute;
	width: 24rem;
	height: 24rem;
	border-radius: var(--tra-r-pill);
	background-color: color-mix(in srgb, var(--tra-gold) 5%, transparent);
	filter: blur(64px);
	pointer-events: none;
}
