/**
 * Pixeler Shop Theme — základné štýly rámca a fallback obsahových šablón.
 *
 * Povrchy (archív, produkt, úvodka, účet, hlavička) majú vlastné CSS
 * zo site pluginu — tu je len to, čo potrebujú stránky, ktoré
 * (zatiaľ) nerieši ani Elementor, ani plugin: blog, obsahové stránky, 404.
 * Všetky tokeny --pc-* sú definované tu, na :root (jediné miesto).
 */

/* Defaultné tokeny na :root — dedia ich aj plochy, ktoré stoja mimo
   .pc-scope (filter drawer, sticky lišta; oboje position: fixed).
   Child téma prepíše tieto premenné a preladí tým celý web. */
:root {
	--pc-paper: 255 255 255;
	--pc-card: 255 255 255;
	--pc-ink: 10 31 51;
	--pc-accent: 17 104 155;
	--pc-accent-deep: 13 82 122;
	--pc-soft: 244 246 247;
	--pc-line: 224 230 237;
	--pc-muted: 84 98 115;
	--pc-secondary: 220 38 38;
	/* Hlbší stupeň sekundárnej: text na jej vlastnom tónovanom podklade
	   (pás platnosti akcie). Základná má na 9 % tinte len 4,2:1, táto 5,6:1. */
	--pc-secondary-deep: 185 28 28;

	/* Svetlejší stupeň akcentu — na tmavé plochy (topbar, tmavé pásy,
	   odznaky). Parent ho používa len v hlavičke a tam ho aj definoval
	   (`.px-header`), lenže child témy po ňom siahajú aj mimo nej — až
	   doteraz musela každá z nich token na `:root` sama zakladat. Default
	   patrí sem: child prepíše hodnotu, nezakláda premennú. */
	--pc-accent-bright: 69 201 245;

	/* Fokusový prstenec — jedna farba pre celú tému. Kontrast potrebuje
	   voči PODKLADU, na ktorom leží (WCAG 1.4.11), preto najtmavší stupeň
	   palety, nie svetlý akcent: child s jantarovým `--pc-accent-bright`
	   (libike #FFC02E, drogea #FBBC34) má na bielej 1,6:1 a prstenec z neho
	   by nahradil natívny neviditeľným.

	   Na tmavom podklade si povrch token prepíše (`--pc-focus:
	   var(--pc-accent-bright)` a pod.) — mení sa hodnota, nie pravidlá. */
	--pc-focus: var(--pc-accent-deep);

	/* Šírka obsahu — jedna hodnota pre hlavičku, pätičku, archív, detail,
	   účet aj obsahové stránky. Doteraz bola zapísaná v ôsmich súboroch,
	   takže child ju musel prebíjať zoznamom selektorov. */
	--pc-container: 90rem;

	/* Zapustená plocha — na prvky, ktoré majú pôsobiť ako vybraté z podkladu:
	   pás s omrvinkami a okrúhle tlačidlá v hlavičke. Sú to dve rovnaké
	   plochy, tak nech majú jednu hodnotu; dovtedy jedna siahala po
	   --pc-soft a druhá po --pc-line, teda po farbe určenej na linky.

	   Hodnota leží medzi nimi, bližšie k --pc-soft: tmavšia (na úrovni
	   --pc-line) robila z omrviniek ťažký pruh cez celú šírku. Odlíšenie od
	   bielej stačí naznačiť — pri tlačidlách ho drží aj ich tvar. */
	--pc-sunk: 238 242 246;

	/* Polomery — jedna stupnica pre celú tému. Nové pravidlá siahajú po nej,
	   nie po konkrétnych hodnotách; child ju preladí jedným miestom.
	     xs  drobnosti (čipy, fokus rámik)
	     sm  náhľady, malé karty, vnorené boxy, kompaktné ovládače
	     —   karty, panely, polia (predvolený)
	     lg  veľké plochy (modálne okná, panely)
	     xl  hero a obrazové bloky
	     pill  tlačidlá a pilulky */
	--pc-radius-xs: 0.35rem;
	--pc-radius-sm: 0.5rem;
	--pc-radius: 0.75rem;
	--pc-radius-lg: 1rem;
	--pc-radius-xl: 1.5rem;
	--pc-radius-pill: 9999px;

	/* Sémantické aliasy — pravidlá témy ich používajú dlhšie než stupnicu.
	   Pole nie je tlačidlo: pilulka sa hodí na `Do košíka`, nie na textarea. */
	--pc-radius-control: var(--pc-radius-pill);
	--pc-radius-field: var(--pc-radius);

	/* Dostupnosť je sémantika, nie brand — zákazník číta farbu skôr než text,
	   takže ostáva zelená/oranžová/červená bez ohľadu na akcent témy (child
	   s červeným brandom by inak vypísal „Skladom" červeno). Child ladí
	   nanajvýš odtieň, nikdy význam. Každá má s bielou aspoň 4.5:1
	   (WCAG 1.4.3), takže znesie aj samotný text, nielen bodku. */
	--pc-stock-in: 21 128 61;    /* #15803D */
	--pc-stock-order: 168 76 8;  /* #A84C08 — na 8 % tinte 5,1:1; #B45309 dával 4,49 a axe ho zamietal */
	--pc-stock-out: 185 28 28;   /* #B91C1C */

	/* Hlavička — ikony v okrúhlych tlačidlách a text tmavého topbaru.
	   Doteraz ich zakladal `.px-header`; sú tu, aby ich child prepisoval
	   na jednom mieste ako ostatné tokeny. */
	--pc-sage: 137 160 184;        /* #89A0B8 */
	--pc-topbar-text: 135 148 163; /* #8794A3 */

	/* Medzera mriežky produktov (archív, slidery); od 640 px 15 px nižšie. */
	--pc-grid-gap: 0.75rem;

	/* Text na farebnom podklade. `--pc-on-accent` stojí na `--pc-accent`
	   a `--pc-accent-deep` (tlačidlá, odznaky počtu, aktívna stránka) —
	   child so svetlým akcentom prepne len túto hodnotu na tmavú namiesto
	   stmavovania brandu. `--pc-on-secondary` to isté pre akciové odznaky.
	   Text na tmavej `--pc-ink` ploche je `--pc-paper` (inverzia). */
	--pc-on-accent: 255 255 255;
	--pc-on-secondary: 255 255 255;

	/* Stavové farby — hlásenia, chyby polí, stavy reklamácií. Sémantika,
	   nie brand; child ladí nanajvýš odtieň.
	     základná  text na bielej (každá ≥ 4.5:1) a výplň ikon
	     -tint     svetlé pozadie hlásenia / stavu
	     -line     rám hlásenia
	     -ink      text na -tint
	   `--pc-danger` má na vlastnej tinte len 4,4:1 — text na tinte je
	   `--pc-danger-ink`. */
	--pc-success: 4 120 87;          /* #047857 — 5,5:1 */
	--pc-success-tint: 236 253 245;  /* #ECFDF5 */
	--pc-success-line: 167 243 208;  /* #A7F3D0 */
	--pc-success-ink: 2 44 34;       /* #022C22 */
	--pc-danger: 220 38 38;          /* #DC2626 — 4,8:1 */
	--pc-danger-tint: 254 242 242;   /* #FEF2F2 */
	--pc-danger-line: 254 202 202;   /* #FECACA */
	--pc-danger-ink: 69 10 10;       /* #450A0A */
	--pc-warning: 180 83 9;          /* #B45309 — 5,0:1, na tinte 4,8:1 */
	--pc-warning-tint: 255 251 235;  /* #FFFBEB */
	--pc-info: 29 78 216;            /* #1D4ED8 — 6,7:1 */
	--pc-info-tint: 239 246 255;     /* #EFF6FF */

	/* Rám formulárového poľa — hranica, podľa ktorej človek pole spozná,
	   potrebuje 3:1 voči podkladu (WCAG 1.4.11). `--pc-line` má 1,26:1
	   a ostáva na deliace čiary. #828E9C dáva 3,3:1 na bielej a 3,1:1 na
	   `--pc-soft`; child s teplou paletou si odtieň doladí (drž 3:1). */
	--pc-field-border: 130 142 156;

	/* Typografia — stupnica z hodnôt, ktoré téma reálne používa
	   (0.875rem 106×, 0.8125rem 59×, 0.75rem 42×, 0.9375rem 40×).
	   Nadpisy s clamp() ostávajú vlastné. */
	--pc-fs-3xs: 0.6875rem;  /* 11 px */
	--pc-fs-2xs: 0.75rem;    /* 12 px */
	--pc-fs-xs: 0.8125rem;   /* 13 px */
	--pc-fs-sm: 0.875rem;    /* 14 px */
	--pc-fs-md: 0.9375rem;   /* 15 px */
	--pc-fs-base: 1rem;      /* 16 px — aj minimum poľa na dotyku */
	--pc-fs-lg: 1.125rem;    /* 18 px */
	--pc-fs-xl: 1.25rem;     /* 20 px */
	--pc-fs-2xl: 1.375rem;   /* 22 px */
	--pc-fs-3xl: 1.5rem;     /* 24 px */
	--pc-fs-4xl: 1.75rem;    /* 28 px */

	/* Rozostupy — číslo = počet štvrtín rem. Jemné medzikroky
	   (0.375, 0.625, 0.875rem…) ostávajú mimo stupnice. */
	--pc-space-1: 0.25rem;
	--pc-space-2: 0.5rem;
	--pc-space-3: 0.75rem;
	--pc-space-4: 1rem;
	--pc-space-5: 1.25rem;
	--pc-space-6: 1.5rem;
	--pc-space-7: 1.75rem;
	--pc-space-8: 2rem;
	--pc-space-10: 2.5rem;
	--pc-space-12: 3rem;
	--pc-space-16: 4rem;

	/* Tiene — tónované textovou farbou, nie čiernou. */
	--pc-shadow-xs: 0 1px 3px rgb(var(--pc-ink) / 0.2);               /* úchop posuvníka */
	--pc-shadow-sm: 0 1px 4px rgb(var(--pc-ink) / 0.1);               /* plávajúce ikonové tlačidlá */
	--pc-shadow-md: 0 6px 16px -8px rgb(var(--pc-ink) / 0.18);        /* hover malej karty */
	--pc-shadow-lg: 0 10px 24px -14px rgb(var(--pc-ink) / 0.28);      /* hover dlaždice a karty */
	--pc-shadow-xl: 0 25px 50px -12px rgb(var(--pc-ink) / 0.2);       /* vysúvací panel */
	--pc-shadow-dropdown: 0 12px 30px -12px rgb(var(--pc-ink) / 0.3); /* rozbaľovací zoznam */
	--pc-shadow-popover: 0 0.125rem 0.5rem rgb(var(--pc-ink) / 0.1), 0 1.5rem 2.5rem -0.5rem rgb(var(--pc-ink) / 0.28); /* mega menu */

	/* Vrstvy (z-index) — jeden zoznam pre celý web. Lokálne 1–6 (vnútri
	   karty, bannera) sem nepatria.
	     dropdown  mega menu (vnútri sticky hlavičky)
	     sticky    sticky lišta Do košíka
	     header    sticky hlavička (pás obmedzeného režimu ±1)
	     overlay   backdrop panelov hlavičky
	     popover   panel vyhľadávania a jeho výsledky
	     drawer    mobilné menu, mini-košík, filter
	     toast     skip link, hlásenia
	     modal     blokujúci dialóg */
	--pc-z-dropdown: 10;
	--pc-z-sticky: 90;
	--pc-z-header: 990;
	--pc-z-overlay: 1000;
	--pc-z-popover: 1010;
	--pc-z-drawer: 1020;
	--pc-z-toast: 2000;
	--pc-z-modal: 10000;
}

