/* =========================================================================
   CSS ZEN GARDEN — "ETHEREAL VOID"
   A drifting, half-remembered dreamscape rendered entirely in CSS.
   Layered nebulae, drifting stardust, gradient auras, glass sanctums,
   and scroll-driven revelations. No HTML was harmed in the making.
   ========================================================================= */

@import url('https://fonts.googleapis.com/css2?family=Cinzel:wght@400;600;700&family=Quicksand:wght@300;400;500;600&display=swap');

:root {
	--void-black:      #05030b;
	--void-deep:       #0a0616;
	--void-panel:      #0f0a1e;

	--aura-violet:     #7c3aed;
	--aura-magenta:    #d946ef;
	--aura-cyan:       #22d3ee;
	--aura-rose:       #fb7185;

	--ink-bright:      #ede9fe;
	--ink-soft:        #c4b5fd;
	--ink-dim:         #8b83a8;

	--glow-1: rgba(124, 58, 237, 0.55);
	--glow-2: rgba(217, 70, 239, 0.40);
	--glow-3: rgba(34, 211, 238, 0.35);

	--ease-void: cubic-bezier(0.16, 1, 0.3, 1);
}

/* -------------------------------------------------------------------------
   Reset + base
   ------------------------------------------------------------------------- */

*, *::before, *::after { box-sizing: border-box; }

html {
	scroll-behavior: smooth;
	background: var(--void-black);
	color-scheme: dark;
}

body#css-zen-garden {
	margin: 0;
	min-height: 100vh;
	font-family: 'Quicksand', 'Segoe UI', system-ui, sans-serif;
	font-weight: 400;
	color: var(--ink-soft);
	background: var(--void-black);
	position: relative;
	overflow-x: hidden;
	line-height: 1.75;
}

