/* =========================================================
   utilities.css — helpers
   ========================================================= */

.sr-only,
.as-sr-only {
	position: absolute !important;
	width: 1px; height: 1px;
	padding: 0; margin: -1px;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	white-space: nowrap;
	border: 0;
}

.as-muted { color: var(--c-ink-muted); }
.as-section--dark .as-muted { color: var(--c-paper-muted); }

.as-uppercase {
	text-transform: uppercase;
	letter-spacing: 0.15em;
	font-size: var(--f-label);
	font-weight: 600;
}

.as-italic { font-style: italic; }
.as-display { font-family: var(--f-display); }
.as-tabular { font-variant-numeric: tabular-nums; }

.as-accent { color: var(--c-accent); }

.as-mt-block { margin-top: var(--space-block); }
.as-mb-block { margin-bottom: var(--space-block); }
.as-mt-item  { margin-top: var(--space-item); }
.as-mb-item  { margin-bottom: var(--space-item); }

.as-text-right { text-align: right; }
.as-text-center { text-align: center; }

.as-nowrap { white-space: nowrap; }

.as-reveal { opacity: 0; transition: opacity 0.7s ease-out; }
.as-reveal.is-visible { opacity: 1; }

/* Prevent scroll when mobile menu is open */
.is-menu-open { overflow: hidden; }

/* Reduce motion */
@media (prefers-reduced-motion: reduce) {
	* { transition: none !important; animation: none !important; }
	html { scroll-behavior: auto; }
	.as-reveal { opacity: 1; }
}

/* Body max-width on legal/reader */
.as-narrow { max-width: 880px; margin: 0 auto; }

/* =========================================================
   Editorial photos — ograniczone max-width (editorial approach,
   nie full-bleed). Bez shadow/glow, radius max 4px.
   ========================================================= */

.as-photo {
	display: block;
	width: 100%;
	height: auto;
	border-radius: var(--r-sm);
	background: var(--c-paper-alt);
	object-fit: cover;
}
.as-section--dark .as-photo { background: var(--c-bg-alt); }

.as-photo--landscape { aspect-ratio: 16 / 9; }
.as-photo--square    { aspect-ratio: 1 / 1; }
.as-photo--portrait  { aspect-ratio: 3 / 4; }
.as-photo--banner    { aspect-ratio: 21 / 9; }

/* Hero photo (pod intro) — kompakt, wyrównane do lewej (editorial, nie landing) */
.as-hero-photo {
	margin-top: var(--space-block);
	max-width: 680px;
}
.as-hero-photo img {
	display: block;
	width: 100%;
	height: auto;
	border-radius: var(--r-sm);
	aspect-ratio: 4 / 3;
	object-fit: cover;
}

/* Block photo (events — pod opisem bloku) — jeszcze mniejsze */
.as-block-photo {
	margin-top: var(--space-item);
	max-width: 520px;
}
.as-block-photo img {
	display: block;
	width: 100%;
	height: auto;
	border-radius: var(--r-sm);
	aspect-ratio: 4 / 3;
	object-fit: cover;
}

/* Game section photo — kompakt, wyrównany do lewej */
.as-game-photo {
	max-width: 560px;
}
.as-game-photo img {
	display: block;
	width: 100%;
	height: auto;
	border-radius: var(--r-sm);
	aspect-ratio: 4 / 3;
	object-fit: cover;
}

@media (max-width: 768px) {
	.as-hero-photo,
	.as-block-photo,
	.as-game-photo { max-width: 100%; }
}