@media (min-width: 640px) {
	:root {
		--pc-grid-gap: 15px;
	}
}

/* Tokeny sú len na :root — `.pc-scope`, `.px-header` ani `.pc-filters` ich
   neredeklarujú, takže child ich prepíše jedným miestom (`:root`). */
.pc-scope {
	color: rgb(var(--pc-ink));
}

/* Scope rooty: pravidlá `.pc-scope *` (archive.css, header.css, …) pokrývajú
   len potomkov — samotný kontajner by zostal content-box, padding by ho
   rozšíril o 2×2rem nad 90rem a obsah by sa nezarovnal s hlavičkou. */
.pc-scope,
.pc-container,
.px-theme-content,
.px-page-header__inner,
.px-page-title__inner {
	box-sizing: border-box;
}

/* =========================================================================
   ZÁKLAD ELEMENTOV — typografia bez tried

   Rovnaký princíp ako pri poliach nižšie: všetko v `:where()`, čiže so
   **špecificitou 0**. Ktorékoľvek pravidlo s triedou (`.px-page-title__heading`,
   `.px-theme-prose :where(h2)`, `.pc-single__title`…) toto prebije, takže sa
   tým nemení nič, čo je už nastavené — len prestáva byť holý text z pluginu
   vysádzaný prehliadačom.

   Veľkosti zodpovedajú tomu, čo téma používa (H1 ako `.px-theme-content h1`,
   H2/H3 ako prose v page.css), nech je prechod bezo skoku.
   ========================================================================= */

