/*
 * Tony Reynold Burchill — template CSS.
 *
 * Converts the Tailwind utilities used in
 * source-templates/tony-reynold-burchill/pages/author.html into static rules.
 * No Tailwind CDN. Class names are prefixed `trb-` so they coexist with
 * Beaver Builder's `.fl-*` row / column wrappers without conflict.
 *
 * Section classes are applied to Beaver Builder rows (Row Settings > Advanced
 * > CSS Class):
 *   .trb-hero        — Section 1
 *   .trb-journey     — Section 2
 *   .trb-monologue   — Section 3
 *   .trb-canon       — Section 4
 *   .trb-newsletter  — Section 5
 */

/* =========================================================================
   1. Design tokens (color + spacing + typography)
   ========================================================================= */
:root {
	/* Color tokens — sourced from the inline Tailwind config in author.html */
	--trb-background: #131314;
	--trb-surface: #131314;
	--trb-surface-dim: #131314;
	--trb-surface-container: #201f20;
	--trb-surface-container-low: #1c1b1c;
	--trb-surface-container-lowest: #0e0e0f;
	--trb-surface-container-high: #2a2a2b;
	--trb-surface-container-highest: #353436;
	--trb-surface-variant: #353436;
	--trb-surface-bright: #3a393a;
	--trb-primary: #cce2f0;
	--trb-primary-container: #b0c6d4;
	--trb-primary-fixed: #cfe6f4;
	--trb-primary-fixed-dim: #b4cad8;
	--trb-on-primary: #1e333e;
	--trb-on-primary-fixed: #071e28;
	--trb-on-primary-container: #3e535f;
	--trb-secondary: #afc6fd;
	--trb-secondary-container: #2e4675;
	--trb-tertiary: #d1dfff;
	--trb-tertiary-container: #b5c3e3;
	--trb-on-surface: #e5e2e3;
	--trb-on-surface-variant: #c3c7cb;
	--trb-on-background: #e5e2e3;
	--trb-outline: #8d9195;
	--trb-outline-variant: #42474b;
	--trb-inverse-surface: #e5e2e3;
	--trb-inverse-on-surface: #313031;
	--trb-inverse-primary: #4c616d;
	--trb-muted-gold: #c8a96e;
	--trb-parchment-glow: #f0e8d8;
	--trb-scrim-dark: rgba(4, 8, 12, 0.92);

	/* Spacing tokens */
	--trb-stack-sm: 0.5rem;
	--trb-stack-md: 1rem;
	--trb-stack-lg: 2rem;
	--trb-section-gap: 5rem;
	--trb-gutter: 1.5rem;
	--trb-safe-inset: 2.5rem;

	/* Container widths (Tailwind screen breakpoints) */
	--trb-screen-md: 768px;
	--trb-screen-xl: 1280px;
	--trb-screen-2xl: 1536px;

	/* Typography */
	--trb-font-display: "Cinzel", Georgia, serif;
	--trb-font-body: "EB Garamond", Georgia, serif;
	--trb-font-symbols: "Material Symbols Outlined", sans-serif;
}

/* =========================================================================
   2. Reset + base
   ========================================================================= */
*, *::before, *::after { box-sizing: border-box; }

html { -webkit-text-size-adjust: 100%; tab-size: 4; scroll-behavior: smooth; }

body.trb-body {
	margin: 0;
	background-color: var(--trb-background);
	color: var(--trb-on-background);
	font-family: var(--trb-font-body);
	font-size: 16px;
	line-height: 1.6;
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
	overflow-x: hidden;
}

body.trb-body::selection,
body.trb-body *::selection {
	background-color: var(--trb-primary);
	color: var(--trb-on-primary);
}

img, svg { max-width: 100%; height: auto; display: block; }

a { color: inherit; text-decoration: none; }

button { font: inherit; color: inherit; background: transparent; border: 0; padding: 0; cursor: pointer; }

p { margin: 0 0 var(--trb-stack-md); }

h1, h2, h3, h4, h5, h6 {
	margin: 0 0 var(--trb-stack-md);
	font-family: var(--trb-font-display);
	font-weight: 700;
	line-height: 1.2;
	color: var(--trb-on-surface);
}

ul, ol { margin: 0; padding: 0; list-style: none; }

/* Material Symbols inline icon font. */
.material-symbols-outlined {
	font-family: var(--trb-font-symbols);
	font-weight: normal;
	font-style: normal;
	font-size: 24px;
	line-height: 1;
	letter-spacing: normal;
	text-transform: none;
	display: inline-block;
	white-space: nowrap;
	word-wrap: normal;
	direction: ltr;
	-webkit-font-feature-settings: "liga";
	-webkit-font-smoothing: antialiased;
}

/* =========================================================================
   3. Layout primitives
   ========================================================================= */
.trb-container {
	width: 100%;
	margin-left: auto;
	margin-right: auto;
	padding-left: var(--trb-safe-inset);
	padding-right: var(--trb-safe-inset);
}
.trb-container--xl { max-width: var(--trb-screen-xl); }
.trb-container--2xl { max-width: var(--trb-screen-2xl); }
.trb-container--md { max-width: var(--trb-screen-md); }

