/* ═══ kanp-brand.css — §K17 (P11) + §K18 (P12): značka KannaPower napříč webem ═══
   Načítá inc/kanp-brand.php všude kromě hlavního rámu builderu, dep kp-global, priorita 120 (po všech kp-/port-/kanp- stylech).
   Manuál: červená --kp-accent jen pro text ≥ 24 px, jinak jako plocha, linka, kosočtverec nebo šipka (V1).
   Žádné záře ani přechody. Nadpisy Montserrat 700. Štítky a parametry IBM Plex Mono 500. Jen tokeny, 0× hex.
   §K18 (P12): Montserrat jako jedna variabilní WOFF2 podmnožina (sekce 1), drawery (sekce 9), rozložení 481–540 px (sekce 10).
   §K19 (P13): štítek produktu V1 a balení textem (sekce 11).
   §K21 (P16): drobečky „/" (sekce 3), odkaz loga ≤ 950 px (sekce 2), scroll-padding (sekce 10), řez 700 (sekce 12), formuláře Woo (sekce 13). */

/* 1) Fonty
   Montserrat — §K18 (P12) D1: podmnožina variabilního fontu (OFL, wght 100–900, 99 316 B), unicode-range = přesně cmap podmnožiny.
   Stejné deskriptory jako @font-face v kp-global.css (normal, 100 900) a pozdější pořadí → pro znaky v rozsahu má přednost tato WOFF2;
   TTF z kp-global.css zůstává jen jako fallback pro znaky mimo podmnožinu (motiv je nepoužívá, viz _build/p12/char-audit). Preload v inc/kanp-brand.php. */
@font-face {
	font-family: 'Montserrat';
	font-style: normal;
	font-weight: 100 900;
	font-display: swap;
	src: url('fonts/montserrat/montserrat-cs-wght.woff2') format('woff2');
	unicode-range: U+0000,U+000D,U+0020-007E,U+00A0-00AC,U+00AE-0183,U+0186-018C,U+018E-0194,U+0196-01A1,U+01A4-01A6,U+01A9,U+01AC-01B9,U+01C0-01F5,U+01F8-0220,U+0222-0223,U+0226-0233,U+0237,U+023A-023E,U+0241-0251,U+0253-0254,U+0256-0259,U+025B-025C,U+025F-0260,U+0263-0266,U+0268-026C,U+026F,U+0271-0272,U+0274-0275,U+027D-027E,U+0280,U+0283,U+0287-028C,U+028E,U+0292,U+0294-0295,U+0298,U+029D,U+02B0,U+02B7-02C1,U+02C6-02CC,U+02D7,U+02DA,U+02DC-02DD,U+02EC,U+02EE,U+02FB-02FC,U+0304,U+0308,U+0329,U+0394,U+1D3A,U+1D43,U+1D49,U+1D4B,U+1D52-1D53,U+1D58,U+1D5B,U+1D7B,U+1D7D-1D7E,U+1D91,U+1DA4,U+1DB6,U+1DBB,U+1DBF,U+1E00-1E9B,U+1E9E,U+1EF2-1EF9,U+2007-200B,U+2010,U+2012-2015,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2032-2033,U+2039-203A,U+2044,U+2052,U+20A1,U+20A3-20A4,U+20A6-20A7,U+20A9,U+20AB-20AE,U+20B1-20B2,U+20B4-20B5,U+20B8-20BA,U+20BC-20BD,U+20BF,U+2113,U+2116,U+2122,U+2126,U+212A-212B,U+212E,U+2144,U+2190-2199,U+2202,U+2205-2206,U+220F,U+2211-2212,U+2215,U+2219-221A,U+221E,U+222B,U+2248,U+2260,U+2264-2265,U+25A0-25A1,U+25B2-25B3,U+25B6-25B7,U+25BC-25BD,U+25C0-25C1,U+25C6-25C7,U+25CA,U+25CC,U+2C60-2C66,U+2C6D-2C6F,U+2C72-2C73,U+A726-A727,U+A740-A741,U+A789-A78D,U+A792-A793,U+A7A8-A7AB,U+A7AD-A7AE,U+A7B1-A7B9,U+A7C7-A7C8,U+A7CB-A7CD,U+A7DA-A7DC;
}
/* IBM Plex Mono 500 — vlastní hosting (OFL, @fontsource/ibm-plex-mono; unicode-range 1:1 z 500.css balíčku) */
@font-face {
	font-family: 'IBM Plex Mono';
	font-style: normal;
	font-weight: 500;
	font-display: swap;
	src: url('fonts/ibm-plex-mono/ibm-plex-mono-latin-ext-500-normal.woff2') format('woff2');
	unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}