:where(h1, h2, h3, h4, h5, h6) {
	margin: 0 0 0.5em;
	font-weight: 700;
	line-height: 1.25;
	color: rgb(var(--pc-ink));
	text-wrap: balance;
}

:where(h1) { font-size: var(--pc-fs-4xl); }
:where(h2) { font-size: var(--pc-fs-2xl); }
:where(h3) { font-size: var(--pc-fs-lg); }
:where(h4) { font-size: var(--pc-fs-base); }
:where(h5, h6) { font-size: var(--pc-fs-md); }

/* Odstavce stohujeme nadol — horný okraj z UA štýlov sa sčítaval s dolným
   okrajom predchádzajúceho bloku a rytmus bol zakaždým iný. */
:where(p) { margin: 0 0 var(--pc-space-4); }

:where(a) {
	color: rgb(var(--pc-accent-deep));
	text-underline-offset: 0.2em;
}

:where(img) {
	max-width: 100%;
	height: auto;
}

:where(hr) {
	margin: var(--pc-space-8) 0;
	border: 0;
	border-top: 1px solid rgb(var(--pc-line));
}

:where(table) { border-collapse: collapse; }

/* Adresa (aj [px_seller] z px-shop-core) bez kurzívy prehliadača. */
:where(address) { font-style: normal; margin: 0 0 var(--pc-space-4); }

