@charset "UTF-8";
/*!
Theme Name: Glass Almanac
Theme URI: https://coin-glass.app/
Author: Glass Almanac research desk
Description: Editorial almanac theme for an independent crypto derivatives data guide. Paper-first typography, ruled layout, mono data furniture, hard-shadow cards.
Version: 2.1.0
Requires at least: 6.4
Tested up to: 6.8
Requires PHP: 7.4
License: GNU General Public License v2 or later
Text Domain: glass-almanac
*/

/* =========================================================================
   1. Tokens
   ========================================================================= */

:root {
	--paper: #f7f4ed;
	--paper-2: #fffdf7;
	--panel: #ffffff;
	--ink: #16130f;
	--ink-2: #3a342b;
	--muted: #6e6658;
	--faint: #928a7b;
	--rule: #e2d9c8;
	--rule-2: #eee7da;

	--navy: #141b2e;
	--navy-2: #1e2740;
	--navy-3: #2b3654;
	--navy-ink: #c9d1e4;

	--violet: #5b4bff;
	--violet-2: #4234db;
	--violet-soft: #ece9ff;
	--teal: #0f8b7e;
	--teal-soft: #e2f4f1;
	--green: #12855a;
	--green-soft: #e4f4ec;
	--red: #cc3b2b;
	--red-soft: #fdeae7;
	--amber: #c37c06;
	--amber-soft: #fdf1dc;

	--f-display: "Fraunces", "Iowan Old Style", "Palatino Linotype", Georgia, serif;
	--f-body: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
	--f-mono: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;

	--shell: 1216px;
	--gut: 20px;
	--r: 4px;
	--r-lg: 8px;
	--shadow: 4px 4px 0 rgba(22, 19, 15, .09);
	--shadow-sm: 3px 3px 0 rgba(22, 19, 15, .08);
	--shadow-v: 4px 4px 0 rgba(91, 75, 255, .17);
	--t: 160ms cubic-bezier(.4, 0, .2, 1);
}

@media (min-width: 700px) { :root { --gut: 30px; } }
@media (min-width: 1080px) { :root { --gut: 40px; } }

/* =========================================================================
   2. Base
   ========================================================================= */

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

html {
	-webkit-text-size-adjust: 100%;
	scroll-behavior: smooth;
	scroll-padding-top: 92px;
}

body {
	margin: 0;
	background: var(--paper);
	background-image:
		radial-gradient(circle at 12% -8%, rgba(91, 75, 255, .07), transparent 45%),
		radial-gradient(circle at 92% 2%, rgba(15, 139, 126, .07), transparent 40%);
	background-attachment: fixed;
	color: var(--ink);
	font-family: var(--f-body);
	font-size: 17px;
	line-height: 1.72;
	font-feature-settings: "kern" 1, "liga" 1, "cv05" 1;
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
	overflow-x: hidden;
}

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

a { color: var(--violet-2); text-decoration-thickness: 1px; text-underline-offset: 3px; }
a:hover { color: var(--ink); }

h1, h2, h3, h4, h5 {
	font-family: var(--f-display);
	font-weight: 700;
	line-height: 1.14;
	letter-spacing: -.014em;
	color: var(--ink);
	margin: 0 0 .5em;
	font-variation-settings: "SOFT" 0, "WONK" 0;
}

p { margin: 0 0 1.15em; }
strong { font-weight: 600; color: var(--ink); }
em { font-style: italic; }

code, kbd, samp {
	font-family: var(--f-mono);
	font-size: .855em;
	background: var(--violet-soft);
	color: var(--violet-2);
	padding: .1em .38em;
	border-radius: 3px;
	word-break: break-word;
}

hr {
	border: 0;
	border-top: 1px solid var(--rule);
	margin: 2.4rem 0;
}