@font-face {
	font-family: 'IBM Plex Mono';
	font-style: normal;
	font-weight: 500;
	font-display: swap;
	src: url('fonts/ibm-plex-mono/ibm-plex-mono-latin-500-normal.woff2') format('woff2');
	unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
:root { --kanp-mono: 'IBM Plex Mono', ui-monospace, SFMono-Regular, Menlo, monospace; }

/* 2) Logo — [kanp_logo] / kanp_brand_svg(). Výšku obalu v hlavičce ≤ 950 / ≤ 480 px (22 / 20 px) řídí kp-global.css. */
.kanp-logo { display: block; flex: none; }
/* P11 §4d: Bricks dává .brxe-shortcode { width: 100% } → obal loga by byl ≤ 950 px (absolutně na středu, kp-global.css) přes celou lištu a logo vlevo pod hamburgerem */
.brxe-shortcode.kanp-logo-wrap { width: auto; }
[data-r="header-logo"] .kanp-logo { height: 100%; width: auto; }
.kanp-logo-link { display: inline-flex; line-height: 0; }
.kp-agegate-wordmark .kanp-logo { height: 26px; width: auto; }
.kp-denied-card .kanp-logo { margin: 0 auto 28px; } /* §K18 (P12): stránka 368 „Přístup odepřen" — [kanp_logo] místo textového loga, na střed karty jako dřív inline wordmark */
/* P11 §4d: v 951–1100 px se lockup 28 px překrýval s menu / účtem / košíkem → v tomto rozsahu 24 px;
   v 951–999 px ani 24 px nestačilo (poslední položka menu × „Účet" až 8,5 px) → 22 px jako mobilní hlavička */
@media (min-width: 951px) and (max-width: 1100px) {
	[data-r="header-logo"] .kanp-logo { height: 24px; }
}
@media (min-width: 951px) and (max-width: 999px) {
	[data-r="header-logo"] .kanp-logo { height: 22px; }
}
/* §K21 (P16) 3e: odkaz loga v hlavičce ≤ 950 px měl 0 × 0 px (jeho jediné dítě, obal loga, je absolutně na středu lišty — kp-global.css:267
   s příznakem important) → neviditelný fokus. Na střed lišty se teď stejnou geometrií staví odkaz se šířkou loga (viewBox 1478 × 163)
   a výškou 44 px; obal loga se centruje uvnitř odkazu, takže logo zůstává na místě. */
@media (max-width: 950px) {
	#brx-header a:has(> [data-r="header-logo"]) { position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); width: calc(22px * 1478 / 163); height: 44px; }
}
@media (max-width: 480px) {
	#brx-header a:has(> [data-r="header-logo"]) { width: calc(20px * 1478 / 163); }
}
#brx-header a:has(> [data-r="header-logo"]):focus-visible { outline: 2px solid var(--kp-text); outline-offset: 2px; }

/* 3) Menu, drawer, drobečková navigace, košík — text bílý, červená jen jako linka (V1) */
[data-r="nav"] ul.bricks-nav-menu > li > a:hover,
[data-r="nav"] ul.bricks-nav-menu > li > a:focus-visible { color: var(--kp-text); border-bottom-color: var(--kp-accent); }
[data-r="nav"] ul.bricks-nav-menu > li.current-menu-item > a,
[data-r="nav"] ul.bricks-nav-menu > li.current-menu-parent > a,
[data-r="nav"] ul.bricks-nav-menu > li[aria-current] > a { color: var(--kp-text); }
.kp-menu-drawer .kp-menu-list > li > a:hover,
.kp-menu-drawer .kp-menu-list > li > a:focus-visible { color: var(--kp-text); box-shadow: inset 3px 0 0 var(--kp-accent); }
.kp-menu-drawer .kp-menu-list > li.current-menu-item > a,
.kp-menu-drawer .kp-menu-list > li[aria-current] > a { color: var(--kp-text); }
.kp-menu-drawer .kp-menu-list .sub-menu > li > a:hover { color: var(--kp-text); }
[data-r="breadcrumb"] .rank-math-breadcrumb a:hover,
[data-r="breadcrumb"] .rank-math-breadcrumb a:focus-visible { color: var(--kp-text); text-decoration: underline; text-decoration-color: var(--kp-accent); text-decoration-thickness: 2px; text-underline-offset: 4px; }
[data-r="breadcrumb"] .rank-math-breadcrumb .last { color: var(--kp-text); }
/* §K21 (P16) 3d: drobečky IBM Plex Mono 500, oddělovač „/" (rozhodnutí 5. 10. 2026) — Rank Math i článek ([kp_article], .kp-bc-sep z functions.php).
   Rank Math: přebití trojúhelníku z kp-global.css:76 (border trik); původní text oddělovače „›" zůstává skrytý (font-size 0), „/" kreslí ::before
   s prázdným alternativním textem. Mezera 8 px z každé strany = gap řádku. */
[data-r="breadcrumb"] .rank-math-breadcrumb p { gap: 8px; font-family: var(--kanp-mono); font-weight: 500; font-size: 11px; letter-spacing: .1em; text-transform: uppercase; }
[data-r="breadcrumb"] .rank-math-breadcrumb .separator { display: inline-flex; width: auto; height: auto; border: 0; font-size: 0; }
[data-r="breadcrumb"] .rank-math-breadcrumb .separator::before { content: "/"; content: "/" / ""; font-size: 11px; letter-spacing: 0; color: var(--kp-text-3); }
.kp-bc-sep { letter-spacing: 0; }
.kp-article-breadcrumb a:hover,
.kp-article-breadcrumb a:focus-visible { color: var(--kp-text); text-decoration: underline; text-decoration-color: var(--kp-accent); text-decoration-thickness: 2px; text-underline-offset: 4px; }
.kp-cart-badge { color: var(--kp-text); }
.kp-cart-subtotal-row .kp-cart-subtotal { color: var(--kp-text); }
.kp-cart-btn--outline:hover { color: var(--kp-text); border-color: var(--kp-accent); }
.kp-cart-drawer .kp-qty-stepper button:hover:not(:disabled),
.kp-cart-drawer .kp-qty-stepper button:focus:not(:disabled) { color: var(--kp-text); }
/* §K18 (P12) D1: znaky mimo podmnožinu Montserratu → SVG. Řazení v obchodě: „✓" (U+2713, kp-global.css) → tatáž fajfka jako maska v barvě textu.
   (SVG oddělovač drobečků článku nahradil v §K21 znak „/" — viz výše.) */
/* Hláška Woo „přidáno do košíku" (produkt, obchod, pokladna): ✓ (\2713) v červeném kolečku → stejná fajfka jako SVG na ploše --kp-accent.
   Příznak important je výjimka — přebíjí content / background s tímtéž příznakem z kp-global.css:389 a checkout-responsive.css:86.
   Barva fajfky v data URI je klíčové slovo white (= hodnota --kp-on-accent, bílá; obrázek v data URI nemůže číst CSS proměnné). */
.single-product .woocommerce-message::before,
.post-type-archive-product .woocommerce-message::before,
.woocommerce-shop .woocommerce-message::before,
.woocommerce-checkout .woocommerce-message::before { content: "" !important; background: var(--kp-accent) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 12.5l4 4L18 8.5'/%3E%3C/svg%3E") center / 14px no-repeat !important; }
.kp-sort-option[aria-selected="true"]::after { content: ""; flex: 0 0 auto; width: 12px; height: 12px; background-color: currentColor; -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.5l4.5 4.5L19 7.5'/%3E%3C/svg%3E") center / contain no-repeat; mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.5l4.5 4.5L19 7.5'/%3E%3C/svg%3E") center / contain no-repeat; }

/* 4) Patička — nadpisy sloupců bílé (inline barva v #56 přepnuta na --kp-text), nad nimi červená linka 16 × 2 px */
[data-r="footer-grid"] h2::before { content: ""; display: block; width: 16px; height: 2px; margin: 0 0 12px; background: var(--kp-accent); }
@media (max-width: 1023px) {
	[data-r="footer-grid"] > div:not([data-r="footer-brand"]) h2::before { margin-left: auto; margin-right: auto; }
}

/* 5) Odkazy v textu — bílé s červeným podtržením (V1) */
.kp-legal a:not(.cky-banner-element),
.kp-agegate-fine a,
.kp-denied-link,
.kp-form-gdpr-note a { color: var(--kp-text); text-decoration: underline; text-decoration-color: var(--kp-accent); text-decoration-thickness: 2px; text-underline-offset: 3px; }
.kp-legal a:not(.cky-banner-element):hover,
.kp-agegate-fine a:hover,
.kp-denied-link:hover,
.kp-form-gdpr-note a:hover { text-decoration-color: var(--kp-text); }
.kp-legal .kp-legal-annex li a { color: var(--kp-text); text-decoration: none; }
.kp-legal-draft strong { color: var(--kp-text); }
.kp-legal-num { color: var(--kp-text-3); font-family: var(--kanp-mono); font-weight: 500; }
/* §K18 (P12): značka u nadpisů H2 právních stránek — kosočtverec KannaPower 8 × 8 px místo trojúhelníku z původní šablony (border trik v kp-global.css) */
.kp-legal-h2::before { width: 8px; height: 8px; border: 0; background: var(--kp-accent); transform: rotate(45deg); }

/* 6) Tlačítka bez záře */
.kph-btn-primary,
.kp-legal a.cky-banner-element { box-shadow: none; transition: filter .2s ease; }
.kph-btn-primary:hover,
.kp-legal a.cky-banner-element:hover { transform: none; box-shadow: none; filter: brightness(1.1); }
.kph-btn-ghost { border-color: var(--kp-border-2); }

/* 7) Typografie — nadpisy 700, štítky Plex Mono */
.kph-h2 { font-weight: 700; letter-spacing: -.02em; }
.kph-eyebrow { font-family: var(--kanp-mono); font-weight: 500; letter-spacing: .14em; color: var(--kp-text-2); }
.kph-mono { font-family: var(--kanp-mono); }
[data-r="product-card"] .kp-prodcard-title,
[data-r="product-card"] .kp-price { font-weight: 700; }
.kp-legal-h1 { font-weight: 700; } /* §K18 (P12): právní stránky — nadpis H1 700 místo 900 (V1) */

/* 8) Parametrový blok (manuál: popisek / hodnota ve 2 sloupcích) — [kanp_hero_spec] */
.kanp-spec { margin: 0; border-top: 1px solid var(--kp-border); }
.kanp-spec-row { display: grid; grid-template-columns: 96px minmax(0, 1fr); column-gap: 16px; padding: 11px 0; border-bottom: 1px solid var(--kp-border); }
.kanp-spec-k { margin: 0; font-family: var(--kanp-mono); font-size: 11px; font-weight: 500; line-height: 18px; letter-spacing: .14em; text-transform: uppercase; color: var(--kp-text-3); }
.kanp-spec-v { margin: 0; font-size: 15px; font-weight: 500; line-height: 18px; color: var(--kp-text); }
@media (max-width: 640px) {
	.kanp-spec-row { grid-template-columns: 84px minmax(0, 1fr); padding: 10px 0; }
	.kanp-spec-v { font-size: 14px; }
}

/* 9) Drawery a dotykové plochy — §K18 (P12) D2
   Zavřený panel visibility: hidden → jeho odkazy a tlačítka nejsou v pořadí Tab ani pro čtečky; visibility se přepne až po dojetí
   transformace (zavírání), při otevírání hned. Filtry jen ≤ 950 px (na desktopu je [data-r="sidebar"] běžný sidebar a skrýt se nesmí).
   Fokus, role="dialog" a aria-* řeší kp-shop.js. Zavírací tlačítka 44 × 44 px; hamburger a košík 44 px v #35 (inline styl). */
.kp-drawer { visibility: hidden; transition: transform .3s ease, visibility 0s linear .3s; }
.kp-drawer.is-open { visibility: visible; transition: transform .3s ease, visibility 0s linear 0s; }
@media (max-width: 950px) {
	[data-r="sidebar"] { visibility: hidden; transition: transform .3s ease, visibility 0s linear .3s; }
	[data-r="sidebar"].is-open { visibility: visible; transition: transform .3s ease, visibility 0s linear 0s; }
}
.kp-drawer-close { width: 44px; height: 44px; }
/* Účet v hlavičce (≥ 951 px): ikona 28 × 23 px → klikací plocha 44 × 45 px paddingem; záporný margin drží rozložení beze změny
   (původní margin-right 4 px z kp-global.css → −4 px). Rezerva k menu na 951 px 1,7 px, ke košíku 6 px. */
@media (min-width: 951px) {
	[data-r="header-account"] { padding: 11px 8px; margin: -11px -4px -11px -8px; }
}

/* 10) Rozložení — §K18 (P12) 3d1: vodorovné přetečení z měření 1e (_build/p12/recon.md); ≤ 480 a ≥ 600 px beze změny */
@media (max-width: 950px) {
	/* patička: odkazy spodní lišty se zalomí po celých položkách (popisky dál nowrap, port-footer.css); řádková mezera = inline gap 18 px prvku 801870 */
	[data-r="footer-bottom"] > span:last-child { flex-wrap: wrap; }
}
@media (min-width: 481px) and (max-width: 540px) {
	/* obchod a kategorie: 1 sloupec karet jako ≤ 480 px (karta má min-content 240 px); příznak important je výjimka — přebíjí
	   repeat(2, 1fr) s tímtéž příznakem z archive-responsive.css ≤ 1024 px */
	[data-r="product-grid"] { grid-template-columns: 1fr !important; gap: 12px !important; }
	/* /kontakty/: sociální odkazy pod sebou jako ≤ 480 px (v řádku mají min-content 467 px a roztahují mřížku) */
	[data-r="social-row"] { flex-direction: column; }
	[data-r="social-row"] > a { min-height: 48px; justify-content: center; }
}
@media (max-width: 374px) {
	/* /co-je-kanna/: řádek „> 25 alkaloidů · profil se liší dle rostliny" (nowrap) se na 320–360 px nevešel */
	.kck-alkaloid-meta { white-space: normal; }
}
/* §K21 (P16) 3g: fokus a kotvy nezajedou pod sticky hlavičku (výška 73 px ≥ 951, 61 px ≤ 950; + 8 px na obrys fokusu)
   ani na detailu produktu ≤ 950 px pod fixní nákupní lištu (75 px + 12 px; lišta je jen v šabloně detailu a jen ≤ 950 px) */
html { scroll-padding-top: 81px; }
@media (max-width: 950px) {
	html { scroll-padding-top: 69px; }
	html:has([data-r="mobile-cart-bar"]) { scroll-padding-bottom: 87px; }
}

/* 11) Štítek produktu kp_product_badge() — V1: bílý text IBM Plex Mono, rámeček v barvě štítku (inline border-color z PHP; výchozí --kp-accent). Titulka, obchod, kategorie, detail. §K19 (P13) */
.kp-badge-chip { border: 1px solid var(--kp-accent); background: var(--kp-bg); color: var(--kp-text); font-family: var(--kanp-mono); font-size: 10px; font-weight: 500; line-height: 1.3; letter-spacing: .06em; }
.kp-badge-part { white-space: nowrap; } /* §K21 (P16) 3i: štítek se zalomí jen u „·" (části z kp_product_badge()) */
.kp-badge-chip { display: inline-block; } /* §K23 (P17b) 3a: regrese z P16 — ve flex kontejneru (inline-flex z kp-global.css:1319) se mezery kolem „ · " mezi .kp-badge-part zahodily */
/* Balení jako text u produktu s jednou velikostí ([kp_featured]) */
[data-r="product-card"] .kp-prodcard-size { display: flex; align-items: baseline; gap: 10px; }
.kp-prodcard-size-k { font-family: var(--kanp-mono); font-size: 11px; font-weight: 500; line-height: 18px; letter-spacing: .14em; text-transform: uppercase; color: var(--kp-text-3); }
.kp-prodcard-size-v { font-size: 14px; font-weight: 500; line-height: 18px; color: var(--kp-text); }

/* 12) Řez 700 místo 900 — §K21 (P16) 3c. Manuál: nadpisy, ceny a čísla Montserrat 700. Stejné selektory jako pravidla s řezem 900
   v kp-global.css (soubor se nemění; pozdější pořadí → platí 700). Ostatní soubory motivu upraveny přímo (komentář §K21);
   data Bricks (28 prvků v #102, #113–#115, #126, #324) přepnuta na 700 round-tripem. Některé selektory už měly 700 v sekci 7 (P11). */
.kp-drawer-head-title,
[data-r="product-card"] .kp-prodcard-title,
[data-r="product-card"] .kp-price,
[data-r="product-card"] .kp-prodcard-badge,
.kp-agegate-title,
.kp-denied-title,
.kp-legal-h1,
.kph-h2,
.kph-hero-h1,
[data-r="kph-pack-vert"],
.kph-pack-name-main,
[data-r="kph-form-num"],
.kph-review-quote,
.kck-h2,
.kck-hero-h1,
.kck-tl-year,
[data-r="kck-step-num"],
.onk-h2,
.onk-hero-h1,
.kp-wordmark,
.slp-hero-h1,
.slp-h2,
.faq-hero-h1,
.faq-h2,
.dap-hero-h1,
.dap-h2,
.dap-goodbox-badge,
.dap-h3,
.onas-hero-h1,
.onas-h2 { font-weight: 700; }
strong, b { font-weight: 700; }

/* 13) Formuláře a tabulky Woo — §K21 (P16) 3f. Barvy z vrstev Bricks / Woo (@layer bricks: label --bricks-text-light #9E9E9E,
   rámečky --bricks-border-color #DDDEDF) a #6A6A70 z checkout-responsive.css → tokeny palety. */
.cart_totals .woocommerce-shipping-methods label { color: var(--kp-text-3); }
.woocommerce-cart-form thead,
.woocommerce-cart-form .cart_item,
.cart-collaterals table,
.bricks-search-form input { border-color: var(--kp-border); }
/* Fokus polí: outline: none v checkout-responsive.css:56, account-responsive.css:27 a :52, blog-responsive.css:19 a v @layer bricks
   (input, select, textarea) → viditelný obrys. Selektory se stejnou specifičností jako pravidla s outline: none. */
.woocommerce-checkout input.input-text:focus-visible,
.woocommerce-checkout textarea:focus-visible,
.woocommerce-checkout select:focus-visible,
.woocommerce-checkout input[type="checkbox"]:focus-visible,
.woocommerce-checkout input[type="radio"]:focus-visible,
.woocommerce-cart-form input:focus-visible,
.cart-collaterals input:focus-visible,
.cart-collaterals select:focus-visible,
.woocommerce-account .woocommerce input[type="text"]:focus-visible,
.woocommerce-account .woocommerce input[type="email"]:focus-visible,
.woocommerce-account .woocommerce input[type="password"]:focus-visible,
.woocommerce-account .woocommerce input[type="tel"]:focus-visible,
.woocommerce-account .woocommerce input[type="checkbox"]:focus-visible,
.woocommerce-account .woocommerce textarea:focus-visible,
.woocommerce-account .woocommerce select:focus-visible,
#customer_login .input-text:focus-visible,
.bricks-search-form input:focus-visible { outline: 2px solid var(--kp-text); outline-offset: 2px; } /* §K24 (P18): .kp-blog-search input:focus-visible odebráno — obrys kreslí .kp-blog-search:focus-within (sekce 15c) */
/* Souhlas s obchodními podmínkami a zásadami v pokladně — odkaz V1 (bílý text, červené podtržení 2 px) místo červeného malého textu */
.woocommerce-checkout .woocommerce-terms-and-conditions-wrapper a,
.woocommerce-checkout .woocommerce-privacy-policy-text a { color: var(--kp-text); text-decoration: underline; text-decoration-color: var(--kp-accent); text-decoration-thickness: 2px; text-underline-offset: 3px; }
.woocommerce-checkout .woocommerce-terms-and-conditions-wrapper a:hover,
.woocommerce-checkout .woocommerce-privacy-policy-text a:hover { text-decoration-color: var(--kp-text); }

/* 14) Obchod — §K22 (P17): archiv a sidebar filtrů, detail produktu, košík, pokladna, účet (rozhodnutí Patrika 5. 10. 2026, manuál V1).
   Štítky a odkazy archivu / PDP používají vzory .kph-eyebrow a .kph-link-more z titulky (třídy v datech Bricks #126 / #324). */
:root { color-scheme: dark; } /* nativní zaškrtávací pole, přepínače a posuvníky bez vlastního vzhledu v tmavém provedení */

/* Archiv a sidebar filtrů (#126) */
[data-r="sidebar"] .brxe-accordion-nested .accordion-title-wrapper .brxe-heading { font-family: var(--kanp-mono); font-weight: 500; font-size: 12px; letter-spacing: .14em; text-transform: uppercase; color: var(--kp-text-2); }
[data-r="sidebar"] .brxe-accordion-nested .accordion-title-wrapper .brxe-icon { color: var(--kp-text-3); }
[data-r="sidebar"] .brxe-filter-checkbox .brx-option-text { text-transform: none; } /* „1 g", „10 ml" */
[data-brx-af-count] { font-family: inherit; font-weight: inherit; color: inherit; } /* počty ve filtrech jako text volby (dřív červená 800) */
.brxe-filter-submit[type="reset"]:hover,
.brxe-filter-submit[type="reset"]:focus { color: var(--kp-text); } /* rámeček zůstává --kp-accent (kp-global.css:229) */
.kp-catnav-pill:hover { color: var(--kp-text); } /* rámeček zůstává --kp-accent (kp-global.css:1357) */
.kp-catnav-pill.is-active { color: var(--kp-on-accent); }
/* Stránkování: šipky textem místo trojúhelníků (border trik kp-global.css:90–92) */
[data-r="pagination"] .page-numbers.prev::before,
[data-r="pagination"] .page-numbers.next::after { width: auto; height: auto; border: 0; }
[data-r="pagination"] .page-numbers.prev::before { content: "←"; content: "←" / ""; }
[data-r="pagination"] .page-numbers.next::after { content: "→"; content: "→" / ""; }
[data-r="pagination"] a.page-numbers.prev:hover, [data-r="pagination"] a.page-numbers.next:hover,
[data-r="pagination"] a.page-numbers.prev:focus-visible, [data-r="pagination"] a.page-numbers.next:focus-visible { color: var(--kp-text); border-color: var(--kp-accent); }

/* Detail produktu (#324) */
.kp-stock-line { display: inline-flex; align-items: center; gap: 8px; }
.kp-stock-line.is-ok::before,
.kp-stock-line.is-low::before { content: ""; flex: none; width: 6px; height: 6px; background: var(--kp-accent); transform: rotate(45deg); }
/* Tlačítko lightboxu galerie (vytváří kp-shop.js): vidět stále, 44 × 44 px; Bricks ho má 24 × 24 s opacity 0 (viditelné jen při najetí).
   Lupa s „+" jako maska v barvě --kp-text-2 (barva tahu v data URI je klíčové slovo black = jen tvar masky). */
.single-product .woocommerce-product-gallery .woocommerce-product-gallery__trigger { opacity: 1; top: 16px; right: 16px; z-index: 2; width: 44px; height: 44px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; background: var(--kp-bg); border: 1px solid var(--kp-border-2); border-radius: 8px; }
.single-product .woocommerce-product-gallery .woocommerce-product-gallery__trigger::before { position: static; width: 20px; height: 20px; border-radius: 0; background: var(--kp-text-2); -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='10.5' cy='10.5' r='6.5'/%3E%3Cpath d='M15.5 15.5 20 20M10.5 7.5v6M7.5 10.5h6'/%3E%3C/svg%3E") center / contain no-repeat; mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='10.5' cy='10.5' r='6.5'/%3E%3Cpath d='M15.5 15.5 20 20M10.5 7.5v6M7.5 10.5h6'/%3E%3C/svg%3E") center / contain no-repeat; }
.single-product .woocommerce-product-gallery .woocommerce-product-gallery__trigger:hover { border-color: var(--kp-accent); }
.single-product .woocommerce-product-gallery .woocommerce-product-gallery__trigger:focus-visible { outline: 2px solid var(--kp-text); outline-offset: 2px; }

/* Košík — souhrn (#113) */
.cart_totals .order-total th { white-space: nowrap; }
.cart_totals .order-total .includes_tax { display: block; margin-top: 3px; font-size: 12px; font-weight: 500; color: var(--kp-text-3); } /* DPH na vlastním řádku jako v pokladně */
.cart_totals .order-total .includes_tax .amount { font-weight: 700; }
.cart-collaterals .cart_totals table.shop_table { border-top-color: var(--kp-border-2); border-bottom-color: var(--kp-border-2); } /* linky pod „Celkem k platbě" a pod součtem */
/* Doprava v košíku i pokladně — obecně pro 1–N metod (Zásilkovna, po nastavení i PPL): řádek s přepínačem, název, cena;
   tlačítko výběru výdejního místa pluginu dopravce (Packeta: .packetery-widget-button-row .button.alt) jako sekundární tlačítko */
#shipping_method li { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
#shipping_method input[type="radio"] { accent-color: var(--kp-accent); margin: 0; }
#shipping_method label { color: var(--kp-text-2); }
#shipping_method label .amount { color: var(--kp-text); font-weight: 700; }
#shipping_method li .button,
#shipping_method li button { background: transparent; border: 1px solid var(--kp-border-2); border-radius: 8px; padding: 10px 14px; color: var(--kp-text); font: 800 11px/1 'Montserrat', sans-serif; letter-spacing: .06em; text-transform: uppercase; cursor: pointer; }
#shipping_method li .button:hover,
#shipping_method li button:hover { border-color: var(--kp-accent); color: var(--kp-text); }

/* Hlášky Woo (všude) — odkazy V1; příznak important je výjimka: přebíjí color s tímtéž příznakem z kp-global.css:367 */
.woocommerce-message a:not(.button),
.woocommerce-info a:not(.button),
.woocommerce-error a:not(.button) { color: var(--kp-text) !important; text-decoration: underline; text-decoration-color: var(--kp-accent); text-decoration-thickness: 2px; text-underline-offset: 3px; }
.woocommerce-message .button.wc-forward, .woocommerce-error .button.wc-forward, .woocommerce-info .button.wc-forward { border-color: var(--kp-border-2); color: var(--kp-text); }
.woocommerce-message .button.wc-forward:hover, .woocommerce-error .button.wc-forward:hover, .woocommerce-info .button.wc-forward:hover { background: transparent; border-color: var(--kp-accent); color: var(--kp-text); }
.woocommerce-cart .woocommerce-message .button.wc-forward { display: none; } /* na stránce košíku je „Zobrazit košík" zbytečné */

/* Pokladna (#114) — pole s obchodními podmínkami a box s jejich textem (rozbalí odkaz [terms]; inline max-height odebírá functions.php §K22).
   Text #371 je markup právních stránek (.kp-legal) — tady čitelný i bez jejich CSS: neutralizace obalu, jednotné nadpisy a odstavce. */
.woocommerce-checkout .woocommerce-terms-and-conditions { max-height: 240px; overflow-y: auto; margin: 8px 0 12px; padding: 14px 16px; background: var(--kp-bg); border: 1px solid var(--kp-border); border-radius: 8px; font-size: 13px; line-height: 1.6; color: var(--kp-text-2); }
.woocommerce-checkout .woocommerce-terms-and-conditions .kp-legal,
.woocommerce-checkout .woocommerce-terms-and-conditions .kp-legal-wrap { max-width: none; margin: 0; padding: 0; background: transparent; }
.woocommerce-checkout .woocommerce-terms-and-conditions :is(h1, h2, h3, h4) { margin: 16px 0 6px; font: 700 15px/1.4 'Montserrat', sans-serif; letter-spacing: 0; text-transform: none; color: var(--kp-text); }
.woocommerce-checkout .woocommerce-terms-and-conditions :is(p, li, dt, dd) { font-size: 13px; line-height: 1.6; color: var(--kp-text-2); }
.woocommerce-checkout .woocommerce-terms-and-conditions > :first-child,
.woocommerce-checkout .woocommerce-terms-and-conditions .kp-legal-wrap > :first-child { margin-top: 0; }

/* §K23 (P17b) 3b: tlačítko „Zobrazit košík" v hlášce na PDP a v obchodě neutrální jako jinde (rámeček --kp-border-2, text bílý; najetí rámeček accent).
   Příznak important přebíjí !important z kp-global.css:390–391 (stejné selektory). ✓ v červeném kruhu zůstává (plocha). */
.single-product .woocommerce-message > .button, .single-product .woocommerce-message > a.wc-forward, .post-type-archive-product .woocommerce-message > .button, .post-type-archive-product .woocommerce-message > a.wc-forward, .woocommerce-shop .woocommerce-message > .button, .woocommerce-shop .woocommerce-message > a.wc-forward { background: transparent !important; border: 1px solid var(--kp-border-2) !important; color: var(--kp-text) !important; }
.single-product .woocommerce-message > .button:hover, .single-product .woocommerce-message > a.wc-forward:hover, .post-type-archive-product .woocommerce-message > .button:hover, .post-type-archive-product .woocommerce-message > a.wc-forward:hover, .woocommerce-shop .woocommerce-message > .button:hover, .woocommerce-shop .woocommerce-message > a.wc-forward:hover,
.single-product .woocommerce-message > .button:focus-visible, .single-product .woocommerce-message > a.wc-forward:focus-visible, .post-type-archive-product .woocommerce-message > .button:focus-visible, .post-type-archive-product .woocommerce-message > a.wc-forward:focus-visible, .woocommerce-shop .woocommerce-message > .button:focus-visible, .woocommerce-shop .woocommerce-message > a.wc-forward:focus-visible { background: transparent !important; border-color: var(--kp-accent) !important; color: var(--kp-text) !important; }
/* §K23 (P17b) 3c: najetí / fokus na obchodních stránkách — text bílý, červená jen v rámečku nebo lince (stejné selektory jako kp-global) */
[data-r="pagination"] a.page-numbers:hover, [data-r="pagination"] a.page-numbers:focus-visible { color: var(--kp-text); } /* kp-global.css:83 — rámeček zůstává --kp-accent */
.kp-sort-option:hover, .kp-sort-option:focus { color: var(--kp-text); } /* kp-global.css:123 — pozadí --kp-surface zůstává */
.kp-sort-option[aria-selected="true"] { color: var(--kp-text); } /* kp-global.css:124 — vybraná volba v klidu: bílá s fajfkou (sekce 3) */
.kp-cart-drawer li.woocommerce-mini-cart-item a:not(.remove):hover { color: var(--kp-text); text-decoration: underline; text-decoration-color: var(--kp-accent); text-decoration-thickness: 2px; text-underline-offset: 3px; } /* kp-global.css:130 */

/* 15) Blog a články — §K24 (P18)
   a) Karty článků .kanp-post — přesunuto beze změny z kanp-home.css sekce H (§K20): titulka [kp_latest_posts], archiv blogu, „Další články" (kp_post_card()). */
.kanp-posts { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); column-gap: 32px; }
.kanp-posts-empty { grid-column: 1 / -1; margin: 0; padding: 30px 0; text-align: center; color: var(--kp-text-3); }
.kanp-post { display: flex; flex-direction: column; gap: 14px; min-width: 0; padding-top: 24px; border-top: 1px solid var(--kp-border); color: var(--kp-text); text-decoration: none; transition: border-color .15s ease; }
.kanp-post-media { display: block; aspect-ratio: 16 / 9; overflow: hidden; border-radius: 10px; background: var(--kp-surface); }
.kanp-post-img { display: block; width: 100%; height: 100%; object-fit: cover; }
.kanp-post-cat { display: inline-flex; align-items: center; gap: 10px; font-family: var(--kanp-mono); font-size: 11px; font-weight: 500; line-height: 18px; letter-spacing: .14em; text-transform: uppercase; color: var(--kp-text-2); }
.kanp-post-cat::before { content: ""; width: 7px; height: 7px; flex: none; background: var(--kp-accent); transform: rotate(45deg); }
.kanp-post-title { margin: 0; font-size: 22px; font-weight: 700; line-height: 1.2; letter-spacing: -.01em; color: var(--kp-text); }
.kanp-post-excerpt { margin: 0; font-size: 15px; font-weight: 500; line-height: 1.6; color: var(--kp-text-3); }
.kanp-post-foot { margin-top: auto; padding-top: 6px; display: flex; align-items: center; justify-content: space-between; gap: 16px; }
.kanp-post-meta { font-family: var(--kanp-mono); font-size: 11px; font-weight: 500; line-height: 18px; letter-spacing: .06em; text-transform: uppercase; color: var(--kp-text-3); }
.kanp-post-go { display: inline-flex; align-items: center; gap: 10px; font-size: 12px; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; color: var(--kp-text); }
.kanp-post-go svg { display: block; width: 16px; height: 16px; fill: none; stroke: var(--kp-accent); stroke-width: 2.2; stroke-linecap: round; stroke-linejoin: round; }
.kanp-post:hover,
.kanp-post:focus-visible { border-top-color: var(--kp-accent); }
@media (max-width: 950px) {
	.kanp-posts { grid-template-columns: 1fr; }
	.kanp-post { padding-bottom: 28px; }
}
@media (max-width: 640px) {
	.kanp-post-title { font-size: 20px; }
}
/* b) Pruh drobečků blogu a článku (dřív inline styl v [kp_blog_archive]); levý okraj = okraj obsahu stránky na každé šířce */
.kp-crumbs { background: var(--kp-bg); border-bottom: 1px solid var(--kp-border); }
.kp-crumbs-inner { box-sizing: border-box; max-width: 1280px; height: 44px; margin: 0 auto; padding: 0 32px; display: flex; align-items: center; gap: 10px; }
@media (max-width: 1024px) { .kp-crumbs-inner { padding: 0 24px; } }
@media (max-width: 480px) { .kp-crumbs-inner { padding: 0 16px; } }
/* c) Hledání v blogu: obrys fokusu kolem celého pole podle jeho tvaru (nahrazuje pravidlo §K21 na vnitřním inputu) */
.kp-blog-search:focus-within { outline: 2px solid var(--kp-text); outline-offset: 2px; }

/* 16) Obsahové stránky — §K26 (P19a): Co je kanna #385, O naší kanně #389, O nás #373, Slovník pojmů #374, Časté dotazy #375, Kontakty #102
   (rozhodnutí Patrika 5. 10. 2026, manuál V1). Selektory jako v kp-global.css (soubor se nemění; pozdější pořadí → platí tato pravidla). */

/* a) Strojové písmo = IBM Plex Mono 500 (dřív ui-monospace, Menlo). Plex Mono je na webu jen v řezu 500. */
.kck-mono, .onk-mono, .slp-sec-count, .faq-sec-count, .faq-note, .kck-map text { font-family: var(--kanp-mono); font-weight: 500; }

/* b) Štítek nad nadpisem — vzor .kph-eyebrow: kosočtverec (vlastní span v datech), Plex Mono 12 px, --kp-text-2, bez rámečku */
.kck-pill, .onk-pill { gap: 10px; padding: 0; background: none; border: 0; border-radius: 0; }
.kck-pill-txt, .onk-pill-txt, .slp-eyebrow, .faq-eyebrow, .onas-eyebrow { font-family: var(--kanp-mono); font-size: 12px; font-weight: 500; letter-spacing: .14em; color: var(--kp-text-2); }

/* c) Štítek kapitoly B „◆ 01 · Botanika" (rozhodnutí 5. 10.): v datech jen číslo, linka pryč, kosočtverec a „·" z CSS */
.kck-chapter, .onk-chapter, .onas-chapter { gap: 0; font-family: var(--kanp-mono); font-size: 12px; font-weight: 500; line-height: 1.4; letter-spacing: .14em; text-transform: uppercase; color: var(--kp-text-2); }
.kck-chapter::before, .onk-chapter::before, .onas-chapter::before { content: ""; width: 7px; height: 7px; margin-right: 10px; flex: none; background: var(--kp-accent); transform: rotate(45deg); }
.kck-chapter-num, .onk-chapter-num, .onas-chapter-num, .kck-chapter-name, .onk-chapter-name, .onas-chapter-name { font: inherit; letter-spacing: inherit; text-transform: inherit; color: inherit; }
.kck-chapter-name::before, .onk-chapter-name::before, .onas-chapter-name::before { content: "·"; content: "·" / ""; margin: 0 .6em; }
.kck-chapter-line, .onk-chapter-line { display: none; }

/* d) Malá čísla a popisky — Plex Mono 500, šedě (dřív --kp-accent pod 24 px nebo Montserrat 800) */
.kck-toc-num, .kck-form-num, .onk-fact-num, .onk-value-num, .onk-quality-num, .onas-value-num { font-family: var(--kanp-mono); font-weight: 500; color: var(--kp-text-3); }
.kck-toc-label, [data-r="kck-hero-cap"], .onk-fact-label, [data-r="kck-map-badge"] > span:last-child, [data-r="kck-plate-foot"] > span:last-child { font-family: var(--kanp-mono); font-weight: 500; }
[data-r="kck-plate-foot"] > span:first-child { font-family: var(--kanp-mono); font-weight: 500; letter-spacing: .14em; }
.kck-namebox-label { font-family: var(--kanp-mono); font-weight: 500; letter-spacing: .14em; color: var(--kp-text-2); }
[data-r="kck-hero-note"] .kck-accent, [data-r="onk-hero-note"] .onk-accent { color: var(--kp-text-2); } /* „= „kostra"", „podle původu" */
.kck-callout-txt .kck-accent { color: var(--kp-text-3); } /* „→ Sceletium" */
.onk-client-note > span { color: var(--kp-text-2); } /* „POZN." (texty P20) */

/* e) Bez září a přechodů — plochy z palety; tlačítka bez záře */
[data-r="kck-hero-bg"], [data-r="onk-hero-bg"] { background: none; }
[data-r="kck-hero-glow"], [data-r="onk-hero-glow"], [data-r="kck-outro-watermark"], [data-r="onk-outro-watermark"] { display: none; }
.kck-hero-leaf, .onk-hero-leaf, [data-r="kck-plate-leaf"], .kck-outro-leaf, .onk-outro-leaf { filter: none; }
[data-r="kck-orbit-1"], [data-r="onk-orbit-1"], [data-r="kck-orbit-3"], [data-r="onk-orbit-3"], [data-r="kck-plate-orbit"] { border-color: var(--kp-border-2); }
[data-r="kck-orbit-4"], [data-r="onk-orbit-4"] { border-color: var(--kp-border); }
.slp-hero, [data-r="slp-hero"], .faq-hero, [data-r="faq-hero"] { background: var(--kp-bg); }
[data-r="kck-plate"] { background: var(--kp-surface); box-shadow: none; }
[data-r="kck-map-panel"] { box-shadow: none; }
/* mřížka botanické desky: linka --kp-border po 39 px jako maska místo repeating-linear-gradient (barva tahu v data URI je klíčové slovo black = jen tvar masky, vzor sekce 14) */
[data-r="kck-plate-grid"] { background: var(--kp-border); opacity: .5; -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='39' height='39'%3E%3Cpath d='M38.5 0V39M0 38.5H39' fill='none' stroke='black'/%3E%3C/svg%3E") 0 0 / 39px 39px repeat; mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='39' height='39'%3E%3Cpath d='M38.5 0V39M0 38.5H39' fill='none' stroke='black'/%3E%3C/svg%3E") 0 0 / 39px 39px repeat; }
.kck-callout-dot, .kck-legend-pin, .kck-tl-marker-now { box-shadow: none; }
.kck-callout-line { background: var(--kp-border-2); }
.kck-namebox, .kck-form-card, .kck-alkaloid-bar, .onk-quality-card, .onk-company-wide, [data-r="kck-outro-panel"], [data-r="onk-outro-panel"], .onas-cta-panel { background: var(--kp-surface); }
.onas-cta-panel { border-color: var(--kp-border); }
.slp-card:hover { background: var(--kp-surface); }
[data-r="onk-route-line"] { height: 0; background: none; border-top: 2px dashed var(--kp-accent); }
.kck-btn-primary, .onk-btn-primary { box-shadow: none; transition: filter .2s ease; }
.kck-btn-primary:hover, .onk-btn-primary:hover { transform: none; box-shadow: none; filter: brightness(1.1); }
.kck-btn-ghost, .onk-btn-ghost { border-color: var(--kp-border-2); }