/* =========================================================================
   FORMULÁROVÉ POLIA — spoločný základ

   Aby sa každý nový formulár (aj ten, čo vykreslí plugin — waitlist, hľadanie,
   kontakt) nemusel štýlovať odznova. Doteraz mal vlastnú sadu pravidiel každý
   povrch zvlášť: účet, pokladňa, recenzie, px-wc-requests…

   Celé je to v `:where()`, čiže so **špecificitou 0**. Ktorékoľvek existujúce
   pravidlo povrchu (`.px-account form .form-row input`, `#review_form input`…)
   toto prebije bez `!important`, takže pridanie základu nemení nič, čo je už
   nastavené — len dopĺňa polia, ktoré doteraz kreslil prehliadač.

   Zámerne tu nie je `width: 100%` (rozbilo by polia v lištách) ani
   `appearance: none` na `select` (bez vlastnej šípky by ostal bez šípky).
   Povrch, ktorý chce jedno či druhé, si to povie sám.
   ========================================================================= */

:where(
	input[type="text"],
	input[type="email"],
	input[type="tel"],
	input[type="url"],
	input[type="password"],
	input[type="number"],
	input[type="search"],
	input[type="date"],
	select,
	textarea
) {
	box-sizing: border-box;
	max-width: 100%;
	padding: 0.65rem var(--pc-space-4);
	border: 1px solid rgb(var(--pc-field-border));
	border-radius: var(--pc-radius-field);
	background: rgb(var(--pc-paper));
	font-family: inherit;
	font-size: var(--pc-fs-md);
	line-height: 1.4;
	color: rgb(var(--pc-ink));
	transition: border-color 0.15s ease, box-shadow 0.15s ease;
}

/* Pseudotriedy sú vnútri `:where()` zámerne — mimo neho by rátali do
   špecificity (0,1,0) a prebili by tým element-level pravidlá pluginov. */
/* Jednotný fokus poľa: rám aj 1px prstenec vo farbe --pc-focus (spolu
   2 px s kontrastom tokenu). Priehľadný outline ostáva pre režim
   vynútených farieb (Windows High Contrast), kde box-shadow zmizne. */
:where(input:focus-visible, select:focus-visible, textarea:focus-visible) {
	outline: 2px solid transparent;
	border-color: rgb(var(--pc-focus));
	box-shadow: 0 0 0 1px rgb(var(--pc-focus));
}

/* iOS Safari pri fokuse poľa s písmom pod 16 px stránku priblíži. Na
   dotyku a úzkom displeji preto aspoň --pc-fs-base. Špecificita 0 —
   povrch s vlastným font-size (pokladňa, účet, qty) toto prebije a musí
   ho zrušiť sám. */
@media (pointer: coarse), (max-width: 767.98px) {
	:where(
		input[type="text"],
		input[type="email"],
		input[type="tel"],
		input[type="url"],
		input[type="password"],
		input[type="number"],
		input[type="search"],
		input[type="date"],
		select,
		textarea
	) {
		font-size: max(var(--pc-fs-base), 1em);
	}
}

:where(textarea) {
	min-height: 7rem;
	resize: vertical;
}

:where(input, select, textarea)::placeholder {
	color: rgb(var(--pc-muted));
	opacity: 1;
}

:where(input:disabled, select:disabled, textarea:disabled) {
	background: rgb(var(--pc-soft));
	color: rgb(var(--pc-muted));
	cursor: not-allowed;
}

:where(input[type="checkbox"], input[type="radio"]) {
	accent-color: rgb(var(--pc-accent));
}

/* Odosielacie tlačidlo — pilulka v akcente ako `.pc-btn--primary`. Zámerne len
   `[type="submit"]`: bežné `<button>` je v téme aj ikonový prepínač (šípky
   galérie, zavretie modálu) a tie majú byť neviditeľné. */