.trb-main { display: block; }
.trb-main--front { padding-top: 0; } /* Hero handles its own top spacing */
.trb-main--page { padding-top: 6rem; padding-bottom: var(--trb-section-gap); }
.trb-main--default,
.trb-main--single,
.trb-main--archive,
.trb-main--404 {
	padding-top: 7rem; /* clear fixed header */
	padding-bottom: var(--trb-section-gap);
}

/* =========================================================================
   4. Buttons & links
   ========================================================================= */
a.trb-btn,
button.trb-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: var(--trb-stack-sm);
	font-family: var(--trb-font-display);
	font-size: 12px;
	font-weight: 400;
	letter-spacing: 0.3em;
	text-transform: uppercase;
	padding: 0.75rem 1.5rem;
	border: 1px solid transparent;
	cursor: pointer;
	transition: background-color 0.3s ease, color 0.3s ease, border-color 0.3s ease;
	white-space: nowrap;
}
a.trb-btn--outline,
button.trb-btn--outline {
	color: var(--trb-primary);
	border-color: var(--trb-primary);
	background-color: transparent;
}
a.trb-btn--outline:hover,
button.trb-btn--outline:hover {
	background-color: var(--trb-primary);
	color: var(--trb-on-primary);
}
a.trb-btn--ghost,
button.trb-btn--ghost {
	color: var(--trb-muted-gold);
	border-color: transparent;
	padding-left: 0;
	padding-right: 0;
}
a.trb-btn--ghost:hover,
button.trb-btn--ghost:hover { text-decoration: underline; text-underline-offset: 4px; }

.trb-link-caps {
	font-family: var(--trb-font-display);
	font-size: 12px;
	font-weight: 400;
	letter-spacing: 0.3em;
	text-transform: uppercase;
	color: var(--trb-muted-gold);
}
.trb-link-caps:hover { text-decoration: underline; text-underline-offset: 4px; }

/* =========================================================================
   5. HEADER
   ========================================================================= */
.trb-header {
	position: fixed;
	top: 0;
	left: 0;
	width: 100%;
	z-index: 50;
	background-color: rgba(19, 19, 20, 0.8);
	backdrop-filter: blur(20px);
	-webkit-backdrop-filter: blur(20px);
	border-bottom: 1px solid rgba(200, 169, 110, 0.2);
	transition: background-color 0.5s ease, border-color 0.5s ease;
}
.trb-header__inner {
	display: flex;
	justify-content: space-between;
	align-items: center;
	width: 100%;
	padding: var(--trb-stack-md) var(--trb-safe-inset);
	gap: var(--trb-gutter);
}
.trb-header__logo {
	color: var(--trb-primary);
	display: inline-flex;
	align-items: center;
	font-family: var(--trb-font-display);
	font-weight: 900;
	font-size: 36px;
	letter-spacing: -0.05em;
	line-height: 1.05;
	text-decoration: none;
}
.trb-header__logo-img {
	max-height: 56px;
	width: auto;
}

@media (min-width: 768px) {
	.trb-header__logo { font-size: 56px; }
}

.trb-header__nav { display: none; }
@media (min-width: 768px) {
	.trb-header__nav { display: flex; align-items: center; }
}

.trb-nav-menu {
	display: flex;
	align-items: center;
	gap: var(--trb-gutter);
	margin: 0;
	padding: 0;
	list-style: none;
}
.trb-nav-menu > li > a {
	font-family: var(--trb-font-display);
	font-size: 12px;
	font-weight: 400;
	letter-spacing: 0.3em;
	text-transform: uppercase;
	color: var(--trb-on-surface-variant);
	transition: color 0.3s ease;
	padding-bottom: 4px;
	display: inline-block;
}
.trb-nav-menu > li > a:hover { color: var(--trb-primary); }
.trb-nav-menu > li.current-menu-item > a,
.trb-nav-menu > li.current_page_item > a,
.trb-nav-menu > li.current-menu-ancestor > a {
	color: var(--trb-primary);
	font-weight: 700;
	border-bottom: 2px solid var(--trb-primary);
	opacity: 0.8;
}

.trb-header__cta { display: none; }
@media (min-width: 768px) {
	.trb-header__cta { display: inline-flex; }
}

.trb-header__hamburger {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	color: var(--trb-primary);
	padding: 8px;
}
.trb-header__hamburger .material-symbols-outlined { font-size: 28px; }
@media (min-width: 768px) {
	.trb-header__hamburger { display: none; }
}

/* =========================================================================
   6. MOBILE NAV
   ========================================================================= */
