/* ==========================================================================
   ZDIEĽANÉ KOMPONENTY

   Sem patrí všetko, čo používa viac ako jedna sekcia. Keď komponent
   ostane v CSS jednej sekcie a použije sa inde, na tej druhej stránke
   sa jeho štýl nenačíta — to je chyba, ktorá sa hľadá ťažko.
   ========================================================================== */

/* ---- Farebné tóny ------------------------------------------------------- */

/*
 * Jedna trieda prefarbí celú položku — ikonu, jej podklad aj číslo.
 * Sekcia sa tak nemusí starať o to, ktorá farba kam patrí.
 */
.cpx-tone--turquoise {
	--cpx-tone: var(--cpx-accent);
	--cpx-tone-soft: var(--cpx-tint-turquoise);
	--cpx-tone-line: var(--cpx-tint-turquoise-line);
}

.cpx-tone--blue {
	--cpx-tone: var(--cpx-data);
	--cpx-tone-soft: var(--cpx-tint-blue);
	--cpx-tone-line: var(--cpx-tint-blue-line);
}

.cpx-tone--emerald {
	--cpx-tone: var(--cpx-positive);
	--cpx-tone-soft: var(--cpx-tint-emerald);
	--cpx-tone-line: var(--cpx-tint-emerald-line);
}

.cpx-tone--coral {
	--cpx-tone: var(--cpx-critical);
	--cpx-tone-soft: var(--cpx-tint-coral);
	--cpx-tone-line: var(--cpx-tint-coral-line);
}

/* ---- Ikony -------------------------------------------------------------- */

.cpx-icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
}

.cpx-icon svg {
	width: 100%;
	height: 100%;
}

/* Ikona v štvorčeku — používajú ju kroky aj styleguide. */
.cpx-icon-badge {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 52px;
	height: 52px;
	border: 1px solid var(--cpx-tone-line, var(--cpx-tint-turquoise-line));
	border-radius: 12px;
	background: var(--cpx-tone-soft, var(--cpx-tint-turquoise));
	color: var(--cpx-tone, var(--cpx-accent));
}

.cpx-icon-badge svg {
	width: 22px;
	height: 22px;
}

/* ---- Zoznam s ikonami --------------------------------------------------- */

.cpx-icon-list {
	display: flex;
	flex-direction: column;
	gap: 1px;
	max-width: 440px;
	margin: 0;
	padding: 0;
	list-style: none;
	overflow: hidden;
	border: 1px solid var(--cpx-border-subtle);
	border-radius: var(--cpx-radius-md);
	background: var(--cpx-border-subtle);
}

.cpx-icon-list__row {
	display: flex;
	align-items: center;
	gap: var(--cpx-space-16);
	padding: 15px var(--cpx-space-20);
	background: var(--cpx-surface-overlay);
	font-size: var(--cpx-fs-body);
	color: var(--cpx-text);
}

.cpx-icon-list__icon {
	flex: 0 0 auto;
	display: inline-flex;
	width: 18px;
	height: 18px;
	color: var(--cpx-tone, var(--cpx-accent));
}

.cpx-icon-list__icon svg {
	width: 100%;
	height: 100%;
}

/* ---- Formulár ----------------------------------------------------------- */

.cpx-form {
	display: flex;
	flex-direction: column;
	gap: var(--cpx-space-12);
}

.cpx-form__label {
	font-family: var(--cpx-font-mono);
	font-size: var(--cpx-fs-eyebrow);
	font-weight: var(--cpx-weight-semibold);
	letter-spacing: var(--cpx-ls-eyebrow);
	text-transform: uppercase;
	color: var(--cpx-text-muted);
}

.cpx-form__input {
	width: 100%;
	padding: 0 var(--cpx-space-16);
	border: 1px solid var(--cpx-border);
	border-radius: var(--cpx-radius-sm);
	background: var(--cpx-surface-inset);
	font-family: var(--cpx-font);
	font-size: var(--cpx-fs-body);
	color: var(--cpx-text-strong);
	appearance: none;
	transition:
		border-color var(--cpx-duration-fast) var(--cpx-ease),
		box-shadow var(--cpx-duration-fast) var(--cpx-ease);
}

input.cpx-form__input {
	height: var(--cpx-control-height);
}

.cpx-form__textarea {
	padding: var(--cpx-space-12) var(--cpx-space-16);
	line-height: 1.55;
	resize: vertical;
}

.cpx-form__input::placeholder {
	color: var(--cpx-text-faint);
}

.cpx-form__input:focus {
	border-color: var(--cpx-accent);
	outline: none;
	box-shadow: 0 0 0 1px var(--cpx-accent);
}

.cpx-form__submit {
	margin-top: var(--cpx-space-4);
}

.cpx-form__note {
	font-size: var(--cpx-fs-caption);
	line-height: var(--cpx-lh-base);
	color: var(--cpx-text-faint);
}

.cpx-form__error {
	padding: var(--cpx-space-12) var(--cpx-space-16);
	border: 1px solid var(--cpx-tint-coral-line);
	border-radius: var(--cpx-radius-sm);
	background: var(--cpx-tint-coral);
	font-size: var(--cpx-fs-small);
	color: var(--cpx-text-strong);
}

/*
 * Honeypot. `hidden` by robot rozpoznal, preto sa pole odsúva mimo
 * obrazovky — pre človeka je neviditeľné, pre robota vyplniteľné.
 */