:where(button[type="submit"], input[type="submit"]) {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	padding: 0.65rem var(--pc-space-6);
	border: 1px solid transparent;
	border-radius: var(--pc-radius-control);
	background: rgb(var(--pc-accent));
	color: rgb(var(--pc-on-accent));
	font-family: inherit;
	font-size: var(--pc-fs-md);
	font-weight: 600;
	line-height: 1.4;
	cursor: pointer;
	transition: background-color 0.15s ease;
}

:where(button[type="submit"]:hover, input[type="submit"]:hover) {
	background: rgb(var(--pc-accent-deep));
}

/* Neskorší zápis s rovnakou (nulovou) špecificitou — prebíja `:disabled`
   pravidlo polí vyššie, ktoré platí aj pre `input[type="submit"]`. */
:where(button[type="submit"]:disabled, input[type="submit"]:disabled) {
	background: rgb(var(--pc-accent));
	color: rgb(var(--pc-on-accent));
	opacity: 0.55;
	cursor: not-allowed;
}

/* Fluent Forms — farba tlačidiel je v konfigurácii formulára (napr. #00BF63,
   s bielou len 2.43:1); prebíjame na prístupný akcent tlačidiel témy. */
.ff-btn-submit.ff_btn_style {
	background-color: rgb(var(--pc-accent, 17 104 155)) !important;
	border-color: rgb(var(--pc-accent, 17 104 155)) !important;
	color: rgb(var(--pc-on-accent)) !important;
}

.ff-btn-submit.ff_btn_style:hover {
	background-color: rgb(var(--pc-accent-deep)) !important;
	border-color: rgb(var(--pc-accent-deep)) !important;
}

/* Imagify v režime „<picture> tags" (na produkcii jediný funkčný — nginx
   .htaccess nečíta) obalí každý <img> do <picture>. Bez tohto pravidla by sa
   flex/grid položkou stal wrapper namiesto obrázka, takže `align-self`,
   `order`, `aspect-ratio` či `object-fit` by sa vyhodnocovali na prázdnom
   boxe. `display: contents` wrapper z layoutu vynechá a obrázok zostáva
   priamou položkou rodiča ako pred optimalizáciou. Triedy vracia obrázku
   site plugin daného webu.

   Percentuálne výšky (`.pc-product-card__media img { height: 100% }`) by
   prežili aj bez toho — inline wrapper nie je containing block, percentá sa
   počítajú proti najbližšiemu blokovému predkovi.

   Pozor: selektory to nemení — `.pc-hero__media > img` by po obalení
   neplatilo, lebo rodičom obrázka je v DOM naďalej <picture>. Téma preto
   používa potomkovské selektory. */
:where(picture) {
	display: contents;
}

.screen-reader-text {
	position: absolute;
	width: 1px;
	height: 1px;
	overflow: hidden;
	clip: rect(0 0 0 0);
	white-space: nowrap;
}

.skip-link:focus {
	position: fixed;
	top: 0.5rem;
	left: 0.5rem;
	z-index: var(--pc-z-toast);
	width: auto;
	height: auto;
	clip: auto;
	padding: var(--pc-space-2) var(--pc-space-4);
	background: rgb(var(--pc-card));
	color: rgb(var(--pc-ink));
	border-radius: var(--pc-radius-sm);
	box-shadow: 0 4px 16px rgb(var(--pc-ink) / 0.2);
}

/* Kontajner obsahových šablón (rovnaké rozmery ako plugin povrchy) */
.px-theme-content {
	margin-left: auto;
	margin-right: auto;
	width: 100%;
	max-width: var(--pc-container);
	padding: var(--pc-space-8) var(--pc-space-4) var(--pc-space-16);
}

@media (min-width: 640px) {
	.px-theme-content { padding-left: var(--pc-space-6); padding-right: var(--pc-space-6); }
}

@media (min-width: 1024px) {
	.px-theme-content { padding-left: var(--pc-space-8); padding-right: var(--pc-space-8); }
}

.px-theme-content--narrow {
	max-width: 48rem;
}

.px-theme-content h1 {
	margin: 0 0 var(--pc-space-6);
	font-size: var(--pc-fs-4xl);
	font-weight: 700;
	line-height: 1.2;
}

.pc-title-dot::after {
	content: '.';
	color: rgb(var(--pc-accent, 69 201 245));
}

/* Pás s omrvinkami — na každom type stránky rovnaký, len cesta k stránke
   (template-parts/page-header.php). Nadpis stojí pod ním, viď .px-page-title. */
