/* =========================================================================
   GeeKPress Aurelian — geekui-vars.css
   Every GeeKPress variable space, redefined with the Aurelian palette.
   Declared under body{} (beats the plugin's neutral :root defaults) AND on
   the React root ids for safety.
   ========================================================================= */

body.aurelian-body,
body,
[id^="geekui-root"],
#geekp-frontpage-root {

	/* ---- shared / movie / catalog / name / mediaviewer ---- */
	--geekui-bg: var(--aur-bg);
	--geekui-bg-2: var(--aur-surface);
	--geekui-text: var(--aur-text);
	--geekui-text-dim: var(--aur-text-dim);
	--geekui-text-mute: var(--aur-text-mute);
	--geekui-accent: var(--aur-violet);
	--geekui-accent-2: var(--aur-gold);
	--geekui-accent-d: #5d3aa8;
	--geekui-on-accent: #f6f1ff;
	--geekui-surface: var(--aur-surface);
	--geekui-surface-2: #151a2c;
	--geekui-border: rgba(var(--aur-gold-rgb), 0.18);
	--geekui-border-strong: rgba(var(--aur-gold-rgb), 0.42);
	--geekui-card-radius: 10px;
	--geekui-card-shadow: 0 14px 34px rgba(0, 0, 0, 0.38);
	--geekui-card-hover-shadow: 0 20px 44px rgba(0, 0, 0, 0.5), 0 0 0 1px rgba(var(--aur-gold-rgb), 0.35);
	--geekui-modal-bg: var(--aur-surface);
	--geekui-modal-text: var(--aur-text);
	--geekui-font-base: 'Hanken Grotesk', system-ui, sans-serif;
	--geekui-font-title: 'Cinzel', 'Times New Roman', serif;
	--geekui-font-mono: 'Spline Sans Mono', ui-monospace, monospace;
	--geekui-glow: rgba(var(--aur-violet-rgb), 0.4);
	--geekui-hero-fade: rgba(var(--aur-bg-rgb), 0.92);
	--geekui-hero-tint: rgba(13, 17, 32, 0.55);
	--geekui-hero-text-shadow: 0 2px 18px rgba(0, 0, 0, 0.65);
	--geekui-noposter-movie: #1a2036;
	--geekui-noposter-tv: #1a2036;
	--geekui-noposter-game: #1d1a36;
	--geekui-noposter-person: #221c30;
	--geekui-noposter-char: #221c30;
	--geekui-tone-exceptional: #58a87c;
	--geekui-tone-great: #8fbf63;
	--geekui-tone-good: var(--aur-gold);
	--geekui-tone-mixed: #d7913f;
	--geekui-tone-poor: var(--aur-hot);
	--geekui-tone-muted: var(--aur-text-mute);

	/* ---- game (game-enhanced.css) ---- */
	--gx-bg: var(--aur-bg);
	--gx-bg-deep: var(--aur-bg-deep);
	--gx-bg-card: var(--aur-plate-mid);
	--gx-bg-card2: var(--aur-surface-2);
	--gx-accent: var(--aur-gold);
	--gx-accent2: var(--aur-gold-bright);
	--gx-accent-dim: rgba(var(--aur-gold-rgb), 0.16);
	--gx-hot: var(--aur-violet);
	--gx-hot2: var(--aur-violet-2);
	--gx-hot-dim: rgba(var(--aur-violet-rgb), 0.16);
	--gx-text: var(--aur-text);
	--gx-text-dim: var(--aur-text-dim);
	--gx-text-muted: var(--aur-text-mute);
	--gx-text-mute: var(--aur-text-mute);
	--gx-border: rgba(var(--aur-gold-rgb), 0.18);
	--gx-border2: rgba(var(--aur-gold-rgb), 0.34);
	--gx-danger: var(--aur-hot);
	--gx-wish: var(--aur-violet-2);
	--gx-played: #58a87c;
	--gx-star: var(--aur-star);
	--gx-cyan: var(--aur-blue);
	--gx-edge: rgba(var(--aur-gold-rgb), 0.3);
	--gx-font-mono: 'Spline Sans Mono', ui-monospace, monospace;
	--gx-hero-bg: var(--aur-surface);

	/* ---- fields / taxonomy ---- */
	--gxf-bg: var(--aur-bg);
	--gxf-bg-2: var(--aur-surface);
	--gxf-bg-deep: var(--aur-bg-deep);
	--gxf-bg-card: var(--aur-plate-mid);
	--gxf-accent: var(--aur-gold);
	--gxf-accent-2: var(--aur-gold-bright);
	--gxf-accent-d: var(--aur-gold-dim);
	--gxf-text: var(--aur-text);
	--gxf-text-dim: var(--aur-text-dim);
	--gxf-text-mute: var(--aur-text-mute);
	--gxf-border: rgba(var(--aur-gold-rgb), 0.18);
	--gxf-border-2: rgba(var(--aur-gold-rgb), 0.34);

	/* ---- company ---- */
	--gxcm-bg: var(--aur-bg);
	--gxcm-bg-2: var(--aur-surface);
	--gxcm-bg-deep: var(--aur-bg-deep);
	--gxcm-bg-card: var(--aur-plate-mid);
	--gxcm-accent: var(--aur-gold);
	--gxcm-accent-2: var(--aur-gold-bright);
	--gxcm-hot: var(--aur-violet);
	--gxcm-hot-2: var(--aur-violet-2);
	--gxcm-text: var(--aur-text);
	--gxcm-text-dim: var(--aur-text-dim);
	--gxcm-text-mute: var(--aur-text-mute);
	--gxcm-border: rgba(var(--aur-gold-rgb), 0.18);
	--gxcm-border-2: rgba(var(--aur-gold-rgb), 0.34);

	/* ---- platform ---- */
	--gxpl-bg: var(--aur-bg);
	--gxpl-bg-2: var(--aur-surface);
	--gxpl-bg-deep: var(--aur-bg-deep);
	--gxpl-bg-card: var(--aur-plate-mid);
	--gxpl-accent: var(--aur-gold);
	--gxpl-accent-2: var(--aur-gold-bright);
	--gxpl-hot: var(--aur-violet);
	--gxpl-hot-2: var(--aur-violet-2);
	--gxpl-text: var(--aur-text);
	--gxpl-text-dim: var(--aur-text-dim);
	--gxpl-text-mute: var(--aur-text-mute);
	--gxpl-border: rgba(var(--aur-gold-rgb), 0.18);
	--gxpl-border-2: rgba(var(--aur-gold-rgb), 0.34);

	/* ---- engine ---- */
	--gxen-bg: var(--aur-bg);
	--gxen-bg-2: var(--aur-surface);
	--gxen-bg-deep: var(--aur-bg-deep);
	--gxen-bg-card: var(--aur-plate-mid);
	--gxen-accent: var(--aur-gold);
	--gxen-accent-2: var(--aur-gold-bright);
	--gxen-hot: var(--aur-violet);
	--gxen-hot-2: var(--aur-violet-2);
	--gxen-text: var(--aur-text);
	--gxen-text-dim: var(--aur-text-dim);
	--gxen-text-mute: var(--aur-text-mute);
	--gxen-border: rgba(var(--aur-gold-rgb), 0.18);
	--gxen-border-2: rgba(var(--aur-gold-rgb), 0.34);

	/* ---- profile ---- */
	--gxp-bg: var(--aur-bg);
	--gxp-bg-2: var(--aur-surface);
	--gxp-bg-deep: var(--aur-bg-deep);
	--gxp-bg-card: var(--aur-plate-mid);
	--gxp-accent: var(--aur-violet);
	--gxp-accent-2: var(--aur-violet-2);
	--gxp-accent-d: #5d3aa8;
	--gxp-text: var(--aur-text);
	--gxp-text-dim: var(--aur-text-dim);
	--gxp-text-mute: var(--aur-text-mute);
	--gxp-border: rgba(var(--aur-gold-rgb), 0.18);
	--gxp-border-2: rgba(var(--aur-gold-rgb), 0.34);

	/* ---- articles (critic/review) ---- */
	--gem-dark: var(--aur-bg);
	--gem-ink: var(--aur-text);
	--gem-ink2: var(--aur-text-dim);
	--gem-mute: var(--aur-text-mute);
	--gem-gold: var(--aur-gold);
	--gem-gold2: var(--aur-gold-bright);
	--gem-panel: var(--aur-plate-mid);
	--gem-panel2: var(--aur-surface-2);
	--gem-line: rgba(var(--aur-gold-rgb), 0.18);
	--gem-line2: rgba(var(--aur-gold-rgb), 0.34);
	--gem-border: rgba(var(--aur-gold-rgb), 0.22);
	--gxa-bg: var(--aur-bg);
	--gxa-panel: var(--aur-plate-mid);
	--gxa-panel2: var(--aur-surface-2);
	--gxa-text: var(--aur-text);
	--gxa-text-dim: var(--aur-text-dim);
	--gxa-text-mute: var(--aur-text-mute);
	--gxa-border: rgba(var(--aur-gold-rgb), 0.18);
	--gxa-border2: rgba(var(--aur-gold-rgb), 0.34);
	--gxa-hero-bg: var(--aur-surface);

	/* ---- lists / login / register ---- */
	--gxl-bg: var(--aur-bg);
	--gxl-bg-2: var(--aur-surface);
	--gxl-bg-deep: var(--aur-bg-deep);
	--gxl-bg-card: var(--aur-plate-mid);
	--gxl-accent: var(--aur-gold);
	--gxl-accent-2: var(--aur-gold-bright);
	--gxl-text: var(--aur-text);
	--gxl-text-dim: var(--aur-text-dim);
	--gxl-text-mute: var(--aur-text-mute);
	--gxl-border: rgba(var(--aur-gold-rgb), 0.18);
	--gxl-border-2: rgba(var(--aur-gold-rgb), 0.34);

	--gxg-bg: var(--aur-bg);
	--gxg-bg-2: var(--aur-surface);
	--gxg-bg-card: var(--aur-plate-mid);
	--gxg-accent: var(--aur-violet);
	--gxg-accent-2: var(--aur-violet-2);
	--gxg-danger: var(--aur-hot);
	--gxg-text: var(--aur-text);
	--gxg-text-dim: var(--aur-text-dim);
	--gxg-text-mute: var(--aur-text-mute);
	--gxg-border: rgba(var(--aur-gold-rgb), 0.18);

	--gxr-bg: var(--aur-bg);
	--gxr-bg-2: var(--aur-surface);
	--gxr-bg-card: var(--aur-plate-mid);
	--gxr-accent: var(--aur-violet);
	--gxr-accent-2: var(--aur-violet-2);
	--gxr-danger: var(--aur-hot);
	--gxr-text: var(--aur-text);
	--gxr-text-dim: var(--aur-text-dim);
	--gxr-text-mute: var(--aur-text-mute);
	--gxr-border: rgba(var(--aur-gold-rgb), 0.18);
	--gxr-border-2: rgba(var(--aur-gold-rgb), 0.34);
}

