/* =============================================================================
   OXO /oxonew2 — vzhľad variantných prvkov
   -----------------------------------------------------------------------------
   Prvky, ktoré má len niektorý návrh (assets/varianty.js). Rozloženie tu smie
   byť špecifické — sú to bloky, ktoré v iných návrhoch vôbec nie sú.
   Farby a tvary si aj tu berú z tokenov --sk-*, takže sedia s témou.
   ========================================================================== */

/* --- bežiaci pás (1 Liquid) ----------------------------------------------- */
.ox-v-pas {
	margin-top: clamp(28px, 4vw, 56px);
	border-block: 1px solid var(--sk-linka);
	overflow: hidden; padding-block: 14px;
	-webkit-mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent);
	        mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent);
}
.ox-v-pas__stopa {
	display: flex; align-items: center; gap: 22px; width: max-content;
	font-family: var(--sk-font-nadpis); font-size: clamp(18px, 2vw, 28px);
	line-height: var(--sk-nadpis-lh); text-transform: var(--sk-nadpis-transform);
	white-space: nowrap; animation: ox-v-posun 26s linear infinite;
}
.ox-v-pas__stopa i { color: var(--sk-akcent); font-style: normal; }
@keyframes ox-v-posun { to { transform: translateX(-50%); } }
@media (prefers-reduced-motion: reduce) { .ox-v-pas__stopa { animation: none; } }
.ox-v-liquid__kvapka img { animation: ox-v-plava 7s ease-in-out infinite; }
@keyframes ox-v-plava { 0%, 100% { transform: translateY(0) rotate(-1deg); } 50% { transform: translateY(-16px) rotate(1.5deg); } }
@media (prefers-reduced-motion: reduce) { .ox-v-liquid__kvapka img { animation: none; } }

/* --- kinetická typografia (2 Kinetic) ------------------------------------- */
.ox-v-kinetic__nadpis span { display: inline-block; animation: ox-v-vlna 3.4s ease-in-out infinite; animation-delay: calc(var(--i) * .12s); }
@keyframes ox-v-vlna { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-9px); } }
@media (prefers-reduced-motion: reduce) { .ox-v-kinetic__nadpis span { animation: none; } }
.ox-v-kinetic__spodok { display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(0, .6fr); gap: 28px; align-items: center; margin-block: 20px; }
@media (max-width: 800px) { .ox-v-kinetic__spodok { grid-template-columns: 1fr; } }

/* --- časopis (3 Editorial) ------------------------------------------------ */
.ox-v-editorial__hlava { display: flex; justify-content: space-between; align-items: baseline; gap: 16px; border-bottom: 2px solid var(--sk-text); padding-bottom: 10px; margin-bottom: 20px; flex-wrap: wrap; }
.ox-v-editorial__vydanie { font-size: 12px; letter-spacing: .16em; text-transform: uppercase; color: var(--sk-text-tlmeny); }
.ox-v-editorial__stlpce { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: clamp(18px, 2.4vw, 34px); margin-block: 26px; }
.ox-v-editorial__stlpce .ox-lead { margin: 0; font-size: clamp(17px, 1.5vw, 21px); }
@media (max-width: 900px) { .ox-v-editorial__stlpce { grid-template-columns: 1fr; } }

/* --- príchute (4 Candy Pop) ----------------------------------------------- */
.ox-v-candy__prichute { display: flex; flex-wrap: wrap; gap: 9px; margin-top: 22px; }
.ox-v-candy__pilulka {
	padding: 9px 18px; border-radius: 999px; font-weight: 700; font-size: 14px;
	background: var(--sk-ruz); color: var(--sk-atrament);
	box-shadow: 0 6px 0 -2px rgba(224, 19, 0, .28);
	animation: ox-v-skok 2.6s var(--sk-prechod) infinite;
	animation-delay: calc(var(--n) * .16s);
}
@keyframes ox-v-skok { 0%, 88%, 100% { transform: translateY(0); } 94% { transform: translateY(-6px); } }
@media (prefers-reduced-motion: reduce) { .ox-v-candy__pilulka { animation: none; } }

/* --- HUD (5 Arcade) ------------------------------------------------------- */
.ox-v-arcade__hud {
	display: flex; flex-wrap: wrap; gap: 8px 22px; align-items: center;
	border: 2px solid var(--sk-atrament); padding: 10px 16px; margin-bottom: 26px;
	font-family: var(--sk-font-nadpis); font-size: 13px; letter-spacing: .14em;
	text-transform: uppercase; line-height: var(--sk-nadpis-lh);
}
.ox-v-arcade__hud b { color: var(--sk-akcent); margin-left: 6px; }
.ox-v-arcade__blik { margin-left: auto; color: var(--sk-akcent); animation: ox-v-blik 1.4s steps(2) infinite; }
@keyframes ox-v-blik { 50% { opacity: 0; } }
@media (prefers-reduced-motion: reduce) { .ox-v-arcade__blik { animation: none; } }
.ox-v-arcade__obrazovka img { border: 3px solid var(--sk-atrament); border-radius: 2px; }
.ox-v-level {
	display: block; padding: 24px; text-decoration: none; color: inherit;
	border: 2px solid var(--sk-atrament); background: var(--sk-povrch);
	transition: transform .16s var(--sk-prechod), box-shadow .16s var(--sk-prechod);
}
.ox-v-level:hover { transform: translate(-3px, -3px); box-shadow: 6px 6px 0 var(--sk-akcent); }
.ox-v-level__stitok { display: inline-block; background: var(--sk-atrament); color: #fff; padding: 4px 10px; font-size: 11px; letter-spacing: .16em; margin-bottom: 12px; }

/* --- dátová mriežka (8 Particles) ----------------------------------------- */
.ox-v-mriezka-dat { display: grid; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); gap: 1px; background: var(--sk-linka); border: 1px solid var(--sk-linka); }
.ox-v-dat { background: var(--sk-bg); padding: 26px 22px; display: flex; flex-direction: column; gap: 6px; }
.ox-v-dat b { font-family: var(--sk-font-nadpis); font-size: clamp(28px, 3vw, 40px); line-height: var(--sk-nadpis-lh); color: var(--sk-akcent); }
.ox-v-dat span { font-size: 13.5px; color: var(--sk-text-tlmeny); }

/* =============================================================================
   9 SHOWCASE — vitrína (verne podľa konceptu 09-showcase.html)
   Kruh produktových kariet v strede, nadpis vľavo, cenový panel vpravo,
   ovládanie dole. Hrdina má vlastné pozadie, aby cezeň nepresvital efekt.
   ========================================================================== */
.ox-v-showcase {
	padding: 0;
	background: radial-gradient(120% 80% at 50% 8%, var(--sk-krem) 0%, var(--sk-biela) 58%);
}
.ox-vitrina {
	position: relative;
	display: grid;
	grid-template-columns: minmax(240px, 27vw) 1fr minmax(240px, 27vw);
	grid-template-rows: 1fr auto;
	min-height: min(74vh, 720px);
	max-width: var(--sk-maxw); margin-inline: auto;
}
.ox-vitrina__scena {
	grid-column: 1 / -1; grid-row: 1 / -1; place-self: stretch;
	perspective: 1250px; perspective-origin: 50% 44%;
	z-index: 1; touch-action: pan-y; cursor: grab; overflow: hidden;
}
.ox-vitrina__scena--tahame { cursor: grabbing; }
.ox-vitrina__koleso {
	position: absolute; left: 50%; top: 44%; width: 0; height: 0;
	transform-style: preserve-3d;
	transform: translateZ(calc(var(--polomer, 420px) * -1));
}
.ox-vitrina__karta {
	position: absolute; left: -95px; top: -155px; width: 190px; height: 310px;
	transform: rotateY(var(--u)) translateZ(var(--polomer, 420px));
	background: var(--sk-biela); border-radius: var(--sk-r-velky);
	box-shadow: 0 0 0 1px rgba(27, 27, 27, .1), 0 26px 46px -30px rgba(27, 27, 27, .55);
	display: flex; flex-direction: column; gap: 4px; padding: 14px 15px 16px;
	text-decoration: none; color: var(--sk-text); backface-visibility: hidden;
	transition: box-shadow .3s var(--sk-prechod), opacity .3s var(--sk-prechod);
	opacity: .45;
}
.ox-vitrina__karta--celo { opacity: 1; box-shadow: 0 0 0 1px rgba(255, 22, 0, .4), 0 34px 56px -30px rgba(27, 27, 27, .6); }
.ox-vitrina__foto {
	display: block; background: var(--sk-biela); border-radius: var(--sk-r-maly);
	aspect-ratio: 1 / 1; overflow: hidden; box-shadow: inset 0 0 0 1px var(--sk-linka);
}
.ox-vitrina__foto img { width: 100%; height: 100%; object-fit: contain; padding: 9%; }
.ox-vitrina__kat { font-size: 10px; letter-spacing: .16em; text-transform: uppercase; color: var(--sk-text-tlmeny); margin-top: 10px; }
.ox-vitrina__nazov {
	font-family: var(--sk-font-nadpis); font-size: 14.5px; line-height: var(--sk-nadpis-lh);
	display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
}
.ox-vitrina__cena { margin-top: auto; font-family: var(--sk-font-display); font-size: 20px; color: var(--sk-akcent); }

.ox-vitrina__vlavo, .ox-vitrina__vpravo { z-index: 3; align-self: center; pointer-events: none; padding-block: 24px; }
.ox-vitrina__vlavo { grid-column: 1; grid-row: 1; padding-left: var(--sk-pad); padding-right: 12px; }
.ox-vitrina__vpravo { grid-column: 3; grid-row: 1; text-align: right; justify-self: end; max-width: 360px; padding-right: var(--sk-pad); padding-left: 12px; }
.ox-vitrina__vlavo > *, .ox-vitrina__vpravo > * { pointer-events: auto; }
.ox-vitrina__h1 { font-size: clamp(2.4rem, 4.2vw, 4.2rem); max-width: 11ch; }
.ox-vitrina__h1 em { font-style: normal; color: var(--sk-akcent); }
.ox-vitrina__lead { color: var(--sk-text-tlmeny); font-size: 15px; max-width: 30ch; margin: 18px 0 24px; }
.ox-vitrina__cta { gap: 10px; }

.ox-pv { transition: opacity .3s var(--sk-prechod); }
.ox-pv--vymena { opacity: .25; }
.ox-pv__idx { font-size: 11px; font-weight: 700; letter-spacing: .2em; color: var(--sk-text-tlmeny); margin: 0; }
.ox-pv__idx b { color: var(--sk-akcent); }
.ox-pv__kat { font-size: 11px; font-weight: 700; letter-spacing: .16em; text-transform: uppercase; color: var(--sk-text-tlmeny); margin: 14px 0 0; }
.ox-pv__nazov { font-family: var(--sk-font-nadpis); font-size: clamp(1.3rem, 2vw, 2rem); line-height: var(--sk-nadpis-lh); margin: 6px 0 0; }
.ox-pv__cena {
	font-family: var(--sk-font-display); font-size: clamp(2.4rem, 4.4vw, 4.2rem);
	color: var(--sk-akcent); margin: 8px 0 0; white-space: nowrap; line-height: 1.05;
}
.ox-pv__cena small {
	font-family: var(--sk-font-text); font-size: .24em; font-weight: 600; color: var(--sk-text-tlmeny);
	letter-spacing: .12em; text-transform: uppercase; display: block; margin-top: 4px;
}
.ox-pv__btn {
	margin-top: 16px; display: inline-flex; align-items: center; gap: 9px;
	border: 1.5px solid var(--sk-text); border-radius: var(--sk-r-pilulka);
	padding: 12px 20px; font-weight: 700; font-size: 14px; text-decoration: none; color: var(--sk-text);
	transition: background .18s var(--sk-prechod), color .18s var(--sk-prechod);
}
.ox-pv__btn:hover { background: var(--sk-text); color: var(--sk-bg); }

.ox-vitrina__lista {
	grid-column: 1 / -1; grid-row: 2; z-index: 3;
	display: flex; align-items: center; justify-content: center; gap: 18px;
	padding: 0 var(--sk-pad) 28px; flex-wrap: wrap;
}
.ox-vitrina__arw {
	width: 46px; height: 46px; border-radius: var(--sk-r-pilulka);
	border: 1.5px solid var(--sk-linka); display: grid; place-items: center;
	background: rgba(255, 255, 255, .8); cursor: pointer; color: var(--sk-text);
	transition: border-color .18s var(--sk-prechod), color .18s var(--sk-prechod), transform .18s var(--sk-prechod);
}
.ox-vitrina__arw:hover { border-color: var(--sk-akcent); color: var(--sk-akcent); transform: scale(1.06); }
.ox-vitrina__arw svg { width: 15px; height: 15px; }
.ox-vitrina__bodky { display: flex; gap: 9px; align-items: center; }
.ox-vitrina__bodka {
	width: 9px; height: 9px; padding: 0; border: 0; border-radius: 50%;
	background: var(--sk-linka); cursor: pointer; transition: all .2s var(--sk-prechod);
}
.ox-vitrina__bodka[aria-selected="true"] { background: var(--sk-akcent); width: 26px; border-radius: 999px; }
.ox-vitrina__hint {
	font-size: 11px; letter-spacing: .14em; text-transform: uppercase;
	color: var(--sk-text-tlmeny); font-weight: 600; display: flex; align-items: center; gap: 8px;
}
.ox-vitrina__hint i { width: 26px; height: 14px; border: 1.5px solid var(--sk-text-tlmeny); border-radius: 8px; position: relative; display: inline-block; }
.ox-vitrina__hint i::after {
	content: ""; position: absolute; top: 3px; left: 5px; width: 3px; height: 5px;
	background: var(--sk-text-tlmeny); border-radius: 2px; animation: ox-vit-swipe 1.8s ease-in-out infinite;
}
@keyframes ox-vit-swipe { 0%, 100% { transform: translateX(0); } 50% { transform: translateX(12px); } }

.ox-vitrina__nacitava {
	position: absolute; inset: 0; display: grid; place-items: center; z-index: 4;
	pointer-events: none; transition: opacity .6s var(--sk-prechod);
}
.ox-vitrina__nacitava--prec { opacity: 0; }
.ox-vitrina__nacitava b {
	font-family: var(--sk-font-display); color: var(--sk-akcent); font-size: 13px;
	letter-spacing: .2em; animation: ox-vit-blik 1.1s ease-in-out infinite;
}
@keyframes ox-vit-blik { 50% { opacity: .3; } }

/* červený bežiaci pás pod vitrínou */
.ox-pas-cerveny { background: var(--sk-akcent); color: #fff; overflow: hidden; padding: 16px 0; position: relative; z-index: 5; }
.ox-pas-cerveny__stopa { display: flex; width: max-content; animation: ox-pas-posun 26s linear infinite; }
.ox-pas-cerveny__stopa span {
	font-family: var(--sk-font-display); font-size: clamp(19px, 2.4vw, 30px);
	padding-inline: 22px; white-space: nowrap; display: inline-flex; align-items: center; gap: 22px;
}
.ox-pas-cerveny__stopa span::after { content: ""; width: 9px; height: 9px; border-radius: 999px; background: var(--sk-krem); display: inline-block; }
@keyframes ox-pas-posun { to { transform: translateX(-50%); } }

@media (prefers-reduced-motion: reduce) {
	.ox-pas-cerveny__stopa, .ox-vitrina__hint i::after, .ox-vitrina__nacitava b { animation: none; }
}

@media (max-width: 1100px) {
	.ox-vitrina { grid-template-columns: minmax(180px, 26vw) 1fr minmax(180px, 26vw); }
	.ox-vitrina__lead { display: none; }
}
@media (max-width: 860px) {
	.ox-vitrina {
		grid-template-columns: 1fr;
		grid-template-rows: auto minmax(40svh, 1fr) auto auto;
		min-height: auto;
	}
	.ox-vitrina__scena { grid-column: 1; grid-row: 2; min-height: 40svh; }
	.ox-vitrina__vlavo { grid-column: 1; grid-row: 1; align-self: start; text-align: center; padding: 20px var(--sk-pad) 4px; }
	.ox-vitrina__h1 { max-width: none; margin-inline: auto; }
	.ox-vitrina__cta { display: none; }
	.ox-vitrina__vpravo { grid-column: 1; grid-row: 3; text-align: center; justify-self: center; max-width: none; padding: 0 var(--sk-pad) 4px; align-self: end; }
	.ox-vitrina__lista { grid-column: 1; grid-row: 4; padding-bottom: 22px; gap: 12px; }
	.ox-vitrina__hint { display: none; }
	.ox-pv__nazov { font-size: 1.3rem; }
	.ox-pv__cena { font-size: clamp(2.2rem, 11vw, 3rem); }
}

/* --- časová os (10 Story) ------------------------------------------------- */
.ox-v-osa { list-style: none; margin: 0; padding: 0; display: grid; gap: 0; position: relative; }
.ox-v-osa__krok { display: grid; grid-template-columns: 56px minmax(0, 1fr); gap: 20px; padding-bottom: 34px; position: relative; }
.ox-v-osa__krok:not(:last-child)::before { content: ''; position: absolute; left: 27px; top: 46px; bottom: 0; width: 2px; background: var(--sk-linka); }
.ox-v-osa__bod { width: 46px; height: 46px; border-radius: 50%; background: var(--sk-akcent); color: #fff; display: inline-flex; align-items: center; justify-content: center; font-family: var(--sk-font-display); font-size: 19px; z-index: 1; }
.ox-v-osa__krok h3 { margin-bottom: 6px; }

/* --- čistý zoznam (11 Minimal) -------------------------------------------- */
.ox-v-minimal__riadok { display: grid; grid-template-columns: minmax(0, 1.4fr) auto; gap: 26px; align-items: end; margin-top: 22px; }
@media (max-width: 800px) { .ox-v-minimal__riadok { grid-template-columns: 1fr; align-items: start; } }
.ox-v-zoznam { list-style: none; margin: 0; padding: 0; }
.ox-v-zoznam li { display: flex; justify-content: space-between; gap: 20px; padding: 20px 0; border-bottom: 1px solid var(--sk-linka); flex-wrap: wrap; }
.ox-v-zoznam b { font-family: var(--sk-font-nadpis); font-size: clamp(19px, 2vw, 26px); line-height: var(--sk-nadpis-lh); text-transform: var(--sk-nadpis-transform); }
.ox-v-zoznam span { color: var(--sk-text-tlmeny); font-size: 14.5px; }

/* --- štítky v pohybe (6 Motion) ------------------------------------------- */
.ox-v-motion__stopky { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 24px; }
.ox-v-motion__stopky span {
	padding: 8px 16px; border-radius: var(--sk-r-pilulka);
	border: 1px solid var(--sk-linka); font-size: 13.5px; font-weight: 600;
	animation: ox-v-nabeh .7s var(--sk-prechod) both; animation-delay: calc(var(--n) * .1s);
}
@media (prefers-reduced-motion: reduce) { .ox-v-motion__stopky span { animation: none; } }

/* --- technický hrdina (8 Particles) --------------------------------------- */
.ox-v-particles__mriezka { display: grid; grid-template-columns: minmax(0, 1.5fr) minmax(0, .8fr); gap: clamp(24px, 4vw, 60px); align-items: center; }
@media (max-width: 960px) { .ox-v-particles__mriezka { grid-template-columns: 1fr; } }
.ox-v-particles__udaje { display: grid; gap: 1px; background: var(--sk-linka); border: 1px solid var(--sk-linka); margin: 0; }
.ox-v-particles__udaje > div { background: var(--sk-bg); padding: 18px 22px; display: flex; justify-content: space-between; align-items: baseline; gap: 14px; }
.ox-v-particles__udaje dt { font-size: 11.5px; letter-spacing: .16em; color: var(--sk-text-tlmeny); }
.ox-v-particles__udaje dd { margin: 0; font-family: var(--sk-font-nadpis); font-size: 24px; line-height: var(--sk-nadpis-lh); color: var(--sk-akcent); }

/* --- kapitola (10 Story) -------------------------------------------------- */
.ox-v-story__kapitola {
	display: inline-block; margin-bottom: 18px; padding: 6px 16px;
	border-radius: var(--sk-r-pilulka); background: var(--sk-bg-2);
	font-size: 12px; letter-spacing: .18em; text-transform: uppercase; font-weight: 700;
	color: var(--sk-akcent);
}

/* --- spoločné kusy -------------------------------------------------------- */
.ox-v-citat { margin: 0; max-width: 24ch; }
.ox-v-citat p { font-family: var(--sk-font-nadpis); font-size: clamp(24px, 3.6vw, 46px); line-height: var(--sk-nadpis-lh); text-transform: var(--sk-nadpis-transform); margin: 0 0 16px; }
.ox-v-citat cite { font-style: normal; font-size: 14px; color: var(--sk-text-tlmeny); }
.ox-v-cislo { text-align: center; padding: 26px 16px; }
.ox-v-cislo b { display: block; font-family: var(--sk-font-display); font-size: clamp(34px, 4.4vw, 62px); line-height: 1.05; color: var(--sk-akcent); }
.ox-v-cislo span { font-size: 14px; color: var(--sk-text-tlmeny); }
.ox-v-cislo--pocitadlo b { animation: ox-v-nabeh .8s var(--sk-prechod) both; }
@keyframes ox-v-nabeh { from { opacity: 0; transform: translateY(14px); } }
@media (prefers-reduced-motion: reduce) { .ox-v-cislo--pocitadlo b { animation: none; } }
.ox-v-slovnik { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 22px; margin: 0; }
.ox-v-slovnik dt { font-family: var(--sk-font-nadpis); font-size: 20px; line-height: var(--sk-nadpis-lh); margin-bottom: 6px; }
.ox-v-slovnik dd { margin: 0; color: var(--sk-text-tlmeny); font-size: 14.5px; }
.ox-v-krok-karta { background: var(--sk-povrch); border-radius: var(--sk-r-velky); box-shadow: var(--sk-tien-karta), var(--sk-obrys); padding: 26px; }
.ox-v-krok-karta__cislo { display: inline-flex; align-items: center; justify-content: center; width: 44px; height: 44px; border-radius: 50%; background: var(--sk-akcent); color: #fff; font-family: var(--sk-font-display); font-size: 20px; margin-bottom: 14px; }

/* =============================================================================
   1-liquid — hrdina „tekutá kvapka“ (verne podľa konceptu 1-liquid.html)
   -----------------------------------------------------------------------------
   Hrdina zámerne NEMÁ nepriehľadné pozadie: tekutá červená kvapka, ktorú kreslí
   efekt témy (assets/temy/efekty/1-liquid.js), JE pozadím tohto návrhu — presne
   ako v koncepte. Čitateľnosť sadzby zabezpečuje závoj `::before`: plocha farby
   --sk-bg, ktorej priehľadnosť riadi maska. Kvapka leží vpravo, závoj je preto
   silný vľavo (pod textom) a vpravo úplne mizne.
   ========================================================================== */
.ox-v-liq {
	position: relative; isolation: isolate;
	display: flex; flex-direction: column; justify-content: center;
	min-height: 84vh; min-height: min(84svh, 820px);
	padding-block: clamp(36px, 5vw, 88px) clamp(84px, 9vw, 124px);
	overflow: hidden;
}
.ox-v-liq::before {
	content: ''; position: absolute; inset: 0; z-index: -1; pointer-events: none;
	background: var(--sk-bg);
	-webkit-mask-image: linear-gradient(100deg, rgba(0,0,0,.95) 0%, rgba(0,0,0,.9) 30%, rgba(0,0,0,.42) 56%, rgba(0,0,0,0) 76%);
	        mask-image: linear-gradient(100deg, rgba(0,0,0,.95) 0%, rgba(0,0,0,.9) 30%, rgba(0,0,0,.42) 56%, rgba(0,0,0,0) 76%);
}
/* Zrno — v koncepte je cez celú stránku; tu len nad hrdinom, aby nešpinilo
   produktové fotky v katalógu. `multiply` je bezpečný (difference by nad
   červenou vyrobil tyrkysovú — viď KONTRAKT.md). */
.ox-v-liq::after {
	content: ''; position: absolute; inset: 0; z-index: 3; pointer-events: none;
	opacity: .22; mix-blend-mode: multiply;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='3'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.32'/%3E%3C/svg%3E");
}
.ox-v-liq__vnutro { position: relative; z-index: 2; }
.ox-v-liq__h1 { font-size: clamp(45px, 8.4vw, 120px); letter-spacing: -.02em; margin: 0; }
.ox-v-liq__lead { max-width: 44ch; margin: 22px 0 0; font-size: clamp(15px, 1.35vw, 19px); line-height: 1.65; }
.ox-v-liq__akcie { display: flex; flex-wrap: wrap; gap: 14px; margin-top: 32px; }

/* Tlačidlá: atrament vyteká zospodu (v koncepte .btn::before) ---------------- */
.ox-v-liq__btn { position: relative; overflow: hidden; padding: 17px 30px; letter-spacing: .03em; }
.ox-v-liq__btn > span { position: relative; z-index: 2; }
.ox-v-liq__btn::before {
	content: ''; position: absolute; inset: 0; z-index: 1;
	background: var(--sk-atrament); transform: translateY(101%);
	transition: transform .5s var(--sk-prechod);
}
.ox-v-liq__btn:hover::before { transform: translateY(0); }
/* Základ prefarbuje .ox-btn--obrys pri hoveri pozadím — tu to má robiť výlučne
   vytekajúci atrament, preto rovnaká špecificita a neskoršie poradie. */
.ox-v-liq__btn--obrys { border-color: var(--sk-linka); }
.ox-v-liq__btn--obrys:hover:not(:disabled) { background: transparent; color: var(--sk-biela); border-color: transparent; }
@media (prefers-reduced-motion: reduce) { .ox-v-liq__btn::before { transition: none; } }

/* Pomôcka „Scrolluj“ ------------------------------------------------------- */
.ox-v-liq__skrol {
	position: absolute; left: 50%; bottom: 26px; transform: translateX(-50%); z-index: 2;
	display: flex; flex-direction: column; align-items: center; gap: 10px;
	font-size: 11px; font-weight: 600; letter-spacing: .22em; text-transform: uppercase;
	color: var(--sk-text-tlmeny); pointer-events: none;
}
.ox-v-liq__skrol i { width: 1px; height: 44px; background: linear-gradient(var(--sk-akcent), transparent); animation: ox-v-liq-ciara 1.9s infinite; }
@keyframes ox-v-liq-ciara {
	0%   { transform: scaleY(0); transform-origin: top; }
	50%  { transform: scaleY(1); transform-origin: top; }
	51%  { transform-origin: bottom; }
	100% { transform: scaleY(0); transform-origin: bottom; }
}
.ox-v-liq--bezpohybu .ox-v-liq__skrol i { animation: none; }
@media (prefers-reduced-motion: reduce) { .ox-v-liq__skrol i { animation: none; } }

/* Nábeh obsahu (.rv v koncepte). Skrytý stav platí až keď ho zapne JS —
   bez skriptu musí byť hrdina normálne čitateľný. ---------------------------- */
.ox-v-liq--js .ox-v-liq-rv {
	opacity: 0; transform: translateY(38px);
	transition: opacity .9s var(--sk-prechod), transform .9s var(--sk-prechod);
}
.ox-v-liq--js .ox-v-liq-rv--in { opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce) {
	.ox-v-liq--js .ox-v-liq-rv { opacity: 1; transform: none; transition: none; }
}

/* Vlastný kurzor: bodka + dobiehajúci prstenec ----------------------------- */
.ox-v-liq-kurzor {
	position: fixed; top: 0; left: 0; z-index: 40; pointer-events: none;
	border-radius: 50%; opacity: 0; will-change: transform;
}
.ox-v-liq-kurzor--bod { width: 9px; height: 9px; margin: -4.5px 0 0 -4.5px; background: var(--sk-akcent); transition: opacity .25s var(--sk-prechod); }
.ox-v-liq-kurzor--prstenec {
	width: 38px; height: 38px; margin: -19px 0 0 -19px;
	border: 1.5px solid var(--sk-akcent);
	transition: width .3s var(--sk-prechod), height .3s var(--sk-prechod),
	            margin .3s var(--sk-prechod), opacity .25s var(--sk-prechod);
}
.ox-v-liq-kurzor--bod.ox-v-liq-kurzor--vidno { opacity: 1; }
.ox-v-liq-kurzor--prstenec.ox-v-liq-kurzor--vidno { opacity: .55; }
.ox-v-liq-kurzor--prstenec.ox-v-liq-kurzor--velky { width: 76px; height: 76px; margin: -38px 0 0 -38px; }
@media (pointer: coarse) { .ox-v-liq-kurzor { display: none; } }

/* Krémový hárok s otočeným červeným pásom ---------------------------------- */
.ox-v-liq-pas {
	position: relative; z-index: 2; overflow: hidden;
	background: var(--sk-bg-2);
	border-radius: var(--sk-r-velky) var(--sk-r-velky) 0 0;
	box-shadow: 0 -30px 80px -40px rgba(27, 27, 27, .32);
	/* Spodných 48 px je „poistka“: nasledujúca krémová sekcia má vlastné
	   zaoblené rohy a bez prekrytia by v nich presvital biely zárez. */
	padding-block: clamp(22px, 3vw, 40px) 48px;
	margin-bottom: -48px;
}
.ox-v-liq-pas__ram { overflow: hidden; padding-block: 12px; }   /* klip proti pretoku po otočení */
.ox-v-liq-pas__band {
	background: var(--sk-akcent); color: var(--sk-biela);
	width: 108%; margin-left: -4%; padding-block: 14px; overflow: hidden;
	transform: rotate(-1.4deg);
}
.ox-v-liq-pas__stopa {
	display: flex; align-items: center; width: max-content;
	font-family: var(--sk-font-display); font-size: clamp(18px, 2.4vw, 32px); line-height: 1.4;
	animation: ox-v-liq-posun 26s linear infinite;
}
.ox-v-liq-pas__stopa span { display: inline-flex; align-items: center; gap: 34px; padding-inline: 17px; white-space: nowrap; }
.ox-v-liq-pas__stopa span::after { content: ''; width: 8px; height: 8px; border-radius: 999px; background: var(--sk-krem); flex: 0 0 auto; }
@keyframes ox-v-liq-posun { to { transform: translateX(-50%); } }
.ox-v-liq-pas--bezpohybu .ox-v-liq-pas__stopa { animation: none; }
@media (prefers-reduced-motion: reduce) { .ox-v-liq-pas__stopa { animation: none; } }

/* Podpisová sekcia — červená výzva s bublinami ----------------------------- */
.ox-v-liq-cta {
	position: relative; overflow: hidden; text-align: center;
	background: var(--sk-akcent); color: var(--sk-biela);
	border-radius: var(--sk-r-velky);
	padding: clamp(46px, 7vw, 96px) clamp(24px, 5vw, 80px);
}
.ox-v-liq-cta__bublina {
	position: absolute; z-index: 1; border-radius: 50%; background: var(--sk-biela); opacity: .13;
	width: var(--v); height: var(--v); left: var(--x); top: var(--y);
}
.ox-v-liq-cta__h { position: relative; z-index: 2; margin: 0; color: var(--sk-biela); font-size: clamp(32px, 6vw, 88px); }
.ox-v-liq-cta__p { position: relative; z-index: 2; max-width: 52ch; margin: 20px auto 0; font-size: 16px; line-height: 1.6; }
.ox-v-liq-cta__btn { position: relative; z-index: 2; margin-top: 26px; background: var(--sk-biela); color: var(--sk-akcent); }
.ox-v-liq-cta__btn:hover:not(:disabled) { color: var(--sk-biela); }

/* Užšie okná a nízke notebooky -------------------------------------------- */
@media (max-width: 860px) {
	/* Na úzkom okne je text cez celú šírku, takže závoj musí kryť zhora nadol;
	   spodok necháme priehľadný, nech je kvapka vidieť. */
	.ox-v-liq::before {
		-webkit-mask-image: linear-gradient(180deg, rgba(0,0,0,.93) 0%, rgba(0,0,0,.88) 62%, rgba(0,0,0,.2) 92%, rgba(0,0,0,0) 100%);
		        mask-image: linear-gradient(180deg, rgba(0,0,0,.93) 0%, rgba(0,0,0,.88) 62%, rgba(0,0,0,.2) 92%, rgba(0,0,0,0) 100%);
	}
	.ox-v-liq__akcie { margin-top: 28px; }
	.ox-v-liq__btn { padding: 15px 24px; }
}
@media (max-width: 460px) {
	.ox-v-liq__btn { width: 100%; }        /* dve pilulky vedľa seba by sa lámali */
	.ox-v-liq__skrol { bottom: 18px; }
}
/* Nad hrdinom je ešte lišta návrhov (44 px) a hlavička (74 px). Na bežnom
   notebooku by pri plnej veľkosti nadpisu vypadli tlačidlá pod ohyb — nadpis
   sa preto s výškou okna zmenšuje. */
@media (max-height: 960px) and (min-width: 1100px) {
	.ox-v-liq { padding-block: 40px 84px; }
	.ox-v-liq__h1 { font-size: clamp(40px, 6.6vw, 96px); }
}
@media (max-height: 840px) and (min-width: 1100px) {
	.ox-v-liq { min-height: min(88svh, 640px); padding-block: 32px 74px; }
	.ox-v-liq__h1 { font-size: clamp(38px, 5.6vw, 78px); }
}

/* =============================================================================
   2-kinetic — hrdina „roztoč si pohár“ (verne podľa konceptu 2-kinetic.html)
   -----------------------------------------------------------------------------
   Červená plocha na výšku okna, text vľavo, otáčací pohár (Canvas 2D) vpravo,
   dole pomôcka „Potiahni pohár“, pod hrdinom atramentový bežiaci pás.
   Hrdina má vlastné NEPRIEHĽADNÉ pozadie: pod stránkou beží WebGL efekt témy
   (stúpajúce boba bubliny) a cez priesvitnú plochu by sa bil s pohárom.
   ========================================================================== */
.ox-v-2kinetic {
	position: relative;
	display: grid;
	align-items: center;
	padding: 0;
	min-height: min(84svh, 780px);
	background: var(--sk-akcent);
	color: var(--sk-biela);
	isolation: isolate;                 /* zrno sa smie miešať len vnútri hrdinu */
}
/* zrno ako v koncepte (tam bolo cez celý web) — dátové URI, žiadny externý súbor */
.ox-v-2kinetic::after {
	content: ""; position: absolute; inset: 0; z-index: 4;
	pointer-events: none; opacity: .18; mix-blend-mode: overlay;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}
/* Kontrastný prstenec fokusu: červený z jadra by na červenej ploche zanikol. */
.ox-v-2kinetic :focus-visible { outline-color: var(--sk-biela); }

.ox-v-2kinetic__platno {
	position: absolute; inset: 0; z-index: 1;
	width: 100%; height: 100%; display: block;
	cursor: grab; touch-action: pan-y;  /* vodorovný ťah točí, zvislý stále scrolluje stránku */
}
.ox-v-2kinetic__platno--tahame { cursor: grabbing; }

.ox-v-2kinetic__vnutro {
	position: relative; z-index: 3;
	width: 100%; max-width: var(--sk-maxw); margin-inline: auto;
	padding: clamp(30px, 5vw, 60px) var(--sk-pad) clamp(60px, 8vw, 96px);
	pointer-events: none;               /* pohár sa dá chytiť aj „cez“ text, ako v koncepte */
}
.ox-v-2kinetic__vnutro > * { max-width: min(620px, 52vw); }

.ox-v-2kinetic__oko {
	font-size: 12px; letter-spacing: .3em; text-transform: uppercase;
	opacity: .82; margin: 0 0 20px;
}
.ox-v-2kinetic__h1 {
	color: var(--sk-biela);
	font-size: clamp(44px, 7vw, 118px);
	letter-spacing: -.02em;
	margin: 0;
	text-wrap: initial;                 /* zalomenie riadkov riešia <br> a slová */
}
.ox-v-2kinetic__slovo { display: inline-block; }
.ox-v-2kinetic__slovo--obrys {
	color: transparent;
	-webkit-text-stroke: max(1.5px, .022em) rgba(255, 255, 255, .85);
}
@supports not (-webkit-text-stroke: 2px #fff) {
	.ox-v-2kinetic__slovo--obrys { color: rgba(255, 255, 255, .58); }
}
/* Nábeh zapína až JS (trieda) — keby skript zlyhal, nadpis nesmie ostať neviditeľný. */
.ox-v-2kinetic__h1--nabeh .ox-v-2kinetic__slovo {
	animation: ox-2kin-hore .95s var(--sk-prechod) both;
	animation-delay: calc(var(--i) * .1s);
}
@keyframes ox-2kin-hore { from { transform: translateY(110%); opacity: 0; } }

.ox-v-2kinetic__lead {
	color: rgba(255, 255, 255, .92);
	margin: 26px 0 0; max-width: 44ch;
	font-size: clamp(15px, 1.4vw, 18px); line-height: 1.6;
}
.ox-v-2kinetic__akcie {
	display: flex; flex-wrap: wrap; gap: 14px; margin-top: 36px;
	pointer-events: auto;               /* jediné miesto hrdinu, ktoré berie kliky */
}
.ox-v-2kinetic__btn {
	position: relative; overflow: hidden;
	display: inline-flex; align-items: center; gap: 10px;
	padding: 17px 32px; border-radius: var(--sk-btn-r);
	background: var(--sk-biela); color: var(--sk-akcent);
	font-weight: 700; font-size: 13px; letter-spacing: .08em; text-transform: uppercase;
	text-decoration: none; will-change: transform;
	transition: transform .35s var(--sk-prechod);
}
.ox-v-2kinetic__vypln {
	position: absolute; inset: 0; background: var(--sk-atrament);
	transform: translateY(101%); transition: transform .5s var(--sk-prechod);
}
.ox-v-2kinetic__btn:hover .ox-v-2kinetic__vypln { transform: none; }
.ox-v-2kinetic__btn > span:last-child { position: relative; z-index: 2; transition: color .35s var(--sk-prechod); }
.ox-v-2kinetic__btn:hover > span:last-child { color: var(--sk-biela); }
.ox-v-2kinetic__btn--linka {
	background: transparent; color: var(--sk-biela);
	box-shadow: inset 0 0 0 1.5px rgba(255, 255, 255, .5);
}
.ox-v-2kinetic__tah {
	position: absolute; bottom: 26px; left: 50%; transform: translateX(-50%);
	z-index: 3; margin: 0; white-space: nowrap;
	font-size: 11px; letter-spacing: .24em; text-transform: uppercase; opacity: .75;
}

/* bežiaci pás pod hrdinom ---------------------------------------------------- */
.ox-v-2kinetic-pas {
	background: var(--sk-atrament); color: var(--sk-krem);
	overflow: hidden; padding: 14px 0; position: relative; z-index: 5;
}
.ox-v-2kinetic-pas__stopa { display: flex; width: max-content; animation: ox-2kin-pas 26s linear infinite; }
.ox-v-2kinetic-pas:hover .ox-v-2kinetic-pas__stopa { animation-play-state: paused; }  /* nech sa dá kliknúť */
.ox-v-2kinetic-pas__polovica {
	display: flex; align-items: center; gap: 26px; padding-right: 26px;
	font-family: var(--sk-font-display); font-size: clamp(18px, 2.2vw, 30px);
	line-height: 1.3; white-space: nowrap; text-transform: var(--sk-nadpis-transform);
}
.ox-v-2kinetic-pas__polovica b { color: var(--sk-akcent); font-weight: inherit; }
.ox-v-2kinetic-pas__odkaz { color: inherit; text-decoration: none; transition: color .2s var(--sk-prechod); }
a.ox-v-2kinetic-pas__odkaz:hover { color: var(--sk-akcent); }
@keyframes ox-2kin-pas { to { transform: translateX(-50%); } }

/* podpisová sekcia „02 — Čísla“ ---------------------------------------------- */
.ox-v-2kinetic-cisla__oko {
	display: block; margin-bottom: 10px; font-size: 11px; font-weight: 600;
	letter-spacing: .24em; text-transform: uppercase; color: rgba(255, 255, 255, .55);
}
.ox-v-2kinetic-cisla em { font-style: normal; color: var(--sk-akcent); }
.ox-v-2kinetic-cislo {
	padding: 32px 26px; border-radius: var(--sk-r-stredny);
	background: rgba(255, 255, 255, .05); border: 1px solid rgba(255, 255, 255, .12);
}
.ox-v-2kinetic-cislo b {
	display: block; font-family: var(--sk-font-nadpis); line-height: var(--sk-nadpis-lh);
	font-size: clamp(34px, 4.6vw, 60px); color: var(--sk-akcent);
}
.ox-v-2kinetic-cislo span { display: block; margin-top: 10px; font-size: 13.5px; color: rgba(255, 255, 255, .72); }

@media (prefers-reduced-motion: reduce) {
	.ox-v-2kinetic__h1--nabeh .ox-v-2kinetic__slovo { animation: none; }
	.ox-v-2kinetic-pas__stopa { animation: none; }
	.ox-v-2kinetic__btn { transition: none; }
}

/* Úzke okná: pohár je hore, text pod ním na stred (rovnako ako v koncepte). */
@media (max-width: 900px) {
	.ox-v-2kinetic { min-height: min(94svh, 880px); text-align: center; }
	.ox-v-2kinetic__vnutro { padding-top: 40svh; padding-bottom: 78px; }
	.ox-v-2kinetic__vnutro > * { max-width: none; }
	.ox-v-2kinetic__lead { margin-inline: auto; }
	.ox-v-2kinetic__akcie { justify-content: center; }
	.ox-v-2kinetic__h1 { font-size: clamp(40px, 11vw, 72px); }
}
@media (max-width: 430px) {
	.ox-v-2kinetic__btn { padding: 15px 22px; }
	.ox-v-2kinetic__tah { font-size: 10px; letter-spacing: .18em; bottom: 18px; }
}
/* Nízke notebooky: hrdina sa musí zmestiť nad ohyb aj s bežiacim pásom. */
@media (max-height: 840px) and (min-width: 1100px) {
	.ox-v-2kinetic { min-height: min(88svh, 640px); }
	.ox-v-2kinetic__h1 { font-size: clamp(40px, 5.6vw, 84px); }
	.ox-v-2kinetic__lead { margin-top: 18px; }
	.ox-v-2kinetic__akcie { margin-top: 26px; }
}

/* =============================================================================
   3-editorial — hrdina „titulka časopisu“ (verne podľa konceptu 3-editorial.html)
   -----------------------------------------------------------------------------
   Atramentová lišta hore, dvojstĺpec text/fotka, dve plávajúce kartičky a pod
   hrdinom biely pás dôvery. Hrdina má vlastné NEPRIEHĽADNÉ pozadie (krémový
   prechod z konceptu): pod stránkou beží efekt témy s tými istými bobuľami a
   dve vrstvy rovnakých gúľ by sa bili. Bobule preto kreslíme nad prechodom
   sami — v troch hĺbkových vrstvách, ktoré vodí kurzor (assets/varianty/3-editorial.js).
   ========================================================================== */
.ox-v-3ed {
	position: relative;
	padding: 0;                       /* lišta musí sedieť na hornej hrane hrdinu */
	background: linear-gradient(160deg, var(--sk-krem), var(--sk-biela) 62%);
}

/* Lišta s prísľubmi ---------------------------------------------------------- */
.ox-v-3ed__lista {
	position: relative; z-index: 3;
	background: var(--sk-atrament); color: var(--sk-biela);
	font-size: 12.5px; letter-spacing: .02em;
}
.ox-v-3ed__lista-vnutro {
	display: flex; justify-content: center; flex-wrap: wrap;
	gap: 6px clamp(14px, 2.4vw, 26px); padding-block: 9px;
}
.ox-v-3ed__lista b { color: var(--sk-ruz); font-weight: 600; }

/* Bobule na pozadí ----------------------------------------------------------- */
.ox-v-3ed__bobule { position: absolute; inset: 0; z-index: 1; overflow: hidden; pointer-events: none; }
.ox-v-3ed__vrstva { position: absolute; inset: 0; will-change: transform; }
.ox-v-3ed__vrstva--daleko { filter: blur(2px); }   /* hĺbka: vzdialené gule sú mäkšie */
.ox-v-3ed__bobula {
	position: absolute; left: var(--x); top: var(--y);
	width: var(--v); height: var(--v); border-radius: 50%; opacity: var(--o);
	/* svetlo zľava hore ako na guli v koncepte (MeshPhysicalMaterial + clearcoat) */
	background: radial-gradient(circle at 32% 28%, rgba(255, 255, 255, .9), var(--c) 62%);
	animation: ox-3ed-hojda var(--t) ease-in-out infinite;
	animation-delay: var(--d);
}
@keyframes ox-3ed-hojda { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-14px); } }

/* Dvojstĺpec ----------------------------------------------------------------- */
.ox-v-3ed__mriezka {
	position: relative; z-index: 2;
	display: grid; align-items: center;
	grid-template-columns: minmax(0, 1.05fr) minmax(0, .95fr);
	gap: clamp(24px, 3.4vw, 40px);
	padding-block: clamp(48px, 6vw, 88px);
}
.ox-v-3ed__odznak {
	display: inline-flex; align-items: center; gap: 8px;
	background: var(--sk-biela); border: 1px solid var(--sk-linka);
	padding: 7px 14px; border-radius: var(--sk-r-pilulka);
	font-size: 12px; font-weight: 600; margin-bottom: 22px;
}
/* Zelená „skladom“ nie je firemná farba a tokeny ju nemajú — berieme tú istú,
   akou svieti .ox-odznak--ok v jadre. */
.ox-v-3ed__odznak i { width: 7px; height: 7px; border-radius: 50%; background: #0e8a3e; flex: 0 0 auto; }
.ox-v-3ed__h1 {
	margin: 0; font-size: clamp(40px, 6.6vw, 92px); letter-spacing: -.015em;
	text-wrap: initial;               /* riadky lámu <br>, nie prehliadač */
}
.ox-v-3ed__lead {
	margin: 20px 0 0; max-width: 46ch;
	font-size: clamp(15px, 1.3vw, 18px); line-height: 1.65; color: var(--sk-text-tlmeny);
}
.ox-v-3ed__akcie { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 30px; }
.ox-v-3ed__btn { padding: 15px 28px; min-height: 52px; font-size: 14px; }

/* Fotka s kartičkami --------------------------------------------------------- */
.ox-v-3ed__vizual { position: relative; margin: 0; }
.ox-v-3ed__foto { display: block; }
.ox-v-3ed__foto img {
	width: 100%; max-width: 520px; max-height: min(58vh, 520px); margin-inline: auto;
	object-fit: contain;
	/* Firemná červená je nemenná a drop-shadow() nevie prijať token s alfou. */
	filter: drop-shadow(0 30px 50px rgba(255, 22, 0, .22));
	transition: filter .3s var(--sk-prechod);
}
/* Katalógová fotka má biele pozadie — červený presvit by z nej spravil obdĺžnik,
   preto dostane vlasový rám ako fotka v časopise. */
.ox-v-3ed__foto--katalog img {
	filter: none; background: var(--sk-biela);
	border-radius: var(--sk-r-obrazok); box-shadow: var(--sk-obrys), 0 26px 50px -34px rgba(27, 27, 27, .5);
}
.ox-v-3ed__popiska {
	max-width: 520px; margin: 16px auto 0; padding-top: 10px;
	border-top: 1px solid var(--sk-linka);
	display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 8px 16px;
	font-size: 12.5px; color: var(--sk-text-tlmeny); text-align: left;
}
.ox-v-3ed__popiska[hidden] { display: none; }
.ox-v-3ed__popiska b { color: var(--sk-text); font-weight: 600; }
.ox-v-3ed__popiska a { color: var(--sk-akcent); font-weight: 700; white-space: nowrap; }
.ox-v-3ed__kartica {
	position: absolute; display: flex; align-items: center; gap: 10px;
	background: var(--sk-biela); border-radius: var(--sk-r-stredny);
	padding: 12px 15px; font-size: 12.5px; line-height: 1.35;
	box-shadow: 0 14px 40px -12px rgba(27, 27, 27, .28), var(--sk-obrys);
	animation: ox-3ed-vznasa 5s ease-in-out infinite;
}
.ox-v-3ed__kartica b { font-family: var(--sk-font-display); color: var(--sk-akcent); font-size: 16px; }
.ox-v-3ed__kartica--hore { top: 6%; left: -2%; animation-delay: .4s; }
.ox-v-3ed__kartica--dole { bottom: 14%; right: 0; animation-delay: 1.4s; }
@keyframes ox-3ed-vznasa { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-11px); } }

/* Pás dôvery pod hrdinom ----------------------------------------------------- */
.ox-v-3ed-dovera { position: relative; z-index: 2; background: var(--sk-biela); border-block: 1px solid var(--sk-linka); }
.ox-v-3ed-dovera__mriezka { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 2px; }
.ox-v-3ed-dovera__polozka { display: flex; align-items: center; gap: 12px; padding: 20px 18px; font-size: 13.5px; line-height: 1.4; }
.ox-v-3ed-dovera__ikona {
	width: 38px; height: 38px; border-radius: 50%; background: var(--sk-krem);
	display: grid; place-items: center; font-size: 17px; flex: 0 0 auto;
}
.ox-v-3ed-dovera__polozka b { display: block; font-size: 14px; margin-bottom: 2px; }
.ox-v-3ed-dovera__polozka small { display: block; font-size: 12.5px; color: var(--sk-text-tlmeny); }

/* Nábeh obsahu (v koncepte `.rv`) — skrytý stav zapína až skript ------------- */
.ox-v-3ed-rv--pripravene {
	opacity: 0; transform: translateY(26px);
	transition: opacity .8s var(--sk-prechod), transform .8s var(--sk-prechod);
}
.ox-v-3ed-rv--pripravene.ox-v-3ed-rv--in { opacity: 1; transform: none; }

/* Číslovanie v podpisovej sekcii --------------------------------------------- */
.ox-v-3ed-sek__cislo { display: block; font-family: var(--sk-font-display); color: var(--sk-akcent); font-size: 15px; line-height: var(--sk-nadpis-lh); }

/* Vypnutý pohyb -------------------------------------------------------------- */
.ox-v-3ed--bezpohybu .ox-v-3ed__bobula,
.ox-v-3ed--bezpohybu .ox-v-3ed__kartica { animation: none; }
@media (prefers-reduced-motion: reduce) {
	.ox-v-3ed__bobula, .ox-v-3ed__kartica { animation: none; }
	.ox-v-3ed-rv--pripravene { opacity: 1; transform: none; transition: none; }
}

/* Užšie okná ----------------------------------------------------------------- */
@media (max-width: 900px) {
	/* ako v koncepte: jeden stĺpec, sadzba na stred, kartičky preč (nemajú kam) */
	.ox-v-3ed__mriezka { grid-template-columns: 1fr; text-align: center; }
	.ox-v-3ed__lead { margin-inline: auto; }
	.ox-v-3ed__akcie { justify-content: center; }
	.ox-v-3ed__kartica { display: none; }
	.ox-v-3ed__popiska { justify-content: center; text-align: center; }
}
@media (max-width: 430px) {
	.ox-v-3ed__lista { font-size: 11.5px; }
	.ox-v-3ed__btn { flex: 1 1 100%; }      /* dve pilulky vedľa seba by sa lámali */
	.ox-v-3ed__odznak { margin-bottom: 16px; }
	.ox-v-3ed-dovera__polozka { padding: 16px 4px; }
}
/* Nízke notebooky (720–860 px): hrdina sa musí zmestiť tak, aby boli vidieť aj
   tlačidlá — presne tá istá poistka ako v koncepte. */
@media (min-width: 901px) and (max-height: 860px) {
	.ox-v-3ed__mriezka { padding-block: clamp(26px, 3.4vh, 52px); gap: 30px; }
	.ox-v-3ed__h1 { font-size: clamp(38px, 5.1vw, 66px); }
	.ox-v-3ed__lead { margin-top: 14px; font-size: 15.5px; line-height: 1.55; }
	.ox-v-3ed__akcie { margin-top: 20px; }
	.ox-v-3ed__odznak { margin-bottom: 14px; }
	.ox-v-3ed__foto img { max-height: 46vh; }
}

/* =============================================================================
   04-candy — hrdina „cukríkový pult“ (verne podľa konceptu 04-candy.html)
   -----------------------------------------------------------------------------
   Ružovo-krémové škvrny na bielej, plátno so skákajúcimi bobuľami, vľavo sadzba
   s červeným riadkom, vpravo kruhový výrez fotky v bielo-ružovom prstenci s
   dvoma nálepkami, dole pomôcka a pod hrdinom červený bežiaci pás.

   Hrdina má vlastné NEPRIEHĽADNÉ pozadie: pod stránkou beží efekt témy s tými
   istými bobuľami cez celé okno a dve vrstvy rovnakých guľôčok by sa bili.
   Pohyb zapína trieda `--pohyb` (dáva ju JS podľa OXO_POHYB), nie médiá-otázka —
   inak by prepínač „◐“ na zostave so systémovým obmedzením animácií nič nerobil.
   ========================================================================== */
.ox-v-04c {
	position: relative; isolation: isolate;
	display: grid; align-items: center;
	padding: 0;                       /* rytmus si riadi vnútro, nie základ */
	min-height: min(86svh, 840px);
	overflow: hidden;
	/* dve škvrny z konceptu: ružová vpravo hore, krémová vľavo dole */
	background:
		radial-gradient(90% 70% at 78% 12%, var(--sk-ruz) 0%, transparent 62%),
		radial-gradient(70% 60% at 8% 88%, var(--sk-krem) 0%, transparent 60%),
		var(--sk-biela);
}
.ox-v-04c__platno {
	position: absolute; inset: 0; z-index: 1;
	width: 100%; height: 100%; display: block;
	touch-action: manipulation;       /* klik vyhodí bobule, prst stále scrolluje */
}
/* biele stlmenie pri spodnej hrane — bobule tam „zapadnú“ za mliečne sklo */
.ox-v-04c::after {
	content: ''; position: absolute; left: 0; right: 0; bottom: 0;
	height: 110px; z-index: 2; pointer-events: none;
	background: linear-gradient(to top, var(--sk-biela), transparent);
}

.ox-v-04c__vnutro {
	position: relative; z-index: 3;
	display: grid; align-items: center;
	grid-template-columns: minmax(0, 1.15fr) minmax(0, .85fr);
	gap: clamp(20px, 3.4vw, 44px);
	padding-block: clamp(34px, 5vw, 74px);
	pointer-events: none;             /* kliky prechádzajú na plátno… */
}
.ox-v-04c__vnutro a, .ox-v-04c__vnutro button { pointer-events: auto; }   /* …okrem odkazov */
.ox-v-04c__text { position: relative; z-index: 2; }

.ox-v-04c__h1 {
	margin: 14px 0 20px;
	/* Luckiest Guy je široké písmo: nad ~5,4vw sa „ktoré v ústach“ zlomí na dva
	   riadky a hrdina prerastie cez ohyb aj na 900 px vysokom okne. */
	font-size: clamp(38px, 5.4vw, 86px);
	line-height: var(--sk-nadpis-lh);
	text-wrap: initial;               /* riadky lámu <br>, nie prehliadač */
}
/* červený „výkrik“ na treťom riadku — v koncepte `.hero h1 .lg` */
.ox-v-04c__lg {
	display: block; color: var(--sk-akcent);
	font-size: .62em; line-height: var(--sk-nadpis-lh); padding-top: .06em;
}
.ox-v-04c__lead { max-width: 52ch; margin: 0; font-size: clamp(15px, 1.4vw, 19px); line-height: 1.7; }
.ox-v-04c__akcie { display: flex; flex-wrap: wrap; gap: 14px; margin-top: 30px; }
.ox-v-04c__chipy { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 26px; }
.ox-v-04c__chipy .ox-chip { cursor: default; }   /* sú to prísľuby, nie filtre */

/* Kruhový výrez fotky ------------------------------------------------------- */
.ox-v-04c__art { position: relative; display: grid; place-items: center; padding: 14px; }
.ox-v-04c__ram {
	position: relative; display: block; width: min(86%, 420px); aspect-ratio: 1;
	border-radius: 50%; overflow: hidden; background: var(--sk-biela);
	box-shadow: 0 0 0 10px var(--sk-biela), 0 0 0 20px var(--sk-ruz), var(--sk-tien);
}
.ox-v-04c__ram img { width: 100%; height: 100%; object-fit: cover; }
/* Katalógová fotka má produkt v strede a biele pozadie — výrezom by sme jej
   odrezali okraje, preto ju do kruhu vpasujeme celú. */
.ox-v-04c__ram--katalog img { object-fit: contain; padding: 9%; }
.ox-v-04c--pohyb .ox-v-04c__ram { animation: ox-04c-hojda 5.2s ease-in-out infinite; }
@keyframes ox-04c-hojda {
	0%, 100% { transform: translateY(0) rotate(-1.5deg); }
	50%      { transform: translateY(-22px) rotate(1.5deg); }
}

.ox-v-04c__nalepka {
	position: absolute; z-index: 4; display: grid; place-items: center; text-align: center;
	border-radius: var(--sk-r-pilulka); padding: 12px;
	background: var(--sk-akcent); color: var(--sk-biela);
	font-family: var(--sk-font-display); line-height: var(--sk-nadpis-lh);
	box-shadow: var(--sk-tien);
}
/* menšie natočenie + väčšie písmo = čitateľné (poznámka z konceptu) */
.ox-v-04c__nalepka--a { top: 2%; right: -1%; width: 126px; height: 126px; font-size: 17px; transform: rotate(-7deg); }
.ox-v-04c__nalepka--b { bottom: 6%; left: -3%; width: 112px; height: 112px; font-size: 16px; transform: rotate(6deg); background: var(--sk-atrament); }
.ox-v-04c--pohyb .ox-v-04c__nalepka--a { animation: ox-04c-kyv-a 4.4s ease-in-out infinite; }
.ox-v-04c--pohyb .ox-v-04c__nalepka--b { animation: ox-04c-kyv-b 5.6s ease-in-out infinite; }
@keyframes ox-04c-kyv-a { 0%, 100% { transform: rotate(-7deg) scale(1); } 50% { transform: rotate(-2deg) scale(1.04); } }
@keyframes ox-04c-kyv-b { 0%, 100% { transform: rotate(6deg) scale(1); }  50% { transform: rotate(1deg) scale(1.04); } }

/* popiska so skutočným produktom (koncept ju nemal — hrdina e-shopu predáva) */
.ox-v-04c__popiska {
	/* stĺpec je grid s `place-items:center`, takže položka má šírku obsahu —
	   bez stropu by dlhý názov produktu vytiekol do stĺpca so sadzbou */
	max-width: 100%; margin: 20px 0 0; font-size: 12.5px; line-height: 1.5;
	color: var(--sk-text-tlmeny); text-align: center;
}
.ox-v-04c__popiska[hidden] { display: none; }
.ox-v-04c__popiska b { color: var(--sk-text); font-weight: 600; }
.ox-v-04c__popiska a { color: var(--sk-akcent); font-weight: 700; white-space: nowrap; }

/* Pomôcka „Klikni do bubliniek“ — bez pohybu nemá zmysel pozývať na klikanie -- */
.ox-v-04c__hint { display: none; }
.ox-v-04c--pohyb .ox-v-04c__hint {
	display: inline-flex; align-items: center;
	position: absolute; left: 50%; bottom: 22px; z-index: 4;
	padding: 10px 20px; border-radius: var(--sk-r-pilulka);
	background: var(--sk-biela);      /* cez bubliny bol priesvitný nečitateľný */
	box-shadow: var(--sk-tien-karta), var(--sk-obrys);
	font-size: 12.5px; font-weight: 600; letter-spacing: .05em;
	color: var(--sk-text-tlmeny); white-space: nowrap; pointer-events: none;
	animation: ox-04c-pulz 2.6s ease-in-out infinite;
}
@keyframes ox-04c-pulz {
	0%, 100% { transform: translate(-50%, 0); }
	50%      { transform: translate(-50%, -6px); }
}

/* Bežiaci pás pod hrdinom ---------------------------------------------------- */
.ox-v-04c-pas {
	position: relative; z-index: 5; overflow: hidden; padding: 16px 0;
	background: var(--sk-akcent); color: var(--sk-biela);
}
.ox-v-04c-pas__stopa { display: flex; width: max-content; }
.ox-v-04c-pas__stopa span {
	display: inline-flex; align-items: center; gap: 12px;
	padding-inline: 17px; white-space: nowrap;
	font-family: var(--sk-font-display);
	font-size: clamp(18px, 2.3vw, 30px); line-height: var(--sk-nadpis-lh);
}
.ox-v-04c-pas__stopa i { font-style: normal; opacity: .55; }
/* stopa je dvakrát tá istá štvorica, posun o -50 % je preto neviditeľný */
.ox-v-04c-pas--pohyb .ox-v-04c-pas__stopa { animation: ox-04c-pas 26s linear infinite; }
@keyframes ox-04c-pas { to { transform: translateX(-50%); } }

/* Podpisová sekcia „Štyri kroky a je to“ ------------------------------------- */
.ox-v-04c-krok { position: relative; }
.ox-v-04c-krok__emo { position: absolute; top: 20px; right: 22px; font-size: 26px; line-height: 1; }
.ox-v-04c-krok h3 { margin-bottom: 8px; }
.ox-v-04c-krok p { margin: 0; font-size: 14px; }

/* Užšie okná ----------------------------------------------------------------- */
@media (max-width: 980px) {
	/* ako v koncepte: jeden stĺpec, sadzba na stred, fotka nad textom */
	.ox-v-04c { min-height: auto; }
	.ox-v-04c__vnutro { grid-template-columns: 1fr; text-align: center; gap: 14px; padding-block: clamp(26px, 6vw, 48px); }
	.ox-v-04c__lead { margin-inline: auto; }
	.ox-v-04c__akcie, .ox-v-04c__chipy { justify-content: center; }
	.ox-v-04c__art { order: -1; margin-bottom: 6px; }
	.ox-v-04c__nalepka--a { top: 0; right: -4px; width: 104px; height: 104px; font-size: 13px; }
	.ox-v-04c__nalepka--b { left: -6px; width: 88px; height: 88px; font-size: 12px; }
	.ox-v-04c--pohyb .ox-v-04c__hint { display: none; }
}
@media (max-width: 430px) {
	.ox-v-04c__akcie .ox-btn { flex: 1 1 100%; }   /* dve pilulky vedľa seba by sa lámali */
	.ox-v-04c__ram { width: min(76%, 300px); }
	.ox-v-04c__nalepka--a { width: 88px; height: 88px; font-size: 12px; }
	.ox-v-04c__nalepka--b { width: 76px; height: 76px; font-size: 11px; }
}
/* Nízke notebooky: nad hrdinom je ešte lišta návrhov (44 px) a hlavička (74 px),
   pri plnej veľkosti nadpisu by chipy vypadli pod ohyb. */
@media (min-width: 981px) and (max-height: 860px) {
	.ox-v-04c { min-height: min(92svh, 640px); }
	.ox-v-04c__h1 { font-size: clamp(34px, 4.8vw, 70px); margin: 10px 0 16px; }
	.ox-v-04c__lead { font-size: 16px; line-height: 1.6; }
	.ox-v-04c__akcie { margin-top: 22px; }
	.ox-v-04c__chipy { margin-top: 18px; }
	.ox-v-04c__ram { width: min(74%, 330px); }
}

/* =============================================================================
   05-arcade — hrdina „arkádová skrinka“ (verne podľa konceptu 05-arcade.html)
   -----------------------------------------------------------------------------
   Vľavo sadzba (Insert coin → nadpis → lead → tlačidlá → tri fakty), vpravo
   herný automat: čierna lišta, aréna s plátnom hry, HUD, štartovacia obrazovka
   a pätka s postupom k zľave. Pod hrdinom červený bežiaci pás.

   Hrdina má vlastné NEPRIEHĽADNÉ pozadie: efekt témy (assets/temy/efekty/05-arcade.js)
   kreslí cez celú stránku tie isté padajúce pixelové bobule a cez priesvitnú
   plochu by sa bili s bobuľami v aréne.

   Firemná červená #FF1600 je podľa KONTRAKT.md nemenná — kde treba priehľadnosť
   (posunuté tiene, žiara), je zapísaná ako rgba(255,22,0,…): tokeny s alfou
   pracovať nevedia.
   ========================================================================== */
.ox-v-ark {
	padding-block: clamp(34px, 5vw, 72px) clamp(40px, 5.5vw, 82px);
	background:
		radial-gradient(46vw 46vw at 6% -6%, var(--sk-krem) 0%, rgba(255, 247, 230, 0) 62%),
		var(--sk-biela);
}
.ox-v-ark__mriezka {
	display: grid; align-items: center;
	grid-template-columns: minmax(0, 1fr) minmax(0, .92fr);
	gap: clamp(28px, 4vw, 60px);
}

/* Sadzba vľavo ------------------------------------------------------------- */
.ox-v-ark__oko {
	display: inline-flex; align-items: center; gap: 9px; margin-bottom: 18px;
	font-size: 11px; font-weight: 700; letter-spacing: .2em; text-transform: uppercase;
	color: var(--sk-akcent);
}
.ox-v-ark__oko em { width: 9px; height: 9px; background: var(--sk-akcent); font-style: normal; flex: 0 0 auto; }
.ox-v-ark__h1 {
	margin: 0; font-size: clamp(40px, 7vw, 96px);
	text-wrap: initial;                 /* riadky lámu <br>, nie prehliadač */
}
/* <u> nesie červené „Vyhraj zľavu.“ — podčiarknutie by v Antone splynulo. */
.ox-v-ark__h1 u { text-decoration: none; color: var(--sk-akcent); text-shadow: 0 0 30px rgba(255, 22, 0, .32); }
.ox-v-ark__lead {
	max-width: 44ch; margin: 20px 0 0;
	color: var(--sk-text-tlmeny); font-size: clamp(15px, 1.15vw, 17.5px); line-height: 1.65;
}
.ox-v-ark__akcie { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 28px; }
.ox-v-ark__btn { padding: 15px 26px; font-size: 13px; letter-spacing: .14em; }
.ox-v-ark__fakty {
	display: flex; flex-wrap: wrap; gap: 22px;
	margin-top: 30px; padding-top: 22px; border-top: 2px dashed var(--sk-linka);
}
.ox-v-ark__fakt b {
	display: block; font-family: var(--sk-font-nadpis); font-size: 26px;
	line-height: var(--sk-nadpis-lh); padding-top: .05em; color: var(--sk-text);
}
.ox-v-ark__fakt span {
	font-size: 11.5px; font-weight: 600; letter-spacing: .08em;
	text-transform: uppercase; color: var(--sk-text-tlmeny);
}

/* Skrinka automatu --------------------------------------------------------- */
.ox-v-ark__skrinka {
	position: relative; display: flex; flex-direction: column; min-width: 0;
	background: var(--sk-biela);
	box-shadow: inset 0 0 0 3px var(--sk-atrament), 14px 14px 0 rgba(255, 22, 0, .16);
}
.ox-v-ark__vrch {
	display: flex; align-items: center; gap: 10px; padding: 12px 14px;
	background: var(--sk-atrament); color: var(--sk-biela);
	border-bottom: 3px solid var(--sk-atrament);
}
.ox-v-ark__dioda { width: 10px; height: 10px; background: var(--sk-akcent); flex: 0 0 auto; }
.ox-v-ark__ttl {
	font-family: var(--sk-font-display); font-size: 12.5px; letter-spacing: .13em;
	line-height: var(--sk-nadpis-lh); padding-top: .06em;
}
.ox-v-ark__verzia {
	margin-left: auto; font-size: 10.5px; font-weight: 700; letter-spacing: .16em;
	opacity: .72; font-variant-numeric: tabular-nums;
}

/* Aréna: podklad je z konceptu (ruž zhora, krém dole) a je nepriehľadný ----- */
.ox-v-ark__arena {
	position: relative; overflow: hidden;
	aspect-ratio: 4 / 4.35; min-height: 320px;
	background:
		radial-gradient(120% 90% at 50% 0%, var(--sk-ruz) 0%, rgba(255, 217, 214, 0) 58%),
		linear-gradient(180deg, var(--sk-biela) 0%, var(--sk-krem) 100%);
	cursor: crosshair; touch-action: manipulation; user-select: none; -webkit-user-select: none;
}
.ox-v-ark__platno { position: absolute; inset: 0; width: 100%; height: 100%; display: block; }
.ox-v-ark__scan {
	position: absolute; inset: 0; z-index: 3; pointer-events: none;
	background: repeating-linear-gradient(180deg, rgba(27, 27, 27, .055) 0 1px, transparent 1px 4px);
}
.ox-v-ark__vineta {
	position: absolute; inset: 0; z-index: 3; pointer-events: none;
	box-shadow: inset 0 0 70px rgba(27, 27, 27, .13), inset 0 0 0 1px rgba(27, 27, 27, .08);
}

/* HUD nad plátnom. Kým beží štartovacia obrazovka, je skrytý — cez rozmazané
   prekrytie pôsobil ako „duchovia“ (rovnaká poznámka je v koncepte). */
.ox-v-ark__hud {
	position: absolute; inset: 0; z-index: 4; pointer-events: none; padding: 14px;
	opacity: 0; visibility: hidden; transition: opacity .35s ease, visibility .35s ease;
}
.ox-v-ark__arena--hra .ox-v-ark__hud { opacity: 1; visibility: visible; }
.ox-v-ark__hudrad { display: flex; flex-wrap: wrap; gap: 8px; align-items: flex-start; }
.ox-v-ark__hudbox {
	background: rgba(255, 255, 255, .92); box-shadow: inset 0 0 0 2px var(--sk-atrament);
	padding: 7px 11px; min-width: 0;
}
.ox-v-ark__hudbox small {
	display: block; font-size: 9.5px; font-weight: 700; letter-spacing: .16em;
	color: var(--sk-text-tlmeny);
}
.ox-v-ark__hudbox b {
	display: block; font-family: var(--sk-font-nadpis); font-size: 22px;
	line-height: var(--sk-nadpis-lh); padding-top: .06em;
}
.ox-v-ark__hudbox--hlavny b { color: var(--sk-akcent); }
.ox-v-ark__combo {
	margin-left: auto; background: var(--sk-akcent); color: var(--sk-biela);
	padding: 9px 12px 7px; font-family: var(--sk-font-nadpis); font-size: 16px;
	line-height: var(--sk-nadpis-lh); white-space: nowrap;
	opacity: 0; transform: translateY(-6px); transition: .22s var(--sk-prechod);
}
.ox-v-ark__combo--on { opacity: 1; transform: none; }

/* Štartovacia obrazovka ---------------------------------------------------- */
.ox-v-ark__start {
	position: absolute; inset: 0; z-index: 6;
	display: grid; place-content: center; justify-items: center; gap: 14px;
	text-align: center; padding: 24px;
	background: rgba(255, 255, 255, .82); backdrop-filter: blur(3px); -webkit-backdrop-filter: blur(3px);
	transition: opacity .35s var(--sk-prechod), visibility .35s;
}
.ox-v-ark__start--prec { opacity: 0; visibility: hidden; pointer-events: none; }
.ox-v-ark__starth {
	margin: 0; font-family: var(--sk-font-nadpis); text-transform: uppercase;
	font-size: clamp(22px, 3.2vw, 34px); line-height: var(--sk-nadpis-lh); padding-top: .05em;
}
.ox-v-ark__startp { margin: 0; font-size: 13px; color: var(--sk-text-tlmeny); max-width: 30ch; }
.ox-v-ark__press {
	border: 0; cursor: pointer;
	background: var(--sk-akcent); color: var(--sk-biela);
	font-family: var(--sk-font-nadpis); text-transform: uppercase; letter-spacing: .06em;
	font-size: 20px; line-height: var(--sk-nadpis-lh); padding: 15px 30px 13px;
	filter: drop-shadow(0 0 22px rgba(255, 22, 0, .5));
	animation: ox-ark-pulz 1.5s ease-in-out infinite;
	transition: transform .18s var(--sk-prechod);
}
.ox-v-ark__press:hover { transform: scale(1.05); }
.ox-v-ark__press[hidden] { display: none; }
@keyframes ox-ark-pulz {
	0%, 100% { filter: drop-shadow(0 0 12px rgba(255, 22, 0, .35)); }
	50%      { filter: drop-shadow(0 0 30px rgba(255, 22, 0, .7)); }
}

/* Pätka skrinky: postup, kód, reštart -------------------------------------- */
.ox-v-ark__spodok { border-top: 3px solid var(--sk-atrament); padding: 14px; }
.ox-v-ark__plabel {
	display: flex; justify-content: space-between; align-items: center; gap: 10px;
	margin-bottom: 8px; font-size: 10.5px; font-weight: 700; letter-spacing: .13em;
	text-transform: uppercase; color: var(--sk-text-tlmeny);
}
.ox-v-ark__plabel span:last-child { font-variant-numeric: tabular-nums; letter-spacing: .06em; }
.ox-v-ark__bar { display: grid; grid-template-columns: repeat(10, 1fr); gap: 4px; height: 16px; }
.ox-v-ark__bar i { background: var(--sk-ruz); box-shadow: inset 0 0 0 1.5px rgba(27, 27, 27, .16); transition: background .25s, box-shadow .25s; }
.ox-v-ark__bar i.ox-v-ark__bar-on { background: var(--sk-akcent); box-shadow: inset 0 0 0 1.5px var(--sk-akcent-tmavy); }
.ox-v-ark__odomk {
	display: flex; align-items: center; flex-wrap: wrap; gap: 10px;
	margin-top: 13px; padding: 13px; background: var(--sk-atrament); color: var(--sk-biela);
	animation: ox-ark-pad .5s var(--sk-prechod);
}
.ox-v-ark__odomk[hidden] { display: none; }   /* inak by flex prebil atribút hidden */
@keyframes ox-ark-pad { from { opacity: 0; transform: translateY(10px); } }
.ox-v-ark__kod {
	font-family: var(--sk-font-nadpis); font-size: 22px; line-height: var(--sk-nadpis-lh);
	padding: 7px 13px 5px; background: var(--sk-akcent); letter-spacing: .1em;
}
.ox-v-ark__odomk small { font-size: 11px; opacity: .82; flex: 1 1 130px; min-width: 130px; line-height: 1.45; }
.ox-v-ark__kopiruj {
	background: none; border: 0; cursor: pointer; color: inherit; text-decoration: none;
	font-size: 10.5px; font-weight: 700; letter-spacing: .12em; text-transform: uppercase;
	padding: 9px 13px; box-shadow: inset 0 0 0 2px rgba(255, 255, 255, .35);
	transition: background .2s var(--sk-prechod), color .2s var(--sk-prechod);
}
.ox-v-ark__kopiruj:hover { background: var(--sk-biela); color: var(--sk-atrament); }
.ox-v-ark__restart {
	margin-top: 11px; background: none; border: 0; padding: 4px 0; cursor: pointer;
	font-size: 10.5px; font-weight: 700; letter-spacing: .12em; text-transform: uppercase;
	color: var(--sk-text-tlmeny); transition: color .2s var(--sk-prechod);
}
.ox-v-ark__restart::after { content: "_"; margin-left: .2em; color: var(--sk-akcent); animation: ox-ark-blik 1s steps(2, end) infinite; }
.ox-v-ark__restart:hover { color: var(--sk-akcent); }

/* Blikanie diódy aj kurzora ------------------------------------------------ */
.ox-v-ark__oko em, .ox-v-ark__dioda { animation: ox-ark-blik 1.2s steps(2, end) infinite; }
@keyframes ox-ark-blik { 50% { opacity: 0; } }

/* Bežiaci pás pod hrdinom -------------------------------------------------- */
.ox-v-ark-pas {
	position: relative; z-index: 5; overflow: hidden;
	background: var(--sk-akcent); color: var(--sk-biela);
	border-block: 3px solid var(--sk-atrament); padding: 12px 0;
}
.ox-v-ark-pas__stopa { display: flex; width: max-content; animation: ox-ark-pas 26s linear infinite; }
.ox-v-ark-pas__stopa span {
	display: inline-flex; align-items: center; gap: 22px;
	font-family: var(--sk-font-nadpis); text-transform: uppercase;
	font-size: clamp(15px, 2vw, 19px); line-height: var(--sk-nadpis-lh); padding-top: .06em;
	padding-inline: 22px; white-space: nowrap;
}
.ox-v-ark-pas__stopa span::after { content: ""; width: 9px; height: 9px; background: var(--sk-biela); flex: 0 0 auto; }
@keyframes ox-ark-pas { to { transform: translateX(-50%); } }

/* Vypnutý pohyb (prepínač v lište aj systémové nastavenie) ------------------ */
.ox-v-ark--bezpohybu .ox-v-ark__oko em,
.ox-v-ark--bezpohybu .ox-v-ark__dioda,
.ox-v-ark--bezpohybu .ox-v-ark__restart::after,
.ox-v-ark--bezpohybu .ox-v-ark__press,
.ox-v-ark-pas--bezpohybu .ox-v-ark-pas__stopa { animation: none; }
@media (prefers-reduced-motion: reduce) {
	.ox-v-ark__oko em, .ox-v-ark__dioda, .ox-v-ark__restart::after,
	.ox-v-ark__press, .ox-v-ark-pas__stopa, .ox-v-ark__odomk { animation: none; }
}

/* Podpisová sekcia — výsledková tabuľka „Čo dostanete“ --------------------- */
.ox-v-ark-board__uvod { max-width: 38ch; margin: 0; font-size: 15px; }
.ox-v-ark-board { box-shadow: inset 0 0 0 2px var(--sk-atrament); background: var(--sk-biela); }
.ox-v-ark-board__hlava {
	display: flex; align-items: center; justify-content: space-between; gap: 12px;
	padding: 13px 16px; background: var(--sk-atrament); color: var(--sk-biela);
	font-size: 10.5px; font-weight: 700; letter-spacing: .17em; text-transform: uppercase;
}
.ox-v-ark-board__zoznam { list-style: none; margin: 0; padding: 0; }
.ox-v-ark-board__zoznam li {
	display: flex; align-items: center; gap: 14px; padding: 15px 16px;
	border-bottom: 1px dashed var(--sk-linka); transition: background .2s var(--sk-prechod);
}
.ox-v-ark-board__zoznam li:last-child { border-bottom: 0; }
.ox-v-ark-board__zoznam li:hover { background: var(--sk-krem); }
.ox-v-ark-board__rk { flex: 0 0 30px; font-family: var(--sk-font-nadpis); font-size: 16px; line-height: var(--sk-nadpis-lh); color: var(--sk-akcent); }
.ox-v-ark-board__tx { min-width: 0; }
.ox-v-ark-board__tx b { display: block; font-size: 14.5px; font-weight: 700; }
.ox-v-ark-board__tx span { font-size: 12.8px; color: var(--sk-text-tlmeny); }
.ox-v-ark-board__pt { margin-left: auto; font-family: var(--sk-font-nadpis); font-size: 15px; line-height: var(--sk-nadpis-lh); white-space: nowrap; }
.ox-v-ark-board__pata {
	display: flex; flex-wrap: wrap; gap: 11px; padding: 16px;
	background: var(--sk-krem); border-top: 2px solid var(--sk-atrament);
}

/* Užšie okná --------------------------------------------------------------- */
@media (max-width: 1000px) {
	/* jeden stĺpec ako v koncepte — skrinka ide pod sadzbu a zúži sa */
	.ox-v-ark__mriezka { grid-template-columns: 1fr; }
	.ox-v-ark__skrinka { width: 100%; max-width: 560px; margin-inline: auto; }
	.ox-v-ark__arena { aspect-ratio: 4 / 3.9; }
	.ox-v-ark__lead { max-width: none; }
}
@media (max-width: 620px) {
	.ox-v-ark__fakty { gap: 16px; }
	.ox-v-ark__hudbox { padding: 6px 9px; }
	.ox-v-ark__hudbox b { font-size: 19px; }
	.ox-v-ark__combo { font-size: 14px; padding: 8px 10px 6px; }
	.ox-v-ark__bar { gap: 3px; height: 14px; }
	.ox-v-ark__kod { font-size: 19px; }
}
@media (max-width: 430px) {
	/* dve tlačidlá vedľa seba by sa na 390 px lámali do písmen */
	.ox-v-ark__btn { flex: 1 1 100%; }
	.ox-v-ark__arena { min-height: 300px; }
	.ox-v-ark__hud { padding: 10px; }
	.ox-v-ark__spodok, .ox-v-ark__vrch { padding: 11px; }
	.ox-v-ark__ttl { font-size: 11px; letter-spacing: .1em; }
}
/* Nízke notebooky: skrinka aj tlačidlá sa musia zmestiť nad ohyb. */
@media (min-width: 1001px) and (max-height: 860px) {
	.ox-v-ark { padding-block: 30px 44px; }
	.ox-v-ark__h1 { font-size: clamp(36px, 4.8vw, 66px); }
	.ox-v-ark__lead { margin-top: 14px; font-size: 15.5px; line-height: 1.55; }
	.ox-v-ark__akcie { margin-top: 20px; }
	.ox-v-ark__fakty { margin-top: 20px; padding-top: 16px; }
	.ox-v-ark__arena { min-height: 260px; aspect-ratio: 4 / 3.4; }
}

/* =============================================================================
   === 06-motion — hrdina „tri typografické stavy“ =============================
   Verne podľa konceptu 06-motion.html: plátno s perleťovými bobuľami a dvoma
   prstencami, biely závoj, fotka bobúľ vľavo hore, pohár vpravo dole, v strede
   striedajúce sa nadpisy, dole ovládanie a „Scrolluj“, pod hrdinom červený pás.
   Pohyb je zapnutý triedou `--pohyb` (dáva ju JS podľa OXO_POHYB), nie
   médiá-otázkou: jadro systémové nastavenie už zohľadnilo a lišta ho vie prebiť.
   ========================================================================== */
.ox-v-pohyb {
	padding: 0;
	min-height: min(84vh, 780px);
	display: grid;
	grid-template-rows: minmax(0, 1fr) auto;
	/* vlastné NEPRIEHĽADNÉ pozadie — pod stránkou beží efekt témy s tou istou
	   scénou a dve vrstvy rovnakých bobúľ by sa bili */
	background: radial-gradient(64% 52% at 50% 40%, var(--sk-krem) 0%, var(--sk-biela) 62%);
}
.ox-v-pohyb__platno { position: absolute; inset: 0; z-index: 0; display: block; width: 100%; height: 100%; }
/* biely závoj medzi bobuľami a sadzbou — bez neho je typografia „zašumená“ */
.ox-v-pohyb__zavoj {
	position: absolute; inset: 0; z-index: 1; pointer-events: none; display: block;
	/* Priehľadnosť rieši `opacity`, nie rgba() v gradiente — farby smú prísť len
	   z tokenov a tie sú nepriehľadné hexy. Koncept mal v strede 0,88. */
	opacity: .92;
	background:
		radial-gradient(50% 38% at 50% 42%, var(--sk-biela) 0%, var(--sk-biela) 28%, transparent 78%),
		radial-gradient(64% 56% at 50% 45%, var(--sk-krem) 0%, transparent 72%);
}

/* --- javisko s troma stavmi ------------------------------------------------ */
.ox-v-pohyb__javisko {
	position: relative; z-index: 3; grid-row: 1; min-width: 0;
	display: grid; grid-template-areas: "stav"; place-items: center; text-align: center;
	padding: clamp(44px, 7vh, 92px) var(--sk-pad) clamp(14px, 2.6vh, 30px);
	pointer-events: none;                 /* kliky patria plátnu a fotkám pod ním */
}
.ox-v-pohyb__stav {
	grid-area: stav;                      /* všetky tri v jednej bunke → nič neposkakuje */
	width: 100%; max-width: 62rem; min-width: 0;
	display: flex; flex-direction: column; align-items: center; gap: 14px;
	visibility: hidden; opacity: 0;
}
.ox-v-pohyb__stav--aktivny, .ox-v-pohyb__stav--odchod { visibility: visible; opacity: 1; }
.ox-v-pohyb__stav a, .ox-v-pohyb__stav button { pointer-events: auto; }
.ox-v-pohyb__stav .ox-oko { margin-bottom: 0; }
.ox-v-pohyb__h1, .ox-v-pohyb__h2 { margin: 0; max-width: 100%; }
.ox-v-pohyb__h1 { font-size: clamp(38px, 8.6vw, 124px); }
.ox-v-pohyb__h2 { font-size: clamp(32px, 6.4vw, 88px); }
.ox-v-pohyb__lead {
	margin: 0; max-width: 44ch; color: var(--sk-text-tlmeny);
	font-size: clamp(15px, 1.15vw, 18px); line-height: 1.6;
}
.ox-v-pohyb__akcie { display: flex; flex-wrap: wrap; justify-content: center; gap: 12px; margin-top: 4px; }
.ox-v-pohyb__pilulka {
	display: inline-flex; align-items: center; gap: 10px;
	font-size: 11px; font-weight: 700; letter-spacing: .24em; text-transform: uppercase;
	color: var(--sk-text); background: var(--sk-biela);
	border: 1px solid var(--sk-linka); border-radius: var(--sk-r-pilulka); padding: 9px 18px;
}
.ox-v-pohyb__pilulka i { width: 7px; height: 7px; border-radius: 50%; background: var(--sk-akcent); flex: 0 0 auto; }
.ox-v-pohyb--pohyb .ox-v-pohyb__pilulka i { animation: ox-pohyb-tep 1.9s var(--sk-prechod) infinite; }
@keyframes ox-pohyb-tep { 0%, 100% { transform: scale(1); opacity: 1; } 50% { transform: scale(1.55); opacity: .45; } }

/* --- sadzba po písmenách ---------------------------------------------------
   Maska je na SLOVE a má zámerne veľký zvislý padding s rovnakým záporným
   marginom: Anton inak nechá mäkčene a dĺžne orezané o hranu masky. */
.ox-v-pohyb__slovo {
	display: inline-block; overflow: hidden; vertical-align: top; white-space: nowrap;
	padding: .2em .04em .12em; margin: -.2em -.04em -.12em;
}
.ox-v-pohyb__znak { display: inline-block; }
.ox-v-pohyb--pohyb .ox-v-pohyb__stav--aktivny .ox-v-pohyb__znak {
	animation: ox-pohyb-vjazd 1s var(--sk-prechod) both;
	animation-delay: calc(var(--i, 0) * .026s);
}
.ox-v-pohyb--pohyb .ox-v-pohyb__stav--odchod .ox-v-pohyb__znak {
	animation: ox-pohyb-odchod .3s cubic-bezier(.55, 0, .9, .35) both;
	animation-delay: calc(var(--o, 0) * .006s);   /* odchod ide od konca nadpisu */
}
.ox-v-pohyb--pohyb .ox-v-pohyb__stav--aktivny .ox-v-pohyb__cast {
	animation: ox-pohyb-nabeh .8s var(--sk-prechod) both; animation-delay: var(--d, 0s);
}
.ox-v-pohyb--pohyb .ox-v-pohyb__stav--odchod .ox-v-pohyb__cast { animation: ox-pohyb-zhasni .24s ease-in both; }
@keyframes ox-pohyb-vjazd { from { transform: translateY(118%); } to { transform: none; } }
@keyframes ox-pohyb-odchod { from { transform: none; } to { transform: translateY(-120%); } }
@keyframes ox-pohyb-nabeh { from { opacity: 0; transform: translateY(26px); } to { opacity: 1; transform: none; } }
@keyframes ox-pohyb-zhasni { to { opacity: 0; transform: translateY(-26px); } }

/* --- fotka bobúľ a pohár --------------------------------------------------- */
.ox-v-pohyb__boba {
	position: absolute; z-index: 2; margin: 0;
	left: calc(var(--sk-pad) - 6px); top: 17%; width: clamp(120px, 15vw, 235px);
}
.ox-v-pohyb__ram {
	display: block; aspect-ratio: 16 / 10; overflow: hidden;
	border-radius: var(--sk-r-obrazok); background: var(--sk-biela);
	box-shadow: var(--sk-tien); will-change: transform;
}
.ox-v-pohyb__ram img { width: 100%; height: 100%; object-fit: cover; display: block; }
/* katalógová fotka má biele pozadie a produkt v strede → nerežeme, vpasujeme */
.ox-v-pohyb__ram--katalog img { object-fit: contain; padding: 8%; }
.ox-v-pohyb__popiska {
	display: flex; flex-direction: column; gap: 2px; margin-top: 10px;
	font-size: 11.5px; line-height: 1.35; color: var(--sk-text-tlmeny);
}
.ox-v-pohyb__popiska[hidden] { display: none; }   /* inak by flex prebil atribút hidden */
.ox-v-pohyb__popiska b { font-weight: 700; color: var(--sk-text); }
.ox-v-pohyb__popiska span { font-family: var(--sk-font-display); font-size: 15px; color: var(--sk-akcent); }
.ox-v-pohyb__pohar {
	position: absolute; z-index: 2; width: clamp(140px, 17vw, 265px); height: auto;
	right: calc(var(--sk-pad) - 6px); bottom: -6%;
	filter: drop-shadow(var(--sk-tien)); pointer-events: none; will-change: transform;
}

/* --- ovládanie stavov ------------------------------------------------------ */
.ox-v-pohyb__lista {
	position: relative; z-index: 4; grid-row: 2;
	display: flex; align-items: center; justify-content: center; flex-wrap: wrap; gap: 16px;
	padding: 0 var(--sk-pad) clamp(20px, 3.4vh, 34px);
}
.ox-v-pohyb__sipka {
	width: 44px; height: 44px; display: grid; place-items: center; cursor: pointer;
	border: 1.5px solid var(--sk-linka); border-radius: var(--sk-r-pilulka);
	background: var(--sk-biela); color: var(--sk-text);
	transition: border-color .4s var(--sk-prechod), color .4s var(--sk-prechod), transform .4s var(--sk-prechod);
}
.ox-v-pohyb__sipka:hover { border-color: var(--sk-akcent); color: var(--sk-akcent); transform: translateY(-2px); }
.ox-v-pohyb__sipka svg { width: 15px; height: 15px; }
.ox-v-pohyb__bodky { display: flex; align-items: center; gap: 10px; }
.ox-v-pohyb__bodka {
	width: 34px; height: 4px; padding: 0; border: 0; overflow: hidden; cursor: pointer;
	border-radius: var(--sk-r-pilulka); background: var(--sk-linka);
}
/* výplň bodky je zároveň ukazovateľ času do ďalšieho stavu (v koncepte to bol
   tenký prúžok progresu pod hlavičkou) */
.ox-v-pohyb__bodka i { display: block; width: 100%; height: 100%; background: var(--sk-akcent); transform: scaleX(0); transform-origin: left; }
.ox-v-pohyb__bodka--aktivna i { transform: scaleX(1); }
.ox-v-pohyb--pohyb .ox-v-pohyb__bodka--aktivna i { animation: ox-pohyb-plnenie var(--trvanie, 5.2s) linear both; }
@keyframes ox-pohyb-plnenie { from { transform: scaleX(0); } to { transform: scaleX(1); } }
.ox-v-pohyb__scroll {
	display: flex; flex-direction: column; align-items: center; gap: 7px;
	font-size: 10px; font-weight: 700; letter-spacing: .26em; text-transform: uppercase;
	color: var(--sk-text-tlmeny);
}
.ox-v-pohyb__scroll i { display: block; width: 1px; height: 32px; background: linear-gradient(var(--sk-akcent), transparent); }

/* --- červený bežiaci pás pod hrdinom --------------------------------------- */
.ox-v-pohyb-pas {
	position: relative; z-index: 5; overflow: hidden;
	background: var(--sk-akcent); color: var(--sk-biela); padding: 14px 0;
}
.ox-v-pohyb-pas__stopa { display: flex; width: max-content; }
.ox-v-pohyb-pas--pohyb .ox-v-pohyb-pas__stopa { animation: ox-pohyb-pas 26s linear infinite; }
.ox-v-pohyb-pas__stopa span {
	display: inline-flex; align-items: center; gap: 20px; white-space: nowrap; padding-inline: 20px;
	font-family: var(--sk-font-display); text-transform: uppercase;
	font-size: clamp(19px, 2.6vw, 32px); line-height: var(--sk-nadpis-lh);
}
.ox-v-pohyb-pas__stopa span::after { content: ""; width: 11px; height: 11px; border-radius: 999px; background: var(--sk-biela); flex: 0 0 auto; }
@keyframes ox-pohyb-pas { to { transform: translateX(-50%); } }

/* --- podpisová sekcia „Tri kroky a máš to“ --------------------------------- */
.ox-v-pohyb-krok { position: relative; overflow: hidden; }
.ox-v-pohyb-krok__cislo {
	position: absolute; right: 16px; top: 4px; pointer-events: none;
	font-family: var(--sk-font-nadpis); font-size: 72px; line-height: var(--sk-nadpis-lh);
	color: var(--sk-akcent); opacity: .16;
}
.ox-v-pohyb-krok__foto {
	display: grid; place-items: center; height: 158px; margin-bottom: 16px; overflow: hidden;
	background: var(--sk-biela); border-radius: var(--sk-r-obrazok); box-shadow: var(--sk-obrys);
}
.ox-v-pohyb-krok__foto img { max-height: 138px; width: auto; object-fit: contain; }
.ox-v-pohyb-krok h3 { position: relative; margin-bottom: 8px; }
.ox-v-pohyb-krok p { margin: 0; font-size: 14.5px; line-height: 1.62; }

/* --- užšie a nižšie okná --------------------------------------------------- */
@media (max-width: 820px) {
	.ox-v-pohyb { min-height: min(88svh, 700px); }
	/* fotky idú takmer za hranu — na 390 px by inak sedeli v nadpise */
	.ox-v-pohyb__boba { width: 118px; left: -30px; top: 12%; opacity: .9; }
	.ox-v-pohyb__pohar { width: 132px; right: -30px; bottom: -3%; opacity: .9; }
	.ox-v-pohyb__popiska { display: none; }
	.ox-v-pohyb__lead { font-size: 15px; }
}
@media (max-width: 620px) {
	.ox-v-pohyb__scroll { display: none; }          /* bar by sa inak zalamoval */
	/* pilulka sa na 390 px inak láme na dva riadky s osamoteným rokom */
	.ox-v-pohyb__pilulka { font-size: 10px; letter-spacing: .15em; padding: 8px 14px; }
	.ox-v-pohyb__lista { gap: 12px; }
	.ox-v-pohyb__akcie { width: 100%; }
	.ox-v-pohyb__akcie .ox-btn { flex: 1 1 100%; }  /* dve tlačidlá vedľa seba sa na 390 px lámu */
}
@media (max-height: 700px) {
	.ox-v-pohyb { min-height: 560px; }
	.ox-v-pohyb__scroll { display: none; }
}

/* =============================================================================
   07-fluid — hrdina „Tekutá radosť v pohári“ (verne podľa konceptu 07-fluid.html)
   -----------------------------------------------------------------------------
   Hrdina zámerne NEMÁ nepriehľadné pozadie: červená tekutina, ktorú kreslí efekt
   témy (assets/temy/efekty/07-fluid.js), JE jeho pozadím — presne ako canvas
   #fluid v koncepte. Čitateľnosť sadzby drží závoj `::before`: plocha --sk-bg,
   ktorej hustotu riadi maska. Tekutina sa drží vpravo dole, závoj je preto
   najsilnejší vľavo pod textom a vpravo sa úplne rozpustí.
   ========================================================================== */
.ox-v-fl {
	position: relative; isolation: isolate;
	display: flex; flex-direction: column; justify-content: center;
	min-height: 84vh; min-height: min(88svh, 860px);
	padding-block: clamp(28px, 4.4vw, 70px) clamp(76px, 9vw, 118px);
	overflow: hidden;
}
.ox-v-fl::before {
	content: ''; position: absolute; inset: 0; z-index: -1; pointer-events: none;
	background: var(--sk-bg);
	-webkit-mask-image: linear-gradient(100deg, rgba(0,0,0,.96) 0%, rgba(0,0,0,.9) 38%, rgba(0,0,0,.36) 62%, rgba(0,0,0,0) 84%);
	        mask-image: linear-gradient(100deg, rgba(0,0,0,.96) 0%, rgba(0,0,0,.9) 38%, rgba(0,0,0,.36) 62%, rgba(0,0,0,0) 84%);
}
/* Zrno — v koncepte je cez celú stránku, tu len nad hrdinom, aby nešpinilo
   produktové fotky v katalógu. Bez `mix-blend-mode`: multiply by na tmavej
   ploche zrno pohltil a difference nad červenou vyrába tyrkysovú (KONTRAKT.md). */
.ox-v-fl::after {
	content: ''; position: absolute; inset: 0; z-index: 3; pointer-events: none; opacity: .06;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}
.ox-v-fl__mriezka {
	position: relative; z-index: 2;
	display: grid; align-items: center;
	grid-template-columns: minmax(0, 1.15fr) minmax(0, .85fr);
	gap: clamp(20px, 3.4vw, 60px);
}

/* Sadzba vľavo ------------------------------------------------------------- */
.ox-v-fl__kick {
	display: inline-block; transform: rotate(-3.5deg); transform-origin: 0 100%;
	font-family: var(--sk-font-display); color: var(--sk-akcent);
	font-size: clamp(15px, 1.9vw, 26px); line-height: 1.3; padding-top: .1em; margin-bottom: .3em;
}
.ox-v-fl__h1 { margin: 0; font-size: clamp(2.9rem, 7.6vw, 8rem); }
/* Riadok je maska: text sa doň vysunie zospodu. `padding-top` je poistka, aby
   maska neodrezala dĺžne a mäkčene v Antone. */
.ox-v-fl__riadok { display: block; overflow: hidden; padding-top: .07em; }
.ox-v-fl__riadok > span { display: block; }
.ox-v-fl__h1 em { font-style: normal; color: var(--sk-akcent); }
.ox-v-fl__copy {
	max-width: 46ch; margin: clamp(12px, 1.6vw, 20px) 0 0;
	font-size: clamp(15px, 1.12vw, 17.5px); line-height: 1.68; color: var(--sk-text-tlmeny);
}
.ox-v-fl__akcie { display: flex; flex-wrap: wrap; gap: 12px; margin-top: clamp(18px, 2.2vw, 26px); }
.ox-v-fl__sip { display: inline-block; transition: transform .4s var(--sk-prechod); }
.ox-v-fl__btn:hover .ox-v-fl__sip { transform: translateX(4px); }
.ox-v-fl__pozn {
	display: flex; flex-wrap: wrap; gap: 6px 16px; margin: 16px 0 0;
	font-size: 12.8px; color: var(--sk-text-tlmeny);
}
.ox-v-fl__pozn span::before {
	content: '●'; color: var(--sk-akcent); font-size: .5em; vertical-align: .35em; margin-right: 7px;
}

/* Produkt v tekutej kvapke vpravo ------------------------------------------ */
.ox-v-fl__vizual { position: relative; display: grid; place-items: center; margin: 0; min-height: min(52vh, 460px); }
.ox-v-fl__kvapka {
	position: relative; display: block; width: min(100%, 430px); aspect-ratio: 1 / 1.04;
	overflow: hidden; background: var(--sk-biela);   /* fotky produktov majú biely podklad */
	border-radius: 56% 44% 47% 53% / 48% 52% 48% 52%;
	box-shadow: var(--sk-tien);
	animation: ox-v-fl-morf 16s ease-in-out infinite;
	will-change: transform, border-radius;
}
.ox-v-fl__kvapka img { width: 100%; height: 100%; object-fit: contain; padding: 13%; }
@keyframes ox-v-fl-morf {
	0%, 100% { border-radius: 56% 44% 47% 53% / 48% 52% 48% 52%; }
	33%      { border-radius: 43% 57% 62% 38% / 58% 42% 58% 42%; }
	66%      { border-radius: 61% 39% 38% 62% / 40% 60% 43% 57%; }
}
.ox-v-fl__odznak {
	position: absolute; right: 2%; top: 4%; z-index: 2;
	width: clamp(84px, 9.4vw, 118px); height: clamp(84px, 9.4vw, 118px); border-radius: 50%;
	background: var(--sk-akcent); color: var(--sk-biela);
	display: grid; place-items: center; text-align: center;
	font-family: var(--sk-font-display); font-size: clamp(11px, .95vw, 14px);
	line-height: 1.3; padding-top: .1em; box-shadow: var(--sk-btn-tien);
}
.ox-v-fl__popiska { margin: 16px 0 0; font-size: 12.5px; color: var(--sk-text-tlmeny); text-align: center; }
.ox-v-fl__popiska b { color: var(--sk-text); font-weight: 700; }
.ox-v-fl__popiska:empty { display: none; }   /* kým sa neozve katalóg, nedrží miesto */

/* Pomôcka „Skroluj“ -------------------------------------------------------- */
.ox-v-fl__skrol {
	position: absolute; left: var(--sk-pad); bottom: 26px; z-index: 2;
	display: flex; align-items: center; gap: 12px; pointer-events: none;
	font-size: 11px; font-weight: 600; letter-spacing: .2em; text-transform: uppercase;
	color: var(--sk-text-tlmeny);
}
.ox-v-fl__skrol i { display: block; width: 56px; height: 1px; background: var(--sk-linka); position: relative; overflow: hidden; }
.ox-v-fl__skrol i::after {
	content: ''; position: absolute; inset: 0; background: var(--sk-akcent);
	transform: translateX(-100%); animation: ox-v-fl-cue 2.4s cubic-bezier(.66, 0, .34, 1) infinite;
}
@keyframes ox-v-fl-cue { 0% { transform: translateX(-100%); } 55% { transform: translateX(0); } 100% { transform: translateX(100%); } }

/* Nábeh obsahu. Skrytý stav platí až keď ho zapne JS — bez skriptu musí byť
   hrdina normálne čitateľný. --------------------------------------------- */
.ox-v-fl--js .ox-v-fl__riadok > span { transform: translateY(105%); transition: transform 1.05s var(--sk-prechod); }
.ox-v-fl--js .ox-v-fl__riadok:nth-child(2) > span { transition-delay: .09s; }
.ox-v-fl--js .ox-v-fl__riadok:nth-child(3) > span { transition-delay: .18s; }
.ox-v-fl--js .ox-v-fl-rv { opacity: 0; transform: translateY(18px); transition: opacity .9s var(--sk-prechod), transform .9s var(--sk-prechod); }
.ox-v-fl--js .ox-v-fl__copy  { transition-delay: .40s; }
.ox-v-fl--js .ox-v-fl__akcie { transition-delay: .55s; }
.ox-v-fl--js .ox-v-fl__pozn  { transition-delay: .80s; }
.ox-v-fl--js .ox-v-fl__vizual {
	opacity: 0; transform: scale(.94) translateY(24px);
	transition: opacity 1.1s .35s var(--sk-prechod), transform 1.3s .35s var(--sk-prechod);
}
.ox-v-fl--js.ox-v-fl--nabeh .ox-v-fl__riadok > span,
.ox-v-fl--js.ox-v-fl--nabeh .ox-v-fl-rv,
.ox-v-fl--js.ox-v-fl--nabeh .ox-v-fl__vizual { opacity: 1; transform: none; }

/* Kurzor-kvapka: prstenec s červenou žiarou, nad odkazmi sa nafúkne -------- */
.ox-v-fl-kurzor {
	position: fixed; top: 0; left: 0; z-index: 40; pointer-events: none;
	width: 34px; height: 34px; margin: -17px 0 0 -17px; border-radius: 50%;
	border: 1.5px solid var(--sk-akcent); opacity: 0; will-change: transform;
	transition: width .3s var(--sk-prechod), height .3s var(--sk-prechod),
	            margin .3s var(--sk-prechod), opacity .3s var(--sk-prechod);
}
/* Náplň je vlastný pseudoprvok, aby sa červená brala z tokenu a nemusela sa
   nikde písať ako rgba() natvrdo. */
.ox-v-fl-kurzor::before {
	content: ''; position: absolute; inset: -1.5px; border-radius: 50%; opacity: .24;
	background: radial-gradient(circle at 50% 40%, var(--sk-akcent), transparent 68%);
}
.ox-v-fl-kurzor--vidno { opacity: 1; }
.ox-v-fl-kurzor--horuci { width: 64px; height: 64px; margin: -32px 0 0 -32px; }
@media (hover: none), (pointer: coarse) { .ox-v-fl-kurzor { display: none; } }

/* Červený bežiaci pás pod hrdinom ----------------------------------------- */
.ox-v-fl-pas {
	position: relative; z-index: 2; overflow: hidden;
	background: var(--sk-akcent); color: var(--sk-biela); padding-block: 14px;
}
.ox-v-fl-pas__stopa {
	display: flex; width: max-content; animation: ox-v-fl-posun 26s linear infinite;
	font-family: var(--sk-font-nadpis); font-size: clamp(16px, 2vw, 26px);
	line-height: var(--sk-nadpis-lh); text-transform: var(--sk-nadpis-transform);
}
.ox-v-fl-pas:hover .ox-v-fl-pas__stopa { animation-play-state: paused; }   /* ako v koncepte */
.ox-v-fl-pas__stopa span {
	display: inline-flex; align-items: center; gap: .6em;
	padding-inline: .5em; white-space: nowrap;
}
.ox-v-fl-pas__stopa span::after { content: '·'; color: var(--sk-ruz); }
@keyframes ox-v-fl-posun { to { transform: translateX(-50%); } }

/* Podpisová sekcia — veľké CTA s dýchajúcou kalužou ------------------------ */
.ox-v-fl-cta { position: relative; overflow: hidden; text-align: center; }
.ox-v-fl-cta__kaluz {
	position: absolute; left: 50%; top: 50%; width: min(120vw, 1200px); aspect-ratio: 1;
	translate: -50% -50%; z-index: 0; opacity: .22; filter: blur(8px);
	background: radial-gradient(circle, var(--sk-akcent) 0%, var(--sk-ruz) 40%, transparent 66%);
	animation: ox-v-fl-dych 12s ease-in-out infinite;
}
@keyframes ox-v-fl-dych { 0%, 100% { transform: scale(1) rotate(0deg); } 50% { transform: scale(1.12) rotate(8deg); } }
.ox-v-fl-cta__vnutro { position: relative; z-index: 1; }
.ox-v-fl-cta .ox-oko { justify-content: center; }
.ox-v-fl-cta__h { margin: 6px 0 0; font-size: clamp(2.4rem, 7vw, 6rem); }
.ox-v-fl-cta__p { max-width: 44ch; margin: 18px auto 26px; color: var(--sk-text-tlmeny); }

/* Bez pohybu (?motion=0 aj systémové nastavenie) --------------------------- */
.ox-v-fl--bezpohybu .ox-v-fl__kvapka,
.ox-v-fl--bezpohybu .ox-v-fl__skrol i::after,
.ox-v-fl-pas--bezpohybu .ox-v-fl-pas__stopa { animation: none; }
@media (prefers-reduced-motion: reduce) {
	.ox-v-fl__kvapka, .ox-v-fl__skrol i::after,
	.ox-v-fl-pas__stopa, .ox-v-fl-cta__kaluz { animation: none; }
	.ox-v-fl--js .ox-v-fl__riadok > span,
	.ox-v-fl--js .ox-v-fl-rv,
	.ox-v-fl--js .ox-v-fl__vizual { opacity: 1; transform: none; transition: none; }
}

/* Užšie okná --------------------------------------------------------------- */
@media (max-width: 980px) {
	.ox-v-fl__mriezka { grid-template-columns: 1fr; gap: 10px; }
	/* Kvapka ide nad sadzbu — ako v koncepte, kde má hero-float `order:-1`. */
	.ox-v-fl__vizual { order: -1; min-height: auto; }
	.ox-v-fl__kvapka { width: min(66%, 272px); }
	.ox-v-fl__odznak { right: 4%; top: 0; width: clamp(74px, 19vw, 104px); height: clamp(74px, 19vw, 104px); }
	/* Text je cez celú šírku, takže závoj musí kryť zhora nadol; spodok ostáva
	   priehľadný, nech je tekutina vidieť. */
	.ox-v-fl::before {
		-webkit-mask-image: linear-gradient(180deg, rgba(0,0,0,.92) 0%, rgba(0,0,0,.9) 58%, rgba(0,0,0,.3) 90%, rgba(0,0,0,0) 100%);
		        mask-image: linear-gradient(180deg, rgba(0,0,0,.92) 0%, rgba(0,0,0,.9) 58%, rgba(0,0,0,.3) 90%, rgba(0,0,0,0) 100%);
	}
}
@media (max-width: 640px) {
	.ox-v-fl { min-height: auto; padding-block: 22px 54px; }
	.ox-v-fl__h1 { font-size: clamp(2.5rem, 12.5vw, 3.6rem); }
	.ox-v-fl__kvapka { width: min(62%, 232px); }
	.ox-v-fl__skrol { display: none; }            /* v koncepte tiež mizne */
	.ox-v-fl__copy { font-size: 15px; }
}
@media (max-width: 430px) {
	/* Dve pilulky vedľa seba by sa na 390 px lámali do jednotlivých písmen. */
	.ox-v-fl__akcie .ox-btn { flex: 1 1 100%; }
	.ox-v-fl__pozn { gap: 4px 12px; font-size: 12px; }
	.ox-v-fl__kick { font-size: 15px; }
}
/* Nad hrdinom je ešte lišta návrhov (44 px) a hlavička (74 px) — na nízkom
   notebooku by pri plnej veľkosti nadpisu vypadli tlačidlá pod ohyb. */
@media (min-width: 1100px) and (max-height: 860px) {
	.ox-v-fl { min-height: min(90svh, 640px); padding-block: 26px 66px; }
	.ox-v-fl__h1 { font-size: clamp(2.6rem, 5.4vw, 4.6rem); }
	.ox-v-fl__vizual { min-height: 0; }
	.ox-v-fl__kvapka { width: min(100%, 330px); }
}

/* =============================================================================
   08-particles — hrdina „časticová scéna“ (verne podľa konceptu 08-particles.html)
   -----------------------------------------------------------------------------
   Hrdina je vysoký niekoľko obrazoviek a scéna sa v ňom PRIPÍNA — presne ako
   `position:sticky` v koncepte. Sticky tu ale nefunguje: jadro má `overflow-x`
   na `body` aj `overflow:hidden` na `.ox-hero`, čo z hrdinu spraví scroll-
   kontajner a sticky v ňom zamrzne. Pripínanie preto rieši `08-particles.js`
   prepínaním tried (absolútna → fixná → zaparkovaná dole).

   Scéna má vlastné nepriehľadné pozadie: téma 08 kreslí častice aj na pozadí
   celej stránky (assets/temy/efekty/08-particles.js) a dva mraky bodov cez
   seba by boli len šum. Pod hrdinom sa efekt schová, nižšie pracuje naplno.
   ========================================================================== */
.ox-v-cast {
	position: relative;
	/* dráha, po ktorej sa tvar premení cez tri fázy (OXO → pohár → guľôčka) */
	height: 250vh;
	height: 250svh;
	padding: 0;
	/* .ox-hero má `overflow:hidden` — orezalo by pripnutú scénu */
	overflow: visible;
	background: var(--sk-bg);
	--ox-cast-hlava: 118px;   /* lišta návrhov + hlavička; JS ju domeria */
}
.ox-v-cast__scena {
	position: absolute; top: 0; left: 0; right: 0;
	height: calc(100vh - var(--ox-cast-hlava));
	height: calc(100svh - var(--ox-cast-hlava));
	overflow: hidden;
	background: var(--sk-bg);
	isolation: isolate;
}
/* Pripína sa POD hlavičku, nie pod okraj okna — inak by z fázového textu,
   ktorý sedí dole, nebolo pri nule vidieť nič. */
.ox-v-cast--pripnuta .ox-v-cast__scena { position: fixed; top: var(--ox-cast-hlava); z-index: 1; }
.ox-v-cast--dole .ox-v-cast__scena { top: auto; bottom: 0; }

/* Vláskové linky na pozadí — „technická elegancia“ z konceptu -------------- */
.ox-v-cast__mriezka {
	position: absolute; inset: 0; z-index: 1; pointer-events: none;
	display: flex; justify-content: space-between; padding-inline: var(--sk-pad);
}
.ox-v-cast__mriezka i {
	width: 1px; flex: 0 0 1px;
	background: linear-gradient(180deg, transparent, var(--sk-linka) 14%, var(--sk-linka) 86%, transparent);
}
@media (max-width: 760px) { .ox-v-cast__mriezka i:nth-child(even) { display: none; } }

/* Plátno s časticami a záloha, keď 2D kontext nie je k dispozícii ---------- */
.ox-v-cast__platno { position: absolute; inset: 0; width: 100%; height: 100%; display: block; z-index: 2; }
.ox-v-cast__zaloha { position: absolute; inset: 0; z-index: 3; display: none; place-items: center; }
.ox-v-cast__zaloha span {
	font-family: var(--sk-font-display); color: var(--sk-akcent);
	font-size: min(30vw, 300px); line-height: var(--sk-nadpis-lh);
	letter-spacing: var(--sk-nadpis-spacing);
}
.ox-v-cast--bezplatna .ox-v-cast__platno { display: none; }
.ox-v-cast--bezplatna .ox-v-cast__zaloha { display: grid; }

/* Závoj pod sadzbou — čitateľnosť riešime prekrytím, nikdy blend-mode ------ */
.ox-v-cast__zavoj {
	position: absolute; left: 0; right: 0; bottom: 0; height: 48%;
	z-index: 4; pointer-events: none;
	background: linear-gradient(180deg, transparent 0%, var(--sk-bg) 78%);
}

/* Výpis stavu scény vpravo hore -------------------------------------------- */
.ox-v-cast__hud,
.ox-v-cast__idx button,
.ox-v-cast__hint {
	font-size: 10.5px; font-weight: 600; letter-spacing: .16em;
	text-transform: uppercase; font-variant-numeric: tabular-nums;
	color: var(--sk-text-tlmeny);
}
.ox-v-cast__hud {
	position: absolute; top: 24px; right: var(--sk-pad); z-index: 5;
	display: grid; gap: 5px; text-align: right; pointer-events: none;
}
.ox-v-cast__hud b { color: var(--sk-akcent); font-weight: 700; }

/* Index fáz vpravo — v koncepte iba ukazovateľ, tu aj ovládanie ------------ */
.ox-v-cast__idx {
	position: absolute; right: var(--sk-pad); top: 50%; transform: translateY(-50%);
	z-index: 5; display: grid; gap: 16px;
}
.ox-v-cast__idx button {
	display: flex; align-items: center; justify-content: flex-end; gap: 10px;
	padding: 2px 0; border: 0; background: none; cursor: pointer; font-family: inherit;
	opacity: .45; transition: opacity .4s var(--sk-prechod), color .4s var(--sk-prechod);
}
.ox-v-cast__idx button::after {
	content: ''; width: 16px; height: 1px; background: currentColor;
	transition: width .4s var(--sk-prechod);
}
.ox-v-cast__idx button:hover { opacity: .85; }
.ox-v-cast__idx button[aria-current="true"] { opacity: 1; color: var(--sk-akcent); }
.ox-v-cast__idx button[aria-current="true"]::after { width: 40px; }
@media (max-width: 900px) { .ox-v-cast__idx { display: none; } }

/* Fázové texty vľavo dole — ležia cez seba a prelínajú sa podľa scrollu ---- */
.ox-v-cast__fazy {
	position: absolute; left: var(--sk-pad); bottom: clamp(46px, 8vh, 104px);
	z-index: 5; width: min(560px, 74vw);
}
.ox-v-cast__faza {
	position: absolute; left: 0; bottom: 0; width: 100%;
	opacity: 0; transform: translateY(24px); pointer-events: none;
	will-change: opacity, transform;
}
.ox-v-cast__faza .ox-oko { margin-bottom: 10px; }
.ox-v-cast__h {
	font-size: clamp(34px, 6.2vw, 88px);
	line-height: var(--sk-nadpis-lh);   /* Anton so slovenskou diakritikou */
	margin: 4px 0 14px;
}
.ox-v-cast__h em { font-style: normal; color: var(--sk-akcent); }
.ox-v-cast__faza p {
	margin: 0; max-width: 44ch; color: var(--sk-text-tlmeny);
	font-size: clamp(14px, 1.15vw, 16.5px); line-height: 1.62;
}
.ox-v-cast__akcie { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 20px; }
.ox-v-cast__akcie .ox-btn { min-height: 44px; padding-block: 11px; }

/* Pilulka so skutočným tovarom pod fázami 02 a 03 -------------------------- */
.ox-v-cast__tovar {
	display: inline-flex; align-items: center; gap: 12px; max-width: 100%;
	margin-top: 18px; padding: 7px 16px 7px 7px;
	border: 1px solid var(--sk-linka); border-radius: var(--sk-r-pilulka);
	background: var(--sk-povrch); color: var(--sk-text);
	transition: border-color .25s var(--sk-prechod);
}
.ox-v-cast__tovar:hover { border-color: var(--sk-akcent); }
.ox-v-cast__tovar-foto {
	flex: 0 0 auto; width: 42px; height: 42px; border-radius: 50%; overflow: hidden;
	/* produktové fotky majú biele pozadie — pod nimi musí ostať biela */
	background: var(--sk-biela); box-shadow: var(--sk-obrys);
}
.ox-v-cast__tovar-foto img { width: 100%; height: 100%; object-fit: contain; padding: 8%; }
.ox-v-cast__tovar-telo { display: grid; gap: 1px; min-width: 0; }
.ox-v-cast__tovar-telo b {
	font-size: 13.5px; font-weight: 700;
	overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.ox-v-cast__tovar-telo i { font-style: normal; font-size: 12.5px; color: var(--sk-akcent); font-weight: 700; }
.ox-v-cast__tovar svg { flex: 0 0 auto; width: 14px; height: 14px; color: var(--sk-akcent); }

/* Pomôcka „skroluj ďalej“ -------------------------------------------------- */
.ox-v-cast__hint {
	position: absolute; left: 50%; bottom: 18px; transform: translateX(-50%);
	z-index: 5; display: flex; align-items: center; gap: 10px; pointer-events: none;
}
.ox-v-cast__hint i {
	display: block; width: 1px; height: 26px; position: relative; overflow: hidden;
	background: var(--sk-linka);
}
.ox-v-cast__hint i::after {
	content: ''; position: absolute; inset: 0; background: var(--sk-akcent);
	animation: ox-v-cast-kvapka 1.9s cubic-bezier(.6, 0, .3, 1) infinite;
}
@keyframes ox-v-cast-kvapka { 0% { transform: translateY(-100%); } 55%, 100% { transform: translateY(100%); } }
@media (max-width: 760px) { .ox-v-cast__hint { display: none; } }

/* Kinetický pás pod hrdinom ------------------------------------------------ */
.ox-v-cast-pas {
	position: relative; z-index: 2; overflow: hidden;
	background: var(--sk-akcent); color: var(--sk-biela);
	padding-block: 16px; border-top: 1px solid var(--sk-akcent-tmavy);
}
.ox-v-cast-pas__stopa { display: flex; width: max-content; animation: ox-v-cast-posun 34s linear infinite; }
.ox-v-cast-pas:hover .ox-v-cast-pas__stopa { animation-play-state: paused; }
.ox-v-cast-pas__stopa b {
	font-family: var(--sk-font-nadpis); font-weight: 400;
	text-transform: var(--sk-nadpis-transform); letter-spacing: var(--sk-nadpis-spacing);
	font-size: clamp(18px, 2.5vw, 34px); line-height: var(--sk-nadpis-lh);
	padding-inline: 22px; white-space: nowrap;
}
.ox-v-cast-pas__stopa b span { color: var(--sk-ruz); }
@keyframes ox-v-cast-posun { to { transform: translateX(-50%); } }

/* Podpisová sekcia — „Štyri kroky. Žiadna veda.“ --------------------------- */
.ox-v-cast-postup__lead { max-width: 38ch; margin: 0; font-size: 15px; }
.ox-v-cast-kroky {
	display: grid; grid-template-columns: repeat(4, minmax(0, 1fr));
	border-top: 1px solid var(--sk-linka);
}
.ox-v-cast-krok {
	padding: 28px 24px 32px; border-right: 1px solid var(--sk-linka);
	transition: background .4s var(--sk-prechod);
}
.ox-v-cast-krok:last-child { border-right: 0; }
.ox-v-cast-krok:hover { background: var(--sk-bg-2); }
.ox-v-cast-krok__cislo {
	display: block; font-family: var(--sk-font-nadpis); color: var(--sk-akcent);
	font-size: clamp(40px, 4.4vw, 68px); line-height: var(--sk-nadpis-lh);
	letter-spacing: var(--sk-nadpis-spacing);
	opacity: .22; transition: opacity .4s var(--sk-prechod);
}
.ox-v-cast-krok:hover .ox-v-cast-krok__cislo { opacity: 1; }
.ox-v-cast-krok h3 { margin: 8px 0 8px; font-size: clamp(17px, 1.35vw, 21px); }
.ox-v-cast-krok p { margin: 0; font-size: 13.6px; line-height: 1.58; }
@media (max-width: 1000px) {
	.ox-v-cast-kroky { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.ox-v-cast-krok:nth-child(2n) { border-right: 0; }
	.ox-v-cast-krok { border-bottom: 1px solid var(--sk-linka); }
}
@media (max-width: 560px) {
	.ox-v-cast-kroky { grid-template-columns: 1fr; }
	.ox-v-cast-krok { border-right: 0; }
}

/* Bez pohybu (OXO_POHYB === false) ----------------------------------------- */
/* Zámerne to nevisí na `prefers-reduced-motion`: jadro ho už zohľadnilo pri
   výpočte OXO_POHYB a ?motion=1 ho vie prebiť (firemné zostavy ho mávajú
   zapnuté natrvalo). Hrdina sa zmrští na jednu obrazovku a stojí na fáze 01. */
.ox-v-cast--bezpohybu { height: auto; }
.ox-v-cast--bezpohybu .ox-v-cast__scena { position: relative; top: auto; bottom: auto; }
.ox-v-cast--bezpohybu .ox-v-cast__hint { display: none; }
.ox-v-cast-pas--bezpohybu .ox-v-cast-pas__stopa { animation: none; }

/* Užšie okná — nič nesmie pretiecť do strany ani pri 390 px ---------------- */
@media (max-width: 760px) {
	.ox-v-cast { height: 205vh; height: 205svh; }
	.ox-v-cast__fazy { width: calc(100% - var(--sk-pad) * 2); bottom: clamp(34px, 6vh, 74px); }
	.ox-v-cast__zavoj { height: 64%; }
	.ox-v-cast__hud { top: 16px; font-size: 9px; letter-spacing: .12em; }
	.ox-v-cast__h { margin-bottom: 10px; }
}
@media (max-width: 430px) {
	/* Dve pilulky vedľa seba by sa na 390 px lámali do jednotlivých písmen. */
	.ox-v-cast__akcie .ox-btn { flex: 1 1 100%; }
	.ox-v-cast__h { font-size: clamp(30px, 9.6vw, 44px); }
	.ox-v-cast__faza p { font-size: 13.5px; }
	.ox-v-cast__tovar { width: 100%; }
}
/* Nízke notebooky: dráha sa počíta z výšky okna, takže tu stačí ubrať sadzbe. */
@media (min-width: 1100px) and (max-height: 860px) {
	.ox-v-cast__h { font-size: clamp(32px, 4.6vw, 62px); }
	.ox-v-cast__fazy { bottom: 40px; }
	.ox-v-cast__akcie { margin-top: 14px; }
}

/* =============================================================================
   10-story — hrdina „filmový príbeh“ (verne podľa konceptu 10-story.html)
   -----------------------------------------------------------------------------
   Bez JS (a v režime bez pohybu) sú kapitoly poskladané pod sebou — hrdina je
   vždy celý čitateľný. Trieda `--film`, ktorú dopĺňa JS, z nich spraví pripnutú
   scénu s krížovým prelínaním, presne ako v koncepte.

   Pozadie scény zámerne NIE JE nepriehľadné: koridor bobúľ kreslí efekt témy
   (assets/temy/efekty/10-story.js) — je to tá istá 3D scéna ako v koncepte,
   takže ju necháme presvitať a čitateľnosť sadzby držíme závojom vo farbe
   kapitoly (`--bgc` dopĺňa JS), rovnako ako `.story-ui::before` v koncepte.
   ========================================================================== */
.ox-v-pribeh { padding: 0; }
.ox-v-pribeh__draha { position: relative; }
.ox-v-pribeh__scena { position: relative; --bgc: 255, 255, 255; }

/* Pripnutie robí JS cez `position: fixed` — `sticky` v tomto jadre nedrží,
   lebo `body` má `overflow-x: hidden` a stáva sa scroll-kontajnerom. */
.ox-v-pribeh--film .ox-v-pribeh__draha { height: 420vh; height: 420svh; }
.ox-v-pribeh--film .ox-v-pribeh__scena {
	position: absolute; left: 0; right: 0; top: 0; z-index: 1;
	height: 100vh; height: calc(100svh - var(--vrch, 0px));
	overflow: hidden;
}
.ox-v-pribeh--film .ox-v-pribeh__scena--pripnuta { position: fixed; top: var(--vrch, 0px); }
.ox-v-pribeh--film .ox-v-pribeh__scena--dole { top: auto; bottom: 0; }

/* Filmový závoj — mäkký prechod vo farbe kapitoly, aby text vždy čitateľne
   sedel nad 3D scénou. Vpravo ostáva scéna nezakrytá. */
.ox-v-pribeh__zavoj { display: none; }
.ox-v-pribeh--film .ox-v-pribeh__zavoj {
	display: block; position: absolute; inset: 0; z-index: 0; pointer-events: none;
	background: linear-gradient(96deg,
		rgba(var(--bgc), .94) 0%,
		rgba(var(--bgc), .82) 20%,
		rgba(var(--bgc), .34) 36%,
		rgba(var(--bgc), 0) 52%);
}

.ox-v-pribeh__kapitoly { position: relative; z-index: 1; }
.ox-v-pribeh--film .ox-v-pribeh__kapitoly { position: absolute; inset: 0; }

.ox-v-pribeh__kapitola {
	display: grid; align-items: center; gap: clamp(20px, 3vw, 44px);
	padding: clamp(36px, 6vw, 84px) var(--sk-pad);
	max-width: var(--sk-maxw); margin-inline: auto;
}
.ox-v-pribeh__kapitola + .ox-v-pribeh__kapitola { border-top: 1px solid var(--sk-linka); }
@media (min-width: 980px) {
	.ox-v-pribeh__kapitola { grid-template-columns: minmax(0, 1.06fr) minmax(0, .72fr); }
}
.ox-v-pribeh--film .ox-v-pribeh__kapitola {
	position: absolute; inset: 0; border-top: 0;
	align-content: center;
	padding: clamp(18px, 4vh, 56px) var(--sk-pad) clamp(78px, 12vh, 120px);
	opacity: 0; visibility: hidden; will-change: opacity;
}
@media (min-width: 980px) {
	/* vpravo ostáva pruh na indikátor kapitol — ako v koncepte */
	.ox-v-pribeh--film .ox-v-pribeh__kapitola {
		padding-right: calc(var(--sk-pad) + 190px); gap: clamp(24px, 4vw, 70px);
	}
}

.ox-v-pribeh__text { position: relative; z-index: 1; }
.ox-v-pribeh--film .ox-v-pribeh__text {
	max-width: 640px; transform: translate3d(0, var(--posun, 0px), 0);
}
/* biely závoj priamo pod sadzbou — cez hustý oblak bobúľ bola zle čitateľná */
.ox-v-pribeh--film .ox-v-pribeh__text::before {
	content: ''; position: absolute; inset: -38px -78px -38px -58px; z-index: -1; pointer-events: none;
	background: radial-gradient(70% 60% at 38% 50%,
		rgba(var(--bgc), .94) 0%, rgba(var(--bgc), .74) 55%, rgba(var(--bgc), 0) 82%);
}

.ox-v-pribeh__oko {
	display: inline-flex; align-items: center; gap: 10px;
	font-size: 12px; font-weight: 800; letter-spacing: .18em; text-transform: uppercase;
	color: var(--sk-akcent); margin-bottom: clamp(10px, 1.6vh, 20px);
}
.ox-v-pribeh__oko i { width: 8px; height: 8px; border-radius: var(--sk-r-pilulka); background: var(--sk-akcent); flex: 0 0 auto; }

.ox-v-pribeh__h { margin: 0; font-size: clamp(34px, 6.2vw, 92px); max-width: 13ch; }
.ox-v-pribeh__h em { font-style: normal; color: var(--sk-akcent); }
.ox-v-pribeh__p {
	margin: clamp(14px, 2.2vh, 26px) 0 0; max-width: 52ch;
	font-size: clamp(15px, 1.1vw, 19px); color: var(--sk-text-tlmeny);
}
.ox-v-pribeh__meta { display: flex; flex-wrap: wrap; gap: 8px; margin-top: clamp(14px, 2.4vh, 26px); }
.ox-v-pribeh__meta span {
	font-size: 12.5px; font-weight: 700; letter-spacing: .04em;
	padding: 6px 13px; border-radius: var(--sk-r-pilulka);
	background: var(--sk-povrch); box-shadow: var(--sk-obrys);
}
.ox-v-pribeh__akcie { display: flex; flex-wrap: wrap; gap: 12px; margin-top: clamp(18px, 3vh, 30px); }

/* Obrazová vrstva — paralax dvojnásobný oproti textu, vsuvka ešte silnejší. */
.ox-v-pribeh__obraz { position: relative; min-height: clamp(200px, 40vh, 460px); }
.ox-v-pribeh--film .ox-v-pribeh__obraz { transform: translate3d(0, calc(var(--posun, 0px) * 2), 0); }
.ox-v-pribeh__karta {
	position: absolute; right: 0; top: 50%; transform: translateY(-50%);
	width: min(100%, 380px); display: block; color: inherit; text-decoration: none;
	background: var(--sk-biela); border-radius: var(--sk-r-obrazok);
	padding: 10px 10px 12px; box-shadow: var(--sk-tien), var(--sk-obrys);
	transition: transform .45s var(--sk-prechod), box-shadow .45s var(--sk-prechod);
}
.ox-v-pribeh__karta:hover { transform: translateY(-50%) scale(1.025); box-shadow: var(--sk-tien), 0 0 0 1px var(--sk-akcent); }
/* Produktové fotky majú vlastné biele pozadie → dlaždica musí ostať biela. */
.ox-v-pribeh__foto {
	display: block; overflow: hidden; aspect-ratio: 4 / 3;
	background: var(--sk-biela); border-radius: var(--sk-r-maly);
}
.ox-v-pribeh__foto img { width: 100%; height: 100%; object-fit: contain; padding: 6%; }
.ox-v-pribeh__stitok { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; padding: 10px 6px 0; }
.ox-v-pribeh__stitok b {
	font-family: var(--sk-font-nadpis); font-size: 15px;
	line-height: var(--sk-nadpis-lh); text-transform: var(--sk-nadpis-transform);
}
.ox-v-pribeh__stitok i { font-style: normal; font-family: var(--sk-font-display); font-size: 16px; color: var(--sk-akcent); text-align: right; }
/* Vsuvka je „prišpendlená“ nad hlavnú fotku — hore vľavo, aby neprekryla názov
   a cenu v spodnej lište karty. Mierne pootočenie je z konceptu. */
.ox-v-pribeh__vsuvka {
	position: absolute; left: 0; top: 4%; width: min(44%, 176px);
	border-radius: var(--sk-r-maly); box-shadow: var(--sk-tien-karta);
	transform: rotate(-3deg);
}
.ox-v-pribeh--film .ox-v-pribeh__vsuvka { transform: translate3d(0, calc(var(--posun, 0px) * .6), 0) rotate(-3deg); }

/* Indikátor kapitol — vpravo v strede (na mobile pilulka dole). */
.ox-v-pribeh__kapnav { display: none; }
.ox-v-pribeh--film .ox-v-pribeh__kapnav {
	display: grid; gap: 14px; position: absolute; z-index: 3;
	right: var(--sk-pad); top: 50%; transform: translateY(-50%);
	padding: 15px 17px; border-radius: var(--sk-r-stredny);
	background: rgba(var(--bgc), .58); box-shadow: var(--sk-obrys);
	backdrop-filter: blur(9px); -webkit-backdrop-filter: blur(9px);
}
.ox-v-pribeh__kn {
	display: grid; grid-template-columns: auto 1fr; align-items: center; gap: 10px;
	padding: 0; border: 0; background: none; cursor: pointer; text-align: left;
	color: var(--sk-text); opacity: .42; transition: opacity .35s var(--sk-prechod);
}
.ox-v-pribeh__kn:hover { opacity: .78; }
.ox-v-pribeh__kn--na { opacity: 1; }
.ox-v-pribeh__kn--na .ox-v-pribeh__kn-cislo,
.ox-v-pribeh__kn--na .ox-v-pribeh__kn-stitok { color: var(--sk-akcent); }
.ox-v-pribeh__kn-cislo { font-family: var(--sk-font-nadpis); font-size: 13px; line-height: var(--sk-nadpis-lh); letter-spacing: .06em; }
.ox-v-pribeh__kn-stitok { font-size: 12.5px; font-weight: 700; letter-spacing: .03em; white-space: nowrap; }
.ox-v-pribeh__kn-pas { grid-column: 1 / -1; width: 96px; height: 2px; overflow: hidden; border-radius: 2px; background: var(--sk-linka); }
.ox-v-pribeh__kn-pas i { display: block; height: 100%; background: var(--sk-akcent); transform: scaleX(var(--f, 0)); transform-origin: left; transition: transform .12s linear; }

/* Nápoveda na skrolovanie — v koncepte vľavo dole, na mobile mizne. */
.ox-v-pribeh__skrol { display: none; }
.ox-v-pribeh--film .ox-v-pribeh__skrol {
	display: flex; align-items: center; gap: 12px; margin: 0;
	position: absolute; z-index: 3; left: var(--sk-pad); bottom: clamp(18px, 4vh, 40px);
	font-size: 12px; font-weight: 700; letter-spacing: .16em; text-transform: uppercase;
	color: var(--sk-text-tlmeny); transition: opacity .4s var(--sk-prechod);
}
.ox-v-pribeh__kolaj { position: relative; overflow: hidden; flex: 0 0 auto; width: 1px; height: 44px; background: var(--sk-linka); }
.ox-v-pribeh__kolaj::after {
	content: ''; position: absolute; left: 0; top: -60%; width: 100%; height: 60%;
	background: var(--sk-akcent); animation: ox-v-pribeh-kolaj 1.9s var(--sk-prechod) infinite;
}
@keyframes ox-v-pribeh-kolaj { 0% { top: -60%; } 70%, 100% { top: 100%; } }

/* Červený bežiaci pás pod hrdinom ------------------------------------------ */
.ox-v-pribeh-pas { position: relative; z-index: 2; overflow: hidden; padding: 14px 0; background: var(--sk-akcent); color: var(--sk-biela); }
.ox-v-pribeh-pas__stopa { display: flex; width: max-content; animation: ox-v-pribeh-posun 26s linear infinite; }
.ox-v-pribeh-pas__stopa span {
	display: inline-flex; align-items: center; gap: clamp(14px, 2vw, 28px);
	font-family: var(--sk-font-nadpis); text-transform: uppercase; letter-spacing: .02em;
	font-size: clamp(18px, 2.1vw, 30px); line-height: var(--sk-nadpis-lh);
	padding-inline: clamp(14px, 2vw, 28px); white-space: nowrap;
}
.ox-v-pribeh-pas__stopa i { font-style: normal; color: var(--sk-ruz); }
@keyframes ox-v-pribeh-posun { to { transform: translateX(-50%); } }
/* Zastavenie riadi JS podľa OXO_POHYB, nie médiá-otázka — prepínač „◐“ v lište
   musí vedieť pohyb aj vynútiť na počítači so systémovým obmedzením animácií. */
.ox-v-pribeh-pas--stoji .ox-v-pribeh-pas__stopa,
.ox-v-pribeh:not(.ox-v-pribeh--film) .ox-v-pribeh__kolaj::after { animation: none; }

/* Užšie okná ---------------------------------------------------------------- */
@media (max-width: 979px) {
	/* Na mobile je scéna nad textom → závoj musí kryť zhora nadol, stred ostáva
	   priehľadný, nech je koridor vidieť. */
	.ox-v-pribeh--film .ox-v-pribeh__zavoj {
		background: linear-gradient(180deg,
			rgba(var(--bgc), .42) 0%, rgba(var(--bgc), .06) 28%,
			rgba(var(--bgc), .5) 44%, rgba(var(--bgc), .93) 56%, rgba(var(--bgc), .97) 100%);
	}
	.ox-v-pribeh--film .ox-v-pribeh__draha { height: 340vh; height: 340svh; }
	.ox-v-pribeh--film .ox-v-pribeh__kapitola { grid-template-columns: 1fr; gap: 14px; padding: clamp(14px, 3vh, 28px) var(--sk-pad) 92px; }
	.ox-v-pribeh--film .ox-v-pribeh__obraz { order: -1; min-height: clamp(140px, 22vh, 230px); }
	.ox-v-pribeh--film .ox-v-pribeh__text::before { inset: -22px -28px; }
	/* Odsek by na výšku mobilu vytlačil tlačidlá zo záberu. */
	.ox-v-pribeh--film .ox-v-pribeh__p { display: -webkit-box; -webkit-line-clamp: 4; -webkit-box-orient: vertical; overflow: hidden; }
	.ox-v-pribeh__karta { width: min(64%, 250px); }
	.ox-v-pribeh__vsuvka { width: min(38%, 132px); }
	.ox-v-pribeh__h { font-size: clamp(30px, 7.6vw, 44px); }
	.ox-v-pribeh__p { font-size: 15px; }
	.ox-v-pribeh--film .ox-v-pribeh__kapnav {
		right: auto; left: 50%; top: auto; bottom: calc(12px + env(safe-area-inset-bottom));
		transform: translateX(-50%); grid-auto-flow: column; gap: 10px;
		padding: 9px 12px; border-radius: var(--sk-r-pilulka);
	}
	.ox-v-pribeh__kn { grid-template-columns: auto; gap: 4px; justify-items: center; }
	.ox-v-pribeh__kn-stitok { font-size: 11px; }
	.ox-v-pribeh__kn-pas { width: 38px; }
	.ox-v-pribeh--film .ox-v-pribeh__skrol { display: none; }
}
/* Nízky mobil: štítky kapitoly sú prvé, čo môže ísť preč — tlačidlá nesmú
   vypadnúť zo záberu. */
@media (max-width: 979px) and (max-height: 700px) {
	.ox-v-pribeh--film .ox-v-pribeh__meta { display: none; }
	.ox-v-pribeh--film .ox-v-pribeh__p { -webkit-line-clamp: 3; }
}
@media (max-width: 430px) {
	/* Dve pilulky vedľa seba by sa na 390 px lámali do jednotlivých písmen. */
	.ox-v-pribeh__akcie .ox-btn { flex: 1 1 100%; }
	.ox-v-pribeh__stitok { flex-wrap: wrap; gap: 2px 10px; }
	.ox-v-pribeh__meta span { font-size: 11.5px; padding: 5px 10px; }
}
/* Nízky notebook: dráha aj sadzba sa musia zmestiť do plochej obrazovky. */
@media (min-width: 980px) and (max-height: 820px) {
	.ox-v-pribeh__h { font-size: clamp(32px, 4.6vw, 62px); }
	.ox-v-pribeh--film .ox-v-pribeh__obraz { min-height: clamp(180px, 34vh, 320px); }
}

/* =============================================================================
   SPOLOČNÝ ZÁKLAD NÁVRHOV 12–16 — „video hrdina + vitrína čistoty“
   -----------------------------------------------------------------------------
   Päť návrhov (12 Splash … 16 Luxe) zdieľa rovnakú kostru domovskej stránky:
     1. `.ox-vh`   — červený video-hrdina. Skutočné video (3 padajúce poháre so
                     šplechnutím) dorobíme neskôr; dovtedy beží CSS podanie tej
                     istej scény v `.ox-vh__scena`. Až video príde, vloží sa do
                     `.ox-vh__video` (slot [data-ox-video-slot]) a scéna sa skryje.
     2. `.ox-svit` — carousel „prečo OXO“ (bez azofarbív…); klik otvára popup
                     `.ox-vpopup` s marketingovým popisom.
     3. Zvyšok domovskej stránky je spoločný pre všetky návrhy (pohlady.js).
   Rozdiely medzi návrhmi (časovanie pádu, tvar šplechu, tvar kariet) dodáva
   modifikátor `.ox-vh--<slug>` v CSS súbore témy — tu je len spoločná kostra.
   ========================================================================== */

/* --- video hrdina ---------------------------------------------------------- */
.ox-vh {
	position: relative; overflow: hidden;
	background: var(--sk-vh-bg, var(--sk-akcent)); color: #fff;
	min-height: clamp(460px, 66vh, 720px);
	display: grid; align-items: stretch;
}
.ox-vh__video { position: absolute; inset: 0; z-index: 0; }
.ox-vh__video video { width: 100%; height: 100%; object-fit: cover; }
.ox-vh__wrap {
	position: relative; z-index: 2; width: 100%;
	display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(0, .95fr);
	gap: clamp(18px, 3vw, 44px); align-items: center;
	padding-block: clamp(26px, 4vw, 56px);
}
.ox-vh__obsah { position: relative; z-index: 2; }
.ox-vh .ox-vh__obsah .ox-oko { color: rgba(255, 255, 255, .85); }
.ox-vh .ox-vh__obsah .ox-h1 { color: #fff; }
.ox-vh .ox-vh__obsah .ox-lead { color: rgba(255, 255, 255, .88); max-width: 34em; }
.ox-vh .ox-vh__obsah .ox-chip { background: rgba(255, 255, 255, .16); color: #fff; border-color: transparent; }
/* tlačidlá na červenej: hlavné = biele, obrysové = biely rám */
.ox-vh .ox-vh__obsah .ox-btn--hlavne { background: #fff; color: var(--sk-akcent); }
.ox-vh .ox-vh__obsah .ox-btn--obrys { border-color: rgba(255, 255, 255, .65); color: #fff; }

/* poznámka, že tu príde video (placeholder) */
.ox-vh__poznamka {
	position: absolute; top: 14px; right: 14px; z-index: 4;
	font-size: 10.5px; font-weight: 700; letter-spacing: .14em; text-transform: uppercase;
	color: rgba(255, 255, 255, .82); background: rgba(27, 27, 27, .30);
	border: 1px dashed rgba(255, 255, 255, .45); border-radius: 999px;
	padding: 6px 12px; pointer-events: none;
}

/* scéna s padajúcimi pohármi */
.ox-vh__scena {
	position: relative; z-index: 1;
	height: clamp(300px, 46vh, 520px);
	pointer-events: none;
}
.ox-vh__pohar {
	position: absolute; bottom: 26px;
	width: clamp(86px, 11vw, 148px);
	filter: drop-shadow(0 22px 24px rgba(27, 27, 27, .30));
	animation: ox-vh-pad var(--vh-trvanie, 5.8s) cubic-bezier(.5, 0, .65, 1) infinite;
	animation-delay: var(--vh-onesk, 0s);
	will-change: transform, opacity;
}
.ox-vh__pohar--1 { left: 6%;  --vh-onesk: 0s;    --vh-rot: -8deg; }
.ox-vh__pohar--2 { left: 38%; --vh-onesk: .55s;  --vh-rot: 5deg; }
.ox-vh__pohar--3 { left: 70%; --vh-onesk: 1.15s; --vh-rot: -4deg; }
.ox-vh__pohar svg { display: block; width: 100%; height: auto; }
@keyframes ox-vh-pad {
	0%   { opacity: 1; transform: translateY(-78vh) rotate(var(--vh-rot, -6deg)); }
	11%  { transform: translateY(0) rotate(0deg); animation-timing-function: cubic-bezier(.2, 1.6, .4, 1); }
	16%  { transform: translateY(-4.5%) rotate(0deg); animation-timing-function: cubic-bezier(.6, 0, .8, 1); }
	20%  { transform: translateY(0) rotate(0deg); }
	86%  { opacity: 1; transform: translateY(0); }
	93%  { opacity: 0; transform: translateY(0); }
	100% { opacity: 0; transform: translateY(-78vh) rotate(var(--vh-rot, -6deg)); }
}

/* šplech pod pohárom — prstenec + kvapky; tvar si návrhy prefarbujú */
.ox-vh__splash { position: absolute; left: 50%; bottom: -14px; width: 150%; height: 64px;
	transform: translateX(-50%); pointer-events: none; }
.ox-vh__splash b {
	position: absolute; left: 50%; bottom: 8px; width: 100%; height: 34px;
	transform: translate(-50%, 0) scale(.2); border-radius: 50%;
	border: 4px solid rgba(255, 255, 255, .85); opacity: 0;
	animation: ox-vh-splash-kruh var(--vh-trvanie, 5.8s) ease-out infinite;
	animation-delay: var(--vh-onesk, 0s);
}
.ox-vh__splash i {
	position: absolute; left: 50%; bottom: 12px; width: 10px; height: 10px;
	border-radius: 50%; background: rgba(255, 255, 255, .9); opacity: 0;
	animation: ox-vh-splash-kvapka var(--vh-trvanie, 5.8s) ease-out infinite;
	animation-delay: var(--vh-onesk, 0s);
	--kx: 0px; --ky: -34px;
}
.ox-vh__splash i:nth-child(1) { --kx: -52px; --ky: -40px; }
.ox-vh__splash i:nth-child(2) { --kx: -24px; --ky: -58px; width: 8px; height: 8px; }
.ox-vh__splash i:nth-child(3) { --kx: 8px;   --ky: -64px; }
.ox-vh__splash i:nth-child(4) { --kx: 34px;  --ky: -52px; width: 7px; height: 7px; }
.ox-vh__splash i:nth-child(5) { --kx: 56px;  --ky: -36px; }
@keyframes ox-vh-splash-kruh {
	0%, 10.5% { opacity: 0; transform: translate(-50%, 0) scale(.18); }
	13%       { opacity: .95; }
	30%       { opacity: 0; transform: translate(-50%, 0) scale(1.06); }
	100%      { opacity: 0; transform: translate(-50%, 0) scale(1.06); }
}
@keyframes ox-vh-splash-kvapka {
	0%, 10.5% { opacity: 0; transform: translate(-50%, 0) scale(.4); }
	12.5%     { opacity: 1; }
	26%       { opacity: 0; transform: translate(calc(-50% + var(--kx)), var(--ky)) scale(1); }
	100%      { opacity: 0; transform: translate(calc(-50% + var(--kx)), var(--ky)) scale(1); }
}
/* tieň („podlaha“) pod pohárom */
.ox-vh__tien {
	position: absolute; left: 50%; bottom: -6px; width: 120%; height: 18px;
	transform: translateX(-50%); border-radius: 50%;
	background: radial-gradient(50% 50% at 50% 50%, rgba(27, 27, 27, .34) 0%, rgba(27, 27, 27, 0) 78%);
}

/* bez pohybu (OXO_POHYB=false): statická snímka — poháre stoja na podlahe
   a šplech je zamrznutý v polovici */
.ox-vh--stoji .ox-vh__pohar { animation: none; transform: none; opacity: 1; }
.ox-vh--stoji .ox-vh__splash b { animation: none; opacity: .5; transform: translate(-50%, 0) scale(.85); }
.ox-vh--stoji .ox-vh__splash i { animation: none; opacity: 0; }

@media (max-width: 900px) {
	.ox-vh__wrap { grid-template-columns: 1fr; padding-block: 22px 30px; }
	.ox-vh__scena { height: clamp(210px, 34vh, 320px); order: 1; }
	.ox-vh { min-height: 0; }
	.ox-vh__pohar { width: clamp(64px, 17vw, 96px); bottom: 14px; }
	.ox-vh__poznamka { top: 8px; right: 8px; font-size: 9px; }
}

/* --- kampaňový vizuál: tri poháre z aktuálnej kampane ----------------------- */
/* Nahrádza kreslenú scénu (.ox-vh__scena). Obrázok má červené pozadie kampane
   (zosvetlené k firemnej červenej), okraje sa maskou rozpúšťajú do hrdinu,
   takže sedí v každej téme bez orezávania pohárov. */
.ox-vh__vizual {
	position: relative; z-index: 1;
	height: clamp(340px, 52vh, 580px);
	display: grid; place-items: center;
	--vh-px: 0; --vh-py: 0;                 /* paralaxa z kurzora (-1 … 1), dáva JS */
}
.ox-vh__kampan {
	position: relative; margin: 0;
	height: 100%; aspect-ratio: 1028 / 1145; max-width: 100%;
	transform: translate(calc(var(--vh-px) * 10px), calc(var(--vh-py) * 8px));
	transition: transform .6s cubic-bezier(.2, .8, .2, 1);
}
/* maska je na obrázku, nie na figure — nálepky ostávajú ostré až po okraj */
.ox-vh__pohare {
	display: block; width: 100%; height: 100%; object-fit: contain;
	animation: ox-vh-levituj 6.5s ease-in-out infinite;
	will-change: transform;
	-webkit-mask-image: linear-gradient(90deg, transparent 0, #000 15%, #000 86%, transparent 100%),
	                    linear-gradient(180deg, transparent 0, #000 12%, #000 86%, transparent 100%);
	        mask-image: linear-gradient(90deg, transparent 0, #000 15%, #000 86%, transparent 100%),
	                    linear-gradient(180deg, transparent 0, #000 12%, #000 86%, transparent 100%);
	-webkit-mask-composite: source-in; mask-composite: intersect;
}
/* Three.js pozadie hrdinu (bobule v hĺbke) — pod obsahom, nad podkladom témy */
.ox-vh__pozadie { position: absolute; inset: 0; z-index: 0; pointer-events: none; opacity: var(--sk-vh-pozadie, .9); }
.ox-vh__pozadie canvas { display: block; width: 100% !important; height: 100% !important; }
@keyframes ox-vh-levituj {
	0%, 100% { transform: translateY(0); }
	50%      { transform: translateY(-10px); }
}
/* živé nálepky nad bielymi kruhmi kampane (poloha = podľa rastra) */
.ox-vh__nalepka {
	position: absolute; width: 21.5%; aspect-ratio: 1; border-radius: 50%;
	background: #fff; color: var(--sk-akcent);
	display: grid; place-content: center; text-align: center; gap: 1px;
	font-family: var(--sk-font-display); text-transform: uppercase; line-height: 1.02;
	box-shadow: 0 10px 26px -10px rgba(90, 0, 0, .55), inset 0 -3px 0 rgba(255, 22, 0, .10);
	animation: ox-vh-nalepka 5.2s ease-in-out infinite;
	transform: translate(calc(var(--vh-px) * -14px), calc(var(--vh-py) * -12px)) rotate(var(--n-rot, -8deg));
}
.ox-vh__nalepka i { font-style: normal; font-size: clamp(14px, 1.5vw, 22px); line-height: 1; display: block; }
.ox-vh__nalepka b { font-size: clamp(10px, 1.05vw, 15px); letter-spacing: .02em; display: block; }
.ox-vh__nalepka small { font-family: var(--sk-font-text); font-weight: 800; font-size: clamp(6.5px, .62vw, 9px); letter-spacing: .06em; display: block; color: var(--sk-atrament); opacity: .8; }
.ox-vh__nalepka--hore { left: 76.5%; top: -2.2%; --n-rot: -8deg; }
.ox-vh__nalepka--dole { left: 76.5%; top: 81.3%; --n-rot: 6deg; animation-delay: -2.4s; }
.ox-vh__nalepka--dole b { font-size: clamp(11px, 1.25vw, 18px); }
@keyframes ox-vh-nalepka {
	0%, 100% { translate: 0 0; }
	50%      { translate: 0 -6px; }
}
/* chipy s tvrdeniami kampane */
.ox-chip--kampan { display: inline-flex; align-items: center; gap: 7px; }
.ox-chip--kampan i { font-style: normal; font-size: 1.05em; line-height: 1; opacity: .9; }

/* bez pohybu */
.ox-vh--stoji .ox-vh__pohare, .ox-vh--stoji .ox-vh__nalepka { animation: none; }

@media (max-width: 900px) {
	/* mobil: vizuál kampane ide PRED text (hrdina „produkt-first“), text pod ním */
	.ox-vh__vizual { height: clamp(230px, 40vh, 330px); order: -1; margin: -4px 0 48px; } /* spodná nálepka presahuje figure o ~1/5 svojej výšky */
	.ox-vh--kampan .ox-vh__wrap { padding-block: 10px 28px; }
	.ox-vh__nalepka b { font-size: 9px; }
	.ox-vh__nalepka--dole b { font-size: 11px; }
	.ox-vh__nalepka small { font-size: 6px; }
	.ox-hero__odznaky--kampan { gap: 8px; }
}

/* --- vitrína čistoty (carousel „prečo OXO“) -------------------------------- */
.ox-svit__pas {
	display: grid; grid-auto-flow: column;
	grid-auto-columns: clamp(210px, 24vw, 290px);
	gap: clamp(12px, 1.6vw, 20px);
	overflow-x: auto; overscroll-behavior-x: contain;
	scroll-snap-type: x mandatory; scroll-behavior: smooth;
	padding: 6px 4px 18px;
	scrollbar-width: none; -ms-overflow-style: none;
	cursor: grab;
}
.ox-svit__pas::-webkit-scrollbar { display: none; }
.ox-svit__pas--tahame { cursor: grabbing; scroll-snap-type: none; scroll-behavior: auto; }
.ox-svit__pas--tahame .ox-svit__karta { pointer-events: none; }
.ox-svit__karta {
	scroll-snap-align: start;
	display: flex; flex-direction: column; text-align: left;
	border: 0; padding: 0; margin: 0; font: inherit; color: var(--sk-text);
	background: var(--sk-povrch); border-radius: var(--sk-r-stredny);
	box-shadow: var(--sk-tien-karta); overflow: hidden; cursor: pointer;
	transition: transform .45s var(--sk-prechod), box-shadow .45s var(--sk-prechod);
}
.ox-svit__karta:hover { transform: translateY(-6px); }
.ox-svit__karta:focus-visible { outline: 3px solid var(--sk-akcent); outline-offset: 3px; }
/* fotky majú biele pozadie → dlaždica MUSÍ byť biela, contain (pravidlo značky) */
.ox-svit__foto { aspect-ratio: 4 / 3; background: #fff; display: grid; place-items: center; }
.ox-svit__foto img { width: 100%; height: 100%; object-fit: contain; padding: 10%; }
.ox-svit__telo { padding: 16px 18px 20px; display: flex; flex-direction: column; gap: 6px; flex: 1; }
.ox-svit__nazov {
	font-family: var(--sk-font-nadpis); font-size: clamp(17px, 1.6vw, 21px);
	line-height: var(--sk-nadpis-lh); text-transform: var(--sk-nadpis-transform);
	letter-spacing: var(--sk-nadpis-spacing);
}
.ox-svit__text { font-size: 13.5px; color: var(--sk-text-tlmeny); margin: 0; }
.ox-svit__viac { margin-top: auto; font-size: 12.5px; font-weight: 700; color: var(--sk-akcent);
	letter-spacing: .08em; text-transform: uppercase; }
.ox-svit__listy { display: flex; gap: 8px; }
.ox-svit__arw {
	width: 42px; height: 42px; border-radius: var(--sk-btn-r);
	border: 2px solid var(--sk-linka); background: var(--sk-povrch); color: var(--sk-text);
	display: grid; place-items: center; cursor: pointer;
	transition: background .25s var(--sk-prechod), color .25s var(--sk-prechod),
	            border-color .25s var(--sk-prechod), transform .25s var(--sk-prechod);
}
.ox-svit__arw:hover { background: var(--sk-akcent); border-color: var(--sk-akcent); color: #fff; transform: translateY(-2px); }
.ox-svit__arw svg { width: 15px; height: 15px; }
.ox-svit__arw:disabled { opacity: .35; pointer-events: none; }

/* --- popup s marketingovým popisom ----------------------------------------- */
.ox-vpopup .ox-modal__okno { max-width: 640px; padding: 0; overflow: hidden; }
.ox-vpopup__hlava { position: relative; background: #fff; }
.ox-vpopup__hlava img { width: 100%; height: clamp(180px, 30vh, 260px); object-fit: contain; padding: 18px; display: block; }
.ox-vpopup__zatvor {
	position: absolute; top: 12px; right: 12px;
	width: 40px; height: 40px; border-radius: 50%;
	border: 0; cursor: pointer; font-size: 17px; line-height: 1;
	background: var(--sk-atrament); color: #fff;
	display: grid; place-items: center;
	transition: transform .25s var(--sk-prechod), background .25s var(--sk-prechod);
}
.ox-vpopup__zatvor:hover { background: var(--sk-akcent); transform: rotate(90deg); }
.ox-vpopup__telo { padding: clamp(20px, 3vw, 30px); }
.ox-vpopup__telo .ox-oko { color: var(--sk-akcent); }
.ox-vpopup__nadpis {
	font-family: var(--sk-font-nadpis); font-size: clamp(22px, 2.6vw, 30px);
	line-height: var(--sk-nadpis-lh); text-transform: var(--sk-nadpis-transform);
	letter-spacing: var(--sk-nadpis-spacing); margin: 4px 0 10px;
}
.ox-vpopup__text { color: var(--sk-text); line-height: 1.65; margin: 0 0 18px; }
.ox-vpopup__akcie { display: flex; flex-wrap: wrap; gap: 10px; }
@media (max-width: 560px) {
	.ox-vpopup .ox-modal__okno { max-width: 100%; }
	.ox-vpopup__hlava img { height: 150px; }
}

/* --- 3D vitrína claimov (showcase carousel návrhov 12–16) ------------------ */
/* Otočný kruh kariet ako v návrhu 09 Showcase; karty preberajú vzhľad
   .ox-svit__karta, takže témy ich ďalej štýlujú bez zmeny. */
.ox-svit3d { position: relative; overflow: hidden; }
.ox-svit3d__scena {
	height: clamp(380px, 50vh, 480px);
	perspective: 1500px;
	display: grid; place-items: center;
	touch-action: pan-y;               /* zvislý scroll stránky ostáva prstom voľný */
	cursor: grab;
	user-select: none; -webkit-user-select: none;
}
.ox-svit3d__scena--tahame { cursor: grabbing; }
.ox-svit3d__scena--tahame .ox-svit3d__karta { pointer-events: none; }
.ox-svit3d__koleso {
	position: relative;
	width: min(var(--svit3d-w, 250px), 64vw);
	height: 86%;
	transform-style: preserve-3d;
	transform: translateZ(calc(var(--polomer, 340px) * -1));
}
.ox-svit3d__karta { opacity: .42; }
.ox-svit3d__karta--celo { opacity: 1; }
/* Poloha karty v kruhu je nedotknuteľná — prebíja aj hover posuny z tém
   (inak by hover „vytrhol“ kartu z kolesa). Dôraz prednej karty nechávame
   na opacity a tieňoch tém, nie na transformáciách. */
.ox-svit3d .ox-svit3d__karta.ox-svit3d__karta,
.ox-svit3d .ox-svit3d__karta.ox-svit3d__karta:hover {
	position: absolute; inset: 0; width: 100%; margin: 0;
	transform: rotateY(var(--u)) translateZ(var(--polomer, 340px));
	backface-visibility: hidden; -webkit-backface-visibility: hidden;
}
.ox-svit3d__karta .ox-svit__foto { flex: 0 0 auto; }
.ox-svit3d__karta .ox-svit__telo { overflow: hidden; }
.ox-svit3d__bodky { display: flex; gap: 8px; justify-content: center; margin-top: 10px; }
.ox-svit3d__bodka {
	width: 11px; height: 11px; border-radius: 50%; padding: 0;
	border: 2px solid var(--sk-akcent); background: transparent; cursor: pointer;
	transition: background .25s var(--sk-prechod), transform .25s var(--sk-prechod);
}
.ox-svit3d__bodka:hover { transform: scale(1.2); }
.ox-svit3d__bodka[aria-selected="true"] { background: var(--sk-akcent); transform: scale(1.15); }
@media (max-width: 900px) {
	.ox-svit3d__scena { height: clamp(330px, 46vh, 400px); }
	.ox-svit3d__koleso { width: min(230px, 62vw); }
}

/* =============================================================================
   SPOLOČNÝ ZÁKLAD NÁVRHOV 17–20 — „MOTION + SHOWCASE + RETRO“
   -----------------------------------------------------------------------------
   Štyri návrhy postavené z tých istých troch dielov:
     • 06 MOTION   → typografické stavy (písmená vychádzajú z masky), plátno
                     s bobuľami, dlhé dobehy, bežiaci pás,
     • 09 SHOWCASE → otočný kruh skutočných produktov + editoriálny panel
                     s veľkou cenou, ovládanie so šípkami, bodkami a pomôckou,
     • 15 RETRO    → materiál: plné farebné podložky namiesto rozmazania,
                     vstupenky s perforáciou, pruhy, smaltované odznaky.

   Kostra (rozloženie) je TU a je pre všetky štyri rovnaká; návrh mení iba
   usporiadanie polí (`.ox-msr--<slug>` nižšie) a materiál (v súbore témy).

   Prečo to ladí: hrdina má JEDEN index a jeden časovač — kruh, sadzba aj panel
   sa hýbu spolu. Ovládanie je jedno (šípky, bodky, ťah, koliesko) a platí
   naraz na produkt aj na text.
   ========================================================================== */
.ox-msr {
	padding: 0;
	position: relative;
	min-height: min(88vh, 860px);
	display: grid;
	/* vlastné NEPRIEHĽADNÉ pozadie — pod stránkou beží efekt témy s podobnou
	   scénou a dve vrstvy rovnakých bodiek by sa bili */
	background: var(--sk-msr-bg, radial-gradient(72% 58% at 50% 34%, var(--sk-krem) 0%, var(--sk-bg) 66%));
}
.ox-msr__platno { position: absolute; inset: 0; z-index: 0; display: block; width: 100%; height: 100%; }
/* závoj medzi rastrom a sadzbou — bez neho je typografia „zašumená“ */
.ox-msr__zavoj {
	position: absolute; inset: 0; z-index: 1; pointer-events: none; display: block;
	opacity: var(--sk-msr-zavoj, .9);
	background:
		radial-gradient(46% 40% at 30% 44%, var(--sk-bg) 0%, var(--sk-bg) 30%, transparent 78%),
		radial-gradient(66% 60% at 50% 46%, var(--sk-bg-2) 0%, transparent 74%);
}
/* pruhovaná hrana markízy dole — každá téma jej dá vlastný vzor */
.ox-msr__pruh {
	position: absolute; left: 0; right: 0; bottom: 0; height: 0; z-index: 4;
	pointer-events: none;
}

/* --- rozloženie hrdinu ------------------------------------------------------ */
.ox-msr__mriezka {
	position: relative; z-index: 3;
	width: 100%; max-width: var(--sk-maxw); margin-inline: auto;
	/* Rytmus je zamerne viazany na VYSKU okna (vh), nie na sirku: hrdina rodiny
	   sa musi zmestit nad ohyb aj na 1440x1000 aj na nizkych notebookoch. */
	padding: clamp(22px, 3.4vh, 52px) var(--sk-pad) clamp(14px, 2.2vh, 28px);
	display: grid;
	grid-template-columns: minmax(0, 1.02fr) minmax(0, .98fr);
	grid-template-areas:
		"javisko vitrina"
		"panel   vitrina"
		"lista   lista";
	grid-template-rows: auto auto auto;
	gap: clamp(12px, 1.6vh, 22px) clamp(18px, 3vw, 48px);
	align-items: center; align-content: center;
}
.ox-msr__javisko { grid-area: javisko; min-width: 0; }
.ox-msr__vitrina { grid-area: vitrina; min-width: 0; align-self: stretch; display: grid; align-items: center; }
.ox-msr__panel   { grid-area: panel;   min-width: 0; align-self: start; }
.ox-msr__lista   { grid-area: lista;   min-width: 0; }

/* --- typografické stavy (podpis návrhu 06) ---------------------------------- */
.ox-msr__javisko {
	position: relative;
	display: grid; grid-template-areas: "stav"; align-items: center;
}
/* Vlastný závoj pod sadzbou. Spoločný závoj hrdinu leží v strede plochy, ale
   sadzba býva podľa návrhu vľavo aj vpravo — bez tohto sa stane, že sýta bobuľa
   z plátna skončí presne pod odsekom a text sa na nej stratí (overené na 390 px). */
.ox-msr__javisko::before {
	content: ''; position: absolute; inset: -7% -9%; z-index: -1; pointer-events: none;
	opacity: var(--msr-javisko-zavoj, .8);
	background: radial-gradient(ellipse at 34% 46%,
		var(--sk-bg) 0%, var(--sk-bg) 46%, transparent 78%);
}
.ox-msr__stav {
	grid-area: stav;                      /* všetky stavy v jednej bunke → nič neposkakuje */
	min-width: 0; display: flex; flex-direction: column; gap: 12px;
	align-items: var(--msr-zarovnanie, flex-start);
	text-align: var(--msr-text, left);
	visibility: hidden; opacity: 0;
}
.ox-msr__stav--aktivny, .ox-msr__stav--odchod { visibility: visible; opacity: 1; }
.ox-msr__stav .ox-oko { margin-bottom: 0; }
.ox-msr__h1, .ox-msr__h2 { margin: 0; max-width: 100%; }
.ox-msr__h1 { font-size: clamp(31px, 4.6vw, 70px); }
.ox-msr__h2 { font-size: clamp(27px, 3.8vw, 58px); }
.ox-msr__lead {
	margin: 0; max-width: 44ch; color: var(--sk-text-tlmeny);
	font-size: clamp(14.5px, 1.05vw, 17px); line-height: 1.6;
	text-wrap: pretty;                    /* posledne dva riadky sa vyvazia — ziadna sirota */
}
.ox-msr__akcie { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 2px; justify-content: var(--msr-zarovnanie, flex-start); }
.ox-msr__pilulka {
	display: inline-flex; align-items: center; gap: 9px;
	font-size: 10.5px; font-weight: 700; letter-spacing: .2em; text-transform: uppercase;
	color: var(--sk-text); background: var(--sk-povrch);
	border: 1px solid var(--sk-linka); border-radius: var(--sk-r-pilulka); padding: 8px 16px;
}
.ox-msr__pilulka i { width: 7px; height: 7px; border-radius: 50%; background: var(--sk-akcent); flex: 0 0 auto; }
.ox-msr--pohyb .ox-msr__pilulka i { animation: ox-msr-tep 1.9s var(--sk-prechod) infinite; }
@keyframes ox-msr-tep { 0%, 100% { transform: scale(1); opacity: 1; } 50% { transform: scale(1.55); opacity: .45; } }

/* Maska je na SLOVE a má zámerne veľký zvislý padding s rovnakým záporným
   marginom: Anton inak nechá mäkčene a dĺžne orezané o hranu masky. */
.ox-msr__slovo {
	display: inline-block; overflow: hidden; vertical-align: top; white-space: nowrap;
	padding: .2em .04em .12em; margin: -.2em -.04em -.12em;
}
.ox-msr__znak { display: inline-block; }
.ox-msr--pohyb .ox-msr__stav--aktivny .ox-msr__znak {
	animation: ox-msr-vjazd .95s var(--sk-prechod) both;
	animation-delay: calc(var(--i, 0) * .026s);
}
.ox-msr--pohyb .ox-msr__stav--odchod .ox-msr__znak {
	animation: ox-msr-odchod .3s cubic-bezier(.55, 0, .9, .35) both;
	animation-delay: calc(var(--o, 0) * .006s);   /* odchod ide od konca nadpisu */
}
.ox-msr--pohyb .ox-msr__stav--aktivny .ox-msr__cast {
	animation: ox-msr-nabeh .75s var(--sk-prechod) both; animation-delay: var(--d, 0s);
}
.ox-msr--pohyb .ox-msr__stav--odchod .ox-msr__cast { animation: ox-msr-zhasni .24s ease-in both; }
@keyframes ox-msr-vjazd { from { transform: translateY(118%); } to { transform: none; } }
@keyframes ox-msr-odchod { from { transform: none; } to { transform: translateY(-120%); } }
@keyframes ox-msr-nabeh { from { opacity: 0; transform: translateY(24px); } to { opacity: 1; transform: none; } }
@keyframes ox-msr-zhasni { to { opacity: 0; transform: translateY(-24px); } }

/* --- kruh skutočných produktov (podpis návrhu 09) --------------------------- */
.ox-msr__scena {
	position: relative;
	height: var(--msr-scena-v, clamp(330px, 46vh, 460px));
	perspective: 1400px; perspective-origin: 50% 46%;
	display: grid; place-items: center;
	touch-action: pan-y;                  /* zvislý scroll stránky ostáva prstom voľný */
	cursor: grab; user-select: none; -webkit-user-select: none;
}
.ox-msr__scena--tahame { cursor: grabbing; }
.ox-msr__scena--tahame .ox-msr__karta { pointer-events: none; }
/* Koleso je presne veľké ako KARTA — nie ako scéna. Keby dedilo výšku scény,
   karta by sa naťahovala do pásu a fotka by v nej plávala v prázdne. */
.ox-msr__koleso {
	position: relative;
	width: min(var(--msr-karta-w, 206px), 60vw);
	height: min(var(--msr-karta-v, 330px), 88%);
	transform-style: preserve-3d;
	transform: translateZ(calc(var(--polomer, 340px) * -1));
}
/* Poloha karty v kruhu je nedotknuteľná — prebíja aj hover posuny z tém
   (inak by hover „vytrhol“ kartu z kolesa). Dôraz prednej karty nesie
   opacity a tieň, nikdy transform. */
.ox-msr__koleso .ox-msr__karta.ox-msr__karta,
.ox-msr__koleso .ox-msr__karta.ox-msr__karta:hover {
	position: absolute; inset: 0; width: 100%; margin: 0;
	transform: rotateY(var(--u)) translateZ(var(--polomer, 340px));
	backface-visibility: hidden; -webkit-backface-visibility: hidden;
}
.ox-msr__karta {
	display: flex; flex-direction: column; text-align: left; text-decoration: none;
	color: var(--sk-text); background: var(--sk-povrch);
	border-radius: var(--sk-r-velky); overflow: hidden;
	box-shadow: var(--sk-tien-karta), var(--sk-obrys);
	opacity: .40;
	transition: opacity .35s var(--sk-prechod), box-shadow .35s var(--sk-prechod);
}
.ox-msr__karta--celo { opacity: 1; }
.ox-msr__karta:focus-visible { outline: 3px solid var(--sk-akcent); outline-offset: 3px; }
/* fotky majú biele pozadie → dlaždica MUSÍ ostať biela, contain (pravidlo značky) */
.ox-msr__foto { aspect-ratio: 1 / 1; background: var(--sk-biela); display: grid; place-items: center; flex: 0 0 auto; }
.ox-msr__foto img { width: 100%; height: 100%; object-fit: contain; padding: 9%; }
.ox-msr__telo { padding: 12px 14px 15px; display: flex; flex-direction: column; gap: 3px; flex: 1; overflow: hidden; }
.ox-msr__kat { font-size: 11px; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; color: var(--sk-text-tlmeny); }
.ox-msr__nazov {
	font-family: var(--sk-font-nadpis); font-size: 14.5px; line-height: var(--sk-nadpis-lh);
	letter-spacing: var(--sk-nadpis-spacing); text-transform: var(--sk-nadpis-transform);
	display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
}
.ox-msr__cena { margin-top: auto; padding-top: 6px; font-family: var(--sk-font-display); font-size: 19px; line-height: 1.25; color: var(--sk-akcent); }
.ox-msr__nacitava {
	position: absolute; inset: 0; display: grid; place-items: center; z-index: 4;
	pointer-events: none; transition: opacity .6s var(--sk-prechod);
}
.ox-msr__nacitava--prec { opacity: 0; }
.ox-msr__nacitava b {
	font-family: var(--sk-font-display); color: var(--sk-akcent); font-size: 12.5px;
	letter-spacing: .2em; line-height: var(--sk-nadpis-lh);
}
.ox-msr--pohyb .ox-msr__nacitava b { animation: ox-msr-blik 1.1s ease-in-out infinite; }
@keyframes ox-msr-blik { 50% { opacity: .3; } }

/* --- editoriálny panel s veľkou cenou (podpis návrhu 09) -------------------- */
.ox-msr__panel { position: relative; text-align: var(--msr-panel-text, left); }
/* Panel stojí mimo stredu, kam nedočiahne spoločný závoj hrdinu — a práve tam
   plávajú bobule z plátna. Dostáva preto vlastný závoj, rovnako ako sadzba. */
.ox-msr__panel::before {
	content: ''; position: absolute; inset: -10% -8%; z-index: -1; pointer-events: none;
	opacity: var(--msr-javisko-zavoj, .8);
	background: radial-gradient(ellipse at 50% 50%,
		var(--sk-bg) 0%, var(--sk-bg) 44%, transparent 78%);
}
/* Dva riadky su VYHRADENE: niektore nazvy sa zalomia a bez tohto by panel
   (a s nim cely hrdina aj obsah pod nim) skakal pri kazdom kroku carouselu. */
.ox-msr__panel .ox-pv__nazov {
	margin: 6px 0 0; min-height: 2.3em; min-height: 2lh;
	/* grid, nie flex: anonymna polozka gridu sa roztiahne na plnu sirku, takze
	   text-align (vpravo v 18 a 20) funguje dalej. Rezerva na druhy riadok sa
	   rozdeli nad a pod nazov — 18 px hore a 18 px dole vyzera ako bezna medzera,
	   37 px na jednom mieste vyzeralo ako diera. */
	display: grid; align-content: center;
}
.ox-msr__panel .ox-pv__cena { font-size: clamp(2rem, 3.4vw, 3.2rem); }
.ox-msr__panel-akcie { display: flex; flex-wrap: wrap; gap: 9px; margin-top: 14px; justify-content: var(--msr-zarovnanie, flex-start); }

/* --- ovládanie (šípky, bodky, pomôcka) ------------------------------------- */
.ox-msr__lista {
	display: flex; align-items: center; flex-wrap: wrap;
	gap: 14px; padding-top: clamp(6px, 1.6vh, 18px);
	justify-content: var(--msr-lista, flex-start);
}
.ox-msr__arw {
	width: 44px; height: 44px; display: grid; place-items: center; cursor: pointer;
	border: 2px solid var(--sk-linka); border-radius: var(--sk-btn-r);
	background: var(--sk-povrch); color: var(--sk-text);
	transition: background .3s var(--sk-prechod), color .3s var(--sk-prechod),
	            border-color .3s var(--sk-prechod), transform .3s var(--sk-prechod),
	            box-shadow .3s var(--sk-prechod);
}
.ox-msr__arw:hover { background: var(--sk-akcent); border-color: var(--sk-akcent); color: var(--sk-biela); transform: translateY(-2px); }
.ox-msr__arw svg { width: 15px; height: 15px; }
.ox-msr__bodky { display: flex; align-items: center; gap: 8px; }
.ox-msr__bodka {
	width: 30px; height: 5px; padding: 0; border: 0; overflow: hidden; cursor: pointer;
	border-radius: var(--sk-r-pilulka); background: var(--sk-linka);
	transition: width .3s var(--sk-prechod);
}
.ox-msr__bodka i { display: block; width: 100%; height: 100%; background: var(--sk-akcent); transform: scaleX(0); transform-origin: left; }
.ox-msr__bodka--aktivna { width: 44px; }
.ox-msr__bodka--aktivna i { transform: scaleX(1); }
/* výplň bodky je zároveň ukazovateľ času do ďalšieho kroku */
.ox-msr--pohyb .ox-msr__bodka--aktivna i { animation: ox-msr-plnenie var(--msr-trvanie, 5.2s) linear both; }
@keyframes ox-msr-plnenie { from { transform: scaleX(0); } to { transform: scaleX(1); } }
.ox-msr__hint {
	display: inline-flex; align-items: center; gap: 8px; margin-inline-start: auto;
	font-size: 10.5px; font-weight: 700; letter-spacing: .16em; text-transform: uppercase;
	color: var(--sk-text-tlmeny);
}
.ox-msr__hint i { width: 26px; height: 14px; border: 1.5px solid var(--sk-text-tlmeny); border-radius: 8px; position: relative; display: inline-block; flex: 0 0 auto; }
.ox-msr__hint i::after {
	content: ""; position: absolute; top: 3px; left: 5px; width: 3px; height: 5px;
	background: var(--sk-text-tlmeny); border-radius: 2px;
}
.ox-msr--pohyb .ox-msr__hint i::after { animation: ox-msr-swipe 1.8s ease-in-out infinite; }
@keyframes ox-msr-swipe { 0%, 100% { transform: translateX(0); } 50% { transform: translateX(12px); } }

/* --- bežiaci pás pod hrdinom ------------------------------------------------ */
.ox-msr-pas {
	position: relative; z-index: 5; overflow: hidden;
	background: var(--sk-akcent); color: var(--sk-biela); padding: 13px 0;
}
.ox-msr-pas__stopa { display: flex; width: max-content; }
.ox-msr-pas--pohyb .ox-msr-pas__stopa { animation: ox-msr-pas 28s linear infinite; }
.ox-msr-pas:hover .ox-msr-pas__stopa { animation-play-state: paused; }
.ox-msr-pas__stopa span {
	display: inline-flex; align-items: center; gap: 20px; white-space: nowrap; padding-inline: 20px;
	font-family: var(--sk-font-display); text-transform: uppercase;
	font-size: clamp(18px, 2.4vw, 30px); line-height: var(--sk-nadpis-lh);
}
.ox-msr-pas__stopa span::after {
	content: ""; width: 10px; height: 10px; border-radius: 999px;
	background: currentColor; flex: 0 0 auto; opacity: .85;
}
@keyframes ox-msr-pas { to { transform: translateX(-50%); } }

/* --- podpisová sekcia „Tri kroky a máš to“ ---------------------------------- */
.ox-msr-krok {
	position: relative; overflow: hidden;
	background: var(--sk-povrch); border-radius: var(--sk-r-velky);
	box-shadow: var(--sk-tien-karta), var(--sk-obrys);
	padding: 24px;
}
.ox-msr-krok__cislo {
	position: absolute; right: 14px; top: 2px; pointer-events: none;
	font-family: var(--sk-font-display); font-size: 66px; line-height: var(--sk-nadpis-lh);
	color: var(--sk-akcent); opacity: .15;
}
.ox-msr-krok__foto {
	display: grid; place-items: center; height: 150px; margin-bottom: 14px; overflow: hidden;
	background: var(--sk-biela); border-radius: var(--sk-r-obrazok); box-shadow: var(--sk-obrys);
}
.ox-msr-krok__foto img { max-height: 132px; width: auto; object-fit: contain; }
/* perforácia vstupenky — materiál jej dáva téma, kostra len miesto */
.ox-msr-krok__perf { display: block; height: 0; margin: 0 0 4px; }
.ox-msr-krok h3 { position: relative; margin-bottom: 8px; }
.ox-msr-krok p { margin: 0; font-size: 14.5px; line-height: 1.62; }

/* --- tmavý hrdina (`cfg.tmavy`) ---------------------------------------------
   Nočný pult: hrdina je tmavý, zvyšok webu ostáva svetlý. Prefarbenie je TU
   a je spoločné — inak by ho každá téma riešila po svojom a niektorý prvok
   (ovládanie, panel, pomôcka) by ostal čierny na čiernom. Presne to sa stalo
   tmavým skinom na /noveoxo pri audite. */
.ox-msr--tmavy { color: var(--sk-biela); }
.ox-msr--tmavy .ox-msr__zavoj { opacity: var(--sk-msr-zavoj, .55); background:
	radial-gradient(52% 44% at 50% 46%, rgba(0,0,0,.55) 0%, rgba(0,0,0,.28) 46%, transparent 80%); }
.ox-msr--tmavy .ox-msr__javisko::before {
	opacity: 1;
	background: radial-gradient(ellipse at 34% 46%,
		rgba(0,0,0,.60) 0%, rgba(0,0,0,.42) 46%, transparent 78%);
}
.ox-msr--tmavy .ox-msr__panel::before {
	opacity: 1;
	background: radial-gradient(ellipse at 50% 50%,
		rgba(0,0,0,.55) 0%, rgba(0,0,0,.34) 46%, transparent 78%);
}
.ox-msr--tmavy .ox-msr__h1,
.ox-msr--tmavy .ox-msr__h2 { color: var(--sk-biela); }
.ox-msr--tmavy .ox-msr__lead { color: rgba(255,255,255,.80); }
.ox-msr--tmavy .ox-oko { color: var(--sk-ruz); }
.ox-msr--tmavy .ox-msr__pilulka {
	background: rgba(255,255,255,.10); color: var(--sk-biela);
	border-color: rgba(255,255,255,.34);
}
.ox-msr--tmavy .ox-msr__arw {
	background: rgba(255,255,255,.08); color: var(--sk-biela);
	border-color: rgba(255,255,255,.34);
}
.ox-msr--tmavy .ox-msr__arw:hover { background: var(--sk-akcent); border-color: var(--sk-akcent); }
.ox-msr--tmavy .ox-msr__bodka { background: rgba(255,255,255,.24); }
.ox-msr--tmavy .ox-msr__hint { color: rgba(255,255,255,.66); }
.ox-msr--tmavy .ox-msr__hint i { border-color: rgba(255,255,255,.66); }
.ox-msr--tmavy .ox-msr__hint i::after { background: rgba(255,255,255,.66); }
.ox-msr--tmavy .ox-msr__panel .ox-pv__idx,
.ox-msr--tmavy .ox-msr__panel .ox-pv__kat { color: rgba(255,255,255,.66); }
.ox-msr--tmavy .ox-msr__panel .ox-pv__nazov { color: var(--sk-biela); }
.ox-msr--tmavy .ox-msr__panel .ox-pv__cena small { color: rgba(255,255,255,.66); }
/* obrysové tlačidlo na tmavom: biely rám, biely text (jadro má atramentový) */
.ox-msr--tmavy .ox-btn--obrys { border-color: rgba(255,255,255,.55); color: var(--sk-biela); }
.ox-msr--tmavy .ox-btn--obrys:hover:not(:disabled) { background: var(--sk-biela); color: var(--sk-atrament); }
.ox-msr--tmavy .ox-btn--obrys:disabled { color: rgba(255,255,255,.55); }
/* karty vitríny ostávajú SVETLÉ — produktové fotky majú biele pozadie (KONTRAKT §5) */

/* =============================================================================
   Usporiadanie polí — jediné, čím sa štyri návrhy rodiny líšia v rozložení
   ========================================================================== */
/* --- červený hrdina (`cfg.cerveny`) -----------------------------------------
   Sýta firemná červená pod celým hrdinom. Ide vždy spolu s `.ox-msr--tmavy`
   (svetlá sadzba), navyše opravuje presne tie prvky, ktoré na červenej ZMIZNÚ,
   lebo sú samy červené: cena v paneli, výplň bodiek, hlavné tlačidlo, hlásenie
   „načítavam“ a hover šípok. Bez tohto bloku by červený hrdina vyzeral ako
   poloprázdny — a presne toto je chyba, ktorú tmavé skiny na /noveoxo urobili. */
.ox-msr--cerveny .ox-msr__zavoj {
	opacity: var(--sk-msr-zavoj, .5);
	background: radial-gradient(54% 46% at 50% 46%, rgba(120,8,0,.42) 0%, rgba(120,8,0,.18) 52%, transparent 82%);
}
.ox-msr--cerveny .ox-msr__javisko::before {
	opacity: 1;
	background: radial-gradient(ellipse at 34% 46%,
		rgba(120,8,0,.40) 0%, rgba(120,8,0,.24) 46%, transparent 78%);
}
.ox-msr--cerveny .ox-msr__panel::before {
	opacity: 1;
	background: radial-gradient(ellipse at 50% 50%,
		rgba(120,8,0,.40) 0%, rgba(120,8,0,.24) 46%, transparent 78%);
}
.ox-msr--cerveny .ox-oko { color: var(--sk-biela); }
/* Na červenej sú drobné texty tlmenou bielou takmer nečitateľné — dvíhame ich. */
.ox-msr--cerveny .ox-msr__panel .ox-pv__idx,
.ox-msr--cerveny .ox-msr__panel .ox-pv__kat,
.ox-msr--cerveny .ox-msr__panel .ox-pv__cena small,
.ox-msr--cerveny .ox-msr__hint { color: rgba(255,255,255,.88); }
.ox-msr--cerveny .ox-msr__hint i { border-color: rgba(255,255,255,.88); }
.ox-msr--cerveny .ox-msr__hint i::after { background: rgba(255,255,255,.88); }
.ox-msr--cerveny .ox-msr__lead { color: rgba(255,255,255,.92); }
/* bočné karty na červenej stmavnú menej — pri .40 z nich ostali ružové duchy */
.ox-msr--cerveny .ox-msr__karta { opacity: .52; }
.ox-msr--cerveny .ox-msr__karta--celo { opacity: 1; }
.ox-msr--cerveny .ox-msr__pilulka i { background: var(--sk-biela); }
.ox-msr--cerveny .ox-msr__panel .ox-pv__idx b { color: var(--sk-biela); }
.ox-msr--cerveny .ox-msr__panel .ox-pv__cena { color: var(--sk-biela); }
.ox-msr--cerveny .ox-msr__bodka i { background: var(--sk-biela); }
.ox-msr--cerveny .ox-msr__nacitava b { color: var(--sk-biela); }
.ox-msr--cerveny .ox-msr__arw:hover {
	background: var(--sk-biela); border-color: var(--sk-biela); color: var(--sk-akcent);
}
/* hlavné tlačidlo je červené — na červenej ploche sa musí obrátiť na biele */
.ox-msr--cerveny .ox-btn--hlavne {
	background: var(--sk-biela); color: var(--sk-akcent); border-color: transparent;
}
.ox-msr--cerveny .ox-btn--hlavne:hover:not(:disabled) {
	background: var(--sk-krem); color: var(--sk-akcent-tmavy);
}

/* 17 DINER — sadzba vľavo, kruh vpravo, panel pod sadzbou. */
.ox-msr--17-diner { --msr-zarovnanie: flex-start; --msr-text: left; --msr-lista: flex-start; }

/* 18 CHROME — kruh je ZA sadzbou (ako javisko v návrhu 06), panel vpravo dole. */
.ox-msr--18-chrome {
	--msr-zarovnanie: flex-start; --msr-text: left; --msr-lista: flex-start;
	--msr-panel-text: right;
	min-height: min(82vh, 780px);
	/* 18 je jediny, kto uklada javisko+vitrinu, panel a listu POD seba do troch
	   riadkov — scena preto musi byt NIZSIA nez v 17/19/20, inak hrdina pretecie
	   okno a ovladanie skonci pod ohybom. Karta je tiez mensia: sadzba stoji pred
	   nou a velka karta by jej liezla do riadkov. */
	--msr-scena-v: clamp(300px, 40vh, 400px);
	--msr-karta-w: 196px; --msr-karta-v: 300px;
	--msr-javisko-zavoj: .4;
}
/* sadzba je v 18 v tom istom riadku ako vitrina — drzime ju kratsiu */
.ox-msr--18-chrome .ox-msr__h1 { font-size: clamp(30px, 4.1vw, 60px); }
.ox-msr--18-chrome .ox-msr__h2 { font-size: clamp(26px, 3.5vw, 52px); }
.ox-msr--18-chrome .ox-msr__mriezka {
	grid-template-columns: minmax(0, 1fr);
	grid-template-areas: "stred" "panel" "lista";
}
.ox-msr--18-chrome .ox-msr__javisko,
.ox-msr--18-chrome .ox-msr__vitrina { grid-area: stred; }
/* ⚠️ Javisko a vitrína síce zdieľajú jednu bunku, ale NESTOJA NA SEBE: sadzba
   drží ľavú polovicu, kruh pravú a prekrývajú sa len pár percent v strede.
   Kým mali obe plnú šírku, biele Anton písmená ležali priamo na BIELEJ karte
   vitríny — a schovať kartu sa nesmie (KONTRAKT §5), takže to nezachránil
   žiadny závoj. */
.ox-msr--18-chrome .ox-msr__javisko {
	z-index: 3; pointer-events: none;
	justify-self: start; width: min(58%, 660px);
}
.ox-msr--18-chrome .ox-msr__stav a,
.ox-msr--18-chrome .ox-msr__stav button { pointer-events: auto; }
.ox-msr--18-chrome .ox-msr__vitrina {
	z-index: 1; justify-self: end; width: min(50%, 600px);
}
.ox-msr--18-chrome .ox-msr__panel { justify-self: end; max-width: 380px; }
.ox-msr--18-chrome .ox-msr__panel-akcie { justify-content: flex-end; }
.ox-msr--18-chrome .ox-msr__hint { margin-inline-start: auto; }

/* 19 JUKEBOX — kruh je hlavný hrdina (vľavo, väčší), sadzba a panel vpravo. */
.ox-msr--19-jukebox {
	--msr-zarovnanie: flex-start; --msr-text: left; --msr-lista: flex-start;
	--msr-scena-v: clamp(360px, 54vh, 520px); --msr-karta-w: 230px; --msr-karta-v: 368px;
}
.ox-msr--19-jukebox .ox-msr__mriezka {
	grid-template-columns: minmax(0, 1.12fr) minmax(0, .88fr);
	grid-template-areas:
		"vitrina javisko"
		"vitrina panel"
		"lista   lista";
}

/* 20 DRIVE-IN — sadzba vľavo cez obidva riadky, kruh vpravo, panel POD kruhom. */
.ox-msr--20-drivein {
	--msr-zarovnanie: flex-start; --msr-text: left; --msr-lista: flex-start;
	--msr-panel-text: right;
	/* Panel stoji POD scenou (nie vedla nej ako v 17/19), takze scena musi byt
	   nizsia — inak sa hrdina nezmesti nad ohyb a lista sa orezne. */
	--msr-scena-v: clamp(320px, 42vh, 420px);
}
.ox-msr--20-drivein .ox-msr__mriezka {
	grid-template-areas:
		"javisko vitrina"
		"javisko panel"
		"lista   lista";
}
.ox-msr--20-drivein .ox-msr__javisko { align-self: center; }
.ox-msr--20-drivein .ox-msr__panel { justify-self: end; text-align: right; }
.ox-msr--20-drivein .ox-msr__panel-akcie { justify-content: flex-end; }

/* 21 SHOWROOM — rovnaké rozloženie ako 20 (sadzba vľavo, kruh vpravo, panel pod
   kruhom); Three.js pozadie sedí pod závojom v rovnakej vrstve ako plátno. */
.ox-msr--rodina-show {
	--msr-zarovnanie: flex-start; --msr-text: left; --msr-lista: flex-start;
	--msr-panel-text: right;
	/* Karta nesie tvrdenie (nadnadpis + názov na 2 riadky + popis na 2 riadky +
	   odkaz), nie cenu — potrebuje vyššie telo, inak sa text ORÍZNE. */
	/* Scéna musí byť vyššia než karta (karta = 88 % scény), inak karty prerastú rám.
	   Zároveň nie MOC vyššia — rám má karty objímať, nie ich strácať v prázdne. */
	--msr-scena-v: clamp(392px, 45vh, 412px);
	--msr-karta-w: 212px; --msr-karta-v: 356px;
}
.ox-msr--rodina-show .ox-msr__mriezka {
	grid-template-areas:
		"javisko vitrina"
		"javisko panel"
		"lista   lista";
}
.ox-msr--rodina-show .ox-msr__javisko { align-self: center; }
.ox-msr--rodina-show .ox-msr__panel { justify-self: end; text-align: right; }
.ox-msr--rodina-show .ox-msr__panel-akcie { justify-content: flex-end; }
.ox-msr .ox-vh__pozadie { z-index: 0; }
/* Three.js motor vetvy 21 (msrThree): canvas leží pod závojom aj obsahom, plnú
   silu má scéna sama — téma ju tlmí tokenom --sk-vh-pozadie len keď treba. */
.ox-msr__three { opacity: var(--sk-vh-pozadie, 1); }
.ox-msr__three canvas { display: block; width: 100% !important; height: 100% !important; }
/* filmové zrno nad scénou (award detail): SVG šum ako data-URI, silu dáva téma
   tokenom --sk-msr-zrno (0 = vypnuté); leží pod obsahom, nad plátnom */
.ox-msr--rodina-show::after {
	content: ''; position: absolute; inset: 0; z-index: 2; pointer-events: none;
	opacity: var(--sk-msr-zrno, 0); mix-blend-mode: soft-light;
	background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='160' height='160'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 .9 0'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>");
	background-size: 160px 160px;
}

/* --- nábeh obsahu pri skrolovaní (k.nabeh) ----------------------------------
   Štyri druhy: `posun` (22 px + opacity, predvolený), `maska` (text vyjde spod
   hrany — pre nadpisy a nadnadpisy), `clip` (fotka sa odhalí zdola + vnútorné
   zväčšenie) a `cislo` (počítadlo dobehne, JS). Stagger 60 ms (`--rv-stagger`),
   po dobehnutí JS triedy zhodí, aby hover prechody jadra ostali nedotknuté. */
.ox-rv { transition-delay: calc(var(--rv-i, 0) * var(--rv-stagger, 60ms)); }
.ox-rv--posun { opacity: 0; transform: translateY(22px); transition-property: opacity, transform; transition-duration: .7s, .85s; transition-timing-function: var(--sk-prechod); }
.ox-rv--posun.ox-rv--in { opacity: 1; transform: none; }
/* maska: prvok je „vysadený“ zdola — clip-path nechá text vyjsť spod hrany bez
   toho, aby prekryl susedný riadok (žiadny wrapper, žiadny layout shift) */
.ox-rv--maska { clip-path: inset(-20% 0 100% 0); transform: translateY(18%); transition-property: clip-path, transform; transition-duration: .9s; transition-timing-function: var(--sk-prechod); }
.ox-rv--maska.ox-rv--in { clip-path: inset(-20% 0 -20% 0); transform: none; }
/* clip: fotka/doska sa odhalí zdola nahor a jej obsah dojde zo zväčšenia */
.ox-rv--clip { clip-path: inset(0 0 100% 0); transition: clip-path 1s var(--sk-prechod); }
.ox-rv--clip.ox-rv--in { clip-path: inset(0 0 0 0); }
.ox-rv--clip img { transform: scale(1.08); transition: transform 1.2s var(--sk-prechod); transition-delay: inherit; }
.ox-rv--clip.ox-rv--in img { transform: none; }
.ox-rv--cislo { opacity: 0; transition: opacity .5s var(--sk-prechod); font-variant-numeric: tabular-nums; }
.ox-rv--cislo.ox-rv--in { opacity: 1; }
/* slová: každé slovo vyjde spod VLASTNEJ účiary (obal sa oreže, prvok sám nie —
   preto ho IntersectionObserver vidí; pozri nabehRozdelSlova vo varianty.js) */
.ox-rv--slova .ox-rv__slovo { display: inline-block; clip-path: inset(-.35em 0 -.3em 0); }
.ox-rv--slova .ox-rv__slovo > span {
	display: inline-block; transform: translateY(118%);
	transition: transform .9s var(--sk-prechod);
	transition-delay: calc(var(--rv-i, 0) * var(--rv-stagger, 60ms) + var(--w, 0) * 45ms);
}
.ox-rv--slova.ox-rv--in .ox-rv__slovo > span { transform: none; }
@media (prefers-reduced-motion: reduce) {
	.ox-rv, .ox-rv--posun, .ox-rv--maska, .ox-rv--clip, .ox-rv--cislo { opacity: 1; transform: none; clip-path: none; transition: none; }
	.ox-rv--clip img { transform: none; transition: none; }
	.ox-rv--slova .ox-rv__slovo > span { transform: none; transition: none; }
}

/* --- spoločná vrstva vetvy 21 (award štandard, potvrdené porotou 7. 9. 2026) ----
   1) scrim pod sadzbou z TMAVŠEJ ČERVENEJ (nie čiernej) s easingovými zastávkami —
      biela na #FF1600 je 3.91:1, pod scrimom ≥ 4.6:1; 2) lead 18 px / 500 / 1.55;
   3) kurzorové svetlo (::before) hladené motorom cez --kx/--ky; 4) pás v px/s;
   5) magnet na dvoch tlačidlách panelu; 6) pomôcka zbledne po prvom ťahu. */
.ox-msr--rodina-show .ox-msr__javisko::before {
	opacity: 1; inset: -8% -10%;
	background: linear-gradient(180deg, rgba(140,12,0,0) 0%, rgba(140,12,0,.08) 30%, rgba(140,12,0,.18) 55%, rgba(140,12,0,.28) 78%, rgba(140,12,0,.34) 100%);
	/* okraje scrimu sa rozpúšťajú (prienik dvoch masiek) — pod leadom ostáva plná sila, obdĺžnik nemá hrany */
	-webkit-mask-image: linear-gradient(90deg, transparent 0, #000 9%, #000 80%, transparent 100%), linear-gradient(180deg, #000 88%, transparent 100%);
	mask-image: linear-gradient(90deg, transparent 0, #000 9%, #000 80%, transparent 100%), linear-gradient(180deg, #000 88%, transparent 100%);
	-webkit-mask-composite: source-in; mask-composite: intersect;
}
/* mobil: sadzba v hornej časti bunky (sklené dosky Glass/Bento inak ukazujú prázdne pásy) */
@media (max-width: 1000px) { .ox-msr--rodina-show .ox-msr__javisko { align-items: start; } }
.ox-msr--rodina-show .ox-msr__panel::before {
	opacity: 1;
	background: radial-gradient(ellipse at 60% 50%, rgba(140,12,0,.30) 0%, rgba(140,12,0,.14) 50%, transparent 80%);
}
.ox-msr--rodina-show .ox-msr__lead { font-size: clamp(16px, 1.2vw, 18.5px); font-weight: 500; line-height: 1.55; max-width: 44ch; color: rgba(255,255,255,.96); }
.ox-msr--rodina-show .ox-msr__panel-text { color: rgba(255,255,255,.94); }
.ox-msr--rodina-show::before {
	content: ''; position: absolute; inset: 0; z-index: 1; pointer-events: none; display: none;
	background: radial-gradient(640px circle at var(--kx, 50%) var(--ky, 50%), rgba(255,255,255,.08), rgba(255,255,255,.03) 35%, transparent 65%);
	opacity: var(--sk-msr-kurzor, 1);
}
@media (pointer: fine) { .ox-msr--rodina-show.ox-msr--pohyb::before { display: block; } }
.ox-msr-pas--pohyb .ox-msr-pas__stopa { animation-duration: var(--pas-trvanie, 28s); }
.ox-msr__hint { transition: opacity .4s var(--sk-prechod); }
.ox-msr__hint--splnene { opacity: .55; }
.ox-magnet { transition: transform .9s cubic-bezier(.34,1.56,.64,1); will-change: transform; }
.ox-magnet--drzi { transition: transform .12s linear; }
.ox-show__fakt i img { width: 26px; height: 26px; display: block; }
.ox-btn:active { transform: translateY(1px); }

/* --- kruh s TVRDENIAMI (namiesto produktov) --------------------------------- */
/* Karta je <button>: klik otvára popup s vysvetlením, nikam neodchádza. */
.ox-msr__karta--claim {
	appearance: none; -webkit-appearance: none; border: 0; padding: 0; margin: 0;
	font: inherit; text-align: left; cursor: pointer;
}
/* Bočné karty nesú TEXT, nie fotku tovaru — pri .52 bol nečitateľný. Dvíhame ich,
   dôraz prednej karty potom robí tieň a rám témy, nie zoslabenie ostatných. */
.ox-msr__karta--claim,
.ox-msr--cerveny .ox-msr__karta--claim,
.ox-msr--tmavy .ox-msr__karta--claim { opacity: .82; }
.ox-msr__karta--claim.ox-msr__karta--celo,
.ox-msr--cerveny .ox-msr__karta--claim.ox-msr__karta--celo,
.ox-msr--tmavy .ox-msr__karta--claim.ox-msr__karta--celo { opacity: 1; }
/* Rámček ikony je PODIEL z výšky karty, nie pomer strán: pri `aspect-ratio`
   prehral pomer s obsahom (SVG 160×160) a ikona vytŕčala 66 px do textu.
   Podiel navyše necháva fotku ustúpiť textu na nízkej karte. */
.ox-msr__karta--claim .ox-msr__foto { flex: 0 0 42%; aspect-ratio: auto; min-height: 92px; overflow: hidden; }
.ox-msr__karta--claim .ox-msr__foto img { width: 100%; height: 100%; min-height: 0; object-fit: contain; }
/* ikona tvrdenia je kresba, nie produktová fotka — smie ísť bližšie k okraju */
.ox-msr__karta--claim .ox-msr__foto img { padding: 5%; }
.ox-vpopup__hlava img { padding: 14px; }
/* Telo karty tvrdenia: každý riadok má vyhradené miesto, takže sa text nikdy
   neoreže na polovicu písmena (to sa dialo pri pevnej výške karty). */
.ox-msr__karta--claim .ox-msr__telo { padding: 12px 14px 14px; gap: 5px; overflow: visible; justify-content: center; }
.ox-msr__karta--claim .ox-msr__viac { margin-top: 9px; }
.ox-msr__karta--claim .ox-msr__kat { line-height: 1.3; }
.ox-msr__karta--claim .ox-msr__nazov {
	-webkit-line-clamp: 2; line-height: 1.22; min-height: 2.44em;
	display: -webkit-box; -webkit-box-orient: vertical; overflow: hidden;
}
.ox-msr__ktext {
	font-size: 12px; line-height: 1.45; color: var(--sk-text-tlmeny);
	display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
	min-height: 2.9em;
}
.ox-msr__viac {
	margin-top: auto; padding-top: 8px;
	font-size: 11.5px; font-weight: 700; letter-spacing: .1em; text-transform: uppercase;
	color: var(--sk-akcent);
}
/* Obrázok v kruhu nesmie ísť ťahať — inak prehliadač spustí vlastný drag
   obrázka, pointermove prestane chodiť a koleso sa neotočí. */
.ox-msr__karta img, .ox-svit__foto img {
	-webkit-user-drag: none; user-select: none; -webkit-user-select: none; pointer-events: none;
}
.ox-msr__panel-text {
	margin: 8px 0 0; color: var(--sk-text-tlmeny);
	font-size: clamp(14px, 1.05vw, 16.5px); line-height: 1.55; text-wrap: pretty;
}
.ox-msr__panel--claim .ox-pv__nazov { font-size: clamp(1.5rem, 2.6vw, 2.6rem); }
.ox-msr--tmavy .ox-msr__panel-text { color: rgba(255, 255, 255, .82); }
.ox-msr--cerveny .ox-msr__panel-text { color: rgba(255, 255, 255, .92); }

/* =============================================================================
   DRUHÉ DEJSTVO VETVY 21 — sekcie POD hrdinom   (2. dejstvo, 10. 9. 2026)
   -----------------------------------------------------------------------------
   Sekcie (kategórie, dôvody, tri kroky, päta) generuje spoločný `pohlady.js` pre
   VŠETKY návrhy 1–21, preto sa rodinné pravidlá vešajú na `html[data-tema^="21"]`
   (jediný prefix, ktorý majú všetky slugy vetvy 21 a nikto iný).

   ⚠️⚠️ ZÚŽENIE NA DOMOV. `.ox-sek--krem`, `.ox-mriezka--4`, `.ox-mriezka--3` a
   `.ox-panel` NIE SÚ len na domove — sú aj na detaile produktu („Ďalej sa hodí“),
   na celej `/b2b` a na `/ucet`. Preto má KAŽDÉ pravidlo druhého dejstva jednu
   z troch bránok:
     ROOT  html[data-tema^="21"] :where([data-ox21-domov], #ox-obsah:has(> .ox-show))
     KAT   … :where([data-ox21="kategorie"], #ox-obsah:has(> .ox-show) .ox-sek--krem:has(.ox-mriezka--4))
     DOV   … :where([data-ox21="dovody"],    #ox-obsah:has(> .ox-show) .ox-sek--krem:has(.ox-panel))
   Atribúty `data-ox21-domov` / `data-ox21` stampuje `pripravAkt2()` v
   `assets/varianty/21-showroom.js` — beží LEN na domove, nikdy z router-observera.
   Vetva `:has(> .ox-show)` je CSS-only degradácia, keby JS nedobehol; priamy
   potomok `.ox-show` je to, čo garantuje domov (na detaile ani na /b2b nie je).

   Poradie súborov je `_zaklad.css` → `temy/<slug>.css` → `varianty.css`, takže
   pri ZHODNEJ špecificite vyhráva tento súbor. Téma, ktorá chce prebiť pravidlo
   druhého dejstva, musí pridať špecificitu (napr. `[data-ox21-domov]` do reťazca).
   ========================================================================== */

/* --- 1) rytmus dejstva: trojstupňová škála vo vw -----------------------------
   Namiesto jedného `padding-block` striedame r1/r2/r3 (pomer ≈ 1 : 2 : 3).
   Medzera MEDZI sekciami je 0 — rytmus je vždy VNÚTRI sekcie. Rodinná hodnota
   z 1. kola ostáva ako predvolená pre CUDZIE trasy (/produkt, /b2b, /ucet);
   na domove ju škála nižšie PREPISUJE (nesčítava sa). */
html[data-tema^="21"] .ox-sek { padding-block: clamp(52px, 4.6vw, 78px); }
html[data-tema^="21"] .ox-sek--tesna { padding-block: clamp(34px, 3vw, 52px); }
@media (max-width: 700px) {
	html[data-tema^="21"] .ox-sek { padding-block: clamp(44px, 9vw, 60px); }
}

html[data-tema^="21"] :where([data-ox21-domov], #ox-obsah:has(> .ox-show)) {
	--akt-r1: clamp(34px, 4vw, 58px);
	--akt-r2: clamp(60px, 8vw, 116px);
	--akt-r3: clamp(88px, 13vw, 188px);
	--akt-prekryv: clamp(36px, 4.6vw, 88px);
	--akt-h2: clamp(36px, 5.95vw, 86px);
	counter-reset: akt;
	/* zem dejstva: ruž #FFD9D6 pri 12 % na bielej — firemná zmes, NIE béžová.
	   Vešia sa na #ox-obsah, nie na body: mimo domova ostáva zem nedotknutá. */
	background: #FFFAF9;
}
@media (max-width: 700px) {
	html[data-tema^="21"] :where([data-ox21-domov], #ox-obsah:has(> .ox-show)) {
		--akt-r1: 30px; --akt-r2: 52px; --akt-r3: 72px; --akt-prekryv: 24px;
	}
}

/* kapitola 01 — pripnutá scéna; spodok 0, aby B2B doska dosadla bez bielej diery.
   z-index 1 drží červenú dosku NAD ružovou zemou kapitoly 03 (zámerný prekryv). */
html[data-tema^="21"] :where([data-ox21-domov], #ox-obsah:has(> .ox-show)) .ox-show {
	/* 15. 9. 2026 Peter: „tu je zbytočne medzera biela“ — veľký nádych r3 (až 188 px)
	   pod bežiacim pásom hrdinu pôsobil ako diera; ostáva len malý odstup r1. */
	padding-block: var(--akt-r1) 0; position: relative; z-index: 1;
}
/* kapitola 03 — jediná farebná zem dejstva + zasunutie predošlej kapitoly */
html[data-tema^="21"] :where([data-ox21="kategorie"], #ox-obsah:has(> .ox-show) .ox-sek--krem:has(.ox-mriezka--4)) {
	background: rgba(255, 217, 214, .5);
	margin-top: calc(-1 * var(--akt-prekryv));
	padding-block: calc(var(--akt-prekryv) + var(--akt-r2)) var(--akt-r2);
	position: relative; z-index: 0;
}
/* kapitola 04 — biela (ružová zem je vyššie), najväčší nádych dejstva */
html[data-tema^="21"] :where([data-ox21="dovody"], #ox-obsah:has(> .ox-show) .ox-sek--krem:has(.ox-panel)) {
	background: transparent; padding-block: var(--akt-r3) var(--akt-r2);
}
/* kapitola 05 — tesne pod dôvodmi, veľký odstup pred pätou (prah + šev) */
html[data-tema^="21"] :where([data-ox21-domov], #ox-obsah:has(> .ox-show)) .ox-msr-kroky {
	padding-block: var(--akt-r1) var(--akt-r3);
}

/* --- 2) nadnadpis = KAPITOLOVÉ ČÍSLO ---------------------------------------
   Farba: akcent #FF1600 na bielej má 3.91:1 (pod AA pre 12 px) — v druhom
   dejstve ide tmavší stupeň #E01300 (4.93:1). Na červených a tmavých doskách
   biely. Linka nadnadpisu je vždy v `currentColor`. */
html[data-tema^="21"] .ox-sek .ox-oko,
html[data-tema^="21"] .ox-show .ox-oko { color: var(--sk-akcent-tmavy); }
html[data-tema^="21"] .ox-show__b2b .ox-oko,
html[data-tema^="21"] .ox-sek--tmava .ox-oko,
html[data-tema^="21"] #ox-pata .ox-oko { color: rgba(255, 255, 255, .9); }
html[data-tema^="21"] .ox-oko::before { background: currentColor; }

/* Na domove sa z 26×2 px pomlčky stáva ČÍSLO KAPITOLY (01–05) a pomlčka sa
   presúva do ::after. Bez JS: `counter-increment` je na SAMOTNOM `.ox-oko`,
   takže poradie DOM dá 01 prezentácia · 02 B2B pás · 03 sortiment · 04 prečo my
   · 05 ako na to. `.ox-msr__cast` je nadnadpis v HRDINOVI (tri stavy) — ten sa
   nesmie počítať, inak by sa kapitoly posunuli o tri.
   POVINNE `width/height:auto; background:none` — základ tam kreslí plôšku. */
html[data-tema^="21"] [data-ox21-domov] .ox-oko:not(.ox-msr__cast),
html[data-tema^="21"] #ox-obsah:has(> .ox-show) .ox-oko:not(.ox-msr__cast) {
	counter-increment: akt;
	align-items: center; gap: clamp(10px, .9vw, 12px);
	font-size: 12.5px; letter-spacing: .2em; margin-bottom: clamp(14px, 1.4vw, 20px);
}
html[data-tema^="21"] [data-ox21-domov] .ox-oko:not(.ox-msr__cast)::before,
html[data-tema^="21"] #ox-obsah:has(> .ox-show) .ox-oko:not(.ox-msr__cast)::before {
	content: counter(akt, decimal-leading-zero);
	width: auto; height: auto; background: none;
	font-variant-numeric: tabular-nums; letter-spacing: .2em;
}
html[data-tema^="21"] [data-ox21-domov] .ox-oko:not(.ox-msr__cast)::after,
html[data-tema^="21"] #ox-obsah:has(> .ox-show) .ox-oko:not(.ox-msr__cast)::after {
	content: ''; flex: 0 0 auto; width: clamp(24px, 3.4vw, 58px); height: 1px;
	background: currentColor; opacity: .45;
}

/* --- 3) jedna veľkosť kapitolového nadpisu ----------------------------------
   NIKDY na globálne `.ox-h2` — na detaile a v pokladni je to H1. `--akt-h2-lh`
   si prepisuje téma (Anton 1.02, Playfair/Jakarta/Manrope .94–.98, Luckiest
   Guy 1.08 — obrysy potrebujú vzduch). */
html[data-tema^="21"] :where([data-ox21-domov], #ox-obsah:has(> .ox-show)) .ox-hlava-sekcie .ox-h2,
html[data-tema^="21"] :where([data-ox21-domov], #ox-obsah:has(> .ox-show)) .ox-show__text .ox-h2 {
	font-size: var(--akt-h2); line-height: var(--akt-h2-lh, 1.02);
	letter-spacing: -.005em; margin-bottom: .28em;
}

/* Hlavička sekcie: odkaz vpravo plával ~35 px pod účiarou H2 (flex-end na vysokom
   bloku oko+H2) a čítal sa ako chyba sadzby. Ide na účiaru nadnadpisu hore vpravo.
   Po presune „Celý sortiment →“ do prahu ostáva „Všetko →“ JEDINÝM sekčným odkazom
   v pravom hornom rohu celej stránky. */
html[data-tema^="21"] .ox-hlava-sekcie {
	align-items: start;
	column-gap: clamp(24px, 4vw, 64px);
	margin-bottom: clamp(26px, 3vw, 42px);
}
html[data-tema^="21"] .ox-hlava-sekcie > .ox-btn--tiche {
	margin-top: 4px; align-self: start; flex: 0 0 auto;
	font-size: 13px; letter-spacing: .16em; text-transform: uppercase; font-weight: 700;
	padding: 6px 0; min-height: 0; border: 0; background: none; border-radius: 0;
	color: var(--sk-text); border-bottom: 1px solid var(--sk-linka);
	transition: color .2s var(--sk-prechod), border-color .2s var(--sk-prechod);
}
html[data-tema^="21"] .ox-hlava-sekcie > .ox-btn--tiche:hover {
	color: var(--sk-akcent-tmavy); border-color: var(--sk-akcent-tmavy); background: none;
}

/* --- 4) viditeľný fokus v celom druhom dejstve (Accessibility je samostatná
   položka Dev Award a býva najslabšie skóre) ------------------------------- */
html[data-tema^="21"] .ox-sek a:focus-visible,
html[data-tema^="21"] .ox-sek button:focus-visible,
html[data-tema^="21"] .ox-show a:focus-visible,
html[data-tema^="21"] .ox-show button:focus-visible {
	outline: 2px solid var(--sk-akcent-tmavy); outline-offset: 3px; border-radius: 2px;
}
html[data-tema^="21"] .ox-show__b2b a:focus-visible,
html[data-tema^="21"] .ox-show__b2b button:focus-visible,
html[data-tema^="21"] .ox-sek--tmava a:focus-visible,
html[data-tema^="21"] #ox-pata a:focus-visible {
	outline: 2px solid #fff; outline-offset: 3px;
}
/* Tabulátor nesmie spadnúť do prvku, ktorý ešte nedobehol nábeh (ostal by
   neviditeľný). Prefixované témou — `.ox-rv` používajú aj návrhy 1–20. */
html[data-tema^="21"] .ox-rv:focus-within {
	opacity: 1; transform: none; clip-path: none; transition: none;
}

/* --- 5) KAPITOLA 01 — prezentácia: pripnutá scéna + editoriálne fakty -------- */
.ox-show { padding-top: clamp(40px, 6vw, 84px); }
.ox-show__mriezka {
	display: grid; grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr);
	gap: clamp(22px, 4vw, 64px); align-items: center;
}
.ox-show__vizual {
	position: relative; border-radius: var(--sk-r-velky); overflow: hidden;
	background: radial-gradient(120% 90% at 82% -10%, rgba(255,255,255,.22) 0%, rgba(255,255,255,0) 55%),
	            linear-gradient(175deg, var(--sk-akcent) 0%, var(--sk-akcent-tmavy) 100%);
	box-shadow: var(--sk-tien);
	--vh-px: 0; --vh-py: 0;
}
.ox-show__vizual .ox-vh__vizual { height: clamp(320px, 40vw, 520px); padding: 18px 18px 60px; } /* spodná nálepka presahuje figure */
.ox-show__text .ox-lead { max-width: 36em; }
.ox-show__fakty {
	list-style: none; padding: 0; margin: 22px 0 0;
	display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px 14px;
}
.ox-show__fakt {
	display: grid; grid-template-columns: 38px 1fr; gap: 12px; align-items: center;
	padding: 12px 14px; background: var(--sk-povrch); border-radius: var(--sk-r-maly);
	box-shadow: var(--sk-tien-karta), var(--sk-obrys);
}
.ox-show__fakt i {
	width: 38px; height: 38px; border-radius: 50%; display: grid; place-items: center;
	background: var(--sk-ruz); color: var(--sk-akcent-tmavy); font-style: normal; font-size: 17px; line-height: 1;
}
.ox-show__fakt b { display: block; font-family: var(--sk-font-nadpis); text-transform: var(--sk-nadpis-transform);
	letter-spacing: var(--sk-nadpis-spacing); font-size: 16px; line-height: 1.25; }
.ox-show__fakt small { display: block; color: var(--sk-text-tlmeny); font-size: 12.5px; line-height: 1.4; }
.ox-show__fakt i img { width: 26px; height: 26px; display: block; }

/* Pripnutá scéna — JEDINÝ pin celého aktu. `top` cez existujúcu konvenciu
   projektu (`calc(var(--ox-lista) + 96px)`, rovnako ako `.ox-detail__galeria`),
   nemeriame výšku hlavičky v JS. Pod 1000 px `static`.
   ⚠️ Do `.ox-show` ani `.ox-show__mriezka` NIKDY `overflow:hidden` — vizuál je
   zároveň cieľ nábehu typu `clip` a pin by sa ticho vypol. */
html[data-tema^="21"] :where([data-ox21-domov], #ox-obsah:has(> .ox-show)) .ox-show__mriezka {
	grid-template-columns: minmax(0, .84fr) minmax(0, 1.16fr);
	column-gap: clamp(28px, 4.8vw, 80px); row-gap: clamp(24px, 4vw, 48px);
	align-items: start;
}
@media (min-width: 1001px) {
	html[data-tema^="21"] :where([data-ox21-domov], #ox-obsah:has(> .ox-show)) .ox-show__vizual {
		position: sticky; top: calc(var(--ox-lista, 0px) + 96px);
	}
}
html[data-tema^="21"] :where([data-ox21-domov], #ox-obsah:has(> .ox-show)) .ox-show__text .ox-lead {
	max-width: 46ch; font-size: clamp(17px, 1.45vw, 21px); line-height: 1.55;
	margin-bottom: clamp(18px, 2vw, 28px);
}

/* 6 faktov: z dlaždíc na šesť editoriálnych riadkov cez CELÚ šírku stĺpca.
   Toto je zároveň to, čo vyrobí dráhu pripnutého vizuálu — na dva stĺpce
   pravý stĺpec nenarastie a sticky nemá kam ísť. */
html[data-tema^="21"] :where([data-ox21-domov], #ox-obsah:has(> .ox-show)) .ox-show__fakty {
	grid-template-columns: 1fr; gap: 0; margin-top: clamp(20px, 2.4vw, 32px);
	border-top: 1px solid var(--sk-linka);
}
html[data-tema^="21"] :where([data-ox21-domov], #ox-obsah:has(> .ox-show)) .ox-show__fakt {
	position: relative;
	grid-template-columns: 34px minmax(0, 1fr); gap: clamp(12px, 1.4vw, 20px);
	align-items: baseline; padding: clamp(15px, 1.6vw, 22px) 0;
	background: none; box-shadow: none; border-radius: 0; border: 0;
	border-bottom: 1px solid var(--sk-linka);
}
html[data-tema^="21"] :where([data-ox21-domov], #ox-obsah:has(> .ox-show)) .ox-show__fakt i {
	width: 34px; height: 34px; background: none; border-radius: 0;
	align-self: start; transform: translateY(1px);
}
html[data-tema^="21"] :where([data-ox21-domov], #ox-obsah:has(> .ox-show)) .ox-show__fakt i img { width: 30px; height: 30px; }
html[data-tema^="21"] :where([data-ox21-domov], #ox-obsah:has(> .ox-show)) .ox-show__fakt > span {
	display: grid; grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr);
	gap: clamp(10px, 1.4vw, 26px); align-items: baseline;
}
html[data-tema^="21"] :where([data-ox21-domov], #ox-obsah:has(> .ox-show)) .ox-show__fakt b {
	font-size: clamp(17px, 1.5vw, 22px); line-height: 1.16;
	transition: color .35s var(--sk-prechod);
}
html[data-tema^="21"] :where([data-ox21-domov], #ox-obsah:has(> .ox-show)) .ox-show__fakt small {
	font-size: 13.5px; line-height: 1.5;
}
/* Obchodná hierarchia: posledné dva fakty („Vyrobené v EÚ“, „Skladom na
   Slovensku“) sú jediné, ktoré predávajú termín dodania. Ostatné štyri sú tiché. */
html[data-tema^="21"] :where([data-ox21-domov], #ox-obsah:has(> .ox-show)) .ox-show__fakt:nth-child(n+5) b {
	color: var(--sk-akcent-tmavy);
}
/* Riadok v optickej osi okna (IntersectionObserver `-46% 0px -46%`): červená
   linka podrastie zľava doprava. Pri vypnutom pohybe sa trieda vôbec nepridáva. */
html[data-tema^="21"] :where([data-ox21-domov], #ox-obsah:has(> .ox-show)) .ox-show__fakt::after {
	content: ''; position: absolute; left: 0; bottom: -1px; height: 1px; width: 0;
	background: var(--sk-akcent); transition: width .55s var(--sk-prechod);
}
html[data-tema^="21"] :where([data-ox21-domov], #ox-obsah:has(> .ox-show)) .ox-show__fakt.je-v-osi::after { width: 100%; }
html[data-tema^="21"] :where([data-ox21-domov], #ox-obsah:has(> .ox-show)) .ox-show__fakt.je-v-osi b { color: var(--sk-akcent-tmavy); }
@media (prefers-reduced-motion: reduce) {
	html[data-tema^="21"] .ox-show__fakt::after,
	html[data-tema^="21"] .ox-show__fakt b { transition: none; }
}

/* --- 6) KAPITOLA 02 — B2B pás: jediná sýta plocha aktu, cez celé okno --------
   FULL-BLEED bez JS a bez `overflow-x`: `_zaklad.css` už má `overflow-x: clip`
   na html aj body (`hidden` by zabil sticky hlavičku aj pin). Vnútorná hrana
   vychádza presne na ľavý okraj wrapu, presah šírky posuvníka sa oreže. */
.ox-show__b2b {
	margin-top: clamp(26px, 4vw, 48px);
	display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.25fr); gap: clamp(18px, 3vw, 40px);
	align-items: center; padding: clamp(22px, 3vw, 40px);
	background: var(--sk-atrament); color: #fff; border-radius: var(--sk-r-velky);
}
.ox-show__b2b .ox-h3 { color: #fff; font-size: clamp(22px, 2.4vw, 32px); margin: 6px 0 10px; }
.ox-show__b2b p { color: rgba(255,255,255,.9); margin: 0 0 16px; max-width: 34em; }
.ox-show__cesta { list-style: none; padding: 0; margin: 0; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; counter-reset: krok; }
.ox-show__cesta li {
	position: relative; padding: 14px 12px 12px; border-radius: var(--sk-r-stredny);
	background: rgba(255,255,255,.06); border: 1px solid rgba(255,255,255,.12);
	display: grid; gap: 4px; align-content: start; min-height: 112px;
}
.ox-show__cesta li::before {
	counter-increment: krok; content: counter(krok, decimal-leading-zero);
	font-family: var(--sk-font-display); color: currentColor; font-size: 20px; line-height: 1;
}
.ox-show__cesta b { font-family: var(--sk-font-nadpis); text-transform: var(--sk-nadpis-transform); letter-spacing: .02em; font-size: 14.5px; line-height: 1.25; }
.ox-show__cesta small { color: rgba(255,255,255,.92); font-size: 12.5px; line-height: 1.45; }
.ox-show__akcie { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 4px; }
.ox-show__b2b .ox-btn--obrys { border-color: rgba(255,255,255,.55); color: #fff; }

html[data-tema^="21"] :where([data-ox21-domov], #ox-obsah:has(> .ox-show)) .ox-show__b2b {
	margin-top: var(--akt-r2);
	margin-inline: calc(50% - 50vw);
	padding-block: clamp(56px, 7vw, 104px);
	padding-inline: calc(50vw - 50%);
	border-radius: 0;
	grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr);
	column-gap: clamp(28px, 5vw, 88px); row-gap: clamp(26px, 3vw, 44px);
	align-items: start;
}
html[data-tema^="21"] :where([data-ox21-domov], #ox-obsah:has(> .ox-show)) .ox-show__b2b .ox-h3 {
	font-size: clamp(26px, 3.4vw, 48px); line-height: 1.06; margin: 4px 0 14px;
}
html[data-tema^="21"] :where([data-ox21-domov], #ox-obsah:has(> .ox-show)) .ox-show__b2b p {
	font-size: 16.5px; line-height: 1.6; max-width: 44ch; margin-bottom: clamp(18px, 2vw, 26px);
}
/* Cesta 01–04 bez rámov: jedna horná linka a tri zvislé predely. Číslo kroku
   POVINNE `currentColor` — `var(--sk-akcent)` je červená na červenej doske. */
html[data-tema^="21"] :where([data-ox21-domov], #ox-obsah:has(> .ox-show)) .ox-show__cesta {
	gap: 0; border-top: 1px solid rgba(255,255,255,.24);
}
html[data-tema^="21"] :where([data-ox21-domov], #ox-obsah:has(> .ox-show)) .ox-show__cesta li {
	background: none; border: 0; border-radius: 0; min-height: 0;
	border-left: 1px solid rgba(255,255,255,.16);
	padding: clamp(16px, 1.8vw, 24px) clamp(14px, 1.6vw, 22px) 0;
	gap: 6px;
}
html[data-tema^="21"] :where([data-ox21-domov], #ox-obsah:has(> .ox-show)) .ox-show__cesta li:first-child { border-left: 0; padding-left: 0; }
html[data-tema^="21"] :where([data-ox21-domov], #ox-obsah:has(> .ox-show)) .ox-show__cesta li:last-child { padding-right: 0; }
html[data-tema^="21"] :where([data-ox21-domov], #ox-obsah:has(> .ox-show)) .ox-show__cesta li::before {
	display: block; font-size: clamp(28px, 3vw, 44px); line-height: 1; color: currentColor; margin-bottom: 6px;
}
html[data-tema^="21"] :where([data-ox21-domov], #ox-obsah:has(> .ox-show)) .ox-show__cesta b { font-size: 15.5px; line-height: 1.28; }
html[data-tema^="21"] :where([data-ox21-domov], #ox-obsah:has(> .ox-show)) .ox-show__cesta small { font-size: 12.5px; color: #fff; } /* plná biela: na #E01300 4.95:1, .92 by padlo na 4.3 */
/* Dve najdrahšie konverzie stránky nesmú mať váhu ktoréhokoľvek iného tlačidla. */
html[data-tema^="21"] :where([data-ox21-domov], #ox-obsah:has(> .ox-show)) .ox-show__akcie .ox-btn {
	min-height: 60px; padding: 18px 34px; font-size: 16px;
}
/* ⚠️ Kontrast na SÝTEJ doske: biely 12,5 px text na plnej #FF1600 má 3.91:1 a
   padá na AA. `pripravAkt2()` zmeria skutočné pozadie dosky a keď je kontrast
   bielej pod 4.5, pridá túto triedu — doska sa stmaví tmavšou červenou
   rgba(140,12,0,.30) (≈ #DC1300, biela 5.08:1) a farebnosť ostane firemná. */
html[data-tema^="21"] .ox-show__b2b.ox-21-doska--jasna {
	background-image: linear-gradient(rgba(140,12,0,.30), rgba(140,12,0,.30));
}

/* --- 7) KAPITOLA 03 — kategórie: SKYLINE namiesto štyroch dlaždíc ------------
   Pomery MUSIA byť v CSS (nie dopočítané), inak vzniká CLS pri lazy fotkách.
   Najväčšiu plochu dostane prvá karta (Sirupy) — najsilnejšia kategória. */
@media (min-width: 901px) {
	html[data-tema^="21"] :where([data-ox21="kategorie"], #ox-obsah:has(> .ox-show) .ox-sek--krem:has(.ox-mriezka--4)) .ox-mriezka--4 {
		grid-template-columns: 1.34fr .9fr 1.14fr .86fr;
		column-gap: clamp(16px, 2.6vw, 36px); row-gap: 0; align-items: end;
	}
	html[data-tema^="21"] :where([data-ox21="kategorie"], #ox-obsah:has(> .ox-show) .ox-sek--krem:has(.ox-mriezka--4)) .ox-produkt:nth-child(1) .ox-produkt__foto { aspect-ratio: 4 / 5; }
	html[data-tema^="21"] :where([data-ox21="kategorie"], #ox-obsah:has(> .ox-show) .ox-sek--krem:has(.ox-mriezka--4)) .ox-produkt:nth-child(2) .ox-produkt__foto { aspect-ratio: 1 / 1; }
	html[data-tema^="21"] :where([data-ox21="kategorie"], #ox-obsah:has(> .ox-show) .ox-sek--krem:has(.ox-mriezka--4)) .ox-produkt:nth-child(3) .ox-produkt__foto { aspect-ratio: 5 / 6; }
	html[data-tema^="21"] :where([data-ox21="kategorie"], #ox-obsah:has(> .ox-show) .ox-sek--krem:has(.ox-mriezka--4)) .ox-produkt:nth-child(4) .ox-produkt__foto { aspect-ratio: 3 / 4; }
	html[data-tema^="21"] :where([data-ox21="kategorie"], #ox-obsah:has(> .ox-show) .ox-sek--krem:has(.ox-mriezka--4)) .ox-produkt:nth-child(2) { margin-top: clamp(26px, 4vw, 72px); }
	html[data-tema^="21"] :where([data-ox21="kategorie"], #ox-obsah:has(> .ox-show) .ox-sek--krem:has(.ox-mriezka--4)) .ox-produkt:nth-child(3) { margin-top: clamp(10px, 1.6vw, 30px); }
	html[data-tema^="21"] :where([data-ox21="kategorie"], #ox-obsah:has(> .ox-show) .ox-sek--krem:has(.ox-mriezka--4)) .ox-produkt:nth-child(4) { margin-top: clamp(42px, 6.6vw, 116px); }
}
html[data-tema^="21"] :where([data-ox21="kategorie"], #ox-obsah:has(> .ox-show) .ox-sek--krem:has(.ox-mriezka--4)) .ox-produkt {
	background: none; box-shadow: none; border-radius: 0; height: auto; overflow: visible;
}
html[data-tema^="21"] :where([data-ox21="kategorie"], #ox-obsah:has(> .ox-show) .ox-sek--krem:has(.ox-mriezka--4)) .ox-produkt__foto {
	background: #fff; position: relative;
}
html[data-tema^="21"] :where([data-ox21="kategorie"], #ox-obsah:has(> .ox-show) .ox-sek--krem:has(.ox-mriezka--4)) .ox-produkt__foto img { padding: 4% 6%; }
html[data-tema^="21"] :where([data-ox21="kategorie"], #ox-obsah:has(> .ox-show) .ox-sek--krem:has(.ox-mriezka--4)) .ox-produkt__telo {
	padding: clamp(12px, 1.3vw, 18px) 0 0; gap: 4px;
}
html[data-tema^="21"] :where([data-ox21="kategorie"], #ox-obsah:has(> .ox-show) .ox-sek--krem:has(.ox-mriezka--4)) .ox-produkt__nazov {
	font-size: clamp(20px, 2vw, 30px); line-height: 1.08;
}
html[data-tema^="21"] :where([data-ox21="kategorie"], #ox-obsah:has(> .ox-show) .ox-sek--krem:has(.ox-mriezka--4)) .ox-produkt__popis { font-size: 13.5px; }
@media (max-width: 900px) {
	html[data-tema^="21"] :where([data-ox21="kategorie"], #ox-obsah:has(> .ox-show) .ox-sek--krem:has(.ox-mriezka--4)) .ox-mriezka--4 {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		column-gap: clamp(14px, 3vw, 26px); row-gap: clamp(26px, 5vw, 40px); align-items: start;
	}
	html[data-tema^="21"] :where([data-ox21="kategorie"], #ox-obsah:has(> .ox-show) .ox-sek--krem:has(.ox-mriezka--4)) .ox-produkt { margin-top: 0; }
	html[data-tema^="21"] :where([data-ox21="kategorie"], #ox-obsah:has(> .ox-show) .ox-sek--krem:has(.ox-mriezka--4)) .ox-produkt__foto { aspect-ratio: 4 / 3; }
}
@media (max-width: 420px) {
	html[data-tema^="21"] :where([data-ox21="kategorie"], #ox-obsah:has(> .ox-show) .ox-sek--krem:has(.ox-mriezka--4)) .ox-mriezka--4 { grid-template-columns: minmax(0, 1fr); }
}

/* --- 8) karty (kategórie aj katalóg): hover ako remeslo ----------------------
   Jadro dvíha celú kartu o 4 px. Špička 2026 robí opak: karta STOJÍ, hýbe sa
   OBSAH (fotka 1.06 za 700 ms), pribudne lem a šípka sa posunie. */
html[data-tema^="21"] .ox-produkt { transition: box-shadow .35s var(--sk-prechod), border-color .25s var(--sk-prechod); }
html[data-tema^="21"] .ox-produkt__foto img { padding: 7% 9%; transition: transform .7s cubic-bezier(.16,1,.3,1); }
html[data-tema^="21"] .ox-produkt__telo { gap: 6px; }
html[data-tema^="21"] a.ox-produkt .ox-produkt__nazov {
	display: flex; align-items: baseline; justify-content: space-between; gap: 12px;
}
html[data-tema^="21"] a.ox-produkt .ox-produkt__nazov::after {
	content: '→'; font-family: var(--sk-font-text); font-size: 15px; font-weight: 700;
	color: var(--sk-akcent-tmavy); transform: translateX(-2px); opacity: .55;
	transition: transform .3s var(--sk-prechod), opacity .3s var(--sk-prechod);
}
html[data-tema^="21"] a.ox-produkt .ox-produkt__popis { -webkit-line-clamp: 2; min-height: 2.8em; }
html[data-tema^="21"] .ox-produkt:focus-visible { outline: 2px solid var(--sk-akcent-tmavy); outline-offset: 3px; }
/* karta stojí — na VŠETKÝCH trasách rodiny; „hýbe sa obsah“ je len tam, kde je
   ukazovadlo naozaj jemné */
html[data-tema^="21"] .ox-produkt:hover { transform: none; }
@media (hover: hover) and (pointer: fine) {
	html[data-tema^="21"] .ox-produkt:hover .ox-produkt__foto img { transform: scale(1.06); }
	html[data-tema^="21"] a.ox-produkt:hover .ox-produkt__nazov::after { transform: translateX(6px); opacity: 1; }
	html[data-tema^="21"] :where([data-ox21="kategorie"], #ox-obsah:has(> .ox-show) .ox-sek--krem:has(.ox-mriezka--4)) .ox-produkt__foto::after {
		content: ''; position: absolute; inset: 0; pointer-events: none;
		box-shadow: inset 0 0 0 0 rgba(255,22,0,0);
		transition: box-shadow .15s var(--sk-prechod);
	}
	html[data-tema^="21"] :where([data-ox21="kategorie"], #ox-obsah:has(> .ox-show) .ox-sek--krem:has(.ox-mriezka--4)) .ox-produkt:hover .ox-produkt__foto::after,
	html[data-tema^="21"] :where([data-ox21="kategorie"], #ox-obsah:has(> .ox-show) .ox-sek--krem:has(.ox-mriezka--4)) .ox-produkt:focus-visible .ox-produkt__foto::after {
		box-shadow: inset 0 0 0 1px rgba(255,22,0,.55);
	}
}
@media (prefers-reduced-motion: reduce) {
	html[data-tema^="21"] .ox-produkt__foto img { transition: none; }
}

/* --- 9) KAPITOLA 04 — dôvody: 6 panelov → TYPOGRAFICKÝ INDEX ----------------
   Zanikajú naraz dva problémy: klišé šiestich škatúľ aj zdvojená mriežka
   s krokmi o sekciu nižšie. JEDEN stĺpec, nie dva — dvojstĺpec sa aj po zrušení
   rámov stále číta ako mriežka šiestich. */
html[data-tema^="21"] :where([data-ox21="dovody"], #ox-obsah:has(> .ox-show) .ox-sek--krem:has(.ox-panel)) .ox-mriezka--3 {
	display: block; counter-reset: dovod; border-top: 1px solid var(--sk-linka);
}
html[data-tema^="21"] :where([data-ox21="dovody"], #ox-obsah:has(> .ox-show) .ox-sek--krem:has(.ox-panel)) .ox-panel {
	position: relative;
	display: grid; grid-template-columns: clamp(46px, 5vw, 86px) minmax(0, 1.05fr) minmax(0, .95fr);
	gap: clamp(12px, 3vw, 54px); align-items: baseline;
	padding: clamp(18px, 2.3vw, 32px) 0; border-bottom: 1px solid var(--sk-linka);
	background: none; box-shadow: none; border-radius: 0;
}
html[data-tema^="21"] :where([data-ox21="dovody"], #ox-obsah:has(> .ox-show) .ox-sek--krem:has(.ox-panel)) .ox-panel::before {
	counter-increment: dovod; content: counter(dovod, decimal-leading-zero);
	font-family: var(--sk-font-text); font-size: clamp(13px, 1.1vw, 16px); font-weight: 700;
	letter-spacing: .16em; color: var(--sk-akcent-tmavy); font-variant-numeric: tabular-nums;
	transition: transform .35s var(--sk-prechod);
}
html[data-tema^="21"] :where([data-ox21="dovody"], #ox-obsah:has(> .ox-show) .ox-sek--krem:has(.ox-panel)) .ox-panel .ox-h3 {
	font-size: clamp(24px, 3.1vw, 44px); line-height: 1.06; margin: 0;
	transition: color .35s var(--sk-prechod);
}
html[data-tema^="21"] :where([data-ox21="dovody"], #ox-obsah:has(> .ox-show) .ox-sek--krem:has(.ox-panel)) .ox-panel p {
	font-size: 15px; line-height: 1.6; max-width: 46ch; margin: 0;
}
html[data-tema^="21"] :where([data-ox21="dovody"], #ox-obsah:has(> .ox-show) .ox-sek--krem:has(.ox-panel)) .ox-panel::after {
	content: ''; position: absolute; left: 0; bottom: -1px; height: 1px; width: 0;
	background: var(--sk-akcent); transition: width .5s var(--sk-prechod);
}
@media (hover: hover) and (pointer: fine) {
	html[data-tema^="21"] :where([data-ox21="dovody"], #ox-obsah:has(> .ox-show) .ox-sek--krem:has(.ox-panel)) .ox-panel:hover::after { width: 100%; }
	html[data-tema^="21"] :where([data-ox21="dovody"], #ox-obsah:has(> .ox-show) .ox-sek--krem:has(.ox-panel)) .ox-panel:hover::before { transform: translateX(6px); }
	html[data-tema^="21"] :where([data-ox21="dovody"], #ox-obsah:has(> .ox-show) .ox-sek--krem:has(.ox-panel)) .ox-panel:hover .ox-h3 { color: var(--sk-akcent-tmavy); }
}
@media (max-width: 900px) {
	html[data-tema^="21"] :where([data-ox21="dovody"], #ox-obsah:has(> .ox-show) .ox-sek--krem:has(.ox-panel)) .ox-panel {
		grid-template-columns: clamp(34px, 9vw, 48px) minmax(0, 1fr); gap: 6px clamp(10px, 3vw, 18px);
	}
	html[data-tema^="21"] :where([data-ox21="dovody"], #ox-obsah:has(> .ox-show) .ox-sek--krem:has(.ox-panel)) .ox-panel p {
		grid-column: 2; max-width: none;
	}
}

/* --- 10) KAPITOLA 05 — tri kroky: iný raster než dôvody (schody) ------------- */
html[data-tema^="21"] :where([data-ox21-domov], #ox-obsah:has(> .ox-show)) .ox-msr-kroky .ox-mriezka--3 {
	grid-template-columns: 1.22fr 1fr 1fr;
	column-gap: clamp(24px, 5vw, 82px); row-gap: clamp(30px, 4vw, 56px); align-items: start;
}
html[data-tema^="21"] :where([data-ox21-domov], #ox-obsah:has(> .ox-show)) .ox-msr-krok {
	background: none; box-shadow: none; border-radius: 0; overflow: visible;
	padding: 18px 0 0; border-top: 2px solid var(--akt-krok-linka, var(--sk-atrament));
}
html[data-tema^="21"] :where([data-ox21-domov], #ox-obsah:has(> .ox-show)) .ox-msr-krok__cislo {
	position: static; display: block; opacity: 1; pointer-events: none;
	font-size: clamp(56px, 7vw, 110px); line-height: .86; margin: 0 0 10px;
}
html[data-tema^="21"] :where([data-ox21-domov], #ox-obsah:has(> .ox-show)) .ox-msr-krok__foto {
	height: auto; aspect-ratio: 4 / 3; margin-bottom: 14px;
	background: #fff; box-shadow: none; border-radius: 0;
}
html[data-tema^="21"] :where([data-ox21-domov], #ox-obsah:has(> .ox-show)) .ox-msr-krok__foto img {
	max-height: none; width: 100%; height: 100%; object-fit: contain; padding: 4% 8%;
}
html[data-tema^="21"] :where([data-ox21-domov], #ox-obsah:has(> .ox-show)) .ox-msr-krok h3 {
	font-size: clamp(20px, 2.1vw, 30px); line-height: 1.12;
}
@media (min-width: 901px) {
	html[data-tema^="21"] :where([data-ox21-domov], #ox-obsah:has(> .ox-show)) .ox-msr-krok:nth-child(2) { margin-top: clamp(24px, 3.4vw, 60px); }
	html[data-tema^="21"] :where([data-ox21-domov], #ox-obsah:has(> .ox-show)) .ox-msr-krok:nth-child(3) { margin-top: clamp(48px, 6.8vw, 120px); }
}
@media (max-width: 900px) {
	html[data-tema^="21"] :where([data-ox21-domov], #ox-obsah:has(> .ox-show)) .ox-msr-kroky .ox-mriezka--3 { grid-template-columns: minmax(0, 1fr); }
	html[data-tema^="21"] :where([data-ox21-domov], #ox-obsah:has(> .ox-show)) .ox-msr-krok { margin-top: 0; }
	html[data-tema^="21"] :where([data-ox21-domov], #ox-obsah:has(> .ox-show)) .ox-msr-krok__cislo { font-size: clamp(46px, 12vw, 64px); }
}

/* --- 11) ZÁVEREČNÝ PRAH pod krokmi ------------------------------------------
   `pripravAkt2()` PRESUNIE (neklonuje) existujúci odkaz „Celý sortiment →“ z hlavičky
   sekcie sem — odkaz dnes pláva 35 px pod účiarou H2 ako chyba a stránka nemá
   posledný krok pred pätou. Štýl `.ox-hlava-sekcie > .ox-btn--tiche` (13 px
   uppercase) sem už nedosiahne — je to pravidlo s priamym potomkom. */
html[data-tema^="21"] .ox-21-prah {
	margin-top: clamp(34px, 4.4vw, 68px);
	border-top: 1px solid var(--sk-linka); border-bottom: 1px solid var(--sk-linka);
}
html[data-tema^="21"] .ox-21-prah__odkaz.ox-btn {
	display: flex; align-items: center; justify-content: space-between; gap: 20px;
	width: 100%; min-height: 104px; padding: 0; margin: 0;
	background: none; border: 0; border-radius: 0; box-shadow: none;
	color: var(--sk-text); text-transform: var(--sk-nadpis-transform);
	font-family: var(--sk-font-nadpis); font-weight: 400;
	font-size: clamp(24px, 2.6vw, 34px); line-height: 1.1; letter-spacing: var(--sk-nadpis-spacing);
	transition: color .24s var(--sk-prechod);
}
html[data-tema^="21"] .ox-21-prah__sip {
	font-family: var(--sk-font-text); font-size: 28px; line-height: 1; flex: 0 0 auto;
	color: var(--sk-akcent-tmavy);
	transition: transform .24s var(--sk-prechod);
}
@media (hover: hover) and (pointer: fine) {
	html[data-tema^="21"] .ox-21-prah__odkaz.ox-btn:hover { background: none; color: var(--sk-akcent-tmavy); }
	html[data-tema^="21"] .ox-21-prah__odkaz.ox-btn:hover .ox-21-prah__sip { transform: translateX(10px); }
}
@media (prefers-reduced-motion: reduce) {
	html[data-tema^="21"] .ox-21-prah__sip { transition: none; }
}

/* --- 12) PÄTA ako posledná obrazovka -----------------------------------------
   387 px (43 % okna) → 760–860 px. Mriežku POVINNE pripnúť na 3 stopy: základ
   má `repeat(auto-fit, minmax(190px,1fr))` a v kombinácii s `grid-column:1/-1`
   na prvom stĺpci by vznikli fantómové prázdne stopy a stĺpce by sa stlačili
   doľava. Tri je správne číslo (Obchod / Informácie / Účet). */
html[data-tema^="21"] #ox-pata {
	margin-top: 0; position: relative;
	padding-block: clamp(84px, 10vw, 140px) 34px;
	--akt-sev: clamp(48px, 5.4vw, 104px);
}
/* Šev: biela do červenej neprechádza hranou, ale strihom. Tvar dodáva TÉMA cez
   `--akt-sev-tvar`, tu je len mechanizmus a neutrálna diagonála. */
html[data-tema^="21"] #ox-pata::before {
	content: ''; position: absolute; left: 0; right: 0; top: calc(-1 * var(--akt-sev));
	height: var(--akt-sev); background: var(--sk-pata-bg); pointer-events: none;
	clip-path: var(--akt-sev-tvar, polygon(0 100%, 100% 0, 100% 100%));
	-webkit-mask: var(--akt-sev-maska, none); mask: var(--akt-sev-maska, none);
}
html[data-tema^="21"] .ox-pata__mriezka {
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: clamp(26px, 3vw, 44px);
}
/* Obrí wordmark z EXISTUJÚCEHO <h4> — žiadny `content:`, text ostáva pre
   čítačky aj vyhľadávače. Odsek pod ním má INLINE štýl z `app.js`. */
html[data-tema^="21"] .ox-pata__stlpec:first-child {
	grid-column: 1 / -1; margin-bottom: clamp(26px, 4vw, 58px);
}
html[data-tema^="21"] .ox-pata__stlpec:first-child h4 {
	font-size: clamp(46px, 9.2vw, 132px); line-height: .86; letter-spacing: -.02em;
	text-transform: var(--sk-nadpis-transform); margin: 0 0 clamp(14px, 1.6vw, 22px);
	opacity: 1;
}
html[data-tema^="21"] .ox-pata__stlpec:first-child p {
	font-size: 17px !important; opacity: .9 !important; max-width: 44ch !important;
	line-height: 1.6; margin: 0;
}
/* Hierarchia naruby: návestia stĺpcov stlmiť, odkazy zosilniť. */
html[data-tema^="21"] .ox-pata__stlpec:not(:first-child) h4 {
	font-size: 12px; letter-spacing: .16em; opacity: .62;
	padding-bottom: 10px; margin-bottom: 16px;
	border-bottom: 1px solid rgba(255,255,255,.18);
}
html[data-tema^="21"] .ox-pata__stlpec ul { font-size: 17px; gap: 11px; }
html[data-tema^="21"] #ox-pata a { opacity: .92; }
/* ⚠️ Hover z jadra je `color: var(--sk-akcent)` = #FF1600 na #A50E00 — takmer
   nečitateľné. Prebíjame na bielu s podčiarknutím. */
html[data-tema^="21"] #ox-pata a:hover {
	opacity: 1; color: #fff; text-decoration: underline; text-underline-offset: 5px;
}
html[data-tema^="21"] .ox-pata__spodok {
	margin-top: clamp(40px, 5vw, 72px); opacity: 1;
	font-size: 11.5px; letter-spacing: .1em; text-transform: uppercase;
	color: #fff;                       /* AA aj na #E01300 (4.95:1) — tlmená biela by padla pod 4.5 */
}
/* vývojová poznámka — zmazať ju smie len majiteľ `app.js`; hierarchiu robí veľkosť, nie opacita */
html[data-tema^="21"] .ox-pata__spodok span:last-child {
	font-size: 11.5px; letter-spacing: 0; text-transform: none; color: #fff;
}
@media (max-width: 700px) {
	html[data-tema^="21"] .ox-pata__mriezka { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	html[data-tema^="21"] .ox-pata__stlpec:first-child h4 { font-size: clamp(40px, 13vw, 64px); }
}
@media (max-width: 460px) {
	html[data-tema^="21"] .ox-pata__mriezka { grid-template-columns: minmax(0, 1fr); }
}

/* --- 13) ZRNO: materiálovosť robí jedna celoplošná vrstva, nie tiene na kartách
   z-index 5 = pod hlavičkou (60), pod `.ox-vpopup` a hlboko pod `#ox-toasty`
   (2147483000). Opacita ≤ .05, inak zašpiní 13 px texty. Hrdina má vlastnú
   zrnovú vrstvu, preto sa táto vešia na dejstvo, nie na `body`. ------------- */
html[data-tema^="21"] :where([data-ox21-domov], #ox-obsah:has(> .ox-show))::after {
	content: ''; position: fixed; inset: 0; z-index: 5; pointer-events: none;
	opacity: var(--sk-msr-zrno, .04);
	background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='160' height='160'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 .9 0'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>");
	background-size: 160px 160px;
}

/* --- 14) PRECHOD TRÁS -------------------------------------------------------
   ⚠️ NIKDY neanimovať `transform` ani `clip-path` na `#ox-obsah` — obe vyrobia
   containing block a na 320 ms rozhodia `position:fixed/sticky` potomkov
   (hlavička, mini-košík, pripnutý vizuál). Preto LEN opacity. */
@keyframes ox21-prichod { from { opacity: 0; } to { opacity: 1; } }
html[data-tema^="21"] #ox-obsah.ox-21-prichod { animation: ox21-prichod .32s var(--sk-prechod) both; }
@media (prefers-reduced-motion: reduce) {
	html[data-tema^="21"] #ox-obsah.ox-21-prichod { animation: none; }
}

/* --- 15) STAVY: farby mimo palety von, skeleton namiesto bodiek -------------
   Prebíjame v rodine, NIKDY v `_zaklad.css` (zdieľa ho 20 cudzích návrhov).
   Zelený toast vyskočí hneď po prvom „Pridané do košíka“ — presne keď sa
   porota pozerá. */
html[data-tema^="21"] .ox-toast--ok {
	background: var(--sk-atrament); color: #fff; border-left: 3px solid var(--sk-akcent);
}
html[data-tema^="21"] .ox-odznak--ok { background: var(--sk-atrament); color: #fff; }
html[data-tema^="21"] .ox-odznak--caka { background: var(--sk-ruz); color: var(--sk-atrament); }

/* Tri poskakujúce bodky → mriežka duchov s rezervovanou výškou (nulový CLS,
   nulový JS). `display: contents` nechá bodky stať sa bunkami cudzej mriežky,
   takže duchovia majú PRESNE šírku budúcich kariet. */
@keyframes ox21-shimmer { from { background-position: 140% 0; } to { background-position: -40% 0; } }
html[data-tema^="21"] .ox-mriezka > .ox-nacitanie { display: contents; }
html[data-tema^="21"] .ox-mriezka > .ox-nacitanie .ox-nacitanie__bod {
	width: auto; height: auto; border-radius: var(--sk-r-velky);
	aspect-ratio: 3 / 4.1; background-color: rgba(255,217,214,.42);
	background-image: linear-gradient(100deg, rgba(255,255,255,0) 22%, rgba(255,255,255,.62) 50%, rgba(255,255,255,0) 78%);
	background-size: 220% 100%; background-repeat: no-repeat;
	animation: ox21-shimmer 1.4s linear .25s infinite both;
}
@media (prefers-reduced-motion: reduce) {
	html[data-tema^="21"] .ox-mriezka > .ox-nacitanie .ox-nacitanie__bod { animation: none; background-image: none; }
}

/* --- 16) užšie okná pre kapitolu 01 a 02 ------------------------------------ */
@media (max-width: 1000px) {
	.ox-show__mriezka { grid-template-columns: 1fr; }
	.ox-show__vizual .ox-vh__vizual { height: clamp(260px, 60vw, 420px); padding-bottom: 44px; }
	.ox-show__b2b { grid-template-columns: 1fr; }
	.ox-show__cesta { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	html[data-tema^="21"] :where([data-ox21-domov], #ox-obsah:has(> .ox-show)) .ox-show__mriezka { grid-template-columns: minmax(0, 1fr); }
	html[data-tema^="21"] :where([data-ox21-domov], #ox-obsah:has(> .ox-show)) .ox-show__vizual { position: static; }
	html[data-tema^="21"] :where([data-ox21-domov], #ox-obsah:has(> .ox-show)) .ox-show__b2b { grid-template-columns: minmax(0, 1fr); }
	html[data-tema^="21"] :where([data-ox21-domov], #ox-obsah:has(> .ox-show)) .ox-show__cesta { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	html[data-tema^="21"] :where([data-ox21-domov], #ox-obsah:has(> .ox-show)) .ox-show__cesta li:nth-child(odd) { border-left: 0; padding-left: 0; }
	html[data-tema^="21"] :where([data-ox21-domov], #ox-obsah:has(> .ox-show)) .ox-show__cesta li:nth-child(-n+2) { border-bottom: 1px solid rgba(255,255,255,.16); padding-bottom: clamp(16px, 1.8vw, 24px); }
}
@media (max-width: 620px) {
	.ox-show__fakty { grid-template-columns: 1fr; }
	html[data-tema^="21"] :where([data-ox21-domov], #ox-obsah:has(> .ox-show)) .ox-show__fakt > span { grid-template-columns: minmax(0, 1fr); gap: 4px; }
	html[data-tema^="21"] :where([data-ox21-domov], #ox-obsah:has(> .ox-show)) .ox-show__akcie .ox-btn { flex: 1 1 100%; }
	html[data-tema^="21"] .ox-21-prah__odkaz.ox-btn { min-height: 88px; }
}

/* --- 17) KAPITOLA 01 — Three.js scéna „bobule okolo pohárov“ ----------------
   Rešerš 14. 9. 2026 (SOTD: Palmo, STILL., La Revoltosa, /zeroz): award drink
   weby nesú 3D objekt CEZ CELÚ stránku. Motor `msrThree` vloží `.ox-msr__three`
   ako prvé dieťa pripnutého vizuálu; plátno ide NAD fotku (priehľadné, bez
   udalostí) — bobule krúžia pred pohármi po obvode a fakt v optickej osi okna
   im dá formáciu (partitúra `scenaAkt2` v 21-showroom.js). Len ≥ 1001 px. */
html[data-tema^="21"] .ox-show__vizual { isolation: isolate; }
html[data-tema^="21"] .ox-show__vizual .ox-msr__three { z-index: 2; opacity: 1; }
html[data-tema^="21"] .ox-show__vizual .ox-vh__vizual { z-index: 1; }

/* --- 18) ŠVY MEDZI PLOCHAMI — tvar dodáva téma ------------------------------
   La Revoltosa strihá červenú vlnou, Palmo oblúčikmi; rovná hrana je šablóna.
   Mechanizmus je tu, TVAR v téme cez premenné:
     --akt-sev-b2b        výška šva B2B dosky (0 = bez šva)
     --akt-sev-b2b-tvar   clip-path polygón (diagonála, schody)
     --akt-sev-b2b-maska  mask-image (oblúk, oblúčiky) — alternatíva k polygónu
     --akt-sev / --akt-sev-tvar / --akt-sev-maska   to isté pre pätu (#ox-pata::before)
   Horný šev rastie NAD dosku, spodný je ten istý tvar prevrátený. Farba je
   `background: inherit`, sedí aj so stmavením `.ox-21-doska--jasna`. Doska
   musí mať PLNÚ farbu (gradient by sa v pseudo-prvku začal odznova = švík). */
html[data-tema^="21"] :where([data-ox21-domov], #ox-obsah:has(> .ox-show)) .ox-show__b2b { position: relative; }
html[data-tema^="21"] :where([data-ox21-domov], #ox-obsah:has(> .ox-show)) .ox-show__b2b::before,
html[data-tema^="21"] :where([data-ox21-domov], #ox-obsah:has(> .ox-show)) .ox-show__b2b::after {
	content: ''; position: absolute; left: 0; right: 0; height: var(--akt-sev-b2b, 0px);
	background: inherit; pointer-events: none; z-index: 1;
	clip-path: var(--akt-sev-b2b-tvar, none);
	-webkit-mask: var(--akt-sev-b2b-maska, none); mask: var(--akt-sev-b2b-maska, none);
}
html[data-tema^="21"] :where([data-ox21-domov], #ox-obsah:has(> .ox-show)) .ox-show__b2b::before { top: calc(1px - var(--akt-sev-b2b, 0px)); }
html[data-tema^="21"] :where([data-ox21-domov], #ox-obsah:has(> .ox-show)) .ox-show__b2b::after { bottom: calc(1px - var(--akt-sev-b2b, 0px)); transform: scaleY(-1); }

/* --- 19) ZÁCLONA PRECHODU TRÁS ----------------------------------------------
   Porota hodnotí najmä MEDZERU medzi stránkami. Namiesto holého fade: doska
   vo farbe témy vybehne zdola (260 ms), pod ňou sa vymení obsah a posunie
   okno, potom odíde nahor (480 ms). Vlastný prvok v <body> — NIKDY transform
   na #ox-obsah (rozbil by sticky hlavičku aj pin). Pod hlavičkou (74 px),
   nad mini-košíkom (55), pod hlavičkou (60). Bez pohybu: prvok sa nepoužije. */
.ox-21-zaclona {
	position: fixed; left: 0; right: 0; top: calc(var(--ox-lista, 0px) + 74px); bottom: 0; z-index: 58;
	background: var(--sk-akcent); color: #fff; pointer-events: none;
	display: grid; place-items: center; overflow: hidden;
	transform: translateY(101%); will-change: transform;
	transition: transform .48s cubic-bezier(.76, 0, .24, 1);
}
.ox-21-zaclona::after {
	content: 'OXO'; font-family: var(--sk-font-display); font-weight: 400;
	font-size: clamp(64px, 16vw, 240px); line-height: 1; letter-spacing: -.02em;
	text-transform: uppercase; opacity: .16;
}
/* v pokoji neviditeľná (fixed prvok pod oknom by inak vidno na celostránkových snímkach a stál by paint) */
.ox-21-zaclona { visibility: hidden; }
.ox-21-zaclona--kryje, .ox-21-zaclona--odchadza { visibility: visible; }
.ox-21-zaclona--kryje { transform: none; transition-duration: .26s; }
.ox-21-zaclona--odchadza { transform: translateY(-101%); transition-duration: .48s; }
.ox-21-zaclona--skok { transition: none; }
@media (prefers-reduced-motion: reduce) { .ox-21-zaclona { display: none; } }

/* --- 20) ÚVODNÉ VIDEO „MY SME BUBBLE TEA“ (nad hrdinom, celá vetva 21) --------
   Peter 14. 9.: „pri skrole veľká červená medzera zbytočná“ (bola to pripnutá
   sekcia 175svh + wipe) a „video má vľavo/vpravo malý okraj“ (contain na
   širšom okne). Preto:
     · úvod je PRIPNUTÝ (sticky) v obale `.ox-uvod-obal` spolu s hrdinom a
       hrdina ho pri skrole PREKRYJE zdola (cover) — žiadna extra výška,
       žiadna doska; obal je zároveň hranica pripnutia, takže úvod nikdy
       nepodlieza neskoršie sekcie s priesvitným pozadím,
     · na desktope má úvod presne pomer videa (56,25 vw) a video je `cover`
       → celé, bez okrajov; na mobile 100svh cover,
     · `--uvod-p` = koľko výšky úvodu už hrdina zakryl: slová sa rozletia
       a zbleднú, video sa mierne zmenší a stmavne (hĺbka pod prekrytím).
   Slová vletia z rotateX(90°) so staggerom 60 ms (prompt „GSAP ScrollTrigger
   3D reveal“). Video 512×288: zrno zakryje mäkkosť. Bez pohybu (`--stoji`):
   slová stoja, poster. */
html[data-tema^="21"] .ox-uvod-obal { position: relative; }
html[data-tema^="21"] .ox-uvod-obal > .ox-msr { position: relative; z-index: 1; }
html[data-tema^="21"] .ox-uvod {
	position: sticky; top: 0; z-index: 0;
	height: 100svh; height: 100dvh; margin: 0; padding: 0;
	background: #8E0002; color: #fff; --uvod-p: 0;
}
@media (min-width: 701px) {
	html[data-tema^="21"] .ox-uvod { height: 56.25vw; }          /* presný pomer 16:9 → celé video, bez okrajov */
}
html[data-tema^="21"] .ox-uvod__scena {
	position: relative; height: 100%; overflow: hidden;
	display: grid; place-items: center; isolation: isolate; background: #8E0002;
}
html[data-tema^="21"] .ox-uvod__video {
	position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: 50% 50%;
	background: #8E0002;
	filter: saturate(1.06) brightness(calc(1 - var(--uvod-p) * .55));
	/* ŽIADNE zmenšovanie pri prekrývaní — odkrývalo by okraj zeme okolo videa (Peter: „malý okraj“) */
	will-change: filter;
}
/* jemný scrim len pod textom (čitateľnosť), nič nezakrýva */
html[data-tema^="21"] .ox-uvod__scena::before {
	content: ''; position: absolute; inset: 0; z-index: 1; pointer-events: none;
	background: radial-gradient(70% 40% at 50% 52%, rgba(140,12,0,.28) 0%, rgba(140,12,0,0) 100%);
}
html[data-tema^="21"] .ox-uvod__zrno {
	/* 15. 9. 2026: video je už 1080p (ESRGAN) — zrno nemusí kryť mäkkosť, ostáva len jemná textúra .05 */
	position: absolute; inset: 0; z-index: 2; pointer-events: none; opacity: .05; mix-blend-mode: overlay;
	background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='180' height='180'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 .9 0'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>");
	background-size: 180px 180px;
}
html[data-tema^="21"] .ox-uvod__nadpis {
	position: relative; z-index: 3; margin: 0; padding: 0 5vw; text-align: center;
	font-family: var(--sk-font-display); font-weight: 400; text-transform: uppercase;
	font-size: clamp(56px, 13.5vw, 214px); line-height: .9; letter-spacing: -.012em;
	color: #fff; text-shadow: 0 .04em .12em rgba(140,0,2,.4);
	perspective: 1000px; perspective-origin: 50% 50%;
	opacity: calc(1 - clamp(0, var(--uvod-p) / .55, 1));
	will-change: opacity;
}
html[data-tema^="21"] .ox-uvod__riadok { display: block; will-change: transform; }
html[data-tema^="21"] .ox-uvod__riadok:nth-child(1) { transform: translate(calc(var(--uvod-p) * -14vw), calc(var(--uvod-p) * -18vh)) rotate(calc(var(--uvod-p) * -4deg)); }
html[data-tema^="21"] .ox-uvod__riadok:nth-child(2) { transform: translate(calc(var(--uvod-p) * 14vw), calc(var(--uvod-p) * -8vh)) rotate(calc(var(--uvod-p) * 3deg)); }
html[data-tema^="21"] .ox-uvod__slovo { display: inline-block; white-space: nowrap; }
/* 15. 9. 2026 Peter: nadpis sa VYPISUJE písmeno po písmene (uvodZapoj), začne po 1 s.
   Písmeno je skryté, kým nedostane --je; kurzor bliká za posledným napísaným. */
html[data-tema^="21"] .ox-uvod__pismeno {
	display: inline-block; transform-origin: 50% 100%;
	opacity: 0; transform: translateY(.18em) scale(.9);
	transition: transform .34s cubic-bezier(.16, 1, .3, 1), opacity .14s ease-out;
}
html[data-tema^="21"] .ox-uvod__pismeno--je,
html[data-tema^="21"] .ox-uvod--stoji .ox-uvod__pismeno { opacity: 1; transform: none; }
html[data-tema^="21"] .ox-uvod__kurzor {
	display: inline-block; width: .07em; height: .8em; margin-left: .05em; vertical-align: -.02em;
	background: #fff; border-radius: .02em; box-shadow: 0 0 .25em rgba(255, 255, 255, .7);
	animation: ox-uvod-kurzor .8s steps(2, jump-none) infinite;
}
@keyframes ox-uvod-kurzor { from { opacity: 1; } to { opacity: 0; } }
/* ⚠️ Žiadny `background-clip: text` na nadpise: potomkovia s 3D transformáciou majú vlastné
   kompozitné vrstvy a Chrome potom orezané pozadie kreslí zle (riadky sa „zliali“). */
html[data-tema^="21"] .ox-uvod--napisane .ox-uvod__nadpis { animation: ox-uvod-lesk 1.6s ease-out 0s 1 both; }
@keyframes ox-uvod-lesk {
	0% { text-shadow: 0 .04em .12em rgba(140,0,2,.4), 0 0 .5em rgba(255,255,255,0); }
	35% { text-shadow: 0 .04em .12em rgba(140,0,2,.4), 0 0 .5em rgba(255,255,255,.55); }
	100% { text-shadow: 0 .04em .12em rgba(140,0,2,.4), 0 0 .5em rgba(255,255,255,0); }
}
html[data-tema^="21"] .ox-uvod__hint {
	position: absolute; left: 50%; bottom: clamp(18px, 3.4vh, 34px); z-index: 3; transform: translateX(-50%);
	display: grid; justify-items: center; gap: 8px; color: #fff; text-decoration: none;
	font-family: var(--sk-font-text); font-size: 11px; font-weight: 700; letter-spacing: .22em; text-transform: uppercase;
	opacity: calc(1 - var(--uvod-p) * 4);
}
html[data-tema^="21"] .ox-uvod__hint i { display: block; width: 1px; height: 44px; background: rgba(255,255,255,.7); position: relative; overflow: hidden; }
html[data-tema^="21"] .ox-uvod__hint i::after { content: ''; position: absolute; left: 0; top: -100%; width: 100%; height: 100%; background: #fff; animation: ox-uvod-hint 1.8s cubic-bezier(.4, 0, .2, 1) infinite; }
@keyframes ox-uvod-hint { to { top: 100%; } }
html[data-tema^="21"] .ox-uvod__hint:focus-visible { outline: 2px solid #fff; outline-offset: 4px; }
html[data-tema^="21"] .ox-uvod--stoji .ox-uvod__video { filter: none; }
html[data-tema^="21"] .ox-uvod--stoji .ox-uvod__hint i::after { animation: none; }
@media (prefers-reduced-motion: reduce) {
	html[data-tema^="21"] .ox-uvod__pismeno { transition: none; transform: none; opacity: 1; }
	html[data-tema^="21"] .ox-uvod__kurzor { display: none; }
	html[data-tema^="21"] .ox-uvod--napisane .ox-uvod__nadpis { animation: none; }
	html[data-tema^="21"] .ox-uvod__hint i::after { animation: none; }
}
@media (max-width: 700px) {
	html[data-tema^="21"] .ox-uvod__video { object-position: 50% 45%; }
	html[data-tema^="21"] .ox-uvod__nadpis { font-size: clamp(56px, 19vw, 120px); line-height: .92; }
	html[data-tema^="21"] .ox-uvod__riadok:nth-child(1) { transform: translate(calc(var(--uvod-p) * -10vw), calc(var(--uvod-p) * -14vh)); }
	html[data-tema^="21"] .ox-uvod__riadok:nth-child(2) { transform: translate(calc(var(--uvod-p) * 10vw), calc(var(--uvod-p) * -6vh)); }
}

/* --- 21) PÁSY: nikdy nezastavujú, logo pás pod videom, bez označovania ---------
   Peter 14. 9.: pás tvrdení sa na hover nesmie zastaviť; ten istý pás s tromi
   logami (OXOnewBigd, Oxo_final, Greek — ako na oxobubbletea.eu pod videom) ide
   POD úvodné video, teda na vrch bloku, ktorý video prekrýva. Označovanie textu
   v hrdinovi, úvode, pásoch a pripnutom vizuáli je vypnuté — ťah po javisku
   (koleso, prasknutie) inak modro označoval sadzbu. */
html[data-tema^="21"] .ox-msr-pas:hover .ox-msr-pas__stopa { animation-play-state: running; }
html[data-tema^="21"] .ox-uvod-obal > .ox-uvod-pas { position: relative; z-index: 1; }
/* Peter 14. 9.: „logá väčšie a pozadie červené“ */
html[data-tema^="21"] .ox-uvod-pas {
	background: var(--sk-akcent); color: #fff; padding: 0;
	border-top: 1px solid rgba(255,255,255,.14);
}
html[data-tema^="21"] .ox-uvod-pas .ox-msr-pas__stopa { align-items: center; }
html[data-tema^="21"] .ox-uvod-pas__logo {
	display: inline-flex; align-items: center; gap: 0; height: clamp(96px, 9.5vw, 136px);
	padding-inline: clamp(28px, 3.6vw, 64px); font-size: 0;
}
html[data-tema^="21"] .ox-uvod-pas__logo img { height: clamp(64px, 6.4vw, 92px); width: auto; display: block; }
html[data-tema^="21"] .ox-uvod-pas__logo::after { width: 9px; height: 9px; margin-left: clamp(28px, 3.6vw, 64px); background: #fff; opacity: .9; }
html[data-tema^="21"] .ox-uvod, html[data-tema^="21"] .ox-uvod-pas,
html[data-tema^="21"] .ox-msr, html[data-tema^="21"] .ox-msr-pas,
html[data-tema^="21"] .ox-show__vizual, html[data-tema^="21"] .ox-21-prah, html[data-tema^="21"] .ox-21-zaclona {
	-webkit-user-select: none; user-select: none;
}
html[data-tema^="21"] .ox-msr img, html[data-tema^="21"] .ox-uvod img, html[data-tema^="21"] .ox-uvod-pas img { -webkit-user-drag: none; user-drag: none; }
html[data-tema^="21"] .ox-msr input, html[data-tema^="21"] .ox-msr textarea { -webkit-user-select: text; user-select: text; }

/* --- 22) CUDZIE TRASY: remeslo katalógu, detailu a B2B (14. 9. 2026) ------------
   Rovnaký rukopis ako domov: galéria detailu s pomalým priblížením fotky,
   cena v tmavšom akcente, drobnopis meta v mono rytme, filtre ako pilulky
   s jasným aktívnym stavom, tmavé plochy = tmavšia červená (nikdy čierna). */
html[data-tema^="21"] .ox-detail__galeria { overflow: hidden; }
html[data-tema^="21"] .ox-detail__galeria img { transition: transform .9s cubic-bezier(.16, 1, .3, 1); }
@media (hover: hover) and (pointer: fine) {
	html[data-tema^="21"] .ox-detail__galeria:hover img { transform: scale(1.045); }
}
html[data-tema^="21"] .ox-detail__info .ox-h2 { font-size: clamp(34px, 4.6vw, 64px); line-height: 1.02; }
html[data-tema^="21"] .ox-cena { color: var(--sk-akcent-tmavy); }
html[data-tema^="21"] .ox-detail__meta { font-size: 12.5px; letter-spacing: .06em; text-transform: uppercase; color: var(--sk-text-tlmeny); }
html[data-tema^="21"] .ox-detail__meta b { color: var(--sk-text); }
html[data-tema^="21"] .ox-detail__popis h3 { font-family: var(--sk-font-nadpis); text-transform: var(--sk-nadpis-transform); letter-spacing: var(--sk-nadpis-spacing); }
html[data-tema^="21"] #ox-filtre .ox-chip, html[data-tema^="21"] #ox-znacky .ox-chip {
	border-radius: 999px; padding: 8px 14px; font-size: 12.5px; letter-spacing: .06em; text-transform: uppercase; font-weight: 700;
	transition: background .2s var(--sk-prechod), color .2s var(--sk-prechod), border-color .2s var(--sk-prechod);
}
html[data-tema^="21"] #ox-filtre .ox-chip[aria-pressed="true"], html[data-tema^="21"] #ox-znacky .ox-chip[aria-pressed="true"],
html[data-tema^="21"] #ox-filtre .ox-chip.je-aktivny, html[data-tema^="21"] #ox-znacky .ox-chip.je-aktivny {
	background: var(--sk-atrament); color: #fff; border-color: var(--sk-atrament);
}
html[data-tema^="21"] .ox-sek--tmava { background: #8C0C00; }
html[data-tema^="21"] .ox-sek--tmava .ox-btn--hlavne { background: #fff; color: #8C0C00; border-color: #fff; }
html[data-tema^="21"] .ox-hero__vizual img { transition: transform .9s cubic-bezier(.16, 1, .3, 1); }
@media (hover: hover) and (pointer: fine) {
	html[data-tema^="21"] .ox-hero__vizual:hover img { transform: scale(1.03); }
}

/* --- 23) KOŠÍK a POKLADŇA: remeslo (14. 9. 2026) ------------------------------
   Prázdny stav bez emoji (na headless/starších systémoch = prázdny štvorec):
   ikona zo sady SVG. Riadky košíka vzdušnejšie, väčšia fotka, názov v písme
   nadpisov, „Odstrániť“ ako tichý vlasový odkaz, súčet v tmavšom akcente,
   kroky pokladne ako číslovaná linka (aktívny plný akcent). */
html[data-tema^="21"] .ox-prazdne__ikona {
	font-size: 0; line-height: 0; width: 88px; height: 88px; margin: 0 auto 18px;
	background: url(img/ikona-600ml.svg) center / contain no-repeat; opacity: .9;
}
html[data-tema^="21"] .ox-prazdne .ox-h3 { font-size: clamp(26px, 3vw, 40px); }
html[data-tema^="21"] .ox-riadok { grid-template-columns: clamp(84px, 8vw, 112px) minmax(0, 1fr) auto; padding-block: clamp(16px, 2vw, 26px); align-items: center; gap: clamp(16px, 2vw, 28px); }
html[data-tema^="21"] .ox-riadok__foto { width: clamp(84px, 8vw, 112px); height: clamp(84px, 8vw, 112px); border-radius: var(--sk-r-stredny); background: #fff; box-shadow: var(--sk-obrys); }
html[data-tema^="21"] .ox-riadok__foto img { object-fit: contain; padding: 8%; }
html[data-tema^="21"] .ox-riadok__nazov { font-family: var(--sk-font-nadpis); text-transform: var(--sk-nadpis-transform); letter-spacing: var(--sk-nadpis-spacing); font-size: clamp(17px, 1.5vw, 22px); line-height: 1.15; }
html[data-tema^="21"] .ox-riadok__meta { font-size: 12.5px; letter-spacing: .06em; text-transform: uppercase; color: var(--sk-text-tlmeny); }
html[data-tema^="21"] .ox-riadok__cena { font-family: var(--sk-font-display); font-size: clamp(20px, 1.9vw, 28px); color: var(--sk-akcent-tmavy); }
html[data-tema^="21"] .ox-riadok .ox-btn--tiche {
	background: none; border: 0; border-bottom: 1px solid var(--sk-linka); border-radius: 0; padding: 4px 0; min-height: 0;
	font-size: 12px; letter-spacing: .14em; text-transform: uppercase; color: var(--sk-text-tlmeny);
}
html[data-tema^="21"] .ox-riadok .ox-btn--tiche:hover { color: var(--sk-akcent-tmavy); border-color: var(--sk-akcent-tmavy); background: none; }
html[data-tema^="21"] .ox-mnozstvo { border-radius: 999px; overflow: hidden; }
html[data-tema^="21"] .ox-suhrn__spolu b { color: var(--sk-akcent-tmavy); font-size: clamp(28px, 2.6vw, 38px); }
html[data-tema^="21"] .ox-suhrn .ox-h3, html[data-tema^="21"] .ox-suhrn .ox-h2 { letter-spacing: .02em; }
html[data-tema^="21"] .ox-kroky { gap: 0; border-bottom: 1px solid var(--sk-linka); padding-bottom: 0; }
html[data-tema^="21"] .ox-kroky > * { background: none !important; border-radius: 0; padding: 12px 18px 14px 0; margin-right: 22px; box-shadow: none; position: relative; color: var(--sk-text-tlmeny); font-size: 13px; letter-spacing: .08em; text-transform: uppercase; font-weight: 700; }
html[data-tema^="21"] .ox-kroky > *::after { content: ''; position: absolute; left: 0; right: 22px; bottom: -1px; height: 2px; background: transparent; }
html[data-tema^="21"] .ox-kroky > .je-aktivny, html[data-tema^="21"] .ox-kroky > [aria-current], html[data-tema^="21"] .ox-kroky > .ox-krok--aktivny { color: var(--sk-text); }
html[data-tema^="21"] .ox-kroky > .je-aktivny::after, html[data-tema^="21"] .ox-kroky > [aria-current]::after, html[data-tema^="21"] .ox-kroky > .ox-krok--aktivny::after { background: var(--sk-akcent); }
html[data-tema^="21"] .ox-kroky__ciara { display: none; }
html[data-tema^="21"] .ox-krok__cislo { background: none; color: var(--sk-akcent-tmavy); font-family: var(--sk-font-display); font-size: 16px; width: auto; height: auto; margin-right: 8px; }
html[data-tema^="21"] .ox-doprava-volba { border-radius: var(--sk-r-stredny); }
html[data-tema^="21"] .ox-blok .ox-h3 { font-size: clamp(20px, 2vw, 28px); margin-bottom: 14px; }

/* --- 24) „Klikni na otvorenie“ na kartách kruhu s fotkami (14. 9. 2026) -------
   Drobný uppercase návod s krúžkom „+“; na prednej karte plný a krúžok dýcha. */
html[data-tema^="21"] .ox-msr__klik {
	/* 15. 9. 2026 Peter (Mac): „KLIKNI NA OTVORENIE“ bolo odseknuté — macOS kreslí Inter
	   širšie a pri užšom okne text s .16em prečnieval z karty (overflow hidden).
	   Teraz: menšie stopy, text v <span> sa smie zalomiť na 2 riadky, ikona sa nezmenšuje,
	   celok nikdy nepresiahne šírku tela karty. */
	display: inline-flex; align-items: center; justify-content: center; gap: 7px; margin-top: 10px;
	max-width: 100%; box-sizing: border-box;
	font-family: var(--sk-font-text); font-weight: 700; font-size: 10px; letter-spacing: .1em; line-height: 1.25; text-transform: uppercase;
	white-space: normal; text-align: left;
	color: var(--sk-akcent-tmavy); opacity: .7; transition: opacity .25s var(--sk-prechod);
}
html[data-tema^="21"] .ox-msr__klik > span { min-width: 0; }
html[data-tema^="21"] .ox-msr__klik i {
	flex: 0 0 18px; width: 18px; height: 18px; border-radius: 50%; border: 1.5px solid currentColor; display: grid; place-items: center;
	font-style: normal; font-size: 13px; line-height: 1; position: relative;
}
html[data-tema^="21"] .ox-msr__klik i::before { content: '+'; transform: translateY(-.5px); }
html[data-tema^="21"] .ox-msr__karta--celo .ox-msr__klik { opacity: 1; }
html[data-tema^="21"] .ox-msr--pohyb .ox-msr__karta--celo .ox-msr__klik i { animation: ox-klik-dych 1.8s ease-in-out infinite; }
@keyframes ox-klik-dych { 0%, 100% { box-shadow: 0 0 0 0 rgba(224, 19, 0, .35); } 50% { box-shadow: 0 0 0 5px rgba(224, 19, 0, 0); } }
@media (prefers-reduced-motion: reduce) { html[data-tema^="21"] .ox-msr__klik i { animation: none !important; } }
html[data-tema^="21"] .ox-msr__karta--claim:hover .ox-msr__klik { opacity: 1; }

/* --- 25) KALKULAČKA ZISKU + OXO STARTER (15. 9. 2026, podľa ostrého /b2b) -----
   Biela karta s červenou hlavou, dva stĺpce (set | zisk), hodnoty sliderov v
   bunkách, výsledky v dvoch kartách (tržby ruž, zisk biela s akcentom). */
html[data-tema^="21"] .ox-kalk {
	display: block; background: #fff; border-radius: var(--sk-r-velky); overflow: hidden;
	box-shadow: var(--sk-tien), var(--sk-obrys);
}
html[data-tema^="21"] .ox-kalk__hlava { background: var(--sk-akcent-tmavy); color: #fff; padding: clamp(22px, 2.6vw, 34px) clamp(22px, 3vw, 40px); text-align: center; }
html[data-tema^="21"] .ox-kalk__hlava .ox-h3 { color: #fff; font-size: clamp(26px, 3vw, 40px); margin: 0 0 6px; letter-spacing: .02em; }
html[data-tema^="21"] .ox-kalk__hlava p { margin: 0; color: rgba(255,255,255,.9); font-size: 15px; }
html[data-tema^="21"] .ox-kalk__telo { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.1fr); gap: clamp(24px, 3.4vw, 52px); padding: clamp(22px, 3vw, 40px); }
html[data-tema^="21"] .ox-kalk__nadpis { font-family: var(--sk-font-nadpis); text-transform: var(--sk-nadpis-transform); letter-spacing: var(--sk-nadpis-spacing); font-size: clamp(17px, 1.5vw, 21px); margin: 22px 0 10px; color: var(--sk-akcent-tmavy); }
html[data-tema^="21"] .ox-kalk__nadpis:first-child { margin-top: 0; }
html[data-tema^="21"] .ox-kalk__zoznam { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; }
html[data-tema^="21"] .ox-kalk__zoznam li { padding: 10px 14px; background: rgba(255,217,214,.35); border-radius: var(--sk-r-maly); font-size: 14.5px; font-weight: 600; }
html[data-tema^="21"] .ox-kalk__pole { display: block; margin-bottom: 8px; }
html[data-tema^="21"] .ox-kalk__select { width: 100%; padding: 11px 40px 11px 14px; border: 1.5px solid var(--sk-linka); border-radius: var(--sk-r-maly); background: #fff; font: inherit; font-size: 14.5px; }
html[data-tema^="21"] .ox-kalk__select:focus-visible { outline: 2px solid var(--sk-akcent-tmavy); outline-offset: 2px; }
html[data-tema^="21"] .ox-kalk__vyber { margin: 14px 0; padding: 12px 14px; border-left: 3px solid var(--sk-akcent); background: rgba(255,217,214,.25); font-size: 14px; line-height: 1.5; color: var(--sk-text); }
html[data-tema^="21"] .ox-kalk__vyber b { color: var(--sk-akcent-tmavy); }
html[data-tema^="21"] .ox-kalk__cena { display: flex; flex-direction: column; align-items: center; gap: 6px; padding: 16px; margin: 14px 0; text-align: center; background: rgba(255,217,214,.35); border-radius: var(--sk-r-stredny); }
html[data-tema^="21"] .ox-kalk__cena span { font-size: 12.5px; letter-spacing: .08em; text-transform: uppercase; font-weight: 700; color: var(--sk-text-tlmeny); }
html[data-tema^="21"] .ox-kalk__cena b { font-family: var(--sk-font-display); font-size: clamp(30px, 3vw, 44px); line-height: 1; color: var(--sk-akcent-tmavy); }
html[data-tema^="21"] .ox-kalk .ox-btn--plne { width: 100%; }
html[data-tema^="21"] .ox-kalk__prihlas { margin: 12px 0 0; font-size: 13.5px; line-height: 1.5; color: var(--sk-text-tlmeny); }
html[data-tema^="21"] .ox-kalk__prihlas a { color: var(--sk-akcent-tmavy); font-weight: 700; }
html[data-tema^="21"] .ox-kalk__pod { margin: -4px 0 16px; color: var(--sk-text-tlmeny); font-size: 14px; }
html[data-tema^="21"] .ox-kalk__slider { margin-bottom: 18px; }
html[data-tema^="21"] .ox-kalk__slider .ox-label { display: block; font-size: 12.5px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; margin-bottom: 8px; }
html[data-tema^="21"] .ox-kalk__rad { display: grid; grid-template-columns: minmax(0, 1fr) 122px; gap: 14px; align-items: center; }
html[data-tema^="21"] .ox-kalk input[type="range"] { width: 100%; accent-color: var(--sk-akcent); height: 32px; }
html[data-tema^="21"] .ox-kalk__bunka { display: grid; justify-items: center; gap: 2px; padding: 8px 10px; background: rgba(255,217,214,.35); border: 2px solid var(--sk-ruz); border-radius: var(--sk-r-stredny); }
html[data-tema^="21"] .ox-kalk__bunka input { width: 5ch; border: 0; background: none; text-align: center; font-family: var(--sk-font-display); font-size: 26px; line-height: 1; color: var(--sk-akcent-tmavy); }
html[data-tema^="21"] .ox-kalk__bunka small { font-size: 10.5px; letter-spacing: .08em; text-transform: uppercase; color: var(--sk-text-tlmeny); font-weight: 700; }
html[data-tema^="21"] .ox-kalk__karty { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; margin-top: 8px; }
html[data-tema^="21"] .ox-kalk__karta { display: grid; justify-items: center; gap: 2px; padding: 20px 14px; border-radius: var(--sk-r-stredny); text-align: center; }
html[data-tema^="21"] .ox-kalk__karta--trzby { background: rgba(255,217,214,.45); }
html[data-tema^="21"] .ox-kalk__karta--zisk { background: #fff; box-shadow: 0 0 0 2px var(--sk-akcent) inset; }
html[data-tema^="21"] .ox-kalk__karta-nazov { font-family: var(--sk-font-nadpis); text-transform: var(--sk-nadpis-transform); letter-spacing: var(--sk-nadpis-spacing); font-size: 18px; color: var(--sk-akcent-tmavy); margin-bottom: 8px; }
html[data-tema^="21"] .ox-kalk__karta-nazov em { font-style: normal; font-family: var(--sk-font-text); font-size: 11px; letter-spacing: .06em; color: var(--sk-text-tlmeny); }
html[data-tema^="21"] .ox-kalk__karta b { font-family: var(--sk-font-display); font-size: clamp(24px, 2.4vw, 34px); line-height: 1; color: var(--sk-akcent-tmavy); font-variant-numeric: tabular-nums; }
html[data-tema^="21"] .ox-kalk__karta small { font-size: 12px; color: var(--sk-text-tlmeny); margin-bottom: 10px; }
html[data-tema^="21"] .ox-kalk--strata .ox-kalk__karta--zisk b { color: var(--sk-text-tlmeny); }
html[data-tema^="21"] .ox-kalk__pozn { margin: 14px 0; padding: 10px 14px; border-radius: var(--sk-r-maly); background: rgba(255,217,214,.25); font-size: 12.5px; line-height: 1.5; color: var(--sk-text-tlmeny); }
@media (max-width: 900px) {
	html[data-tema^="21"] .ox-kalk__telo { grid-template-columns: 1fr; }
	html[data-tema^="21"] .ox-kalk__karty { grid-template-columns: 1fr; }
}

/* --- užšie okná ------------------------------------------------------------- */
@media (max-width: 1000px) {
	.ox-msr__mriezka,
	.ox-msr--18-chrome .ox-msr__mriezka,
	.ox-msr--19-jukebox .ox-msr__mriezka,
	.ox-msr--20-drivein .ox-msr__mriezka,
	.ox-msr--rodina-show .ox-msr__mriezka {
		grid-template-columns: minmax(0, 1fr);
		grid-template-areas: "javisko" "vitrina" "panel" "lista";
	}
	.ox-msr--18-chrome .ox-msr__javisko,
	.ox-msr--18-chrome .ox-msr__vitrina { grid-area: auto; width: auto; justify-self: stretch; }
	.ox-msr--18-chrome .ox-msr__javisko { grid-area: javisko; pointer-events: auto; }
	.ox-msr--18-chrome .ox-msr__vitrina { grid-area: vitrina; }
	.ox-msr, .ox-msr--18-chrome, .ox-msr--19-jukebox, .ox-msr--20-drivein {
		min-height: 0;
		--msr-scena-v: clamp(300px, 42vh, 380px);
		--msr-karta-w: 196px;
		--msr-karta-v: 300px;
	}
	.ox-msr--rodina-show {
		min-height: 0;
		--msr-scena-v: clamp(380px, 47vh, 404px);
		--msr-karta-w: 200px;
		--msr-karta-v: 344px;
	}
	.ox-msr__panel, .ox-msr--20-drivein .ox-msr__panel, .ox-msr--rodina-show .ox-msr__panel, .ox-msr--18-chrome .ox-msr__panel {
		justify-self: stretch; max-width: none; text-align: left;
	}
	.ox-msr--20-drivein, .ox-msr--rodina-show, .ox-msr--18-chrome { --msr-panel-text: left; }
	.ox-msr--20-drivein .ox-msr__panel-akcie, .ox-msr--rodina-show .ox-msr__panel-akcie, .ox-msr--18-chrome .ox-msr__panel-akcie { justify-content: flex-start; }
	.ox-msr--18-chrome { --msr-zarovnanie: flex-start; --msr-text: left; --msr-lista: flex-start; }
}
@media (max-width: 620px) {
	.ox-msr__hint { display: none; }                 /* lišta by sa inak zalamovala */
	.ox-msr__akcie { width: 100%; }
	.ox-msr__akcie .ox-btn { flex: 1 1 100%; }       /* dve tlačidlá vedľa seba sa na 390 px lámu */
	.ox-msr__pilulka { font-size: 9.5px; letter-spacing: .14em; padding: 7px 13px; }
	.ox-msr__mriezka { gap: 14px; }
	.ox-msr-krok__cislo { font-size: 52px; }
}
@media (max-height: 700px) {
	.ox-msr { min-height: 620px; }
}
/* Nízke notebooky (1366×768, 1280×720): hrdina vetvy 21 sa musí zmestiť nad ohyb aj
   s lištou — nižšia scéna a karta, tesnejšie telo karty (text sa nesmie orezať). */
@media (max-height: 820px) and (min-width: 1001px) {
	.ox-msr--rodina-show {
		min-height: 0;
		--msr-scena-v: clamp(340px, 46vh, 366px);
		--msr-karta-w: 198px; --msr-karta-v: 314px;
	}
	.ox-msr--rodina-show .ox-msr__mriezka { padding-top: 18px; padding-bottom: 10px; row-gap: 8px; }
	.ox-msr--rodina-show .ox-msr__karta--claim .ox-msr__foto { flex-basis: 38%; min-height: 84px; }
	.ox-msr--rodina-show .ox-msr__karta--claim .ox-msr__telo { padding: 10px 12px 11px; gap: 3px; }
	.ox-msr--rodina-show .ox-msr__karta--claim .ox-msr__nazov { font-size: 13.5px; }
	.ox-msr--rodina-show .ox-msr__ktext { font-size: 11.5px; min-height: 2.6em; }
	.ox-msr--rodina-show .ox-msr__karta--claim .ox-msr__viac { margin-top: 6px; padding-top: 4px; }
	.ox-msr--rodina-show .ox-msr__panel .ox-pv__nazov { font-size: clamp(1.4rem, 2.2vw, 2rem); }
	.ox-msr--rodina-show .ox-msr__panel-text { margin-top: 4px; }
	.ox-msr--rodina-show .ox-msr__panel-akcie { margin-top: 10px; }
	.ox-msr--rodina-show .ox-msr__lista { padding-top: 2px; }
	.ox-msr--rodina-show .ox-msr__h1 { font-size: clamp(40px, 5.6vw, 84px); }
	.ox-msr--rodina-show .ox-msr__h2 { font-size: clamp(34px, 4.6vw, 70px); }
}
@media (prefers-reduced-motion: reduce) {
	/* Pohyb riadi trieda --pohyb (jadro zohľadnilo systém v OXO_POHYB a lišta
	   ho vie prebiť); toto je len poistka pre tlač a pre staršie prehliadače. */
	.ox-msr:not(.ox-msr--pohyb) .ox-msr-pas__stopa,
	.ox-msr:not(.ox-msr--pohyb) .ox-msr__hint i::after { animation: none; }
}

/* --- 26) HRDINA 21 (15. 9. 2026 Peter): aktívne tvrdenie vľavo (názov + dlhý text
   z popupu), panel pod kolesom preč, karty LEN symbol (bez textov) a väčšie,
   šípky ← → po bokoch otáčajúceho sa katalógu. Neskoro v súbore = vyhráva
   nad témami pri rovnakej špecifickosti. -------------------------------- */
html[data-tema^="21"] .ox-msr--rodina-show .ox-msr__panel--claim { display: none; }
html[data-tema^="21"] .ox-msr--rodina-show .ox-msr__mriezka {
	grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr);
	grid-template-areas: "javisko vitrina" "javisko vitrina" "lista lista";
}
html[data-tema^="21"] .ox-msr--rodina-show {
	--msr-scena-v: clamp(400px, 52vh, 500px); --msr-karta-w: 250px; --msr-karta-v: 300px;
}
html[data-tema^="21"] .ox-msr--rodina-show .ox-msr__vitrina { position: relative; }
html[data-tema^="21"] .ox-msr--rodina-show .ox-msr__vitrina > .ox-msr__arw {
	position: absolute; top: 50%; z-index: 6; transform: translateY(-50%);
	/* Peter 15. 9.: „šípky nech sú výraznejšie“ — väčšie, plná akcentová výplň s bielym
	   rámom a tieňom: čitateľné na červenej zemi aj cez svetlé krajné karty */
	width: 56px; height: 56px; border-width: 2.5px;
	background: var(--sk-akcent); border-color: #fff; color: #fff;
	box-shadow: 0 10px 26px -6px rgba(0, 0, 0, .55), 0 0 0 4px rgba(255, 255, 255, .18);
}
html[data-tema^="21"] .ox-msr--rodina-show .ox-msr__vitrina > .ox-msr__arw svg { width: 20px; height: 20px; }
html[data-tema^="21"] .ox-msr--rodina-show .ox-msr__vitrina > .ox-msr__arw--vlavo { left: clamp(-26px, -1.6vw, -8px); }
html[data-tema^="21"] .ox-msr--rodina-show .ox-msr__vitrina > .ox-msr__arw--vpravo { right: clamp(-26px, -1.6vw, -8px); }
html[data-tema^="21"] .ox-msr--rodina-show .ox-msr__vitrina > .ox-msr__arw:hover { transform: translateY(-50%) scale(1.08); background: #fff; border-color: #fff; color: var(--sk-akcent); }
/* karta = veľký symbol + názov pod ním (Peter 15. 9.: „pod obrázky daj naspäť popis
   Bez azofarbív a pod.“), nadnadpis/popis/odkaz ostávajú skryté (témy), odznak „+“ v rohu */
html[data-tema^="21"] .ox-msr__karta--claim { position: relative; }
html[data-tema^="21"] .ox-msr__karta--claim .ox-msr__telo { display: flex !important; flex: 0 0 auto; padding: 4px 12px 14px !important; justify-content: center; align-items: center; text-align: center; }
html[data-tema^="21"] .ox-msr__karta--claim .ox-msr__nazov { font-size: 15.5px; line-height: 1.15; text-align: center; }
html[data-tema^="21"] .ox-msr__karta--claim .ox-msr__foto { flex: 1 1 auto !important; min-height: 0 !important; height: auto; aspect-ratio: auto; }
html[data-tema^="21"] .ox-msr__karta--claim .ox-msr__foto img { padding: 4% !important; object-fit: contain !important; width: 100%; height: 100%; }
html[data-tema^="21"] .ox-msr__karta--claim > .ox-msr__klik { position: absolute; right: 10px; top: 10px; margin: 0; z-index: 3; opacity: .75; }
html[data-tema^="21"] .ox-msr__karta--claim > .ox-msr__klik > span { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
html[data-tema^="21"] .ox-msr__karta--claim > .ox-msr__klik i { flex-basis: 26px; width: 26px; height: 26px; font-size: 17px; background: rgba(255, 255, 255, .88); }
/* sadzba vľavo: názvy tvrdení + dlhý text → o stupeň menší nadpis, lead do 46 znakov */
html[data-tema^="21"] .ox-msr--rodina-show .ox-msr__h1,
html[data-tema^="21"] .ox-msr--rodina-show .ox-msr__h2 { font-size: clamp(38px, 4.9vw, 74px); }
html[data-tema^="21"] .ox-msr--rodina-show .ox-msr__lead { font-size: clamp(17px, 1.45vw, 22px); line-height: 1.5; max-width: 42ch; }
@media (max-width: 1000px) {
	html[data-tema^="21"] .ox-msr--rodina-show .ox-msr__mriezka { grid-template-columns: minmax(0, 1fr); grid-template-areas: "javisko" "vitrina" "lista"; }
	html[data-tema^="21"] .ox-msr--rodina-show { --msr-scena-v: clamp(340px, 46vh, 420px); --msr-karta-w: 220px; --msr-karta-v: 260px; }
	html[data-tema^="21"] .ox-msr--rodina-show .ox-msr__vitrina > .ox-msr__arw { width: 44px; height: 44px; }
	html[data-tema^="21"] .ox-msr--rodina-show .ox-msr__vitrina > .ox-msr__arw--vlavo { left: 2px; }
	html[data-tema^="21"] .ox-msr--rodina-show .ox-msr__vitrina > .ox-msr__arw--vpravo { right: 2px; }
}
/* aktívna (predná) karta: symbol sa zväčší (Peter 15. 9.); predná karta bez popupu = bez kurzora ruky */
html[data-tema^="21"] .ox-msr__karta--claim .ox-msr__foto img { transition: transform .6s var(--sk-prechod); transform: scale(.86); transform-origin: 50% 55%; }
html[data-tema^="21"] .ox-msr__karta--claim.ox-msr__karta--celo .ox-msr__foto img { transform: scale(1.06); }
html[data-tema^="21"] .ox-msr__karta--claim.ox-msr__karta--celo { cursor: default; }
html[data-tema^="21"] .ox-msr__karta--claim.ox-msr__karta--celo:hover .ox-msr__foto img { transform: scale(1.06); }
@media (prefers-reduced-motion: reduce) { html[data-tema^="21"] .ox-msr__karta--claim .ox-msr__foto img { transition: none; } }
/* Peter 15. 9.: „nech je o trošku zväčšené aj to biele pozadie“ — celá predná karta
   rastie cez samostatnú vlastnosť `scale` (skladá sa s inline rotateY/translateZ kolesa) */
html[data-tema^="21"] .ox-msr__karta--claim { transition: opacity .35s var(--sk-prechod), box-shadow .35s var(--sk-prechod), scale .6s var(--sk-prechod); }
html[data-tema^="21"] .ox-msr__karta--claim.ox-msr__karta--celo { scale: 1.08; z-index: 2; }
html[data-tema^="21"] .ox-msr__karta--claim.ox-msr__karta--celo .ox-msr__foto img,
html[data-tema^="21"] .ox-msr__karta--claim.ox-msr__karta--celo:hover .ox-msr__foto img { transform: scale(1.03); }
@media (prefers-reduced-motion: reduce) { html[data-tema^="21"] .ox-msr__karta--claim { transition: none; } }
/* Peter 15. 9.: „sprav to trošku širšie — text, obrázky, a okraje hore/dole väčšie“ —
   hrdina 21 dostane širší obsahový pás, väčšie karty a nadpis, viac vzduchu nad a pod */
html[data-tema^="21"] .ox-msr--rodina-show .ox-msr__mriezka {
	max-width: min(1600px, 100%);
	padding-block: clamp(44px, 7vh, 104px) clamp(30px, 5vh, 72px);
	column-gap: clamp(28px, 4vw, 76px); row-gap: clamp(18px, 2.4vh, 32px);
}
html[data-tema^="21"] .ox-msr--rodina-show {
	--msr-scena-v: clamp(420px, 56vh, 600px);
	--msr-karta-w: clamp(250px, 15.5vw, 310px); --msr-karta-v: clamp(300px, 18.5vw, 370px);
}
html[data-tema^="21"] .ox-msr--rodina-show .ox-msr__h1,
html[data-tema^="21"] .ox-msr--rodina-show .ox-msr__h2 { font-size: clamp(40px, 5.4vw, 92px); }
html[data-tema^="21"] .ox-msr--rodina-show .ox-msr__lead { font-size: clamp(17px, 1.5vw, 24px); max-width: 44ch; }
html[data-tema^="21"] .ox-msr__karta--claim .ox-msr__nazov { font-size: clamp(15.5px, 1vw, 18px); }
@media (max-width: 1000px) {
	html[data-tema^="21"] .ox-msr--rodina-show .ox-msr__mriezka { padding-block: clamp(28px, 4vh, 44px) 20px; }
	html[data-tema^="21"] .ox-msr--rodina-show { --msr-scena-v: clamp(340px, 46vh, 420px); --msr-karta-w: 220px; --msr-karta-v: 260px; }
}
/* Peter 15. 9. (Safari/Mac): hrdina bol na Macu nižší — Safari má menšie okno (lišty) a
   výška išla z vh. Pevné pixelové minimá → rovnaká výška na Macu aj Windowse. */
html[data-tema^="21"] .ox-msr--rodina-show { min-height: max(780px, min(88vh, 920px)); --msr-scena-v: clamp(520px, 58vh, 640px); --msr-karta-v: clamp(330px, 19vw, 390px); }
@media (max-width: 1000px) { html[data-tema^="21"] .ox-msr--rodina-show { min-height: 0; --msr-scena-v: clamp(340px, 46vh, 420px); --msr-karta-v: 260px; } }
/* --- 27) AUDIT 14 NÁVRHOV (15. 9. 2026): zjednotenie vetvy 21 ----------------
   Nájdené: v návrhoch mimo Noir (21-showroom, 21a, 21b, 21c, 21d, 21e) mali karty
   stále nadnadpis, popis a odkaz „Prečo →“ — pričom popup je od dnes vypnutý
   (`bezPopupu`), takže odkaz nikam neviedol a symbol bol o tretinu menší.
   Nadpis v 21d (serif) sa pri dlhom tvrdení lámal na 3 riadky a posledný sa
   strácal pod linkou. Preto: jednotná karta (symbol + názov) a nadpis, ktorý sa
   zmestí na 2 riadky v každej téme rodiny. ------------------------------- */
html[data-tema^="21"] .ox-msr__karta--claim .ox-msr__kat,
html[data-tema^="21"] .ox-msr__karta--claim .ox-msr__ktext,
html[data-tema^="21"] .ox-msr__karta--claim .ox-msr__viac { display: none !important; }
html[data-tema^="21"] .ox-msr__karta--claim .ox-msr__telo { padding: 2px 12px 15px !important; gap: 0 !important; }
html[data-tema^="21"] .ox-msr--rodina-show .ox-msr__h1,
html[data-tema^="21"] .ox-msr--rodina-show .ox-msr__h2 {
	font-size: clamp(32px, 3.6vw, 62px); line-height: 1.04; max-width: 100%;
}
@media (max-width: 1000px) {
	html[data-tema^="21"] .ox-msr--rodina-show .ox-msr__h1,
	html[data-tema^="21"] .ox-msr--rodina-show .ox-msr__h2 { font-size: clamp(30px, 8.2vw, 46px); }
}

/* =============================================================================
   28) NoirG 1–4 — SPODNÉ SEKCIE (15. 9. 2026, Peter: „uprav spodné elementy —
   widgety — aby boli viac interaktívne, červené, viac sedeli s dizajnom“)
   ---------------------------------------------------------------------------
   Platí LEN pre 21g1–21g4 (`html[data-tema^="21g"]`), ostatné návrhy sa nemenia.
   Rytmus zeme: ruž (kategórie) → biela (prečo my) → SÝTO ČERVENÁ doska (kroky)
   → tmavá päta. Hrdina je červený, spodok webu bol dovtedy sivobiely katalóg —
   týmto sa stránka uzatvára v tej istej farbe, v akej začína.
   ========================================================================== */

/* --- 03 KATEGÓRIE: červené dlaždice namiesto bielych obdĺžnikov ------------- */
html[data-tema^="21g"] :where([data-ox21="kategorie"], #ox-obsah:has(> .ox-show) .ox-sek--krem:has(.ox-mriezka--4)) a.ox-produkt {
	position: relative; overflow: hidden; isolation: isolate;
	background: linear-gradient(160deg, #FF2A12 0%, #E01300 46%, #A60C00 100%);
	border-radius: 22px; border: 0;
	box-shadow: 0 18px 38px -22px rgba(120, 8, 0, .75), inset 0 0 0 1px rgba(255, 255, 255, .16);
	transition: transform .5s var(--sk-prechod), box-shadow .5s var(--sk-prechod);
}
/* mäkké svetlo v rohu — dlaždica nie je plochá plocha, ale osvetlená doska */
html[data-tema^="21g"] :where([data-ox21="kategorie"], #ox-obsah:has(> .ox-show) .ox-sek--krem:has(.ox-mriezka--4)) a.ox-produkt::before {
	content: ''; position: absolute; inset: 0; z-index: 0; pointer-events: none;
	background: radial-gradient(120% 80% at 18% 0%, rgba(255, 255, 255, .28) 0%, rgba(255, 255, 255, 0) 60%);
}
/* fotka produktu má biele pozadie → posadíme ju na svetlý disk, nech nesplýva */
html[data-tema^="21g"] :where([data-ox21="kategorie"], #ox-obsah:has(> .ox-show) .ox-sek--krem:has(.ox-mriezka--4)) .ox-produkt__foto {
	/* jednotné okno pre všetky štyri dlaždice — editoriálny rytmus robia rôzne
	   odsadenia zhora (nth-child margin-top), nie rôzne pomery fotky */
	position: relative; z-index: 1; aspect-ratio: 1 / 1 !important; margin: 14px; border-radius: 16px; overflow: hidden;
	/* podklad je ladený na štúdiové pozadie fotiek (#e4e6–#fff), aby nebolo vidieť
	   obdĺžnik obrázka; rohy fotky ešte zjemní maska */
	background: linear-gradient(180deg, #FAFBFA 0%, #F2F4F3 100%);
	box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .6);
}
html[data-tema^="21g"] :where([data-ox21="kategorie"], #ox-obsah:has(> .ox-show) .ox-sek--krem:has(.ox-mriezka--4)) .ox-produkt__foto img {
	padding: 4% !important; transform: scale(1.06); mix-blend-mode: normal;
	-webkit-mask-image: radial-gradient(ellipse 96% 96% at 50% 50%, #000 76%, transparent 99%);
	        mask-image: radial-gradient(ellipse 96% 96% at 50% 50%, #000 76%, transparent 99%);
}
html[data-tema^="21g"] :where([data-ox21="kategorie"], #ox-obsah:has(> .ox-show) .ox-sek--krem:has(.ox-mriezka--4)) a.ox-produkt:hover .ox-produkt__foto img { transform: scale(1.13) rotate(-1.5deg); }
/* jemný lesk prejde dlaždicou pri prejdení myšou (award detail, nie gýč) */
html[data-tema^="21g"] :where([data-ox21="kategorie"], #ox-obsah:has(> .ox-show) .ox-sek--krem:has(.ox-mriezka--4)) a.ox-produkt .ox-produkt__foto::after {
	content: ''; position: absolute; inset: 0; z-index: 2; pointer-events: none;
	background: linear-gradient(115deg, rgba(255, 255, 255, 0) 38%, rgba(255, 255, 255, .55) 50%, rgba(255, 255, 255, 0) 62%);
	transform: translateX(-120%); transition: transform .9s var(--sk-prechod);
}
html[data-tema^="21g"] :where([data-ox21="kategorie"], #ox-obsah:has(> .ox-show) .ox-sek--krem:has(.ox-mriezka--4)) .ox-produkt__foto img { transition: transform .6s var(--sk-prechod); }
html[data-tema^="21g"] :where([data-ox21="kategorie"], #ox-obsah:has(> .ox-show) .ox-sek--krem:has(.ox-mriezka--4)) .ox-produkt__telo {
	position: relative; z-index: 1; padding: 2px 18px 22px; color: #fff; gap: 4px;
}
html[data-tema^="21g"] :where([data-ox21="kategorie"], #ox-obsah:has(> .ox-show) .ox-sek--krem:has(.ox-mriezka--4)) .ox-produkt__nazov { color: #fff; }
html[data-tema^="21g"] :where([data-ox21="kategorie"], #ox-obsah:has(> .ox-show) .ox-sek--krem:has(.ox-mriezka--4)) .ox-produkt__popis { color: rgba(255, 255, 255, .84); }
/* kruhová šípka vpravo dole = jasné „dá sa kliknúť“ */
html[data-tema^="21g"] :where([data-ox21="kategorie"], #ox-obsah:has(> .ox-show) .ox-sek--krem:has(.ox-mriezka--4)) a.ox-produkt .ox-produkt__nazov::after {
	color: #fff; opacity: .9; font-size: 17px;
}
@media (hover: hover) and (pointer: fine) {
	html[data-tema^="21g"] :where([data-ox21="kategorie"], #ox-obsah:has(> .ox-show) .ox-sek--krem:has(.ox-mriezka--4)) a.ox-produkt:hover {
		transform: translateY(-8px);
		box-shadow: 0 34px 60px -26px rgba(120, 8, 0, .9), inset 0 0 0 1px rgba(255, 255, 255, .34);
	}
	html[data-tema^="21g"] :where([data-ox21="kategorie"], #ox-obsah:has(> .ox-show) .ox-sek--krem:has(.ox-mriezka--4)) a.ox-produkt:hover .ox-produkt__foto::after { transform: translateX(120%); }
		html[data-tema^="21g"] :where([data-ox21="kategorie"], #ox-obsah:has(> .ox-show) .ox-sek--krem:has(.ox-mriezka--4)) a.ox-produkt:hover .ox-produkt__nazov::after { transform: translateX(6px); opacity: 1; }
}
html[data-tema^="21g"] :where([data-ox21="kategorie"], #ox-obsah:has(> .ox-show) .ox-sek--krem:has(.ox-mriezka--4)) a.ox-produkt:focus-visible {
	outline: 3px solid #fff; outline-offset: 3px;
}

/* --- 04 PREČO MY: riadok sa pri prejdení myšou zaleje červenou -------------- */
html[data-tema^="21g"] :where([data-ox21="dovody"], #ox-obsah:has(> .ox-show) .ox-sek--krem:has(.ox-panel)) .ox-panel {
	/* oddeľovač ostáva rovná linka (oblé konce vyzerali ako rozbitý rámček);
	   zaoblenie má až červená výplň pri prejdení myšou */
	padding-inline: clamp(14px, 1.6vw, 26px); border-radius: 0;
	border-bottom-color: rgba(224, 19, 0, .22);
	transition: color .4s var(--sk-prechod);
}
html[data-tema^="21g"] :where([data-ox21="dovody"], #ox-obsah:has(> .ox-show) .ox-sek--krem:has(.ox-panel)) .ox-panel::before {
	position: relative; z-index: 1;
	transition: transform .35s var(--sk-prechod), color .35s var(--sk-prechod);
}
html[data-tema^="21g"] :where([data-ox21="dovody"], #ox-obsah:has(> .ox-show) .ox-sek--krem:has(.ox-panel)) .ox-panel > * { position: relative; z-index: 1; }
/* výplň ide zľava (::after sme prebrali z tenkej linky na celú dosku) */
html[data-tema^="21g"] :where([data-ox21="dovody"], #ox-obsah:has(> .ox-show) .ox-sek--krem:has(.ox-panel)) .ox-panel::after {
	content: ''; position: absolute; inset: 0; bottom: -1px; z-index: 0; width: auto; height: auto;
	border-radius: 16px; transform: scaleX(0); transform-origin: left center;
	background: linear-gradient(100deg, #E01300 0%, #FF2A12 100%);
	box-shadow: 0 18px 34px -24px rgba(120, 8, 0, .9);
	transition: transform .55s var(--sk-prechod);
}
@media (hover: hover) and (pointer: fine) {
	html[data-tema^="21g"] :where([data-ox21="dovody"], #ox-obsah:has(> .ox-show) .ox-sek--krem:has(.ox-panel)) .ox-panel:hover::after { width: auto; transform: scaleX(1); }
	html[data-tema^="21g"] :where([data-ox21="dovody"], #ox-obsah:has(> .ox-show) .ox-sek--krem:has(.ox-panel)) .ox-panel:hover::before { color: #fff; transform: translateX(6px); }
	html[data-tema^="21g"] :where([data-ox21="dovody"], #ox-obsah:has(> .ox-show) .ox-sek--krem:has(.ox-panel)) .ox-panel:hover .ox-h3,
	html[data-tema^="21g"] :where([data-ox21="dovody"], #ox-obsah:has(> .ox-show) .ox-sek--krem:has(.ox-panel)) .ox-panel:hover p { color: #fff; }
}

/* --- 05 KROKY: sýto červená doska, biele karty, červená plaketa čísla ------- */
html[data-tema^="21g"] :where([data-ox21-domov], #ox-obsah:has(> .ox-show)) .ox-msr-kroky {
	position: relative; isolation: isolate;
	/* horný okraj bol po bielom radiálnom svetle až #FF1600 a nadnadpis na ňom
	   klesol na 3,9:1 — začiatok prechodu je tmavší a svetlo slabšie (AA). */
	background: linear-gradient(168deg, #D11100 0%, #B00D00 58%, #8A0900 100%);
	color: #fff;
}
html[data-tema^="21g"] :where([data-ox21-domov], #ox-obsah:has(> .ox-show)) .ox-msr-kroky::before {
	content: ''; position: absolute; inset: 0; z-index: -1; pointer-events: none;
	background: radial-gradient(70% 55% at 22% 0%, rgba(255, 255, 255, .08) 0%, rgba(255, 255, 255, 0) 70%);
}
html[data-tema^="21g"] .ox-msr-kroky .ox-h2,
html[data-tema^="21g"] .ox-msr-kroky .ox-oko,
html[data-tema^="21g"] .ox-msr-kroky .ox-h3 { color: #fff; }
html[data-tema^="21g"] .ox-msr-kroky .ox-oko::after { background: rgba(255, 255, 255, .55); }
html[data-tema^="21g"] .ox-msr-kroky .ox-text-tlmeny { color: #fff; }
html[data-tema^="21g"] .ox-msr-krok {
	position: relative; padding: 18px 20px 24px; border-radius: 22px;
	background: rgba(90, 4, 0, .28);                 /* tmavý závoj → biely text nad AA */
	box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .22);
	transition: transform .5s var(--sk-prechod), background .4s var(--sk-prechod), box-shadow .5s var(--sk-prechod);
}
html[data-tema^="21g"] .ox-msr-krok__foto { border-radius: 16px; overflow: hidden; background: #fff; }
html[data-tema^="21g"] .ox-msr-krok__foto img { mix-blend-mode: multiply; transition: transform .6s var(--sk-prechod); }
html[data-tema^="21g"] :where([data-ox21-domov], #ox-obsah:has(> .ox-show)) .ox-msr-krok__cislo {
	position: absolute; top: -14px; left: 18px; z-index: 2;
	width: 54px; height: 54px; display: grid; place-items: center;
	border-radius: 50%; background: #fff; color: var(--sk-akcent-tmavy);
	font-size: 22px; line-height: 1; opacity: 1; -webkit-text-stroke: 0;
	box-shadow: 0 14px 26px -14px rgba(0, 0, 0, .6);
	transition: transform .45s var(--sk-prechod);
}
@media (hover: hover) and (pointer: fine) {
	html[data-tema^="21g"] .ox-msr-krok:hover { transform: translateY(-8px); background: rgba(90, 4, 0, .42); box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .42), 0 32px 54px -28px rgba(0, 0, 0, .7); }
	html[data-tema^="21g"] .ox-msr-krok:hover .ox-msr-krok__foto img { transform: scale(1.06); }
	html[data-tema^="21g"] .ox-msr-krok:hover .ox-msr-krok__cislo { transform: scale(1.08) rotate(-4deg); }
}
/* --- prah „Celý sortiment →“ na červenej doske = biele tlačidlo-pás --------- */
html[data-tema^="21g"] .ox-21-prah { border-top: 1px solid rgba(255, 255, 255, .28); }
html[data-tema^="21g"] .ox-21-prah__odkaz.ox-btn {
	color: #fff; border-bottom-color: transparent;
}
html[data-tema^="21g"] .ox-21-prah__odkaz.ox-btn .ox-21-prah__sip {
	display: inline-grid; place-items: center; width: 46px; height: 46px; border-radius: 50%;
	border: 1.5px solid rgba(255, 255, 255, .6); background: rgba(255, 255, 255, .1);
	transition: transform .45s var(--sk-prechod), background .35s var(--sk-prechod), color .35s var(--sk-prechod), border-color .35s var(--sk-prechod);
}
@media (hover: hover) and (pointer: fine) {
	html[data-tema^="21g"] .ox-21-prah__odkaz.ox-btn:hover { color: #fff; background: none; }
	html[data-tema^="21g"] .ox-21-prah__odkaz.ox-btn:hover .ox-21-prah__sip { transform: translateX(8px); background: #fff; border-color: #fff; color: var(--sk-akcent-tmavy); }
}

/* --- päta: odkazy s červeným podčiarknutím zľava --------------------------- */
html[data-tema^="21g"] #ox-pata .ox-pata__stlpec h4 { color: #fff; }
html[data-tema^="21g"] #ox-pata .ox-pata__stlpec ul a {
	position: relative; display: inline-block; padding-bottom: 2px; text-decoration: none;
}
html[data-tema^="21g"] #ox-pata .ox-pata__stlpec ul a::after {
	content: ''; position: absolute; left: 0; right: 0; bottom: 0; height: 2px;
	background: var(--sk-akcent); transform: scaleX(0); transform-origin: left center;
	transition: transform .4s var(--sk-prechod);
}
@media (hover: hover) and (pointer: fine) {
	html[data-tema^="21g"] #ox-pata .ox-pata__stlpec ul a:hover { color: #fff; }
	html[data-tema^="21g"] #ox-pata .ox-pata__stlpec ul a:hover::after { transform: scaleX(1); }
}

@media (prefers-reduced-motion: reduce) {
	html[data-tema^="21g"] a.ox-produkt, html[data-tema^="21g"] .ox-msr-krok,
	html[data-tema^="21g"] .ox-panel::after, html[data-tema^="21g"] .ox-produkt__foto img { transition: none !important; }
}
/* --- 28b) NoirG spodok: doladenie po kontrole screenshotov ------------------ */
/* mobil: štvorcové okno robilo z dlaždice vežu — nižší pomer a menšie odsadenie */
@media (max-width: 900px) {
	html[data-tema^="21g"] :where([data-ox21="kategorie"], #ox-obsah:has(> .ox-show) .ox-sek--krem:has(.ox-mriezka--4)) .ox-produkt__foto { aspect-ratio: 4 / 3 !important; margin: 10px; }
	html[data-tema^="21g"] :where([data-ox21="kategorie"], #ox-obsah:has(> .ox-show) .ox-sek--krem:has(.ox-mriezka--4)) .ox-produkt__telo { padding: 2px 14px 16px; }
}
/* prah „Celý sortiment →“: šípka bola na červenej sotva viditeľná */
html[data-tema^="21g"] .ox-21-prah__odkaz.ox-btn .ox-21-prah__sip {
	background: #fff; border-color: #fff; color: var(--sk-akcent-tmavy);
	box-shadow: 0 10px 22px -10px rgba(0, 0, 0, .55);
}
html[data-tema^="21g"] .ox-21-prah__odkaz.ox-btn { font-size: clamp(22px, 2.6vw, 34px); }
@media (hover: hover) and (pointer: fine) {
	html[data-tema^="21g"] .ox-21-prah__odkaz.ox-btn:hover .ox-21-prah__sip { transform: translateX(10px) scale(1.06); }
}
/* pod prahom ostávalo príliš veľa prázdnej červene pred švom päty */
html[data-tema^="21g"] :where([data-ox21-domov], #ox-obsah:has(> .ox-show)) .ox-msr-kroky {
	padding-bottom: clamp(48px, 6vw, 92px);
}

/* --- 28c) NoirG: B2B widget („Nakupujete pre kaviareň…“) -------------------
   Bol to tmavohnedý obdĺžnik s drobnými štyrmi stĺpčekmi, v ktorých sa lámali
   slová („OBJEDNÁVKA V E-SHOPE“) a vpravo dole ostávala prázdna plocha.
   Po novom: sýto červená doska ako v krokoch, cesta v štyroch kartách s bielou
   číselnou plaketou a tlačidlá, ktoré reagujú. ------------------------------ */
html[data-tema^="21g"] .ox-show__b2b {
	position: relative; isolation: isolate; overflow: hidden;
	background: linear-gradient(150deg, #E01300 0%, #B70E00 52%, #8E0A00 100%);
	border-radius: 26px; align-items: stretch;
	box-shadow: 0 34px 64px -34px rgba(120, 8, 0, .85), inset 0 0 0 1px rgba(255, 255, 255, .16);
}
html[data-tema^="21g"] .ox-show__b2b::before {
	content: ''; position: absolute; inset: 0; z-index: -1; pointer-events: none;
	background: radial-gradient(60% 60% at 12% 0%, rgba(255, 255, 255, .2) 0%, rgba(255, 255, 255, 0) 70%);
}
html[data-tema^="21g"] .ox-show__b2b > div { align-self: center; }
html[data-tema^="21g"] .ox-show__cesta {
	/* akt 2 vedie nad cestou deliacu linku (`border-top`) — mala zmysel pri štyroch
	   stĺpcoch, nad samostatnými kartami visela vo vzduchu (Peter 15. 9.). */
	align-content: start; align-self: center; gap: 12px; border-top: 0;
}
html[data-tema^="21g"] .ox-show__cesta li {
	/* závoj je TMAVÝ, nie svetlý: svetlý zosvetľoval červenú a biely text klesal
	   na ~3,6:1 (pod AA). Tmavý dá 6,3:1 a karta pôsobí bohatšie. */
	padding: 16px; border-radius: 18px; min-height: 0; gap: 8px; align-content: start;
	background: rgba(90, 4, 0, .3); border: 1px solid rgba(255, 255, 255, .24);
	transition: transform .45s var(--sk-prechod), background .35s var(--sk-prechod), border-color .35s var(--sk-prechod);
}
/* plaketa čísla ostáva v toku (absolútna sa prekrývala s nadpisom kroku) */
html[data-tema^="21g"] .ox-show__cesta li::before {
	width: 34px; height: 34px; display: grid; place-items: center; border-radius: 50%;
	background: #fff; color: var(--sk-akcent-tmavy); font-size: 15px;
	transition: transform .4s var(--sk-prechod);
}
/* „Objednávka v e-shope“ je jediný dvojriadkový nadpis — bez rezervy by popis
   v tejto karte začínal nižšie než v ostatných troch. */
html[data-tema^="21g"] .ox-show__cesta b { font-size: 13.5px; letter-spacing: .04em; hyphens: none; min-height: 2.56em; }
@media (max-width: 900px) { html[data-tema^="21g"] .ox-show__cesta b { min-height: 0; } }
html[data-tema^="21g"] .ox-show__cesta small { color: #fff; }
@media (hover: hover) and (pointer: fine) {
	html[data-tema^="21g"] .ox-show__cesta li:hover { transform: translateY(-5px); background: rgba(90, 4, 0, .45); border-color: rgba(255, 255, 255, .5); }
	html[data-tema^="21g"] .ox-show__cesta li:hover::before { transform: scale(1.1) rotate(-5deg); }
}
/* tlačidlá: biele plné + biely obrys, obe s pohybom */
html[data-tema^="21g"] .ox-show__akcie .ox-btn--hlavne {
	background: #fff; color: var(--sk-akcent-tmavy); border-color: #fff;
	box-shadow: 0 14px 30px -16px rgba(0, 0, 0, .6);
	transition: transform .35s var(--sk-prechod), box-shadow .35s var(--sk-prechod), background .3s var(--sk-prechod);
}
html[data-tema^="21g"] .ox-show__akcie .ox-btn--obrys { border-color: rgba(255, 255, 255, .7); color: #fff; transition: transform .35s var(--sk-prechod), background .3s var(--sk-prechod), border-color .3s var(--sk-prechod); }
@media (hover: hover) and (pointer: fine) {
	html[data-tema^="21g"] .ox-show__akcie .ox-btn--hlavne:hover { transform: translateY(-3px); box-shadow: 0 22px 40px -18px rgba(0, 0, 0, .7); }
	html[data-tema^="21g"] .ox-show__akcie .ox-btn--obrys:hover { transform: translateY(-3px); background: rgba(255, 255, 255, .16); border-color: #fff; }
}
/* --- sekčný odkaz „Všetko →“ = malá červená pilulka -------------------------- */
html[data-tema^="21g"] .ox-hlava-sekcie > .ox-btn--tiche {
	border: 1.5px solid rgba(224, 19, 0, .45); border-radius: 999px; padding: 9px 16px;
	color: var(--sk-akcent-tmavy); text-decoration: none;
	transition: background .3s var(--sk-prechod), color .3s var(--sk-prechod), border-color .3s var(--sk-prechod), transform .3s var(--sk-prechod);
}
@media (hover: hover) and (pointer: fine) {
	html[data-tema^="21g"] .ox-hlava-sekcie > .ox-btn--tiche:hover { background: var(--sk-akcent-tmavy); border-color: var(--sk-akcent-tmavy); color: #fff; transform: translateY(-2px); }
}
@media (prefers-reduced-motion: reduce) {
	html[data-tema^="21g"] .ox-show__cesta li, html[data-tema^="21g"] .ox-show__akcie .ox-btn { transition: none !important; }
}

/* --- 28d) NoirG: zoznam faktov v kapitole 02 -------------------------------
   Ikonky sú drobná čiarová kresba (ikona-*.svg) a po výmene kariet kolesa za
   farebné symboly pôsobili ako cudzí prvok. Dostanú červenú plaketu — malé
   ikony ostávajú čiarové (na 30 px sú čitateľné), ale hovoria tou istou rečou.
   Riadok navyše reaguje na myš: plaketa sa zaleje, text sa posunie. --------- */
html[data-tema^="21g"] :where([data-ox21-domov], #ox-obsah:has(> .ox-show)) .ox-show__fakt {
	padding-inline: clamp(10px, 1.2vw, 18px); border-radius: 14px;
	transition: background .35s var(--sk-prechod);
}
html[data-tema^="21g"] :where([data-ox21-domov], #ox-obsah:has(> .ox-show)) .ox-show__fakt i {
	width: 46px; height: 46px; border-radius: 50%; place-items: center;
	background: rgba(255, 217, 214, .6); box-shadow: inset 0 0 0 1px rgba(224, 19, 0, .18);
	transform: none; align-self: center;
	transition: background .35s var(--sk-prechod), transform .4s var(--sk-prechod), box-shadow .35s var(--sk-prechod);
}
html[data-tema^="21g"] :where([data-ox21-domov], #ox-obsah:has(> .ox-show)) .ox-show__fakt i img { width: 26px; height: 26px; }
html[data-tema^="21g"] :where([data-ox21-domov], #ox-obsah:has(> .ox-show)) .ox-show__fakt {
	grid-template-columns: 46px minmax(0, 1fr); align-items: center;
}
@media (hover: hover) and (pointer: fine) {
	html[data-tema^="21g"] :where([data-ox21-domov], #ox-obsah:has(> .ox-show)) .ox-show__fakt:hover { background: rgba(255, 217, 214, .35); }
	html[data-tema^="21g"] :where([data-ox21-domov], #ox-obsah:has(> .ox-show)) .ox-show__fakt:hover i { background: var(--sk-akcent-tmavy); box-shadow: 0 10px 22px -12px rgba(140, 12, 0, .8); transform: scale(1.06) rotate(-4deg); }
	html[data-tema^="21g"] :where([data-ox21-domov], #ox-obsah:has(> .ox-show)) .ox-show__fakt:hover i img { filter: brightness(0) invert(1); }
	html[data-tema^="21g"] :where([data-ox21-domov], #ox-obsah:has(> .ox-show)) .ox-show__fakt:hover b { color: var(--sk-akcent-tmavy); }
}

/* --- 28e) OPRAVA (Peter 15. 9.): prvá karta cesty mala text nalepený na okraj -
   akt 2 robí z cesty štyri stĺpce oddelené linkami a prvej (na mobile každej
   nepárnej) berie ľavé odsadenie: `li:first-child { padding-left: 0 }`. To je
   o jednu pseudo-triedu špecifickejšie než náš predpis pre karty, takže nám
   prebíjalo `padding`. Tu to vraciame pre všetky karty NoirG. ------------- */
html[data-tema^="21g"] .ox-show__cesta li:first-child,
html[data-tema^="21g"] .ox-show__cesta li:last-child,
html[data-tema^="21g"] .ox-show__cesta li:nth-child(odd),
html[data-tema^="21g"] .ox-show__cesta li:nth-child(-n+2) {
	padding: 16px; border: 1px solid rgba(255, 255, 255, .24); border-radius: 18px;
}
@media (max-width: 900px) {
	html[data-tema^="21g"] .ox-show__cesta li:first-child,
	html[data-tema^="21g"] .ox-show__cesta li:last-child,
	html[data-tema^="21g"] .ox-show__cesta li:nth-child(odd),
	html[data-tema^="21g"] .ox-show__cesta li:nth-child(-n+2) { padding: 16px; border: 1px solid rgba(255, 255, 255, .24); }
}

/* --- 29) POKLADŇA 2.0 (16. 9. 2026): typ zákazníka, firemné polia, marketing blok, QR ---- */
.ox-typ { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.ox-typ__volba { display: grid; gap: 4px; padding: 14px 16px 14px 44px; position: relative; border: 1.5px solid var(--sk-linka); border-radius: 14px; cursor: pointer; transition: border-color .25s, background .25s; }
.ox-typ__volba input { position: absolute; left: 16px; top: 18px; accent-color: var(--sk-akcent); }
.ox-typ__volba b { font-size: 15px; }
.ox-typ__volba small { color: var(--sk-text-tlmeny); font-size: 12.5px; line-height: 1.4; }
.ox-typ__volba--aktivna { border-color: var(--sk-akcent); background: rgba(255, 217, 214, .3); }
@media (max-width: 620px) { .ox-typ { grid-template-columns: 1fr; } }
.ox-firma-polia { padding: 12px 14px 4px; border-radius: 12px; background: rgba(255, 217, 214, .25); }
.ox-mkt__popis { margin: -4px 0 12px; color: var(--sk-text-tlmeny); font-size: 14px; }
.ox-mkt__radok { display: grid; grid-template-columns: 56px minmax(0, 1fr) auto; gap: 14px; align-items: center; padding: 10px 0; border-top: 1px solid var(--sk-linka); }
.ox-mkt__radok:first-of-type { border-top: 0; }
.ox-mkt__radok--caka { opacity: .55; pointer-events: none; }
.ox-mkt__obr { width: 56px; height: 56px; object-fit: contain; border-radius: 10px; background: #fff; display: block; }
.ox-mkt__telo { display: grid; gap: 4px; }
.ox-mkt__telo small { color: var(--sk-text-tlmeny); font-size: 12.5px; }
.ox-mkt__vyber { max-width: 260px; font-size: 13.5px; padding: 8px 10px; }
.ox-mkt--marketing { background: rgba(255, 217, 214, .3); }
.ox-mkt__mn output { min-width: 32px; text-align: center; display: inline-block; font-weight: 700; }
.ox-qr { margin-bottom: 22px; }
html[data-tema^="21"] .ox-mkt__radok { border-top-color: rgba(224, 19, 0, .16); }

/* --- 30) správa validátora pomeru (Xcount-validator) v našom šate ------------ */
.ox-hlaska--validator { padding: 0; background: none; border: 0; }
.ox-bt { background: #fff; border: 1.5px solid rgba(224, 19, 0, .35); border-radius: 16px; padding: 18px 20px; color: var(--sk-text); }
.ox-bt .bt-notice-header { display: flex; align-items: center; gap: 10px; margin-bottom: 8px; }
.ox-bt .bt-notice-icon { width: 30px; height: 30px; border-radius: 50%; background: rgba(255, 217, 214, .7); display: grid; place-items: center; color: var(--sk-akcent-tmavy); }
.ox-bt .bt-notice-icon svg { width: 18px; height: 18px; }
.ox-bt .bt-notice-title { font-family: var(--sk-font-nadpis); text-transform: var(--sk-nadpis-transform); letter-spacing: var(--sk-nadpis-spacing); font-size: 20px; color: var(--sk-akcent-tmavy); }
.ox-bt .bt-intro { margin: 0 0 8px; font-size: 14px; line-height: 1.55; }
.ox-bt .bt-details { margin: 0 0 12px; font-size: 13px; }
.ox-bt .bt-details summary { cursor: pointer; color: var(--sk-akcent-tmavy); font-weight: 600; }
.ox-bt .bt-details-body { margin: 8px 0 0; color: var(--sk-text-tlmeny); line-height: 1.5; }
.ox-bt .bt-head { margin: 8px 0 6px; font-weight: 700; font-size: 13px; letter-spacing: .06em; text-transform: uppercase; color: var(--sk-text-tlmeny); }
.ox-bt .bt-breakdown { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; }
.ox-bt .bt-row { padding: 10px 12px; border-radius: 12px; background: rgba(0, 0, 0, .03); }
.ox-bt .bt-row-missing { background: rgba(255, 217, 214, .35); }
.ox-bt .bt-row-main { display: flex; align-items: center; gap: 10px; }
.ox-bt .bt-ico { width: 20px; height: 20px; flex: 0 0 20px; }
.ox-bt .bt-ico-ok { color: #1F8F30; } .ox-bt .bt-ico-bad { color: var(--sk-akcent-tmavy); }
.ox-bt .bt-row-text { flex: 1; min-width: 0; }
.ox-bt .bt-row-title { font-weight: 700; font-size: 14px; }
.ox-bt .bt-unit { font-weight: 400; color: var(--sk-text-tlmeny); font-size: 12px; }
.ox-bt .bt-row-need { font-size: 12.5px; color: var(--sk-text-tlmeny); }
.ox-bt .bt-status { font-size: 12.5px; white-space: nowrap; padding: 4px 10px; border-radius: 999px; background: rgba(0, 0, 0, .05); }
.ox-bt .bt-status-ok { background: rgba(31, 143, 48, .12); color: #1F8F30; }
.ox-bt .bt-status-bad { background: rgba(224, 19, 0, .12); color: var(--sk-akcent-tmavy); }
.ox-bt .bt-row-action { margin-top: 8px; padding-left: 30px; }
.ox-bt .bt-quick-add { appearance: none; border: 0; cursor: pointer; border-radius: 999px; padding: 8px 14px; font: 700 13px/1 var(--sk-font-text); background: var(--sk-akcent); color: #fff; display: inline-flex; align-items: center; gap: 6px; transition: transform .2s, background .2s; }
.ox-bt .bt-quick-add:hover { background: var(--sk-akcent-tmavy); transform: translateY(-1px); }
.ox-bt .bt-quick-add:disabled { opacity: .5; cursor: default; }
.ox-bt .bt-plus { font-size: 15px; }

/* --- 31) „do dopravy zadarmo“ (prah podľa typu zákazníka) ------------------- */
.ox-dz { display: grid; gap: 6px; margin-top: 14px; padding: 12px 14px; border-radius: 12px; background: rgba(255, 217, 214, .35); font-size: 13.5px; }
.ox-dz__ok { color: #1F8F30; }
.ox-dz__pas { display: block; height: 6px; border-radius: 999px; background: rgba(0, 0, 0, .08); overflow: hidden; }
.ox-dz__pas i { display: block; height: 100%; background: linear-gradient(90deg, #FF6A52, var(--sk-akcent-tmavy)); border-radius: 999px; transition: width .6s var(--sk-prechod); }
.ox-dz small { color: var(--sk-text-tlmeny); font-size: 12px; }

/* --- 32) „Môj účet“ 1:1 so starým webom + výber prevádzok + jazyk (16. 9. 2026) --- */
.ox-ucet-menu { display: flex; gap: 8px; flex-wrap: wrap; margin: 20px 0 30px; }
.ox-ucet-menu .ox-chip small { opacity: .75; margin-left: 4px; }
.ox-dlazdice { display: grid; grid-template-columns: repeat(auto-fit, minmax(230px, 1fr)); gap: 14px; }
.ox-dlazdica { display: flex; flex-direction: column; gap: 6px; padding: 18px 20px; border-radius: 16px; background: var(--sk-povrch, #fff); border: 1px solid rgba(0, 0, 0, .06); box-shadow: 0 6px 22px rgba(0, 0, 0, .05); text-decoration: none; color: inherit; transition: transform .25s var(--sk-prechod), box-shadow .25s var(--sk-prechod), border-color .25s; }
a.ox-dlazdica:hover { transform: translateY(-2px); box-shadow: 0 12px 30px rgba(255, 22, 0, .12); border-color: rgba(255, 22, 0, .25); }
.ox-dlazdica__oko { font-size: 11px; letter-spacing: .14em; text-transform: uppercase; color: var(--sk-akcent, #FF1600); font-weight: 800; }
.ox-dlazdica__cislo { font: 800 34px/1 var(--sk-pismo-nadpis, inherit); }
.ox-dlazdica__text { color: var(--sk-text-tlmeny); font-size: 13.5px; }
.ox-dlazdica--cislo { align-items: flex-start; }
.ox-udaje { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 10px 22px; margin: 0 0 22px; }
.ox-udaje__pole { padding: 10px 0; border-bottom: 1px solid rgba(0, 0, 0, .07); }
.ox-udaje__pole small { display: block; font-size: 11px; letter-spacing: .1em; text-transform: uppercase; color: var(--sk-text-tlmeny); margin-bottom: 3px; }
.ox-udaje__pole b { font-weight: 600; }
.ox-info { display: flex; gap: 10px; align-items: flex-start; padding: 12px 14px; border-radius: 12px; background: rgba(255, 217, 214, .35); font-size: 13.5px; margin-bottom: 18px; }
.ox-info__i { flex: 0 0 22px; height: 22px; border-radius: 50%; background: var(--sk-akcent, #FF1600); color: #fff; font-weight: 800; text-align: center; line-height: 22px; font-size: 13px; }
.ox-zastupca { display: flex; gap: 18px; align-items: flex-start; padding: 18px 20px; border-radius: 16px; background: var(--sk-povrch, #fff); border: 1px solid rgba(0, 0, 0, .06); max-width: 620px; }
.ox-zastupca__foto { flex: 0 0 84px; width: 84px; height: 84px; border-radius: 50%; object-fit: cover; background: rgba(255, 22, 0, .08); display: grid; place-items: center; font-size: 30px; }
.ox-zastupca p { margin: 4px 0; }
.ox-zastupca a { color: inherit; }
.ox-qr-obj { padding: 18px 20px; border-radius: 16px; background: var(--sk-povrch, #fff); border: 1px solid rgba(0, 0, 0, .06); margin-bottom: 18px; }
.ox-qr-obj__hlava { display: flex; justify-content: space-between; gap: 12px; flex-wrap: wrap; align-items: baseline; margin-bottom: 8px; }
.ox-qr-obj .co89qrp-block, .ox-qr-obj .co89qrp-panel { margin: 0; }
.ox-prev-vyber__riadok { display: flex; align-items: center; gap: 12px; padding: 10px 12px; border: 1px solid rgba(0, 0, 0, .08); border-radius: 12px; margin-bottom: 8px; cursor: pointer; }
.ox-prev-vyber__riadok--aktivna { border-color: rgba(255, 22, 0, .35); background: rgba(255, 22, 0, .04); }
.ox-prev-vyber__riadok input { width: 18px; height: 18px; accent-color: var(--sk-akcent, #FF1600); }
.ox-prev-vyber__riadok span:not(.ox-odznak):not(.ox-prev-vyber__pocet) { display: flex; flex-direction: column; flex: 1; }
.ox-prev-vyber__riadok small { color: var(--sk-text-tlmeny); font-size: 12px; }
.ox-prev-vyber__pocet { font-size: 12px; color: var(--sk-text-tlmeny); white-space: nowrap; }
.ox-prev-vyber__akcie { display: flex; gap: 10px; justify-content: flex-end; margin-top: 12px; }
.ox-jazyk { display: inline-flex; gap: 2px; margin-left: 10px; vertical-align: middle; }
.ox-jazyk__btn { border: 1px solid rgba(255, 255, 255, .25); background: transparent; color: inherit; font: 700 11px/1 inherit; letter-spacing: .08em; padding: 5px 7px; border-radius: 6px; cursor: pointer; opacity: .75; }
.ox-jazyk__btn:hover { opacity: 1; }
.ox-jazyk__btn--aktivny { opacity: 1; background: var(--sk-akcent, #FF1600); border-color: var(--sk-akcent, #FF1600); color: #fff; }
#ox-gte, .goog-te-banner-frame, .skiptranslate iframe, #goog-gt-tt, .goog-te-balloon-frame { display: none !important; }
body { top: 0 !important; }
.ox-tabulka .ox-btn + .ox-btn { margin-left: 4px; }
@media (max-width: 640px) { .ox-zastupca { flex-direction: column; } .ox-dlazdica__cislo { font-size: 28px; } }

/* --- 33) registrácia + pokladňa 1:1 so starým webom (16. 9. 2026) ------------ */
[hidden] { display: none !important; }
.ox-kroky button.ox-krok { background: none; border: 0; font: inherit; color: inherit; cursor: pointer; }
.ox-krok__text { display: inline-flex; flex-direction: column; line-height: 1.15; text-align: left; }
.ox-krok__text small { font-weight: 500; font-size: 11px; color: var(--sk-text-tlmeny); }
.ox-krok-nadpis { display: flex; align-items: center; gap: 10px; margin: 0 0 16px; }
.ox-krok-nadpis .ox-krok__cislo { width: 30px; height: 30px; border-radius: 50%; background: var(--sk-akcent, #FF1600); color: #fff; display: inline-grid; place-items: center; font-size: 14px; }
.ox-label__pozn { font-weight: 500; text-transform: none; letter-spacing: 0; color: var(--sk-text-tlmeny); }
.ox-hint { display: block; margin-top: 5px; font-size: 12.5px; color: var(--sk-text-tlmeny); }
.ox-input--zamknute { background: rgba(0, 0, 0, .035) !important; color: var(--sk-text-tlmeny); cursor: default; }
.ox-telefon { display: flex; gap: 8px; }
.ox-telefon__cc { flex: 0 0 150px; }
.ox-telefon .ox-input { flex: 1 1 auto; min-width: 0; }
.ox-pill { display: inline-block; margin-top: 8px; padding: 6px 12px; border-radius: 999px; font-size: 13px; font-weight: 600; background: rgba(0, 0, 0, .06); }
.ox-pill--ok { background: rgba(31, 143, 48, .12); color: #1F8F30; }
.ox-pill--chyba { background: rgba(255, 22, 0, .1); color: var(--sk-akcent-tmavy, #D11100); }
.ox-pill--nedostupne, .ox-pill--nacitava { background: rgba(224, 168, 0, .14); color: #8a6400; }
.ox-nezhoda, .ox-manual { padding: 12px 14px; border-radius: 12px; background: #fff7e0; border-left: 5px solid #e0a800; font-size: 13.5px; }
.ox-potvrdenie { padding: 16px 18px; border-radius: 14px; background: rgba(255, 22, 0, .05); border: 1px dashed rgba(255, 22, 0, .35); }
.ox-potvrdenie__q { margin: 0 0 12px; font-weight: 700; }
.ox-potvrdenie__btns { display: flex; gap: 10px; flex-wrap: wrap; }
.ox-reg-akcie { display: flex; gap: 12px; flex-wrap: wrap; justify-content: space-between; align-items: center; margin-top: 8px; }
.ox-prev-karta { margin-bottom: 14px; }
.ox-prev-karta__hlava { display: flex; justify-content: space-between; align-items: center; gap: 12px; margin-bottom: 12px; }
.ox-prev-karta__zmaz { font-size: 14px; }
.ox-prev-karta__zamok { margin: -4px 0 12px; padding: 8px 12px; border-radius: 10px; background: rgba(31, 143, 48, .1); color: #1F8F30; font-size: 13px; font-weight: 600; }
.ox-prev-karta--potvrdena { border-color: rgba(31, 143, 48, .35); }
.ox-prev-karta__akcie { display: flex; justify-content: flex-end; }
.ox-konfety { position: fixed; inset: 0; pointer-events: none; z-index: 50; overflow: hidden; }
.ox-konfety i { position: absolute; top: -12px; left: calc(var(--i) * 2.8%); width: 9px; height: 14px; background: hsl(calc(var(--i) * 37deg), 90%, 55%); opacity: .9; animation: ox-konf 2.6s cubic-bezier(.3, .6, .4, 1) calc(var(--i) * 45ms) 1 forwards; border-radius: 2px; }
@keyframes ox-konf { 0% { transform: translateY(0) rotate(0); opacity: 1; } 100% { transform: translateY(105vh) rotate(720deg); opacity: 0; } }
/* pokladňa: košíky prevádzok */
.ox-prev-kosik__hlava { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.ox-prev-kosik__hlava span:first-of-type { color: var(--sk-akcent, #FF1600); }
html .ox-prev-kosik .ox-riadok { display: grid !important; grid-template-columns: 64px minmax(0, 1fr) auto auto minmax(96px, auto) !important; grid-template-areas: none !important; align-items: center; gap: 10px 14px; padding: 12px 0; border-bottom: 1px solid rgba(0, 0, 0, .07); }
html .ox-prev-kosik .ox-riadok > * { grid-area: auto !important; }
.ox-prev-kosik .ox-riadok__foto { width: 64px; height: 64px; }
.ox-prev-kosik .ox-riadok__telo { min-width: 0; }
.ox-prev-kosik .ox-riadok__nazov { font-size: 15px; margin: 0; }
.ox-prev-kosik .ox-riadok__cena { text-align: right; font-weight: 800; color: var(--sk-akcent, #FF1600); }
@media (max-width: 640px) { .ox-prev-kosik .ox-riadok { grid-template-columns: 52px minmax(0, 1fr) auto; } .ox-prev-kosik .ox-riadok__zmaz { grid-column: 3; } .ox-prev-kosik .ox-riadok__cena { grid-column: 2 / -1; text-align: left; } }
.ox-riadok__mn { margin-inline: 8px; }
.ox-riadok__zmaz { font-size: 14px; opacity: .7; }
.ox-riadok__zmaz:hover { opacity: 1; color: var(--sk-akcent, #FF1600); }
.ox-riadok__cena small { display: block; font-size: 10px; color: var(--sk-text-tlmeny); font-weight: 500; text-align: right; }
.ox-riadok--caka { opacity: .5; pointer-events: none; }
.ox-prev-kosik__spolu { text-align: right; margin-top: 10px; font-size: 15px; }
.ox-prev-kosik__spolu b { color: var(--sk-akcent, #FF1600); font-size: 18px; }
.ox-bt-box { margin-top: 14px; border: 1.5px solid rgba(255, 22, 0, .45); border-radius: 14px; overflow: hidden; background: #fff; }
.ox-bt-box__hlava { background: var(--sk-akcent, #FF1600); color: #fff; padding: 9px 14px; font-size: 13px; letter-spacing: .04em; text-transform: uppercase; font-weight: 800; }
.ox-bt-box .ox-bt { padding: 12px 14px; }
.ox-bt-box--blik { animation: ox-blik .9s ease; }
@keyframes ox-blik { 0%, 100% { box-shadow: none; } 40% { box-shadow: 0 0 0 5px rgba(255, 22, 0, .35); } }
.ox-kupon__riadok { display: flex; gap: 10px; flex-wrap: wrap; }
.ox-kupon__riadok .ox-input { flex: 1 1 220px; }
.ox-kupon__aktivne { margin: 10px 0 0; font-size: 14px; }
.ox-kupon__zrus { border: 0; background: none; cursor: pointer; color: var(--sk-akcent, #FF1600); font-weight: 700; }
.ox-suhlas { border: 1.5px dashed rgba(255, 22, 0, .45); }
.ox-suhlas p { font-size: 13.5px; }
.ox-suhlas .ox-check { margin-top: 8px; font-weight: 700; }
.ox-povinne { color: var(--sk-akcent, #FF1600); }
.ox-mkt__dd { position: relative; }
.ox-mkt__menu { position: absolute; right: 0; top: calc(100% + 6px); z-index: 20; min-width: 220px; display: flex; flex-direction: column; background: #fff; border-radius: 12px; box-shadow: 0 14px 40px rgba(0, 0, 0, .18); border: 1px solid rgba(0, 0, 0, .06); overflow: hidden; }
.ox-mkt__menu button { border: 0; background: none; text-align: left; padding: 10px 14px; font: inherit; cursor: pointer; }
.ox-mkt__menu button:hover { background: rgba(255, 22, 0, .07); }
.ox-sum-block .ox-h3 { margin-top: 0; }
.ox-sum-row { display: flex; justify-content: space-between; gap: 14px; padding: 7px 0; border-bottom: 1px solid rgba(0, 0, 0, .07); font-size: 14px; }
.ox-sum-row span { color: var(--sk-text-tlmeny); }
.ox-sum-row b { font-weight: 600; text-align: right; }
.ox-sum-prev { padding: 10px 0; border-bottom: 1px solid rgba(0, 0, 0, .07); font-size: 14px; }
.ox-sum-prev small { display: block; color: var(--sk-text-tlmeny); margin-top: 3px; }
.ox-suhrn__rozpis { margin: 10px 0 4px; padding-top: 10px; border-top: 1px dashed rgba(0, 0, 0, .12); font-size: 13.5px; }
.ox-suhrn__rozpis > b { display: block; margin-bottom: 4px; font-size: 12px; letter-spacing: .08em; text-transform: uppercase; color: var(--sk-text-tlmeny); }
.ox-platba-volba span { display: flex; flex-direction: column; }
.ox-platba-volba small { color: var(--sk-text-tlmeny); font-size: 12.5px; }
@media (max-width: 640px) { .ox-telefon__cc { flex-basis: 120px; } .ox-riadok__mn { margin-inline: 4px; } .ox-potvrdenie__btns .ox-btn { width: 100%; } }

/* --- 34) HORNÁ LIŠTA 1:1 so starým webom (17. 9. 2026) ----------------------------
   biely pás (fixed) so sociálnymi ikonami a pilulkou · červený pás s logom a menu ·
   mini-košík pod ikonou · panel jazyka · panel „Vyžiadať zástupcu“ · mobil */
:root { --ox-lista-hore-h: 46px; }
html { scroll-padding-top: var(--ox-lista-hore-h); }
body { padding-top: var(--ox-lista-hore-h); }
#ox-lista-hore { position: fixed; top: 0; left: 0; right: 0; z-index: 99980; height: var(--ox-lista-hore-h); background: #fff; font-family: Anton, Impact, sans-serif; transition: box-shadow .25s ease; }
html.ox-odscrollovane #ox-lista-hore { box-shadow: 0 4px 18px rgba(0, 0, 0, .10); }
.ox-lista-hore__vnutro { height: 100%; display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 0 12px 0 20px; }
.ox-socialne { display: flex; align-items: center; gap: 8px; }
.ox-socialne__ikona, .ox-pilulka__sekcia { display: inline-flex; align-items: center; justify-content: center; height: 38px; min-width: 38px; background: #fff; border: 1px solid rgba(255, 22, 0, .18); border-radius: 999px; color: #1a1a1a; text-decoration: none; cursor: pointer; font: inherit; padding: 0; transition: background .15s ease, border-color .15s ease, box-shadow .15s ease; }
.ox-socialne__ikona { width: 38px; }
.ox-socialne__ikona svg { width: 17px; height: 17px; color: #FF1600; fill: #FF1600; }
.ox-socialne__ikona:hover, .ox-pilulka__sekcia:hover { background: rgba(255, 22, 0, .06); border-color: rgba(255, 22, 0, .35); }
.ox-pilulka { display: flex; align-items: center; gap: 8px; }
.ox-pilulka__sekcia { gap: 8px; padding: 0 14px; }
.ox-pilulka__kruh { width: 38px; padding: 0; border-radius: 50%; position: relative; }
.ox-pilulka__ikona { display: inline-flex; width: 18px; height: 18px; color: #FF1600; flex: 0 0 auto; }
.ox-pilulka__ikona svg { width: 18px; height: 18px; }
.ox-pilulka__stlpec { display: flex; flex-direction: column; align-items: flex-start; line-height: 1; gap: 3px; white-space: nowrap; }
.ox-pilulka__popisok { font: 400 9px/1 Anton, Impact, sans-serif; letter-spacing: 1.2px; text-transform: uppercase; color: #767676; }
.ox-pilulka__popisok--varovanie { color: #C2410C; }
.ox-pilulka__hodnota { display: inline-flex; align-items: center; gap: 6px; font: 400 12px/1.1 'Luckiest Guy', cursive; letter-spacing: .4px; text-transform: uppercase; color: #D81300; }
.ox-pilulka__meno { font: 400 12px/1 'Luckiest Guy', cursive; letter-spacing: .4px; text-transform: uppercase; color: #D01200; white-space: nowrap; max-width: 220px; overflow: hidden; text-overflow: ellipsis; }
.ox-pilulka__b2b { font: 400 9px/1 'Luckiest Guy', cursive; letter-spacing: .72px; text-transform: uppercase; color: #fff; background: #D01200; border-radius: 999px; padding: 3px 7px; box-shadow: 0 2px 4px rgba(255, 22, 0, .3); }
.ox-pilulka__sipka { display: inline-flex; width: 12px; height: 12px; color: #FF1600; }
.ox-pilulka__sipka svg { width: 12px; height: 12px; }
.ox-pilulka__zastupca--nema { border-color: rgba(255, 22, 0, .35); box-shadow: 0 0 0 6px rgba(255, 22, 0, .08); gap: 9px; }
.ox-pilulka__foto { display: inline-flex; align-items: center; justify-content: center; width: 24px; height: 24px; border-radius: 50%; border: 2px solid #FF1600; color: #FF1600; background: #fff; flex: 0 0 auto; }
.ox-pilulka__foto svg { width: 13px; height: 13px; }
.ox-vlajka { display: inline-flex; width: 27px; height: 18px; border-radius: 3px; overflow: hidden; box-shadow: 0 0 0 1px rgba(0, 0, 0, .08); flex: 0 0 auto; }
.ox-vlajka--mini { width: 16px; height: 11px; border-radius: 2px; }
.ox-vlajka svg { width: 100%; height: 100%; display: block; }
.ox-pilulka__kosik-obal { position: relative; }
.ox-pilulka .ox-kosik-pocet { position: absolute; top: -5px; right: -6px; min-width: 17px; height: 17px; padding: 0 5px; border-radius: 999px; background: #FF1600; color: #fff; border: 2px solid #fff; font: 400 9px/1 'Luckiest Guy', cursive; letter-spacing: .36px; display: inline-flex; align-items: center; justify-content: center; box-shadow: 0 2px 4px rgba(255, 22, 0, .3); }
.ox-pilulka .ox-kosik-pocet[hidden] { display: none; }
/* prepínač prevádzky v pilulke */
.ox-pilulka .ox-prevadzka-prep { position: relative; }
.ox-pilulka .ox-prevadzka-prep__btn { padding: 0 14px; }
.ox-pilulka .ox-prevadzka-prep__panel { position: absolute; right: 0; top: calc(100% + 8px); }
/* červený pás s menu */
#ox-hlavicka { position: relative; top: auto; z-index: 60; background: #FF1600; color: #fff; border-bottom: 0; backdrop-filter: none; -webkit-backdrop-filter: none; box-shadow: none !important; }
#ox-hlavicka .ox-hlavicka__vnutro { max-width: none; min-height: 117px; justify-content: center; gap: clamp(20px, 3.5vw, 56px); padding: 0 20px; }
.ox-menu { display: flex; align-items: center; gap: clamp(14px, 2.6vw, 40px); }
.ox-menu__polozka { position: relative; }
.ox-menu__odkaz { display: inline-flex; align-items: center; gap: 6px; padding: 15px 0; font: 400 26px/1 'Luckiest Guy', cursive; letter-spacing: 2px; color: #fff; text-decoration: none; white-space: nowrap; }
.ox-menu__odkaz:hover { color: rgba(255, 255, 255, .8); }
.ox-menu__sipka { display: inline-flex; width: 11px; height: 11px; opacity: .85; }
.ox-menu__sipka svg { width: 11px; height: 11px; }
.ox-menu__pod { position: absolute; left: 0; top: 100%; min-width: 230px; padding: 12px 0; background: #FF1600; box-shadow: 0 16px 40px rgba(0, 0, 0, .18); border-radius: 0 0 14px 14px; display: none; flex-direction: column; z-index: 70; }
.ox-menu__polozka--rozbal:hover .ox-menu__pod, .ox-menu__polozka--rozbal:focus-within .ox-menu__pod { display: flex; }
.ox-menu__podpolozka { padding: 10px 22px; font: 400 21px/1.15 Anton, Impact, sans-serif; color: #FFFCFC; text-decoration: none; white-space: nowrap; }
.ox-menu__podpolozka:hover { background: rgba(255, 255, 255, .12); }
.ox-menu__podpolozka--skupina { font-family: 'Luckiest Guy', cursive; font-size: 17px; letter-spacing: 1px; opacity: .95; }
.ox-menu__podpolozka--skupina ~ .ox-menu__podpolozka { padding-left: 34px; }
.ox-logo { flex: 0 0 auto; }
#ox-hlavicka .ox-logo img.ox-logo__obrazok { display: block; width: 192px; height: auto; max-height: none; }
.ox-menu-trigger { display: none; align-items: center; gap: 10px; background: none; border: 0; color: #fff; cursor: pointer; font: 400 20px/1 'Luckiest Guy', cursive; letter-spacing: 2px; text-transform: uppercase; padding: 6px 0; }
.ox-menu-trigger i { position: relative; display: block; width: 44px; height: 2px; background: #fff; }
.ox-menu-trigger i::before, .ox-menu-trigger i::after { content: ''; position: absolute; left: 0; right: 0; height: 2px; background: #fff; }
.ox-menu-trigger i::before { top: -10px; } .ox-menu-trigger i::after { top: 10px; }
.ox-mobil-menu { inset: calc(var(--ox-lista-hore-h) + 96px) 0 0 0; z-index: 55; }
.ox-mobil-menu .ox-nav__odkaz--pod { font-size: 16px; padding-left: 22px; color: var(--sk-text-tlmeny); }
/* mini-košík (oxo-cart-click-minicart) */
.ox-minikosik { position: absolute; top: calc(100% + 8px); right: 0; width: min(460px, calc(100vw - 30px)); background: #fff; border-radius: 20px; box-shadow: 0 22px 56px rgba(0, 0, 0, .18), 0 4px 12px rgba(0, 0, 0, .06); padding: 8px 18px 18px; font-family: Anton, Impact, sans-serif; z-index: 99990; color: #1B1B1B; text-align: left; }
.ox-mk__hlava { display: flex; align-items: center; justify-content: space-between; padding: 12px 4px 8px; }
.ox-mk__titul { font: 400 22px/1 'Luckiest Guy', cursive; letter-spacing: .5px; color: #1B1B1B; }
.ox-mk__pocet { font: 400 14px/1 Anton, Impact, sans-serif; letter-spacing: .5px; color: #fff; background: #FF1600; border-radius: 999px; padding: 5px 11px; }
.ox-mk__zoznam { max-height: 60vh; overflow-y: auto; overflow-x: hidden; display: flex; flex-direction: column; gap: 8px; padding: 2px; }
.ox-mk__prevadzka { font: 400 12px/1 Anton, Impact, sans-serif; letter-spacing: 1px; text-transform: uppercase; color: #767676; padding: 8px 4px 2px; }
.ox-mk__prevadzka b { color: #FF1600; font-weight: 400; }
.ox-mk__prevadzka i { font-style: normal; color: #1F8F30; margin-left: 6px; }
.ox-mk__ul { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 8px; }
.ox-mk__polozka { position: relative; display: grid; grid-template-columns: 56px minmax(0, 1fr); gap: 4px 13px; align-items: center; padding: 9px 52px 9px 15px; border-radius: 16px; background: #FFF7E6; }
.ox-mk__polozka--caka { opacity: .5; pointer-events: none; }
.ox-mk__foto { grid-row: 1 / 3; width: 56px; height: 56px; border-radius: 14px; background: #fff; box-shadow: 0 4px 10px rgba(0, 0, 0, .08); overflow: hidden; }
.ox-mk__foto img { width: 100%; height: 100%; object-fit: cover; display: block; }
.ox-mk__nazov { font: 400 15px/1.2 Anton, Impact, sans-serif; letter-spacing: .3px; color: #1B1B1B; }
.ox-mk__mnozstvo { display: inline-flex; align-items: center; gap: 6px; justify-self: start; padding: 4px 8px; border-radius: 999px; background: #fff; box-shadow: 0 2px 6px rgba(0, 0, 0, .06); font: 400 15px/1 Anton, Impact, sans-serif; }
.ox-mk__q { width: 26px; height: 26px; border-radius: 50%; border: 2px solid #FF1600; background: #fff; color: #FF1600; font: 700 15px/1 Inter, sans-serif; cursor: pointer; display: inline-flex; align-items: center; justify-content: center; padding: 0; }
.ox-mk__q:hover { background: #FF1600; color: #fff; }
.ox-mk__q:disabled { opacity: .35; pointer-events: none; }
.ox-mk__n { font: 400 16px/1 Anton, Impact, sans-serif; min-width: 16px; text-align: center; }
.ox-mk__u { font-size: 13px; letter-spacing: .3px; color: #555; }
.ox-mk__sep { color: #d8d8d8; margin: 0 1px; }
.ox-mk__cena { color: #FF1600; }
.ox-mk__zmaz { position: absolute; top: 12px; right: 12px; width: 30px; height: 30px; border-radius: 50%; background: #fff; border: 2.5px solid #FF1600; color: #FF1600; font: 700 18px/1 Inter, sans-serif; display: inline-flex; align-items: center; justify-content: center; cursor: pointer; padding: 0; transition: transform .15s ease, background .15s ease; }
.ox-mk__zmaz:hover { background: #FF1600; color: #fff; transform: scale(1.08) rotate(90deg); }
.ox-mk__spolu { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin: 4px 2px 14px; padding: 15px 2px 0; border-top: 2px dashed #eee; font: 400 17px/1 Anton, Impact, sans-serif; letter-spacing: .6px; text-transform: uppercase; color: #1B1B1B; }
.ox-mk__spolu strong { font-weight: 400; color: #1B1B1B; }
.ox-mk__cta { display: block; width: 100%; text-align: center; padding: 16px; border-radius: 13px; background: #FF1600; color: #fff; font: 400 18px/1 Anton, Impact, sans-serif; letter-spacing: 1px; text-transform: uppercase; text-decoration: none; box-shadow: 0 8px 18px rgba(227, 6, 19, .30); transition: transform .15s ease, box-shadow .2s ease, background .2s ease; }
.ox-mk__cta:hover { background: #d81300; transform: translateY(-1px); }
.ox-mk__prazdny { font: 400 16px/1.3 Anton, Impact, sans-serif; letter-spacing: .5px; text-align: center; color: #1B1B1B; background: #FFF7E6; border-radius: 14px; padding: 22px 16px; margin: 8px 0 12px; }
/* panel jazyka */
.ox-pilulka__jazyk { position: relative; }
.ox-jazyk-panel { position: absolute; top: calc(100% + 8px); right: 0; width: 250px; padding: 12px; background: rgba(255, 255, 255, .96); backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px); border-radius: 18px; box-shadow: 0 22px 56px rgba(0, 0, 0, .18), 0 4px 12px rgba(0, 0, 0, .06); z-index: 99990; display: flex; flex-direction: column; gap: 4px; }
.ox-jazyk-panel__hlava { font: 400 9px/1 Anton, Impact, sans-serif; letter-spacing: 1.4px; text-transform: uppercase; color: #767676; padding: 4px 8px 8px; }
.ox-jazyk-panel__volba { display: flex; align-items: center; gap: 12px; padding: 9px 10px; border: 0; border-radius: 12px; background: transparent; cursor: pointer; text-align: left; font: inherit; color: #1a1a1a; }
.ox-jazyk-panel__volba:hover { background: rgba(255, 22, 0, .06); }
.ox-jazyk-panel__volba.is-current { background: rgba(255, 22, 0, .08); }
.ox-jazyk-panel__txt { display: flex; flex-direction: column; gap: 3px; flex: 1; }
.ox-jazyk-panel__nazov { font: 400 16px/1 Anton, Impact, sans-serif; letter-spacing: .3px; }
.ox-jazyk-panel__sub { font: 400 9px/1 Anton, Impact, sans-serif; letter-spacing: 1.2px; text-transform: uppercase; color: #767676; }
.ox-jazyk-panel__check { color: #FF1600; display: inline-flex; }
/* panel „Vyžiadať zástupcu“ */
.ox-pilulka__zastupca { position: relative; }
.ox-zastupca-panel { position: absolute; top: calc(100% + 8px); left: 50%; transform: translateX(-50%); width: min(380px, calc(100vw - 24px)); background: #fff; border-radius: 16px; box-shadow: 0 22px 56px rgba(0, 0, 0, .22); overflow: hidden; z-index: 99990; text-align: left; font-family: Anton, Impact, sans-serif; cursor: default; }
.ox-zastupca-panel__hlava { display: flex; align-items: center; gap: 12px; padding: 14px 16px; background: linear-gradient(135deg, #FF1600, #D01200); color: #fff; }
.ox-zastupca-panel__hlava b { display: block; font: 400 16px/1 'Luckiest Guy', cursive; letter-spacing: 1px; text-transform: uppercase; }
.ox-zastupca-panel__hlava small { display: block; margin-top: 4px; font: 400 11px/1 Anton, Impact, sans-serif; letter-spacing: .4px; opacity: .9; }
.ox-zastupca-panel__ikona { width: 38px; height: 38px; border-radius: 50%; background: #fff; color: #FF1600; display: inline-flex; align-items: center; justify-content: center; flex: 0 0 auto; }
.ox-zastupca-panel__ikona svg { width: 20px; height: 20px; }
.ox-zastupca-panel__telo { padding: 14px 16px 16px; display: flex; flex-direction: column; gap: 10px; }
.ox-zastupca-panel__telo label { display: flex; flex-direction: column; gap: 5px; }
.ox-zastupca-panel__telo label > span { font: 400 9px/1 Anton, Impact, sans-serif; letter-spacing: 1.2px; text-transform: uppercase; color: #555; }
.ox-zastupca-panel__telo label > span i { color: #FF1600; font-style: normal; }
.ox-zastupca-panel__telo label > span em { font-style: normal; color: #999; text-transform: none; letter-spacing: 0; }
.ox-zastupca-panel__telo .ox-input { font-family: Anton, Impact, sans-serif; letter-spacing: .4px; }
.ox-zastupca-panel__dva { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.ox-zastupca-panel__akcie { display: flex; justify-content: flex-end; gap: 10px; margin-top: 4px; }
.ox-zastupca-panel__akcie .ox-btn { font-family: 'Luckiest Guy', cursive; letter-spacing: 1px; text-transform: uppercase; }
.ox-zastupca-panel__stav { padding: 10px 12px; border-radius: 10px; font-size: 13px; }
.ox-zastupca-panel__stav--ok { background: rgba(31, 143, 48, .12); color: #1F8F30; }
.ox-zastupca-panel__stav--chyba { background: rgba(255, 22, 0, .1); color: #D01200; }
/* témy NoirG: staré pravidlá hlavičky sa na nový červený pás nepoužijú */
html[data-tema] #ox-hlavicka .ox-ikonbtn { display: none; }
@media (max-width: 1080px) {
	.ox-pilulka__meno { max-width: 140px; }
	.ox-menu__odkaz { font-size: 22px; letter-spacing: 1.5px; }
}
@media (max-width: 860px) {
	.ox-menu { display: none; }
	.ox-menu-trigger { display: inline-flex; position: absolute; right: 20px; top: 50%; transform: translateY(-50%); }
	#ox-hlavicka .ox-hlavicka__vnutro { min-height: 96px; position: relative; }
	#ox-hlavicka .ox-logo img.ox-logo__obrazok { width: 150px; }
}
@media (max-width: 600px) {
	:root { --ox-lista-hore-h: 40px; }
	.ox-lista-hore__vnutro { padding: 0 8px; gap: 5px; }
	.ox-socialne { gap: 5px; }
	.ox-socialne__ikona, .ox-pilulka__sekcia, .ox-pilulka__kruh { height: 30px; min-width: 30px; width: 30px; padding: 0; border-radius: 50%; }
	.ox-socialne__ikona svg { width: 13px; height: 13px; }
	.ox-pilulka { gap: 5px; }
	.ox-pilulka__ikona, .ox-pilulka__ikona svg { width: 14px; height: 14px; }
	.ox-pilulka__stlpec, .ox-pilulka__meno, .ox-pilulka__b2b, .ox-pilulka__sipka { display: none; }
	.ox-pilulka__zastupca--nema { box-shadow: 0 0 0 4px rgba(255, 22, 0, .08); }
	.ox-pilulka__foto { width: 18px; height: 18px; border-width: 1.5px; }
	.ox-pilulka__foto svg { width: 10px; height: 10px; }
	.ox-pilulka .ox-prevadzka-prep__btn { padding: 0; }
	.ox-pilulka .ox-kosik-pocet { top: -4px; right: -4px; min-width: 15px; height: 15px; font-size: 8px; }
	.ox-minikosik { position: fixed; top: calc(var(--ox-lista-hore-h) + 6px); right: 8px; left: 8px; width: auto; }
	.ox-jazyk-panel, .ox-zastupca-panel { position: fixed; top: calc(var(--ox-lista-hore-h) + 6px); left: 8px; right: 8px; width: auto; transform: none; }
	.ox-mobil-menu { inset: calc(var(--ox-lista-hore-h) + 96px) 0 0 0; }
}