.trb-mobile-nav {
	position: fixed;
	inset: 0;
	z-index: 100;
	background-color: var(--trb-background);
	padding: var(--trb-safe-inset);
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: var(--trb-stack-lg);
	transform: translateX(100%);
	transition: transform 0.4s ease;
}
.trb-mobile-nav[hidden] {
	display: flex;
	transform: translateX(100%);
	pointer-events: none;
}
.trb-mobile-nav.is-open {
	transform: translateX(0);
	pointer-events: auto;
}
.trb-mobile-nav__close {
	position: absolute;
	top: var(--trb-safe-inset);
	right: var(--trb-safe-inset);
	color: var(--trb-primary);
}
.trb-mobile-nav__close .material-symbols-outlined { font-size: 32px; }
.trb-mobile-nav__menu {
	display: flex;
	flex-direction: column;
	gap: var(--trb-stack-md);
	text-align: center;
	margin: 0;
	padding: 0;
	list-style: none;
}
.trb-mobile-nav__menu > li > a {
	font-family: var(--trb-font-display);
	font-size: 18px;
	font-weight: 400;
	letter-spacing: 0.3em;
	text-transform: uppercase;
	color: var(--trb-on-surface-variant);
}
.trb-mobile-nav__menu > li.current-menu-item > a { color: var(--trb-primary); }
.trb-mobile-nav__cta { margin-top: var(--trb-stack-md); }

/* Lock body scroll when mobile nav is open. */
body.trb-mobile-nav-open { overflow: hidden; }

/* =========================================================================
   7. FOOTER
   ========================================================================= */
.trb-footer {
	background-color: var(--trb-surface-container-lowest);
	border-top: 1px solid rgba(200, 169, 110, 0.1);
	width: 100%;
	margin-top: var(--trb-section-gap);
	transition: background-color 0.5s ease, border-color 0.5s ease;
}
.trb-footer__inner {
	display: flex;
	flex-direction: column;
	justify-content: space-between;
	align-items: center;
	width: 100%;
	padding: var(--trb-stack-lg) var(--trb-safe-inset);
	gap: var(--trb-stack-lg);
}
@media (min-width: 768px) {
	.trb-footer__inner { flex-direction: row; }
}
.trb-footer__logo {
	font-family: var(--trb-font-display);
	font-size: 24px;
	font-weight: 700;
	letter-spacing: 0.1em;
	color: var(--trb-on-surface);
}
.trb-footer__logo img { max-height: 48px; width: auto; }

.trb-footer__nav { flex: 1; display: flex; justify-content: center; }
.trb-footer-menu {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: var(--trb-gutter);
	margin: 0;
	padding: 0;
	list-style: none;
}
.trb-footer-menu > li > a {
	font-family: var(--trb-font-display);
	font-size: 12px;
	font-weight: 400;
	letter-spacing: 0.3em;
	text-transform: uppercase;
	color: var(--trb-on-surface-variant);
	text-decoration: underline;
	text-underline-offset: 4px;
	transition: color 0.3s ease;
}
.trb-footer-menu > li > a:hover { color: var(--trb-muted-gold); }

.trb-footer__copy {
	color: var(--trb-muted-gold);
	font-family: var(--trb-font-body);
	font-size: 14px;
	line-height: 1.6;
	text-align: center;
}
@media (min-width: 768px) {
	.trb-footer__copy { text-align: right; }
}

/* =========================================================================
   8. SECTION 1 — HERO  (.trb-hero)
   ========================================================================= */
.trb-hero {
	position: relative;
	height: 100vh;
	min-height: 600px;
	/* Full-viewport breakout — escape any parent width clamp. */
	width: 100vw;
	max-width: 100vw;
	margin-left: calc(50% - 50vw);
	margin-right: calc(50% - 50vw);
	display: flex;
	align-items: center;
	justify-content: center;
	overflow: hidden;
}
/* Kill BB's default row content padding. Force full width so the flex item
   (.fl-row-content-wrap inside display:flex .trb-hero) doesn't shrink to
   text content width, which would leave black bars beside the Photo module. */
.trb-hero .fl-row-content-wrap {
	width: 100%;
	padding: 0;
	position: relative;
	height: 100vh;
	min-height: 600px;
	isolation: isolate;                    /* contain mix-blend-mode to this element */
	background-size: cover !important;     /* BB sets background-image via inline style */
	background-position: center top !important;
}
/* Desaturate the BB row background-image (grayscale effect).
   mix-blend-mode: saturation uses the source saturation (gray = 0) and the
   background-image luminance → grayscale image without affecting content above. */
.trb-hero .fl-row-content-wrap::before {
	content: "";
	position: absolute;
	inset: 0;
	background: #808080;
	mix-blend-mode: saturation;
	z-index: 1;
	pointer-events: none;
}
/* Dark overlay + top/bottom scrim gradients in a single pseudo-element.
   Dims the grayscale image to ~40% effective brightness.                */
.trb-hero .fl-row-content-wrap::after {
	content: "";
	position: absolute;
	inset: 0;
	background:
		linear-gradient(to bottom, rgba(4,8,12,0.92) 0%, transparent 100%) top / 100% 16rem no-repeat,
		linear-gradient(to top,    rgba(4,8,12,0.92) 0%, transparent 100%) bottom / 100% 16rem no-repeat,
		rgba(19, 19, 20, 0.55);
	z-index: 2;
	pointer-events: none;
}
/* Stretch every BB wrapper to fill the full hero. */
.trb-hero .fl-row-content,
.trb-hero .fl-col-group,
.trb-hero .fl-col.trb-hero__content {
	height: 100vh;
	min-height: 600px;
}
/* Force full width — BB cache CSS may write its own max-width to col-group/col. */
.trb-hero .fl-col-group,
.trb-hero .fl-col.trb-hero__content {
	width: 100%;
	max-width: none;
}
.trb-hero .fl-row-content {
	max-width: none;
	padding: 0;
	margin: 0;
	position: relative;
	z-index: 5; /* above both ::before (z-index:1) and ::after (z-index:2) overlays */
}