/* ════════════════════════════════════════════════════════════════
   GLOBAL LOADER (2026-06-11) — one thin gilded ring everywhere.
   The plugin's default Loader mounts <div class="geekfp-spinner">
   with an inner RiLoader3Fill that ALSO carries .geekfp-spinner
   (class-trap: guard with .geekfp-rotating). The chunky icon is
   hidden and replaced by a ::after ring, matching the game page's
   gx-spin-ring. Loaded with the vars on EVERY skin context, and
   deliberately unscoped: the loader renders before any container
   mounts (catalog, name, movie, fields, profile, …).
   ════════════════════════════════════════════════════════════════ */
.geekfp-spinner {
	display: flex;
	align-items: center;
	justify-content: center;
	min-height: 220px;
	position: relative;
	color: var(--geekui-accent-2, var(--aur-gold-bright));
}
.geekfp-spinner .geekfp-rotating,
.geekfp-spinner > svg {
	opacity: 0 !important;
	width: 0 !important;
	height: 0 !important;
	font-size: 0 !important;
	position: absolute !important;
	pointer-events: none !important;
}
.geekfp-spinner::after {
	content: '';
	width: 46px;
	height: 46px;
	flex: none;
	border: 2.5px solid rgba(var(--aur-gold-rgb), 0.16);
	border-top-color: var(--aur-gold);
	border-right-color: rgba(var(--aur-gold-bright-rgb), 0.7);
	border-radius: 50%;
	box-shadow: 0 0 18px rgba(var(--aur-gold-rgb), 0.22);
	animation: aur-ring-spin 0.8s linear infinite;
}
@keyframes aur-ring-spin { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) {
	.geekfp-spinner::after { animation-duration: 2.4s; }
}