.px-page-header {
	border-bottom: 1px solid rgb(var(--pc-line));
	background:
		radial-gradient(90% 160% at 100% 0%, rgb(var(--pc-accent) / 0.07), transparent 55%),
		rgb(var(--pc-sunk));
}

/* Vnútro pásu aj nadpisového bloku drží rovnaké okraje ako obsah stránky,
   nech omrvinky, H1 a prvý riadok obsahu stoja na jednej zvislici. */
.px-page-header__inner,
.px-page-title__inner {
	margin-left: auto;
	margin-right: auto;
	width: 100%;
	max-width: var(--pc-container);
	padding-left: var(--pc-space-4);
	padding-right: var(--pc-space-4);
}

@media (min-width: 640px) {
	.px-page-header__inner,
	.px-page-title__inner {
		padding-left: var(--pc-space-6);
		padding-right: var(--pc-space-6);
	}
}

@media (min-width: 1024px) {
	.px-page-header__inner,
	.px-page-title__inner {
		padding-left: var(--pc-space-8);
		padding-right: var(--pc-space-8);
	}
}

.px-page-header--narrow .px-page-header__inner,
.px-page-title--narrow .px-page-title__inner {
	max-width: 48rem;
}

.px-page-header__inner {
	padding-top: 0.875rem;
	padding-bottom: 0.875rem;
}

/* Nadpis stránky — už mimo sivého pásu, prvý prvok obsahu */
.px-page-title__inner {
	padding-top: var(--pc-space-7);
	padding-bottom: var(--pc-space-3);
}

@media (min-width: 1024px) {
	.px-page-title__inner {
		padding-top: 2.25rem;
		padding-bottom: var(--pc-space-4);
	}
}

/* Variant „pás" (produktové archívy): nadpis a popis kategórie pokračujú
   v podklade omrviniek. Podklad drží obal, aby akcentový radiál bol jedna
   plocha cez celý pás; vnútorné bloky si ho preto vypínajú. */
.px-page-band {
	border-bottom: 1px solid rgb(var(--pc-line));
	background:
		radial-gradient(90% 160% at 100% 0%, rgb(var(--pc-accent) / 0.07), transparent 55%),
		rgb(var(--pc-sunk));
}

.px-page-band .px-page-header {
	border-bottom: 0;
	background: none;
}

/* Odsadenie sa nesčítava — medzi omrvinkami a nadpisom má byť jedna medzera,
   nie spodok jedného bloku plus vrch druhého. */
.px-page-band .px-page-header__inner {
	padding-bottom: 0;
}

.px-page-band .px-page-title__inner {
	padding-top: var(--pc-space-5);
	padding-bottom: 2.25rem;
}

@media (min-width: 1024px) {
	.px-page-band .px-page-title__inner {
		padding-top: var(--pc-space-6);
		padding-bottom: 2.75rem;
	}
}

.px-page-title__heading {
	margin: 0;
	font-size: clamp(1.625rem, 1.25rem + 1.5vw, 2.25rem);
	font-weight: 700;
	line-height: 1.15;
	letter-spacing: -0.01em;
}

.px-page-title__meta {
	margin: var(--pc-space-2) 0 0;
	font-size: var(--pc-fs-xs);
	color: rgb(var(--pc-muted));
}

.px-page-title__description {
	margin-top: var(--pc-space-2);
	max-width: 48rem;
	font-size: var(--pc-fs-md);
	color: rgb(var(--pc-muted));
}

.px-page-title__description p {
	margin: 0;
}

.px-page-title__description p + p {
	margin-top: var(--pc-space-2);
}

/* Omrvinky (Yoast) */
.px-breadcrumbs {
	font-size: var(--pc-fs-xs);
	line-height: 1.5;
	color: rgb(var(--pc-muted));
}

/* Na mobile sa dlhá cesta (kategória + názov produktu) zalamovala na
   2–3 riadky a tlačila obsah dole. Jeden riadok s vodorovným posúvaním:
   scrollbar sa skrýva (je to pomocná navigácia, nie obsah), posúva sa
   prstom; klávesnica sa k odkazom dostane tabom a prehliadač si ich
   doscrolluje sám. */
@media (max-width: 899.98px) {
	.px-breadcrumbs {
		display: flex;
		align-items: baseline;
		white-space: nowrap;
		overflow-x: auto;
		-webkit-overflow-scrolling: touch;
		scrollbar-width: none;
	}

	.px-breadcrumbs::-webkit-scrollbar {
		display: none;
	}

	.px-breadcrumbs__sep {
		flex: 0 0 auto;
	}
}

.px-breadcrumbs a {
	color: inherit;
	text-decoration: none;
	transition: color 0.15s;
}

