/*
 * Dossier theme styles.
 * Dark, one accent (phosphor green), mono for labels and data, grotesk for reading.
 * Mobile first. Breakpoints: 560, 720, 1024, 1280.
 * Every effect is an enhancement: without JS (or with reduced motion) everything is readable.
 */

/* ---------- fonts ---------- */
@font-face {
	font-family: "Archivo Variable";
	src: url("../fonts/archivo-latin-wght-normal.woff2") format("woff2");
	font-weight: 100 900;
	font-style: normal;
	font-display: swap;
}
@font-face {
	font-family: "JetBrains Mono Variable";
	src: url("../fonts/jetbrains-mono-latin-wght-normal.woff2") format("woff2");
	font-weight: 100 800;
	font-style: normal;
	font-display: swap;
}

/* ---------- tokens ---------- */
:root {
	color-scheme: dark;
	--bg: #060809;
	--bg-2: #0a0e0d;
	--panel: #0d1211;
	--panel-2: #111816;
	--line: #1b2421;
	--line-2: #27332f;
	--ink: #e2e8e4;
	--ink-2: #b8c2bc;
	--dim: #8b9690;
	--mute: #7d8883;
	--acc: #4ff08a;
	--acc-2: #2fd06c;
	--acc-dim: rgba(79, 240, 138, 0.12);
	--acc-glow: rgba(79, 240, 138, 0.45);
	--red: #ff5f52;
	--amber: #f2b54d;
	--bar: #000;
	--on-acc: #03110a;
	--mono: "JetBrains Mono Variable", "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
	--sans: "Archivo Variable", "Archivo", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
	--wrap: 1200px;
	--gutter: 16px;
	--hud: 56px;
	--ease: cubic-bezier(0.2, 0.7, 0.2, 1);
}
@media (min-width: 720px) { :root { --gutter: 28px; } }
@media (min-width: 1280px) { :root { --gutter: 40px; } }