/* f) Časová osa (#385): osa šedá bez přechodu, štítky událostí jako štítek produktu (sekce 11), karta „Dnes" plocha + červený rámeček */
.kck-tl-item:nth-child(n)::before { background: var(--kp-border-2); opacity: 1; }
.kck-tl-card-now { background: var(--kp-surface); border-color: var(--kp-accent); }
.kck-tl-tag { padding: 3px 8px; background: var(--kp-bg); border: 1px solid var(--kp-accent); border-radius: 4px; font-family: var(--kanp-mono); font-size: 10px; font-weight: 500; line-height: 1.3; letter-spacing: .06em; color: var(--kp-text); }
.kck-tl-tag-now { padding: 4px 8px; background: var(--kp-accent); border: 0; color: var(--kp-on-accent); }

/* g) Slovník (#374) a Časté dotazy (#375): pilulky jako kategorie v obchodě a na blogu, počet vpravo šedě, hesla bílá */
[data-r="slp-jump"], [data-r="faq-jump"] { background: var(--kp-bg); }
.slp-jump-pill, .faq-jump-pill { padding: 11px 18px; background: transparent; border: 1px solid var(--kp-border); border-radius: 999px; font-size: 11px; font-weight: 700; letter-spacing: .08em; color: var(--kp-text-2); }
.slp-jump-pill:hover, .faq-jump-pill:hover { background: transparent; border-color: var(--kp-accent); color: var(--kp-text); }
.slp-sec-head, .faq-sec-head { align-items: flex-end; justify-content: space-between; }
.slp-sec-count, .faq-sec-count { order: 2; padding-bottom: 4px; font-size: 11px; letter-spacing: .1em; text-transform: uppercase; color: var(--kp-text-3); }
.slp-term { font-weight: 700; color: var(--kp-text); }
.faq-item[open] { border-color: var(--kp-border-2); }
.faq-item[open] .faq-q::after { border-color: var(--kp-text); }

/* h) Kontakty (#102): online indikátor bez světelného kroužku. Štítky, popisky, nadpis a trojúhelníky řeší data Bricks (§K26, 3c). */
.kp-online-badge.is-on .kp-online-dot { box-shadow: none; }

/* i) §K28 (P19c): vedlejší tlačítko „outline" v závěru jako ostatní vedlejší tlačítka (rámeček --kp-border-2, při najetí --kp-accent) */
.kck-btn-outline, .onk-btn-outline { border-color: var(--kp-border-2); }
.kck-btn-outline:hover, .onk-btn-outline:hover { border-color: var(--kp-accent); }
/* j) §K28 (P19c): popisky botanické desky nad řádkem s tečkou a linkou (2 řádky × 15 px + mezera 6 px; dřív se překrývaly) */
[data-r="kck-callout-txt-l"] { top: calc(34% - 36px); }
[data-r="kck-callout-txt-r"] { top: calc(60% - 36px); }
/* k) §K28 (P19c): popisek pod listem v závěru překryje kruh plochou karty */
[data-r="kck-outro-cap"], [data-r="onk-outro-cap"] { z-index: 1; padding: 2px 8px; background: var(--kp-surface); }

/* 17) Doprava a platba — §K27 (P19b): stránka #372 ([kanp_doprava_sekce], [kanp_platba_sekce]) — štítky karet jako štítek produktu (sekce 11), bez přechodů */
.dap-eyebrow { font-family: var(--kanp-mono); font-size: 12px; font-weight: 500; letter-spacing: .14em; color: var(--kp-text-2); }
.dap-sec-head .kph-eyebrow { margin: 0 0 14px; }
.dap-zone { margin: 0 0 16px; font-family: var(--kanp-mono); font-size: 12px; font-weight: 500; letter-spacing: .14em; text-transform: uppercase; color: var(--kp-text-3); }
.dap-card { display: flex; flex-direction: column; align-items: flex-start; gap: 12px; }
.dap-card-meta { margin: 0; padding: 3px 8px; background: var(--kp-bg); border: 1px solid var(--kp-accent); border-radius: 4px; font-family: var(--kanp-mono); font-size: 10px; font-weight: 500; line-height: 1.3; letter-spacing: .06em; color: var(--kp-text); }
.dap-card-meta--fill { padding: 4px 8px; background: var(--kp-accent); border: 0; color: var(--kp-on-accent); }
.dap-card-h { margin: 0; font-size: 17px; font-weight: 700; }
.dap-card-price { margin: 0; font-size: 28px; font-weight: 700; line-height: 1; color: var(--kp-text); }
.dap-card-hl, .dap-goodbox { background: var(--kp-surface); border-color: var(--kp-border); }
dl.dap-rows { margin-bottom: 0; }
.dap-row dt, .dap-row dd { margin: 0; }
.dap-row-k { font-family: var(--kanp-mono); font-weight: 500; color: var(--kp-text-3); }
.dap-row-v { color: var(--kp-text-2); }
.dap-row-v strong { color: var(--kp-text); }
@media (max-width: 640px) { .dap-card-price { font-size: 24px; } }
/* odkaz v odpovědi FAQ a v záložce produktu (výstup [kanp_faq_odpoved], [kanp_doprava_platba_kratce]) — pravidlo chybělo: text bílý, podtržení accent jako odkazy v košíku (§K23) */
.faq-a a, .kp-content-tab a { color: var(--kp-text); text-decoration: underline; text-decoration-color: var(--kp-accent); text-underline-offset: 3px; }
.faq-a a:hover, .kp-content-tab a:hover { text-decoration-thickness: 2px; }
/* §K28 (P19c): kódy typu „Z-Point", „Z-Box" se nelámou za pomlčkou (kanp_shop_nowrap()) */
.kanp-nowrap { white-space: nowrap; }

/* 18) Systémové a právní stránky — §K29 (P20a): 404 (šablona Bricks „Systém · 404"), Přístup odepřen #368, věková brána, Můj účet #115
   a zapomenuté heslo, Mapa stránek #439, právní stránky #371 / #3 / #443 (rozhodnutí Patrika 6. 10. 2026, náhledy P20).
   Už dřív (beze změny): odkazy .kp-legal bílé s červeným podtržením (sekce 5), .kp-legal-num Plex Mono 500 --kp-text-3 (sekce 5), .kp-legal-h1 700 (sekce 6). */