.px-breadcrumbs a:hover {
	color: rgb(var(--pc-accent-deep));
}

/* Na dotyku väčší cieľ odkazov omrviniek (WCAG 2.5.5) — vzhľad sa nemení. */
@media (pointer: coarse) {
	.px-breadcrumbs a {
		display: inline-flex;
		align-items: center;
		min-height: 2.75rem;
	}

	.px-theme-archive__pagination .page-numbers {
		min-width: 2.75rem;
		height: 2.75rem;
	}
}

.px-breadcrumbs .breadcrumb_last {
	color: rgb(var(--pc-ink));
	font-weight: 500;
}

.px-breadcrumbs__sep {
	margin: 0 0.45rem;
	opacity: 0.45;
}

/* =========================================================================
   TLAČIDLÁ `.pc-btn`

   Jedna definícia pre celý web (predtým bola trikrát: tu pre obsahové
   stránky, v archive.css pre `.pc-scope` a v single.css pre detail).
   Funguje aj mimo `.pc-scope`, takže tlačidlo v pätičke či v šablóne pluginu
   nepotrebuje nič navyše.

   Špecificita je len (0,1,0): `.pc-scope .pc-btn` z archive.css
   a `.px-single .pc-btn` zo single.css toto naďalej prebíjajú a držia si
   svoju veľkosť (archív menšie, detail väčšie). Zjednotiť aj tie je
   dizajnové rozhodnutie, nie refaktor — preto tu ostávajú.
   ========================================================================= */

.pc-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 0.4rem;
	/* 2.75rem = 44 px, minimum dotykového cieľa (WCAG 2.5.8). Samotný
	   padding dával ~40 px; min-height dvíha výšku bez zmeny odsadenia. */
	min-height: 2.75rem;
	padding: 0.6rem var(--pc-space-6);
	border: 1px solid transparent;
	border-radius: var(--pc-radius-control);
	background: rgb(var(--pc-accent));
	color: rgb(var(--pc-on-accent));
	font-family: inherit;
	font-size: var(--pc-fs-sm);
	font-weight: 600;
	line-height: 1.4;
	text-decoration: none;
	cursor: pointer;
	transition: background-color 0.15s ease, border-color 0.15s ease, color 0.15s ease;
}

.pc-btn:hover {
	background: rgb(var(--pc-accent-deep));
	color: rgb(var(--pc-on-accent));
}

.pc-btn--primary {
	background: rgb(var(--pc-accent));
	color: rgb(var(--pc-on-accent));
}

.pc-btn--primary:hover {
	background: rgb(var(--pc-accent-deep));
	color: rgb(var(--pc-on-accent));
}

.pc-btn--outline {
	background: transparent;
	border-color: rgb(var(--pc-ink) / 0.2);
	color: rgb(var(--pc-ink));
}

.pc-btn--outline:hover {
	background: transparent;
	border-color: rgb(var(--pc-accent-deep));
	color: rgb(var(--pc-accent-deep));
}

.pc-btn--ghost {
	background: transparent;
	border-color: transparent;
	color: rgb(var(--pc-accent-deep));
}

.pc-btn--ghost:hover {
	background: rgb(var(--pc-accent) / 0.08);
	color: rgb(var(--pc-accent-deep));
}

/* Veľkosti — aby sa odchýlka riešila modifikátorom, nie novým pravidlom. */
.pc-btn--sm {
	padding: 0.4rem var(--pc-space-4);
	font-size: var(--pc-fs-xs);
}

.pc-btn--lg {
	min-height: 3.25rem;
	padding: var(--pc-space-3) var(--pc-space-8);
	font-size: var(--pc-fs-md);
}

/* Odstup od hrany drží prstenec MIMO tlačidla, teda na podklade stránky —
   preto tmavý `--pc-focus`, nie akcent. Povrch na tmavom podklade si token
   prepíše a pravidlo ostane rovnaké. */
.pc-btn:focus-visible {
	outline: 2px solid rgb(var(--pc-focus));
	outline-offset: 3px;
}

.pc-btn:disabled,
.pc-btn.is-disabled {
	opacity: 0.55;
	cursor: not-allowed;
}

/* Prose — dlhý text stránok a príspevkov. Elementy v :where(), aby defaulty
   mali špecificitu 0,1,0 a prehrali s utility triedami z page.css (.px-lead,
   .px-cta__text, .px-section__title…) — inak by `.px-theme-prose p` (0,1,1)
   prebil `margin: auto` centrovanie a veľkosti nadpisov sekcií. */
.px-theme-prose {
	font-size: var(--pc-fs-base);
	line-height: 1.7;
}

