/*
Theme Name: Reaper's Realm
Theme URI: https://leeharding.online/
Author: Lee Harding
Author URI: https://leeharding.online/
Description: A dark, atmospheric theme for the official website of thriller and horror author Lee Harding. Cinematic hero for the latest novel with falling snow and a live countdown, a torchlight welcome, a 3D bookshelf, the rebuilt "Is time a healer?" timeline, and every hidden Easter egg from the original site — plus a Secrets Ledger that records what each visitor has unearthed.
Version: 1.0.0
Requires at least: 6.0
Tested up to: 6.9
Requires PHP: 7.4
License: GNU General Public License v2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: reapers-realm
Tags: dark, one-column, two-columns, right-sidebar, custom-logo, custom-menu, featured-images, threaded-comments, translation-ready, blog, entertainment
*/

/* =====================================================================
   1. Tokens
   ===================================================================== */
:root {
	--ink: #07070a;
	--ink-2: #0d0d12;
	--ink-3: #15151c;
	--ink-4: #1e1e27;
	--line: rgba(235, 229, 216, 0.12);
	--line-2: rgba(235, 229, 216, 0.22);
	--bone: #ebe5d8;
	--bone-dim: #cfc8b9;
	--ash: #a49e92;
	--blood: #c3161f;
	--blood-deep: #7a0c12;
	--blood-glow: rgba(195, 22, 31, 0.45);
	--lamp: #f0b46a;
	--lamp-glow: rgba(240, 180, 106, 0.35);
	--spectre: #4fc2a8;

	--f-display: "Cinzel", "Trajan Pro", Georgia, serif;
	--f-serif: "EB Garamond", Garamond, Georgia, serif;
	--f-italic: "Cormorant Garamond", "EB Garamond", Georgia, serif;
	--f-type: "Special Elite", "Courier New", monospace;

	--wrap: 1240px;
	--gutter: clamp(16px, 4vw, 40px);
	--radius: 4px;
	--ease: cubic-bezier(0.2, 0.7, 0.1, 1);
	--header-h: 84px;

	color-scheme: dark;
}

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

html {
	-webkit-text-size-adjust: 100%;
	scroll-behavior: smooth;
	scroll-padding-top: calc(var(--header-h) + 16px);
}
.rr-reduce { scroll-behavior: auto; }

body {
	margin: 0;
	background: var(--ink);
	color: var(--bone);
	font-family: var(--f-serif);
	font-size: clamp(17px, 0.35vw + 15.8px, 19.5px);
	line-height: 1.65;
	text-rendering: optimizeLegibility;
	-webkit-font-smoothing: antialiased;
	overflow-x: hidden;
}

[hidden] { display: none !important; }

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