/* a) Právní stránky */
.kp-legal-todo { background: var(--kp-warning); color: var(--kp-bg); border-radius: 4px; font-weight: 600; } /* dřív #FFE600 (kp-global.css:532) */
.kp-legal-row { border-bottom-color: var(--kp-border); } /* dřív #232327 (kp-global.css:525) */
.kp-legal-draft { background: var(--kp-surface); border: 1px solid var(--kp-border-2); border-left: 3px solid var(--kp-warning); border-radius: 10px; color: var(--kp-text-2); }
.kp-legal-draft strong:first-child { display: flex; align-items: center; gap: 10px; margin: 0 0 6px; font-family: var(--kanp-mono); font-size: 11px; font-weight: 500; letter-spacing: .14em; text-transform: uppercase; color: var(--kp-warning); }
.kp-legal-draft strong:first-child::before { content: ""; width: 7px; height: 7px; flex: none; background: var(--kp-warning); transform: rotate(45deg); }
.kp-legal .kph-eyebrow { margin: 0 0 14px; } /* štítek „Právní informace" nad H1 (filtr the_content, inc/kanp-system.php) */
#reklamace, #prilohy, .kp-legal-h2[id^="gdpr-"] { scroll-margin-top: 45px; } /* změřeno: sticky hlavička ≥ 951 px = 110 px (--kp-header-h), html scroll-padding-top jen 81 px (sekce 6) → 110 − 81 + 16 px mezera */
@media (max-width: 950px) { #reklamace, #prilohy, .kp-legal-h2[id^="gdpr-"] { scroll-margin-top: 16px; } } /* hlavička 61 px < scroll-padding 69 px → jen mezera */
.kp-legal-toc { margin: 24px 0 8px; padding: 20px 28px; background: var(--kp-surface); border: 1px solid var(--kp-border); border-radius: 12px; }
.kp-legal-toc-h { margin: 0 0 10px; font-family: var(--kanp-mono); font-size: 11px; font-weight: 500; letter-spacing: .14em; text-transform: uppercase; color: var(--kp-text-3); }
.kp-legal-toc ol { margin: 0; padding: 0; list-style: none; display: grid; grid-template-columns: 1fr 1fr; gap: 6px 28px; font-size: 14px; }
.kp-legal-list { margin: -4px 0 14px; padding-left: 64px; }
.kp-legal-list li { margin: 0 0 6px; }
.kp-legal-effective { padding-left: 0; margin-top: 32px; }
@media (max-width: 600px) { .kp-legal-toc { padding: 18px 20px; } .kp-legal-toc ol { grid-template-columns: 1fr; } .kp-legal-list { padding-left: 20px; } }

/* b) 404 — šablona Bricks typu error (třídy .kanp-404-*) */
.kanp-404 { background: var(--kp-bg); }
.kanp-404-inner { box-sizing: border-box; width: 100%; max-width: 1280px; margin: 0 auto; padding: 64px 32px 96px; display: grid; grid-template-columns: 1.1fr .9fr; gap: 72px; align-items: start; }
.kanp-404-main .kph-eyebrow { margin: 0 0 16px; }
.kanp-404-h1 { margin: 0 0 20px; font-family: 'Montserrat', system-ui, sans-serif; font-size: 56px; font-weight: 700; line-height: .98; letter-spacing: -.02em; text-transform: uppercase; color: var(--kp-text); } /* vzor .mpx-h1 (Mapa stránek), „nenalezena" span.kph-accent */
.kanp-404-perex { max-width: 520px; margin: 0 0 32px; font-size: 16px; line-height: 1.65; color: var(--kp-text-2); }
.kanp-404-search .bricks-search-form { display: flex; gap: 10px; max-width: 560px; }
.kanp-404-search .bricks-search-form input[type="search"] { flex: 1 1 auto; min-width: 0; height: 54px; padding: 0 18px; background: var(--kp-bg-deep); border: 1px solid var(--kp-border-2); border-radius: 10px; color: var(--kp-text); font: 500 15px 'Montserrat', system-ui, sans-serif; }
.kanp-404-search .bricks-search-form input[type="search"]::placeholder { color: var(--kp-text-3); }
.kanp-404-search .bricks-search-form input[type="search"]:focus-visible { outline: 2px solid var(--kp-text); outline-offset: 2px; }
.kanp-404-search .bricks-search-form button { flex: none; width: auto; height: 54px; padding: 0 28px; background: var(--kp-accent); border: 0; border-radius: 10px; color: var(--kp-on-accent); font: 800 13px/1 'Montserrat', system-ui, sans-serif; letter-spacing: 1.5px; text-transform: uppercase; cursor: pointer; transition: filter .2s ease; } /* jako .kph-btn-primary bez záře (sekce 16 e); width auto — Bricks dává tlačítku hledání width 60px */
.kanp-404-search .bricks-search-form button:hover { filter: brightness(1.1); }
.kanp-404-search .bricks-search-form button:focus-visible { outline: 2px solid var(--kp-text); outline-offset: 2px; }
.kanp-404-home { display: inline-block; margin-top: 24px; color: var(--kp-text); font-size: 14px; font-weight: 600; text-decoration: underline; text-decoration-color: var(--kp-accent); text-underline-offset: 3px; }
.kanp-404-home:hover { text-decoration-thickness: 2px; }
.kanp-404-card { padding: 28px 32px; background: var(--kp-surface); border: 1px solid var(--kp-border); border-radius: 16px; }
.kanp-404-card .kph-eyebrow { margin: 0 0 8px; }
.kanp-404-link { display: grid; grid-template-columns: 1fr auto; column-gap: 16px; row-gap: 2px; padding: 16px 0; border-bottom: 1px solid var(--kp-border); text-decoration: none; }
.kanp-404-link:last-child { border-bottom: 0; padding-bottom: 4px; }
.kanp-404-link-t { font-size: 15px; font-weight: 700; color: var(--kp-text); }
.kanp-404-link-d { grid-column: 1; font-size: 13px; line-height: 1.5; color: var(--kp-text-3); }
.kanp-404-link-a { grid-column: 2; grid-row: 1 / 3; align-self: center; font-size: 18px; color: var(--kp-text-3); transition: color .15s ease, transform .15s ease; }
.kanp-404-link:hover .kanp-404-link-t, .kanp-404-link:focus-visible .kanp-404-link-t { text-decoration: underline; text-decoration-color: var(--kp-accent); text-underline-offset: 3px; }
.kanp-404-link:hover .kanp-404-link-a, .kanp-404-link:focus-visible .kanp-404-link-a { color: var(--kp-accent); transform: translateX(3px); } /* šipka = symbol (aria-hidden) */
@media (max-width: 950px) { .kanp-404-inner { grid-template-columns: minmax(0, 1fr); gap: 40px; padding: 40px 24px 72px; } .kanp-404-h1 { font-size: 40px; } } /* minmax(0, 1fr): sloupec se nerozšíří podle nejdelšího slova */
@media (max-width: 480px) { .kanp-404-inner { padding: 32px 16px 56px; } .kanp-404-h1 { font-size: 34px; } /* „NENALEZENA" při 40 px přetékalo na 320 px */ .kanp-404-card { padding: 22px 20px; } .kanp-404-search .bricks-search-form button { padding: 0 18px; } }

/* c) Přístup odepřen #368 */
.kp-denied-card { box-shadow: none; border-color: var(--kp-border); }
.kp-denied-card .kph-eyebrow { justify-content: center; margin: 0 0 14px; }

/* d) Věková brána: karta bez stínu. Posouvání pod bránou je už zamčené (kp-global.css:462 html:has(body.kp-agegate-lock) { overflow: hidden }):
   scrollingElement = html, kolečko i PageDown → scrollY 0 (P20a 1e) → zámek se nemění; KP poznámka „NE overflow na body" platí (zamyká se html). */
.kp-agegate-card { box-shadow: none; border-color: var(--kp-border); }

/* e) Účet */
.woocommerce-account .woocommerce .required, #customer_login .required { color: var(--kp-text-3); } /* hvězdička povinných polí — dřív malý červený text (V1) */
[data-r="account-inner"] > .kph-eyebrow { margin: 0 0 14px; } /* štítek „Zákaznický účet" nad H1 */
[data-r="account-inner"]:has(.woocommerce-ResetPassword) > h1 { display: block; } /* §K29: H1 „Zapomenuté heslo" / „Nové heslo" viditelné (dřív skryté, account-responsive.css:102) */
.woocommerce-ResetPassword.lost_reset_password { box-sizing: border-box; max-width: 620px; margin-left: 0; padding: 40px; background: var(--kp-surface); border: 1px solid var(--kp-border); border-radius: 16px; } /* karta jako přihlášení (#customer_login .col-1: 40 px, ≤ 950 px 24 px) */
.woocommerce-account .woocommerce-ResetPassword .woocommerce-Button, .woocommerce-account .woocommerce-ResetPassword button.button[type="submit"] { text-transform: uppercase; } /* „Obnovit heslo" jako „Přihlásit se" (800 13 px, .06em, verzálky) */
.kp-lost-back { margin: 20px 0 0; font-size: 14px; }
.kp-lost-back a { color: var(--kp-text); text-decoration: underline; text-decoration-color: var(--kp-accent); text-underline-offset: 3px; }
.kp-lost-back a:hover { text-decoration-thickness: 2px; }
.woocommerce #customer_login h2 { font-weight: 700; } /* §K32 (P20d): nadpisy karet „Přihlášení" / „Registrace" — dřív 800 (account-responsive.css:46); .woocommerce zvyšuje specifičnost, account-responsive.css se načítá později */
@media (max-width: 950px) { .woocommerce-ResetPassword.lost_reset_password { padding: 24px; } }

/* f) Mapa stránek #439: odrážky kosočtverec místo trojúhelníku z rámečků (port-sitemap.css:27) */
.mpx-list a::before { width: 5px; height: 5px; border: 0; background: var(--kp-text-3); transform: rotate(45deg); flex: none; }
.mpx-list a:hover::before, .mpx-list a:focus-visible::before { background: var(--kp-accent); }
.mpx-h2 { font-weight: 700; } /* dřív 800 (port-sitemap.css:23) */

/* 19) Mapa původu — §K36 (P21d): [kanp_mapa_puvodu] na stránce Co je kanna (ID 385), sekce 02 Původ.
   SVG assets/img/kanp-mapa-puvodu-d.svg (> 640 px) a -m.svg (≤ 640 px), vložené inline; barvy jen tokeny, písmo var(--kanp-mono) 500.
   Data: Natural Earth (volné dílo), Succulent Karoo = ekoregion WWF (Olson et al. 2001) oříznutý na JAR, zjednodušeno. */
.kanp-mapa { margin: 0; }
.kanp-mapa > .kanp-mapa__svg--m { display: none; }
.kanp-mapa__cap { display: flex; justify-content: space-between; align-items: flex-end; gap: 20px; margin-top: 6px; padding: 0 2px; font-family: var(--kanp-mono); font-weight: 500; font-size: 10.5px; letter-spacing: 1px; line-height: 1.6; color: var(--kp-text-3); text-align: left; }
.kanp-mapa__cap-2 { display: block; color: var(--kp-text-2); }
.kanp-mapa__src { max-width: 300px; text-align: right; font-size: 10px; letter-spacing: .3px; line-height: 1.5; }
@media (max-width: 640px) {
  .kanp-mapa > .kanp-mapa__svg--d { display: none; }
  .kanp-mapa > .kanp-mapa__svg--m { display: block; max-width: 400px; margin: 0 auto; }
  .kanp-mapa__cap { display: block; }
  .kanp-mapa__src { display: block; max-width: none; margin-top: 6px; text-align: left; }
}
.km { display: block; width: 100%; height: auto; }
.km-ctx { fill: var(--kp-bg-deep); stroke: var(--kp-border); stroke-width: .6; }
.km-land { fill: var(--kp-surface); stroke: var(--kp-border-2); stroke-width: 1; stroke-linejoin: round; }
.km-borders { fill: none; stroke: var(--kp-border-2); stroke-width: .6; stroke-linejoin: round; }
.km-prov { fill: none; stroke: var(--kp-text-3); stroke-opacity: .45; stroke-width: .9; stroke-dasharray: 1.5 3.5; stroke-linecap: round; }
.km-river { fill: none; stroke: var(--kp-text-3); stroke-opacity: .5; stroke-width: 1; stroke-linejoin: round; }
.km-reg-fill { fill: var(--kp-accent); fill-opacity: .16; }
.km-reg-hatch { stroke: none; }
.km-hatch { stroke: var(--kp-accent); stroke-opacity: .55; stroke-width: 1.1; }
.km-reg { fill: none; stroke: var(--kp-accent); stroke-width: 1.2; stroke-dasharray: 3 2.5; stroke-linejoin: round; }
.km-reg--thin { stroke-width: .9; stroke-dasharray: none; }
.km-grat { stroke: var(--kp-border-2); stroke-width: .8; stroke-dasharray: 1.5 4; stroke-linecap: round; }
.km-t { font-family: var(--kanp-mono); font-weight: 500; font-size: 13px; letter-spacing: .14em; text-transform: uppercase; fill: var(--kp-text-3); }
.km-t--g { letter-spacing: .06em; text-transform: none; }
.km-t--hi { fill: var(--kp-text); }
.km-t--2 { fill: var(--kp-text-2); }
.km-t--o { fill-opacity: .85; letter-spacing: .24em; }
.km-t--n { letter-spacing: 0; }
.km-am { text-anchor: middle; }
.km-ae { text-anchor: end; }
.km-halo { paint-order: stroke; stroke: var(--kp-bg); stroke-width: 4px; stroke-linejoin: round; }
.km-halo-l { paint-order: stroke; stroke: var(--kp-surface); stroke-width: 4px; stroke-linejoin: round; }
.km-dot { fill: var(--kp-accent); }
.km-dot-ring { fill: var(--kp-accent); fill-opacity: .22; stroke: var(--kp-accent); stroke-width: 1; }
.km-ring { fill: var(--kp-accent); fill-opacity: .45; opacity: .25; transform-box: fill-box; transform-origin: center; }
html.kp-hp-js .is-in .km-ring { animation: kckPulse 3s ease-out infinite; }
html.kp-hp-js .is-in .km-ring--2 { animation-delay: 1.5s; }
.km-city { fill: var(--kp-bg); stroke: var(--kp-text-2); stroke-width: 1.5; }
.km-lead { fill: none; stroke: var(--kp-text-3); stroke-width: 1; }
.km-north { fill: var(--kp-accent); }
.km-frame { fill: none; stroke: var(--kp-text-2); stroke-width: 1.2; }
.km-conn { stroke: var(--kp-text-3); stroke-width: 1; stroke-dasharray: 3 3; }
.km-inset { fill: var(--kp-bg); }
.km-inset-b { fill: none; stroke: var(--kp-border-2); stroke-width: 1; }
@media (prefers-reduced-motion: reduce) {
  html.kp-hp-js .is-in .km-ring { animation: none; }
}

/* 20) Botanická deska — §K37 (P21f): [kanp_botanicka_deska] na stránce Co je kanna (ID 385), sekce 01 Botanika.
   SVG assets/img/kanp-deska-d.svg (> 640 px) a -m.svg (≤ 640 px), vložené inline; vlastní kresba podle popisu druhu
   (SANBI PlantZAfrica, Gericke & Viljoen 2008). Živé části červeně, uschlé šedě; barvy jen tokeny, písmo var(--kanp-mono) 500.
   Obrysy s pathLength="1" se po .is-in vykreslí, ostatní se potom rozsvítí; s omezením pohybu je deska hned celá. */
.kanp-deska { position: absolute; inset: 0; margin: 0; }
.kanp-deska > .kanp-deska__svg--m { display: none; }
@media (max-width: 1100px) { [data-r="kck-plate-wrap"] { width: 100%; max-width: 600px; margin: 0 auto; } }
@media (max-width: 640px) {
  .kanp-deska > .kanp-deska__svg--d { display: none; }
  .kanp-deska > .kanp-deska__svg--m { display: block; }
}
@media (max-width: 380px) { [data-r="kck-plate-fig"], [data-r="kck-plate-size"] { letter-spacing: .2px; } }
.kb { position: absolute; inset: 0; width: 100%; height: 100%; display: block; }
.kb-f, .kb-st { fill: var(--kp-surface); stroke: var(--kp-accent); stroke-width: 1.2; stroke-linejoin: round; }
.kb-fi { fill: none; stroke: var(--kp-accent); stroke-width: .7; stroke-opacity: .55; stroke-linecap: round; }
.kb-id { fill: none; stroke: var(--kp-text-2); stroke-opacity: .75; stroke-width: 2; stroke-linecap: round; }
.kb-idr { fill: var(--kp-surface); stroke: var(--kp-text-2); stroke-width: .7; stroke-opacity: .9; }
.kb-d { fill: none; stroke: var(--kp-text-2); stroke-width: .8; stroke-linejoin: round; }
.kb-d--f { fill: var(--kp-surface); }
.kb-dv { fill: none; stroke: var(--kp-text-2); stroke-width: .75; stroke-linecap: round; stroke-linejoin: round; }
.kb-dn { fill: none; stroke: var(--kp-text-3); stroke-width: .45; stroke-linecap: round; stroke-linejoin: round; }
.kb-g--a .kb-d, .kb-g--a .kb-dv { stroke: var(--kp-text-3); }
.kb-g--a .kb-dv { stroke-width: .6; }
.kb-g--a .kb-dn { stroke-opacity: .7; }
.kb-bark { fill: none; stroke: var(--kp-text-3); stroke-width: .55; stroke-linecap: round; }
.kb-cut { fill: var(--kp-surface); stroke: var(--kp-text-3); stroke-width: .8; }
.kb-n { fill: var(--kp-accent); }
.kb-nb { fill: var(--kp-accent); fill-opacity: .45; }
.kb-disc { fill: var(--kp-surface); }
.kb-sta { fill: none; stroke: var(--kp-text-2); stroke-width: 1.5; stroke-linecap: round; }
.kb-sti { fill: none; stroke: var(--kp-text); stroke-width: 1.1; stroke-linecap: round; }
.kb-scale { fill: none; stroke: var(--kp-text-2); stroke-width: 1; }
.kb-arrow { fill: none; stroke: var(--kp-text-3); stroke-width: 1; stroke-linecap: round; stroke-linejoin: round; }
.kb-dia { fill: var(--kp-accent); }
.kb-t { font-family: var(--kanp-mono); font-weight: 500; font-size: 11px; letter-spacing: .06em; fill: var(--kp-text-3); }
.kanp-deska__svg--m .kb-t { font-size: 10.5px; }
.kb-t--hi { fill: var(--kp-text-2); }
.kb-t--let { fill: var(--kp-text); }
html.kp-hp-js .kanp-deska [pathLength] { stroke-dasharray: 1; stroke-dashoffset: 1; }
html.kp-hp-js .kanp-deska .kb-g > :not([pathLength]), html.kp-hp-js .kanp-deska .kb > :not(g):not(title):not(desc) { opacity: 0; }
html.kp-hp-js .is-in .kanp-deska [pathLength] { animation: kbDraw 2.2s cubic-bezier(.33, 0, .2, 1) forwards; }
html.kp-hp-js .is-in .kanp-deska .kb-g > :not([pathLength]) { animation: kbFade .9s ease 1.2s forwards; }
html.kp-hp-js .is-in .kanp-deska .kb > :not(g):not(title):not(desc) { animation: kbFade .9s ease 1.6s forwards; }
html.kp-hp-js .is-in .kanp-deska .kb-g--b [pathLength] { animation-delay: .25s; }
html.kp-hp-js .is-in .kanp-deska .kb-g--c [pathLength] { animation-delay: .45s; }
html.kp-hp-js .is-in .kanp-deska .kb-g--d [pathLength] { animation-delay: .65s; }
html.kp-hp-js .is-in .kanp-deska .kb-g--b > :not([pathLength]) { animation-delay: 1.35s; }
html.kp-hp-js .is-in .kanp-deska .kb-g--c > :not([pathLength]) { animation-delay: 1.5s; }
html.kp-hp-js .is-in .kanp-deska .kb-g--d > :not([pathLength]) { animation-delay: 1.65s; }
@keyframes kbDraw { to { stroke-dashoffset: 0; } }
@keyframes kbFade { to { opacity: 1; } }
@media (prefers-reduced-motion: reduce) {
  html.kp-hp-js .kanp-deska [pathLength], html.kp-hp-js .is-in .kanp-deska [pathLength] { stroke-dasharray: none; stroke-dashoffset: 0; animation: none; }
  html.kp-hp-js .kanp-deska .kb-g > :not([pathLength]), html.kp-hp-js .is-in .kanp-deska .kb-g > :not([pathLength]),
  html.kp-hp-js .kanp-deska .kb > :not(g):not(title):not(desc), html.kp-hp-js .is-in .kanp-deska .kb > :not(g):not(title):not(desc) { opacity: 1; animation: none; }
}

/* 21) Znaky v hero a závěru — §K38 (P21h): [kanp_znak] na stránkách Co je kanna (ID 385) a O naší kanně (ID 389).
   Uprostřed kruhů místo stylizovaného listu: Co je kanna — hero uschlý list s kostrou žilek, závěr květ shora; O naší kanně — hero
   kvetoucí vrchol výhonu, závěr dužnatý list s vodními buňkami. SVG assets/img/kanp-znak-*.svg (kresba podle popisu druhu jako deska §K37);
   rozměr dávají původní třídy (.kck-hero-leaf ap.) z kp-global.css, tloušťku čar --kanp-sw. Barvy jen tokeny. Pod 375 px se znak
   v hero Co je kanna plynule zmenšuje (180 px na 375, 140 px na 320), jinak by se dotýkal popisků (souřadnice, „kostra“).
   Obrysy s pathLength="1" se po .is-in vykreslí, zbytek se potom rozsvítí; s omezením pohybu je znak hned celý. */
.kanp-emblem { position: relative; display: block; margin: 0 auto; overflow: visible; --kanp-sw: 1; --kanp-emb-bg: var(--kp-surface); }
.kanp-emblem.kck-hero-leaf, .kanp-emblem.onk-hero-leaf { --kanp-emb-bg: var(--kp-bg); }
.kanp-emblem.onk-hero-leaf { --kanp-sw: 1.1; }
.kanp-emblem.kck-outro-leaf, .kanp-emblem.onk-outro-leaf { --kanp-sw: 1.8; }
@media (max-width: 640px) { .kanp-emblem.kck-hero-leaf { width: min(180px, calc(72.7vw - 92.7px)); height: min(288px, calc(116.3vw - 148.3px)); } }
.kanp-emblem .ke-o { fill: none; stroke: var(--kp-accent); stroke-width: calc(1.6 * var(--kanp-sw)); stroke-linejoin: round; stroke-linecap: round; }
.kanp-emblem .ke-o--f { fill: var(--kanp-emb-bg); }
.kanp-emblem .ke-o--t { stroke-width: calc(1.35 * var(--kanp-sw)); }
.kanp-emblem .ke-v { fill: none; stroke: var(--kp-accent); stroke-opacity: .85; stroke-width: var(--kanp-sw); stroke-linecap: round; stroke-linejoin: round; }
.kanp-emblem .ke-n { fill: none; stroke: var(--kp-accent); stroke-opacity: .55; stroke-width: calc(.6 * var(--kanp-sw)); stroke-linecap: round; stroke-linejoin: round; }
.kanp-emblem .ke-k { fill: none; stroke: var(--kp-accent); stroke-opacity: .55; stroke-width: calc(.8 * var(--kanp-sw)); stroke-linecap: round; }
.kanp-emblem .ke-k--m { stroke-opacity: .35; }
.kanp-emblem .ke-id { fill: none; stroke: var(--kp-text-2); stroke-opacity: .75; stroke-width: calc(2.6 * var(--kanp-sw)); stroke-linecap: round; }
.kanp-emblem .ke-pe { fill: var(--kp-accent); }
.kanp-emblem .ke-pe--b { fill-opacity: .45; }
.kanp-emblem .ke-di { fill: var(--kanp-emb-bg); }
.kanp-emblem .ke-sa { fill: none; stroke: var(--kp-text-2); stroke-width: calc(2.4 * var(--kanp-sw)); stroke-linecap: round; }
.kanp-emblem .ke-sa--s { stroke-width: calc(2.2 * var(--kanp-sw)); }
.kanp-emblem .ke-sg { fill: none; stroke: var(--kp-text); stroke-width: calc(1.8 * var(--kanp-sw)); stroke-linecap: round; }
.kanp-emblem .ke-sg--s { stroke-width: calc(1.6 * var(--kanp-sw)); }
.kanp-emblem .ke-r { fill: none; stroke: var(--kp-accent); stroke-opacity: .6; stroke-width: calc(.8 * var(--kanp-sw)); }
html.kp-hp-js .kanp-emblem [pathLength] { stroke-dasharray: 1; stroke-dashoffset: 1; }
html.kp-hp-js .kanp-emblem .ke-o--f { fill-opacity: 0; }
html.kp-hp-js .kanp-emblem .ke-g > :not([pathLength]) { opacity: 0; }
html.kp-hp-js .is-in .kanp-emblem [pathLength] { animation: keDraw 1.8s cubic-bezier(.33, 0, .2, 1) forwards; }
html.kp-hp-js .is-in .kanp-emblem .ke-o--f { animation: keDraw 1.8s cubic-bezier(.33, 0, .2, 1) forwards, keFill .8s ease .9s forwards; }
html.kp-hp-js .is-in .kanp-emblem .ke-g > :not([pathLength]) { animation: keFade .8s ease 1s forwards; }
@keyframes keDraw { to { stroke-dashoffset: 0; } }
@keyframes keFill { to { fill-opacity: 1; } }
@keyframes keFade { to { opacity: 1; } }
@media (prefers-reduced-motion: reduce) {
  html.kp-hp-js .kanp-emblem [pathLength], html.kp-hp-js .is-in .kanp-emblem [pathLength] { stroke-dasharray: none; stroke-dashoffset: 0; animation: none; }
  html.kp-hp-js .kanp-emblem .ke-o--f, html.kp-hp-js .is-in .kanp-emblem .ke-o--f { fill-opacity: 1; animation: none; }
  html.kp-hp-js .kanp-emblem .ke-g > :not([pathLength]), html.kp-hp-js .is-in .kanp-emblem .ke-g > :not([pathLength]) { opacity: 1; animation: none; }
}

/* 22) O naší kanně, Původ dodávek — §K40 (P21m): odstavce pod sebou vpravo, karty na střed od 951 px (na mobilu vlevo jako dosud) */
.onk-origin .onk-sec-head2 { align-items: start; }
.onk-origin-copy { display: flex; flex-direction: column; gap: 18px; }
.onk-origin-copy .onk-lead { margin: 0; font-size: 15px; }
@media (min-width: 951px) {
  .onk-origin .onk-route-step { text-align: center; }
  .onk-origin .onk-route-txt { max-width: 320px; margin-left: auto; margin-right: auto; }
}
/* Můj účet — §K40 (P21m): obal stránky main.woocommerce zůstává blokem i po přihlášení. Pravidlo account-responsive.css ř. 8 (flex řádek s navigací účtu) míří na obal shortcodu účtu, ale třídu woocommerce má i main, takže drobečky a sekce účtu stály vedle sebe. */
.woocommerce-account main.woocommerce:has(.woocommerce-MyAccount-navigation) { display: block; }

/* 23) Titulka, upoutávka „Co je kanna“ — §K41 (P21n): [kanp_znak tvar="rostlina" trida="kph-teaser-leaf"] na titulce (ID 60) místo stylizovaného listu.
   Znak celé rostliny: výhonek s dužnatými listy a květem, dole uschlé listy s kostrou žilek (na ně ukazuje poznámka „Sceletium = kostra“).
   Uschlé části šedě jako na botanické desce (§K37), živé červeně (sekce 21). Kruhy a popisky jako v hero a závěru obsahových stránek
   (sekce 16 e, k): čárkovaný kruh --kp-border-2, popisky Plex Mono 10,5 px s plochou karty pod sebou, takže kruh pod nimi nepřechází.
   Prostor se znakem 380 px (do 640 px 360 px), souřadnice jsou pod znakem; dřív list přecházel přes „30° j. š.“ a od 375 px dolů i přes
   poznámku. Do 640 px menší kruhy i znak, pod 362 px plynule podle šířky karty; pod 360 px užší proložení souřadnic, aby nepřetékaly z karty. */
.kanp-emblem .ke-d { fill: none; stroke: var(--kp-text-3); stroke-width: calc(1.1 * var(--kanp-sw)); stroke-linejoin: round; stroke-linecap: round; }
.kanp-emblem .ke-d--f { fill: var(--kanp-emb-bg); }
.kanp-emblem .ke-dv { fill: none; stroke: var(--kp-text-3); stroke-width: calc(.7 * var(--kanp-sw)); stroke-linecap: round; stroke-linejoin: round; }
.kanp-emblem .ke-dn { fill: none; stroke: var(--kp-text-3); stroke-opacity: .7; stroke-width: calc(.45 * var(--kanp-sw)); stroke-linecap: round; stroke-linejoin: round; }
.kanp-emblem .ke-b { fill: none; stroke: var(--kp-text-3); stroke-width: calc(.6 * var(--kanp-sw)); stroke-linecap: round; }
.kanp-emblem .ke-cut { fill: var(--kanp-emb-bg); stroke: var(--kp-text-3); stroke-width: calc(.8 * var(--kanp-sw)); }
[data-r="kph-orbit-1"] { border-color: var(--kp-border-2); }
[data-r="kph-teaser-visual"] { min-height: 380px; }
.kanp-emblem.kph-teaser-leaf { --kanp-sw: 1.35; }
[data-r="kph-teaser-note"], [data-r="kph-teaser-coords"] { z-index: 1; background: var(--kp-surface); font-family: var(--kanp-mono); font-weight: 500; font-size: 10.5px; letter-spacing: 1.2px; line-height: 1.9; color: var(--kp-text-3); }
[data-r="kph-teaser-note"] { top: 0; right: 0; padding: 0 2px 2px 8px; }
[data-r="kph-teaser-coords"] { bottom: 0; padding: 2px 8px; }
[data-r="kph-teaser-coords"] .kph-mono { font-size: inherit; letter-spacing: inherit; color: inherit; }
.kph-teaser-coords-sub { margin-top: 0; font-family: var(--kanp-mono); font-size: inherit; font-weight: 500; letter-spacing: inherit; text-transform: none; color: var(--kp-text-2); }
.kph-teaser-hl { color: var(--kp-text-2); }
@media (max-width: 640px) {
  [data-r="kph-teaser-visual"] { min-height: 360px; }
  [data-r="kph-orbit-1"] { width: min(300px, calc(100vw - 62px)); height: min(300px, calc(100vw - 62px)); }
  [data-r="kph-orbit-2"] { width: min(228px, calc(76vw - 47px)); height: min(228px, calc(76vw - 47px)); }
  .kanp-emblem.kph-teaser-leaf { --kanp-sw: 1.5; width: min(154px, calc(51.5vw - 32px)); height: min(247px, calc(82.4vw - 51px)); }
}
@media (max-width: 359px) { [data-r="kph-teaser-coords"] { padding: 2px 4px; letter-spacing: .4px; } }

/* 24) Titulka, hero — orbita a plovoucí lahvičky — §K47 (P22h; nahrazuje §K42 z P21o), doladění §K48 (P22i): [kanp_hero_produkt] (Bricks kzhpro, třída kph-hero-prod)
   vpravo od textu, svisle na střed textu; varianta B z plátna „KannaPower — hero titulky“ (rozhodnutí Patrika 8. 10.). Vizuál je přichycený ke sloupci
   obsahu, ne k okraji okna, takže na 1440 i 2560 px vypadá stejně (dřívější vodoznak z kanp-home.css B ujížděl doprava, je pryč).
   Rozměry v jednotkách --u (1 px při plné velikosti): sloupec 484 × 700, střed orbity 340 od horní hrany, orbita 640 (čárkovaná, otáčí se 140 s,
   2 kosočtverce), kotouč 500, souřadnice vlevo nahoře, skupina lahviček 456 × 501 (poměr 920 : 1010 z kompozice P21o), vrstvy v % skupiny.
   Od 1101 do 1280 px se vše zmenšuje se šířkou okna. Od 1101 do 1420 px se vizuál posouvá doleva (nejvýš 70 px), aby orbita držela 16 px od okraje okna
   (střed sloupce = 50vw + 374 px podle mřížky hera: max 1280, okraje 24, text 700, mezera 48; při změně mřížky přepočítat). Do 1100 px podle šířky okna,
   nejvýš 0,75 px (vizuál 525 px místo 700; §K48 P22i, rozhodnutí Patrika 8. 10.), a souřadnice se schovají.
   Každá lahvička plave svým tempem (6,4–7,9 s, 8–12 jednotek); při prefers-reduced-motion stojí lahvičky i orbita. */
[data-r="kph-hero-grid"] > .kph-hero-prod { align-self: center; }
[data-r="kph-hero-grid"] > .kph-hero-prod:empty { display: none; }
.kanp-hero-orb { --u: min(1px, calc((100vw - 640px) / 640)); position: relative; left: calc(-1 * clamp(0px, calc(710px - 50vw), 70px)); height: calc(700 * var(--u)); margin: 0; }
.kanp-hero-orb__ring,
.kanp-hero-orb__disc { position: absolute; left: 50%; top: calc(340 * var(--u)); box-sizing: border-box; border-radius: 50%; pointer-events: none; }
.kanp-hero-orb__ring { width: calc(640 * var(--u)); height: calc(640 * var(--u)); margin: calc(-320 * var(--u)) 0 0 calc(-320 * var(--u)); border: 1px dashed var(--kp-border-2); animation: kanpOrbSpin 140s linear infinite; }
.kanp-hero-orb__ring > i { position: absolute; left: 89.4%; top: 19.2%; width: calc(9 * var(--u)); height: calc(9 * var(--u)); margin: calc(-4.5 * var(--u)) 0 0 calc(-4.5 * var(--u)); background: var(--kp-accent); transform: rotate(45deg); }
.kanp-hero-orb__ring > i + i { left: 10.6%; top: 80.8%; width: calc(7 * var(--u)); height: calc(7 * var(--u)); margin: calc(-3.5 * var(--u)) 0 0 calc(-3.5 * var(--u)); opacity: .6; }
.kanp-hero-orb__disc { width: calc(500 * var(--u)); height: calc(500 * var(--u)); margin: calc(-250 * var(--u)) 0 0 calc(-250 * var(--u)); border: 1px solid var(--kp-border); background: rgba(var(--kp-surface-rgb), .6); }
.kanp-hero-orb__coords { position: absolute; right: calc(100% - 4 * var(--u)); top: calc(35 * var(--u)); font-family: var(--kanp-mono); font-size: 11px; font-weight: 500; line-height: 1.7; letter-spacing: .14em; text-transform: uppercase; text-align: right; white-space: nowrap; color: var(--kp-text-3); pointer-events: none; }
.kanp-hero-orb__coords > span { color: var(--kp-text-2); }
.kanp-hero-orb__group { position: absolute; left: 50%; top: calc(90 * var(--u)); width: calc(456 * var(--u)); height: calc(501 * var(--u)); margin-left: calc(-228 * var(--u)); }
.kanp-hero-orb__b { position: absolute; display: block; max-width: none; object-fit: contain; object-position: 50% 100%; --a: 8; animation: kanpOrbFloat 7.2s ease-in-out -1.1s infinite; }
.kanp-hero-orb__b--1 { left: -.28%; bottom: 10.4%; width: 25.67%; height: 70%; z-index: 1; }
.kanp-hero-orb__b--2 { left: 14.32%; bottom: 5.94%; width: 31.15%; height: 84.95%; z-index: 2; --a: 10; animation-duration: 6.4s; animation-delay: -3.2s; }
.kanp-hero-orb__b--3 { left: 31.67%; bottom: 0; width: 36.67%; height: 100%; z-index: 3; --a: 12; animation-duration: 7.6s; animation-delay: 0s; }
.kanp-hero-orb__b--4 { left: 54.53%; bottom: 5.94%; width: 31.15%; height: 84.95%; z-index: 2; --a: 10; animation-duration: 6.8s; animation-delay: -2.4s; }
.kanp-hero-orb__b--5 { left: 74.61%; bottom: 10.4%; width: 25.67%; height: 70%; z-index: 1; animation-duration: 7.9s; animation-delay: -4.6s; }
.kanp-hero-orb__fallback { position: absolute; left: 0; bottom: 0; display: block; width: 100%; height: auto; max-width: none; }
@keyframes kanpOrbSpin { to { transform: rotate(360deg); } }
@keyframes kanpOrbFloat { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(calc(var(--a) * var(--u) * -1)); } }
@media (max-width: 1100px) {
  [data-r="kph-hero-grid"] > .kph-hero-prod { margin-top: 8px; }
  .kanp-hero-orb { --u: min(.75px, calc((100vw - 8px) / 640)); left: 0; }
  .kanp-hero-orb__coords { display: none; }
}
@media (prefers-reduced-motion: reduce) { .kanp-hero-orb__ring, .kanp-hero-orb__b { animation: none; } }
/* Doplněk §K41 (P21o): vnější kruh upoutávky „Co je kanna“ bez max-width 100 % z Bricks, aby zůstal kruhem i tam, kde je vizuál užší (951 px, mobil). */
[data-r="kph-orbit-1"] { max-width: none; }