/* Scrim utility classes (author.html compat — not used by BB layout). */
.scrim-top  { background: linear-gradient(to bottom, rgba(4,8,12,0.92) 0%, transparent 100%); }
.scrim-bottom { background: linear-gradient(to top,   rgba(4,8,12,0.92) 0%, transparent 100%); }

/* Content modules sit in normal flow above the row overlays via z-index on .fl-row-content. */
.trb-hero__content .fl-module {
	position: relative;
	z-index: 1;
	width: 100%;
	max-width: 56rem;
}

/* Hero divider — drawn as ::after on the subtitle Text Editor wrapper. */
.trb-hero__subtitle-wrap::after {
	content: "";
	display: block;
	width: 5rem;
	height: 1px;
	margin: var(--trb-stack-lg) auto 0;
	background-color: rgba(200, 169, 110, 0.5);
}

/* Column is a full-width positioned container. Width/centering is handled
   by .fl-col-content below; max-width/margin must NOT be here or the Photo
   module's inset:0 will only fill the constrained column, not the viewport. */
.trb-hero__content {
	position: relative;
	z-index: 20;
}
/* Vertical centering lives on BB's inner wrapper so the absolutely-positioned
   Photo module is out-of-flow and doesn't affect the flex layout. */
.trb-hero .fl-col.trb-hero__content > .fl-col-content {
	height: 100%;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	text-align: center;
	padding: var(--trb-section-gap) var(--trb-safe-inset);
}

.trb-hero__title,
.trb-hero h1,
.trb-hero .fl-heading-text {
	font-family: var(--trb-font-display);
	font-weight: 900;
	font-size: 56px;
	line-height: 1.05;
	letter-spacing: -0.05em;
	color: var(--trb-primary);
	margin: 0 0 var(--trb-stack-lg);
	text-shadow: 0 25px 50px rgba(0,0,0,0.25); /* drop-shadow-2xl approximation */
}
@media (min-width: 768px) {
	.trb-hero__title,
	.trb-hero h1,
	.trb-hero .fl-heading-text { font-size: 80px; }
}

.trb-hero__subtitle,
.trb-hero p {
	font-family: var(--trb-font-body);
	font-style: italic;
	font-weight: 500;
	font-size: 18px;
	line-height: 1.5;
	letter-spacing: 0.15em;
	color: var(--trb-muted-gold);
	max-width: 42rem; /* max-w-2xl */
	margin: 0 auto;
	text-align: center;
}

.trb-hero__divider {
	margin-top: var(--trb-stack-lg);
	width: 5rem;
	height: 1px;
	background-color: rgba(200, 169, 110, 0.5);
}

/* =========================================================================
   9. SECTION 2 — THE AUTHOR'S JOURNEY  (.trb-journey)
   ========================================================================= */
.trb-journey {
	width: 100%;
	position: relative;
}
/* Neutralize BB row wrappers so the section spans full viewport width. The
   inner content is then re-centered to 1280px via .fl-row-content rules. */
.trb-journey .fl-row-content-wrap { padding: 0; }
.trb-journey .fl-row-content {
	max-width: var(--trb-screen-xl);
	margin: 0 auto;
	padding: var(--trb-section-gap) var(--trb-safe-inset);
}
.trb-journey__grid {
	display: grid;
	grid-template-columns: 1fr;
	gap: var(--trb-gutter);
	align-items: center;
}
@media (min-width: 768px) {
	.trb-journey__grid {
		grid-template-columns: repeat(12, 1fr);
	}
	.trb-journey__media   { grid-column: 1 / span 5; height: 600px; }
	.trb-journey__copy    { grid-column: 7 / span 6; }
}
.trb-journey__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	filter: grayscale(100%);
	opacity: 0.7;
	/* No box border (per user instruction — drops the source's ghost-border). */
}
.trb-journey__title,
.trb-journey h2 {
	font-family: var(--trb-font-display);
	font-weight: 700;
	font-size: 24px;
	line-height: 1.2;
	letter-spacing: 0.1em;
	color: var(--trb-primary);
	margin: 0 0 var(--trb-stack-md);
	text-transform: uppercase;
}
.trb-journey__body,
.trb-journey p {
	font-family: var(--trb-font-body);
	font-size: 16px;
	line-height: 1.6;
	letter-spacing: 0.02em;
	color: var(--trb-on-surface-variant);
	margin: 0 0 var(--trb-stack-md);
}
.trb-journey__cta { align-self: flex-start; }

