/* ==========================================================================
   DETAIL HRY

   Musí pôsobiť ako magazín, nie ako databáza. Preto je na prvom mieste
   obsah (novinky, video, galéria) a tabuľka s parametrami je malá a vpravo.
   ========================================================================== */

.sq-gamehero {
	position: relative;
}

/* Priamy potomok — inak by pravidlo prebilo aj pomer strán obalu hry. */
.sq-gamehero > .sq-media {
	aspect-ratio: 21 / 9;
	border-radius: 0;
}

.sq-gamehero__inner {
	position: absolute;
	inset: auto 0 0 0;
	z-index: 2;
	padding-bottom: var(--sq-space-32);
}

.sq-gamehero__grid {
	display: grid;
	grid-template-columns: 160px 1fr;
	gap: var(--sq-space-32);
	align-items: end;
}

.sq-gamehero__cover {
	display: block;
	position: relative;
	border: 1px solid var(--sq-border-strong);
	/* Obal vystupuje z fotky — je to jediný prvok, ktorý smie prekročiť
	   spodnú hranu hero obrázka. */
	margin-bottom: calc(-1 * var(--sq-space-32));
}

.sq-gamehero__cover .sq-media {
	aspect-ratio: 3 / 4;
	border-radius: 0;
}

.sq-gamehero__body {
	display: flex;
	flex-direction: column;
	gap: var(--sq-space-12);
	padding-bottom: var(--sq-space-8);
}

.sq-gamehero__title {
	font-size: var(--sq-fs-display);
	line-height: 0.95;
	letter-spacing: var(--sq-track-display);
}

.sq-gamehero__studio {
	font-size: var(--sq-fs-lead);
	color: var(--sq-text-secondary);
}

.sq-gamehero__facts {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: var(--sq-space-16);
}

.sq-gamehero__date {
	font-family: var(--sq-font-display);
	font-size: var(--sq-fs-ui);
	font-weight: var(--sq-weight-bold);
	letter-spacing: 0.02em;
	color: var(--sq-accent);
	font-variant-numeric: tabular-nums;
}

.sq-gamehero__actions {
	display: flex;
	align-items: center;
	gap: var(--sq-space-12);
	margin-top: var(--sq-space-4);
}

.sq-gamehero__followers {
	font-size: var(--sq-fs-small);
	color: var(--sq-text-tertiary);
	font-variant-numeric: tabular-nums;
}

/* Priestor pod hero, aby obal nekolidoval s prvou sekciou. */
.sq-game__spacer {
	height: var(--sq-space-48);
}

/* ---- O hre + info ------------------------------------------------------- */

.sq-game__about {
	display: grid;
	grid-template-columns: minmax(0, 8fr) minmax(0, 4fr);
	gap: var(--sq-space-48);
	align-items: start;
}

.sq-game__text > * + * {
	margin-top: var(--sq-space-16);
}

.sq-game__text p {
	font-size: var(--sq-fs-base);
	line-height: var(--sq-lh-body);
	color: #dfe2e6;
}

/* ---- Trailery a galéria ------------------------------------------------- */

.sq-game__trailers {
	grid-template-columns: repeat(3, 1fr);
}

.sq-gallery {
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	gap: var(--sq-space-12);
}

.sq-gallery__item {
	aspect-ratio: 16 / 9;
}

/* Prvý záber je väčší — galéria tak nepôsobí ako kontaktný list. */
.sq-gallery__item--large {
	grid-column: span 2;
	grid-row: span 2;
	aspect-ratio: auto;
}

/* ---- Timeline ----------------------------------------------------------- */

/*
 * Timeline je to, čo robí zo stránky hry magazín — je to príbeh hry
 * v čase, nie zoznam atribútov.
 */
.sq-timeline {
	position: relative;
	padding-left: var(--sq-space-32);
}

.sq-timeline::before {
	content: "";
	position: absolute;
	left: 3px;
	top: 6px;
	bottom: 6px;
	width: 1px;
	background: var(--sq-border);
}

.sq-timeline__item {
	position: relative;
	display: grid;
	grid-template-columns: 120px 1fr;
	gap: var(--sq-space-24);
	padding-block: var(--sq-space-16);
}

.sq-timeline__item::before {
	content: "";
	position: absolute;
	left: calc(-1 * var(--sq-space-32));
	top: calc(var(--sq-space-16) + 7px);
	width: 7px;
	height: 7px;
	background: var(--sq-elevated-2);
	border-radius: 50%;
}

.sq-timeline__item--future::before {
	background: var(--sq-accent);
}

.sq-timeline__date {
	font-family: var(--sq-font-display);
	font-size: var(--sq-fs-small);
	font-weight: var(--sq-weight-bold);
	letter-spacing: 0.04em;
	text-transform: uppercase;
	color: var(--sq-text-tertiary);
	font-variant-numeric: tabular-nums;
}

.sq-timeline__item--future .sq-timeline__date {
	color: var(--sq-accent);
}

.sq-timeline__title {
	font-size: var(--sq-fs-base);
	font-weight: var(--sq-weight-medium);
	letter-spacing: var(--sq-track-card);
}

/* ---- Banner recenzie ---------------------------------------------------- */

.sq-reviewbanner {
	position: relative;
	display: grid;
	grid-template-columns: minmax(0, 5fr) minmax(0, 7fr);
	align-items: stretch;
	border: 1px solid var(--sq-border);
	border-radius: var(--sq-radius);
	overflow: hidden;
	background: var(--sq-elevated);
}

.sq-reviewbanner .sq-media {
	border-radius: 0;
	height: 100%;
}

.sq-reviewbanner__body {
	display: flex;
	flex-direction: column;
	justify-content: center;
	gap: var(--sq-space-12);
	padding: var(--sq-space-32);
}

.sq-reviewbanner__score {
	display: flex;
	align-items: baseline;
	gap: var(--sq-space-12);
	font-family: var(--sq-font-display);
}

.sq-reviewbanner__score b {
	font-size: 56px;
	font-weight: var(--sq-weight-bold);
	line-height: 1;
	letter-spacing: -0.04em;
	color: var(--sq-accent);
	font-variant-numeric: tabular-nums;
}

.sq-reviewbanner__score span {
	font-size: var(--sq-fs-micro);
	font-weight: var(--sq-weight-bold);
	letter-spacing: var(--sq-track-eyebrow);
	text-transform: uppercase;
	color: var(--sq-text-secondary);
}

.sq-reviewbanner__title {
	font-size: var(--sq-fs-heading);
	letter-spacing: var(--sq-track-heading);
}

@media (max-width: 1023px) {
	.sq-game__about {
		grid-template-columns: 1fr;
		gap: var(--sq-space-32);
	}
}

@media (max-width: 767px) {
	.sq-gamehero > .sq-media {
		aspect-ratio: 4 / 5;
	}

	.sq-gamehero__grid {
		grid-template-columns: 96px 1fr;
		gap: var(--sq-space-16);
	}

	.sq-gamehero__cover {
		margin-bottom: 0;
	}

	.sq-gallery {
		grid-template-columns: repeat(2, 1fr);
	}

	.sq-gallery__item--large {
		grid-column: span 2;
		grid-row: auto;
		aspect-ratio: 16 / 9;
	}

	.sq-timeline__item {
		grid-template-columns: 1fr;
		gap: var(--sq-space-4);
	}

	.sq-reviewbanner {
		grid-template-columns: 1fr;
	}

	.sq-reviewbanner .sq-media {
		aspect-ratio: 16 / 9;
	}

	.sq-reviewbanner__body {
		padding: var(--sq-space-24);
	}
}