/* ---------- base ---------- */
*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; scroll-padding-top: calc(var(--hud) + 16px); -webkit-text-size-adjust: 100%; }
body {
	margin: 0;
	background: var(--bg);
	color: var(--ink);
	font: 400 17px/1.65 var(--sans);
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
	text-rendering: optimizeLegibility;
	overflow-x: hidden;
}
::selection { background: var(--acc); color: var(--on-acc); }
a { color: var(--acc); text-underline-offset: 3px; text-decoration-thickness: 1px; }
a:hover { color: #8dffb6; }
:focus-visible { outline: 2px solid var(--acc); outline-offset: 3px; }
img, svg, video, canvas { max-width: 100%; }
img { height: auto; }
button { font: inherit; }
kbd { font-family: var(--mono); font-size: 0.85em; border: 1px solid var(--line-2); border-bottom-width: 2px; padding: 1px 6px; color: var(--ink); background: var(--panel); }
.mono { font-family: var(--mono); }
.sr-only { position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; user-select: none; }
.skip-link { position: fixed; left: 12px; top: -60px; z-index: 100; background: var(--acc); color: var(--on-acc); padding: 10px 14px; font: 700 13px var(--mono); text-decoration: none; }
.skip-link:focus { top: 10px; }
.wrap { width: min(var(--wrap), calc(100% - 2 * var(--gutter))); margin-inline: auto; position: relative; }
.wrap--narrow { width: min(780px, calc(100% - 2 * var(--gutter))); }
.print-only { display: none; }
main { position: relative; z-index: 1; display: block; }
main:focus { outline: none; }

/* ---------- atmosphere ---------- */
.fx { position: fixed; inset: 0; pointer-events: none; z-index: 0; }
.fx__grid {
	position: absolute; inset: 0;
	background-image: linear-gradient(rgba(79, 240, 138, 0.045) 1px, transparent 1px), linear-gradient(90deg, rgba(79, 240, 138, 0.045) 1px, transparent 1px);
	background-size: 64px 64px;
	-webkit-mask-image: radial-gradient(ellipse at 50% 0%, #000 0%, transparent 70%);
	mask-image: radial-gradient(ellipse at 50% 0%, #000 0%, transparent 70%);
}
.fx__scan { position: fixed; inset: 0; z-index: 90; background: repeating-linear-gradient(0deg, rgba(255, 255, 255, 0.016) 0 1px, transparent 1px 3px); }
.fx__noise {
	position: fixed; inset: -50%; z-index: 91; opacity: 0.05;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
	animation: noise 1.2s steps(4) infinite;
}
@keyframes noise { 0% { transform: translate(0, 0); } 25% { transform: translate(-3%, 2%); } 50% { transform: translate(2%, -3%); } 75% { transform: translate(-1%, 3%); } 100% { transform: translate(0, 0); } }

/* ---------- buttons ---------- */
.btn {
	display: inline-flex; align-items: center; justify-content: center; gap: 10px;
	min-height: 44px; padding: 0 18px;
	border: 1px solid var(--line-2); border-radius: 2px;
	background: rgba(13, 18, 17, 0.7); color: var(--ink);
	font: 600 12.5px/1 var(--mono); letter-spacing: 0.08em; text-transform: uppercase; text-decoration: none;
	cursor: pointer; transition: border-color 0.2s, color 0.2s, background 0.2s, box-shadow 0.2s, transform 0.2s;
}
.btn:hover { border-color: var(--acc); color: var(--acc); }
.btn .ico { flex: none; }
.btn--primary { background: var(--acc); border-color: var(--acc); color: var(--on-acc); }
.btn--primary:hover { color: var(--on-acc); background: #7dffaa; box-shadow: 0 0 0 1px var(--acc), 0 10px 40px -10px var(--acc-glow); }
.btn--ghost { background: transparent; }
.btn--lg { min-height: 52px; padding: 0 22px; font-size: 13px; }
.btn--sm { min-height: 38px; padding: 0 12px; font-size: 11.5px; gap: 8px; }
.mini {
	display: inline-flex; align-items: center; gap: 6px; min-height: 30px; padding: 0 8px;
	border: 1px solid var(--line-2); background: transparent; color: var(--dim);
	font: 500 11px/1 var(--mono); text-transform: uppercase; letter-spacing: 0.08em; cursor: pointer;
}
.mini:hover { color: var(--acc); border-color: var(--acc); }
.mini .ico { width: 13px; height: 13px; }
.mini.is-done { color: var(--acc); border-color: var(--acc); }
.dot { display: inline-block; width: 8px; height: 8px; border-radius: 50%; background: var(--acc); box-shadow: 0 0 0 0 var(--acc-glow); animation: pulse 2s infinite; flex: none; }
@keyframes pulse { 0% { box-shadow: 0 0 0 0 rgba(79, 240, 138, 0.55); } 70% { box-shadow: 0 0 0 9px rgba(79, 240, 138, 0); } 100% { box-shadow: 0 0 0 0 rgba(79, 240, 138, 0); } }
.ico { display: inline-block; vertical-align: middle; }

/* ---------- HUD ---------- */
.hud {
	position: fixed; top: 0; left: 0; right: 0; z-index: 50; height: var(--hud);
	display: flex; align-items: center; gap: 14px; padding: 0 var(--gutter);
	background: linear-gradient(rgba(6, 8, 9, 0.94), rgba(6, 8, 9, 0.78));
	-webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px);
	border-bottom: 1px solid var(--line);
}
.hud__brand { display: inline-flex; align-items: center; gap: 2px; color: var(--ink); text-decoration: none; font-size: 13px; font-weight: 700; letter-spacing: 0.18em; white-space: nowrap; }
.hud__brand:hover { color: var(--ink); }
.hud__mark { color: var(--acc); }
.hud__sep { color: var(--mute); margin: 0 2px; }
.hud__cursor { display: inline-block; width: 7px; height: 14px; margin-left: 6px; background: var(--acc); animation: blink 1.05s steps(1) infinite; }
@keyframes blink { 50% { opacity: 0; } }
.hud__progress { display: none; align-items: center; gap: 10px; flex: 1; max-width: 440px; margin-inline: auto; font-size: 11px; letter-spacing: 0.14em; text-transform: uppercase; color: var(--dim); }
.hud__pct { color: var(--acc); min-width: 4ch; }
.hud__bar { position: relative; flex: 1; height: 2px; background: var(--line-2); overflow: hidden; }
.hud__bar i { position: absolute; inset: 0; transform-origin: 0 50%; transform: scaleX(0); background: var(--acc); box-shadow: 0 0 10px var(--acc); }
.hud__nav { display: none; flex: 1; }
.hud__links { display: flex; gap: 4px; list-style: none; margin: 0; padding: 0; justify-content: center; }
.hud__links a { display: inline-flex; align-items: center; min-height: 40px; padding: 0 10px; color: var(--ink-2); text-decoration: none; font: 500 12px var(--mono); letter-spacing: 0.08em; text-transform: uppercase; }
.hud__links a:hover, .hud__links .current-menu-item a { color: var(--acc); }
.hud__actions { display: flex; align-items: center; gap: 8px; margin-left: auto; }
.hud__btn { display: inline-flex; align-items: center; justify-content: center; gap: 6px; min-width: 44px; height: 40px; padding: 0 10px; border: 1px solid var(--line-2); background: transparent; color: var(--ink-2); cursor: pointer; border-radius: 2px; }
.hud__btn:hover { color: var(--acc); border-color: var(--acc); }
.hud__kbd { display: none; font-size: 11px; padding: 0 5px; }
.hud__contact { display: inline-flex; align-items: center; gap: 10px; height: 40px; padding: 0 12px; border: 1px solid rgba(79, 240, 138, 0.45); background: var(--acc-dim); color: var(--acc); text-decoration: none; font-size: 11px; font-weight: 700; letter-spacing: 0.14em; text-transform: uppercase; white-space: nowrap; border-radius: 2px; }
.hud__contact:hover { background: var(--acc); color: var(--on-acc); }
.hud__contact { display: none; }
@media (min-width: 560px) { .hud__contact { display: inline-flex; } }
@media (min-width: 720px) { .hud__progress { display: flex; } .hud__kbd { display: inline-block; } }
@media (min-width: 960px) { .is-notes .hud__nav { display: block; } .is-notes .hud__menu { display: none; } }
@media (min-width: 1400px) { .is-dossier .hud__menu { display: none; } }

/* Logged in: make room for the WordPress toolbar. Visitors never get this class. */
.admin-bar .hud { top: 32px; }
.admin-bar .menu-sheet { top: calc(var(--hud) + 32px); }
@media (max-width: 782px) {
	.admin-bar .hud { top: 46px; }
	.admin-bar .menu-sheet { top: calc(var(--hud) + 46px); }
}
@media (max-width: 600px) {
	/* On phones the toolbar scrolls away with the page, so the HUD stays at the top. */
	.admin-bar .hud { top: 0; }
	.admin-bar .menu-sheet { top: var(--hud); }
}

/* menu sheet */
.menu-sheet { position: fixed; inset: var(--hud) 0 0 0; z-index: 49; background: rgba(6, 8, 9, 0.97); overflow-y: auto; padding: 28px var(--gutter) 48px; }
.menu-sheet.is-open { animation: sheet-in 0.3s var(--ease); }
@keyframes sheet-in { from { opacity: 0; transform: translateY(-8px); } to { opacity: 1; transform: none; } }
.menu-sheet__label { font-size: 11px; letter-spacing: 0.18em; color: var(--dim); text-transform: uppercase; margin: 0 0 12px; }
.menu-sheet__list { list-style: none; margin: 0 0 28px; padding: 0; }
.menu-sheet__list a { display: flex; align-items: baseline; gap: 14px; padding: 12px 0; border-bottom: 1px solid var(--line); color: var(--ink); text-decoration: none; font: 700 26px/1.1 var(--sans); letter-spacing: -0.02em; }
.menu-sheet__list a span { font-size: 12px; color: var(--acc); letter-spacing: 0.1em; }
.menu-sheet__extra { list-style: none; margin: 0; padding: 0; display: grid; gap: 4px; }
.menu-sheet__extra a { display: inline-flex; align-items: center; min-height: 44px; color: var(--ink-2); text-decoration: none; font-size: 13px; letter-spacing: 0.06em; }

/* chapter rail */
.rail-nav { display: none; }
@media (min-width: 1400px) {
	.rail-nav { display: block; position: fixed; left: 18px; top: 50%; transform: translateY(-50%); z-index: 40; }
	.rail-nav ol { list-style: none; margin: 0; padding: 0; display: grid; gap: 4px; }
	.rail-nav a { display: flex; align-items: center; gap: 10px; min-height: 30px; color: var(--mute); text-decoration: none; }
	.rail-nav__no { font-size: 11px; letter-spacing: 0.1em; width: 22px; }
	.rail-nav__no::before { content: ""; display: inline-block; width: 10px; height: 1px; margin-right: 6px; vertical-align: middle; background: currentColor; transition: width 0.25s var(--ease); }
	.rail-nav__label { font-size: 11px; letter-spacing: 0.14em; text-transform: uppercase; opacity: 0; transform: translateX(-6px); transition: opacity 0.25s, transform 0.25s; white-space: nowrap; background: rgba(6, 8, 9, 0.85); padding: 2px 6px; }
	.rail-nav a:hover .rail-nav__label, .rail-nav a:focus-visible .rail-nav__label, .rail-nav a.is-active .rail-nav__label { opacity: 1; transform: none; }
	.rail-nav a.is-active, .rail-nav a:hover { color: var(--acc); }
	.rail-nav a.is-active .rail-nav__no::before { width: 22px; }
}

/* ---------- hero ---------- */
.hero { position: relative; min-height: 100vh; min-height: 100svh; display: flex; flex-direction: column; padding-top: calc(var(--hud) + 36px); overflow: hidden; isolation: isolate; }
.hero__field { position: absolute; inset: 0; z-index: -1; overflow: hidden; }
.hero__canvas { position: absolute; inset: 0; width: 100%; height: 100%; display: block; }
.hero__glow { position: absolute; inset: 0; background: linear-gradient(180deg, transparent 60%, var(--bg) 100%), linear-gradient(90deg, rgba(6, 8, 9, 0.62) 0%, rgba(6, 8, 9, 0.5) 50%, rgba(6, 8, 9, 0) 85%), radial-gradient(ellipse 60% 50% at 78% 30%, rgba(79, 240, 138, 0.10), transparent 70%), radial-gradient(ellipse 80% 60% at 10% 100%, rgba(79, 240, 138, 0.05), transparent 70%); }
@media (max-width: 1023px) { .hero__glow { background: linear-gradient(180deg, rgba(6, 8, 9, 0.35) 0%, rgba(6, 8, 9, 0.55) 60%, var(--bg) 100%), radial-gradient(ellipse 80% 50% at 80% 20%, rgba(79, 240, 138, 0.10), transparent 70%); } }
.hero__grid { flex: 1; display: grid; gap: 40px; align-content: center; padding-bottom: 32px; }
.hero__tag { display: flex; flex-wrap: wrap; gap: 6px 18px; margin: 0; font-size: 11px; letter-spacing: 0.16em; text-transform: uppercase; color: var(--dim); }
.hero__tag b { color: var(--acc); font-weight: 700; }
.hero__status { display: inline-flex; align-items: center; gap: 8px; color: var(--acc); }
.hero__name { position: relative; margin: 18px 0 0; font-size: clamp(34px, 9.6vw, 92px); line-height: 1.02; font-weight: 700; letter-spacing: -0.045em; white-space: nowrap; color: #f2f6f3; text-shadow: 0 0 40px rgba(79, 240, 138, 0.12); }
.hero__name .cursor { display: inline-block; width: 0.5em; height: 0.82em; margin-left: 0.06em; vertical-align: -0.06em; background: var(--acc); box-shadow: 0 0 18px var(--acc-glow); animation: blink 1.05s steps(1) infinite; }
.hero__role { margin: 14px 0 0; min-height: 1.35em; font-size: clamp(19px, 3.2vw, 30px); line-height: 1.3; color: var(--acc); }
.hero__prompt { color: var(--mute); margin-right: 0.35em; }
.hero__lede { margin: 22px 0 0; max-width: 58ch; font-size: clamp(17px, 1.7vw, 20px); line-height: 1.6; color: var(--ink-2); }
.hero__cta { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 28px; }
.hero__metrics { display: flex; flex-wrap: wrap; gap: 8px 22px; list-style: none; margin: 24px 0 0; padding: 0; font-size: 11.5px; letter-spacing: 0.1em; text-transform: uppercase; color: var(--dim); }
.hero__metrics li::before { content: ""; display: inline-block; width: 6px; height: 6px; margin-right: 9px; background: var(--acc); vertical-align: 1px; }
.hero__boot { margin: 16px 0 0; min-height: 1.6em; font-size: 11.5px; color: var(--mute); }
.hero__boot b { color: var(--acc); font-weight: 500; }
.capsule { display: none; }
.hero__hint { display: flex; justify-content: center; flex-wrap: wrap; gap: 8px 26px; margin: 0; padding: 16px var(--gutter) 22px; font-size: 11.5px; letter-spacing: 0.1em; color: var(--dim); }
.hero__hint a { display: inline-flex; align-items: center; gap: 6px; min-height: 32px; color: var(--dim); text-decoration: none; }
.hero__hint a:hover { color: var(--acc); }
.hero__hint .ico { animation: bob 1.8s ease-in-out infinite; }
@keyframes bob { 50% { transform: translateY(3px); } }
@media (max-width: 559px) {
	.hero__cta .btn { flex: 1 1 100%; }
}
@media (min-width: 1024px) {
	.hero__grid { grid-template-columns: minmax(0, 1fr) 286px; align-items: center; gap: 56px; }
	.hero__name { font-size: min(92px, 6.4vw); }
	.capsule { display: block; }
}
.capsule__frame { position: relative; padding: 16px; border: 1px solid var(--line-2); background: rgba(10, 14, 13, 0.82); box-shadow: 0 30px 80px -40px rgba(79, 240, 138, 0.35); }
.capsule__scan { position: absolute; left: 16px; right: 16px; top: 16px; height: 2px; background: var(--acc); box-shadow: 0 0 14px 2px var(--acc-glow); opacity: 0.8; animation: scan 3.2s ease-in-out infinite alternate; }
@keyframes scan { to { top: calc(100% - 18px); } }
.capsule__corner { position: absolute; width: 16px; height: 16px; border: 2px solid var(--acc); }
.capsule__corner--tl { left: -1px; top: -1px; border-right: 0; border-bottom: 0; }
.capsule__corner--tr { right: -1px; top: -1px; border-left: 0; border-bottom: 0; }
.capsule__corner--bl { left: -1px; bottom: -1px; border-right: 0; border-top: 0; }
.capsule__corner--br { right: -1px; bottom: -1px; border-left: 0; border-top: 0; }
.capsule__label { margin: 14px 0 6px; text-align: center; font-size: 11px; letter-spacing: 0.2em; text-transform: uppercase; color: var(--acc); }
.capsule__mail { display: flex; align-items: center; justify-content: center; gap: 8px; flex-wrap: wrap; margin: 0; font-size: 12.5px; }
.capsule__mail a { color: var(--ink); text-decoration: none; }
.capsule__mail a:hover { color: var(--acc); }
@media (min-width: 720px) and (max-width: 1023px) {
	/* Tablets: the scan-to-save card sits under the buttons, QR on the left. */
	.capsule { display: grid; grid-template-columns: 176px minmax(0, 1fr); grid-template-rows: 1fr 1fr; column-gap: 24px; align-items: center; max-width: 560px; }
	.capsule__frame { grid-row: 1 / span 2; padding: 12px; }
	.capsule__scan { left: 12px; right: 12px; top: 12px; }
	.capsule__label { align-self: end; margin: 0 0 6px; text-align: left; }
	.capsule__mail { align-self: start; justify-content: flex-start; }
}
.qr { display: block; background: #e8f1ea; padding: 10px; line-height: 0; aspect-ratio: 1 / 1; }
.qr svg { display: block; width: 100%; height: auto; }
.qr noscript a { line-height: 1.4; color: #052; font: 600 13px var(--mono); }

/* marquee */
.marquee { position: relative; display: flex; align-items: center; gap: 18px; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); background: rgba(6, 8, 9, 0.7); padding: 0 0 0 var(--gutter); }
.marquee__label { flex: none; margin: 0; font-size: 10.5px; letter-spacing: 0.2em; text-transform: uppercase; color: var(--acc); }
.marquee__viewport { flex: 1; overflow: hidden; -webkit-mask-image: linear-gradient(90deg, transparent, #000 6%, #000 94%, transparent); mask-image: linear-gradient(90deg, transparent, #000 6%, #000 94%, transparent); }
.marquee__track { display: flex; width: max-content; animation: marquee 70s linear infinite; }
.marquee:hover .marquee__track { animation-play-state: paused; }
.marquee__list { display: flex; align-items: center; list-style: none; margin: 0; padding: 0; }
.marquee__list li { display: inline-flex; align-items: center; padding: 14px 0; font: 700 15px/1 var(--sans); letter-spacing: 0.02em; color: #a3aea8; white-space: nowrap; }
.marquee__list li::after { content: "/"; margin: 0 22px; color: var(--line-2); font-weight: 400; }
@keyframes marquee { to { transform: translateX(-50%); } }
.marquee--big { display: block; padding: 0; margin: clamp(36px, 6vw, 64px) 0; background: transparent; }
.marquee--big .marquee__track--slow { animation-duration: 150s; }
.marquee--big .marquee__list li { padding: 18px 0; font-size: clamp(34px, 6vw, 76px); font-weight: 800; letter-spacing: -0.03em; color: transparent; -webkit-text-stroke: 1px #3d4a45; }
.marquee--big .marquee__list li::after { content: "\2726"; -webkit-text-stroke: 0; color: var(--acc); font-size: 0.32em; margin: 0 0.9em; }

/* ---------- chapters ---------- */
.chapter { position: relative; z-index: 1; padding: clamp(72px, 10vw, 140px) 0; border-top: 1px solid var(--line); }
.chapter__head { max-width: 900px; margin-bottom: clamp(28px, 4vw, 52px); }
.chapter__no { margin: 0 0 14px; font-size: 12px; font-weight: 600; letter-spacing: 0.2em; text-transform: uppercase; color: var(--dim); }
.chapter__num { color: var(--acc); }
.chapter__title { position: relative; margin: 0; font: 800 clamp(42px, 7vw, 88px)/0.95 var(--sans); letter-spacing: -0.04em; color: #f2f6f3; }
.chapter__intro { margin: 20px 0 0; max-width: 64ch; font-size: clamp(17px, 1.5vw, 19px); color: var(--ink-2); }

/* glitch (applied briefly by JS) */
.glitchable.is-glitching { animation: jitter 0.32s steps(2) 1; }
.glitchable.is-glitching::before, .glitchable.is-glitching::after { content: attr(data-text); position: absolute; left: 0; top: 0; width: 100%; overflow: hidden; pointer-events: none; }
.glitchable.is-glitching::before { color: var(--acc); transform: translate(-3px, 0); clip-path: inset(10% 0 55% 0); mix-blend-mode: screen; }
.glitchable.is-glitching::after { color: var(--red); transform: translate(3px, 0); clip-path: inset(60% 0 8% 0); mix-blend-mode: screen; }
@keyframes jitter { 0% { transform: translate(0); } 50% { transform: translate(1px, -1px); } 100% { transform: translate(0); } }

/* reveal on scroll: only hidden when JS is running and the element hasn't come in yet */
.js .reveal { transition: opacity 0.8s var(--ease), transform 0.8s var(--ease); }
.js .reveal:not(.is-in) { opacity: 0; transform: translateY(18px); }

/* ---------- redaction ---------- */
.redact__v { transition: background-color 0.35s, color 0.35s; }
.js .redact-scope.is-armed .redact:not(.is-open) .redact__v {
	background: var(--bar); color: transparent; box-shadow: inset 0 0 0 1px #1d1d1d; border-radius: 1px; cursor: pointer;
	-webkit-box-decoration-break: clone; box-decoration-break: clone;
}
.js .redact.is-scrambling .redact__v { color: var(--acc) !important; background: rgba(79, 240, 138, 0.08) !important; box-shadow: none !important; }
.js .redact.is-open .redact__v { color: #fff; background: linear-gradient(transparent 62%, rgba(79, 240, 138, 0.22) 62%); }

/* ---------- profile ---------- */
.profile { display: grid; gap: 32px; }
@media (min-width: 1024px) { .profile { grid-template-columns: minmax(0, 1.5fr) minmax(0, 1fr); gap: 64px; align-items: start; } }
.profile__summary { margin: 0; font-size: clamp(19px, 2.1vw, 24px); line-height: 1.6; color: var(--ink); }
.stats { list-style: none; margin: 32px 0 0; padding: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1px; background: var(--line); border: 1px solid var(--line); }
@media (min-width: 720px) { .stats--profile, .stats--case { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
@media (min-width: 1024px) and (max-width: 1279px) { .stats--case { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.stat { background: var(--bg); container-type: inline-size; }
.stat > .stat__value, .stat > .stat__label { padding-inline: 16px; }
.stat > .stat__value { padding-top: 20px; }
.stat > .stat__label { padding-bottom: 18px; }
.stat__link { display: block; height: 100%; padding: 20px 16px 18px; color: inherit; text-decoration: none; transition: background 0.2s; }
.stat__link:hover { background: var(--panel); color: inherit; }
.stat__value { display: block; font-size: clamp(26px, 3.6vw, 42px); line-height: 1; font-weight: 600; color: var(--acc); white-space: nowrap; }
/* Long values ("2,570 ft") shrink to fit their cell. --len is the value's character
   count, set by the template; mono glyphs are 0.6em wide. Older browsers keep the line above. */
.stat__value { font-size: clamp(16px, calc((100cqi - 34px) / (var(--len, 4) * 0.6)), clamp(26px, 3.6vw, 42px)); }
.stat__label { display: block; margin-top: 10px; font: 500 11.5px/1.4 var(--mono); letter-spacing: 0.06em; text-transform: uppercase; color: var(--dim); }
.facts { margin: 0; border: 1px solid var(--line); background: var(--panel); }
.facts__row { display: grid; grid-template-columns: 104px minmax(0, 1fr); gap: 12px; padding: 12px 16px; border-bottom: 1px solid var(--line); }
.facts__row:last-child { border-bottom: 0; }
.facts dt { font-size: 10.5px; letter-spacing: 0.14em; text-transform: uppercase; color: var(--dim); padding-top: 2px; }
.facts dd { margin: 0; font-size: 13px; line-height: 1.5; color: var(--ink); }
.skills { margin-top: clamp(40px, 6vw, 64px); }
.skills__title { margin: 0 0 18px; font-size: 12px; letter-spacing: 0.2em; text-transform: uppercase; color: var(--dim); }
.skills__grid { display: grid; gap: 22px 36px; grid-template-columns: repeat(auto-fit, minmax(min(100%, 300px), 1fr)); }
.skills__cat { margin: 0 0 10px; font-size: 12px; font-weight: 600; letter-spacing: 0.12em; text-transform: uppercase; color: var(--acc); }
.tags { display: flex; flex-wrap: wrap; gap: 6px; list-style: none; margin: 0; padding: 0; }
.tags li { padding: 7px 9px; border: 1px solid var(--line-2); background: rgba(13, 18, 17, 0.7); font: 500 12.5px/1.2 var(--mono); color: var(--ink-2); }
.tags--sm li { padding: 5px 7px; font-size: 11px; }

/* ---------- case files ---------- */
.case-index { display: flex; flex-wrap: wrap; gap: 10px; list-style: none; margin: 0; padding: 0; }
.case-index a { display: inline-flex; align-items: baseline; gap: 10px; min-height: 44px; padding: 12px 14px; border: 1px solid var(--line-2); color: var(--ink); text-decoration: none; font-size: 13px; }
.case-index a span { color: var(--acc); font-weight: 700; }
.case-index a em { font-style: normal; color: var(--dim); font-size: 11px; letter-spacing: 0.08em; }
.case-index a:hover { border-color: var(--acc); }
.case { position: relative; padding: clamp(64px, 9vw, 128px) 0; border-top: 1px dashed var(--line-2); margin-top: clamp(48px, 6vw, 80px); overflow: hidden; }
.case:first-of-type { margin-top: clamp(40px, 5vw, 64px); }
.case__bg { position: absolute; inset: 0; pointer-events: none; overflow: hidden; }
.case__bg span { position: absolute; right: -0.06em; top: -0.12em; font: 800 clamp(150px, 30vw, 440px)/1 var(--mono); letter-spacing: -0.06em; color: transparent; -webkit-text-stroke: 1px rgba(79, 240, 138, 0.09); }
.case--lead { background: radial-gradient(ellipse 70% 50% at 20% 10%, rgba(79, 240, 138, 0.06), transparent 70%); }
.case__grid { display: grid; gap: 40px; grid-template-areas: "head" "body" "side" "exhibits" "press"; }
@media (min-width: 1024px) {
	.case__grid { grid-template-columns: minmax(0, 1.55fr) minmax(0, 1fr); grid-template-areas: "head head" "body side" "exhibits exhibits" "press press"; column-gap: 64px; row-gap: 48px; }
}
.case__head { grid-area: head; position: relative; padding-right: 0; }
.case__body { grid-area: body; min-width: 0; }
.case__side { grid-area: side; min-width: 0; }
.case__exhibits { grid-area: exhibits; }
.case__press { grid-area: press; }
.case__no { margin: 0; font-size: 12px; letter-spacing: 0.2em; text-transform: uppercase; color: var(--dim); }
.case__no b { color: var(--acc); }
.case__kicker { margin: 18px 0 0; font-size: 13px; letter-spacing: 0.12em; color: var(--acc); }
.case__title { position: relative; margin: 8px 0 0; font: 800 clamp(48px, 10vw, 132px)/0.9 var(--sans); letter-spacing: -0.05em; color: #f4f7f5; }
.case--lead .case__title { font-size: clamp(56px, 12vw, 168px); }
.case__sub { margin: 18px 0 0; max-width: 52ch; font-size: clamp(18px, 2vw, 23px); line-height: 1.45; color: var(--ink-2); }
.stamp { display: inline-block; margin: 22px 0 0; padding: 10px 14px; border: 2px solid var(--red); color: var(--red); font: 800 13px/1 var(--mono); letter-spacing: 0.24em; text-transform: uppercase; transform: rotate(-5deg); opacity: 0.92; }
.stamp small { display: block; margin-top: 6px; font-size: 9.5px; letter-spacing: 0.2em; font-weight: 700; }
@media (min-width: 720px) { .stamp { position: absolute; right: 0; top: 4px; margin: 0; } .case__head { padding-right: 230px; } }
.js .case:not(.is-in) .stamp { opacity: 0; }
.js .case.is-in .stamp { animation: stamp 0.5s cubic-bezier(0.2, 1.5, 0.35, 1) 0.35s both; }
@keyframes stamp { from { opacity: 0; transform: rotate(-14deg) scale(2.3); filter: blur(4px); } to { opacity: 0.92; transform: rotate(-5deg) scale(1); filter: none; } }
.case__narr p { margin: 0 0 1.15em; max-width: 64ch; font-size: clamp(17px, 1.55vw, 19.5px); line-height: 1.75; color: var(--ink-2); }
.case__narr p:first-child { color: var(--ink); }
.case__narr p:last-child { margin-bottom: 0; }
.case__label { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 6px 12px; margin: 0 0 18px; font-size: 12px; font-weight: 600; letter-spacing: 0.2em; text-transform: uppercase; color: var(--dim); }
.case__label span { font-weight: 400; letter-spacing: 0.08em; color: var(--mute); }
.case__more { margin: 18px 0 0; font-size: 12px; letter-spacing: 0.08em; }
.case__more a { display: inline-flex; align-items: center; gap: 8px; min-height: 40px; text-decoration: none; text-transform: uppercase; }

/* lite video */
.tape { margin: 32px 0 0; }
.tape__screen { position: relative; display: flex; flex-direction: column; justify-content: flex-end; aspect-ratio: 16 / 9; padding: 18px; overflow: hidden; border: 1px solid var(--line-2); background: radial-gradient(ellipse at 50% 40%, #0f1d17, #040606 75%); color: var(--ink); text-decoration: none; }
.tape__screen iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.tape__noise { position: absolute; inset: 0; opacity: 0.12; background: repeating-linear-gradient(0deg, rgba(255, 255, 255, 0.18) 0 1px, transparent 1px 4px); animation: roll 6s linear infinite; }
@keyframes roll { to { background-position: 0 200px; } }
.tape__rec { position: absolute; left: 16px; top: 14px; display: inline-flex; align-items: center; gap: 8px; font-size: 11px; letter-spacing: 0.2em; color: var(--red); }
.tape__rec i { width: 9px; height: 9px; border-radius: 50%; background: var(--red); animation: blink 1.4s steps(1) infinite; }
.tape__play { position: absolute; left: 50%; top: 46%; transform: translate(-50%, -50%); display: grid; place-items: center; width: 76px; height: 76px; border: 1px solid var(--acc); border-radius: 50%; color: var(--acc); background: rgba(6, 8, 9, 0.6); box-shadow: 0 0 0 8px rgba(79, 240, 138, 0.06); transition: transform 0.25s var(--ease), background 0.25s; }
.tape__play .ico { width: 28px; height: 28px; margin-left: 4px; fill: currentColor; }
.tape__screen:hover .tape__play { transform: translate(-50%, -50%) scale(1.08); background: var(--acc); color: var(--on-acc); }
.tape__title { position: relative; font: 700 clamp(16px, 2vw, 20px)/1.25 var(--sans); }
.tape__tc { position: absolute; right: 16px; top: 14px; font-size: 11px; letter-spacing: 0.16em; color: var(--dim); }
.tape__mark { position: absolute; inset: 0; display: grid; place-items: center; padding: 0 8%; font: 800 clamp(28px, 6vw, 64px)/0.95 var(--sans); letter-spacing: -0.04em; text-align: center; color: transparent; -webkit-text-stroke: 1px rgba(79, 240, 138, 0.12); pointer-events: none; }
.tape__screen::after { content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 2px; background: rgba(79, 240, 138, 0.22); }
.tape__meta { margin: 10px 0 0; font-size: 11.5px; letter-spacing: 0.06em; color: var(--dim); }
.evidence { margin: 28px 0 0; border: 1px solid var(--line-2); background: var(--panel); padding: 10px; }
.evidence img { display: block; width: 100%; }
.evidence figcaption { margin-top: 10px; font-size: 11.5px; color: var(--dim); }

/* timeline rail */
.rail { position: relative; list-style: none; margin: 0; padding: 0 0 0 26px; }
.rail::before { content: ""; position: absolute; left: 5px; top: 8px; bottom: 8px; width: 1px; background: linear-gradient(var(--acc), var(--line-2)); transform-origin: 0 0; transition: transform 1.6s var(--ease); }
.js .reveal:not(.is-in) .rail::before { transform: scaleY(0); }
.rail__item { position: relative; padding: 0 0 20px; }
.rail__item::before { content: ""; position: absolute; left: -26px; top: 6px; width: 11px; height: 11px; border: 1px solid var(--acc); border-radius: 50%; background: var(--bg); }
.rail__item.is-hot::before { background: var(--acc); box-shadow: 0 0 12px var(--acc); }
.rail__date { display: block; font-size: 12px; letter-spacing: 0.06em; color: var(--acc); }
.rail__text { margin: 4px 0 0; font-size: 15px; line-height: 1.55; color: var(--ink-2); }
.rail__src { font: 500 10.5px var(--mono); letter-spacing: 0.1em; text-transform: uppercase; white-space: nowrap; }

/* exhibits */
.exhibits { display: grid; gap: 10px; list-style: none; margin: 0; padding: 0; }
@media (min-width: 720px) { .exhibits { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 1280px) { .exhibits { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.ex { display: flex; align-items: stretch; height: 100%; min-height: 54px; border: 1px solid var(--line-2); background: var(--panel); color: var(--ink); text-decoration: none; transition: border-color 0.2s, transform 0.2s var(--ease), background 0.2s; }
a.ex:hover { border-color: var(--acc); transform: translateY(-2px); background: #0f1916; color: #fff; }
.ex__tag { flex: none; display: flex; align-items: center; padding: 0 11px; background: var(--acc); color: var(--on-acc); font-size: 10.5px; font-weight: 800; letter-spacing: 0.12em; text-transform: uppercase; white-space: nowrap; }
.ex__body { flex: 1; min-width: 0; display: flex; flex-direction: column; justify-content: center; gap: 3px; padding: 10px 12px; }
.ex__title { font-size: 14.5px; line-height: 1.35; }
.ex__src { font-size: 10.5px; letter-spacing: 0.04em; color: var(--dim); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
a.ex:hover .ex__src { color: var(--acc); }

/* press on file inside a case: outlets sorted by desk, one row each */
.desks { border-top: 1px solid var(--line); }
.desk { display: grid; gap: 10px; padding: 16px 0; border-bottom: 1px dashed var(--line-2); }
@media (min-width: 720px) { .desk { grid-template-columns: 200px minmax(0, 1fr); gap: 24px; align-items: center; } }
.desk__label { display: flex; align-items: baseline; gap: 10px; margin: 0; font-size: 11.5px; font-weight: 600; letter-spacing: 0.16em; text-transform: uppercase; color: var(--ink-2); }
.desk__label b { font-weight: 600; color: var(--acc); }
.desk__list { display: flex; flex-wrap: wrap; gap: 8px; list-style: none; margin: 0; padding: 0; }
.clip { display: inline-flex; align-items: center; gap: 8px; min-height: 40px; padding: 0 14px; border: 1px solid var(--line-2); background: var(--panel); color: var(--ink); font: 600 15px/1.2 var(--sans); letter-spacing: -0.01em; text-decoration: none; transition: border-color 0.2s, background 0.2s, color 0.2s, box-shadow 0.2s, transform 0.2s var(--ease); }
.clip:hover, .clip:focus-visible { border-color: var(--acc); background: #0f1916; color: #fff; box-shadow: 0 10px 24px -14px var(--acc-glow); transform: translateY(-1px); }
.clip__count { font-size: 11px; font-weight: 600; letter-spacing: 0.04em; color: var(--acc); }
@media (pointer: coarse) { .clip { min-height: 44px; } }

/* ---------- clearances ---------- */
.clearances__tagline { margin: 0 0 28px; max-width: 24ch; font: 800 clamp(28px, 4.4vw, 54px)/1.06 var(--sans); letter-spacing: -0.03em; background: linear-gradient(90deg, #f4f7f5 30%, var(--acc)); -webkit-background-clip: text; background-clip: text; color: transparent; }
.constellation { position: relative; height: clamp(230px, 34vw, 400px); margin: 0 0 18px; border: 1px solid var(--line); background: radial-gradient(ellipse at 50% 50%, rgba(79, 240, 138, 0.07), transparent 70%), var(--bg-2); overflow: hidden; }
.constellation canvas { display: block; width: 100%; height: 100%; }
.constellation__count { position: absolute; left: 14px; bottom: 10px; margin: 0; font-size: 11.5px; letter-spacing: 0.06em; color: var(--dim); }
.constellation__count b { color: var(--acc); }
.constellation__count span { color: var(--line-2); margin: 0 4px; }
.track-filter, .press-tools__filters { display: flex; gap: 8px; overflow-x: auto; padding-bottom: 6px; margin: 0 0 22px; scrollbar-width: thin; scrollbar-color: var(--line-2) transparent; }
/* Swipe through the filters on phones; on wider screens they wrap instead of scrolling sideways. */
@media (min-width: 1024px) { .track-filter, .press-tools__filters { flex-wrap: wrap; overflow-x: visible; } }
.filter { flex: none; display: inline-flex; align-items: center; gap: 8px; min-height: 40px; padding: 0 13px; border: 1px solid var(--line-2); border-radius: 2px; background: transparent; color: var(--ink-2); font: 500 11.5px/1 var(--mono); letter-spacing: 0.06em; text-transform: uppercase; cursor: pointer; white-space: nowrap; }
.filter span { color: var(--mute); }
.filter:hover { border-color: var(--acc); color: var(--acc); }
.filter.is-on { border-color: var(--acc); background: var(--acc-dim); color: var(--acc); }
.filter.is-on span { color: var(--acc); }
.clear-layout { display: grid; gap: 24px; }
@media (min-width: 1024px) { .clear-layout { grid-template-columns: minmax(0, 1fr) 340px; align-items: start; } }
.track { margin: 0 0 28px; }
.track.is-filtered { display: none; }
.track__title { display: flex; align-items: center; gap: 10px; margin: 0 0 12px; font-size: 12px; font-weight: 600; letter-spacing: 0.16em; text-transform: uppercase; color: var(--ink-2); }
.track__title span { color: var(--acc); }
.track__title::after { content: ""; flex: 1; height: 1px; background: var(--line); }
.chips { display: grid; gap: 8px; list-style: none; margin: 0; padding: 0; grid-template-columns: minmax(0, 1fr); }
@media (min-width: 560px) { .chips { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 1440px) { .chips { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.chip { width: 100%; height: 100%; display: grid; grid-template-columns: 56px minmax(0, 1fr) auto; align-items: center; gap: 12px; min-height: 54px; padding: 8px 12px 8px 8px; border: 1px solid var(--line); border-radius: 2px; background: var(--panel); color: var(--ink); text-align: left; cursor: pointer; transition: border-color 0.2s, background 0.2s, box-shadow 0.2s; }
.chip:hover { border-color: rgba(79, 240, 138, 0.6); background: #0f1714; }
.chip.is-active { border-color: var(--acc); background: #0f1a15; box-shadow: inset 3px 0 0 var(--acc); }
.chip__code { display: grid; place-items: center; height: 38px; padding: 0 2px; border: 1px solid rgba(79, 240, 138, 0.35); background: rgba(79, 240, 138, 0.06); color: var(--acc); font-size: 11px; font-weight: 700; letter-spacing: 0.02em; overflow: hidden; white-space: nowrap; text-overflow: clip; }
.is-featured .chip__code { background: var(--acc); color: var(--on-acc); border-color: var(--acc); }
.chip__name { font-size: 14px; line-height: 1.3; }
.chip__year { font-size: 11.5px; color: var(--dim); }
.chip__data { padding: 12px 12px 4px; border: 1px solid var(--line); border-top: 0; background: var(--bg-2); font-size: 14px; }
.js .chips .chip__data { display: none; }
.cd__title { margin: 0 0 14px; font: 700 21px/1.25 var(--sans); color: #fff; }
/* One grid for the whole list, so a long label ("Authentication token") widens the label column for every row instead of running into its value. */
.cd__meta { display: grid; grid-template-columns: minmax(72px, min-content) minmax(0, 1fr); gap: 6px 10px; margin: 0 0 16px; font-size: 12.5px; }
.cd__meta div { display: contents; }
.cd__meta dt { color: var(--dim); text-transform: uppercase; letter-spacing: 0.12em; font-size: 10.5px; padding-top: 2px; }
.cd__meta dd { margin: 0; color: var(--ink); overflow-wrap: anywhere; }
.cd__note { margin: 0 0 14px; color: var(--ink-2); font-size: 14px; }
.cd__links { display: flex; flex-wrap: wrap; gap: 8px; margin: 0 0 8px; }
.cd__list { list-style: none; margin: 12px 0 0; padding: 0; border-top: 1px solid var(--line); max-height: 280px; overflow: auto; }
.cd__list li { padding: 8px 0; border-bottom: 1px dashed var(--line); font-size: 12.5px; }
.cd__list a { text-decoration: none; }
.cd__list a:hover { text-decoration: underline; }
.clear-detail { position: relative; border: 1px solid var(--line-2); background: linear-gradient(180deg, #0c1513, var(--panel)); padding: 20px; }
.clear-detail:focus { outline: none; }
.clear-detail__close { display: none; position: absolute; right: 8px; top: 8px; width: 44px; height: 44px; border: 0; background: transparent; color: var(--dim); cursor: pointer; }
.clear-detail__empty { margin: 0 0 14px; font-size: 12.5px; color: var(--acc); }
.clear-detail__summary { list-style: none; margin: 0; padding: 0; }
.clear-detail__summary li { display: flex; justify-content: space-between; gap: 10px; padding: 9px 0; border-bottom: 1px dashed var(--line); font-size: 12px; color: var(--ink-2); }
.clear-detail__summary b { color: var(--acc); }
@media (min-width: 1024px) { .clear-detail { position: sticky; top: calc(var(--hud) + 20px); min-height: 300px; } }
@media (max-width: 1023px) {
	.js .clear-detail { position: fixed; left: 0; right: 0; bottom: 0; z-index: 46; max-height: 78vh; overflow: auto; border-left: 0; border-right: 0; border-bottom: 0; padding: 22px var(--gutter) calc(22px + env(safe-area-inset-bottom)); box-shadow: 0 -30px 80px rgba(0, 0, 0, 0.75); transform: translateY(105%); transition: transform 0.35s var(--ease); visibility: hidden; }
	.js .clear-detail.is-open { transform: none; visibility: visible; }
	.js .clear-detail__close { display: grid; place-items: center; }
	.js .clear-detail__summary, .js .clear-detail__empty { display: none; }
	.no-js .clear-detail { display: none; }
}

/* ---------- press ---------- */
.press-top { display: grid; gap: 28px; align-items: center; }
@media (min-width: 1024px) { .press-top { grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr); gap: 56px; } }
.globe { position: relative; width: 100%; max-width: 560px; margin-inline: auto; aspect-ratio: 1 / 1; }
.globe canvas { display: block; width: 100%; height: 100%; }
.globe__label { position: absolute; left: 0; right: 0; bottom: 4px; margin: 0; text-align: center; font-size: 11px; letter-spacing: 0.16em; text-transform: uppercase; color: var(--acc); }
.no-js .globe { display: none; }
.stats--press { margin-top: 0; }
.press-tools { display: flex; flex-wrap: wrap; align-items: center; gap: 12px; margin: 0 0 16px; }
.press-tools__filters { margin: 0; flex: 1 1 100%; }
.press-tools__search { display: flex; align-items: center; gap: 8px; flex: 1 1 240px; min-height: 44px; padding: 0 12px; border: 1px solid var(--line-2); background: var(--panel); color: var(--dim); }
.press-tools__search:focus-within { border-color: var(--acc); color: var(--acc); }
.press-tools__search input { flex: 1; min-width: 0; min-height: 42px; border: 0; outline: none; background: transparent; color: var(--ink); font-size: 13.5px; }
.press-tools__search input::placeholder { color: var(--mute); }
.press-tools__count { margin: 0 0 0 auto; font-size: 11.5px; letter-spacing: 0.08em; color: var(--dim); }
.press-list { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--line); }
.press-row.is-filtered { display: none; }
.press-row__link { display: grid; grid-template-columns: minmax(0, 1fr) auto; grid-template-areas: "meta flags" "title title"; gap: 6px 14px; padding: 14px 6px; border-bottom: 1px solid var(--line); color: var(--ink); text-decoration: none; transition: background 0.2s; }
.press-row__date { grid-area: meta; font-size: 11.5px; color: var(--dim); }
.press-row__outlet { grid-area: meta; padding-left: 120px; font-weight: 700; font-size: 14px; color: #fff; }
.press-row__title { grid-area: title; font-size: 15.5px; line-height: 1.45; color: var(--ink-2); }
.press-row__flags { grid-area: flags; display: inline-flex; align-items: center; gap: 8px; font-size: 10.5px; letter-spacing: 0.08em; text-transform: uppercase; color: var(--dim); }
.press-row__flags .ico { width: 15px; height: 15px; }
.press-row__link:hover { background: var(--panel); color: inherit; }
.press-row__link:hover .press-row__title { color: #fff; }
.press-row__link:hover .press-row__flags { color: var(--acc); }
.flag { border: 1px solid var(--line-2); padding: 3px 5px; }
.flag--named { color: var(--acc); border-color: rgba(79, 240, 138, 0.45); font-size: 12px; padding: 1px 5px; }
@media (min-width: 720px) {
	.press-row__link { grid-template-columns: 116px 168px minmax(0, 1fr) auto; grid-template-areas: "date outlet title flags"; align-items: baseline; padding: 15px 8px; }
	.press-row__date { grid-area: date; }
	.press-row__outlet { grid-area: outlet; padding-left: 0; }
}
.press-legend { margin: 16px 0 0; font-size: 11.5px; color: var(--dim); }

/* ---------- activity log ---------- */
.log { list-style: none; margin: 0; padding: 0; }
.log__item { display: grid; gap: 10px; padding: 0 0 38px; }
@media (min-width: 720px) { .log__item { grid-template-columns: 190px minmax(0, 1fr); gap: 28px; } }
.log__meta { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 12px; font-size: 12px; color: var(--dim); }
@media (min-width: 720px) { .log__meta { flex-direction: column; align-items: flex-start; padding-top: 4px; } }
.log__period { color: var(--acc); font-size: 13px; }
.log__kind { padding: 4px 6px; border: 1px solid var(--line-2); font-size: 10px; letter-spacing: 0.14em; text-transform: uppercase; }
.log__item--job .log__kind { border-color: rgba(79, 240, 138, 0.45); color: var(--acc); }
.log__body { position: relative; padding-left: 26px; border-left: 1px solid var(--line-2); min-width: 0; }
.log__body::before { content: ""; position: absolute; left: -6px; top: 9px; width: 11px; height: 11px; border: 1px solid var(--acc); border-radius: 50%; background: var(--bg); }
.log__item--job .log__body::before { background: var(--acc); box-shadow: 0 0 10px var(--acc-glow); }
.log__title { margin: 0; font: 700 clamp(20px, 2.4vw, 27px)/1.2 var(--sans); letter-spacing: -0.015em; color: #f2f6f3; }
.log__org { margin: 6px 0 0; font-size: 12.5px; letter-spacing: 0.04em; color: var(--dim); }
.log__details { margin-top: 12px; font-size: 15.5px; color: var(--ink-2); }
.log__details p { margin: 0 0 8px; }
.log__details ul { margin: 0; padding-left: 18px; }
.log__details li { margin: 0 0 6px; }
.log__details li::marker { color: var(--acc); }
.log__link { display: inline-flex; align-items: center; gap: 8px; min-height: 40px; margin-top: 6px; font-size: 11.5px; letter-spacing: 0.1em; text-transform: uppercase; text-decoration: none; }

/* ---------- field kit ---------- */
.kit { display: grid; gap: 12px; list-style: none; margin: 0; padding: 0; }
@media (min-width: 720px) { .kit { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 1280px) { .kit { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.kit__item { position: relative; display: flex; flex-direction: column; padding: 20px; border: 1px solid var(--line-2); background: var(--panel); transition: border-color 0.2s; }
.kit__item:hover { border-color: rgba(79, 240, 138, 0.5); }
.kit__item::before { content: ""; position: absolute; left: -1px; top: -1px; width: 22px; height: 22px; border-left: 2px solid var(--acc); border-top: 2px solid var(--acc); }
.kit__meta { display: flex; justify-content: space-between; gap: 10px; margin: 0 0 12px; font-size: 10.5px; letter-spacing: 0.12em; text-transform: uppercase; color: var(--dim); }
.kit__meta span:first-child { color: var(--acc); }
.kit__title { margin: 0 0 10px; font: 700 21px/1.25 var(--sans); }
.kit__title a { color: #f2f6f3; text-decoration: none; }
.kit__title a:hover { color: var(--acc); }
.kit__desc { flex: 1; }
.kit__desc p { margin: 0 0 12px; font-size: 15px; color: var(--ink-2); }
.kit__links { display: flex; flex-wrap: wrap; gap: 4px 16px; margin: 14px 0 0; font-size: 11.5px; letter-spacing: 0.06em; }
.kit__links a { display: inline-flex; align-items: center; gap: 6px; min-height: 36px; text-decoration: none; }

/* ---------- education ---------- */
.edu { display: grid; gap: 1px; list-style: none; margin: 0; padding: 0; background: var(--line); border: 1px solid var(--line); }
@media (min-width: 720px) { .edu { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 1280px) { .edu { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.edu__item { background: var(--bg); padding: 22px 20px; }
/* A short last row stretches across, so empty grid cells never show as a grey block. */
@media (min-width: 720px) and (max-width: 1279px) { .edu__item:last-child:nth-child(2n+1) { grid-column: 1 / -1; } }
@media (min-width: 1280px) {
	.edu__item:last-child:nth-child(3n+1) { grid-column: 1 / -1; }
	.edu__item:last-child:nth-child(3n+2) { grid-column: span 2; }
}
.edu__status { margin: 0 0 8px; font-size: 11px; letter-spacing: 0.14em; text-transform: uppercase; color: var(--acc); }
.edu__school { margin: 0 0 8px; font: 700 18px/1.3 var(--sans); color: #f2f6f3; }
.edu__program { margin: 0; font-size: 14.5px; color: var(--ink-2); }
.edu__link { display: inline-flex; align-items: center; gap: 6px; min-height: 36px; margin-top: 8px; font-size: 11px; letter-spacing: 0.1em; text-transform: uppercase; text-decoration: none; }

/* ---------- contact ---------- */
.chapter--contact { background: radial-gradient(ellipse 70% 60% at 50% 0%, rgba(79, 240, 138, 0.07), transparent 70%); }
.contact-wrap { max-width: 940px; }
.contact-lock { position: relative; }
.contact-lock__btn { position: absolute; inset: 41px 0 0 0; z-index: 3; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 10px; border: 0; background: rgba(6, 8, 9, 0.5); -webkit-backdrop-filter: blur(2px); backdrop-filter: blur(2px); color: var(--acc); font-size: 14px; font-weight: 700; letter-spacing: 0.18em; text-transform: uppercase; cursor: pointer; transition: background 0.3s; }
.contact-lock__btn .ico { width: 34px; height: 34px; }
.contact-lock__btn small { font-size: 11px; font-weight: 400; letter-spacing: 0.1em; color: var(--dim); }
.contact-lock__btn:hover { background: rgba(6, 8, 9, 0.3); }
.contact-lock__btn[hidden] { display: none; }
.idcard { position: relative; overflow: hidden; border: 1px solid var(--line-2); background: linear-gradient(180deg, #0c1311, #080c0b); box-shadow: 0 40px 100px -50px rgba(79, 240, 138, 0.35), inset 0 1px 0 rgba(255, 255, 255, 0.03); }
.idcard::after { content: ""; position: absolute; inset: 0; pointer-events: none; background: linear-gradient(115deg, transparent 40%, rgba(79, 240, 138, 0.05) 50%, transparent 60%); }
.idcard__bar { display: flex; justify-content: space-between; align-items: center; gap: 10px; padding: 0 16px; min-height: 40px; border-bottom: 1px solid var(--line); font-size: 10.5px; letter-spacing: 0.16em; text-transform: uppercase; color: var(--dim); }
.idcard__lock { display: inline-flex; align-items: center; gap: 8px; }
.idcard__lock .ico { width: 14px; height: 14px; color: var(--acc); }
.idcard__state { color: var(--acc); }
.idcard__grid { display: grid; gap: 22px; padding: 22px 18px; }
@media (min-width: 720px) { .idcard__grid { grid-template-columns: minmax(0, 1fr) 196px; gap: 32px; padding: 28px; } }
.idcard__name { margin: 0; font: 800 clamp(30px, 5vw, 48px)/1 var(--sans); letter-spacing: -0.035em; color: #fff; }
.idcard__title { margin: 8px 0 0; color: var(--ink-2); }
.idcard__fields { margin: 22px 0 0; border-top: 1px solid var(--line); }
.idcard__fields > div { display: grid; grid-template-columns: 70px minmax(0, 1fr); gap: 12px; align-items: center; padding: 10px 0; border-bottom: 1px dashed var(--line); font-size: 13.5px; }
.idcard__fields dt { font-size: 10.5px; letter-spacing: 0.14em; text-transform: uppercase; color: var(--dim); }
.idcard__fields dd { margin: 0; display: flex; flex-wrap: wrap; align-items: center; gap: 6px 10px; overflow-wrap: anywhere; color: var(--ink); }
.idcard__fields a { color: var(--ink); text-decoration: none; }
.idcard__fields a:hover { color: var(--acc); }
.idcard__links a { display: inline-flex; align-items: center; min-height: 32px; color: var(--acc) !important; }
.redacted-static { background: #000; color: #8b9690; padding: 2px 8px; letter-spacing: 0.12em; box-shadow: inset 0 0 0 1px #202020; }
.idcard__qr { text-align: center; }
.idcard__qr .qr { max-width: 196px; margin-inline: auto; }
.idcard__qrnote { margin: 10px 0 0; font-size: 10.5px; letter-spacing: 0.12em; text-transform: uppercase; color: var(--dim); }
.topics { display: flex; flex-wrap: wrap; gap: 8px; padding: 0 18px 20px; }
@media (min-width: 720px) { .topics { padding: 0 28px 24px; } }
.topics__label { width: 100%; margin: 0 0 4px; font-size: 10.5px; letter-spacing: 0.16em; text-transform: uppercase; color: var(--dim); }
.topic { min-height: 40px; padding: 0 14px; border: 1px solid var(--line-2); border-radius: 2px; background: transparent; color: var(--ink-2); font-size: 13.5px; cursor: pointer; transition: all 0.2s; }
.topic:hover { border-color: var(--acc); color: var(--acc); }
.topic[aria-pressed="true"] { background: var(--acc); border-color: var(--acc); color: var(--on-acc); font-weight: 600; }
.idcard__actions { display: flex; flex-wrap: wrap; gap: 10px; padding: 18px; border-top: 1px solid var(--line); background: rgba(0, 0, 0, 0.25); }
@media (min-width: 720px) { .idcard__actions { padding: 20px 28px; } }
@media (max-width: 559px) { .idcard__actions .btn { flex: 1 1 100%; } }
.js-dec.is-scrambling { color: var(--acc) !important; }

/* ---------- dialogs ---------- */
dialog.dlg { padding: 0; border: 0; background: transparent; color: var(--ink); width: min(980px, calc(100vw - 24px)); max-width: none; max-height: calc(100dvh - 24px); overflow: visible; }
dialog.dlg::backdrop { background: rgba(3, 5, 5, 0.8); -webkit-backdrop-filter: blur(4px); backdrop-filter: blur(4px); }
.dlg__frame { max-height: calc(100dvh - 24px); overflow: auto; border: 1px solid var(--line-2); background: var(--bg-2); box-shadow: 0 50px 140px -40px rgba(0, 0, 0, 0.9), 0 0 0 1px rgba(79, 240, 138, 0.08); }
dialog[open] .dlg__frame, dialog[open] .term { animation: dlg-in 0.38s var(--ease); }
@keyframes dlg-in { from { opacity: 0; transform: translateY(14px) scale(0.985); clip-path: inset(0 0 100% 0); } to { opacity: 1; transform: none; clip-path: inset(0 0 0 0); } }
.dlg__head { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 8px 10px 8px 16px; border-bottom: 1px solid var(--line); }
.dlg__title { margin: 0; font-size: 12px; font-weight: 600; letter-spacing: 0.18em; text-transform: uppercase; color: var(--acc); }
.dlg__close { display: inline-flex; align-items: center; gap: 6px; min-height: 40px; padding: 0 10px; border: 1px solid var(--line-2); background: transparent; color: var(--ink-2); font: 500 11px var(--mono); text-transform: uppercase; letter-spacing: 0.1em; cursor: pointer; }
.dlg__close:hover { color: var(--acc); border-color: var(--acc); }
.dlg__close .ico { width: 15px; height: 15px; }
.dlg .idcard { border: 0; box-shadow: none; }
.handshake { list-style: none; margin: 0; padding: 12px 16px 0; font-size: 11.5px; line-height: 1.7; color: var(--dim); }
.handshake:empty { display: none; }
.handshake b { color: var(--acc); font-weight: 500; }
@media (max-width: 719px) {
	dialog.dlg--contact { width: 100vw; margin: auto 0 0; max-height: 94dvh; }
	dialog.dlg--contact .dlg__frame { max-height: 94dvh; border-left: 0; border-right: 0; border-bottom: 0; }
}

/* terminal */
dialog.dlg--term { width: min(760px, calc(100vw - 20px)); margin-top: 10vh; }
.term { border: 1px solid var(--line-2); background: #040706; box-shadow: 0 50px 140px -40px rgba(0, 0, 0, 0.95), 0 0 60px -20px rgba(79, 240, 138, 0.25); }
.term__bar { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 6px 8px 6px 14px; border-bottom: 1px solid var(--line); }
.term__title { margin: 0; font-size: 12px; font-weight: 500; color: var(--dim); }
.term__title span { color: #2b3833; letter-spacing: 0.1em; margin-right: 8px; }
.term__out { max-height: 34vh; overflow: auto; padding: 12px 14px 0; font-size: 13px; line-height: 1.65; color: var(--ink-2); white-space: pre-wrap; overflow-wrap: anywhere; }
.term__out:empty { display: none; }
.term__out .ok { color: var(--acc); }
.term__out .err { color: var(--red); }
.term__out .dim { color: var(--mute); }
.term__form { display: flex; align-items: center; gap: 10px; padding: 10px 14px; }
.term__ps { flex: none; color: var(--acc); font-size: 13px; }
.term__input { flex: 1; min-width: 0; min-height: 40px; border: 0; outline: none; background: transparent; color: #fff; font-size: 15px; caret-color: var(--acc); }
.term__input::placeholder { color: var(--mute); }
.term__results { list-style: none; margin: 0; padding: 0 6px 6px; max-height: 42vh; overflow: auto; }
.term__results:empty { display: none; }
.term__results li { display: flex; align-items: baseline; gap: 12px; padding: 10px; font-size: 13px; color: var(--ink-2); cursor: pointer; }
.term__results li .k { flex: none; min-width: 78px; font-size: 10px; letter-spacing: 0.14em; text-transform: uppercase; color: var(--mute); }
.term__results li mark { background: none; color: var(--acc); }
.term__results li[aria-selected="true"] { background: var(--acc-dim); color: #fff; box-shadow: inset 2px 0 0 var(--acc); }
.term__hint { display: flex; flex-wrap: wrap; gap: 6px 16px; margin: 0; padding: 8px 14px; border-top: 1px solid var(--line); font-size: 10.5px; letter-spacing: 0.06em; color: var(--mute); }

/* toast */
.toast { position: fixed; left: 16px; bottom: calc(16px + env(safe-area-inset-bottom)); z-index: 70; width: min(400px, calc(100vw - 32px)); padding: 14px 48px 14px 16px; border: 1px solid var(--acc); background: var(--panel-2); box-shadow: 0 24px 70px -20px rgba(0, 0, 0, 0.85); animation: toast-in 0.35s var(--ease); }
.toast[hidden] { display: none; }
@keyframes toast-in { from { opacity: 0; transform: translateY(12px); } to { opacity: 1; transform: none; } }
.toast__text { margin: 0; font-size: 14px; color: var(--ink); }
.toast__actions { display: flex; flex-wrap: wrap; gap: 8px; }
.toast__actions:not(:empty) { margin-top: 12px; }
.toast__close { position: absolute; right: 4px; top: 4px; display: grid; place-items: center; width: 40px; height: 40px; border: 0; background: transparent; color: var(--dim); cursor: pointer; }

/* floating contact button */
.fab { position: fixed; right: 16px; bottom: calc(16px + env(safe-area-inset-bottom)); z-index: 44; display: inline-flex; align-items: center; gap: 10px; min-height: 52px; padding: 0 18px 0 16px; border-radius: 2px; background: var(--acc); color: var(--on-acc); font: 700 12.5px/1 var(--mono); letter-spacing: 0.1em; text-transform: uppercase; text-decoration: none; box-shadow: 0 14px 40px -12px rgba(79, 240, 138, 0.7); transition: transform 0.3s var(--ease), opacity 0.3s; }
.fab:hover { color: var(--on-acc); background: #7dffaa; }
.fab__ring { position: absolute; inset: -5px; border: 1px solid var(--acc); border-radius: 3px; animation: ring 2.6s ease-out infinite; pointer-events: none; }
@keyframes ring { 0% { opacity: 0.8; transform: scale(1); } 80%, 100% { opacity: 0; transform: scale(1.18, 1.35); } }
.fab.is-away { transform: translateY(140%); opacity: 0; pointer-events: none; }
@media (min-width: 1024px) { .is-dossier .fab:not(.is-shown) { transform: translateY(140%); opacity: 0; pointer-events: none; } }

/* ---------- field notes (blog) ---------- */
.notes { padding: calc(var(--hud) + 56px) 0 96px; min-height: 70vh; }
.notes__head { margin-bottom: 40px; }
.notes__title { position: relative; margin: 6px 0 14px; font: 800 clamp(40px, 7vw, 78px)/1 var(--sans); letter-spacing: -0.04em; color: #f2f6f3; }
.notes__intro { margin: 0 0 8px; max-width: 62ch; color: var(--ink-2); }
.notes__empty, .notes__links { display: flex; flex-wrap: wrap; gap: 8px 22px; font-size: 13px; color: var(--dim); }
.notes__links a { min-height: 40px; display: inline-flex; align-items: center; }
.searchform { display: flex; align-items: center; gap: 10px; max-width: 580px; margin-top: 22px; padding: 4px 4px 4px 12px; border: 1px solid var(--line-2); background: var(--panel); }
.searchform:focus-within { border-color: var(--acc); }
.searchform__ps { font-size: 12px; color: var(--acc); }
.searchform__input { flex: 1; min-width: 0; min-height: 40px; border: 0; outline: none; background: transparent; color: var(--ink); font-size: 14px; }
.note-list { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--line); }
.note-card { position: relative; padding: 26px 0; border-bottom: 1px solid var(--line); }
.note-card__meta { display: flex; flex-wrap: wrap; gap: 6px 14px; margin: 0; font-size: 12px; color: var(--dim); }
.note-card__meta time { color: var(--acc); }
.note-card__title { margin: 8px 0; font: 700 clamp(22px, 2.6vw, 29px)/1.2 var(--sans); letter-spacing: -0.015em; }
.note-card__title a { color: #f2f6f3; text-decoration: none; }
.note-card__title a::after { content: ""; position: absolute; inset: 0; }
.note-card:hover .note-card__title a { color: var(--acc); }
.note-card__excerpt { margin: 0; color: var(--ink-2); }
.note-card__more { display: inline-flex; align-items: center; gap: 6px; margin-top: 10px; font-size: 11.5px; letter-spacing: 0.1em; text-transform: uppercase; text-decoration: none; }
.pager .nav-links { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 28px; }
.pager .page-numbers { display: inline-flex; align-items: center; justify-content: center; min-width: 44px; min-height: 44px; padding: 0 12px; border: 1px solid var(--line-2); color: var(--ink-2); text-decoration: none; font-size: 12.5px; }
.pager .page-numbers.current { border-color: var(--acc); color: var(--acc); }
.entry__head { margin-bottom: 34px; }
.entry__title { margin: 8px 0 12px; font: 800 clamp(34px, 5.6vw, 62px)/1.05 var(--sans); letter-spacing: -0.035em; color: #f2f6f3; }
.entry__byline { margin: 0; font-size: 12px; color: var(--dim); }
.entry__content { font-size: 18px; line-height: 1.75; color: var(--ink-2); overflow-wrap: break-word; }
.entry__content > * { max-width: 100%; }
.entry__content h2, .entry__content h3, .entry__content h4 { margin: 2em 0 0.6em; font-family: var(--sans); line-height: 1.2; letter-spacing: -0.015em; color: #f2f6f3; }
.entry__content h2 { font-size: clamp(26px, 3vw, 34px); }
.entry__content h3 { font-size: clamp(21px, 2.4vw, 26px); }
.entry__content p, .entry__content ul, .entry__content ol { margin: 0 0 1.15em; }
.entry__content li { margin-bottom: 0.4em; }
.entry__content li::marker { color: var(--acc); }
.entry__content strong { color: var(--ink); }
.entry__content blockquote { margin: 1.5em 0; padding: 4px 0 4px 20px; border-left: 2px solid var(--acc); color: var(--ink); }
.entry__content code { font-family: var(--mono); font-size: 0.88em; background: var(--panel); padding: 2px 5px; }
.entry__content pre { overflow-x: auto; padding: 16px; background: var(--panel); border: 1px solid var(--line-2); font-size: 14px; }
.entry__content hr { border: 0; border-top: 1px solid var(--line-2); margin: 2.5em 0; }
.entry__content img { border: 1px solid var(--line-2); }
.entry__content figure { margin: 1.5em 0; }
.entry__content figcaption { font: 12px/1.5 var(--mono); color: var(--dim); margin-top: 8px; }
.entry__content table { display: block; width: 100%; overflow-x: auto; border-collapse: collapse; margin: 1.5em 0; font-size: 15px; }
.entry__content th, .entry__content td { padding: 10px 12px; border: 1px solid var(--line-2); text-align: left; vertical-align: top; min-width: 120px; }
.entry__content th, .entry__content thead td { background: var(--panel-2); color: var(--ink); font-family: var(--mono); font-size: 12.5px; letter-spacing: 0.06em; text-transform: uppercase; }
.entry__content iframe { max-width: 100%; border: 1px solid var(--line-2); background: #fff; }
.entry__content .wp-block-file { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 16px; padding: 12px 14px; border: 1px solid var(--line-2); background: var(--panel); font-size: 15px; }
.entry__content .wp-block-file a:not(.wp-block-file__button) { color: var(--ink); }
.entry__content .wp-block-file__button, .entry__content .wp-block-button__link { display: inline-flex; align-items: center; min-height: 40px; padding: 0 14px !important; border-radius: 2px !important; background: var(--acc) !important; color: var(--on-acc) !important; font: 700 12px/1 var(--mono) !important; letter-spacing: 0.08em; text-transform: uppercase; text-decoration: none !important; }
.entry__content .wp-block-image img, .entry__content .wp-block-embed iframe { display: block; }
.entry__content .ead-preview, .entry__content .ead-document { border: 1px solid var(--line-2); background: var(--panel); }
.entry__content .ead-document-btn a, .entry__content .awsm-ead-download a { color: var(--acc) !important; }
.entry__content .lwptoc, .lwptoc .lwptoc_i { background: var(--panel) !important; border: 1px solid var(--line-2) !important; color: var(--ink-2) !important; }
.lwptoc .lwptoc_header, .lwptoc .lwptoc_title { color: var(--ink) !important; font-family: var(--mono) !important; letter-spacing: 0.1em; text-transform: uppercase; font-size: 12px !important; }
.lwptoc a, .lwptoc .lwptoc_toggle_label { color: var(--acc) !important; }
.entry__content .leaflet-container, .entry__content [id^="map_"] { border: 1px solid var(--line-2); }
.entry__foot { margin-top: 48px; padding-top: 22px; border-top: 1px solid var(--line); }
.entry__tags { display: flex; flex-wrap: wrap; gap: 8px; margin: 0 0 22px; }
.entry__tags a { display: inline-flex; align-items: center; min-height: 36px; padding: 0 10px; border: 1px solid var(--line-2); color: var(--ink-2); text-decoration: none; font-size: 12px; }
.entry__tags a::before { content: "#"; color: var(--acc); margin-right: 2px; }
.entry__case { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px 16px; padding: 16px; border: 1px solid var(--line-2); background: var(--panel); font-size: 12.5px; color: var(--dim); }
.entry__case a { display: inline-flex; align-items: center; gap: 8px; min-height: 40px; text-decoration: none; text-transform: uppercase; letter-spacing: 0.08em; }
.entry__nav { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 12px 24px; margin-top: 24px; font-size: 13px; }
.entry__nav a { display: inline-flex; min-height: 40px; align-items: center; color: var(--ink-2); text-decoration: none; }
.entry__nav a:hover { color: var(--acc); }
.comments { margin-top: 56px; }
.comments__title { font-size: 13px; letter-spacing: 0.14em; text-transform: uppercase; color: var(--dim); font-weight: 600; }
.comments__list { padding-left: 18px; }
.comment-body { padding: 14px 0; border-bottom: 1px solid var(--line); }
.comment-form label { display: block; font: 12px var(--mono); color: var(--dim); text-transform: uppercase; letter-spacing: 0.08em; margin-bottom: 4px; }
.comment-form input[type="text"], .comment-form input[type="email"], .comment-form input[type="url"], .comment-form textarea { width: 100%; padding: 10px 12px; border: 1px solid var(--line-2); background: var(--panel); color: var(--ink); font: 15px var(--sans); }
.comment-form textarea:focus, .comment-form input:focus { border-color: var(--acc); outline: none; }

/* ---------- footer ---------- */
.site-foot { position: relative; z-index: 1; padding: 48px 0 calc(96px + env(safe-area-inset-bottom)); border-top: 1px solid var(--line); background: var(--bg); }
.site-foot__grid { display: grid; gap: 28px; }
@media (min-width: 900px) { .site-foot__grid { grid-template-columns: minmax(0, 1fr) auto; align-items: end; } }
.site-foot__brand { margin: 0 0 10px; font-size: 14px; font-weight: 700; letter-spacing: 0.2em; color: var(--ink); }
.site-foot__brand span { color: var(--acc); }
.site-foot__note { margin: 0 0 6px; color: var(--ink-2); font-size: 15px; }
.site-foot__copy { margin: 0; font-size: 11.5px; color: var(--mute); letter-spacing: 0.04em; }
.site-foot__links { display: flex; flex-wrap: wrap; gap: 0 18px; font-size: 12px; letter-spacing: 0.06em; }
.site-foot__links a { display: inline-flex; align-items: center; min-height: 40px; color: var(--ink-2); text-decoration: none; }
.site-foot__links a:hover { color: var(--acc); }

/* ---------- touch and motion preferences ---------- */
@media (pointer: coarse) {
	.btn, .filter, .topic, .hud__btn, .hud__contact, .btn--sm { min-height: 44px; }
	.mini { min-height: 44px; padding: 0 12px; }
	.hide-touch { display: none; }
	.idcard__links a { min-height: 44px; }
	.rail__src { display: inline-flex; align-items: center; min-height: 32px; }
}
@media (prefers-reduced-motion: reduce) {
	html { scroll-behavior: auto; }
	*, *::before, *::after { animation-duration: 0.001ms !important; animation-iteration-count: 1 !important; transition-duration: 0.001ms !important; }
	.marquee__track { animation: none !important; }
	.marquee__viewport { overflow-x: auto; }
	.fx__noise, .capsule__scan, .tape__noise { display: none; }
	.js .reveal:not(.is-in) { opacity: 1; transform: none; }
	.js .reveal:not(.is-in) .rail::before { transform: none; }
	.js .case:not(.is-in) .stamp { opacity: 0.92; }
}

/* ---------- print: the plain resume ---------- */
@media print {
	@page { margin: 12mm 13mm; }
	html, body { background: #fff !important; color: #111 !important; }
	body { font-size: 10.5pt; line-height: 1.42; }
	.fx, .hud, .menu-sheet, .rail-nav, .site-foot, .fab, dialog, .toast, .skip-link { display: none !important; }
	.is-dossier main.dossier { display: none !important; }
	.print-only { display: block !important; }
	.notes { padding: 0; }
	.entry__content, .entry__title, .notes__title, .note-card__title a, .entry__content h2, .entry__content h3 { color: #111 !important; }
	.entry__content a { color: #111; }
	.resume { color: #111; font-family: var(--sans); }
	.resume a { color: #111; text-decoration: none; }
	.resume__head { border-bottom: 2px solid #111; padding-bottom: 8pt; margin-bottom: 10pt; }
	.resume__name { font: 800 26pt/1 var(--sans); margin: 0; letter-spacing: -0.02em; }
	.resume__role { margin: 4pt 0; font: 600 10pt var(--mono); text-transform: uppercase; letter-spacing: 0.06em; color: #0b6b35; }
	.resume__contact { display: flex; flex-wrap: wrap; gap: 2pt 10pt; margin: 0; font-size: 9.5pt; color: #333; }
	.resume__sec { margin: 0 0 9pt; break-inside: avoid-page; }
	.resume__sec h2 { margin: 0 0 4pt; padding-bottom: 3pt; border-bottom: 1px solid #bbb; font: 700 8.5pt var(--mono); letter-spacing: 0.16em; text-transform: uppercase; color: #444; }
	.resume__sec p { margin: 0 0 3pt; }
	.resume__item { margin: 0 0 6pt; break-inside: avoid; }
	.resume__row { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 0 8pt; margin: 0 0 2pt; }
	.resume__what { flex: 1 1 auto; min-width: 0; }
	.resume__when { margin-left: auto; color: #555; font: 500 8.5pt var(--mono); white-space: nowrap; }
	.resume ul { margin: 1pt 0 0; padding-left: 14pt; }
	.resume li { margin: 0 0 1pt; }
	.resume__cols { columns: 2; column-gap: 18pt; }
	.resume__cols li span { color: #555; font: 8pt var(--mono); }
	.resume__note { font-size: 9pt; color: #444; }
}

/* 404: the redacted word stays redacted until you hover it */
.notes--404 .notes__title .redact { background: var(--bar); color: transparent; box-shadow: inset 0 0 0 1px #1d1d1d; transition: color 0.3s, background 0.3s; cursor: help; }
.notes--404 .notes__title .redact:hover { background: transparent; color: var(--acc); }

/* ---------- 1.0.5 ---------- */

/* source links inside case narratives */
.case__narr a { text-decoration-color: rgba(79, 240, 138, 0.5); }
.case__narr a:hover { text-decoration-color: currentColor; }
.case__narr a:has(.redact) { text-decoration: none; }
.case__narr a[target="_blank"]::after { content: "\2197"; display: inline; margin-left: 0.14em; font: 600 0.7em/1 var(--mono); color: var(--acc); vertical-align: 0.45em; }
.js .case__narr a .redact.is-open .redact__v { color: #fff; }
.js .case__narr a:hover .redact.is-open .redact__v { color: var(--acc); }

/* long case titles get a smaller size so they still fit a 360px phone */
.case__title--long { font-size: clamp(40px, 7.2vw, 104px); line-height: 0.94; letter-spacing: -0.045em; }

/* credential record: a real dialog on every screen size */
dialog.dlg--cred { width: min(700px, calc(100vw - 24px)); }
.dlg--cred .dlg__frame { overscroll-behavior: contain; }
.cred-dlg__code { margin-left: 10px; padding: 3px 8px; border: 1px solid rgba(79, 240, 138, 0.35); background: rgba(79, 240, 138, 0.08); color: var(--acc); font-size: 10.5px; letter-spacing: 0.08em; }
.cred-dlg__code:empty { display: none; }
.cred-dlg__body { padding: 22px 22px 10px; }
.cred-dlg__body .cd__title { font-size: clamp(22px, 3.2vw, 30px); }
.cred-dlg__body .cd__list { max-height: none; overflow: visible; }
@media (min-width: 720px) {
	.cred-dlg__body .cd__list { columns: 2; column-gap: 28px; }
	.cred-dlg__body .cd__list li { break-inside: avoid; }
}
.cred-dlg__nav { position: sticky; bottom: 0; display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 12px 16px; border-top: 1px solid var(--line); background: var(--bg-2); }
.cred-dlg__pos { font-size: 11px; letter-spacing: 0.12em; color: var(--dim); }
@media (max-width: 719px) {
	dialog.dlg--cred { width: 100vw; margin: auto 0 0; max-height: 90dvh; }
	dialog.dlg--cred .dlg__frame { max-height: 90dvh; border-left: 0; border-right: 0; border-bottom: 0; }
	.cred-dlg__body { padding: 18px var(--gutter) 8px; }
	.cred-dlg__nav { padding: 10px var(--gutter) calc(10px + env(safe-area-inset-bottom)); }
}
/* nothing scrolls behind an open dialog, and the page doesn't jump when the scrollbar goes */
html { scrollbar-gutter: stable; }
html:has(dialog[open]) { overflow: hidden; }
/* the old bottom sheet (browsers without <dialog>) has to sit above the sections after it */
.chapter--clearances { z-index: 3; }

.dlg__frame { scrollbar-width: thin; scrollbar-color: var(--line-2) transparent; }
.clear-detail__open { margin-top: 16px; }
@media (min-width: 1024px) {
	.clear-detail .cd__list { max-height: 232px; overflow: hidden; }
	.clear-detail .cd__list.is-clipped { -webkit-mask-image: linear-gradient(#000 58%, transparent); mask-image: linear-gradient(#000 58%, transparent); }
}

/* press globe */
.globe canvas { cursor: grab; }
.globe canvas:active { cursor: grabbing; }
.globe__label { min-height: 1.6em; text-shadow: 0 0 12px rgba(79, 240, 138, 0.45); }