/* =========================================================================
   10. SECTION 3 — CINEMATIC MONOLOGUE  (.trb-monologue)
   Round 1 staggered 5/12 + 7/12 layout, restored. No background image.
   Both image cards locked to width: 360px so they render identical size
   regardless of which column wraps them.
   ========================================================================= */
.trb-monologue {
	width: 100%;
	position: relative;
}
.trb-monologue .fl-row-content-wrap { padding: 0; }
.trb-monologue .fl-row-content {
	max-width: var(--trb-screen-xl);
	margin: 0 auto;
	padding: var(--trb-section-gap) var(--trb-safe-inset);
}

@media (min-width: 768px) {
	.trb-monologue__left  { transform: translateY(-3rem); }
	.trb-monologue__right { transform: translateY(4rem); }
}

/* Eyebrow */
.trb-monologue__eyebrow {
	font-family: var(--trb-font-display);
	font-size: 12px;
	font-weight: 400;
	letter-spacing: 0.4em;
	text-transform: uppercase;
	color: rgba(204, 226, 240, 0.5);
	margin: 0 0 1.5rem;
}

/* Blockquote with mixed italics */
.trb-monologue__quote-block { margin-bottom: var(--trb-stack-lg); }
.trb-monologue__quote {
	font-family: var(--trb-font-display);
	font-weight: 900;
	font-size: 32px;
	line-height: 1.15;
	color: var(--trb-on-surface);
	margin: 0;
	text-shadow: 0 25px 50px rgba(0,0,0,0.25);
}
@media (min-width: 768px) { .trb-monologue__quote { font-size: 48px; } }
.trb-monologue__quote em,
.trb-monologue__quote i {
	font-family: var(--trb-font-body);
	font-style: italic;
	font-size: 36px;
	font-weight: 500;
	padding-right: 0.25rem;
}
@media (min-width: 768px) {
	.trb-monologue__quote em,
	.trb-monologue__quote i { font-size: 54px; }
}
.trb-monologue__quote em.is-primary { color: var(--trb-primary); }
.trb-monologue__quote em.is-gold    { color: var(--trb-muted-gold); }

/* Image cards — IDENTICAL width AND height across both cards.
   width: 360px is the key: both cards render at exactly the same physical
   size regardless of whether their parent column is 41.66% or 58.34% wide. */
.trb-monologue__card {
	position: relative;
	width: 360px;
	max-width: 100%;
	margin: 0 auto var(--trb-stack-lg);
	padding: 0.5rem;
	border: 1px solid rgba(200, 169, 110, 0.15);
	background-color: rgba(19, 19, 20, 0.3);
	backdrop-filter: blur(4px);
	-webkit-backdrop-filter: blur(4px);
	transition: transform 0.7s ease, opacity 0.3s ease;
}
.trb-monologue__card img {
	display: block;
	width: 100%;
	aspect-ratio: 4 / 5;
	height: auto;
	object-fit: cover;
	object-position: center;
	filter: grayscale(100%);
	opacity: 0.7;
	transition: opacity 0.3s ease;
}
.trb-monologue__card:hover img { opacity: 0.9; }
.trb-monologue__card--invert img { filter: grayscale(100%) invert(1); opacity: 0.75; }
.trb-monologue__card--tilt-left  { transform: rotate(-2deg); }
.trb-monologue__card--tilt-right { transform: rotate(3deg); }
.trb-monologue__card--tilt-left:hover,
.trb-monologue__card--tilt-right:hover { transform: rotate(0); }

/* Captions sit beneath each card in normal flow — no absolute positioning,
   so they cannot bleed into the section below (Section 4 / The Canon). */
.trb-monologue__caption {
	position: static;
	display: block;
	margin-top: var(--trb-stack-md);
	font-family: var(--trb-font-display);
	font-size: 12px;
	font-weight: 400;
	letter-spacing: 0.3em;
	text-transform: uppercase;
	color: var(--trb-muted-gold);
}
.trb-monologue__card { margin-bottom: var(--trb-stack-lg); }
.trb-monologue__caption--retreat {
	max-width: 18rem;
	text-align: left;
}
.trb-monologue__caption--process {
	text-align: right;
	display: flex;
	flex-direction: column;
	align-items: flex-end;
}
.trb-monologue__caption--process .material-symbols-outlined {
	font-size: 14px;
	margin-right: 6px;
	vertical-align: middle;
}
.trb-monologue__caption-note {
	font-family: var(--trb-font-body);
	font-size: 14px;
	color: var(--trb-on-surface-variant);
	max-width: 200px;
	text-transform: none;
	letter-spacing: 0.02em;
	margin-top: 6px;
}

/* =========================================================================
   Column-width fallbacks — survive the Publish-vs-Edit divergence.
   In the BB editor JS injects inline widths on .fl-col; in published markup
   those widths come from the cache layout.css which our direct postmeta
   writes don't fully populate. These classes are set in the column's
   Advanced > CSS Class and BB always emits them on the rendered .fl-col,
   so they force the desktop ratio regardless of cache CSS.
   ========================================================================= */