::selection { background: #d9d3ff; color: var(--ink); }

.screen-reader-text {
	position: absolute !important;
	width: 1px; height: 1px;
	margin: -1px; padding: 0;
	overflow: hidden; clip: rect(0 0 0 0);
	white-space: nowrap; border: 0;
}

.skip-link:focus {
	position: fixed; top: 8px; left: 8px;
	z-index: 999;
	width: auto; height: auto;
	clip: auto; margin: 0;
	padding: 10px 16px;
	background: var(--ink); color: #fff;
	border-radius: var(--r);
	font-weight: 600;
}

:focus-visible {
	outline: 2px solid var(--violet);
	outline-offset: 2px;
	border-radius: 2px;
}

.ga-shell {
	width: 100%;
	max-width: var(--shell);
	margin: 0 auto;
	padding-left: var(--gut);
	padding-right: var(--gut);
}

/* =========================================================================
   3. Buttons
   ========================================================================= */

.ga-btn {
	display: inline-flex;
	align-items: center;
	gap: .5em;
	font-family: var(--f-body);
	font-weight: 600;
	font-size: .935rem;
	line-height: 1.15;
	padding: .78em 1.15em;
	border-radius: var(--r);
	border: 1.5px solid var(--ink);
	text-decoration: none;
	cursor: pointer;
	transition: transform var(--t), box-shadow var(--t), background var(--t), color var(--t);
	white-space: nowrap;
}

.ga-btn__ext { width: 12px; height: 12px; flex: none; opacity: .8; }

.ga-btn--primary {
	background: var(--violet);
	border-color: var(--violet-2);
	color: #fff;
	box-shadow: var(--shadow-v);
}
.ga-btn--primary:hover { background: var(--violet-2); color: #fff; transform: translate(-1px, -1px); box-shadow: 5px 5px 0 rgba(66, 52, 219, .22); }
.ga-btn--primary:active { transform: translate(2px, 2px); box-shadow: 1px 1px 0 rgba(66, 52, 219, .22); }

.ga-btn--ghost {
	background: var(--paper-2);
	color: var(--ink);
	box-shadow: var(--shadow-sm);
}
.ga-btn--ghost:hover { background: #fff; color: var(--ink); transform: translate(-1px, -1px); box-shadow: 4px 4px 0 rgba(22, 19, 15, .12); }
.ga-btn--ghost:active { transform: translate(2px, 2px); box-shadow: 1px 1px 0 rgba(22, 19, 15, .12); }

.ga-btn--sm { font-size: .845rem; padding: .62em .9em; }
.ga-btn--lg { font-size: 1rem; padding: .92em 1.4em; }

.ga-btn-row { display: flex; flex-wrap: wrap; gap: 10px; margin: 0 0 .75rem; }

.ga-adnote {
	font-family: var(--f-mono);
	font-size: .705rem;
	letter-spacing: .01em;
	color: var(--faint);
	margin: .5rem 0 0;
	line-height: 1.5;
}
.ga-adnote a { color: inherit; }

/* =========================================================================
   4. Top strip (jargon rail)
   ========================================================================= */

.ga-strip {
	background: var(--navy);
	color: var(--navy-ink);
	border-bottom: 1px solid #0d1322;
}

.ga-strip__inner {
	display: flex;
	align-items: center;
	gap: 14px;
	min-height: 38px;
}

.ga-strip__label {
	font-family: var(--f-mono);
	font-size: .66rem;
	text-transform: uppercase;
	letter-spacing: .14em;
	color: #7b88a8;
	flex: none;
	padding-right: 12px;
	border-right: 1px solid #29334d;
}

.ga-strip__list {
	display: flex;
	gap: 0;
	list-style: none;
	margin: 0; padding: 0;
	overflow-x: auto;
	scrollbar-width: none;
	flex: 1 1 auto;
	min-width: 0;
	-webkit-overflow-scrolling: touch;
	/* fade the cut edge so a truncated last item reads as scrollable, not broken */
	-webkit-mask-image: linear-gradient(90deg, #000 calc(100% - 34px), transparent 100%);
	mask-image: linear-gradient(90deg, #000 calc(100% - 34px), transparent 100%);
}
.ga-strip__list::-webkit-scrollbar { display: none; }

.ga-strip__list a {
	display: flex;
	align-items: baseline;
	gap: 7px;
	padding: 8px 14px;
	text-decoration: none;
	color: var(--navy-ink);
	white-space: nowrap;
	border-right: 1px solid #232d45;
	transition: background var(--t);
}
.ga-strip__list li:first-child a { border-left: 1px solid #232d45; }
.ga-strip__list a:hover { background: #1c2540; color: #fff; }

.ga-strip__t {
	font-family: var(--f-mono);
	font-size: .7rem;
	font-weight: 700;
	letter-spacing: .04em;
	color: #a4b0cf;
	text-transform: uppercase;
}
.ga-strip__d { font-size: .765rem; color: #6f7d9e; }

.ga-strip__flag {
	flex: none;
	font-family: var(--f-mono);
	font-size: .66rem;
	letter-spacing: .1em;
	text-transform: uppercase;
	color: #6f7d9e;
	padding-left: 12px;
	border-left: 1px solid #29334d;
}

/* The descriptions only fit on a genuinely wide viewport. */
@media (max-width: 1479px) {
	.ga-strip__d { display: none; }
}
@media (max-width: 1023px) {
	.ga-strip__flag, .ga-strip__label { display: none; }
	.ga-strip__list a { padding: 8px 12px; }
	.ga-strip__list li:first-child a { border-left: 0; }
	.ga-strip__list { -webkit-mask-image: none; mask-image: none; }
}

/* =========================================================================
   5. Header
   ========================================================================= */

.site-header {
	position: sticky;
	top: 0;
	z-index: 60;
	background: rgba(247, 244, 237, .93);
	backdrop-filter: saturate(150%) blur(10px);
	-webkit-backdrop-filter: saturate(150%) blur(10px);
	border-bottom: 1px solid var(--rule);
}

.site-header__bar {
	display: flex;
	align-items: center;
	gap: 18px;
	min-height: 68px;
	padding-top: 8px;
	padding-bottom: 8px;
	/* wider than the article shell: localised nav labels and CTA copy run much
	   longer than the English originals and must not push the button off-screen */
	max-width: 1400px;
}

.site-branding { flex: none; }
.site-branding a {
	display: flex;
	align-items: center;
	gap: 11px;
	text-decoration: none;
	color: inherit;
}
.site-branding__text { display: flex; flex-direction: column; }

.site-title {
	font-family: var(--f-display);
	font-weight: 700;
	font-size: 1.19rem;
	line-height: 1.05;
	letter-spacing: -.02em;
	margin: 0;
	color: var(--ink);
}
.site-title span { color: var(--violet); }

.site-description {
	font-family: var(--f-mono);
	font-size: .625rem;
	text-transform: uppercase;
	letter-spacing: .1em;
	color: var(--faint);
	margin: 2px 0 0;
	line-height: 1.2;
}

.main-navigation { margin-left: auto; }
.main-navigation .menu {
	display: flex;
	align-items: center;
	gap: 2px;
	list-style: none;
	margin: 0; padding: 0;
}
.main-navigation .menu a {
	display: block;
	padding: 8px 10px;
	font-size: .885rem;
	font-weight: 500;
	color: var(--ink-2);
	text-decoration: none;
	border-radius: var(--r);
	transition: background var(--t), color var(--t);
	white-space: nowrap;
}
.main-navigation .menu a:hover { background: rgba(91, 75, 255, .09); color: var(--violet-2); }
.main-navigation .current-menu-item > a {
	color: var(--ink);
	font-weight: 600;
	box-shadow: inset 0 -2px 0 var(--violet);
	border-radius: var(--r) var(--r) 0 0;
}

.site-header__actions {
	display: flex;
	align-items: center;
	gap: 8px;
	flex: none;
}

/* Language switcher */
.ga-langs { position: relative; }
.ga-langs__btn {
	display: flex;
	align-items: center;
	gap: 6px;
	background: var(--paper-2);
	border: 1.5px solid var(--rule);
	border-radius: var(--r);
	padding: .5em .65em;
	font-family: var(--f-mono);
	font-size: .74rem;
	font-weight: 700;
	letter-spacing: .06em;
	color: var(--ink-2);
	cursor: pointer;
	transition: border-color var(--t), background var(--t);
}
.ga-langs__btn:hover { border-color: var(--violet); background: #fff; }
.ga-langs__btn svg { width: 14px; height: 14px; }
.ga-langs__chev { width: 10px !important; height: 10px !important; opacity: .6; transition: transform var(--t); }
.ga-langs__btn[aria-expanded="true"] .ga-langs__chev { transform: rotate(180deg); }

.ga-langs__menu {
	position: absolute;
	top: calc(100% + 8px);
	right: 0;
	min-width: 206px;
	background: var(--panel);
	border: 1.5px solid var(--ink);
	border-radius: var(--r);
	box-shadow: var(--shadow);
	padding: 6px;
	display: none;
	z-index: 70;
}
.ga-langs__menu.is-open { display: block; }
.ga-langs__menu a {
	display: flex;
	align-items: center;
	gap: 10px;
	padding: 7px 9px;
	border-radius: 3px;
	font-size: .875rem;
	color: var(--ink-2);
	text-decoration: none;
}
.ga-langs__menu a:hover { background: var(--violet-soft); color: var(--violet-2); }
.ga-langs__menu a[aria-current="true"] { background: var(--violet-soft); color: var(--violet-2); font-weight: 600; }
.ga-langs__code {
	font-family: var(--f-mono);
	font-size: .66rem;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: .06em;
	color: var(--faint);
	border: 1px solid var(--rule);
	border-radius: 3px;
	padding: 1px 5px;
	min-width: 30px;
	text-align: center;
}

/* Burger */
.menu-toggle {
	display: none;
	width: 40px; height: 38px;
	background: var(--paper-2);
	border: 1.5px solid var(--rule);
	border-radius: var(--r);
	cursor: pointer;
	position: relative;
}
.menu-toggle span {
	position: absolute;
	top: 50%; left: 50%;
	margin: -.9px 0 0 -8px;
	width: 16px; height: 1.8px;
	background: var(--ink);
	border-radius: 2px;
	transition: background var(--t);
}
/* the pseudo-elements are positioned against the bar, not the button */
.menu-toggle span::before,
.menu-toggle span::after {
	content: "";
	position: absolute;
	left: 0;
	width: 16px; height: 1.8px;
	background: var(--ink);
	border-radius: 2px;
	transition: transform var(--t);
}
.menu-toggle span::before { top: -5.5px; }
.menu-toggle span::after { top: 5.5px; }
.menu-toggle[aria-expanded="true"] span { background: transparent; }
.menu-toggle[aria-expanded="true"] span::before { transform: translateY(5.5px) rotate(45deg); }
.menu-toggle[aria-expanded="true"] span::after { transform: translateY(-5.5px) rotate(-45deg); }

/* Drawer */
.ga-drawer {
	display: none;
	border-top: 1px solid var(--rule);
	background: var(--paper-2);
	max-height: calc(100vh - 110px);
	overflow-y: auto;
}
.ga-drawer.is-open { display: block; }
.ga-drawer__inner { padding-top: 16px; padding-bottom: 24px; }
.ga-drawer .menu { list-style: none; margin: 0 0 14px; padding: 0; }
.ga-drawer .menu a {
	display: block;
	padding: 11px 0;
	font-size: 1.02rem;
	font-weight: 500;
	color: var(--ink);
	text-decoration: none;
	border-bottom: 1px solid var(--rule-2);
}
.ga-drawer .current-menu-item > a { color: var(--violet-2); font-weight: 600; }
.ga-drawer__label {
	font-family: var(--f-mono);
	font-size: .66rem;
	text-transform: uppercase;
	letter-spacing: .13em;
	color: var(--faint);
	margin: 16px 0 6px;
}
.ga-drawer__util { list-style: none; margin: 0 0 18px; padding: 0; display: flex; flex-wrap: wrap; gap: 8px 16px; }
.ga-drawer__util a { font-size: .875rem; color: var(--muted); text-decoration: none; }
.ga-drawer__util a:hover { color: var(--violet-2); }
.ga-drawer .ga-btn { width: 100%; justify-content: center; }

/* The tagline is the widest part of the branding column and the first thing
   worth sacrificing when a locale's nav labels run long. */
@media (max-width: 1439px) {
	.site-header .site-description { display: none; }
}

/* Collapse to the drawer while there is still slack, so the longest localised
   label set cannot overflow the bar. */
@media (max-width: 1199px) {
	.main-navigation { display: none; }
	.menu-toggle { display: block; }
	.site-header__actions .ga-btn { display: none; }
}
@media (max-width: 479px) {
	.site-description { display: none; }
	.ga-langs__btn span:not(.ga-langs__code) { display: none; }
}

/* =========================================================================
   6. Hero
   ========================================================================= */

.ga-hero {
	position: relative;
	padding: 30px 0 44px;
	border-bottom: 1px solid var(--rule);
	background:
		linear-gradient(180deg, rgba(255, 253, 247, .8), rgba(247, 244, 237, 0)),
		repeating-linear-gradient(90deg, rgba(22, 19, 15, .035) 0 1px, transparent 1px 68px);
}

.ga-crumbs {
	display: flex;
	align-items: center;
	gap: 8px;
	font-family: var(--f-mono);
	font-size: .705rem;
	letter-spacing: .05em;
	text-transform: uppercase;
	color: var(--faint);
	margin-bottom: 20px;
	flex-wrap: wrap;
}
.ga-crumbs a { color: var(--muted); text-decoration: none; }
.ga-crumbs a:hover { color: var(--violet-2); text-decoration: underline; }
.ga-crumbs span[aria-current] { color: var(--ink-2); }

.ga-hero__grid {
	display: grid;
	grid-template-columns: minmax(0, 1.08fr) minmax(0, .92fr);
	gap: 44px;
	align-items: center;
}
.ga-hero__grid--solo { grid-template-columns: minmax(0, 1fr); max-width: 860px; }

.ga-kicker {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	font-family: var(--f-mono);
	font-size: .69rem;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: .14em;
	color: var(--violet-2);
	background: var(--violet-soft);
	border: 1px solid #d8d2ff;
	border-radius: 100px;
	padding: 5px 12px;
	margin: 0 0 16px;
}
.ga-kicker--teal { color: var(--teal); background: var(--teal-soft); border-color: #c7e8e2; }
.ga-kicker--amber { color: var(--amber); background: var(--amber-soft); border-color: #f3dfb8; }

.entry-title {
	font-size: clamp(2.05rem, 5.1vw, 3.4rem);
	line-height: 1.05;
	letter-spacing: -.028em;
	margin: 0 0 18px;
	text-wrap: balance;
}
.entry-title em {
	font-style: italic;
	color: var(--violet-2);
	font-variation-settings: "SOFT" 40, "WONK" 1;
}

.ga-lede {
	font-size: clamp(1.04rem, 2vw, 1.19rem);
	line-height: 1.62;
	color: var(--ink-2);
	max-width: 62ch;
	margin: 0 0 24px;
}

.ga-hero__cta { display: flex; flex-wrap: wrap; gap: 10px; margin-bottom: 16px; }

.ga-hero__media {
	margin: 0;
	position: relative;
	border: 1.5px solid var(--ink);
	border-radius: var(--r-lg);
	background: var(--navy);
	box-shadow: 8px 8px 0 rgba(22, 19, 15, .1);
	overflow: hidden;
}
.ga-hero__media img { width: 100%; }
.ga-hero__media figcaption {
	font-family: var(--f-mono);
	font-size: .665rem;
	line-height: 1.5;
	letter-spacing: .02em;
	color: #8794b3;
	padding: 9px 12px;
	border-top: 1px solid #29334d;
	background: var(--navy-2);
}

@media (max-width: 899px) {
	.ga-hero__grid { grid-template-columns: minmax(0, 1fr); gap: 28px; }
	.ga-hero { padding: 22px 0 32px; }
}

/* Disclaimer chip */
.ga-disc {
	position: relative;
	display: inline-flex;
	align-items: center;
	gap: 7px;
	font-family: var(--f-mono);
	font-size: .672rem;
	letter-spacing: .045em;
	text-transform: uppercase;
	color: var(--muted);
	background: rgba(255, 253, 247, .8);
	border: 1px dashed var(--rule);
	border-radius: 100px;
	padding: 4px 11px;
	cursor: help;
}
.ga-disc:hover, .ga-disc:focus { color: var(--amber); border-color: var(--amber); }
.ga-disc__dot {
	width: 6px; height: 6px;
	border-radius: 50%;
	background: var(--amber);
	box-shadow: 0 0 0 3px var(--amber-soft);
	flex: none;
}
.ga-disc__pop {
	position: absolute;
	bottom: calc(100% + 10px);
	left: 0;
	width: min(360px, 78vw);
	background: var(--navy);
	color: #d5dcec;
	border-radius: var(--r-lg);
	border: 1px solid var(--navy-3);
	box-shadow: 0 16px 40px rgba(20, 27, 46, .32);
	padding: 13px 15px;
	font-family: var(--f-body);
	font-size: .805rem;
	line-height: 1.6;
	letter-spacing: 0;
	text-transform: none;
	opacity: 0;
	visibility: hidden;
	transform: translateY(5px);
	transition: opacity var(--t), transform var(--t), visibility var(--t);
	z-index: 40;
	pointer-events: none;
}
.ga-disc__pop strong { display: block; color: #fff; margin-bottom: 5px; font-size: .86rem; }
.ga-disc__pop a { color: #a99bff; }
.ga-disc:hover .ga-disc__pop,
.ga-disc:focus .ga-disc__pop,
.ga-disc:focus-within .ga-disc__pop { opacity: 1; visibility: visible; transform: translateY(0); }

/* Hero figure strip */
.ga-figures {
	display: grid;
	gap: 0;
	margin-top: 40px;
	border: 1.5px solid var(--ink);
	border-radius: var(--r-lg);
	background: var(--panel);
	box-shadow: var(--shadow);
	overflow: hidden;
}
.ga-figures--2 { grid-template-columns: repeat(2, 1fr); }
.ga-figures--3 { grid-template-columns: repeat(3, 1fr); }
.ga-figures--4 { grid-template-columns: repeat(4, 1fr); }

.ga-fig {
	padding: 16px 18px;
	border-right: 1px solid var(--rule-2);
	display: flex;
	flex-direction: column;
	gap: 3px;
	min-width: 0;
}
.ga-fig:last-child { border-right: 0; }
.ga-fig__k {
	font-family: var(--f-mono);
	font-size: .655rem;
	text-transform: uppercase;
	letter-spacing: .12em;
	color: var(--faint);
}
.ga-fig__v {
	font-family: var(--f-display);
	font-size: clamp(1.3rem, 2.6vw, 1.7rem);
	font-weight: 700;
	line-height: 1.1;
	letter-spacing: -.02em;
	color: var(--ink);
}
.ga-fig__v--violet { color: var(--violet-2); }
.ga-fig__v--green { color: var(--green); }
.ga-fig__v--red { color: var(--red); }
.ga-fig__v--amber { color: var(--amber); }
.ga-fig__v--teal { color: var(--teal); }
.ga-fig__n { font-size: .762rem; line-height: 1.45; color: var(--muted); }

@media (max-width: 899px) {
	.ga-figures--3, .ga-figures--4 { grid-template-columns: repeat(2, 1fr); }
	.ga-fig:nth-child(2n) { border-right: 0; }
	.ga-fig { border-bottom: 1px solid var(--rule-2); }
	.ga-figures--4 .ga-fig:nth-child(n+3), .ga-figures--3 .ga-fig:nth-child(n+3) { border-bottom: 0; }
}
@media (max-width: 479px) {
	.ga-figures { grid-template-columns: 1fr !important; }
	.ga-fig { border-right: 0; }
	.ga-fig:last-child { border-bottom: 0; }
}

/* =========================================================================
   7. Layout: article + sticky aside
   ========================================================================= */

.site-main { padding: 46px 0 10px; }

.ga-layout {
	display: grid;
	grid-template-columns: minmax(0, 1fr) 286px;
	gap: 56px;
	align-items: start;
}
.ga-layout--wide { grid-template-columns: minmax(0, 1fr); max-width: 820px; }

.entry-content { grid-column: 1; grid-row: 1; min-width: 0; }
.ga-aside { grid-column: 2; grid-row: 1; }

.ga-aside__sticky { position: sticky; top: 92px; }

@media (max-width: 1023px) {
	.ga-layout { grid-template-columns: minmax(0, 1fr); gap: 0; }
	.entry-content { grid-column: 1; grid-row: 2; }
	.ga-aside { grid-column: 1; grid-row: 1; margin-bottom: 26px; }
	.ga-aside__sticky { position: static; }
}

/* TOC */
.ga-toc {
	border: 1.5px solid var(--ink);
	border-radius: var(--r-lg);
	background: var(--panel);
	box-shadow: var(--shadow-sm);
	padding: 15px 17px;
	margin-bottom: 18px;
}
.ga-toc__title {
	font-family: var(--f-mono);
	font-size: .655rem;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: .14em;
	color: var(--faint);
	margin: 0 0 10px;
	padding-bottom: 9px;
	border-bottom: 1px solid var(--rule-2);
}
.ga-toc ol { counter-reset: toc; list-style: none; margin: 0; padding: 0; }
.ga-toc li { counter-increment: toc; margin: 0; }
.ga-toc a {
	display: flex;
	gap: 9px;
	padding: 5px 0;
	font-size: .845rem;
	line-height: 1.42;
	color: var(--ink-2);
	text-decoration: none;
	border-radius: 3px;
}
.ga-toc a::before {
	content: counter(toc, decimal-leading-zero);
	font-family: var(--f-mono);
	font-size: .66rem;
	font-weight: 700;
	color: var(--faint);
	padding-top: 2px;
	flex: none;
}
.ga-toc a:hover { color: var(--violet-2); }
.ga-toc a:hover::before { color: var(--violet); }
.ga-toc a.is-active { color: var(--violet-2); font-weight: 600; }
.ga-toc a.is-active::before { color: var(--violet); }

@media (max-width: 1023px) {
	.ga-toc { padding: 0; }
	.ga-toc__title { padding: 14px 16px; margin: 0; border-bottom: 1px solid var(--rule-2); }
	.ga-toc ol { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); padding: 10px 16px 14px; gap: 0 18px; }
}

/* Rail CTA card */
.ga-railcard {
	border: 1.5px solid var(--ink);
	border-radius: var(--r-lg);
	background: var(--navy);
	box-shadow: var(--shadow);
	padding: 16px 17px;
	color: #cbd3e6;
	background-image: repeating-linear-gradient(135deg, rgba(255, 255, 255, .022) 0 6px, transparent 6px 12px);
}
.ga-railcard__k {
	font-family: var(--f-mono);
	font-size: .625rem;
	text-transform: uppercase;
	letter-spacing: .14em;
	color: #7d8aab;
	margin: 0 0 7px;
}
.ga-railcard__t {
	font-family: var(--f-display);
	font-size: 1.06rem;
	font-weight: 700;
	line-height: 1.24;
	color: #fff;
	margin: 0 0 13px;
}
.ga-railcard .ga-btn { width: 100%; justify-content: center; }
.ga-railcard__n {
	font-family: var(--f-mono);
	font-size: .655rem;
	line-height: 1.5;
	color: #737f9e;
	margin: 9px 0 0;
}
.ga-railcard__n a { color: #9b8fff; }

@media (max-width: 1023px) { .ga-railcard { display: none; } }

/* =========================================================================
   8. Article typography
   ========================================================================= */

.entry-content { font-size: 1.048rem; }
.entry-content > p { max-width: 71ch; }

.entry-content h2 {
	counter-increment: sec;
	font-size: clamp(1.5rem, 3.2vw, 1.98rem);
	line-height: 1.16;
	margin: 2.6em 0 .7em;
	padding-top: 1.05em;
	border-top: 2px solid var(--ink);
	position: relative;
	letter-spacing: -.022em;
}
.entry-content h2::before {
	content: "§ " counter(sec, decimal-leading-zero);
	display: block;
	font-family: var(--f-mono);
	font-size: .66rem;
	font-weight: 700;
	letter-spacing: .16em;
	color: var(--violet);
	margin-bottom: .55em;
	text-transform: uppercase;
}
.entry-content { counter-reset: sec; }
.entry-content h2:first-child { margin-top: 0; }

.entry-content h3 {
	font-size: clamp(1.16rem, 2.3vw, 1.32rem);
	margin: 2em 0 .55em;
	letter-spacing: -.014em;
}
.entry-content h4 {
	font-size: 1.055rem;
	margin: 1.5em 0 .45em;
	font-family: var(--f-body);
	font-weight: 600;
	letter-spacing: -.006em;
}

.entry-content ul, .entry-content ol { margin: 0 0 1.3em; padding-left: 1.25em; max-width: 71ch; }
.entry-content li { margin-bottom: .5em; }
.entry-content ul > li::marker { color: var(--violet); }
.entry-content ol > li::marker { color: var(--violet); font-family: var(--f-mono); font-size: .88em; }

.entry-content blockquote {
	margin: 1.9em 0;
	padding: 4px 0 4px 22px;
	border-left: 3px solid var(--amber);
	background: linear-gradient(90deg, var(--amber-soft), transparent 70%);
	font-family: var(--f-display);
	font-size: 1.1rem;
	line-height: 1.55;
	color: var(--ink-2);
	max-width: 68ch;
}
.entry-content blockquote p:last-child { margin-bottom: 0; }
.entry-content blockquote cite {
	display: block;
	margin-top: .6em;
	font-family: var(--f-mono);
	font-size: .715rem;
	font-style: normal;
	letter-spacing: .04em;
	text-transform: uppercase;
	color: var(--muted);
}

.entry-content abbr[title] { text-decoration: underline dotted; cursor: help; }

/* Byline */
.ga-byline {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 8px 18px;
	font-family: var(--f-mono);
	font-size: .705rem;
	letter-spacing: .03em;
	color: var(--muted);
	padding-bottom: 16px;
	margin-bottom: 30px;
	border-bottom: 1px solid var(--rule);
	text-transform: uppercase;
}
.ga-byline strong { color: var(--ink); font-weight: 700; }
.ga-byline__who::before {
	content: "";
	display: inline-block;
	width: 7px; height: 7px;
	background: var(--green);
	border-radius: 50%;
	margin-right: 7px;
	vertical-align: middle;
}
.ga-byline a { color: var(--violet-2); }

/* =========================================================================
   9. Content components
   ========================================================================= */

/* Callouts */
.ga-callout {
	position: relative;
	margin: 1.9em 0;
	padding: 16px 19px 16px 20px;
	border: 1.5px solid var(--rule);
	border-left: 4px solid var(--muted);
	border-radius: var(--r);
	background: var(--panel);
	font-size: .985rem;
	line-height: 1.66;
}
.ga-callout p:last-child { margin-bottom: 0; }
.ga-callout__label {
	display: flex;
	align-items: center;
	gap: 8px;
	font-family: var(--f-mono);
	font-size: .69rem;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: .1em;
	margin: 0 0 .5em;
}
.ga-callout--risk { border-left-color: var(--red); background: var(--red-soft); border-color: #f6d6d0; }
.ga-callout--risk .ga-callout__label { color: var(--red); }
.ga-callout--verdict { border-left-color: var(--green); background: var(--green-soft); border-color: #cfe8dc; }
.ga-callout--verdict .ga-callout__label { color: var(--green); }
.ga-callout--note { border-left-color: var(--violet); background: var(--violet-soft); border-color: #ddd8ff; }
.ga-callout--note .ga-callout__label { color: var(--violet-2); }
.ga-callout--source { border-left-color: var(--teal); background: var(--teal-soft); border-color: #c9e9e3; }
.ga-callout--source .ga-callout__label { color: var(--teal); }
.ga-callout--source { font-size: .915rem; }

/* Stop block */
.ga-stop {
	margin: 2.1em 0;
	padding: 20px 22px;
	border: 2px solid var(--red);
	border-radius: var(--r-lg);
	background:
		repeating-linear-gradient(45deg, rgba(204, 59, 43, .07) 0 10px, transparent 10px 20px),
		#fff;
	box-shadow: 4px 4px 0 rgba(204, 59, 43, .16);
}
.ga-stop__head {
	display: flex;
	align-items: center;
	gap: 10px;
	font-family: var(--f-display);
	font-size: 1.12rem;
	font-weight: 700;
	color: var(--red);
	margin: 0 0 .55em;
	line-height: 1.25;
}
.ga-stop__head svg { width: 22px; height: 22px; flex: none; }
.ga-stop p:last-child { margin-bottom: 0; }
.ga-stop strong { color: var(--red); }

/* Tables */
.ga-table-wrap {
	margin: 1.9em 0;
	border: 1.5px solid var(--ink);
	border-radius: var(--r-lg);
	background: var(--panel);
	box-shadow: var(--shadow-sm);
	overflow: hidden;
}
.ga-table-wrap > div { overflow-x: auto; -webkit-overflow-scrolling: touch; }
.entry-content table {
	width: 100%;
	border-collapse: collapse;
	font-size: .89rem;
	min-width: 520px;
}
.entry-content caption {
	caption-side: top;
	text-align: left;
	font-family: var(--f-mono);
	font-size: .688rem;
	line-height: 1.5;
	letter-spacing: .04em;
	color: var(--muted);
	padding: 12px 16px;
	background: var(--paper-2);
	border-bottom: 1px solid var(--rule);
}
.entry-content thead th {
	background: var(--navy);
	color: #dfe5f2;
	font-family: var(--f-mono);
	font-size: .655rem;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: .1em;
	text-align: left;
	padding: 10px 14px;
	white-space: nowrap;
	border-right: 1px solid #2a3450;
}
.entry-content thead th:last-child { border-right: 0; }
.entry-content tbody th {
	text-align: left;
	font-weight: 600;
	color: var(--ink);
}
.entry-content tbody td, .entry-content tbody th {
	padding: 11px 14px;
	border-bottom: 1px solid var(--rule-2);
	border-right: 1px solid var(--rule-2);
	vertical-align: top;
	line-height: 1.55;
}
.entry-content tbody td:last-child, .entry-content tbody th:last-child { border-right: 0; }
.entry-content tbody tr:nth-child(even) { background: rgba(247, 244, 237, .6); }
.entry-content tbody tr:last-child td, .entry-content tbody tr:last-child th { border-bottom: 0; }
.entry-content tbody tr:hover { background: var(--violet-soft); }
.ga-num { font-family: var(--f-mono); font-size: .86em; white-space: nowrap; }

.ga-scroll-hint {
	display: block;
	font-family: var(--f-mono);
	font-size: .655rem;
	letter-spacing: .06em;
	text-transform: uppercase;
	color: var(--faint);
	padding: 8px 16px;
	border-top: 1px solid var(--rule-2);
	background: var(--paper-2);
}
@media (min-width: 760px) { .ga-scroll-hint { display: none; } }

.ga-pill {
	display: inline-block;
	font-family: var(--f-mono);
	font-size: .655rem;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: .06em;
	padding: 2px 7px;
	border-radius: 3px;
	border: 1px solid;
	white-space: nowrap;
}
.ga-pill--yes { color: var(--green); background: var(--green-soft); border-color: #bfe3d1; }
.ga-pill--no { color: var(--red); background: var(--red-soft); border-color: #f3cec7; }
.ga-pill--part { color: var(--amber); background: var(--amber-soft); border-color: #eed9ae; }
.ga-pill--info { color: var(--violet-2); background: var(--violet-soft); border-color: #d5cfff; }

/* Steps */
.entry-content ol.ga-steps { counter-reset: step; list-style: none; padding: 0; margin: 2em 0; max-width: none; }
.ga-steps > li {
	counter-increment: step;
	position: relative;
	padding: 0 0 26px 58px;
	margin: 0;
	border-left: 2px dashed var(--rule);
	margin-left: 17px;
}
.ga-steps > li:last-child { border-left-color: transparent; padding-bottom: 0; }
.ga-steps > li::before {
	content: counter(step, decimal-leading-zero);
	position: absolute;
	left: -18px; top: -3px;
	width: 36px; height: 36px;
	display: grid; place-items: center;
	background: var(--violet);
	color: #fff;
	border-radius: 50%;
	font-family: var(--f-mono);
	font-size: .76rem;
	font-weight: 700;
	box-shadow: 0 0 0 5px var(--paper);
}
.ga-steps__title { margin: 3px 0 .45em !important; font-size: 1.13rem !important; }
.ga-steps > li > p:last-child { margin-bottom: 0; }

/* Split */
.ga-split {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 0;
	margin: 2em 0;
	border: 1.5px solid var(--ink);
	border-radius: var(--r-lg);
	overflow: hidden;
	box-shadow: var(--shadow-sm);
}
.ga-split__side { padding: 20px 22px; background: var(--panel); }
.ga-split__side--a { border-right: 1.5px solid var(--rule); background: linear-gradient(180deg, #fff, var(--violet-soft)); }
.ga-split__side--b { background: linear-gradient(180deg, #fff, var(--teal-soft)); }
.ga-split__side h4 { font-family: var(--f-display); font-size: 1.13rem; font-weight: 700; margin: 0 0 .5em; }
.ga-split__side p:last-child { margin-bottom: 0; }
.ga-split .ga-kicker { margin-bottom: 12px; }
@media (max-width: 640px) {
	.ga-split { grid-template-columns: 1fr; }
	.ga-split__side--a { border-right: 0; border-bottom: 1.5px solid var(--rule); }
}

/* Pros / cons */
.ga-proscons {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 16px;
	margin: 2em 0;
}
.ga-proscons__col {
	border: 1.5px solid var(--rule);
	border-radius: var(--r-lg);
	padding: 17px 19px;
	background: var(--panel);
}
.ga-proscons__col h4 {
	font-family: var(--f-mono);
	font-size: .69rem;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: .1em;
	margin: 0 0 .8em;
}
.ga-proscons__col--pro { border-color: #cfe8dc; background: linear-gradient(180deg, #fff, var(--green-soft)); }
.ga-proscons__col--pro h4 { color: var(--green); }
.ga-proscons__col--con { border-color: #f3cec7; background: linear-gradient(180deg, #fff, var(--red-soft)); }
.ga-proscons__col--con h4 { color: var(--red); }
.ga-proscons ul { margin: 0; padding-left: 1.1em; font-size: .945rem; }
.ga-proscons li { margin-bottom: .45em; }
@media (max-width: 640px) { .ga-proscons { grid-template-columns: 1fr; } }

/* Key facts */
.ga-keyfacts {
	margin: 2em 0;
	border: 1.5px solid var(--ink);
	border-radius: var(--r-lg);
	background: var(--panel);
	box-shadow: var(--shadow-sm);
	overflow: hidden;
}
.ga-keyfacts__head {
	font-family: var(--f-mono);
	font-size: .69rem;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: .11em;
	color: #dfe5f2;
	background: var(--navy);
	padding: 11px 17px;
	margin: 0;
}
.ga-keyfacts dl { margin: 0; }
.ga-keyfacts__row {
	display: grid;
	grid-template-columns: minmax(140px, 30%) minmax(0, 1fr);
	border-bottom: 1px solid var(--rule-2);
}
.ga-keyfacts__row:last-child { border-bottom: 0; }
.ga-keyfacts dt {
	padding: 11px 17px;
	font-family: var(--f-mono);
	font-size: .715rem;
	text-transform: uppercase;
	letter-spacing: .05em;
	color: var(--muted);
	background: var(--paper-2);
	border-right: 1px solid var(--rule-2);
}
.ga-keyfacts dd { margin: 0; padding: 11px 17px; font-size: .945rem; line-height: 1.6; }
@media (max-width: 560px) {
	.ga-keyfacts__row { grid-template-columns: 1fr; }
	.ga-keyfacts dt { border-right: 0; border-bottom: 1px solid var(--rule-2); }
}

/* Timeline */
.entry-content ul.ga-timeline { list-style: none; padding: 0; margin: 2em 0; max-width: none; }
.ga-timeline > li {
	position: relative;
	padding: 0 0 20px 30px;
	border-left: 2px solid var(--rule);
	margin: 0;
}
.ga-timeline > li::before {
	content: "";
	position: absolute;
	left: -6px; top: 7px;
	width: 10px; height: 10px;
	border-radius: 50%;
	background: var(--paper);
	border: 2.5px solid var(--violet);
}
.ga-timeline > li:last-child { border-left-color: transparent; padding-bottom: 0; }
.ga-timeline__date {
	display: block;
	font-family: var(--f-mono);
	font-size: .672rem;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: .1em;
	color: var(--violet-2);
}
.ga-timeline__t { display: block; font-weight: 600; margin: 2px 0 3px; }
.ga-timeline p { margin: 0; font-size: .945rem; color: var(--ink-2); }

/* Card grids */
.ga-grid { display: grid; gap: 16px; margin: 2em 0; }
.ga-grid--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.ga-grid--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.ga-grid--4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
@media (max-width: 900px) { .ga-grid--3, .ga-grid--4 { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 580px) { .ga-grid { grid-template-columns: 1fr !important; } }

.ga-card {
	border: 1.5px solid var(--rule);
	border-radius: var(--r-lg);
	background: var(--panel);
	padding: 17px 19px;
	transition: transform var(--t), box-shadow var(--t), border-color var(--t);
}
.ga-card:hover { border-color: var(--ink); box-shadow: var(--shadow-sm); transform: translateY(-2px); }
.ga-card__num {
	display: block;
	font-family: var(--f-mono);
	font-size: .655rem;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: .13em;
	color: var(--violet);
	margin-bottom: 9px;
}
.ga-card h3 { font-size: 1.09rem !important; margin: 0 0 .45em !important; }
.ga-card p { font-size: .935rem; margin-bottom: 0; color: var(--ink-2); }
.ga-card p + p { margin-top: .7em; }

/* Check / cross lists */
.entry-content ul.ga-checklist, .entry-content ul.ga-crosslist { list-style: none; padding: 0; margin: 1.5em 0; }
.ga-checklist > li, .ga-crosslist > li {
	position: relative;
	padding-left: 30px;
	margin-bottom: .62em;
}
.ga-checklist > li::before, .ga-crosslist > li::before {
	position: absolute;
	left: 0; top: .05em;
	width: 20px; height: 20px;
	display: grid; place-items: center;
	border-radius: 50%;
	font-size: .72rem;
	font-weight: 700;
	font-family: var(--f-mono);
}
.ga-checklist > li::before { content: "✓"; background: var(--green-soft); color: var(--green); border: 1px solid #bfe3d1; }
.ga-crosslist > li::before { content: "✕"; background: var(--red-soft); color: var(--red); border: 1px solid #f3cec7; }

/* Verdict */
.ga-verdict {
	margin: 2.2em 0;
	border: 2px solid var(--ink);
	border-radius: var(--r-lg);
	background: var(--panel);
	box-shadow: var(--shadow);
	overflow: hidden;
}
.ga-verdict__head {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 10px 14px;
	padding: 12px 19px;
	background: var(--navy);
	color: #fff;
}
.ga-verdict__label {
	font-family: var(--f-mono);
	font-size: .655rem;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: .14em;
	background: var(--violet);
	color: #fff;
	padding: 3px 9px;
	border-radius: 3px;
}
.ga-verdict__score { font-family: var(--f-display); font-weight: 700; font-size: 1.03rem; line-height: 1.3; }
.ga-verdict > p { padding: 17px 19px; margin: 0; font-size: .985rem; }
.ga-verdict > p + p { padding-top: 0; }

/* Heat strip — signature explanatory component */
.ga-heat {
	margin: 2.2em 0;
	border: 1.5px solid var(--ink);
	border-radius: var(--r-lg);
	overflow: hidden;
	background: var(--navy);
	box-shadow: var(--shadow);
}
.ga-heat__head {
	display: flex;
	flex-wrap: wrap;
	justify-content: space-between;
	gap: 8px;
	padding: 11px 16px;
	border-bottom: 1px solid #2a3450;
}
.ga-heat__t {
	font-family: var(--f-mono);
	font-size: .69rem;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: .1em;
	color: #dfe5f2;
	margin: 0;
}
.ga-heat__sub { font-family: var(--f-mono); font-size: .655rem; color: #7d8aab; margin: 0; }
.ga-heat__grid {
	display: grid;
	grid-template-columns: 76px repeat(12, minmax(0, 1fr));
	gap: 2px;
	padding: 12px 16px;
}
.ga-heat__row-label {
	font-family: var(--f-mono);
	font-size: .625rem;
	color: #8794b3;
	display: flex;
	align-items: center;
	white-space: nowrap;
}
.ga-heat__cell { height: 20px; border-radius: 2px; background: #1d2740; }
.ga-heat__cell[data-h="1"] { background: #24304d; }
.ga-heat__cell[data-h="2"] { background: #2f4a6b; }
.ga-heat__cell[data-h="3"] { background: #3a7a86; }
.ga-heat__cell[data-h="4"] { background: #4fa06a; }
.ga-heat__cell[data-h="5"] { background: #9bbb4b; }
.ga-heat__cell[data-h="6"] { background: #e0b13c; }
.ga-heat__cell[data-h="7"] { background: #e8863a; }
.ga-heat__cell[data-h="8"] { background: #dd4f3a; }
.ga-heat__foot {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 10px;
	padding: 10px 16px;
	border-top: 1px solid #2a3450;
	font-family: var(--f-mono);
	font-size: .655rem;
	color: #7d8aab;
	line-height: 1.5;
}
.ga-heat__scale { display: flex; gap: 2px; }
.ga-heat__scale span { width: 20px; height: 9px; border-radius: 2px; }
@media (max-width: 640px) {
	.ga-heat__grid { grid-template-columns: 54px repeat(12, minmax(0, 1fr)); gap: 1.5px; padding: 10px; }
	.ga-heat__cell { height: 14px; }
	.ga-heat__row-label { font-size: .55rem; }
}

/* Figures */
.entry-content figure.wp-block-image {
	margin: 2.2em 0;
	border: 1.5px solid var(--ink);
	border-radius: var(--r-lg);
	overflow: hidden;
	background: var(--panel);
	box-shadow: var(--shadow-sm);
}
.entry-content figure.wp-block-image img { width: 100%; }
.entry-content figure.wp-block-image figcaption {
	font-size: .812rem;
	line-height: 1.55;
	color: var(--muted);
	padding: 11px 16px;
	border-top: 1px solid var(--rule-2);
	background: var(--paper-2);
	margin: 0;
}
.entry-content figure.wp-block-image figcaption a { color: var(--violet-2); }
.entry-content figure.is-portrait { max-width: 340px; }

/* Inline CTA */
.ga-inlinecta {
	margin: 2.3em 0;
	padding: 19px 21px;
	border: 1.5px dashed var(--violet);
	border-radius: var(--r-lg);
	background: linear-gradient(135deg, var(--violet-soft), var(--paper-2));
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto;
	gap: 8px 20px;
	align-items: center;
}
.ga-inlinecta__t {
	font-family: var(--f-display);
	font-size: 1.1rem;
	font-weight: 700;
	margin: 0 0 .3em;
	line-height: 1.25;
}
.ga-inlinecta__txt p:last-child { margin: 0; font-size: .93rem; color: var(--ink-2); }
.ga-inlinecta__act { display: flex; flex-wrap: wrap; gap: 9px; }
.ga-inlinecta .ga-adnote { grid-column: 1 / -1; margin: 4px 0 0; }
@media (max-width: 700px) {
	.ga-inlinecta { grid-template-columns: 1fr; }
	.ga-inlinecta__act .ga-btn { flex: 1 1 auto; justify-content: center; }
}

/* FAQ */
.ga-faq { margin: 3em 0 0; }
.ga-faq h2 { margin-top: 0 !important; }
.ga-faq__item {
	border: 1.5px solid var(--rule);
	border-radius: var(--r);
	background: var(--panel);
	margin-bottom: 9px;
	overflow: hidden;
}
.ga-faq__item[open] { border-color: var(--ink); box-shadow: var(--shadow-sm); }
.ga-faq__item summary {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 14px;
	padding: 14px 17px;
	cursor: pointer;
	font-weight: 600;
	font-size: 1.005rem;
	line-height: 1.4;
	list-style: none;
	color: var(--ink);
}
.ga-faq__item summary::-webkit-details-marker { display: none; }
.ga-faq__item summary:hover { color: var(--violet-2); }
.ga-faq__item summary svg { width: 13px; height: 13px; flex: none; color: var(--violet); transition: transform var(--t); }
.ga-faq__item[open] summary svg { transform: rotate(45deg); }
.ga-faq__a { padding: 0 17px 15px; font-size: .965rem; line-height: 1.68; color: var(--ink-2); }
.ga-faq__a p:last-child { margin-bottom: 0; }

/* Banner CTA */
.ga-banner {
	position: relative;
	margin: 3.2em 0 0;
	padding: 30px 32px;
	border: 2px solid var(--ink);
	border-radius: var(--r-lg);
	background: var(--navy);
	color: #cdd5e8;
	box-shadow: 6px 6px 0 rgba(22, 19, 15, .13);
	overflow: hidden;
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto;
	gap: 22px 32px;
	align-items: center;
}
.ga-banner__glow {
	position: absolute;
	inset: -40% -10% auto auto;
	width: 420px; height: 420px;
	background: radial-gradient(circle, rgba(91, 75, 255, .38), transparent 62%);
	pointer-events: none;
}
.ga-banner__body { position: relative; }
.ga-banner__k {
	font-family: var(--f-mono);
	font-size: .655rem;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: .15em;
	color: #8f9bc4;
	margin: 0 0 9px;
}
.ga-banner__t {
	font-family: var(--f-display);
	font-size: clamp(1.32rem, 3vw, 1.72rem);
	font-weight: 700;
	line-height: 1.18;
	color: #fff;
	margin: 0 0 9px;
	letter-spacing: -.02em;
}
.ga-banner__p { font-size: .965rem; line-height: 1.62; margin: 0; max-width: 58ch; }
.ga-banner__act {
	position: relative;
	display: flex;
	flex-direction: column;
	gap: 10px;
	/* the disclosure note inside this column would otherwise size the whole
	   track to its max-content width and crush the body copy */
	width: 296px;
	max-width: 100%;
}
.ga-banner__act .ga-btn { justify-content: center; }
.ga-banner__act .ga-btn--ghost { background: transparent; color: #fff; border-color: #57648a; box-shadow: none; }
.ga-banner__act .ga-btn--ghost:hover { background: rgba(255, 255, 255, .07); border-color: #fff; }
.ga-banner .ga-adnote { color: #6c7899; }
.ga-banner .ga-adnote a { color: #9b8fff; }
@media (max-width: 780px) {
	.ga-banner { grid-template-columns: 1fr; padding: 24px; }
	.ga-banner__act { width: 100%; }
}

/* `strong` inherits the light-theme ink colour, which is unreadable on every
   dark surface in the theme. Restore contrast wherever the panel is dark. */
.site-footer strong,
.ga-banner strong,
.ga-railcard strong,
.ga-disc__pop strong,
.ga-heat strong,
.ga-verdict__head strong,
.ga-stickybar strong,
.ga-strip strong,
.ga-keyfacts__head strong,
.entry-content thead th strong,
.ga-hero__media figcaption strong { color: #ffffff; }

/* Keep reading */
.ga-next { margin: 3.2em 0 0; padding-top: 26px; border-top: 2px solid var(--ink); }
.ga-next__title {
	font-family: var(--f-mono);
	font-size: .69rem;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: .15em;
	color: var(--faint);
	margin: 0 0 16px;
}
.ga-next__grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; }
@media (max-width: 860px) { .ga-next__grid { grid-template-columns: 1fr; } }
.ga-next__card {
	position: relative;
	display: block;
	padding: 17px 19px 40px;
	border: 1.5px solid var(--rule);
	border-radius: var(--r-lg);
	background: var(--panel);
	text-decoration: none;
	color: inherit;
	transition: transform var(--t), box-shadow var(--t), border-color var(--t);
}
.ga-next__card:hover { border-color: var(--ink); box-shadow: var(--shadow); transform: translate(-2px, -2px); color: inherit; }
.ga-next__n {
	font-family: var(--f-mono);
	font-size: .655rem;
	font-weight: 700;
	letter-spacing: .13em;
	color: var(--violet);
}
.ga-next__card h3 { font-size: 1.06rem; margin: 6px 0 .4em; font-family: var(--f-display); }
.ga-next__card p { font-size: .885rem; color: var(--muted); margin: 0; line-height: 1.55; }
.ga-next__go {
	position: absolute;
	left: 19px; bottom: 15px;
	font-size: 1.1rem;
	color: var(--violet);
	transition: transform var(--t);
}
.ga-next__card:hover .ga-next__go { transform: translateX(4px); }

/* =========================================================================
   10. Footer
   ========================================================================= */

.site-footer {
	margin-top: 64px;
	background: var(--navy);
	color: #a8b3cd;
	border-top: 2px solid var(--ink);
	font-size: .92rem;
}
.site-footer__top {
	display: grid;
	grid-template-columns: minmax(0, 1.15fr) minmax(0, 2fr);
	gap: 34px 44px;
	padding: 44px 0 34px;
}
@media (max-width: 860px) { .site-footer__top { grid-template-columns: 1fr; padding: 32px 0 26px; } }

.site-footer__brand .site-title { color: #fff; font-size: 1.24rem; margin-bottom: 10px; }
.site-footer__brand .site-title span { color: #9b8fff; }
.site-footer__brand .ga-logo { margin-bottom: 12px; }
.site-footer__about { font-size: .9rem; line-height: 1.66; max-width: 42ch; margin-bottom: 12px; }
.site-footer__mail a { font-family: var(--f-mono); font-size: .82rem; color: #9b8fff; text-decoration: none; }
.site-footer__mail a:hover { color: #fff; text-decoration: underline; }

.site-footer__links { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 26px; }
@media (max-width: 640px) { .site-footer__links { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 22px; } }
.site-footer__ct {
	font-family: var(--f-mono);
	font-size: .655rem;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: .13em;
	color: #6f7d9e;
	margin: 0 0 11px;
	padding-bottom: 8px;
	border-bottom: 1px solid #2a3450;
}
.site-footer__col ul { list-style: none; margin: 0; padding: 0; }
.site-footer__col li { margin-bottom: 7px; }
.site-footer__col a { color: #a8b3cd; text-decoration: none; font-size: .885rem; }
.site-footer__col a:hover { color: #fff; text-decoration: underline; }

.site-footer__disc {
	border: 1px solid #2a3450;
	border-left: 3px solid var(--amber);
	border-radius: var(--r);
	background: rgba(0, 0, 0, .18);
	padding: 15px 18px;
	margin-bottom: 26px;
}
.site-footer__disc-h {
	font-family: var(--f-mono);
	font-size: .655rem;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: .12em;
	color: #e0aa4e;
	margin: 0 0 7px;
}
.site-footer__disc p { font-size: .795rem; line-height: 1.62; color: #8d99b6; margin: 0 0 7px; }
.site-footer__disc p:last-child { margin-bottom: 0; }
.site-footer__disc a { color: #9b8fff; }

.site-footer__bottom {
	display: flex;
	flex-wrap: wrap;
	justify-content: space-between;
	align-items: center;
	gap: 12px 20px;
	padding: 16px 0 26px;
	border-top: 1px solid #2a3450;
}
.site-footer__bottom p { margin: 0; font-family: var(--f-mono); font-size: .69rem; letter-spacing: .04em; color: #6f7d9e; }
.site-footer__util { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 8px 18px; }
.site-footer__util a { font-size: .79rem; color: #8d99b6; text-decoration: none; }
.site-footer__util a:hover { color: #fff; text-decoration: underline; }

/* =========================================================================
   11. Sticky mobile CTA bar
   ========================================================================= */

.ga-stickybar {
	display: none;
	position: fixed;
	left: 0; right: 0; bottom: 0;
	z-index: 80;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	padding: 9px 14px calc(9px + env(safe-area-inset-bottom));
	background: rgba(20, 27, 46, .96);
	backdrop-filter: blur(8px);
	-webkit-backdrop-filter: blur(8px);
	border-top: 1px solid #2a3450;
}
.ga-stickybar__t {
	font-family: var(--f-mono);
	font-size: .672rem;
	line-height: 1.35;
	color: #9aa6c4;
	text-transform: uppercase;
	letter-spacing: .05em;
}
.ga-stickybar .ga-btn { flex: none; box-shadow: none; }
@media (max-width: 767px) {
	.ga-stickybar { display: flex; }
	body { padding-bottom: 62px; }
}

/* =========================================================================
   12. 404 + utility pages
   ========================================================================= */

.ga-404 { padding: 60px 0 40px; max-width: 720px; }
.ga-404__list { list-style: none; margin: 26px 0 0; padding: 0; display: grid; gap: 10px; }
.ga-404__list a {
	display: block;
	padding: 14px 17px;
	border: 1.5px solid var(--rule);
	border-radius: var(--r-lg);
	background: var(--panel);
	text-decoration: none;
	color: inherit;
	transition: border-color var(--t), box-shadow var(--t);
}
.ga-404__list a:hover { border-color: var(--ink); box-shadow: var(--shadow-sm); }
.ga-404__list strong { display: block; font-family: var(--f-display); font-size: 1.05rem; }
.ga-404__list span { font-size: .875rem; color: var(--muted); }

.ga-utility .entry-content h2 { border-top-width: 1px; }
.ga-utility .entry-content h2::before { content: none; }

/* =========================================================================
   13. Motion / print
   ========================================================================= */

@media (prefers-reduced-motion: reduce) {
	html { scroll-behavior: auto; }
	*, *::before, *::after {
		animation-duration: .001ms !important;
		transition-duration: .001ms !important;
	}
}

@media print {
	.ga-strip, .site-header, .ga-aside, .ga-stickybar, .ga-banner, .ga-inlinecta, .ga-next, .site-footer__links { display: none !important; }
	body { background: #fff; font-size: 11pt; }
	.ga-layout { display: block; }
	a[href^="http"]::after { content: " (" attr(href) ")"; font-size: 8pt; color: #666; }
}

/* =========================================================================
   14. Dark scheme
   ========================================================================= */

@media (prefers-color-scheme: dark) {
	:root {
		--paper: #12151d;
		--paper-2: #171b26;
		--panel: #1a1f2b;
		--ink: #eef1f7;
		--ink-2: #c3cad9;
		--muted: #949db3;
		--faint: #7a8398;
		--rule: #2b3242;
		--rule-2: #232937;
		--violet: #7d70ff;
		--violet-2: #9b91ff;
		--violet-soft: #21203c;
		--teal: #3fb3a3;
		--teal-soft: #16302e;
		--green: #43b880;
		--green-soft: #162f25;
		--red: #f0705c;
		--red-soft: #331e1c;
		--amber: #e2a545;
		--amber-soft: #33281a;
		--shadow: 4px 4px 0 rgba(0, 0, 0, .4);
		--shadow-sm: 3px 3px 0 rgba(0, 0, 0, .35);
		--shadow-v: 4px 4px 0 rgba(125, 112, 255, .22);
	}
	body {
		background-image:
			radial-gradient(circle at 12% -8%, rgba(125, 112, 255, .12), transparent 45%),
			radial-gradient(circle at 92% 2%, rgba(63, 179, 163, .1), transparent 40%);
	}
	.site-header { background: rgba(18, 21, 29, .93); }
	.ga-hero {
		background:
			linear-gradient(180deg, rgba(26, 31, 43, .7), rgba(18, 21, 29, 0)),
			repeating-linear-gradient(90deg, rgba(255, 255, 255, .026) 0 1px, transparent 1px 68px);
	}
	.ga-btn { border-color: #39415a; }
	.ga-btn--ghost { color: var(--ink); background: var(--panel); }
	.ga-btn--primary { color: #fff; border-color: #6f62f5; }
	.entry-content tbody tr:nth-child(even) { background: rgba(255, 255, 255, .022); }
	.entry-content tbody tr:hover { background: rgba(125, 112, 255, .1); }
	.ga-stop { background: repeating-linear-gradient(45deg, rgba(240, 112, 92, .09) 0 10px, transparent 10px 20px), var(--panel); }
	.ga-toc, .ga-figures, .ga-keyfacts, .ga-verdict, .ga-table-wrap, .ga-heat, .ga-split, .ga-hero__media { border-color: #39415a; }
	.ga-inlinecta { background: linear-gradient(135deg, #21203c, var(--panel)); }
	.ga-disc { background: rgba(26, 31, 43, .8); }
	.site-footer { border-top-color: #39415a; }
}