.px-theme-prose :where(h2) { font-size: var(--pc-fs-2xl); margin: var(--pc-space-8) 0 var(--pc-space-3); }
.px-theme-prose :where(h3) { font-size: var(--pc-fs-lg); margin: var(--pc-space-6) 0 var(--pc-space-2); }
.px-theme-prose :where(p) { margin: 0 0 var(--pc-space-4); }
.px-theme-prose :where(ul, ol) { margin: 0 0 var(--pc-space-4); padding-left: var(--pc-space-6); }
.px-theme-prose :where(img) { max-width: 100%; height: auto; border-radius: var(--pc-radius); }

/* Tlačidlo je výnimka: `.pc-btn` má rovnakú váhu (0,1,0) a stojí v súbore
   skôr, takže by odkaz-tlačidlo v obsahu dostalo tmavý text na medenom
   podklade (1,4:1 — kontaktný fallback, tlačidlá v článkoch). */
.px-theme-prose :where(a:not(.pc-btn, .wp-block-button__link)) {
	color: rgb(var(--pc-accent-deep));
}

/* Blog karta — rovnaký rytmus ako sekcia článkov na úvodke: 3 na riadok. */
.px-theme-archive__grid {
	display: grid;
	gap: var(--pc-space-4);
	grid-template-columns: minmax(0, 1fr);
}

@media (min-width: 640px) {
	.px-theme-archive__grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

@media (min-width: 1024px) {
	.px-theme-archive__grid {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}
}

.px-theme-card {
	display: flex;
	flex-direction: column;
	background: rgb(var(--pc-paper));
	border: 1px solid rgb(var(--pc-line));
	border-radius: var(--pc-radius);
	overflow: hidden;
}

/* `height: auto` je nutné: width/height atribúty obrázka sú prezentačný hint
   a bez neho by aspect-ratio neplatilo — portrétová miniatúra by kartu
   natiahla na vlastnú výšku. Rovnaký pomer 16/9 ako .pc-post-card na úvodke. */
.px-theme-card__thumb img {
	display: block;
	width: 100%;
	height: auto;
	aspect-ratio: 16 / 9;
	object-fit: cover;
}

.px-theme-card__body {
	padding: var(--pc-space-4) var(--pc-space-5) var(--pc-space-5);
}

.px-theme-card__title {
	margin: 0 0 var(--pc-space-2);
	font-size: 1.0625rem;
	font-weight: 600;
	line-height: 1.35;
}

.px-theme-card__title a {
	color: rgb(var(--pc-ink));
	text-decoration: none;
}

.px-theme-card__title a:hover {
	color: rgb(var(--pc-accent-deep));
}

.px-theme-card__excerpt {
	margin: 0;
	font-size: var(--pc-fs-sm);
	color: rgb(var(--pc-muted));
}

/* Detail príspevku */
.px-theme-post__thumb img {
	width: 100%;
	height: auto;
	border-radius: var(--pc-radius);
	margin-bottom: var(--pc-space-6);
}

/* Stránkovanie */
.px-theme-archive__pagination {
	margin-top: var(--pc-space-8);
}

.px-theme-archive__pagination .page-numbers {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 2.25rem;
	height: 2.25rem;
	padding: 0 var(--pc-space-2);
	margin-right: var(--pc-space-1);
	border: 1px solid rgb(var(--pc-line));
	border-radius: var(--pc-radius-pill);
	font-size: var(--pc-fs-sm);
	color: rgb(var(--pc-ink));
	text-decoration: none;
}

.px-theme-archive__pagination .page-numbers.current {
	background: rgb(var(--pc-accent));
	border-color: rgb(var(--pc-accent));
	color: rgb(var(--pc-on-accent));
}

.px-theme-archive__pagination a.page-numbers:hover {
	border-color: rgb(var(--pc-accent));
	color: rgb(var(--pc-accent-deep));
}

/* =========================================================================
   OMEDZENÝ POHYB — globálne (prechody, animácie, plynulé scrollovanie).
   Povrchy s vlastnou výnimkou (banner, consent…) ostávajú v poriadku;
   toto chytí aj tie, ktoré ju nemajú (hlavička, archív, filter).
   ========================================================================= */
@media (prefers-reduced-motion: reduce) {
	html {
		scroll-behavior: auto !important;
	}

	*,
	*::before,
	*::after {
		animation-duration: 0.01ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: 0.01ms !important;
		transition-delay: 0s !important;
		scroll-behavior: auto !important;
	}
}

/* Prázdny obal po tom, čo JS WooCommerce zmaže hlásenie. */
.pc-notice-alert:not(:has(*)) {
	display: none;
}