@media (min-width: 768px) {
	.fl-col.trb-col-3 { flex: 0 0 33.333%; max-width: 33.333%; }
	.fl-col.trb-col-4 { flex: 0 0 33.333%; max-width: 33.333%; }
	.fl-col.trb-col-5 { flex: 0 0 41.66%;  max-width: 41.66%;  }
	.fl-col.trb-col-6 { flex: 0 0 50%;     max-width: 50%;     }
	.fl-col.trb-col-7 { flex: 0 0 58.34%;  max-width: 58.34%;  }
	.fl-col.trb-col-8 { flex: 0 0 66.666%; max-width: 66.666%; }
}
@media (max-width: 767px) {
	.fl-col.trb-col-3,
	.fl-col.trb-col-4,
	.fl-col.trb-col-5,
	.fl-col.trb-col-6,
	.fl-col.trb-col-7,
	.fl-col.trb-col-8 { flex: 0 0 100%; max-width: 100%; }
}
@media (min-width: 768px) {
	.trb-canon .fl-row-content > .fl-col-group {
		display: flex;
		flex-wrap: wrap;
	}
}

/* =========================================================================
   11. SECTION 4 — THE CANON  (.trb-canon)
   ========================================================================= */
.trb-canon {
	width: 100%;
	border-top: 1px solid rgba(200, 169, 110, 0.1);
}
.trb-canon .fl-row-content-wrap { padding: 0; }
.trb-canon .fl-row-content {
	max-width: none;
	width: 100%;
	margin: 0;
	padding: var(--trb-section-gap) var(--trb-safe-inset);
}

/* BB Lite does not honor settings.class on column-group nodes, so target
   col-groups by position when needed. Group 1 = Intro, Group 2 = Featured
   Book, Group 3 = Previous Works grid. Column widths come from the
   .fl-col.trb-col-N rules above (33.33% / 66.66% / 33.33%); column-group
   only needs to be flex to lay out the .fl-col children side-by-side. */
.trb-canon .fl-row-content > .fl-col-group:nth-of-type(2) {
	margin: 0 0 var(--trb-section-gap);
	align-items: center;
}
.trb-canon .fl-row-content > .fl-col-group:nth-of-type(3) {
	padding-top: var(--trb-stack-lg);
	border-top: 1px solid rgba(53, 52, 54, 0.5);
}

.trb-canon__intro { text-align: center; margin-bottom: var(--trb-section-gap); }

/* Eyebrow (Heading module) */
.trb-canon__eyebrow .fl-heading-text,
.trb-canon__eyebrow {
	font-family: var(--trb-font-display);
	font-size: 12px;
	font-weight: 400;
	letter-spacing: 0.4em;
	text-transform: uppercase;
	color: var(--trb-muted-gold);
}

/* "The Canon" heading (Heading module) */
.trb-canon__heading .fl-heading-text,
.trb-canon__heading {
	font-family: var(--trb-font-display);
	font-weight: 700;
	font-size: 24px;
	line-height: 1.2;
	letter-spacing: 0.1em;
	color: var(--trb-primary);
	margin-top: var(--trb-stack-md);
	text-transform: uppercase;
}

/* "The Canon" under-line — drawn as ::after on the Canon heading.
   (BB Lite has no Separator module, so the 48px primary line is a CSS decoration.) */
.trb-canon__heading::after {
	content: "";
	display: block;
	width: 3rem;
	height: 1px;
	margin: var(--trb-stack-md) auto 0;
	background-color: var(--trb-primary);
}

/* Featured Book column spacing — padding lives INSIDE the column flex-basis
   so it doesn't push beyond 100% total and never triggers flex-wrap. */
@media (min-width: 768px) {
	.trb-canon .fl-col.trb-canon__featured-media { padding-right: var(--trb-stack-lg); }
	.trb-canon .fl-col.trb-canon__featured-copy  { padding-left:  var(--trb-stack-lg); }
	.trb-canon .fl-col.trb-canon__previous-item + .fl-col.trb-canon__previous-item { padding-left: var(--trb-gutter); }
}

/* Featured book cover (Photo module) — soft blur glow behind, no border. */
.trb-canon__featured-media { position: relative; }
.trb-canon__featured-media::before {
	content: "";
	position: absolute;
	inset: 0;
	background-color: rgba(204, 226, 240, 0.05);
	filter: blur(40px);
	transition: background-color 0.5s ease;
	z-index: 0;
	pointer-events: none;
}
.trb-canon__featured-media:hover::before { background-color: rgba(204, 226, 240, 0.1); }
.trb-canon__featured-media .fl-photo,
.trb-canon__featured-media .fl-photo-content { position: relative; z-index: 10; }
.trb-canon__featured-media .fl-photo img {
	width: 100%;
	box-shadow: 0 25px 50px rgba(0,0,0,0.25);
	border: 0;
}

/* "Latest Release" pill (Heading module) — pill border around the text only. */
.trb-canon__tag { margin-bottom: var(--trb-stack-md); }
.trb-canon__tag .fl-heading-text {
	display: inline-block;
	font-family: var(--trb-font-display);
	font-size: 12px;
	font-weight: 400;
	letter-spacing: 0.3em;
	text-transform: uppercase;
	color: var(--trb-primary);
	border: 1px solid var(--trb-primary);
	padding: 4px 8px;
	border-radius: 2px;
}