/* 25) Titulka, nadpis hera do 359 px — §K43 (P21p): nejdelší slovo „JIHOAFRICKÁ“ má při spodní mezi 44 px (kanp-home.css B) asi 306 px,
   obsah mřížky hera na 320–340 px jen 280–300 px. Nadpis se ořízl (overflow hera) a roztáhl sloupec, takže tlačítka, parametry
   i obrázek přesahovaly vpravo. Do 359 px se písmo zmenšuje se šířkou displeje (asi 39 px na 320), od 360 px beze změny. */
@media (max-width: 359px) { [data-r="kph-hero"] .kph-hero-copy .kph-hero-h1 { font-size: min(44px, calc((100vw - 40px) / 7.2)); } }

/* 26) Drobečky článků — §K44 (P22a): navigace .kp-article-breadcrumb (article-responsive.css, §K24) má line-height 1 a overflow: hidden,
   takže písmu 11 px ořízne asi 2 px nahoře i dole (kroužek nad Ů v „DOMŮ“, „PŮVOD“). Řádek 1,5 (16,5 px, jako meta článku) pojme celé
   písmo. Pruh .kp-crumbs-inner má pevnou výšku 44 px a navigaci svisle centruje, takže se text neposune. Platí na všech šířkách. */
.kp-crumbs-inner .kp-article-breadcrumb { line-height: 1.5; }

/* 27) Titulka, tlačítka hera do 359 px — §K44 (P22a): na 320 px má obsah mřížky hera 280 px (od P21p ho už neroztahuje nadpis) a popisky
   „PROHLÉDNOUT NABÍDKU →“ (asi 224 px) a „NAKUPOVAT PODLE FORMY“ (asi 222 px) se při bočním odsazení 30 / 28 px lámaly na 2 řádky.
   Do 359 px boční odsazení 20 px, popisky se vejdou na 1 řádek; text-align pro zalomení pod 320 px. Od 360 px beze změny. */
@media (max-width: 359px) { [data-r="kph-hero"] .kph-hero-ctas .kph-btn { padding-left: 20px; padding-right: 20px; text-align: center; } }

/* 28) Zalamování odstavců — §K45 (P22b): text-wrap-style: pretty zabrání osamocenému slovu na posledním řádku odstavce a vyrovná
   konce řádků (perex hera na 390 px končil slovem „složením.“). Chrome a Edge 130+, Safari 26+; Firefox ho přeskočí a zalomí jako dřív.
   Mění jen styl zalamování, ne režim: white-space: nowrap a text-wrap-mode: nowrap dál platí. Specificita 0,0,1, takže vlastní
   nastavení zalamování u tříd má přednost. */
p, li, dd, figcaption { text-wrap-style: pretty; }

/* 29) Balení u položek — §K46 (P22c): „Balení: 1 g“ pod názvem položky v zásuvce košíku, v košíku a v souhrnu pokladny
   (wc_get_formatted_cart_item_data, dl.variation). Popisek jako klíče parametrů hera (Plex Mono 500, verzálky), hodnota bez
   verzálek, aby jednotky zůstaly „g“ a „ml“ (zásuvka měla verzálky na celém řádku, kp-global.css). Ostatní rozměry zásuvky beze změny. */
.kp-cart-drawer li.woocommerce-mini-cart-item dl.variation { align-items: baseline; letter-spacing: 0; text-transform: none; }
.shop_table.cart .product-name dl.variation,
.woocommerce-checkout-review-order-table .kp-review-meta dl.variation { display: flex; flex-wrap: wrap; align-items: baseline; gap: 2px 8px; margin: 0; }
.kp-cart-drawer li.woocommerce-mini-cart-item dl.variation dt,
.shop_table.cart .product-name dl.variation dt,
.woocommerce-checkout-review-order-table .kp-review-meta dl.variation dt { margin: 0; font: 500 10px/1.4 var(--kanp-mono); letter-spacing: .14em; text-transform: uppercase; color: var(--kp-text-3); }
.kp-cart-drawer li.woocommerce-mini-cart-item dl.variation dd,
.shop_table.cart .product-name dl.variation dd,
.woocommerce-checkout-review-order-table .kp-review-meta dl.variation dd { margin: 0; font: 600 12px/1.4 'Montserrat', sans-serif; letter-spacing: 0; text-transform: none; color: var(--kp-text-2); }
.kp-cart-drawer li.woocommerce-mini-cart-item dl.variation dd p,
.shop_table.cart .product-name dl.variation dd p,
.woocommerce-checkout-review-order-table .kp-review-meta dl.variation dd p { margin: 0; }