.cpx-form__trap {
	position: absolute;
	left: -9999px;
	width: 1px;
	height: 1px;
	overflow: hidden;
}

.cpx-form__done-title {
	font-family: var(--cpx-font-display);
	font-size: var(--cpx-fs-h3);
	font-weight: var(--cpx-weight-bold);
	letter-spacing: var(--cpx-ls-h3);
	color: var(--cpx-text-strong);
}

/* ---- Karta príspevku ---------------------------------------------------- */

.cpx-postcard {
	display: flex;
	flex-direction: column;
	gap: var(--cpx-space-12);
	min-width: 0;
	height: 100%;
	padding: var(--cpx-space-20);
	border: 1px solid var(--cpx-border-subtle);
	border-radius: var(--cpx-radius-lg);
	background: var(--cpx-surface-overlay);
	transition: border-color var(--cpx-duration) var(--cpx-ease);
}

.cpx-postcard__media {
	display: block;
	aspect-ratio: 16 / 10;
	overflow: hidden;
	border-radius: var(--cpx-radius-sm);
}

.cpx-postcard__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform var(--cpx-duration-slow) var(--cpx-ease);
}

.cpx-postcard__title {
	font-size: var(--cpx-fs-h3);
	letter-spacing: var(--cpx-ls-h3);
}

.cpx-postcard__excerpt {
	font-size: var(--cpx-fs-body);
	line-height: var(--cpx-lh-loose);
	color: var(--cpx-text-muted);
}

/* `margin-top: auto` drží tlačidlá zarovnané naprieč riadkom aj pri
   rôzne dlhých perexoch. */
.cpx-postcard__cta {
	align-self: flex-start;
	margin-top: auto;
}

@media (hover: hover) {
	.cpx-postcard:hover {
		border-color: var(--cpx-tint-turquoise-line);
	}

	.cpx-postcard:hover .cpx-postcard__media img {
		transform: scale(1.04);
	}
}

/* ---- Mriežka výpisu ----------------------------------------------------- */

.cpx-grid {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
	gap: var(--cpx-space-34);
	margin: 0;
	padding: 0;
	list-style: none;
}

/* ---- Vyhľadávací formulár ----------------------------------------------- */

.cpx-search-form {
	display: flex;
	align-items: stretch;
	gap: var(--cpx-space-12);
	width: 100%;
	max-width: 560px;
}

.cpx-search-form__field {
	flex: 1 1 auto;
	min-width: 0;
}

.cpx-search-form input[type='search'] {
	width: 100%;
	height: var(--cpx-control-height);
	padding-inline: var(--cpx-space-16);
	border: 1px solid var(--cpx-border);
	border-radius: var(--cpx-radius-sm);
	background: var(--cpx-surface-inset);
	font-family: var(--cpx-font);
	font-size: var(--cpx-fs-body);
	color: var(--cpx-text-strong);
	appearance: none;
}

.cpx-search-form input[type='search']::placeholder {
	color: var(--cpx-text-faint);
}

.cpx-search-form input[type='search']:focus {
	border-color: var(--cpx-accent);
	outline: none;
	box-shadow: 0 0 0 1px var(--cpx-accent);
}

.cpx-search-form__submit {
	flex: 0 0 auto;
}

@media (max-width: 560px) {
	.cpx-search-form {
		flex-direction: column;
	}

	.cpx-search-form__submit {
		width: 100%;
	}
}

/* ---- Výpis článkov (bloky jadra) ---------------------------------------- */

/*
 * Šablóny výpisov skladá WordPress zo svojich blokov. Nemajú vlastné
 * triedy témy, preto sa štýlujú tu — a len natoľko, aby zapadli do
 * tmavého podkladu.
 */
.wp-block-query-title {
	margin-bottom: var(--cpx-space-44);
	font-size: var(--cpx-fs-h2);
	letter-spacing: var(--cpx-ls-heading);
}

.wp-block-post-template {
	gap: var(--cpx-space-34);
	margin: 0;
	padding: 0;
	list-style: none;
}

.wp-block-post-template .wp-block-post-title {
	margin-block: var(--cpx-space-12) var(--cpx-space-8);
	font-size: var(--cpx-fs-h3);
	letter-spacing: var(--cpx-ls-h3);
}

.wp-block-post-template .wp-block-post-excerpt {
	font-size: var(--cpx-fs-body);
	line-height: var(--cpx-lh-loose);
	color: var(--cpx-text-muted);
}

.wp-block-post-featured-image img {
	width: 100%;
	border: 1px solid var(--cpx-border-subtle);
	border-radius: var(--cpx-radius-lg);
	object-fit: cover;
}

/* ---- Stránkovanie ------------------------------------------------------- */

.cpx-pagination ul,
.wp-block-query-pagination {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--cpx-space-8);
	margin: var(--cpx-space-44) 0 0;
	padding: 0;
	list-style: none;
}

.cpx-pagination a,
.cpx-pagination span,
.wp-block-query-pagination a,
.wp-block-query-pagination .current {
	display: grid;
	place-items: center;
	min-width: 40px;
	height: 40px;
	padding-inline: var(--cpx-space-8);
	border: 1px solid var(--cpx-border-subtle);
	border-radius: var(--cpx-radius-sm);
	font-size: var(--cpx-fs-body);
	color: var(--cpx-text-muted);
	text-decoration: none;
}

.cpx-pagination .current,
.wp-block-query-pagination .current {
	border-color: var(--cpx-accent);
	background: var(--cpx-accent);
	color: var(--cpx-text-on-accent);
}