/* Featured book title (Heading module) */
.trb-canon__title .fl-heading-text,
.trb-canon__title {
	font-family: var(--trb-font-display);
	font-weight: 900;
	font-size: 36px;
	line-height: 1.1;
	letter-spacing: -0.02em;
	color: var(--trb-on-surface);
	margin: 0 0 var(--trb-stack-md);
}
@media (min-width: 768px) {
	.trb-canon__title .fl-heading-text,
	.trb-canon__title { font-size: 48px; }
}

/* Tagline (Text Editor) */
.trb-canon__tagline p,
.trb-canon__tagline {
	font-family: var(--trb-font-body);
	font-style: italic;
	font-weight: 500;
	font-size: 18px;
	line-height: 1.5;
	letter-spacing: 0.15em;
	color: var(--trb-muted-gold);
	margin: 0 0 var(--trb-stack-lg);
}

/* Description (Text Editor) */
.trb-canon__desc p,
.trb-canon__desc {
	font-family: var(--trb-font-body);
	font-size: 16px;
	line-height: 1.6;
	letter-spacing: 0.02em;
	color: var(--trb-on-surface-variant);
	max-width: 42rem;
	margin: 0 0 var(--trb-stack-lg);
}

/* Kill BB's default `.fl-module-content { margin: 20px 0 }` inside the Canon
   copy column so the explicit per-element margins below match author.html's
   rhythm exactly (tag→title=1rem, title→tagline=1rem, tagline→desc=2rem,
   desc→buttons=2rem). */
.trb-canon__featured-copy .fl-module { margin: 0; }
.trb-canon__featured-copy .fl-module > .fl-module-content { margin: 0; padding: 0; }
.trb-canon__previous-item .fl-module { margin: 0; }
.trb-canon__previous-item .fl-module > .fl-module-content { margin: 0; padding: 0; }
.trb-canon__intro .fl-module { margin: 0; }
.trb-canon__intro .fl-module > .fl-module-content { margin: 0; padding: 0; }

/* CTA buttons row — matches author.html `<div class="flex gap-gutter">`. */
.trb-canon__featured-copy .fl-module-button {
	display: inline-block;
	vertical-align: top;
	margin: 0;
}
.trb-canon__featured-copy .fl-module-button + .fl-module-button {
	margin-left: var(--trb-gutter);
}
@media (max-width: 767px) {
	.trb-canon__featured-copy .fl-module-button { display: block; }
	.trb-canon__featured-copy .fl-module-button + .fl-module-button {
		margin-left: 0;
		margin-top: var(--trb-stack-md);
	}
}

/* Hard-reset BB Button defaults for both Canon buttons. */
.trb-canon__featured-copy .fl-button-wrap { display: inline-block; width: auto; }
.trb-canon__featured-copy .fl-button {
	display: inline-flex;
	align-items: center;
	gap: 0.5rem;
	font-family: var(--trb-font-display);
	font-size: 12px;
	font-weight: 400;
	line-height: 1;
	letter-spacing: 0.3em;
	text-transform: uppercase;
	border-radius: 0;
	transition: background-color 0.3s ease, color 0.3s ease;
	text-decoration: none;
}