/* 30) Stránka produktu, alkaloidy — §K49 (P22j): [kanp_alkaloidy] mezi řadou výhod a kartou s popisem (Bricks šablona produktu, prvek kpalk1)
   a [kanp_alkaloidy_souhrn] v panelu nákupu pod krátkým popisem (kpalk2). Varianta A „Skládaný pruh“ z plátna „KannaPower — alkaloidové
   spektrum produktu“ (rozhodnutí Patrika 8. 10.). Karta jako karta s popisem a řada výhod (plocha, rámeček, rádius 10 px).
   Barvy profilu: mesembrin akcent, mesembrenon text-2, ∆7-mesembrenon text-3 (liší se i světlostí); v porovnání ostatní produkty border-3,
   dráha surface-3. Šířky dílků a pruhů posílá PHP v proměnných --w, --w1, --w2, --x. Do 950 px jeden sloupec a porovnání s pruhem pod názvem, do 767 px menší okraje a řádky pod sebou.
   P22k: hodnoty klíčových údajů se zalamují vyváženě (text-wrap: balance), popisek do 767 px nejde pod šířku nejdelšího slova. */
.kanp-alk { margin-top: 56px; padding: 48px 56px 52px; background: var(--kp-surface); border: 1px solid var(--kp-border); border-radius: 10px; scroll-margin-top: calc(var(--kp-header-h) + 20px); }
.kanp-alk__eyebrow { display: flex; align-items: center; gap: 12px; margin: 0; font-family: var(--kanp-mono); font-size: 12px; font-weight: 500; line-height: 1.4; letter-spacing: .14em; text-transform: uppercase; color: var(--kp-text-2); }
.kanp-alk__eyebrow::before { content: ""; width: 8px; height: 8px; flex: none; background: var(--kp-accent); transform: rotate(45deg); }
.kanp-alk__h2 { margin: 16px 0 0; font-size: 32px; font-weight: 700; line-height: 1.15; letter-spacing: -.02em; color: var(--kp-text); }
.kanp-alk__lead { margin: 12px 0 0; max-width: 640px; font-size: 15px; font-weight: 500; line-height: 1.65; color: var(--kp-text-3); }
.kanp-alk__grid { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: 56px; margin-top: 40px; }
.kanp-alk__stats { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; margin: 0; }
.kanp-alk__stats > div { padding: 18px 20px; border: 1px solid var(--kp-border); border-radius: 10px; }
.kanp-alk__stats dt { font-family: var(--kanp-mono); font-size: 11px; font-weight: 500; line-height: 1.5; letter-spacing: .14em; text-transform: uppercase; color: var(--kp-text-3); }
.kanp-alk__stats dd { margin: 10px 0 0; font-size: 40px; font-weight: 700; line-height: 1; letter-spacing: -.02em; white-space: nowrap; color: var(--kp-text); }
.kanp-alk__stats dd .kanp-alk__sub { display: block; margin-top: 8px; font-size: 15px; font-weight: 500; line-height: 1.3; letter-spacing: 0; white-space: normal; color: var(--kp-text-3); } /* §K87 (P47): „v balení 10 ml“ pod „48 mg“ u tekutého */
.kanp-alk__label { margin: 36px 0 0; font-family: var(--kanp-mono); font-size: 11px; font-weight: 500; line-height: 1.5; letter-spacing: .14em; text-transform: uppercase; color: var(--kp-text-3); }
.kanp-alk__label--top { margin-top: 0; }
.kanp-alk__bar { display: flex; gap: 2px; height: 14px; margin-top: 14px; border-radius: 7px; overflow: hidden; background: var(--kp-surface-3); }
.kanp-alk__seg { display: block; flex: var(--w) 1 0; min-width: 0; }
.kanp-alk__seg--1 { background: var(--kp-accent); }
.kanp-alk__seg--2 { background: var(--kp-text-2); }
.kanp-alk__seg--3 { background: var(--kp-text-3); }
.kanp-alk__legend { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; margin: 16px 0 0; padding: 0; list-style: none; }
.kanp-alk__legend > li { margin: 0; }
.kanp-alk__name { display: flex; align-items: center; gap: 8px; font-size: 13px; font-weight: 500; line-height: 1.4; color: var(--kp-text-2); }
.kanp-alk__name::before { content: ""; width: 10px; height: 10px; flex: none; border-radius: 2px; background: var(--kp-accent); }
.kanp-alk__legend-item--2 .kanp-alk__name::before { background: var(--kp-text-2); }
.kanp-alk__legend-item--3 .kanp-alk__name::before { background: var(--kp-text-3); }
.kanp-alk__val { display: block; margin-top: 6px; font-size: 22px; font-weight: 700; line-height: 1.2; white-space: nowrap; color: var(--kp-text); }
.kanp-alk__note { margin: 14px 0 0; font-size: 12px; font-weight: 500; line-height: 1.6; color: var(--kp-text-3); }
.kanp-alk__osa { display: none; }
.kanp-alk__info { margin-top: 24px; padding: 18px 20px; border: 1px dashed var(--kp-border-2); border-radius: 10px; }
.kanp-alk__info p { margin: 0; font-size: 13px; font-weight: 500; line-height: 1.6; color: var(--kp-text-3); }
.kanp-alk__info a { display: inline-block; margin-top: 8px; padding: 3px 0; font-size: 13px; font-weight: 600; color: var(--kp-text-2); text-decoration: underline; text-decoration-color: var(--kp-accent); text-underline-offset: 3px; }
.kanp-alk__facts { margin: 14px 0 0; border-top: 1px solid var(--kp-border); }
.kanp-alk__facts > div { display: flex; justify-content: space-between; align-items: baseline; gap: 16px; padding: 12px 0; border-bottom: 1px solid var(--kp-surface-2); }
.kanp-alk__facts dt { flex: none; font-family: var(--kanp-mono); font-size: 11px; font-weight: 500; line-height: 1.4; letter-spacing: .14em; text-transform: uppercase; color: var(--kp-text-3); }
.kanp-alk__facts dd { margin: 0; font-size: 14px; font-weight: 500; line-height: 1.4; text-align: right; text-wrap: balance; color: var(--kp-text); }
.kanp-alk__rada { margin-top: 48px; padding-top: 36px; border-top: 1px solid var(--kp-border); scroll-margin-top: calc(var(--kp-header-h) + 20px); }
.kanp-alk__rows { margin: 14px 0 0; padding: 0; list-style: none; }
.kanp-alk__row { display: grid; grid-template-columns: 300px minmax(0, 1fr) 110px; align-items: center; gap: 20px; margin: 0; padding: 9px 0; }
.kanp-alk__product { min-width: 0; font-size: 14px; font-weight: 500; line-height: 1.4; color: var(--kp-text-3); }
.kanp-alk__product a { color: inherit; text-decoration: none; }
.kanp-alk__product a:hover,
.kanp-alk__product a:focus-visible { color: var(--kp-text); text-decoration: underline; text-decoration-color: var(--kp-accent); text-underline-offset: 3px; }
.kanp-alk__pack { margin-left: 8px; font-family: var(--kanp-mono); font-size: 10px; font-weight: 500; letter-spacing: .08em; white-space: nowrap; color: var(--kp-text-3); }
.kanp-alk__track { position: relative; display: block; height: 10px; border-radius: 5px; background: var(--kp-surface-3); }
.kanp-alk__fill { position: absolute; top: 0; bottom: 0; left: 0; width: var(--w1); border-radius: 5px; background: var(--kp-border-3); }
.kanp-alk__fill--rozsah { left: var(--w1); width: var(--w2); border-radius: 0 5px 5px 0; opacity: .45; }
.kanp-alk__mg { font-family: var(--kanp-mono); font-size: 13px; font-weight: 500; text-align: right; white-space: nowrap; color: var(--kp-text-3); }
.kanp-alk__row.is-current .kanp-alk__product { font-weight: 700; color: var(--kp-text); }
.kanp-alk__row.is-current .kanp-alk__fill { background: var(--kp-accent); }
.kanp-alk__row.is-current .kanp-alk__mg { color: var(--kp-text); }
.kanp-alk__axis { display: grid; grid-template-columns: 300px minmax(0, 1fr) 110px; gap: 20px; margin-top: 6px; font-family: var(--kanp-mono); font-size: 10px; font-weight: 500; line-height: 14px; color: var(--kp-text-3); }
.kanp-alk__ticks { position: relative; grid-column: 2; height: 14px; }
.kanp-alk__ticks > span { position: absolute; top: 0; left: var(--x); transform: translateX(-50%); white-space: nowrap; }
.kanp-alk__unit { grid-column: 3; }
.kanp-alk__sr { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }
.kanp-alk-souhrn { margin: 0 0 24px; padding: 14px 16px 13px; border: 1px solid var(--kp-border); border-radius: 10px; }
.kanp-alk-souhrn__top,
.kanp-alk-souhrn__bottom { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: baseline; gap: 4px 12px; margin: 0; }
.kanp-alk-souhrn__label { font-family: var(--kanp-mono); font-size: 11px; font-weight: 500; letter-spacing: .14em; text-transform: uppercase; color: var(--kp-text-3); }
.kanp-alk-souhrn__val { font-size: 15px; font-weight: 700; white-space: nowrap; color: var(--kp-text); }
.kanp-alk-souhrn__sub { font-weight: 500; color: var(--kp-text-3); }
.kanp-alk-souhrn__bar { height: 6px; margin-top: 11px; border-radius: 3px; }
.kanp-alk-souhrn__bottom { margin-top: 7px; font-size: 12px; font-weight: 500; line-height: 1.5; color: var(--kp-text-3); }
.kanp-alk-souhrn__bottom a { padding: 3px 0; color: var(--kp-text-2); text-decoration: underline; text-decoration-color: var(--kp-accent); text-underline-offset: 3px; }
@media (max-width: 950px) {
  .kanp-alk__grid { grid-template-columns: minmax(0, 1fr); gap: 40px; }
  .kanp-alk__row { grid-template-columns: minmax(0, 1fr) auto; grid-template-areas: "nazev mg" "pruh pruh"; gap: 8px 12px; }
  .kanp-alk__product { grid-area: nazev; }
  .kanp-alk__mg { grid-area: mg; }
  .kanp-alk__track { grid-area: pruh; }
  .kanp-alk__axis { grid-template-columns: minmax(0, 1fr); }
  .kanp-alk__ticks { grid-column: 1; }
  .kanp-alk__unit { display: none; }
  .kanp-alk__osa { display: inline; }
}
@media (max-width: 767px) {
  .kanp-alk { margin-top: 32px; padding: 28px 20px; }
  .kanp-alk__eyebrow { font-size: 11px; }
  .kanp-alk__h2 { margin-top: 14px; font-size: 26px; }
  .kanp-alk__lead { margin-top: 10px; font-size: 14px; line-height: 1.6; }
  .kanp-alk__grid { gap: 32px; margin-top: 24px; }
  .kanp-alk__stats { grid-template-columns: minmax(0, 1fr); gap: 0; border: 1px solid var(--kp-border); border-radius: 10px; }
  .kanp-alk__stats > div { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 14px 16px; border: 0; border-radius: 0; }
  .kanp-alk__stats > div + div { border-top: 1px solid var(--kp-border); }
  .kanp-alk__stats dt { flex: 1 1 auto; min-width: 0; letter-spacing: .12em; }
  .kanp-alk__stats dd { flex: none; margin: 0; font-size: 24px; }
  .kanp-alk__stats dd .kanp-alk__sub { margin-top: 4px; font-size: 12px; text-align: right; } /* §K87 (P47) */
  .kanp-alk__label { margin-top: 28px; }
  .kanp-alk__label--top { margin-top: 0; }
  .kanp-alk__bar { height: 12px; margin-top: 12px; border-radius: 6px; }
  .kanp-alk__legend { grid-template-columns: minmax(0, 1fr); gap: 0; margin-top: 6px; }
  .kanp-alk__legend > li { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 10px 0; border-bottom: 1px solid var(--kp-surface-2); }
  .kanp-alk__name { font-size: 14px; }
  .kanp-alk__val { margin: 0; font-size: 16px; }
  .kanp-alk__facts dt { flex: 1 1 0; letter-spacing: .12em; }
  .kanp-alk__facts dd { flex: 0 1 auto; max-width: 65%; }
  .kanp-alk__rada { margin-top: 36px; padding-top: 28px; }
  .kanp-alk__product { font-size: 13px; }
  .kanp-alk__mg { font-size: 12px; }
  .kanp-alk__track { height: 8px; border-radius: 4px; }
  .kanp-alk__fill { border-radius: 4px; }
  .kanp-alk__fill--rozsah { border-radius: 0 4px 4px 0; }
}

/* 31) Stránka produktu, popis a porovnání na telefonu — §K50 (P22l), rozhodnutí Patrika 8. 10. (plátno „KannaPower — stránka produktu:
   popis a porovnání“: varianta A, sloupce podle nadpisu a značky Více, porovnání zavřené do 767 px, okraje 20 px).
   [kanp_sloupce_popisu] (prvek kppn01) je v záložce Popis nad příběhem rostliny (kpst01): 1. sloupec text, 2. sloupec od prvního nadpisu
   (dnes „Specifikace“) nebo od značky Více; seznam ve 2. sloupci jako řádky s linkami (jako Klíčové údaje). Novinové sloupce
   záložky z product-responsive.css tu nahrazuje mřížka; příběh odděluje linka. Okraje těla karty jsou tady místo inline stylu
   šablony (bce16b), do 767 px 24 / 20 / 28 px. Porovnání celé řady (sekce 30) do 767 px: tlačítko v nadpisu a zavřený obsah
   (assets/js/kanp-alkaloidy.js), bez JS otevřené. */
[data-r="detail-body"] { padding: 36px 40px 44px; }
[data-r="tab-body"][data-kp-tab-pane="popis"] { column-count: auto; }
.kanp-popis { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 40px; align-items: start; }
.kanp-popis--jeden { display: block; max-width: 640px; }
.kanp-popis__sloupec > :last-child,
.kanp-popis--jeden > :last-child { margin-bottom: 0; }
.kanp-popis__sloupec--1 ul,
.kanp-popis--jeden ul { margin: 0 0 14px; padding-left: 20px; list-style: disc; }
.kanp-popis__sloupec--1 ol,
.kanp-popis--jeden ol { margin: 0 0 14px; padding-left: 20px; list-style: decimal; }
.kanp-popis__sloupec--1 li,
.kanp-popis--jeden li { margin: 0 0 6px; font-size: 13.5px; font-weight: 500; line-height: 1.75; color: var(--kp-text-2); }
.kanp-popis__sloupec--2 ul,
.kanp-popis__sloupec--2 ol { margin: 0 0 14px; padding: 0; list-style: none; border-top: 1px solid var(--kp-border); }
.kanp-popis__sloupec--2 li { margin: 0; padding: 10px 0; border-bottom: 1px solid var(--kp-surface-2); font-size: 13.5px; font-weight: 500; line-height: 1.6; color: var(--kp-text-2); }
[data-kp-tab-pane="popis"] > .brxe-shortcode + .brxe-shortcode .kp-story { margin-top: 44px; padding-top: 40px; border-top: 1px solid var(--kp-border); }
.kanp-alk__rada-prepinac { display: flex; align-items: center; justify-content: space-between; gap: 12px; width: 100%; min-height: 48px; margin: 0; padding: 14px 0; background: transparent; border: 0; border-radius: 0; font: inherit; letter-spacing: .12em; text-transform: inherit; text-align: left; color: var(--kp-text-2); cursor: pointer; }
.kanp-alk__rada-prepinac > span:first-child { text-wrap: balance; }
.kanp-alk__rada-prepinac:focus-visible { outline: 2px solid var(--kp-text); outline-offset: 3px; }
.kanp-alk__rada-ikona::before { content: "+"; font: 800 18px/1 'Montserrat', sans-serif; color: var(--kp-accent); }
.kanp-alk__rada.is-open .kanp-alk__rada-ikona::before { content: "\2212"; }
@media (max-width: 950px) {
  .kanp-popis { grid-template-columns: minmax(0, 1fr); row-gap: 28px; }
  [data-kp-tab-pane="popis"] > .brxe-shortcode + .brxe-shortcode .kp-story { margin-top: 32px; padding-top: 32px; }
}
@media (max-width: 767px) {
  [data-r="detail-body"] { padding: 24px 20px 28px; }
  .kanp-alk__rada.is-rozevirac { padding-top: 0; }
  .kanp-alk__rada.is-rozevirac .kanp-alk__rows { margin-top: 2px; }
}

/* 32) Další články pod článkem — §K52 (P22n), rozhodnutí Patrika 9. 10.: 2 karty (na blogu jsou 3 články, pod článkem tedy 2)
   se od 951 px roztáhnou do 2 stejných sloupců na celou šířku. Dřív zabraly 2 ze 3 sloupců a vpravo zůstalo prázdné místo.
   Při 3 kartách beze změny (sekce 15a), do 950 px jeden sloupec jako dosud. Prohlížeč bez :has() ukáže dosavadní stav. */