a { color: var(--bone); text-decoration-color: var(--blood); text-underline-offset: 0.2em; transition: color .25s; }
a:hover { color: #fff; }
a:focus-visible, button:focus-visible, input:focus-visible, textarea:focus-visible, select:focus-visible, summary:focus-visible {
	outline: 2px solid var(--lamp);
	outline-offset: 3px;
}

::selection { background: var(--blood); color: #fff; }

h1, h2, h3, h4, h5, h6 {
	font-family: var(--f-display);
	font-weight: 600;
	line-height: 1.15;
	letter-spacing: 0.02em;
	margin: 0 0 0.6em;
	color: #f6f1e6;
}

p { margin: 0 0 1.1em; }

button { font: inherit; color: inherit; }

.screen-reader-text {
	border: 0; clip: rect(1px, 1px, 1px, 1px); clip-path: inset(50%);
	height: 1px; width: 1px; margin: -1px; overflow: hidden; padding: 0;
	position: absolute !important; word-wrap: normal !important;
}
.skip-link:focus {
	clip: auto; clip-path: none; height: auto; width: auto; z-index: 100000;
	top: 12px; left: 12px; padding: 12px 18px; background: var(--bone); color: var(--ink);
}

.rr-wrap {
	width: 100%;
	max-width: var(--wrap);
	margin-inline: auto;
	padding-inline: var(--gutter);
}

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

.rr-icon { width: 1.1em; height: 1.1em; flex: none; vertical-align: -0.15em; }

/* Film grain + vignette over everything (cheap, GPU friendly) */
.rr-grain {
	position: fixed; inset: -50%;
	z-index: 90; pointer-events: none;
	opacity: 0.07;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 .6 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
	animation: rr-grain 1.2s steps(6) infinite;
}
@keyframes rr-grain {
	0% { transform: translate(0, 0); }
	20% { transform: translate(-3%, 2%); }
	40% { transform: translate(2%, -3%); }
	60% { transform: translate(-1%, 3%); }
	80% { transform: translate(3%, 1%); }
	100% { transform: translate(0, 0); }
}

body.rr-locked { overflow: hidden; }

/* =====================================================================
   3. Shared components
   ===================================================================== */
.rr-kicker {
	font-family: var(--f-type);
	font-size: 0.82rem;
	letter-spacing: 0.22em;
	text-transform: uppercase;
	color: var(--blood);
	margin: 0 0 1rem;
	display: inline-flex;
	align-items: center;
	gap: 0.8em;
}
.rr-kicker::before {
	content: "";
	width: 2.2em; height: 1px;
	background: currentColor;
	opacity: .8;
}
.rr-kicker a { color: inherit; text-decoration: none; }

.rr-btn {
	--bg: transparent;
	display: inline-flex; align-items: center; gap: 0.6em;
	padding: 0.95em 1.6em;
	font-family: var(--f-display);
	font-weight: 600;
	font-size: 0.8rem;
	letter-spacing: 0.18em;
	text-transform: uppercase;
	text-decoration: none;
	color: var(--bone);
	background: var(--bg);
	border: 1px solid var(--line-2);
	border-radius: var(--radius);
	cursor: pointer;
	position: relative;
	overflow: hidden;
	isolation: isolate;
	transition: color .3s, border-color .3s, transform .3s var(--ease), box-shadow .3s;
}
.rr-btn::after {
	content: "";
	position: absolute; inset: 0; z-index: -1;
	background: linear-gradient(110deg, transparent 20%, rgba(255,255,255,.18) 50%, transparent 80%);
	transform: translateX(-120%);
	transition: transform .8s var(--ease);
}
.rr-btn:hover { transform: translateY(-2px); color: #fff; }
.rr-btn:hover::after { transform: translateX(120%); }
.rr-btn--blood {
	--bg: linear-gradient(180deg, #d01a24, var(--blood-deep));
	border-color: rgba(255, 90, 90, .35);
	box-shadow: 0 10px 30px -10px var(--blood-glow), inset 0 1px 0 rgba(255,255,255,.15);
}
.rr-btn--blood:hover { box-shadow: 0 16px 40px -10px rgba(220, 30, 40, .7), inset 0 1px 0 rgba(255,255,255,.2); }
.rr-btn--ghost { backdrop-filter: blur(6px); background: rgba(7,7,10,.35); }
.rr-btn--ghost:hover { border-color: var(--bone); }
.rr-btn--sm { padding: 0.7em 1.15em; font-size: 0.7rem; }

.rr-link {
	display: inline-flex; align-items: center; gap: .5em;
	font-family: var(--f-display); font-size: .78rem; letter-spacing: .16em; text-transform: uppercase;
	text-decoration: none; color: var(--bone-dim);
}
.rr-link .rr-icon { transition: transform .3s var(--ease); color: var(--blood); }
.rr-link:hover { color: #fff; }
.rr-link:hover .rr-icon { transform: translateX(4px); }

.rr-iconbtn {
	display: inline-grid; place-items: center;
	width: 44px; height: 44px;
	background: transparent; border: 1px solid transparent; border-radius: 50%;
	color: var(--bone); cursor: pointer;
	transition: border-color .25s, background .25s;
}
.rr-iconbtn:hover { border-color: var(--line-2); background: rgba(255,255,255,.04); }
.rr-iconbtn .rr-icon { width: 22px; height: 22px; }

.rr-chip {
	display: inline-flex; align-items: center; gap: .4em;
	padding: .45em .9em; border-radius: 999px;
	background: var(--ink-3); border: 1px solid var(--line);
	font-family: var(--f-type); font-size: .78rem; letter-spacing: .06em;
	color: var(--bone-dim); cursor: pointer;
	transition: border-color .2s, color .2s, background .2s;
}
.rr-chip:hover, .rr-chip.is-on { border-color: var(--blood); color: #fff; background: rgba(195,22,31,.12); }

/* Cracked title (echoes the crack across the A Twisted Carol cover) */
.rr-crack { position: relative; display: inline-block; }
.rr-crack::after {
	content: "";
	position: absolute; left: 0; width: min(100%, 6em); top: 34%; height: 26%;
	pointer-events: none;
	mix-blend-mode: multiply;
	background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 400 60' preserveAspectRatio='none'%3E%3Cpath d='M0 8 L60 14 L95 10 L140 22 L175 18 L210 30 L250 27 L290 40 L330 38 L400 52' fill='none' stroke='%2307070a' stroke-width='2.2'/%3E%3Cpath d='M140 22 L150 34 M250 27 L244 12' fill='none' stroke='%2307070a' stroke-width='1.2'/%3E%3C/svg%3E") center / 100% 100% no-repeat;
	opacity: .75;
	clip-path: inset(0 100% 0 0);
	animation: rr-crack 1.6s .9s var(--ease) forwards;
}
.rr-reduce .rr-crack::after { animation: none; clip-path: none; }
@keyframes rr-crack { to { clip-path: inset(0 0 0 0); } }

/* Flicker */
[data-flicker].is-flickering { animation: rr-flick .9s steps(1) 1; }
@keyframes rr-flick {
	0%, 100% { opacity: 1; }
	8% { opacity: .25; } 12% { opacity: 1; } 18% { opacity: .5; } 22% { opacity: 1; }
	48% { opacity: .85; text-shadow: 0 0 18px var(--blood-glow); } 52% { opacity: 1; }
}
body.rr-flicker .rr-site { animation: rr-screen 1.2s steps(1) 1; }
@keyframes rr-screen {
	0%, 100% { filter: none; }
	10% { filter: brightness(.25) contrast(1.4); }
	16% { filter: none; }
	30% { filter: brightness(.5) hue-rotate(-20deg) saturate(2); transform: translateX(2px); }
	34% { filter: none; transform: none; }
	60% { filter: brightness(.15); }
	64% { filter: none; }
}

/* Reveal on scroll */
.js [data-reveal] {
	opacity: 0;
	transform: translateY(28px);
	filter: blur(6px);
	transition: opacity 1s var(--ease), transform 1s var(--ease), filter 1s var(--ease);
	transition-delay: calc(var(--i, 0) * 70ms);
}
.js [data-rise] {
	opacity: 0;
	transform: translateY(18px);
	transition: opacity 1.1s var(--ease), transform 1.1s var(--ease);
}
.js [data-reveal].is-in, .js [data-rise].is-in { opacity: 1; transform: none; filter: none; }
.js .rr-hero [data-rise]:nth-child(2) { transition-delay: .12s; }
.js .rr-hero [data-rise]:nth-child(3) { transition-delay: .24s; }
.js .rr-hero [data-rise]:nth-child(4) { transition-delay: .36s; }
.js .rr-hero [data-rise]:nth-child(5) { transition-delay: .48s; }
.js .rr-hero [data-rise]:nth-child(6) { transition-delay: .6s; }

/* Sections */
.rr-section { padding-block: clamp(72px, 10vw, 140px); position: relative; }
.rr-section__head { max-width: 760px; margin-bottom: clamp(36px, 5vw, 64px); }
.rr-section__head--row { max-width: none; display: flex; align-items: end; justify-content: space-between; gap: 24px; flex-wrap: wrap; }
.rr-section__title {
	font-size: clamp(2rem, 4.2vw, 3.6rem);
	font-weight: 600;
	letter-spacing: 0.03em;
	margin-bottom: .4em;
}
.rr-section__title--sm { font-size: clamp(1.4rem, 2.5vw, 2rem); }
.rr-section__lede { font-size: 1.15em; color: var(--bone-dim); max-width: 60ch; }

/* =====================================================================
   4. Shared animations
   ===================================================================== */
@keyframes rr-fadeup { from { opacity: 0; transform: translateY(14px); } to { opacity: 1; transform: none; } }
@keyframes rr-drift { from { transform: translate3d(-4%, 0, 0); } to { transform: translate3d(4%, -3%, 0); } }

/* =====================================================================
   5. Header + drawer
   ===================================================================== */
.rr-header {
	position: fixed; top: 0; left: 0; right: 0; z-index: 80;
	transition: background .4s, box-shadow .4s, backdrop-filter .4s;
	background: linear-gradient(180deg, rgba(7,7,10,.85), rgba(7,7,10,0));
}
.admin-bar .rr-header { top: 32px; }
@media (max-width: 782px) { .admin-bar .rr-header { top: 46px; } }
.rr-header.is-solid {
	background: rgba(7,7,10,.82);
	backdrop-filter: blur(14px) saturate(1.2);
	-webkit-backdrop-filter: blur(14px) saturate(1.2);
	box-shadow: 0 1px 0 var(--line);
}
.rr-header__inner {
	height: var(--header-h);
	display: flex; align-items: center; gap: 24px;
}
.rr-header__brand { flex: none; display: block; }
.rr-header__brand .rr-logo { height: 56px; width: auto; transition: filter .3s; }
.rr-header__brand:hover .rr-logo { filter: drop-shadow(0 0 12px rgba(195,22,31,.6)); }

.rr-nav { margin-left: auto; }
.rr-nav .menu { display: flex; gap: clamp(14px, 2.2vw, 34px); list-style: none; margin: 0; padding: 0; }
.rr-nav .menu > li { position: relative; }
.rr-nav a {
	font-family: var(--f-display); font-size: .78rem; letter-spacing: .2em; text-transform: uppercase;
	text-decoration: none; color: var(--bone-dim);
	padding: 10px 0; display: inline-block; position: relative;
}
.rr-nav a::after {
	content: ""; position: absolute; left: 0; right: 0; bottom: 4px; height: 1px;
	background: var(--blood); transform: scaleX(0); transform-origin: left; transition: transform .35s var(--ease);
}
.rr-nav a:hover, .rr-nav .current-menu-item > a, .rr-nav .current_page_item > a, .rr-nav .current-menu-ancestor > a { color: #fff; }
.rr-nav a:hover::after, .rr-nav .current-menu-item > a::after, .rr-nav .current_page_item > a::after { transform: scaleX(1); }
.rr-nav .sub-menu {
	position: absolute; top: 100%; left: -16px; min-width: 220px; list-style: none; margin: 0; padding: 10px 16px;
	background: rgba(13,13,18,.96); border: 1px solid var(--line); border-radius: var(--radius);
	opacity: 0; visibility: hidden; transform: translateY(6px); transition: .25s;
}
.rr-nav li:hover > .sub-menu, .rr-nav li:focus-within > .sub-menu { opacity: 1; visibility: visible; transform: none; }

.rr-header__actions { display: flex; gap: 4px; }
.rr-menu-toggle { display: none; }

.rr-search { border-top: 1px solid var(--line); background: rgba(7,7,10,.95); padding-block: 18px; }

@media (max-width: 960px) {
	.rr-nav { display: none; }
	.rr-header__actions { margin-left: auto; }
	.rr-menu-toggle { display: inline-grid; }
	.rr-header__brand .rr-logo { height: 46px; }
}

.rr-drawer {
	position: fixed; inset: 0; z-index: 150;
	background: radial-gradient(ellipse at 70% 30%, #1a0b0e, #050507 70%);
	display: grid; place-items: center;
	opacity: 0; transition: opacity .45s var(--ease);
	padding: 24px;
}
.rr-drawer.is-open { opacity: 1; }
.rr-drawer__mark {
	position: absolute; right: max(24px, 4vw); bottom: max(24px, 4vh);
	width: min(40vw, 40vh, 420px); height: auto;
	opacity: .09; pointer-events: none;
}
@media (max-width: 600px) {
	.rr-drawer__mark { right: 50%; translate: 50% 0; width: min(52vw, 26vh); bottom: max(20px, 3vh); }
}
.rr-drawer__close { position: absolute; top: 18px; right: 18px; }
.rr-drawer .menu { list-style: none; margin: 0; padding: 0; text-align: center; }
.rr-drawer .menu li { opacity: 0; transform: translateY(16px); transition: .6s var(--ease); }
.rr-drawer.is-open .menu li { opacity: 1; transform: none; }
.rr-drawer.is-open .menu li:nth-child(2) { transition-delay: .05s; }
.rr-drawer.is-open .menu li:nth-child(3) { transition-delay: .1s; }
.rr-drawer.is-open .menu li:nth-child(4) { transition-delay: .15s; }
.rr-drawer.is-open .menu li:nth-child(5) { transition-delay: .2s; }
.rr-drawer.is-open .menu li:nth-child(6) { transition-delay: .25s; }
.rr-drawer.is-open .menu li:nth-child(7) { transition-delay: .3s; }
.rr-drawer .menu a {
	display: block; padding: 10px 0;
	font-family: var(--f-display); font-size: clamp(1.6rem, 7vw, 2.4rem); letter-spacing: .08em;
	text-decoration: none; color: var(--bone);
}
.rr-drawer .menu a:hover { color: var(--blood); }

/* Search form */
.rr-searchform { display: flex; max-width: 560px; border-bottom: 1px solid var(--line-2); }
.rr-searchform__input {
	flex: 1; min-width: 0; background: transparent; border: 0; color: var(--bone);
	font-family: var(--f-italic); font-style: italic; font-size: 1.4rem; padding: 10px 0;
}
.rr-searchform__input::placeholder { color: var(--ash); }
.rr-searchform__input:focus { outline: none; }
.rr-searchform:focus-within { border-color: var(--blood); }
.rr-searchform__btn { background: none; border: 0; color: var(--bone); cursor: pointer; padding: 0 6px; }

/* =====================================================================
   6. Hero
   ===================================================================== */
.rr-hero {
	position: relative;
	min-height: 100svh;
	display: flex; align-items: center;
	padding: calc(var(--header-h) + 40px) 0 110px;
	overflow: hidden;
	isolation: isolate;
	background: #05060a;
}
.rr-hero__bg {
	position: absolute; inset: -4%;
	background: var(--hero-bg) center 60% / cover no-repeat;
	filter: saturate(.75) brightness(.55) contrast(1.1);
	transform: scale(1.05);
	animation: rr-kenburns 40s ease-in-out infinite alternate;
	z-index: -3;
}
@keyframes rr-kenburns { to { transform: scale(1.14) translate(-2%, -1%); } }
.rr-hero__snow { position: absolute; inset: 0; width: 100%; height: 100%; z-index: -1; pointer-events: none; }
.rr-hero__fog {
	position: absolute; left: -30%; right: -30%; height: 60%; bottom: -10%;
	z-index: -2; pointer-events: none; opacity: .55;
	background:
		radial-gradient(50% 50% at 25% 60%, rgba(210,215,230,.22), transparent 70%),
		radial-gradient(40% 45% at 70% 70%, rgba(210,215,230,.18), transparent 70%);
	filter: blur(20px);
	animation: rr-drift 26s ease-in-out infinite alternate;
}
.rr-hero__fog--b { bottom: auto; top: 35%; opacity: .25; animation-duration: 34s; animation-direction: alternate-reverse; }
.rr-hero__vignette {
	position: absolute; inset: 0; z-index: -1; pointer-events: none;
	background:
		linear-gradient(90deg, rgba(5,6,10,.92) 0%, rgba(5,6,10,.65) 42%, rgba(5,6,10,.15) 70%, rgba(5,6,10,.5) 100%),
		linear-gradient(180deg, rgba(5,6,10,.6) 0%, transparent 25%, transparent 70%, var(--ink) 100%);
}
.rr-hero__grid {
	display: grid;
	grid-template-columns: minmax(0, 1.15fr) minmax(0, .85fr);
	gap: clamp(32px, 6vw, 96px);
	align-items: center;
}
.rr-hero__title {
	font-size: clamp(2.6rem, 6.4vw, 5.6rem);
	font-weight: 800;
	line-height: .95;
	letter-spacing: .01em;
	text-transform: uppercase;
	margin: 0 0 .32em;
	color: #f7f3ea;
	text-shadow: 0 2px 0 rgba(0,0,0,.4), 0 18px 60px rgba(0,0,0,.8);
}
.rr-hero__tagline {
	font-family: var(--f-italic);
	font-size: clamp(1.35rem, 2.4vw, 2rem);
	line-height: 1.3;
	margin-bottom: 1rem;
}
.rr-hero__tagline span { display: block; color: var(--bone); }
.rr-hero__tagline em { display: block; color: #ff4b4f; text-shadow: 0 0 24px rgba(195,22,31,.6); }
.rr-hero__hook { max-width: 54ch; color: var(--bone-dim); margin-bottom: 2rem; font-size: 1.02em; }
.rr-hero__ctas { display: flex; flex-wrap: wrap; gap: 14px; align-items: flex-start; }

.rr-buy { position: relative; }
.rr-buy__formats {
	list-style: none; margin: 8px 0 0; padding: 0;
	display: flex; gap: 6px; flex-wrap: wrap;
}
.rr-buy__formats a {
	display: inline-block; font-family: var(--f-type); font-size: .74rem; letter-spacing: .08em;
	padding: .3em .7em; border: 1px solid var(--line); border-radius: 999px; text-decoration: none; color: var(--bone-dim);
	background: rgba(0,0,0,.35);
}
.rr-buy__formats a:hover { border-color: var(--blood); color: #fff; }

.rr-countdown {
	margin-top: 2.4rem;
	display: inline-block;
	padding: 18px 22px 16px;
	border: 1px solid rgba(195,22,31,.35);
	background: linear-gradient(180deg, rgba(20,6,8,.75), rgba(7,7,10,.55));
	backdrop-filter: blur(6px);
	border-radius: var(--radius);
	box-shadow: 0 0 0 1px rgba(0,0,0,.4), 0 20px 50px -20px rgba(195,22,31,.4);
}
.rr-countdown__label {
	font-family: var(--f-type); font-size: .8rem; letter-spacing: .14em; text-transform: uppercase;
	color: #ff6b6e; margin: 0 0 8px;
}
.rr-countdown__clock { display: flex; gap: clamp(12px, 2.4vw, 22px); }
.rr-countdown__clock span { display: grid; text-align: center; min-width: 3.2ch; }
.rr-countdown__clock b {
	font-family: var(--f-display); font-weight: 600; font-size: clamp(1.6rem, 3.4vw, 2.4rem);
	font-variant-numeric: tabular-nums; line-height: 1; color: #fff;
}
.rr-countdown__clock small { font-family: var(--f-type); font-size: .66rem; letter-spacing: .14em; text-transform: uppercase; color: var(--ash); margin-top: 6px; }
.rr-countdown.is-over .rr-countdown__label { margin: 0; font-size: .9rem; }

.rr-hero__scroll {
	position: absolute; left: 50%; bottom: 28px; transform: translateX(-50%);
	width: 26px; height: 42px; border: 1px solid var(--line-2); border-radius: 14px;
}
.rr-hero__scroll span {
	position: absolute; left: 50%; top: 8px; width: 2px; height: 8px; margin-left: -1px; border-radius: 2px;
	background: var(--blood); animation: rr-scroll 2s ease-in-out infinite;
}
@keyframes rr-scroll { 0% { opacity: 0; transform: translateY(0); } 30% { opacity: 1; } 100% { opacity: 0; transform: translateY(14px); } }

/* 3D book */
.rr-hero__book { display: grid; place-items: center; perspective: 1600px; }
.rr-book {
	--rx: 4deg; --ry: -24deg;
	position: relative; display: block;
	width: min(380px, 70vw);
	aspect-ratio: 600 / 917;
	transform-style: preserve-3d;
	text-decoration: none;
	animation: rr-float 7s ease-in-out infinite;
}
@keyframes rr-float { 50% { translate: 0 -12px; } }
.rr-book__glow {
	position: absolute; inset: 10% -20% -10%;
	/* Pushed behind the book in 3D space so it never washes over the cover. */
	transform: translateZ(-120px);
	background: radial-gradient(closest-side, var(--lamp-glow), rgba(240,180,106,.06) 55%, transparent 75%);
	filter: blur(30px);
	pointer-events: none;
	animation: rr-glow 5s ease-in-out infinite alternate;
}
@keyframes rr-glow { from { opacity: .7; } to { opacity: 1; scale: 1.06; } }
.rr-book__inner {
	position: absolute; inset: 0;
	transform-style: preserve-3d;
	transform: rotateX(var(--rx)) rotateY(var(--ry));
	transition: transform .6s var(--ease);
}
.rr-book__cover {
	position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover;
	border-radius: 2px 6px 6px 2px;
	transform: translateZ(22px);
	box-shadow: 0 30px 70px -20px rgba(0,0,0,.9);
	backface-visibility: hidden;
}
.rr-book__spine {
	position: absolute; top: 0; bottom: 0; left: 0; width: 44px;
	background: linear-gradient(90deg, #0b0b10, #24242c 40%, #0b0b10);
	transform: rotateY(-90deg) translateZ(22px) translateX(-22px);
	transform-origin: left center;
}
.rr-book__pages {
	position: absolute; top: 4px; bottom: 4px; right: 0; width: 42px;
	background: repeating-linear-gradient(90deg, #e7e0cf 0 1px, #cfc6b0 1px 2px);
	transform: rotateY(90deg) translateZ(-20px) translateX(20px);
	transform-origin: right center;
}
.rr-book__shine {
	position: absolute; inset: 0; transform: translateZ(23px); pointer-events: none; border-radius: 2px 6px 6px 2px;
	background: radial-gradient(circle at var(--mx, 30%) var(--my, 20%), rgba(255,255,255,.12), transparent 45%),
		linear-gradient(90deg, rgba(0,0,0,.3), transparent 3%, rgba(255,255,255,.07) 4%, transparent 7%);
}
.rr-book:hover .rr-book__inner { --rx: 2deg; }
a.rr-book:hover { cursor: pointer; }

/* Spinning 3D book (hero): drag, keys or the button turn it over */
.rr-spin {
	--w: min(345px, 62vw);
	--h: calc(var(--w) * 1.5283);
	--d: calc(var(--h) * .15);
	--ry: 24deg; --rx: -5deg;
	--s-front: 0; --s-back: .5; --s-spine: .2; --s-fore: .4;
	position: relative;
	display: grid; justify-items: center; gap: 22px;
	-webkit-user-select: none; user-select: none;
}
.rr-spin__glow {
	position: absolute; left: 50%; top: calc(var(--h) / 2); z-index: -1;
	width: calc(var(--w) * 2); height: calc(var(--h) * 1.25);
	translate: -50% -50%;
	background: radial-gradient(closest-side, rgba(240,180,106,.26), rgba(240,180,106,.07) 60%, transparent 76%);
	filter: blur(26px);
	pointer-events: none;
	animation: rr-glow 5s ease-in-out infinite alternate;
}
.rr-spin__stage {
	width: var(--w); height: var(--h);
	perspective: 1600px;
	cursor: grab;
	touch-action: pan-y;
	outline: none;
	animation: rr-float 7s ease-in-out infinite;
}
.rr-spin.is-dragging .rr-spin__stage { cursor: grabbing; }
.rr-spin__stage:focus-visible { outline: 1px dashed var(--lamp); outline-offset: 22px; border-radius: 4px; }
.rr-spin__book {
	position: relative; width: 100%; height: 100%;
	transform-style: preserve-3d;
	transform: rotateX(var(--rx)) rotateY(var(--ry));
	will-change: transform;
}
.rr-spin__face {
	position: absolute;
	overflow: hidden;
	backface-visibility: hidden; -webkit-backface-visibility: hidden;
}
.rr-spin__face img { display: block; width: 100%; height: 100%; object-fit: cover; pointer-events: none; }
/* Light and shade follow the angle (set from JS). */
.rr-spin__face::after {
	content: ""; position: absolute; inset: 0; pointer-events: none;
	background: #020204; opacity: var(--shade, 0);
}
.rr-spin__front, .rr-spin__back { inset: 0; }
.rr-spin__front { transform: translateZ(calc(var(--d) / 2)); border-radius: 2px 5px 5px 2px; --shade: var(--s-front); }
.rr-spin__back  { transform: rotateY(180deg) translateZ(calc(var(--d) / 2)); border-radius: 5px 2px 2px 5px; --shade: var(--s-back); }
/* Hinge groove and a sheen that slides as the book turns */
.rr-spin__front::before, .rr-spin__back::before {
	content: ""; position: absolute; inset: 0; z-index: 1; pointer-events: none;
	background:
		linear-gradient(105deg, transparent 38%, rgba(255,255,255,.16) 48%, transparent 58%) var(--sheen, 50%) 0 / 260% 100% no-repeat,
		linear-gradient(90deg, rgba(0,0,0,.42), rgba(0,0,0,.08) 2.2%, rgba(255,255,255,.12) 3.2%, transparent 5.5%);
}
.rr-spin__back::before {
	background:
		linear-gradient(75deg, transparent 38%, rgba(255,255,255,.12) 48%, transparent 58%) var(--sheen, 50%) 0 / 260% 100% no-repeat,
		linear-gradient(270deg, rgba(0,0,0,.42), rgba(0,0,0,.08) 2.2%, rgba(255,255,255,.12) 3.2%, transparent 5.5%);
}
.rr-spin__spine {
	top: 0; height: 100%; width: var(--d); left: calc(50% - var(--d) / 2);
	transform: rotateY(-90deg) translateZ(calc(var(--w) / 2));
	background: #1a2233;
	--shade: var(--s-spine);
}
.rr-spin__spine::before {
	content: ""; position: absolute; inset: 0; z-index: 1; pointer-events: none;
	background: linear-gradient(90deg, rgba(0,0,0,.35), transparent 18%, rgba(255,255,255,.1) 50%, transparent 82%, rgba(0,0,0,.35));
}
.rr-spin__spine.is-plain { display: grid; place-items: center; background: linear-gradient(90deg, #0b0b10, #22222a 50%, #0b0b10); }
.rr-spin__spine.is-plain span {
	writing-mode: vertical-rl;
	font-family: var(--f-display); font-size: calc(var(--d) * .32); letter-spacing: .14em; text-transform: uppercase;
	color: var(--bone); white-space: nowrap;
}
.rr-spin__back.is-plain { background: radial-gradient(120% 90% at 50% 0%, #1b1b22, #08080b 70%); }
.rr-spin__blurb {
	position: absolute; inset: 12% 11%;
	display: flex; flex-direction: column; justify-content: center; gap: .9em;
	font-family: var(--f-serif); font-size: calc(var(--w) * .043); line-height: 1.5; color: var(--bone-dim); text-align: center;
}
.rr-spin__blurb p { margin: 0; }
.rr-spin__blurb-title { font-family: var(--f-display); font-size: 1.35em; letter-spacing: .08em; text-transform: uppercase; color: var(--bone); }
.rr-spin__blurb-by { margin-top: 1em !important; font-family: var(--f-display); letter-spacing: .2em; text-transform: uppercase; font-size: .85em; color: var(--blood); }
/* Page block: inset slightly so the boards overhang, like a hardback */
.rr-spin__edge {
	--edge-lines: #efe8d6 0 1px, #d6ccb4 1px 2px, #e7dfca 2px 3px;
	--shade: var(--s-fore);
	border-color: #12141c; border-style: solid; border-width: 0;
}
.rr-spin__edge--fore {
	top: 4px; height: calc(100% - 8px); width: var(--d); left: calc(50% - var(--d) / 2);
	transform: rotateY(90deg) translateZ(calc(var(--w) / 2 - 3px));
	background: repeating-linear-gradient(90deg, var(--edge-lines));
	border-left-width: 2px; border-right-width: 2px;
}
.rr-spin__edge--top, .rr-spin__edge--bottom {
	left: 0; width: calc(100% - 3px); height: var(--d); top: calc(50% - var(--d) / 2);
	background: repeating-linear-gradient(0deg, var(--edge-lines));
	border-top-width: 2px; border-bottom-width: 2px;
}
.rr-spin__edge--top    { transform: rotateX(90deg) translateZ(calc(var(--h) / 2 - 4px)); --shade: .08; }
.rr-spin__edge--bottom { transform: rotateX(-90deg) translateZ(calc(var(--h) / 2 - 4px)); --shade: .55; }
.rr-spin__shadow {
	width: calc(var(--w) * var(--sw, 1)); height: 26px; margin-top: -8px;
	background: radial-gradient(closest-side, rgba(0,0,0,.8), rgba(0,0,0,.35) 60%, transparent);
	filter: blur(5px);
	pointer-events: none;
	animation: rr-shadow 7s ease-in-out infinite;
}
@keyframes rr-shadow { 50% { scale: .86; opacity: .7; } }
.rr-spin__hint {
	margin: 0;
	display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 6px 18px;
	font-family: var(--f-type); font-size: .82rem; letter-spacing: .08em; color: var(--ash);
}
.rr-spin__hint-drag { display: inline-flex; align-items: center; gap: 8px; }
.rr-spin__hint-drag svg { width: 15px; height: 15px; color: var(--lamp); }
.rr-spin__flip {
	padding: 6px 2px; border: 0; background: none; cursor: pointer;
	font: inherit; letter-spacing: inherit; color: var(--lamp);
	text-decoration: underline; text-decoration-color: rgba(240,180,106,.4); text-underline-offset: 4px;
}
.rr-spin__flip:hover, .rr-spin__flip:focus-visible { color: var(--bone); text-decoration-color: var(--blood); }
.rr-spin.has-turned .rr-spin__hint-drag { opacity: .55; }

@media (max-width: 900px) {
	.rr-hero { padding-top: calc(var(--header-h) + 24px); }
	.rr-hero__grid { grid-template-columns: 1fr; }
	.rr-hero__book { order: -1; }
	.rr-book { width: min(240px, 58vw); }
	.rr-spin { --w: min(230px, 56vw); }
	.rr-hero__vignette { background: linear-gradient(180deg, rgba(5,6,10,.55), rgba(5,6,10,.8) 45%, var(--ink) 100%); }
	.rr-hero__scroll { display: none; }
}

/* =====================================================================
   7. Torchlight
   ===================================================================== */
.rr-torch {
	--tx: 50%; --ty: 50%;
	position: relative;
	min-height: clamp(380px, 62vh, 620px);
	display: grid; place-items: center;
	background: #030304;
	overflow: hidden;
	cursor: crosshair;
	border-block: 1px solid var(--line);
}
.rr-torch__dark {
	position: absolute; inset: 0;
	display: grid; place-items: center;
	padding: 48px var(--gutter);
	background: radial-gradient(circle at var(--tx) var(--ty), #1d1914 0%, #0c0a09 18%, #030304 34%);
	-webkit-mask-image: radial-gradient(circle at var(--tx) var(--ty), #000 0, #000 12%, rgba(0,0,0,.25) 26%, transparent 38%);
	mask-image: radial-gradient(circle at var(--tx) var(--ty), #000 0, #000 12%, rgba(0,0,0,.25) 26%, transparent 38%);
}
.rr-torch__line {
	max-width: 22ch;
	text-align: center;
	font-family: var(--f-italic);
	font-style: italic;
	font-size: clamp(1.8rem, 4.6vw, 3.6rem);
	line-height: 1.2;
	color: #f2e8d6;
	margin: 0;
	text-shadow: 0 0 30px rgba(240,180,106,.25);
}
.rr-torch__whisper {
	position: absolute; left: var(--x); top: var(--y);
	font-family: var(--f-type); font-size: .9rem; letter-spacing: .2em; text-transform: uppercase;
	color: #c3161f; opacity: .85;
	transform: rotate(-4deg);
	white-space: nowrap;
}
.rr-torch__whisper:nth-of-type(2n) { transform: rotate(3deg); }
.rr-torch__hint {
	position: absolute; bottom: 18px; left: 0; right: 0; text-align: center; margin: 0;
	font-family: var(--f-type); font-size: .72rem; letter-spacing: .24em; text-transform: uppercase; color: rgba(164,158,146,.45);
	pointer-events: none;
}
.rr-torch.is-lit .rr-torch__dark { -webkit-mask-image: none; mask-image: none; background: #0c0a09; }
@media (max-width: 640px) {
	.rr-torch__whisper { font-size: .7rem; }
	.rr-torch__whisper:nth-of-type(n+4) { display: none; }
}

/* =====================================================================
   8. Bookshelf
   ===================================================================== */
.rr-shelf { background:
	radial-gradient(60% 40% at 50% 0%, rgba(195,22,31,.08), transparent 70%),
	var(--ink);
}
.rr-shelf__grid {
	list-style: none; margin: 0 0 56px; padding: 0;
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(min(200px, 42vw), 1fr));
	gap: clamp(24px, 3.4vw, 48px) clamp(16px, 2.6vw, 36px);
}
.rr-novel__link { display: block; text-decoration: none; perspective: 900px; }
.rr-novel__cover {
	--rx: 0deg; --ry: 0deg;
	position: relative; display: block; aspect-ratio: 2 / 3; overflow: hidden;
	border-radius: 2px 5px 5px 2px;
	background: var(--ink-3);
	box-shadow: 0 24px 50px -24px rgba(0,0,0,.95), 0 0 0 1px rgba(255,255,255,.04);
	transform: rotateX(var(--rx)) rotateY(var(--ry));
	transition: transform .5s var(--ease), box-shadow .5s;
}
.rr-novel__cover::before {
	content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 6%; z-index: 2;
	background: linear-gradient(90deg, rgba(0,0,0,.45), rgba(255,255,255,.08) 60%, transparent);
}
.rr-novel__cover img { width: 100%; height: 100%; object-fit: cover; transition: transform 1.2s var(--ease), filter .6s; }
.rr-novel__veil {
	position: absolute; inset: 0; z-index: 3;
	display: flex; flex-direction: column; justify-content: flex-end; gap: 12px;
	padding: 18px;
	background: linear-gradient(180deg, transparent 30%, rgba(10,3,4,.92) 85%);
	opacity: 0; transition: opacity .45s var(--ease);
}
.rr-novel__tag { font-family: var(--f-italic); font-style: italic; font-size: 1.15rem; line-height: 1.25; color: #fff; transform: translateY(10px); transition: transform .5s var(--ease); }
.rr-novel__enter { font-family: var(--f-display); font-size: .7rem; letter-spacing: .2em; text-transform: uppercase; color: #ff5a5e; display: inline-flex; gap: .5em; align-items: center; }
.rr-novel__badge {
	position: absolute; top: 12px; right: -34px; z-index: 4;
	transform: rotate(45deg);
	background: var(--blood); color: #fff;
	font-family: var(--f-display); font-size: .62rem; letter-spacing: .2em; text-transform: uppercase;
	padding: 5px 40px;
	box-shadow: 0 4px 14px rgba(0,0,0,.5);
}
.rr-novel__badge--soon { background: #2a2a33; }
.rr-novel__title {
	display: block; margin-top: 16px;
	font-family: var(--f-display); font-size: 1rem; letter-spacing: .06em; color: var(--bone);
	transition: color .3s;
}
.rr-novel__genre { display: block; font-family: var(--f-type); font-size: .72rem; letter-spacing: .1em; color: var(--ash); margin-top: 4px; }
.rr-novel__link:hover .rr-novel__cover,
.rr-novel__link:focus-visible .rr-novel__cover { box-shadow: 0 34px 70px -24px rgba(0,0,0,.95), 0 0 50px -8px var(--blood-glow); }
.rr-novel__link:hover .rr-novel__veil,
.rr-novel__link:focus-visible .rr-novel__veil { opacity: 1; }
.rr-novel__link:hover .rr-novel__tag { transform: none; }
.rr-novel__link:hover img { transform: scale(1.06); filter: saturate(1.1); }
.rr-novel__link:hover .rr-novel__title { color: #fff; }
@media (hover: none) {
	.rr-novel__veil { display: none; }
	.rr-torch__dark {
		-webkit-mask-image: radial-gradient(circle at var(--tx) var(--ty), #000 0, #000 24%, rgba(0,0,0,.3) 46%, transparent 62%);
		mask-image: radial-gradient(circle at var(--tx) var(--ty), #000 0, #000 24%, rgba(0,0,0,.3) 46%, transparent 62%);
	}
}
.rr-shelf--index { padding-top: 40px; }

/* =====================================================================
   9. Quote
   ===================================================================== */
.rr-quote {
	padding-block: clamp(70px, 10vw, 130px);
	background:
		radial-gradient(50% 80% at 50% 50%, rgba(195,22,31,.12), transparent 70%),
		linear-gradient(180deg, var(--ink), #0b0709 50%, var(--ink));
	border-block: 1px solid var(--line);
	text-align: center;
}
.rr-quote__inner { margin: 0 auto; max-width: 980px; position: relative; }
.rr-quote__inner::before {
	content: "\201C";
	position: absolute; top: -.35em; left: 50%; transform: translateX(-50%);
	font-family: var(--f-display); font-size: clamp(8rem, 18vw, 14rem); line-height: 1; color: var(--blood); opacity: .18;
	pointer-events: none;
}
.rr-quote blockquote { margin: 0; position: relative; }
.rr-quote blockquote p {
	font-family: var(--f-italic); font-style: italic; font-weight: 400;
	font-size: clamp(1.7rem, 3.8vw, 3rem); line-height: 1.25; color: #f6f0e4; margin: 0 0 1.2rem;
}
.rr-quote figcaption { font-family: var(--f-display); letter-spacing: .24em; text-transform: uppercase; font-size: .8rem; color: var(--ash); }
.rr-quote figcaption::before { content: "— "; color: var(--blood); }
.rr-quote figcaption a { color: var(--bone-dim); text-decoration: none; }

/* =====================================================================
   10. About
   ===================================================================== */
.rr-about__grid {
	display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, .9fr);
	gap: clamp(32px, 6vw, 88px); align-items: center;
}
.rr-about__media { margin: 0; position: relative; }
.rr-about__media img {
	width: 100%; border-radius: var(--radius);
	box-shadow: 0 40px 80px -30px rgba(0,0,0,.9);
	-webkit-mask-image: radial-gradient(ellipse 85% 85% at 50% 45%, #000 55%, transparent 100%);
	mask-image: radial-gradient(ellipse 85% 85% at 50% 45%, #000 55%, transparent 100%);
}
.rr-about__moonglow {
	position: absolute; right: 8%; top: 4%; width: 34%; aspect-ratio: 1; pointer-events: none;
	background: radial-gradient(closest-side, rgba(220,225,255,.25), transparent);
	filter: blur(10px);
	animation: rr-glow 6s ease-in-out infinite alternate;
}
.rr-about__text { color: var(--bone-dim); }
.rr-about__text p:first-child::first-letter {
	float: left; font-family: var(--f-display); font-size: 3.6em; line-height: .85; padding: .06em .12em 0 0; color: var(--blood);
}
.rr-award {
	display: flex; align-items: center; gap: 14px;
	font-family: var(--f-italic); font-style: italic; font-size: 1.15rem; color: var(--bone);
	padding: 14px 0; border-block: 1px solid var(--line); margin: 1.6rem 0;
}
.rr-award__seal {
	flex: none; display: flex; align-items: center; justify-content: center; width: 56px; height: 56px; border-radius: 50%;
	background: radial-gradient(circle at 35% 30%, #e6343c, var(--blood-deep));
	box-shadow: 0 0 0 3px rgba(195,22,31,.25), 0 8px 20px rgba(0,0,0,.6), inset 0 -4px 8px rgba(0,0,0,.4);
	font-family: var(--f-serif); font-style: normal; font-weight: 600; font-size: 1.25rem; color: #fff; white-space: nowrap; line-height: 1;
}
.rr-award__seal sup { font-size: .55em; vertical-align: super; line-height: 0; }
.rr-stats { display: flex; gap: clamp(20px, 4vw, 48px); margin: 0 0 2rem; flex-wrap: wrap; }
.rr-stats div { display: flex; flex-direction: column-reverse; }
.rr-stats dt { font-family: var(--f-display); font-size: clamp(2rem, 4vw, 3rem); font-weight: 600; line-height: 1; color: #fff; }
.rr-stats dd { margin: 6px 0 0; font-family: var(--f-type); font-size: .74rem; letter-spacing: .14em; text-transform: uppercase; color: var(--ash); }
@media (max-width: 860px) { .rr-about__grid { grid-template-columns: 1fr; } }

/* Hidden hotspots (image-map easter eggs) */
.rr-hotwrap { position: relative; display: block; }
.rr-hotspot { position: absolute; display: block; z-index: 2; border-radius: 40%; cursor: pointer; }
.rr-hotspot:focus-visible { outline: 2px dashed var(--lamp); }

/* =====================================================================
   11. News cards
   ===================================================================== */
.rr-news { background: linear-gradient(180deg, var(--ink), var(--ink-2)); }
.rr-news__grid { display: grid; grid-template-columns: 1.4fr 1fr; grid-template-rows: auto auto; gap: clamp(18px, 2.4vw, 32px); }
.rr-news__grid .rr-card--lead { grid-row: span 2; }
@media (max-width: 860px) { .rr-news__grid { grid-template-columns: 1fr; } .rr-news__grid .rr-card--lead { grid-row: auto; } }

.rr-card {
	position: relative; display: flex; flex-direction: column;
	background: var(--ink-3);
	border: 1px solid var(--line);
	border-radius: var(--radius);
	overflow: hidden;
	transition: border-color .4s, transform .5s var(--ease), box-shadow .5s;
}
.rr-card:hover { border-color: rgba(195,22,31,.5); transform: translateY(-4px); box-shadow: 0 30px 60px -30px rgba(0,0,0,.9), 0 0 40px -20px var(--blood-glow); }
.rr-card__media { display: block; aspect-ratio: 16 / 9; overflow: hidden; background: #0a0a0e; }
.rr-card--lead .rr-card__media { aspect-ratio: auto; flex: 1; min-height: 320px; }
.rr-card--lead .rr-card__excerpt, .rr-card--lead .rr-card__body { flex: none; }
.rr-card__media img { object-position: center 30%; }
.rr-card__media img { width: 100%; height: 100%; object-fit: cover; filter: saturate(.85) brightness(.9); transition: transform 1.2s var(--ease), filter .6s; }
.rr-card:hover .rr-card__media img { transform: scale(1.05); filter: none; }
.rr-card__placeholder {
	display: grid; place-items: center; width: 100%; height: 100%;
	background: radial-gradient(circle at 50% 40%, #241014, #0a0a0e 70%);
}
.rr-card__placeholder img { width: 34%; height: auto; object-fit: contain; opacity: .25; filter: none; }
.rr-card__body { padding: clamp(18px, 2.4vw, 28px); display: flex; flex-direction: column; flex: 1; }
.rr-card__meta { font-family: var(--f-type); font-size: .76rem; letter-spacing: .12em; text-transform: uppercase; color: var(--blood); margin-bottom: .6rem; }
.rr-card__title { font-size: clamp(1.15rem, 1.8vw, 1.45rem); margin-bottom: .5rem; }
.rr-card--lead .rr-card__title { font-size: clamp(1.4rem, 2.6vw, 2rem); }
.rr-card__title a { text-decoration: none; }
.rr-card__title a::after { content: ""; position: absolute; inset: 0; z-index: 1; }
.rr-card__excerpt { color: var(--ash); font-size: .95em; flex: 1; }
.rr-card__excerpt p { margin: 0 0 1rem; }
.rr-card .rr-link { position: relative; z-index: 2; }

.rr-list { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(320px, 100%), 1fr)); gap: 28px; }

/* =====================================================================
   12. Enigma Mansion
   ===================================================================== */
.rr-enigma {
	position: relative; overflow: hidden; isolation: isolate;
	min-height: 560px; display: flex; align-items: center;
	padding-block: 90px;
}
.rr-enigma__bg {
	position: absolute; top: 0; bottom: 0; right: 0; width: min(62%, 980px); z-index: -2;
	background-size: cover; background-position: center;
	filter: brightness(.8);
	-webkit-mask-image: linear-gradient(90deg, transparent, #000 35%);
	mask-image: linear-gradient(90deg, transparent, #000 35%);
}
.rr-enigma::before {
	content: ""; position: absolute; inset: 0; z-index: -1;
	background: radial-gradient(60% 80% at 20% 50%, rgba(122,12,18,.25), transparent 70%),
		linear-gradient(180deg, var(--ink), transparent 18%, transparent 82%, var(--ink));
}
.rr-enigma__inner > * { max-width: 520px; }
.rr-enigma__title {
	font-size: clamp(2.4rem, 5.6vw, 4.6rem); font-weight: 800; text-transform: uppercase; letter-spacing: .04em;
	color: #e3242c;
	text-shadow: 0 0 30px rgba(195,22,31,.5);
	margin-bottom: .3em;
}
.rr-enigma p { color: var(--bone-dim); margin-bottom: 1.8rem; }
@media (max-width: 760px) {
	.rr-enigma__bg { width: 100%; opacity: .4; }
	.rr-enigma::before { background: linear-gradient(180deg, var(--ink), rgba(7,7,10,.7) 30%, rgba(7,7,10,.85)); }
}

/* =====================================================================
   13. Unlock the code
   ===================================================================== */
.rr-code { text-align: center; }
.rr-code .rr-section__head { margin-inline: auto; }
.rr-code__pieces {
	list-style: none; margin: 0 auto 48px; padding: 0;
	display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: clamp(14px, 2vw, 28px);
	max-width: 1100px;
}
@media (max-width: 860px) { .rr-code__pieces { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.rr-piece { perspective: 1000px; }
.rr-piece__card {
	position: relative; display: block; width: 100%; aspect-ratio: 300 / 211;
	background: none; border: 0; padding: 0; cursor: pointer;
	transform-style: preserve-3d; transition: transform .9s var(--ease);
}
.rr-piece__card[aria-pressed="true"] { transform: rotateY(180deg); }
.rr-piece__front, .rr-piece__back {
	position: absolute; inset: 0; backface-visibility: hidden; -webkit-backface-visibility: hidden;
	border-radius: var(--radius); overflow: hidden;
	border: 1px solid var(--line);
}
.rr-piece__front img { width: 100%; height: 100%; object-fit: cover; filter: grayscale(.2) brightness(.85); transition: filter .4s; }
.rr-piece__card:hover .rr-piece__front img { filter: none; }
.rr-piece__turn {
	position: absolute; left: 0; right: 0; bottom: 0; padding: 8px;
	font-family: var(--f-type); font-size: .7rem; letter-spacing: .16em; text-transform: uppercase; color: var(--bone);
	background: linear-gradient(transparent, rgba(0,0,0,.85));
}
.rr-piece__back {
	transform: rotateY(180deg);
	display: grid; place-items: center; padding: 16px;
	background:
		repeating-linear-gradient(0deg, rgba(255,255,255,.025) 0 1px, transparent 1px 26px),
		radial-gradient(circle at 50% 40%, #2a1215, #0d0d12 75%);
	border-color: rgba(195,22,31,.45);
}
.rr-piece__clue { font-family: var(--f-type); font-size: clamp(.82rem, 1.2vw, 1rem); line-height: 1.45; color: #f2e9d8; }
.rr-code__foot { display: flex; flex-direction: column; align-items: center; gap: 18px; }
.rr-code__progress { font-family: var(--f-italic); font-style: italic; font-size: 1.3rem; margin: 0; display: inline-flex; gap: .4em; align-items: center; }
.rr-code__progress b { font-family: var(--f-display); font-style: normal; color: var(--blood); }
.rr-code__progress .rr-icon { color: var(--blood); width: 1.4em; height: 1.4em; }

/* =====================================================================
   14. Page header + prose
   ===================================================================== */
.rr-main { min-height: 50vh; }
.rr-pagehead {
	position: relative; overflow: hidden; isolation: isolate;
	padding: calc(var(--header-h) + clamp(56px, 8vw, 110px)) 0 clamp(48px, 6vw, 80px);
	background:
		radial-gradient(70% 90% at 80% 0%, rgba(195,22,31,.16), transparent 60%),
		linear-gradient(180deg, #0c0c11, var(--ink));
	border-bottom: 1px solid var(--line);
}
.rr-pagehead__fog {
	position: absolute; inset: auto -20% -30% -20%; height: 70%; z-index: -1;
	background: radial-gradient(40% 50% at 30% 50%, rgba(200,205,220,.1), transparent 70%), radial-gradient(40% 50% at 70% 60%, rgba(200,205,220,.07), transparent 70%);
	filter: blur(16px); animation: rr-drift 22s ease-in-out infinite alternate;
}
.rr-pagehead__mark {
	/* The whole jigsaw logo, kept below the fixed header and inside the content edge. */
	position: absolute; z-index: -1; pointer-events: none;
	top: calc(var(--header-h) + 14px);
	right: max(var(--gutter), calc((100% - var(--wrap)) / 2 + var(--gutter)));
	height: calc(100% - var(--header-h) - 34px); width: auto; max-width: 44%;
	object-fit: contain; object-position: right center;
	opacity: .06;
}
.rr-pagehead__title { font-size: clamp(2.2rem, 5.6vw, 4.6rem); font-weight: 600; margin: 0; max-width: 18ch; }
.rr-pagehead__sub { margin-top: 1rem; color: var(--bone-dim); max-width: 62ch; }
.rr-pagehead__sub p:last-child { margin: 0; }
.rr-meta, .rr-meta a { font-family: var(--f-type); font-size: .82rem; letter-spacing: .1em; text-transform: uppercase; color: var(--ash); text-decoration: none; }

.rr-prose { max-width: 760px; margin-inline: auto; padding-block: clamp(40px, 6vw, 80px); }
.rr-prose > *:first-child { margin-top: 0; }
.rr-prose h2 { font-size: clamp(1.6rem, 3vw, 2.2rem); margin-top: 2em; }
.rr-prose h3 { font-size: clamp(1.2rem, 2.2vw, 1.5rem); margin-top: 1.8em; color: #fff; }
.rr-prose h3::before { content: ""; display: inline-block; width: .7em; height: 1px; background: var(--blood); vertical-align: middle; margin-right: .5em; }
.rr-prose a { color: #fff; text-decoration: underline; text-decoration-color: var(--blood); text-decoration-thickness: 1px; }
.rr-prose a:hover { color: #ff6b6e; }
.rr-prose img { border-radius: var(--radius); }
.rr-prose figure { margin: 2em 0; }
.rr-prose figcaption, .rr-prose .wp-element-caption { font-family: var(--f-type); font-size: .82rem; color: var(--ash); text-align: center; margin-top: .8em; }
.rr-prose ul, .rr-prose ol { padding-left: 1.3em; }
.rr-prose li { margin-bottom: .45em; }
.rr-prose ul li::marker { color: var(--blood); }
.rr-prose blockquote, .rr-prose .wp-block-quote {
	margin: 2em 0; padding: .4em 0 .4em 1.4em; border-left: 2px solid var(--blood);
	font-family: var(--f-italic); font-style: italic; font-size: 1.3em; color: #f2ecdf;
}
.rr-prose blockquote cite { display: block; font-family: var(--f-type); font-style: normal; font-size: .62em; color: var(--ash); margin-top: .6em; }
.rr-prose hr, .rr-prose .wp-block-separator { border: 0; height: 1px; background: linear-gradient(90deg, transparent, var(--blood), transparent); margin: 3em auto; max-width: 320px; }
.rr-prose table { width: 100%; border-collapse: collapse; font-size: .92em; }
.rr-prose th, .rr-prose td { border-bottom: 1px solid var(--line); padding: .6em .4em; text-align: left; }
.rr-prose code { font-size: .9em; background: var(--ink-3); padding: .1em .35em; border-radius: 3px; }
.rr-prose pre { background: var(--ink-3); padding: 1em; overflow: auto; border-radius: var(--radius); }
.rr-prose iframe { max-width: 100%; border: 1px solid var(--line); border-radius: var(--radius); background: #000; }
.rr-prose .alignright { float: right; margin: .4em 0 1em 1.6em; max-width: 46%; }
.rr-prose .alignleft { float: left; margin: .4em 1.6em 1em 0; max-width: 46%; }
.rr-prose .aligncenter { margin-inline: auto; text-align: center; }
.rr-prose .aligncenter img { margin-inline: auto; }
.rr-prose .alignwide { margin-inline: calc(50% - min(50vw, 600px) + var(--gutter)); max-width: none; }
.rr-prose .alignfull { margin-inline: calc(50% - 50vw); max-width: 100vw; width: 100vw; }
.rr-prose::after { content: ""; display: table; clear: both; }
.rr-prose .wp-block-columns { gap: 28px; }
.rr-prose .wp-block-button__link { font-family: var(--f-display); letter-spacing: .14em; text-transform: uppercase; font-size: .8rem; background: var(--blood); color: #fff; text-decoration: none; border-radius: var(--radius); }
.rr-prose .has-text-align-center { text-align: center; }
@media (max-width: 640px) {
	.rr-prose .alignright, .rr-prose .alignleft { float: none; margin: 1.5em auto; max-width: 100%; }
}

/* Forms (comments, Contact Form 7, WPForms) */
.rr-prose input[type="text"], .rr-prose input[type="email"], .rr-prose input[type="url"], .rr-prose input[type="tel"], .rr-prose input[type="password"], .rr-prose input[type="search"], .rr-prose textarea, .rr-prose select,
.rr-comments input[type="text"], .rr-comments input[type="email"], .rr-comments input[type="url"], .rr-comments textarea {
	width: 100%; max-width: 100%;
	background: var(--ink-2) !important; color: var(--bone) !important;
	border: 1px solid var(--line-2) !important; border-radius: var(--radius) !important;
	padding: .8em 1em !important; font: inherit !important;
	transition: border-color .2s, box-shadow .2s;
}
.rr-prose input:focus, .rr-prose textarea:focus, .rr-comments input:focus, .rr-comments textarea:focus {
	outline: none; border-color: var(--blood) !important; box-shadow: 0 0 0 3px rgba(195,22,31,.2) !important;
}
.rr-prose label, .rr-prose .wpforms-field-label { font-family: var(--f-type); font-size: .82rem !important; letter-spacing: .08em; color: var(--bone-dim) !important; }
.rr-prose input[type="submit"], .rr-prose button[type="submit"], .rr-prose .wpforms-submit {
	font-family: var(--f-display) !important; font-size: .8rem !important; letter-spacing: .18em !important; text-transform: uppercase;
	background: linear-gradient(180deg, #d01a24, var(--blood-deep)) !important; color: #fff !important;
	border: 1px solid rgba(255,90,90,.35) !important; border-radius: var(--radius) !important;
	padding: .95em 1.6em !important; cursor: pointer;
}

/* Novel content conventions (breadcrumb line, "^ top" links) */
.is-novel .rr-prose > p:first-child {
	font-family: var(--f-type); font-size: .8rem; letter-spacing: .08em; color: var(--ash);
	padding: 12px 16px; border: 1px solid var(--line); border-radius: var(--radius); background: var(--ink-2);
	position: sticky; top: calc(var(--header-h) + 8px); z-index: 5; backdrop-filter: blur(8px);
}
.admin-bar.is-novel .rr-prose > p:first-child { top: calc(var(--header-h) + 40px); }
.is-novel .rr-prose > p:first-child a { color: var(--bone); text-decoration: none; }
.is-novel .rr-prose > p:first-child a:hover { color: #ff6b6e; }
.rr-prose a[href="#top"] { font-family: var(--f-type); font-size: .72rem; letter-spacing: .14em; text-transform: uppercase; color: var(--ash); text-decoration: none; }
/* The cover sits in the page header on novel pages, so hide the duplicate in the description */
.is-novel .rr-prose h3#description + .wp-block-image,
.is-novel .rr-prose h3#description + figure { display: none; }

/* Wreckoning ISBN easter egg reveal */
.rr-egg-revealed {
	animation: rr-egg 1.4s var(--ease) both;
	animation-delay: calc(var(--i, 0) * 180ms);
}
div.rr-egg-revealed, p.rr-egg-revealed {
	padding: 1.2em 1.4em; margin: 0 0 1em;
	background: linear-gradient(180deg, rgba(195,22,31,.1), rgba(13,13,18,.6));
	border: 1px solid rgba(195,22,31,.4); border-radius: var(--radius);
}
h2.rr-egg-revealed { color: #ff4b4f; text-shadow: 0 0 24px rgba(195,22,31,.6); }
@keyframes rr-egg { 0% { opacity: 0; filter: blur(12px); transform: translateY(10px) scale(.98); } 40% { opacity: .5; } 45% { opacity: .1; } 55% { opacity: .8; } 100% { opacity: 1; filter: none; transform: none; } }

/* =====================================================================
   15. Novel page header
   ===================================================================== */
.rr-novelhead {
	position: relative; overflow: hidden; isolation: isolate;
	padding: calc(var(--header-h) + clamp(40px, 6vw, 90px)) 0 clamp(48px, 6vw, 90px);
	border-bottom: 1px solid var(--line);
}
.rr-novelhead__bg {
	position: absolute; inset: -10%; z-index: -2;
	background: var(--cover) center / cover no-repeat;
	filter: blur(40px) saturate(1.2) brightness(.35);
	transform: scale(1.1);
}
.rr-novelhead::after {
	content: ""; position: absolute; inset: 0; z-index: -1;
	background: radial-gradient(70% 70% at 30% 50%, transparent, rgba(7,7,10,.7)), linear-gradient(180deg, rgba(7,7,10,.4), var(--ink));
}
.rr-novelhead__embers { position: absolute; inset: 0; width: 100%; height: 100%; z-index: -1; pointer-events: none; }
.rr-novelhead__grid { display: grid; grid-template-columns: auto 1fr; gap: clamp(32px, 6vw, 80px); align-items: center; }
.rr-novelhead__book { perspective: 1400px; }
.rr-novelhead .rr-book { width: clamp(180px, 24vw, 300px); aspect-ratio: 2 / 3; }
.rr-novelhead__title { font-size: clamp(2.4rem, 6vw, 5rem); font-weight: 800; text-transform: uppercase; line-height: .95; margin-bottom: .35em; }
.rr-novelhead__tagline { font-family: var(--f-italic); font-style: italic; font-size: clamp(1.3rem, 2.4vw, 1.9rem); color: #ff6064; line-height: 1.3; max-width: 30ch; }
.rr-novelhead__buy { list-style: none; padding: 0; margin: 1.6rem 0 0; display: flex; flex-wrap: wrap; gap: 10px; }
.rr-novelhead__soon { font-family: var(--f-type); color: var(--ash); }
@media (max-width: 720px) {
	.rr-novelhead__grid { grid-template-columns: 1fr; text-align: center; }
	.rr-novelhead__book { display: grid; place-items: center; }
	.rr-novelhead__tagline { margin-inline: auto; }
	.rr-novelhead__buy { justify-content: center; }
}
.rr-more { padding-top: 0; }
.rr-more__row { list-style: none; padding: 0; margin: 24px 0 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(120px, 1fr)); gap: 18px; }
.rr-more__item { display: block; aspect-ratio: 2/3; overflow: hidden; border-radius: 2px 4px 4px 2px; box-shadow: 0 18px 30px -16px #000; transform: rotateX(var(--rx, 0)) rotateY(var(--ry, 0)); transition: transform .4s var(--ease), box-shadow .4s; }
.rr-more__item img { width: 100%; height: 100%; object-fit: cover; }
.rr-more__item:hover { box-shadow: 0 24px 40px -16px #000, 0 0 30px -10px var(--blood-glow); }

/* =====================================================================
   16. Blog layout, single, comments
   ===================================================================== */
.rr-layout {
	width: 100%; max-width: var(--wrap); margin-inline: auto; padding: clamp(40px, 6vw, 80px) var(--gutter);
	display: grid; grid-template-columns: minmax(0, 1fr) 300px; gap: clamp(32px, 5vw, 72px);
}
.no-sidebar .rr-layout { grid-template-columns: minmax(0, 1fr); }
.no-sidebar.single .rr-layout__main { max-width: 760px; margin-inline: auto; width: 100%; }
.rr-layout .rr-prose { padding-block: 0; max-width: none; }
@media (max-width: 960px) { .rr-layout { grid-template-columns: minmax(0, 1fr); } }
.rr-feature { margin: 0 0 2.4rem; }
.rr-feature img { width: 100%; border-radius: var(--radius); }
.rr-layout__side .widget { margin-bottom: 40px; padding-bottom: 30px; border-bottom: 1px solid var(--line); }
.widget-title { font-size: .85rem; letter-spacing: .22em; text-transform: uppercase; color: var(--blood); font-family: var(--f-display); }
.widget ul { list-style: none; padding: 0; margin: 0; }
.wp-block-search__label { font-family: var(--f-display); font-size: .85rem; letter-spacing: .22em; text-transform: uppercase; color: var(--blood); }
.wp-block-search__inside-wrapper { display: flex; gap: 6px; }
.wp-block-search__input { flex: 1; min-width: 0; background: var(--ink-2); color: var(--bone); border: 1px solid var(--line-2); border-radius: var(--radius); padding: .6em .8em; font: inherit; }
.wp-block-search__input:focus { outline: none; border-color: var(--blood); }
.wp-block-search__button { background: var(--blood-deep); color: #fff; border: 1px solid rgba(255,90,90,.35); border-radius: var(--radius); padding: .6em 1em; font-family: var(--f-display); font-size: .72rem; letter-spacing: .14em; text-transform: uppercase; cursor: pointer; }
.widget h2, .widget .wp-block-heading { font-size: .85rem; letter-spacing: .22em; text-transform: uppercase; color: var(--blood); font-family: var(--f-display); }
.widget li { padding: .4em 0; border-bottom: 1px dashed var(--line); }
.widget a { text-decoration: none; color: var(--bone-dim); }
.widget a:hover { color: #fff; }
.rr-tags a { display: inline-block; margin: 0 6px 6px 0; padding: .3em .8em; border: 1px solid var(--line); border-radius: 999px; font-family: var(--f-type); font-size: .76rem; text-decoration: none; }
.rr-postnav { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; margin: 3rem 0; }
.rr-postnav a { display: block; padding: 18px; border: 1px solid var(--line); border-radius: var(--radius); text-decoration: none; height: 100%; transition: border-color .3s; }
.rr-postnav a:hover { border-color: var(--blood); }
.rr-postnav small { display: block; font-family: var(--f-type); text-transform: uppercase; letter-spacing: .14em; color: var(--blood); font-size: .7rem; }
.rr-postnav__next { text-align: right; grid-column: 2; }
.pagination, .nav-links { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 48px; }
.page-numbers { display: inline-grid; place-items: center; min-width: 44px; height: 44px; padding: 0 12px; border: 1px solid var(--line); border-radius: var(--radius); text-decoration: none; font-family: var(--f-display); font-size: .85rem; }
.page-numbers.current, .page-numbers:hover { border-color: var(--blood); color: #fff; }
.rr-comments { margin-top: 3rem; }
.rr-comments__list { list-style: none; padding: 0; }
.rr-comments__list .comment { padding: 18px 0; border-bottom: 1px solid var(--line); }
.rr-comments__list .children { list-style: none; padding-left: 24px; }
.comment-author img { border-radius: 50%; float: left; margin-right: 12px; }
.comment-metadata a { font-family: var(--f-type); font-size: .76rem; color: var(--ash); text-decoration: none; }
.comment-form p { margin-bottom: 1rem; }
.comment-form label { display: block; font-family: var(--f-type); font-size: .82rem; color: var(--bone-dim); margin-bottom: 4px; }
.rr-empty { text-align: center; }
.rr-empty .rr-searchform { margin-inline: auto; }

/* =====================================================================
   17. 404
   ===================================================================== */
.rr-404 { position: relative; min-height: 100svh; display: grid; place-items: center; text-align: center; overflow: hidden; padding: calc(var(--header-h) + 40px) 0 80px; }
.rr-404__fog { position: absolute; inset: -20%; background: radial-gradient(40% 30% at 50% 60%, rgba(195,22,31,.15), transparent 70%), radial-gradient(50% 40% at 30% 80%, rgba(200,205,220,.07), transparent 70%); animation: rr-drift 20s ease-in-out infinite alternate; }
.rr-404__inner { position: relative; max-width: 640px; }
.rr-404__code { font-family: var(--f-display); font-weight: 800; font-size: clamp(6rem, 22vw, 14rem); line-height: 1; margin: 0; color: transparent; -webkit-text-stroke: 1px rgba(195,22,31,.7); text-shadow: 0 0 60px rgba(195,22,31,.35); }
.rr-404__title { font-size: clamp(1.5rem, 3.4vw, 2.3rem); }
.rr-404 .rr-searchform { margin: 2rem auto; }

/* =====================================================================
   18. Footer + ledger + toast
   ===================================================================== */
.rr-footer { position: relative; background: #040406; border-top: 1px solid var(--line); padding-top: 80px; margin-top: 0; }
.rr-footer__drip {
	position: absolute; top: -1px; left: 0; right: 0; height: 26px; pointer-events: none;
	background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 600 26' preserveAspectRatio='none'%3E%3Cpath d='M0 0h600v3c-14 0-16 6-22 6s-6-6-20-6-12 16-20 16-6-16-20-16H340c-10 0-10 22-18 22s-6-22-18-22H170c-12 0-10 12-17 12s-6-12-17-12H60c-10 0-10 8-16 8S36 3 26 3H0z' fill='%237a0c12'/%3E%3C/svg%3E") top / 100% 100% no-repeat;
	opacity: .9;
}
.rr-footer__grid { display: grid; grid-template-columns: 1.3fr 1fr 1.2fr; gap: clamp(32px, 5vw, 64px); padding-bottom: 56px; }
@media (max-width: 860px) { .rr-footer__grid { grid-template-columns: 1fr; } }
.rr-footer__brand .rr-logo { width: 170px; opacity: .9; margin-bottom: 18px; }
.rr-footer__tag { font-family: var(--f-italic); font-style: italic; font-size: 1.15rem; color: var(--bone-dim); max-width: 36ch; }
.rr-footer__heading { font-family: var(--f-display); font-size: .8rem; letter-spacing: .24em; text-transform: uppercase; color: var(--blood); margin-bottom: 1.2rem; }
.rr-footer__nav .menu { list-style: none; margin: 0; padding: 0; columns: 2; }
.rr-footer__nav a { display: inline-block; padding: 5px 0; text-decoration: none; color: var(--bone-dim); }
.rr-footer__nav a:hover { color: #fff; }
.rr-footer__small { font-size: .92rem; color: var(--ash); }
.rr-footer__widgets { grid-column: 1 / -1; }
.rr-footer__base { display: flex; justify-content: space-between; align-items: center; gap: 16px; flex-wrap: wrap; padding-block: 24px 32px; border-top: 1px solid var(--line); font-size: .85rem; color: var(--ash); }
.rr-footer__base p { margin: 0; }
.rr-totop { display: inline-flex; align-items: center; gap: .5em; text-decoration: none; font-family: var(--f-display); font-size: .72rem; letter-spacing: .18em; text-transform: uppercase; color: var(--bone-dim); }
.rr-totop .rr-icon { color: var(--blood); transition: transform .4s var(--ease); }
.rr-totop:hover .rr-icon { transform: rotate(-30deg); }

.rr-ledger-btn {
	display: inline-flex; align-items: center; gap: 10px; margin-bottom: 14px;
	padding: 10px 16px; background: var(--ink-3); border: 1px solid var(--line-2); border-radius: 999px; cursor: pointer;
	font-family: var(--f-type); font-size: .85rem; color: var(--bone);
	transition: border-color .3s, box-shadow .3s;
}
.rr-ledger-btn:hover { border-color: var(--blood); box-shadow: 0 0 24px -8px var(--blood-glow); }
.rr-ledger-btn .rr-icon { color: var(--blood); width: 22px; height: 22px; }
.rr-ledger-count { color: #ff5a5e; font-weight: 700; }
.rr-ledger { list-style: none; margin: 0 0 16px; padding: 14px 18px; border: 1px dashed var(--line-2); border-radius: var(--radius); counter-reset: s; }
.rr-ledger li { counter-increment: s; font-family: var(--f-type); font-size: .86rem; padding: 4px 0; color: var(--ash); }
.rr-ledger li::before { content: counter(s, upper-roman) ". "; color: var(--blood); }
.rr-ledger li.is-found { color: var(--bone); }
.rr-ledger li.is-hidden { letter-spacing: .3em; opacity: .55; }
.rr-all-secrets .rr-ledger-btn { border-color: var(--lamp); box-shadow: 0 0 30px -6px var(--lamp-glow); }

.rr-toast {
	position: fixed; left: 50%; bottom: 28px; z-index: 300;
	transform: translate(-50%, 30px); opacity: 0;
	max-width: calc(100vw - 32px);
	padding: 14px 22px;
	background: linear-gradient(180deg, #1a0a0c, #0b0b0f);
	border: 1px solid rgba(195,22,31,.6);
	border-radius: var(--radius);
	box-shadow: 0 20px 60px -10px rgba(0,0,0,.9), 0 0 40px -10px var(--blood-glow);
	font-family: var(--f-type); font-size: .92rem; color: #f5ede0; text-align: center;
	transition: transform .6s var(--ease), opacity .6s var(--ease);
}
.rr-toast.is-on { transform: translate(-50%, 0); opacity: 1; }

.rr-humbug { position: fixed; inset: 0; width: 100vw; height: 100vh; z-index: 95; pointer-events: none; opacity: 0; transition: opacity .8s; }
.rr-humbug.is-on { opacity: 1; }
body.rr-humbugged .rr-hero__bg { filter: saturate(1.4) brightness(.45) hue-rotate(-12deg) sepia(.4); }

/* =====================================================================
   19. Timeline (Easter egg)
   ===================================================================== */
.rr-tl-title { cursor: default; }
.rr-lh-mode .rr-tl-title { color: #ff4b4f; text-shadow: 0 0 30px rgba(195,22,31,.6); }
.rr-lh-mode .rr-pagehead--timeline::after {
	content: "Welcome back, author. Nothing is hidden from you.";
	position: absolute; right: var(--gutter); bottom: 18px;
	font-family: var(--f-type); font-size: .78rem; letter-spacing: .12em; color: #ff6b6e;
}
.rr-tl { padding-block: 40px 90px; }
.rr-tl__filters { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 14px; padding: 16px 18px; border: 1px solid var(--line); border-radius: var(--radius); background: var(--ink-2); }
.rr-tl__total { margin: 0 10px 0 0; font-family: var(--f-type); font-size: .85rem; color: var(--ash); }
.rr-tl__total b { color: #fff; }
.rr-tl__mode { margin-left: auto; display: flex; gap: 6px; }
.rr-toggle { display: inline-flex; align-items: center; gap: 8px; cursor: pointer; font-family: var(--f-type); font-size: .8rem; color: var(--bone-dim); }
.rr-toggle input { appearance: none; -webkit-appearance: none; width: 36px; height: 20px; border-radius: 999px; background: var(--ink-4); border: 1px solid var(--line-2); position: relative; cursor: pointer; transition: background .2s; margin: 0; }
.rr-toggle input::after { content: ""; position: absolute; top: 2px; left: 2px; width: 14px; height: 14px; border-radius: 50%; background: var(--ash); transition: transform .25s var(--ease), background .2s; }
.rr-toggle input:checked { background: var(--blood-deep); border-color: var(--blood); }
.rr-toggle input:checked::after { transform: translateX(16px); background: #fff; }
.rr-tl__novels { display: flex; gap: 12px; overflow-x: auto; padding: 18px 2px; scrollbar-width: thin; }
.rr-tl__pick { flex: none; width: 74px; padding: 0; border: 2px solid transparent; border-radius: 4px; background: none; cursor: pointer; opacity: .65; transition: opacity .2s, border-color .2s, transform .3s var(--ease); }
.rr-tl__pick img { width: 100%; aspect-ratio: 2/3; object-fit: cover; border-radius: 2px; }
.rr-tl__pick:hover, .rr-tl__pick[aria-pressed="true"] { opacity: 1; transform: translateY(-3px); }
.rr-tl__pick[aria-pressed="true"] { border-color: var(--blood); }
.rr-tl__cast { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin-bottom: 18px; }
.rr-tl__casttitle { font-size: .8rem; letter-spacing: .2em; text-transform: uppercase; color: var(--blood); margin: 0 8px 0 0; }

.rr-tl__track { position: relative; margin-top: 18px; }
.rr-tl__items { list-style: none; margin: 0; padding: 0; position: relative; }
.rr-tl__nav { display: none; }
.rr-tl__track.is-horizontal .rr-tl__items {
	display: grid; grid-auto-flow: column; grid-auto-columns: minmax(260px, 300px); gap: 22px;
	overflow-x: auto; scroll-snap-type: x mandatory; padding: 46px 4px 24px; scrollbar-width: thin;
}
.rr-tl__track.is-horizontal .rr-tl__items::before {
	content: ""; position: absolute; left: 0; right: 0; top: 22px; height: 1px;
	background: linear-gradient(90deg, transparent, var(--blood) 4%, var(--blood) 96%, transparent);
}
.rr-tl__track.is-horizontal .rr-tl__item { scroll-snap-align: start; position: relative; }
.rr-tl__track.is-horizontal .rr-tl__dot { position: absolute; top: -30px; left: 22px; }
.rr-tl__track.is-horizontal .rr-tl__nav {
	display: grid; place-items: center; position: absolute; top: 50%; z-index: 3; width: 44px; height: 44px; border-radius: 50%;
	background: rgba(7,7,10,.85); border: 1px solid var(--line-2); color: var(--bone); cursor: pointer;
}
.rr-tl__nav--prev { left: calc(var(--gutter) * -1 + 2px); }
.rr-tl__nav--next { right: calc(var(--gutter) * -1 + 2px); }
@media (max-width: 760px) { .rr-tl__track.is-horizontal .rr-tl__nav { display: none; } }
.rr-tl__track.is-vertical .rr-tl__items { padding-left: 34px; max-width: 760px; margin-inline: auto; }
.rr-tl__track.is-vertical .rr-tl__items::before { content: ""; position: absolute; left: 9px; top: 0; bottom: 0; width: 1px; background: linear-gradient(180deg, transparent, var(--blood) 3%, var(--blood) 97%, transparent); }
.rr-tl__track.is-vertical .rr-tl__item { position: relative; margin-bottom: 22px; }
.rr-tl__track.is-vertical .rr-tl__dot { position: absolute; left: -32px; top: 22px; }
.rr-tl__dot { width: 16px; height: 16px; border-radius: 50%; background: var(--ink); border: 2px solid var(--blood); box-shadow: 0 0 0 4px rgba(195,22,31,.15); }
.rr-tl__item.is-current .rr-tl__dot { background: var(--blood); box-shadow: 0 0 16px var(--blood-glow); }
.rr-tl__item.is-incidental .rr-tl__card { border-style: dashed; }
.rr-tl__card { position: relative; height: 100%; padding: 18px; border: 1px solid var(--line); border-radius: var(--radius); background: linear-gradient(180deg, var(--ink-3), var(--ink-2)); overflow: hidden; }
.rr-tl__track.is-drawn .rr-tl__item { animation: rr-fadeup .7s var(--ease) both; animation-delay: calc(min(var(--i), 12) * 50ms); }
.rr-tl__cover { float: right; width: 62px; margin: 0 0 8px 12px; }
.rr-tl__cover img { border-radius: 2px; box-shadow: 0 8px 18px -6px #000; }
.rr-tl__date { margin: 0 0 4px; font-family: var(--f-display); font-weight: 600; font-size: 1.05rem; color: #fff; }
.rr-tl__novel { margin: 0 0 10px; font-size: .78rem; letter-spacing: .14em; text-transform: uppercase; }
.rr-tl__novel button { background: none; border: 0; padding: 0; color: #ff6064; cursor: pointer; font: inherit; letter-spacing: inherit; text-transform: inherit; }
.rr-tl__desc { font-size: .95rem; color: var(--bone-dim); clear: none; }
.rr-tl__desc.is-sealed { filter: blur(6px); user-select: none; pointer-events: none; opacity: .5; }
.rr-tl__char { background: none; border: 0; padding: 0; font: inherit; color: var(--lamp); text-decoration: underline dotted; cursor: pointer; }
.rr-seal { margin-top: 12px; padding-top: 12px; border-top: 1px dashed rgba(195,22,31,.4); display: grid; gap: 8px; clear: both; }
.rr-seal__warn { margin: 0; font-family: var(--f-type); font-size: .78rem; letter-spacing: .14em; text-transform: uppercase; color: #ff5a5e; }
.rr-seal__clue { margin: 0; font-family: var(--f-italic); font-style: italic; color: var(--bone); }
.rr-seal input { background: var(--ink); border: 1px solid var(--line-2); border-radius: var(--radius); padding: .55em .8em; color: var(--bone); font: inherit; font-size: .9rem; }
.rr-seal input:focus { outline: none; border-color: var(--blood); }
.rr-seal.is-wrong { animation: rr-shake .45s; }
@keyframes rr-shake { 20%, 60% { transform: translateX(-6px); } 40%, 80% { transform: translateX(6px); } }
.rr-tl__content { padding-bottom: 0; }

.rr-dialog { max-width: min(480px, calc(100vw - 32px)); background: linear-gradient(180deg, #160b0d, var(--ink-2)); color: var(--bone); border: 1px solid rgba(195,22,31,.5); border-radius: var(--radius); padding: 28px; }
.rr-dialog::backdrop { background: rgba(0,0,0,.75); backdrop-filter: blur(4px); }
.rr-dialog__title { font-size: 1.5rem; }
.rr-dialog__anagram { font-family: var(--f-type); color: #ff6064; }

/* =====================================================================
   20. Reduced motion
   ===================================================================== */
@media (prefers-reduced-motion: reduce) {
	*, *::before, *::after { animation-duration: .001ms !important; animation-iteration-count: 1 !important; transition-duration: .001ms !important; }
	.rr-grain { display: none; }
}

/* WordPress core classes */
.alignnone { margin: 1em 0; }
.wp-caption { max-width: 100%; }
.sticky .rr-card__meta::after { content: " · Pinned"; }
.bypostauthor { }
.gallery-caption { }

/* =====================================================================
   Contact page
   ===================================================================== */
.rr-contact {
	display: grid; grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr); gap: clamp(32px, 5vw, 72px);
	align-items: start;
	padding-block: clamp(40px, 6vw, 84px);
}
.rr-contact:not(:has(.rr-contact__aside)) { grid-template-columns: minmax(0, 720px); justify-content: center; }
.rr-contact__aside.rr-prose { padding-block: 0; margin: 0; max-width: none; }
.rr-contact__aside > :first-child { margin-top: 0; }
.rr-contact__aside img { box-shadow: 0 30px 60px -30px rgba(0,0,0,.9); }
.rr-contact__card {
	position: relative;
	padding: clamp(24px, 4vw, 44px);
	background: linear-gradient(180deg, rgba(21,21,28,.92), rgba(13,13,18,.92));
	border: 1px solid var(--line); border-radius: 6px;
	box-shadow: 0 40px 80px -40px rgba(0,0,0,.9), inset 0 1px 0 rgba(255,255,255,.03);
	scroll-margin-top: calc(var(--header-h) + 20px);
}
.rr-contact__card::before {
	content: ""; position: absolute; inset: -1px -1px auto; height: 2px; border-radius: 6px 6px 0 0;
	background: linear-gradient(90deg, transparent, var(--blood), transparent);
}
.rr-contact__title { margin: 0 0 1.2rem; font-size: clamp(1.4rem, 2.4vw, 1.9rem); }
.rr-contact__row { display: grid; grid-template-columns: 1fr 1fr; gap: 0 20px; }
.rr-field { margin: 0 0 18px; }
.rr-field label {
	display: block; margin-bottom: 7px;
	font-family: var(--f-type); font-size: .8rem; letter-spacing: .1em; text-transform: uppercase; color: var(--bone-dim);
}
.rr-field label span { color: var(--ash); text-transform: none; letter-spacing: .04em; }
.rr-field input, .rr-field textarea {
	display: block; width: 100%;
	padding: 12px 14px;
	font: inherit; font-size: 1.05rem; color: var(--bone);
	background: rgba(7,7,10,.7);
	border: 1px solid var(--line-2); border-radius: var(--radius);
	transition: border-color .2s, box-shadow .2s;
}
.rr-field textarea { resize: vertical; min-height: 160px; line-height: 1.55; }
.rr-field input:focus, .rr-field textarea:focus { outline: none; border-color: var(--lamp); box-shadow: 0 0 0 3px rgba(240,180,106,.15); }
.rr-field input:user-invalid, .rr-field textarea:user-invalid { border-color: rgba(255,90,90,.6); }
.rr-field--hp { position: absolute !important; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
.rr-contact__send { display: flex; flex-wrap: wrap; align-items: center; gap: 12px 20px; margin-top: 6px; }
.rr-contact__send .rr-btn svg { width: 16px; height: 16px; }
.rr-contact__privacy { margin: 0; font-size: .9rem; color: var(--ash); }
.rr-contact__error {
	margin: 0 0 18px; padding: 12px 14px;
	border: 1px solid rgba(255,90,90,.35); border-radius: var(--radius); background: rgba(195,22,31,.1); color: #ffb3b3;
}
.rr-contact__done { text-align: center; padding-block: 12px; }
.rr-contact__done p { color: var(--bone-dim); margin: 0 auto 24px; max-width: 42ch; }
.rr-contact__seal {
	display: inline-grid; place-items: center; width: 64px; height: 64px; margin-bottom: 16px;
	border-radius: 50%; border: 1px solid rgba(195,22,31,.5); color: var(--blood);
	box-shadow: 0 0 40px -6px var(--blood-glow);
	animation: rr-fadeup .8s var(--ease) both;
}
.rr-contact__seal svg { width: 28px; height: 28px; }
@media (max-width: 860px) {
	.rr-contact { grid-template-columns: 1fr; }
	.rr-contact__main { order: -1; }
}
@media (max-width: 520px) {
	.rr-contact__row { grid-template-columns: 1fr; }
}