/* Purchase (trb-btn--outline): 1px primary border, transparent bg, hover-fill primary. */
.trb-canon__featured-copy .fl-module-button.trb-btn--outline .fl-button,
.trb-canon__featured-copy .fl-button.trb-btn--outline {
	background: transparent;
	color: var(--trb-primary);
	border: 1px solid var(--trb-primary);
	padding: 12px 32px;
}
.trb-canon__featured-copy .fl-module-button.trb-btn--outline .fl-button:hover,
.trb-canon__featured-copy .fl-button.trb-btn--outline:hover {
	background: var(--trb-primary);
	color: var(--trb-surface, #131314);
}

/* Read Excerpt (trb-btn--ghost): no border, no bg, gold text, hover-underline. */
.trb-canon__featured-copy .fl-module-button.trb-btn--ghost .fl-button,
.trb-canon__featured-copy .fl-button.trb-btn--ghost {
	background: transparent;
	color: var(--trb-muted-gold);
	border: 0;
	padding: 12px 0;
}
.trb-canon__featured-copy .fl-module-button.trb-btn--ghost .fl-button:hover,
.trb-canon__featured-copy .fl-button.trb-btn--ghost:hover {
	text-decoration: underline;
	text-underline-offset: 4px;
	color: var(--trb-muted-gold);
}

/* Inline Material Symbols arrow on the Read Excerpt button. */
.trb-canon__featured-copy .fl-button .material-symbols-outlined {
	font-size: 14px;
	line-height: 1;
	vertical-align: middle;
}

.trb-canon__previous {
	display: grid;
	grid-template-columns: 1fr;
	gap: var(--trb-gutter);
	padding-top: var(--trb-stack-lg);
	border-top: 1px solid rgba(53, 52, 54, 0.5);
}
@media (min-width: 768px) {
	.trb-canon__previous { grid-template-columns: repeat(3, 1fr); }
}
.trb-canon__previous-item { cursor: pointer; }
.trb-canon__previous-item h4 {
	font-family: var(--trb-font-display);
	font-weight: 700;
	font-size: 18px;
	letter-spacing: 0.05em;
	color: var(--trb-on-surface);
	margin-bottom: var(--trb-stack-sm);
	transition: color 0.3s ease;
}
.trb-canon__previous-item:hover h4 { color: var(--trb-primary); }
.trb-canon__previous-item p {
	font-family: var(--trb-font-body);
	font-size: 14px;
	color: var(--trb-on-surface-variant);
	margin: 0;
}

/* =========================================================================
   12. SECTION 5 — SUBSCRIBE TO DISPATCHES  (.trb-newsletter)
   ========================================================================= */
.trb-newsletter {
	padding: var(--trb-section-gap) var(--trb-safe-inset);
	max-width: var(--trb-screen-md);
	margin: 0 auto;
	text-align: center;
	border-top: 1px solid rgba(200, 169, 110, 0.1);
}
.trb-newsletter__icons {
	display: flex;
	justify-content: center;
	align-items: stretch;
	gap: var(--trb-gutter);
	margin-bottom: var(--trb-section-gap);
}
.trb-newsletter__icon-link {
	font-family: var(--trb-font-display);
	font-size: 12px;
	font-weight: 400;
	letter-spacing: 0.3em;
	text-transform: uppercase;
	color: var(--trb-muted-gold);
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: var(--trb-stack-sm);
	transition: color 0.3s ease;
}
.trb-newsletter__icon-link:hover { color: var(--trb-primary); }
.trb-newsletter__icon-link .material-symbols-outlined { font-size: 28px; }
.trb-newsletter__icon-divider {
	width: 1px;
	height: 48px;
	background-color: var(--trb-surface-variant);
	align-self: center;
}

.trb-newsletter__card {
	background-color: rgba(42, 42, 43, 0.4);
	border: 1px solid rgba(200, 169, 110, 0.15);
	padding: var(--trb-section-gap) var(--trb-safe-inset);
	border-radius: 2px;
	position: relative;
	overflow: hidden;
}
.trb-newsletter__card::before {
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient(to bottom, rgba(204, 226, 240, 0.05) 0%, transparent 100%);
	pointer-events: none;
}
.trb-newsletter__card-inner { position: relative; z-index: 10; }
.trb-newsletter__heading {
	font-family: var(--trb-font-display);
	font-weight: 700;
	font-size: 24px;
	letter-spacing: 0.1em;
	color: var(--trb-primary);
	margin-bottom: var(--trb-stack-sm);
	text-transform: uppercase;
}
.trb-newsletter__copy {
	font-family: var(--trb-font-body);
	font-size: 16px;
	line-height: 1.6;
	color: var(--trb-on-surface-variant);
	margin-bottom: var(--trb-stack-lg);
}
.trb-newsletter__form {
	display: flex;
	flex-direction: column;
	gap: 1rem;
	max-width: 28rem;
	margin: 0 auto;
}
@media (min-width: 768px) {
	.trb-newsletter__form { flex-direction: row; }
}
.trb-newsletter__input {
	width: 100%;
	background-color: transparent;
	border: 0;
	border-bottom: 1px solid var(--trb-secondary);
	color: var(--trb-on-surface);
	font-family: var(--trb-font-body);
	font-style: italic;
	font-size: 18px;
	padding: 0.5rem 0;
	outline: none;
	transition: border-color 0.3s ease;
}
.trb-newsletter__input::placeholder { color: var(--trb-surface-variant); }
.trb-newsletter__input:focus { border-color: var(--trb-primary); }

/* =========================================================================
   13. Beaver Builder content compatibility
   ========================================================================= */
.fl-builder-content .fl-row.trb-hero,
.fl-builder-content .fl-row.trb-monologue {
	padding-left: 0;
	padding-right: 0;
}
.fl-builder-content .fl-row.trb-hero .fl-row-content,
.fl-builder-content .fl-row.trb-monologue .fl-row-content {
	max-width: none;
	margin: 0;
	padding: 0;
}
.trb-has-bb .trb-main--front { padding-top: 0; }

/* When a BB Photo module is dropped inside a section that requires no
   image border, ensure the source default border is removed. */
.trb-journey .fl-photo img,
.trb-monologue .fl-photo img,
.trb-canon .fl-photo img {
	border: 0 !important;
}

/* =========================================================================
   14. Utility helpers
   ========================================================================= */
.trb-text-center { text-align: center; }
.trb-text-primary { color: var(--trb-primary); }
.trb-text-muted-gold { color: var(--trb-muted-gold); }
.trb-text-on-surface { color: var(--trb-on-surface); }
.trb-text-on-surface-variant { color: var(--trb-on-surface-variant); }
.trb-bg-surface { background-color: var(--trb-surface); }

/* Material Symbols inside text containers should align to text baseline. */
p .material-symbols-outlined,
a .material-symbols-outlined,
span .material-symbols-outlined {
	vertical-align: middle;
}