/* Starfield — a wash of drifting light, fixed beneath everything */
body#css-zen-garden::before {
	content: "";
	position: fixed;
	inset: -10% -10% -10% -10%;
	z-index: -3;
	pointer-events: none;
	background-image:
		radial-gradient(1.5px 1.5px at 10% 15%, #ffffff 50%, transparent 100%),
		radial-gradient(1px 1px at 25% 60%, #ffffff 50%, transparent 100%),
		radial-gradient(2px 2px at 40% 30%, #c4b5fd 50%, transparent 100%),
		radial-gradient(1px 1px at 60% 80%, #ffffff 50%, transparent 100%),
		radial-gradient(1.5px 1.5px at 75% 20%, #67e8f9 50%, transparent 100%),
		radial-gradient(1px 1px at 85% 55%, #ffffff 50%, transparent 100%),
		radial-gradient(2px 2px at 92% 85%, #f0abfc 50%, transparent 100%),
		radial-gradient(1px 1px at 5% 90%, #ffffff 50%, transparent 100%);
	background-repeat: repeat;
	background-size: 600px 600px;
	animation: drift-stars 220s linear infinite, twinkle 6s ease-in-out infinite alternate;
}

/* Nebula — slow-breathing layered gradients */
body#css-zen-garden::after {
	content: "";
	position: fixed;
	inset: 0;
	z-index: -2;
	pointer-events: none;
	background:
		radial-gradient(ellipse 60% 45% at 15% -5%, var(--glow-1), transparent 60%),
		radial-gradient(ellipse 50% 40% at 90% 10%, var(--glow-2), transparent 65%),
		radial-gradient(ellipse 55% 55% at 50% 105%, var(--glow-3), transparent 60%),
		radial-gradient(ellipse 40% 30% at 75% 70%, rgba(251, 113, 133, 0.18), transparent 70%),
		linear-gradient(180deg, var(--void-black) 0%, var(--void-deep) 45%, var(--void-black) 100%);
	background-repeat: no-repeat;
	animation: breathe-void 18s ease-in-out infinite;
}

@keyframes drift-stars {
	from { background-position: 0 0; }
	to   { background-position: -1200px 800px; }
}

@keyframes twinkle {
	from { opacity: 0.6; }
	to   { opacity: 1; }
}

@keyframes breathe-void {
	0%, 100% { filter: brightness(1) saturate(1); }
	50%      { filter: brightness(1.15) saturate(1.25); }
}

/* Scroll progress rite — a thin filament tracing your descent */
html::before {
	content: "";
	position: fixed;
	top: 0;
	left: 0;
	width: 100%;
	height: 3px;
	z-index: 999;
	transform-origin: 0% 50%;
	transform: scaleX(0);
	background: linear-gradient(90deg, var(--aura-violet), var(--aura-magenta), var(--aura-cyan));
	box-shadow: 0 0 12px var(--glow-2), 0 0 24px var(--glow-3);
	pointer-events: none;
}

@supports (animation-timeline: scroll()) {
	html::before {
		animation: scroll-rite linear both;
		animation-timeline: scroll(root);
	}
}

@keyframes scroll-rite {
	from { transform: scaleX(0); }
	to   { transform: scaleX(1); }
}

::selection {
	background: var(--aura-magenta);
	color: var(--void-black);
	text-shadow: none;
}

/* Webkit void scrollbar */
::-webkit-scrollbar { width: 12px; }
::-webkit-scrollbar-track { background: var(--void-black); }
::-webkit-scrollbar-thumb {
	background: linear-gradient(180deg, var(--aura-violet), var(--aura-magenta));
	border-radius: 999px;
	border: 3px solid var(--void-black);
}

/* -------------------------------------------------------------------------
   Layout
   ------------------------------------------------------------------------- */

.page-wrapper {
	position: relative;
	z-index: 1;
	display: grid;
	grid-template-columns: minmax(0, 1fr) 320px;
	grid-template-areas:
		"intro   intro"
		"main    sidebar";
	gap: 3rem;
	max-width: 1400px;
	margin: 0 auto;
	padding: 4rem 2rem 6rem;
}

.intro    { grid-area: intro; }
.main.supporting { grid-area: main; min-width: 0; }
.sidebar  { grid-area: sidebar; }

@media (max-width: 960px) {
	.page-wrapper {
		grid-template-columns: 1fr;
		grid-template-areas:
			"intro"
			"main"
			"sidebar";
		padding: 2.5rem 1.25rem 4rem;
	}
}

/* -------------------------------------------------------------------------
   Intro / Header — the portal
   ------------------------------------------------------------------------- */

.intro header {
	position: relative;
	text-align: center;
	padding: 5rem 1rem 3rem;
	overflow: visible;
}

.intro header::before {
	content: "";
	position: absolute;
	top: 45%;
	left: 50%;
	width: min(700px, 90vw);
	height: min(700px, 90vw);
	background: conic-gradient(from 0deg, var(--aura-violet), var(--aura-magenta), var(--aura-cyan), var(--aura-rose), var(--aura-violet));
	clip-path: circle(50% at 50% 50%);
	filter: blur(90px);
	opacity: 0.32;
	transform: translate(-50%, -50%) rotate(0deg);
	animation: void-spin 40s linear infinite;
	z-index: -1;
}

.intro header::after {
	content: "";
	position: absolute;
	top: 45%;
	left: 50%;
	width: min(420px, 60vw);
	height: min(420px, 60vw);
	transform: translate(-50%, -50%);
	border: 1px solid rgba(196, 181, 253, 0.25);
	clip-path: polygon(50% 0%, 100% 25%, 100% 75%, 50% 100%, 0% 75%, 0% 25%);
	animation: void-spin 26s linear infinite reverse;
	z-index: -1;
}

@keyframes void-spin {
	to { transform: translate(-50%, -50%) rotate(360deg); }
}

h1 {
	margin: 0;
	font-family: 'Cinzel', serif;
	font-weight: 700;
	font-size: clamp(2.6rem, 6vw, 5rem);
	letter-spacing: 0.04em;
	background: linear-gradient(100deg, var(--ink-soft), var(--aura-magenta) 35%, var(--aura-cyan) 65%, var(--ink-soft));
	background-size: 300% 100%;
	-webkit-background-clip: text;
	background-clip: text;
	color: transparent;
	animation: aurora-flow 9s ease-in-out infinite;
	filter: drop-shadow(0 0 30px rgba(217, 70, 239, 0.35));
}

@keyframes aurora-flow {
	0%, 100% { background-position: 0% 50%; }
	50%      { background-position: 100% 50%; }
}

h2 {
	margin: 0.75rem 0 0;
	font-family: 'Cinzel', serif;
	font-weight: 400;
	font-size: clamp(1rem, 2vw, 1.35rem);
	letter-spacing: 0.15em;
	text-transform: uppercase;
	color: var(--ink-dim);
}

h2 abbr {
	color: var(--aura-cyan);
}

/* -------------------------------------------------------------------------
   Glass sanctums — shared card treatment
   ------------------------------------------------------------------------- */

.summary, .preamble, .explanation, .participation, .benefits, .requirements {
	position: relative;
	max-width: 680px;
	margin: 0 auto 2.75rem;
	padding: 2.25rem 2.5rem;
	border-radius: 1.5rem;
	background: linear-gradient(160deg, rgba(45, 27, 78, 0.45), rgba(10, 6, 20, 0.6));
	-webkit-backdrop-filter: blur(16px) saturate(160%);
	backdrop-filter: blur(16px) saturate(160%);
	box-shadow:
		0 30px 60px -25px rgba(88, 28, 135, 0.55),
		0 0 40px -18px var(--glow-3),
		0 0 0 1px rgba(255, 255, 255, 0.03) inset;
	transition: transform 0.5s var(--ease-void), box-shadow 0.5s var(--ease-void);
}

.summary::before, .preamble::before, .explanation::before,
.participation::before, .benefits::before, .requirements::before {
	content: "";
	position: absolute;
	inset: -1px;
	border-radius: inherit;
	padding: 1px;
	background: linear-gradient(135deg, var(--aura-violet), var(--aura-magenta) 50%, var(--aura-cyan));
	-webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
	-webkit-mask-composite: xor;
	mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
	mask-composite: exclude;
	opacity: 0.55;
	pointer-events: none;
}

.summary:hover, .preamble:hover, .explanation:hover,
.participation:hover, .benefits:hover, .requirements:hover {
	transform: translateY(-4px);
	box-shadow:
		0 40px 70px -25px rgba(124, 58, 237, 0.6),
		0 0 55px -12px var(--glow-2),
		0 0 0 1px rgba(255, 255, 255, 0.05) inset;
}

.summary p, .preamble p, .explanation p, .participation p, .benefits p, .requirements p {
	margin: 0 0 1.1em;
	color: var(--ink-soft);
}
.summary p:last-child, .preamble p:last-child, .explanation p:last-child,
.participation p:last-child, .benefits p:last-child, .requirements p:last-child {
	margin-bottom: 0;
}

.summary a, .preamble a, .explanation a, .participation a, .benefits a, .requirements a {
	color: var(--aura-cyan);
	text-decoration: none;
	background-image: linear-gradient(var(--aura-cyan), var(--aura-cyan));
	background-repeat: no-repeat;
	background-position: 0 100%;
	background-size: 0% 1px;
	transition: background-size 0.35s var(--ease-void), color 0.35s;
}
.summary a:hover, .preamble a:hover, .explanation a:hover,
.participation a:hover, .benefits a:hover, .requirements a:hover {
	color: var(--aura-magenta);
	background-size: 100% 1px;
}

h3 {
	position: relative;
	margin: 0 0 1rem;
	padding-left: 1.6rem;
	font-family: 'Cinzel', serif;
	font-weight: 600;
	font-size: 1.3rem;
	letter-spacing: 0.03em;
	color: var(--ink-bright);
}

h3::before {
	content: "";
	position: absolute;
	left: 0;
	top: 0.35em;
	width: 0.7em;
	height: 0.7em;
	background: linear-gradient(135deg, var(--aura-magenta), var(--aura-cyan));
	transform: rotate(45deg);
	box-shadow: 0 0 12px var(--glow-2);
	animation: sigil-pulse 3.4s ease-in-out infinite;
}

@keyframes sigil-pulse {
	0%, 100% { opacity: 0.6; transform: rotate(45deg) scale(0.85); }
	50%      { opacity: 1;   transform: rotate(225deg) scale(1.05); }
}

/* Scroll-driven revelation — sections surface as you descend */
@supports (animation-timeline: view()) {
	.summary, .preamble, .explanation, .participation, .benefits, .requirements {
		animation: reveal-from-void linear both;
		animation-timeline: view();
		animation-range: entry 0% cover 30%;
	}
}

@keyframes reveal-from-void {
	from {
		opacity: 0;
		transform: translateY(48px) scale(0.96);
		filter: blur(8px);
	}
	to {
		opacity: 1;
		transform: translateY(0) scale(1);
		filter: blur(0);
	}
}

/* -------------------------------------------------------------------------
   Footer — rites of validation
   ------------------------------------------------------------------------- */

.main.supporting footer {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: 1rem;
	margin-top: 3rem;
	padding-top: 2.5rem;
	border-top: 1px solid rgba(196, 181, 253, 0.12);
}

.main.supporting footer a {
	position: relative;
	display: inline-flex;
	align-items: center;
	gap: 0.5em;
	padding: 0.6em 1.3em;
	font-size: 0.85rem;
	letter-spacing: 0.04em;
	color: var(--ink-bright);
	text-decoration: none;
	border-radius: 999px;
	background: rgba(124, 58, 237, 0.12);
	border: 1px solid rgba(196, 181, 253, 0.2);
	box-shadow: 0 0 0 rgba(217, 70, 239, 0);
	transition: transform 0.4s var(--ease-void), box-shadow 0.4s var(--ease-void), background 0.4s;
}

.main.supporting footer a::before {
	font-size: 1rem;
	filter: drop-shadow(0 0 4px currentColor);
}

.zen-validate-html::before { content: "\29C8"; }
.zen-validate-css::before  { content: "\2756"; }
.zen-license::before       { content: "\24B8"; }
.zen-accessibility::before { content: "\26BF"; }
.zen-github::before        { content: "\2318"; }

.main.supporting footer a:hover {
	transform: translateY(-3px);
	background: rgba(217, 70, 239, 0.18);
	box-shadow: 0 10px 30px -8px var(--glow-2), 0 0 20px -4px var(--glow-3);
}

/* -------------------------------------------------------------------------
   Sidebar — the archive
   ------------------------------------------------------------------------- */

.sidebar {
	position: relative;
	align-self: start;
}

@media (min-width: 961px) {
	.sidebar { position: sticky; top: 2rem; }
}

.sidebar .wrapper {
	position: relative;
	padding: 2rem;
	border-radius: 1.5rem;
	background: linear-gradient(180deg, rgba(15, 10, 30, 0.7), rgba(5, 3, 11, 0.85));
	border: 1px solid rgba(196, 181, 253, 0.12);
	box-shadow:
		0 25px 50px -20px rgba(0, 0, 0, 0.6),
		0 0 40px -15px var(--glow-1) inset;
}

.sidebar h3 {
	font-size: 1rem;
	text-transform: uppercase;
	letter-spacing: 0.12em;
	color: var(--ink-dim);
}

.sidebar nav ul, .zen-resources ul {
	list-style: none;
	margin: 0 0 2rem;
	padding: 0;
}

.sidebar nav ul:last-child, .zen-resources ul { margin-bottom: 0; }

.sidebar nav ul li, .zen-resources ul li {
	position: relative;
	padding: 0.6em 0 0.6em 1em;
	border-left: 2px solid rgba(196, 181, 253, 0.15);
	transition: border-color 0.35s, transform 0.35s var(--ease-void);
}

.sidebar nav ul li:hover, .zen-resources ul li:hover {
	border-left-color: var(--aura-cyan);
	transform: translateX(4px);
}

.sidebar nav ul li::before, .zen-resources ul li::before {
	content: "";
	position: absolute;
	left: -4px;
	top: 1.15em;
	width: 6px;
	height: 6px;
	border-radius: 50%;
	background: var(--aura-magenta);
	box-shadow: 0 0 8px var(--glow-2);
	opacity: 0;
	transform: scale(0.5);
	transition: opacity 0.35s, transform 0.35s var(--ease-void);
}

.sidebar nav ul li:hover::before, .zen-resources ul li:hover::before {
	opacity: 1;
	transform: scale(1);
}

.design-name {
	display: block;
	font-family: 'Cinzel', serif;
	font-size: 1rem;
	color: var(--ink-bright);
	text-decoration: none;
}

.designer-name {
	display: block;
	font-size: 0.82rem;
	color: var(--ink-dim);
	text-decoration: none;
}

.design-name:hover, .designer-name:hover, .zen-resources a:hover {
	color: var(--aura-cyan);
}

.zen-resources a {
	color: var(--ink-soft);
	text-decoration: none;
	font-size: 0.9rem;
}

.design-archives .indicator {
	display: inline-block;
	margin-left: 0.25em;
	transition: transform 0.35s var(--ease-void);
}

.design-archives .next a:hover .indicator {
	transform: translateX(4px);
}

.design-archives .viewall a {
	color: var(--ink-soft);
	text-decoration: none;
	font-size: 0.9rem;
}

/* -------------------------------------------------------------------------
   Floating relics — the six presentational orbs, reborn
   ------------------------------------------------------------------------- */

.extra1, .extra2, .extra3, .extra4, .extra5, .extra6 {
	position: fixed;
	border-radius: 50%;
	pointer-events: none;
	z-index: -1;
	filter: blur(2px);
	mix-blend-mode: screen;
}

.extra1 {
	top: 8%; left: 4%;
	width: 220px; height: 220px;
	background: radial-gradient(circle, var(--glow-1), transparent 70%);
	animation: float-orb 16s ease-in-out infinite;
}
.extra2 {
	top: 60%; left: 2%;
	width: 160px; height: 160px;
	background: radial-gradient(circle, var(--glow-3), transparent 70%);
	animation: float-orb 20s ease-in-out infinite reverse;
}
.extra3 {
	top: 20%; right: 6%;
	width: 260px; height: 260px;
	background: radial-gradient(circle, var(--glow-2), transparent 70%);
	animation: float-orb 24s ease-in-out infinite;
}
.extra4 {
	bottom: 10%; right: 8%;
	width: 180px; height: 180px;
	background: radial-gradient(circle, rgba(251, 113, 133, 0.35), transparent 70%);
	animation: float-orb 18s ease-in-out infinite reverse;
}
.extra5 {
	bottom: 4%; left: 40%;
	width: 140px; height: 140px;
	background: radial-gradient(circle, var(--glow-1), transparent 70%);
	animation: float-orb 22s ease-in-out infinite;
}
.extra6 {
	top: 42%; left: 50%;
	width: 320px; height: 320px;
	background: radial-gradient(circle, var(--glow-3), transparent 75%);
	opacity: 0.5;
	animation: float-orb 30s ease-in-out infinite reverse;
}

@keyframes float-orb {
	0%, 100% { transform: translate(0, 0) scale(1); }
	33%      { transform: translate(30px, -40px) scale(1.08); }
	66%      { transform: translate(-25px, 25px) scale(0.94); }
}

/* -------------------------------------------------------------------------
   Motion respect
   ------------------------------------------------------------------------- */

@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;
	}
}
