/* AESSENCE — Infinite Thoughts
   Deliberately background-less. The page's own surface shows through. */

.ae-stream {
	--ae-stream-w: 1100px;
	max-width: var(--ae-stream-w);
	margin: 0 auto;
	padding: 0 6vw;
	box-sizing: border-box;
	background: none;
	color: inherit;
}

.ae-stream__items {
	display: block;
}

/* One thought. No card, no border, no background — ever. */
.ae-thought {
	background: none;
	border: 0;
	box-shadow: none;
	border-radius: 0;
	text-wrap: pretty;
	overflow-wrap: break-word;
	hyphens: auto;
	will-change: opacity, transform, filter;
}

.ae-thought p {
	margin: 0 0 0.6em;
	font: inherit;
	color: inherit;
	letter-spacing: inherit;
	line-height: inherit;
}
.ae-thought p:last-child { margin-bottom: 0; }

/* --- entrances: idle state, released by the in-view class --- */
.ae-anim-fade,
.ae-anim-rise,
.ae-anim-drift,
.ae-anim-blur {
	transition:
		opacity 900ms cubic-bezier(.22,.7,.26,1),
		transform 1100ms cubic-bezier(.22,.7,.26,1),
		filter 900ms ease;
}

.ae-anim-fade:not(.is-in)  { opacity: 0 !important; }
.ae-anim-rise:not(.is-in)  { opacity: 0 !important; transform: translateY(38px); }
.ae-anim-drift:not(.is-in) { opacity: 0 !important; transform: translateX(-34px); }
.ae-anim-blur:not(.is-in)  { opacity: 0 !important; filter: blur(14px); }

.ae-anim-rise.is-in,
.ae-anim-drift.is-in { transform: none; }
.ae-anim-blur.is-in  { filter: blur(0); }

/* Rotation is applied inline; keep it through the entrance. */
.ae-thought[style*="rotate"]:not(.is-in) { transform: none; }

.ae-stream__sentinel {
	height: 1px;
	margin-top: 30vh;
}

.ae-stream__empty {
	opacity: .6;
	font-style: italic;
	padding: 4rem 0;
}

@media (prefers-reduced-motion: reduce) {
	.ae-thought {
		transition: none !important;
		filter: none !important;
	}
}

/* Phones: keep the composed whitespace, but stop it from becoming absurd. */
@media (max-width: 640px) {
	.ae-stream { padding: 0 8vw; }
	.ae-thought { max-width: 100% !important; }
}