@media (min-width: 951px) {
  .kp-article-related .kanp-posts:has(> :nth-child(2):last-child) { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

/* 33) Nadpisy karet článků — §K53 (P22o), rozhodnutí Patrika 9. 10.: vyvážené zalamování, aby na posledním řádku nadpisu
   nezůstalo osamocené slovo („…čeledi / Aizoaceae“ ve 2 sloupcích Dalších článků na 1440 px, §K52). Platí pro všechny karty
   .kanp-post (titulka, blog, rubriky, Další články); počet řádků, texty a písmo beze změny. Prohlížeč bez text-wrap: balance
   zalomí jako dosud. */
.kanp-post-title { text-wrap: balance; }

/* 34) Obrázky v článcích na výšku — §K54 (P22p): figure.kp-fig--vyska (rostlina, rytina nebo portrét na výšku) má nejvýš
   440 px a stojí uprostřed sloupce textu, popisek pod ním na jeho šířku. Obrázky na šířku jdou dál přes celý sloupec
   (article-responsive.css, figure). */
.kp-article-content figure.kp-fig--vyska { max-width: 440px; margin-left: auto; margin-right: auto; }

/* 35) Nadpis článku — §K55 (P22q), rozhodnutí Patrika 9. 10.: vyvážené zalamování nadpisu H1 (.kp-article-title), aby na
   posledním řádku nezůstalo samotné slovo (na 1440 px A2 „a San“, A3 „Aizoaceae“). Jako nadpisy karet (sekce 33): počet
   řádků, text a písmo beze změny. Prohlížeč bez text-wrap: balance zalomí jako dosud. */
.kp-article-title { text-wrap: balance; }

/* 36) Karty a porovnání řady podle spektra — §K59 (P22u), rozhodnutí Patrika 10. 10. (karta varianta C, porovnání varianta R1).
   Karta extraktu s profilem: štítek „Mesembrin ≥ 95 %“ (kp_product_badge → kanp_alk_stitek) a pod názvem pruh .kanp-alk-karta
   (kanp_alk_karta_pruh: [kp_card_size] v archivu #126 a souvisejících #324, [kp_featured] na titulce), dílky a barvy ze sekce 30.
   Na titulce do 359 px štítek bez proložení a s užším okrajem, aby se „Mesembrin ≥ 95 %“ vešel na 1 řádek i na 320 px.
   Porovnání: spektrum extraktů (.kanp-alk__bar--rada, legenda .kanp-alk__klic — od 951 px vpravo vedle nadpisu, jinak pod ním)
   a tekuté extrakty zvlášť (.kanp-alk__rada-tekute, obsah v mg jako dřív). */
.kanp-alk-karta { display: flex; gap: 2px; height: 6px; margin: 0 0 12px; border-radius: 3px; overflow: hidden; background: var(--kp-surface-3); }
.kp-prodcard > .kanp-alk-karta { margin-bottom: 0; }
.kanp-alk__rada { position: relative; }
.kanp-alk__klic { display: flex; flex-wrap: wrap; gap: 8px 22px; margin: 12px 0 0; padding: 0; list-style: none; }
.kanp-alk__klic > li { display: flex; align-items: center; gap: 8px; margin: 0; font-size: 13px; font-weight: 500; line-height: 1.4; color: var(--kp-text-2); }
.kanp-alk__klic > li::before { content: ""; width: 10px; height: 10px; flex: none; border-radius: 2px; background: var(--kp-accent); }
.kanp-alk__klic > .kanp-alk__klic-item--2::before { background: var(--kp-text-2); }
.kanp-alk__klic > .kanp-alk__klic-item--3::before { background: var(--kp-text-3); }
.kanp-alk__bar.kanp-alk__bar--rada { height: 10px; margin-top: 0; border-radius: 5px; }
.kanp-alk__row:not(.is-current) .kanp-alk__bar--rada { opacity: .82; }
.kanp-alk__rada-tekute { margin-top: 36px; padding-top: 28px; border-top: 1px solid var(--kp-border); }
.kanp-alk__rada-tekute .kanp-alk__label { margin-top: 0; }
@media (min-width: 951px) {
	.kanp-alk__klic { position: absolute; top: 35px; right: 0; margin: 0; }
}
@media (max-width: 950px) {
	.kanp-alk__bar--rada { grid-area: pruh; }
	.kanp-alk__ticks > span:first-child { transform: none; } /* P22v: krajní popisky osy uvnitř dráhy (na telefonu se „100“ neořízne na „10“) */
	.kanp-alk__ticks > span:last-child { transform: translateX(-100%); }
}
@media (max-width: 767px) {
	.kanp-alk__klic { gap: 6px 16px; margin-top: 4px; }
	.kanp-alk__klic > li { font-size: 12px; }
	.kanp-alk__bar.kanp-alk__bar--rada { height: 8px; border-radius: 4px; }
	.kanp-alk__rada-tekute { margin-top: 28px; padding-top: 22px; }
}
@media (max-width: 359px) {
	[data-r="kph-featured-slot"] .kp-badge-chip { padding: 3px 5px; letter-spacing: 0; }
}

/* 37) Doprava zdarma a osobní odběr — §K61 (P23b), rozhodnutí Patrika 11. 10. (náhled „Doprava zdarma – ukazatel“, varianta V3):
   rámeček s ikonou dodávky a výzvou, linka podílu košíku u spodní hrany; od prahu červený rámeček bez linky. Zásuvka nad mezisoučtem
   (.kanp-fs--drawer), souhrn košíku řádek před dopravou (.kanp-fs--cart). Ikona = maska v barvě (tvar v data URI černě). */
.kanp-fs { position: relative; display: flex; align-items: flex-start; gap: 10px; margin: 0 0 14px; padding: 11px 12px 12px; border: 1px solid var(--kp-border-2); border-radius: 8px; background: var(--kp-bg-deep); overflow: hidden; text-align: left; }
.kanp-fs--cart { margin: 0; background: var(--kp-bg); }
.kanp-fs.is-free { border-color: var(--kp-accent); }
.kanp-fs__ic { flex: 0 0 auto; width: 20px; height: 20px; margin-top: 1px; background: var(--kp-text-3); -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M2.5 6.5h11v9.5h-11z'/%3E%3Cpath d='M13.5 9.5h4l3 3.2v3.3h-7'/%3E%3Ccircle cx='6.5' cy='17.5' r='1.8'/%3E%3Ccircle cx='17' cy='17.5' r='1.8'/%3E%3C/svg%3E") center / contain no-repeat; mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M2.5 6.5h11v9.5h-11z'/%3E%3Cpath d='M13.5 9.5h4l3 3.2v3.3h-7'/%3E%3Ccircle cx='6.5' cy='17.5' r='1.8'/%3E%3Ccircle cx='17' cy='17.5' r='1.8'/%3E%3C/svg%3E") center / contain no-repeat; }
.kanp-fs.is-free .kanp-fs__ic { background: var(--kp-accent); }
.kanp-fs__t { margin: 0; font: 600 12px/1.45 Montserrat, sans-serif; letter-spacing: 0; text-transform: none; color: var(--kp-text-2); }
.kanp-fs__t strong { color: var(--kp-text); font-weight: 700; }
.kanp-fs__bar { position: absolute; left: 0; right: 0; bottom: 0; height: 3px; }
.kanp-fs__bar > span { display: block; height: 100%; background: var(--kp-accent); }
.cart_totals tr.kanp-fs-row td { padding: 12px 0 13px; text-align: left; }
#shipping_method .kanp-ship-note { flex-basis: 100%; margin-top: -3px; padding-left: 21px; font: 500 11px/1.45 Montserrat, sans-serif; color: var(--kp-text-3); }
#shipping_method li:not(:has(input[type="radio"])) .kanp-ship-note { padding-left: 0; }
.kanp-pickup-note { margin: 0 0 24px; padding: 14px 16px; border: 1px solid var(--kp-border-2); border-left: 3px solid var(--kp-accent); border-radius: 8px; background: var(--kp-surface); font: 500 14px/1.5 Montserrat, sans-serif; color: var(--kp-text-2); }
.kanp-pickup-note strong { color: var(--kp-text); font-weight: 700; }

/* 38) Odstoupení od smlouvy — §K62 (P23c), rozhodnutí Patrika 11. 10. (náhled „Odstoupení od smlouvy – web“): formulář Woo 11.1
   (myaccount/form-order-withdrawal.php) na /muj-ucet/odstoupeni-od-smlouvy/, texty inc/kanp-odstoupeni.php. Web nenačítá
   woocommerce.css → celý vzhled tady; karta jako Zapomenuté heslo (18e), pole a tlačítka z account-responsive.css, červená jen
   v lince, rámečku a tlačítku. Textarea má z pravidla účtu výšku 48 px (account-responsive.css ř. 25) → tady auto. Předpona
   .woocommerce-account .woocommerce přebíjí pravidla účtu i Bricks (.woocommerce form .form-row). */
.woocommerce-account .woocommerce .woocommerce-order-withdrawal-content { box-sizing: border-box; max-width: 680px; padding: 40px; background: var(--kp-surface); border: 1px solid var(--kp-border); border-radius: 16px; color: var(--kp-text-2); font: 400 15px/1.6 'Montserrat', sans-serif; }
.woocommerce-account .woocommerce .woocommerce-order-withdrawal-content > p { margin: 0 0 10px; }
.woocommerce-account .woocommerce .woocommerce-order-withdrawal-content > p:last-child { margin-bottom: 0; }
.woocommerce-account .woocommerce .woocommerce-order-withdrawal-content__intro { color: var(--kp-text); font-size: 16px; font-weight: 500; }
.woocommerce-account .woocommerce .woocommerce-order-withdrawal-content__note { color: var(--kp-text-3); font-size: 14px; line-height: 1.6; }
.woocommerce-account .woocommerce .woocommerce-order-withdrawal-content .woocommerce-error { background: var(--kp-bg-deep) !important; margin: 0 0 20px; } /* !important jako kp-global.css:358 */
.woocommerce-account .woocommerce .woocommerce-order-withdrawal-content__steps { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 14px; margin: 24px 0 26px; padding: 0 0 16px; list-style: none; border-bottom: 1px solid var(--kp-surface-2); color: var(--kp-text-3); font: 500 11px/1.4 var(--kanp-mono); letter-spacing: .12em; text-transform: uppercase; }
.woocommerce-account .woocommerce .woocommerce-order-withdrawal-content__step { display: inline-flex; align-items: center; gap: 9px; margin: 0; }
.woocommerce-account .woocommerce .woocommerce-order-withdrawal-content__step::before { content: ""; flex: 0 0 auto; width: 6px; height: 6px; border: 1px solid currentColor; transform: rotate(45deg); }
.woocommerce-account .woocommerce .woocommerce-order-withdrawal-content__step:not(:last-child)::after { content: ""; width: 28px; height: 1px; margin-left: 5px; background: var(--kp-border-2); }
.woocommerce-account .woocommerce .woocommerce-order-withdrawal-content__step--current { color: var(--kp-text); }
.woocommerce-account .woocommerce .woocommerce-order-withdrawal-content__step--current::before { border-color: var(--kp-accent); background: var(--kp-accent); }
.woocommerce-account .woocommerce .woocommerce-OrderWithdrawalForm { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 20px; margin: 0; padding: 0; border: 0; }
.woocommerce-account .woocommerce .woocommerce-OrderWithdrawalForm > * { grid-column: 1 / -1; }
.woocommerce-account .woocommerce .woocommerce-OrderWithdrawalForm > .form-row-first { grid-column: 1; }
.woocommerce-account .woocommerce .woocommerce-OrderWithdrawalForm > .form-row-last { grid-column: 2; }
.woocommerce-account .woocommerce .woocommerce-OrderWithdrawalForm > .clear { display: none; }
.woocommerce-account .woocommerce .woocommerce-order-withdrawal-content .form-row { width: auto; float: none; margin: 0 0 18px; padding: 0; }
.woocommerce-account .woocommerce .woocommerce-order-withdrawal-content p.form-row > label { display: block; margin: 0 0 6px; color: var(--kp-text-2); font: 500 14px/1.4 'Montserrat', sans-serif; }
.woocommerce-account .woocommerce .woocommerce-order-withdrawal-content .woocommerce-input-wrapper { display: block; }
.woocommerce-account .woocommerce .woocommerce-order-withdrawal-content .optional { color: var(--kp-text-3); font-weight: 400; }
.woocommerce-account .woocommerce .woocommerce-order-withdrawal-content .description { display: block; margin-top: 6px; color: var(--kp-text-3); font-size: 13px; line-height: 1.5; }
.woocommerce-account .woocommerce .woocommerce-order-withdrawal-content textarea { height: auto; min-height: 112px; padding: 13px 16px; line-height: 1.5; resize: vertical; }
.woocommerce-account .woocommerce .woocommerce-order-withdrawal-content .woocommerce-invalid input.input-text,
.woocommerce-account .woocommerce .woocommerce-order-withdrawal-content .woocommerce-invalid textarea { border-color: #ff4d4d; }
.woocommerce-account .woocommerce .woocommerce-order-withdrawal-content__field-error { display: block; margin-top: 6px; color: #ff6b6b; font-size: 13px; line-height: 1.45; }
.woocommerce-account .woocommerce .woocommerce-OrderWithdrawalForm > .woocommerce-order-withdrawal-content__field-error { margin: -10px 0 18px; }
.woocommerce-account .woocommerce .woocommerce-OrderWithdrawalForm > .woocommerce-order-withdrawal-content__note { margin: -10px 0 22px; font-size: 13px; }
.woocommerce-account .woocommerce .woocommerce-order-withdrawal-content__radio-field { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px 12px; min-width: 0; margin: 0 0 18px; padding: 0; border: 0; border-radius: 0; }
.woocommerce-account .woocommerce .woocommerce-order-withdrawal-content__radio-field legend { float: left; grid-column: 1 / -1; width: 100%; margin: 0 0 -4px; padding: 0; color: var(--kp-text-2); font: 500 14px/1.4 'Montserrat', sans-serif; }
.woocommerce-account .woocommerce .woocommerce-order-withdrawal-content__radio-label { display: flex; align-items: center; gap: 10px; min-height: 48px; margin: 0; padding: 12px 16px; background: var(--kp-bg-deep); border: 1px solid var(--kp-border); border-radius: 10px; color: var(--kp-text); font: 500 14px/1.4 'Montserrat', sans-serif; cursor: pointer; }
.woocommerce-account .woocommerce .woocommerce-order-withdrawal-content__radio-label:has(input:checked) { border-color: var(--kp-accent); }
.woocommerce-account .woocommerce .woocommerce-order-withdrawal-content__radio-label:has(input:focus-visible) { outline: 2px solid var(--kp-text); outline-offset: 2px; }
.woocommerce-account .woocommerce .woocommerce-order-withdrawal-content__radio-label input { flex: 0 0 auto; width: 18px; height: 18px; margin: 0; accent-color: var(--kp-accent); }
.woocommerce-account .woocommerce .woocommerce-order-withdrawal-content__radio-field.woocommerce-invalid .woocommerce-order-withdrawal-content__radio-label { border-color: #ff4d4d; }
.woocommerce-account .woocommerce .woocommerce-order-withdrawal-content__review { margin: 4px 0 18px; border-top: 1px solid var(--kp-surface-2); }
.woocommerce-account .woocommerce .woocommerce-order-withdrawal-content__review-row { display: grid; grid-template-columns: 180px minmax(0, 1fr); gap: 4px 20px; padding: 13px 0; border-bottom: 1px solid var(--kp-surface-2); }
.woocommerce-account .woocommerce .woocommerce-order-withdrawal-content__review-row dt { margin: 0; padding-top: 3px; color: var(--kp-text-3); font: 500 11px/1.5 var(--kanp-mono); letter-spacing: .12em; text-transform: uppercase; }
.woocommerce-account .woocommerce .woocommerce-order-withdrawal-content__review-row dd { margin: 0; color: var(--kp-text); font: 600 15px/1.5 'Montserrat', sans-serif; overflow-wrap: anywhere; }
.woocommerce-account .woocommerce .woocommerce-order-withdrawal-content__actions { display: flex; flex-wrap: wrap; align-items: center; gap: 12px; margin: 8px 0 0; }
.woocommerce-account .woocommerce .woocommerce-order-withdrawal-content__button--secondary.button { background: transparent; border: 1px solid var(--kp-border-2); color: var(--kp-text); padding: 15px 27px; }
.woocommerce-account .woocommerce .woocommerce-order-withdrawal-content__button--secondary.button:hover { filter: none; border-color: var(--kp-accent); }
.woocommerce-account .woocommerce .woocommerce-order-withdrawal-content:not(:has(form)) > p > strong { display: flex; align-items: center; gap: 14px; margin: 0 0 6px; color: var(--kp-text); font: 700 22px/1.3 'Montserrat', sans-serif; }
.woocommerce-account .woocommerce .woocommerce-order-withdrawal-content:not(:has(form)) > p > strong::before { content: ""; flex: 0 0 auto; width: 34px; height: 34px; border-radius: 50%; background: var(--kp-accent) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='5 12.5 10 17.5 19 7'/%3E%3C/svg%3E") center / 16px no-repeat; }
.woocommerce-account .woocommerce .woocommerce-order-withdrawal-content:not(:has(form)) .woocommerce-order-withdrawal-content__note { color: var(--kp-text-2); font-size: 15px; }
.woocommerce-account .woocommerce .woocommerce-order-withdrawal-content:not(:has(form)) .woocommerce-order-withdrawal-content__note + .woocommerce-order-withdrawal-content__note { margin-top: 14px; padding: 14px 16px; background: var(--kp-bg-deep); border: 1px solid var(--kp-border); border-left: 3px solid var(--kp-accent); border-radius: 10px; font-size: 14px; }
.woocommerce-account .woocommerce .woocommerce-order-withdrawal-content a:not(.button) { color: var(--kp-text); font-weight: 600; text-decoration: underline; text-decoration-color: var(--kp-accent); text-decoration-thickness: 2px; text-underline-offset: 3px; }
/* akce „Odstoupit“ u objednávky (seznam a detail v Můj účet): vedlejší tlačítko vedle červeného „Zobrazit“ */
.woocommerce-account .woocommerce a.button.kanp-odstoupit { background: transparent; border: 1px solid var(--kp-border-2); color: var(--kp-text); padding: 15px 27px; }
.woocommerce-account .woocommerce a.button.kanp-odstoupit:hover { filter: none; border-color: var(--kp-accent); }
.woocommerce-account .woocommerce .button + a.button.kanp-odstoupit { margin-left: 8px; }
@media (max-width: 950px) {
	.woocommerce-account .woocommerce .woocommerce-order-withdrawal-content { padding: 24px; }
}
@media (max-width: 600px) {
	.woocommerce-account .woocommerce .woocommerce-OrderWithdrawalForm,
	.woocommerce-account .woocommerce .woocommerce-order-withdrawal-content__radio-field { grid-template-columns: minmax(0, 1fr); }
	.woocommerce-account .woocommerce .woocommerce-OrderWithdrawalForm > .form-row-first,
	.woocommerce-account .woocommerce .woocommerce-OrderWithdrawalForm > .form-row-last { grid-column: 1 / -1; }
	.woocommerce-account .woocommerce .woocommerce-order-withdrawal-content__steps { flex-direction: column; align-items: flex-start; gap: 8px; }
	.woocommerce-account .woocommerce .woocommerce-order-withdrawal-content__step:not(:last-child)::after { display: none; }
	.woocommerce-account .woocommerce .woocommerce-order-withdrawal-content__review-row { grid-template-columns: minmax(0, 1fr); padding: 11px 0; }
	.woocommerce-account .woocommerce .woocommerce-order-withdrawal-content__actions .button { width: 100%; padding-left: 16px; padding-right: 16px; line-height: 1.3; text-align: center; text-wrap: balance; }
	.woocommerce-account .woocommerce .woocommerce-order-withdrawal-content:not(:has(form)) > p > strong { font-size: 19px; }
}

/* 39) Doprava v košíku a pokladně — §K63 (P23d), rozhodnutí Patrika 11. 10. (náhled „Doprava v košíku a pokladně — rozložení“, V2 Dlaždice).
   Řádek Doprava pod sebou: nadpis, pod ním volby na celou šířku. Každá metoda je dlaždice jako způsob platby v pokladně
   (checkout-responsive.css 73–77): rámeček, vybraná s červeným rámečkem a tmavě červeným pozadím, kliknout jde na celou plochu.
   Přepínač vlevo, název (.kanp-ship-name) a cena vpravo (.kanp-ship-price; štítek dělí inc/kanp-doprava.php, §K63), pod názvem
   poznámka osobního odběru a tlačítko výdejního místa Packety. Přebíjí #shipping_method z checkout-responsive.css 126–139, z bloku
   „Košík — souhrn“ (309–312) a poznámku ze sekce 37; vzhled tlačítka Packety zůstává z 313–316. Jiný štítek (např. PPL s logem)
   zůstane blokem textu; další prvky pluginu dopravce jdou pod název a nad plochu kliknutí. Košík: souhrn místo tabulky po řádcích
   (blok + flex) jako tabulka pokladny, jinak by doprava zůstala ve druhém sloupci tabulky. */
.cart_totals table.shop_table,
.cart_totals table.shop_table > tbody { display: block; width: 100%; }
.cart_totals table.shop_table tr { display: flex; justify-content: space-between; align-items: baseline; gap: 14px; border-bottom: 1px solid var(--kp-surface-2); }
.cart_totals table.shop_table tr.order-total { border-bottom: 0; }
.cart_totals table.shop_table tr > th,
.cart_totals table.shop_table tr > td { display: block; border-bottom: 0; }
.cart_totals table.shop_table tr > th { flex: 0 0 auto; }
.cart_totals table.shop_table tr.kanp-fs-row > td { flex: 1 1 100%; }
.cart_totals table.shop_table tr.woocommerce-shipping-totals,
.woocommerce-checkout-review-order-table tfoot tr.woocommerce-shipping-totals { flex-direction: column; align-items: stretch; gap: 10px; }
.cart_totals table.shop_table tr.woocommerce-shipping-totals > th { padding-bottom: 0; }
.cart_totals table.shop_table tr.woocommerce-shipping-totals > td { padding-top: 0; text-align: left; }
.woocommerce-checkout-review-order-table tfoot tr.woocommerce-shipping-totals td { text-align: left; }
.cart_totals .woocommerce-shipping-destination { margin: 10px 0 0; font: 500 11px/1.45 'Montserrat', sans-serif; color: var(--kp-text-3); text-align: left; }
#shipping_method { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 8px; text-align: left; }
#shipping_method > li { position: relative; isolation: isolate; display: grid; grid-template-columns: auto minmax(0, 1fr); align-items: start; column-gap: 10px; row-gap: 0; margin: 0; padding: 12px 14px; border: 1px solid var(--kp-border); border-radius: 8px; background: transparent; font: 500 12.5px/1.45 'Montserrat', sans-serif; color: var(--kp-text-2); text-align: left; transition: border-color .12s, background-color .12s; }
#shipping_method > li:hover { border-color: var(--kp-border-2); }
#shipping_method > li:has(> input[type="radio"]:checked),
#shipping_method > li:not(:has(> input[type="radio"])) { border-color: var(--kp-accent); background: var(--kp-tint-deep); }
#shipping_method > li:has(> input[type="radio"]:focus-visible) { outline: 2px solid var(--kp-text); outline-offset: 2px; }
#shipping_method > li > * { grid-column: 2; order: 0; }
#shipping_method > li > input[type="radio"] { grid-column: 1; grid-row: 1; order: 0; align-self: start; margin: 2px 0 0; }
#shipping_method > li:not(:has(> input[type="radio"])) > * { grid-column: 1 / -1; }
#shipping_method > li > label { grid-row: 1; order: 0; min-width: 0; margin: 0; font: inherit; color: var(--kp-text-2); text-align: left; white-space: normal; overflow-wrap: break-word; cursor: pointer; }
#shipping_method > li > label:has(> .kanp-ship-name) { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; }
#shipping_method > li > label::after { content: ""; position: absolute; inset: 0; z-index: 0; border-radius: inherit; }
#shipping_method .kanp-ship-name { min-width: 0; font-weight: 600; }
#shipping_method .kanp-ship-price { flex: 0 0 auto; white-space: nowrap; color: var(--kp-text); font-weight: 700; }
#shipping_method > li:has(> input[type="radio"]:checked) .kanp-ship-name,
#shipping_method > li:not(:has(> input[type="radio"])) .kanp-ship-name { color: var(--kp-text); }
#shipping_method .kanp-ship-note { margin: 3px 0 0; padding: 0; font: 500 11.5px/1.45 'Montserrat', sans-serif; color: var(--kp-text-3); }
#shipping_method > li > :not(label, input, .kanp-ship-note) { position: relative; z-index: 1; }
#shipping_method > li > .packetery-widget-button-wrapper { order: 0; margin: 0; text-align: left; }
#shipping_method .packeta-widget { margin: 10px 0 0; }
#shipping_method .packeta-widget.after-rate .packeta-widget-button { display: block; }
#shipping_method .packeta-widget.after-rate .packeta-widget-button button { width: 100%; }
#shipping_method .packeta-widget-selected-address,
#shipping_method .packeta-widget-place,
#shipping_method .packeta-widget-info { text-align: left; }
#shipping_method > li:has(> input[type="radio"]:focus-visible) > input[type="radio"] { outline: none; } /* §K63 (P23e): fokus jen jako obrys dlaždice — obrys přepínače z „Fokus polí“ (ř. 245–263) by byl druhý; bez podpory :has() pravidlo neplatí a obrys přepínače zůstane */
/* §K73 (P34b): PPL v pokladně — výběr výdejního místa (přepis woocommerce/ppl/select-parcelshop-inner.php): tlačítko .kanp-ppl-btn jako tlačítko
   Zásilkovny (vzhled z „#shipping_method li button“ výše, výška 40 px, přes šířku textu dlaždice), vybrané místo jako .packeta-widget-place,
   text bez výběru jako .packeta-widget-info. Přebíjí řádkové rozložení z label-method.css pluginu; prvky PPL nad plochou kliknutí label::after. */
#shipping_method > li > .pplcz-parcelshop-inner { position: relative; z-index: 1; display: block; margin: 10px 0 0; }
#shipping_method .pplcz-parcelshop-inner > .pplcz-select-parcelshop { display: block; margin: 0; }
#shipping_method .pplcz-parcelshop-inner .kanp-ppl-btn { display: block; width: 100%; min-height: 40px; margin: 0; text-align: center; }
#shipping_method .pplcz-parcelshop-inner .kanp-ppl-btn:focus-visible { outline: 2px solid var(--kp-text); outline-offset: 2px; }
#shipping_method .pplcz-parcelshop-inner .pplcz-selected-parcelshop { margin: 9px 0 0; color: var(--kp-text-2); font-size: 12px; line-height: 1.45; text-align: left; }
#shipping_method .pplcz-parcelshop-inner .kanp-ppl-place { color: var(--kp-text); font-weight: 700; }

/* 40) Štítky karet produktů — §K76 (P38b), rozhodnutí Patrika 14. 10. Víčko lahvičky začíná 32–35 px pod horní hranou obrázku karty
   a štítek (horní hrana 26 px pod kartou, výška 23 px) do něj zasahoval (P38: #402 45 px², #401 se dvěma štítky pod sebou 526 px²).
   A1: slot štítků všech karet o 4 px výš. Obchod, kategorie a související: slot je prvek Bricks #126 dbe5fe / #324 kr0005 s inline
   stylem z nastavení prvku (top: 22px) → přebito zde (!important kvůli inline stylu; šablony v DB beze změny). Titulka
   ([kp_featured]): kanp-home.css sekce F (22 → 18 px, ≤ 640 px 16 → 12 px); kp-global.css .kp-prodcard-badge / .kp-prodcard-mit 22 → 18 px.
   A2: karta nedostupného produktu (inc/kp-availability.php, kp_card_badge_html(): span.kp-badge-stack s inline základem sloupec) —
   od 541 px (obchod má od té šířky 2 sloupce) oba štítky v řádku vpravo, mezera 6 px z inline stylu, „Připravujeme“ vlevo; kde se
   řádek nevejde (karta 247 px při 541–~560 px), mesembrin se zalomí pod (flex-wrap). Pod 541 px sloupec jako dřív. Tento soubor se
   načítá všude, kde je karta (i titulka; port-availability.css jen na stránkách Woo). */
[data-r="product-card"] > .brxe-dbe5fe,
[data-r="product-card"] > .brxe-kr0005 { top: 18px !important; }
@media (min-width: 541px) {
	.kp-badge-stack { flex-direction: row !important; flex-wrap: wrap !important; justify-content: flex-end !important; align-items: center !important; }
}
/* §K90 (P50, rozhodnutí Patrika 15. 10.): štítky nikdy nepřesahují fotku. Slot štítků (obchod a kategorie #126 dbe5fe, související #324 kr0005,
   titulka .kp-prodcard-badge--field) byl umístěný jen zprava (right 22 px), šířku omezovala karta, ne fotka → No. 41 nedostupná v obchodě
   se 3 sloupci přesahovala fotku vlevo o 7 px. Teď left = right (--kp-badge-x, výchozí 22 px; titulka ≤ 640 px 16 px v kanp-home.css F), obsah
   vpravo (text-align pro blokový slot Bricks, justify-content pro flex slot titulky). Co se nevejde vedle sebe, zalomí řádek .kp-badge-stack
   (od 541 px wrap, výše), mezera mezi řádky = mezi štítky (gap 6 px z inline základu); štítek sám se nezalamuje (nowrap, kp-global.css). */
[data-r="product-card"] > :is(.brxe-dbe5fe, .brxe-kr0005, .kp-prodcard-badge--field) { left: var(--kp-badge-x, 22px) !important; right: var(--kp-badge-x, 22px) !important; text-align: right; justify-content: flex-end; container: kp-stitky / inline-size; }
/* §K91 (P51, rozhodnutí Patrika 16. 10.) — A: slot štítků je kontejner kp-stitky (jeho šířka od §K90 = fotka − odsazení vlevo i vpravo =
   místo pro štítky; štítky nejsou potomky boxu fotky, proto kontejner na slotu). Tekutý produkt má ve štítku formu a oddělovač ve vlastních
   prvcích (kp_product_badge(), functions.php); kde se plný štítek nevejde, zůstane jen balení („10 ml“). Práh 172 px = plný štítek
   „Tekutý extrakt · 10 ml“ 163,2 px (písmo 10 px, největší ze všech kontextů) + rezerva 8,8 px; dnes krátký jen na titulce ≤ 640 px
   (místo 135 px), nejmenší místo s plným štítkem 184,5 px (titulka 1024). Forma zůstává v názvu karty.
   B: pojistka proti přesahu — štítky se nesmršťují (nejdřív se zalomí řádek), ale nejsou širší než řádek; text uvnitř štítku se zalomí
   (jen u „ · “, části jsou nowrap) jen když je jediný štítek delší než celý řádek. Dnes se neprojeví nikde (ověřeno P51). */
@container kp-stitky (width < 172px) {
	.kp-badge-forma,
	.kp-badge-sep { display: none; }
}
[data-r="product-card"] .kp-badge-stack { max-width: 100%; }
[data-r="product-card"] .kp-badge-chip { flex: 0 0 auto; max-width: 100%; white-space: normal; }

/* 41) Barva a číslo řady — §K78 (P39b), rozhodnutí Patrika 14. 10. (varianta C): v poli obrázku karty (obchod, kategorie, související,
   titulka) a za hlavní fotkou produktu velké číslo řady jako vodoznak (princip etikety doypacku) a jemná záře v barvě řady.
   Třídu kp-rada, proměnné --kp-rada-rgb / -wm / -wm-h (u nedostupného hodnoty „nedostupný“) a span.kp-rada-no dodává inc/kanp-rada.php
   (bez polí se nic nevykreslí; vodoznak 34 % s limitem jasu 0,049 jako na etiketě).
   Vrstvy v izolovaném kontextu pole: pozadí pole (--kp-bg / rámeček galerie) < záře (::before, z-index -1) < číslo (z-index -1, dál v DOM)
   < fotka (běžný tok) < štítky karty (sourozenec pole, z-index 2, beze změny) a lupa galerie. Číslo v jednotkách kontejneru
   ([data-r="product-image"] má container-type: size, kp-global.css ř. 64), oříznuté hranou pole. Nedostupný (§K76): záře a vodoznak
   poloviční síly (vodoznak 17 %, záře .5), fotka dál .7. Hover karty (jen myš): vodoznak 45 % (nedostupný 22,5 %), záře × 1,4 (.7),
   fotka −4 px; bez pohybu a přechodu při omezení animací. */
@property --kp-rada-k { syntax: '<number>'; inherits: true; initial-value: 1; }
.kp-rada { --kp-rada-k: 1; position: relative; overflow: hidden; isolation: isolate; }
[data-r="product-card"].kp-unavailable .kp-rada,
.kp-rada--off { --kp-rada-k: .5; }
.kp-rada::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	pointer-events: none;
	background:
		radial-gradient(ellipse 55% 50% at 50% 52%, rgba(var(--kp-rada-rgb), calc(.30 * var(--kp-rada-k))) 0%, rgba(var(--kp-rada-rgb), calc(.105 * var(--kp-rada-k))) 45%, rgba(10, 10, 15, 0) 75%),
		radial-gradient(ellipse 34% 7% at 50% 93%, rgba(var(--kp-rada-rgb), calc(.39 * var(--kp-rada-k))) 0%, rgba(10, 10, 15, 0) 100%);
}
.kp-rada-no {
	position: absolute;
	right: -5cqw;
	bottom: -19cqh;
	z-index: -1;
	font-family: 'Montserrat', sans-serif;
	font-weight: 800;
	font-size: 91cqh;
	line-height: 1;
	letter-spacing: -.06em;
	white-space: nowrap;
	color: var(--kp-rada-wm);
	pointer-events: none;
	user-select: none;
}
@media (hover: hover) {
	[data-r="product-card"]:is(:hover, :focus-within) .kp-rada { --kp-rada-k: 1.4; }
	[data-r="product-card"].kp-unavailable:is(:hover, :focus-within) .kp-rada { --kp-rada-k: .7; }
	[data-r="product-card"]:is(:hover, :focus-within) .kp-rada-no { color: var(--kp-rada-wm-h); }
	[data-r="product-card"]:is(:hover, :focus-within) .kp-rada img { transform: translateY(-4px); }
	[data-r="product-card"] .kp-rada,
	[data-r="product-card"] .kp-rada-no,
	[data-r="product-card"] .kp-rada img { transition: --kp-rada-k .25s ease, color .25s ease, transform .25s ease; }
}
@media (prefers-reduced-motion: reduce) {
	[data-r="product-card"] .kp-rada,
	[data-r="product-card"] .kp-rada-no,
	[data-r="product-card"] .kp-rada img { transition: none !important; }
	[data-r="product-card"] .kp-rada img { transform: none !important; }
}
/* Stránka produktu: hlavní fotka galerie (jedna fotka) — pole se roztáhne přes vnitřní okraj rámečku (32 px, ≤ 950 px 20 px), aby číslo
   ořízla hrana rámečku; výška = fotka 440 / 300 px + okraj (container-type: size potřebuje pevnou výšku). U více fotek (flexslider)
   vyplňuje snímek viewport sám (selektor neplatí). Lupa (PhotoSwipe) a odkaz fotky beze změny; bez hoveru. */
[data-r="gallery"] .woocommerce-product-gallery > .woocommerce-product-gallery__wrapper > .woocommerce-product-gallery__image.kp-rada { container-type: size; height: 504px; margin: -32px; padding: 32px; border-radius: 9px; }
@media (max-width: 950px) {
	[data-r="gallery"] .woocommerce-product-gallery > .woocommerce-product-gallery__wrapper > .woocommerce-product-gallery__image.kp-rada { height: 340px; margin: -20px; padding: 20px; }
}


/* 42) Datum účinnosti právních dokumentů — §K79 (P42a, 14. 10.): zástupný text „[DATUM ÚČINNOSTI]“, dokud volba kanp_datum_ucinnosti
   (Nastavení → Obecné) není vyplněná. Nenápadné zvýraznění: barva --kp-warning (#FFC107) na --kp-bg / --kp-surface ≥ 4,5 : 1, čárkované podtržení. */
.kanp-ucinnost-chybi { color: var(--kp-warning); font-weight: 600; border-bottom: 1px dashed currentColor; white-space: nowrap; }

/* 43) Účel a upozornění na stránce produktu — §K80 (P42b, právní stanovisko 14. 10., GPSR čl. 19): [kanp_ucel_upozorneni] v panelu
   nákupu #324 (prvek kp42u1 za pruhem trust-mini), u všech produktů. Rámeček jako pruh trust-mini (--kp-surface, --kp-border, rádius 10),
   13 px, řádkování 1,55, text --kp-text-2 na --kp-surface (kontrast ≥ 4,5 : 1). Do 767 px odstup dole, aby blok nezakryla mobilní lišta košíku. */
.kanp-ucel { margin-top: 12px; padding: 14px 18px; background: var(--kp-surface); border: 1px solid var(--kp-border); border-radius: 10px; font-size: 13px; line-height: 1.55; color: var(--kp-text-2); }
.kanp-ucel p { margin: 0; }
.kanp-ucel p + p { margin-top: 8px; }
.kanp-ucel strong { color: var(--kp-text); font-weight: 700; }
@media (max-width: 767px) {
	.kanp-ucel { margin-bottom: 8px; }
}

/* 44) Krátké vymezení účelu — §K81 (P42c, právní stanovisko 14. 10.): patička #56 (prvek kp42p1, styl jako 1bb494 v Bricks) a box pod články
   (functions.php, p.kp-article-cta-fine pod perexem). Drobné písmo --kp-text-3 na pozadí boxu (kontrast ≥ 4,5 : 1). */
.kp-article-cta-fine { margin: 10px 0 0; max-width: 540px; font-size: 12px; font-weight: 500; line-height: 1.55; color: var(--kp-text-3); }
