/* ===== FEIFER — katalog + detail (navazuje na hala.css) ===== */

/* breadcrumb */
.A__crumb { border-bottom:1px solid var(--line); }
/* Drobečky nesou celý řetěz kategorií (strom je až 6 úrovní + název produktu na
   detailu), takže se na užších šířkách nevejdou na jeden řádek → zalomit místo
   přetečení. Jednořádkový breadcrumb vyjde díky min-height na stejných 46 px
   jako dřív. */
.A__crumb .wrap { display:flex; align-items:center; flex-wrap:wrap; gap:9px; row-gap:2px; min-height:46px; padding-top:9px; padding-bottom:9px; font-family:var(--mono); font-size:12px; color:var(--faint); }
.A__crumb a:hover { color:#fff; }
body.light .A__crumb a:hover { color:var(--ink); }
.A__crumb .sep { opacity:.5; }
.A__crumb .cur { color:var(--red); }

/* page head */
.cat__head { padding:36px 0 26px; }
.wrap.cat__head { padding-left:var(--gutter); padding-right:var(--gutter); }
.cat__eyebrow { font-family:var(--mono); font-size:12px; letter-spacing:.08em; color:var(--red); text-transform:uppercase; }
.cat__head h1 { font-size:46px; font-weight:900; text-transform:uppercase; letter-spacing:-.02em; margin-top:8px; }
.cat__head p { color:var(--mut); font-size:15px; margin-top:12px; max-width:60ch; line-height:1.55; }
.cat__head .cnt { color:var(--mut); font-size:14px; margin-top:10px; font-family:var(--mono); }
.cat__head .cnt b { color:var(--red); }

/* layout */
.cat__layout { display:grid; grid-template-columns:264px 1fr; gap:30px; align-items:start; padding-bottom:60px; }

/* filters */
.cat__side { position:sticky; top:132px; border:1px solid var(--line); background:var(--char-2); max-height:calc(100vh - 150px); overflow-y:auto; scrollbar-width:thin; }
body.light .cat__side { background:#fff; }
.fgrp { border-bottom:1px solid var(--line); padding:18px 18px; }
.fgrp:last-child { border-bottom:none; }
.fgrp h4 { font-family:var(--mono); font-size:11px; letter-spacing:.06em; text-transform:uppercase; color:var(--faint); margin-bottom:14px; }
/* category nav v sidebaru */
.fgrp--cats { background:var(--char); }
body.light .fgrp--cats { background:#f7f8fa; }
.catnav2 { display:flex; flex-direction:column; gap:2px; }
.catnav2__grp { display:flex; flex-direction:column; }
.catnav2__h { width:100%; display:flex; align-items:center; gap:8px; padding:11px 12px; font-size:14px; font-weight:700; color:var(--mut); background:none; border:none; border-left:2px solid transparent; cursor:pointer; font-family:var(--exo); text-align:left; transition:.12s; }
.catnav2__h .catnav2__n { margin-left:auto; font-family:var(--mono); font-size:11px; color:var(--faint); font-weight:600; }
.catnav2__chev { color:var(--faint); transition:transform .2s; flex-shrink:0; }
.catnav2__h:hover { color:#fff; background:var(--char-3); border-left-color:var(--red); }
body.light .catnav2__h:hover { color:var(--ink); background:#fff; }
.catnav2__grp.open .catnav2__h, .catnav2__h.on { color:var(--red); border-left-color:var(--red); }
.catnav2__grp.open .catnav2__chev { transform:rotate(180deg); color:var(--red); }
.catnav2__body { display:none; flex-direction:column; padding-top:2px; }
.catnav2__grp.open .catnav2__body { display:flex; }
.catnav2__sub { display:flex; align-items:center; justify-content:space-between; gap:10px; padding:9px 12px 9px 24px; font-size:13.5px; font-weight:500; color:var(--mut); border-left:2px solid transparent; transition:.12s; }
.catnav2__sub span { font-family:var(--mono); font-size:10.5px; color:var(--faint); }
.catnav2__sub:hover { color:var(--red); background:var(--char-3); }
body.light .catnav2__sub:hover { background:#fff; }
.fopt { display:flex; align-items:center; gap:10px; padding:7px 0; font-size:14px; color:var(--mut); cursor:pointer; }
.fopt:hover { color:#fff; }
body.light .fopt:hover { color:var(--ink); }
.fopt input { accent-color:var(--red); width:16px; height:16px; }
.fopt .n { margin-left:auto; font-family:var(--mono); font-size:11px; color:var(--faint); }
/* Filtry parametrů (bod E). `.fopt` je nově ODKAZ, ne <label> — filtr se
   propíše do query stringu a stránku překreslí server, takže funguje i bez JS
   a filtrovaná URL je sdílitelná. Zaškrtávátko zůstává jen jako vizuál. */
a.fopt { text-decoration:none; }
a.fopt.on { color:var(--ink); font-weight:600; }
body.light a.fopt.on { color:var(--ink); }
a.fopt input { pointer-events:none; }
.fgrp--active h4 .n { margin-left:6px; color:var(--red); }
.fclear { display:inline-block; font-size:13px; color:var(--red); text-decoration:none; border-bottom:1px solid currentColor; }
.fclear:hover { opacity:.75; }
.fchips { display:flex; flex-wrap:wrap; gap:8px; }
.fchip { padding:7px 12px; border:1px solid var(--line); font-size:12.5px; font-weight:600; color:var(--mut); cursor:pointer; transition:.12s; }
.fchip:hover { border-color:var(--red); color:#fff; }
.fchip.on { background:var(--red); border-color:var(--red); color:#fff; }
body.light .fchip:hover { color:var(--ink); }
body.light .fchip.on { color:#fff; }

/* toolbar */
.cat__bar { display:flex; align-items:center; gap:16px; flex-wrap:wrap; border:1px solid var(--line); background:var(--char-2); padding:12px 16px; margin-bottom:18px; position:sticky; top:132px; z-index:30; }
body.light .cat__bar { background:#fff; }
.cat__bar .res { font-size:13.5px; color:var(--mut); }
.cat__bar .res b { color:#fff; font-family:var(--mono); }
body.light .cat__bar .res b { color:var(--ink); }
.cat__bar .sp { flex:1; }
.cat__sort { display:flex; align-items:center; gap:9px; }
.cat__sort label { font-size:12px; color:var(--faint); font-family:var(--mono); text-transform:uppercase; letter-spacing:.04em; }
.cat__select { height:38px; border:1px solid var(--line); background:var(--char); color:#fff; padding:0 30px 0 12px; font-family:var(--exo); font-size:13.5px; font-weight:600; -webkit-appearance:none; appearance:none; cursor:pointer;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%239aa1ad' stroke-width='2.4' stroke-linecap='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E"); background-repeat:no-repeat; background-position:right 10px center; }
body.light .cat__select { background-color:#fff; color:var(--ink); }
.cat__view { display:flex; border:1px solid var(--line); }
.cat__view button { width:40px; height:38px; display:grid; place-items:center; color:var(--mut); background:transparent; transition:.12s; }
.cat__view button.on { background:var(--red); color:#fff; }
.cat__view button:not(.on):hover { color:#fff; }
body.light .cat__view button:not(.on):hover { color:var(--ink); }

/* grid / list */
.cat__grid { display:grid; grid-template-columns:repeat(3,1fr); gap:18px; }
.cat__grid.is-list { grid-template-columns:1fr; gap:12px; }

/* list-view product card */
.cat__grid.is-list .pc { flex-direction:row; align-items:stretch; }
.cat__grid.is-list .pc__media { width:200px; aspect-ratio:auto; flex-shrink:0; }
.cat__grid.is-list .pc__body { flex-direction:row; align-items:center; gap:24px; padding:18px 22px; }
.cat__grid.is-list .pc__main { flex:1; min-width:0; }
.cat__grid.is-list .pc__name { font-size:17px; margin:4px 0 8px; min-height:0; -webkit-line-clamp:1; }
.cat__grid.is-list .pc__price { margin-top:0; width:230px; flex-shrink:0; }
.cat__grid.is-list .pc__foot { margin-top:0; width:210px; flex-shrink:0; }
.cat__grid.is-list .pc__badges { flex-direction:row; }
.cat__listonly { display:none; }
.cat__grid.is-list .cat__listonly { display:block; }
.cat__gridonly { display:block; }
.cat__grid.is-list .cat__gridonly { display:none; }

.loadmore { display:flex; justify-content:center; margin-top:30px; }

/* ===== DETAIL ===== */
.det { padding-block:30px 56px; }
.det__top { display:grid; grid-template-columns:1fr 1fr; gap:44px; align-items:start; }
.det__gallery { position:sticky; top:96px; }
.det__main { position:relative; aspect-ratio:4/3; background:radial-gradient(circle at 50% 42%, rgba(255,255,255,.07), transparent 70%); border:1px solid var(--line); overflow:hidden; }
.det__main img { position:absolute; inset:26px; width:calc(100% - 52px); height:calc(100% - 52px); object-fit:contain; z-index:1; filter:drop-shadow(0 18px 26px rgba(0,0,0,.5)); }
body.light .det__main { background:#fff; }
/* Táž vada jako u karet (viz hala.css): `drop-shadow` obkresluje HRANU
   neprůhledné fotky, ne výrobek — hlavní obrázek detailu měl kolem sebe
   šedý obdélník. `multiply` navíc srovná fotky s ne úplně přesnou bílou.
   ⚠️ Jen ve světlém motivu. */
body.light .det__main img { filter:none; mix-blend-mode:multiply; }
.det__main .badge { position:absolute; z-index:2; top:14px; left:14px; background:var(--red); color:#fff; font-family:var(--mono); font-size:11px; font-weight:600; padding:6px 11px; white-space:nowrap; }
.det__fav { position:absolute; z-index:3; top:12px; right:12px; width:44px; height:44px; display:grid; place-items:center; border:1px solid var(--line); border-radius:50%; background:var(--char-2); color:var(--mut); cursor:pointer; transition:border-color .15s, color .15s, background .15s; }
body.light .det__fav { background:#fff; color:#6b7280; }
.det__fav:hover, body.light .det__fav:hover { border-color:var(--red); color:var(--red); }
.det__fav.on, body.light .det__fav.on { background:var(--red); border-color:var(--red); color:#fff; }
.det__fav.on svg { fill:#fff; }
.det__thumbs { display:flex; gap:10px; margin-top:12px; }
.det__thumb { width:84px; height:74px; border:1px solid var(--line); background:rgba(255,255,255,.05); cursor:pointer; transition:.12s; position:relative; overflow:hidden; }
body.light .det__thumb { background:#fff; }
.det__thumb.on, .det__thumb:hover { border-color:var(--red); }
.det__thumb img { position:absolute; inset:6px; width:calc(100% - 12px); height:calc(100% - 12px); object-fit:contain; }

.det__eyebrow { font-family:var(--mono); font-size:12px; letter-spacing:.06em; color:var(--red); text-transform:uppercase; }
.det__code { font-family:var(--mono); font-size:12px; color:var(--faint); margin-left:10px; }
.det h1 { font-size:34px; font-weight:800; text-transform:uppercase; line-height:1.08; margin-top:10px; }
.det__rating { display:flex; align-items:center; gap:8px; margin-top:12px; font-size:13px; color:var(--mut); }
.det__rating .stars { display:inline-flex; gap:2px; color:#f5a623; }
.det__lead { color:var(--mut); font-size:15.5px; line-height:1.5; margin-top:18px; }
/* highlighty pod názvem — stohované (každý na řádku s červenou pomlčkou) */
.det__lead .det__hl { display:block; position:relative; padding-left:16px; }
.det__lead .det__hl + .det__hl { margin-top:5px; }
.det__lead .det__hl::before { content:'–'; position:absolute; left:0; color:var(--red); font-weight:700; }
.det__keyspecs { display:grid; grid-template-columns:1fr 1fr; gap:1px; background:var(--line); border:1px solid var(--line); margin-top:22px; }
.det__ks { background:var(--char-2); padding:14px 16px; }
body.light .det__ks { background:#fff; }
.det__ks span { font-family:var(--mono); font-size:10.5px; letter-spacing:.05em; text-transform:uppercase; color:var(--faint); }
.det__ks b { display:block; font-size:18px; font-weight:800; margin-top:4px; }
.det__ks b i { color:inherit; font-style:normal; }

.det__buy { border:1px solid var(--line); background:var(--char-2); padding:22px; margin-top:24px; }
body.light .det__buy { background:#fff; }
.det__price { display:flex; align-items:baseline; gap:10px; flex-wrap:wrap; }
.det__price .now { font-size:30px; font-weight:800; }
.det__price .now.sale { color:var(--red); }
.det__price .old { font-size:30px; color:var(--faint); text-decoration:line-through; } /* BUG-1539: stejně velká jako aktuální cena (klientka 2. 11.) */
.det__price .vat { font-family:var(--mono); font-size:12px; color:var(--faint); }
.det__gated { display:flex; align-items:center; gap:12px; }
.det__gated .pill { display:inline-flex; align-items:center; gap:9px; background:var(--char-3); border:1px dashed #4a4e58; color:var(--mut); font-size:14px; font-weight:600; padding:12px 16px; }
body.light .det__gated .pill { background:var(--char-2); }
.det__gated .pill svg { color:var(--red); }
.det__stock { display:inline-flex; align-items:center; gap:8px; font-size:13.5px; font-weight:600; color:var(--ok); margin-top:14px; }
.det__stock .d { width:8px; height:8px; border-radius:50%; background:currentColor; }
/* ⚠️ `.det__stock` má základní barvu zelenou (var(--ok)) — dřív svítila i u
   „Dostupnost na dotaz". Modifikátory ji přebíjejí podle skutečného stavu. */
.det__stock--low  { color:var(--ok); } /* „Méně než 10 ks" = skladem → zeleně (ř. 90) */
.det__stock--ext  { color:var(--ink-2, #5b6470); }
.det__stock--wait { color:var(--ink-2, #5b6470); }
.det__stock--none { color:var(--mut, #8b93a1); }
.det__stock--lead { color:var(--ink-2, #5b6470); }

.det__cta { display:flex; gap:12px; margin-top:18px; }
/* Prodej po baleních — přepočet „2 × balení (1300 ks) = 2 600 ks" pod tlačítky. */
.det__packnote { margin-top:10px; font-size:13px; color:var(--ink-3,#6b7280); font-weight:600; }
.det__packnote:empty { display:none; }
.det__cta .stepper { height:54px; }
.det__cta .stepper button { height:52px; width:42px; }
.det__cta .stepper input { height:52px; width:42px; font-size:15px; }
.det__addbig { flex:1; height:54px; font-size:14px; }
.det__meta { display:flex; gap:22px; margin-top:18px; flex-wrap:wrap; font-size:13px; color:var(--mut); }
.det__meta span { display:inline-flex; align-items:center; gap:8px; }
.det__meta svg { color:var(--red); }

/* tabs / sections */
.det__sec { margin-top:46px; }
.det__sec h2 { font-size:22px; font-weight:800; text-transform:uppercase; margin-bottom:6px; }
.det__sec .A__eyebrow, .det__sec .eyebrow { font-family:var(--mono); font-size:12px; color:var(--red); letter-spacing:.08em; }
/* Detail — obsahové sekce jako TABY (#2, detail-tabs.js) */
.det__tabwrap { margin-top:40px; }
.det__tabs { display:flex; gap:4px; flex-wrap:wrap; border-bottom:1px solid var(--line); margin-bottom:26px; }
.det__tab { padding:12px 20px; border:none; background:none; cursor:pointer; font-family:var(--exo); font-weight:700; font-size:14px; text-transform:uppercase; letter-spacing:.02em; color:var(--mut); border-bottom:2px solid transparent; margin-bottom:-1px; transition:color .15s, border-color .15s; }
.det__tab:hover { color:var(--ink); }
.det__tab.on { color:var(--red); border-bottom-color:var(--red); }
.det__tabwrap .det__panel { margin-top:0; }
.det__tabwrap .det__panel > .eyebrow, .det__tabwrap .det__panel > h2 { display:none; }
/* ⛔ 2026-09-22 — popis z editoru produktu (TipTap) se na webu rozpadal
   (FEIFER 18. 9., 700 025967): `li {display:flex}` rozdělil text odrážky
   s <strong> do sloupců, odstavce neměly mezery (reset `* {margin:0}`),
   nadpisy a tabulky sanitizér zahodil. Teď běžná typografie; dvousloupcová
   mřížka zůstává jen pro seznam z `#` (.det__desclist). */
.det__rich { color:var(--mut); font-size:15px; line-height:1.7; margin-top:14px; max-width:80ch; }
.det__rich > * + * { margin-top:12px; }
.det__rich strong, .det__rich b { color:var(--ink); }
.det__rich h2, .det__rich h3, .det__rich h4 { color:var(--ink); font-weight:700; line-height:1.3; text-transform:none; letter-spacing:0; }
.det__rich h2 { font-size:21px; margin-top:26px; }
.det__rich h3 { font-size:18px; margin-top:22px; }
.det__rich h4 { font-size:15.5px; margin-top:18px; }
.det__rich > :first-child { margin-top:0; }
.det__rich ul, .det__rich ol { margin-top:10px; padding:0; list-style:none; }
.det__rich ul > li, .det__rich ol > li { position:relative; padding-left:20px; font-size:14.5px; }
.det__rich ul > li + li, .det__rich ol > li + li { margin-top:6px; }
/* Sanitizovaný HTML popis nemá SVG fajfky — odrážka přes ::before (červený čtvereček) */
.det__rich ul > li::before { content:''; position:absolute; left:2px; top:.6em; width:7px; height:7px; background:var(--red); border-radius:1px; }
.det__rich ol { counter-reset:detol; }
.det__rich ol > li { counter-increment:detol; padding-left:26px; }
.det__rich ol > li::before { content:counter(detol) '.'; position:absolute; left:0; top:0; color:var(--red); font-weight:700; }
.det__rich li > ul, .det__rich li > ol { margin-top:6px; }
.det__rich blockquote { border-left:3px solid var(--red); padding:4px 0 4px 16px; color:var(--ink); font-style:italic; }
.det__rich hr { border:0; border-top:1px solid var(--line); margin:22px 0; }
.det__rich a { color:var(--red); text-decoration:underline; }
.det__rich .det__tablewrap { overflow-x:auto; max-width:100%; }
.det__rich table { border-collapse:collapse; width:100%; font-size:14px; line-height:1.5; }
.det__rich th, .det__rich td { border:1px solid var(--line); padding:8px 10px; text-align:left; vertical-align:top; }
.det__rich th { color:var(--ink); font-weight:700; background:rgba(127,127,127,.08); }
/* Seznam z `#` (přednosti z excerptu / legacy popis) — dvousloupcová mřížka se SVG fajfkami */
.det__rich ul.det__desclist { display:grid; grid-template-columns:1fr 1fr; gap:10px 28px; margin-top:14px; }
.det__rich ul.det__desclist > li { display:flex; align-items:flex-start; gap:10px; padding-left:0; margin-top:0; }
.det__rich ul.det__desclist > li::before { position:static; flex-shrink:0; margin-top:8px; }
.det__rich li svg { color:var(--red); flex-shrink:0; margin-top:3px; }
.det__rich li svg:first-child + *::before, .det__rich li:has(> svg)::before { display:none; }

/* „Načíst další" pod mřížkou vazeb (detail.js, 2026-09-22) */
.det__relmore { display:flex; margin:20px auto 0; }

.spectable { width:100%; border-collapse:collapse; margin-top:16px; border:1px solid var(--line); }
.spectable tr { border-bottom:1px solid var(--line); }
.spectable tr:nth-child(even) { background:var(--char-2); }
body.light .spectable tr:nth-child(even) { background:#f7f8fa; }
.spectable th { text-align:left; font-family:var(--mono); font-size:12px; font-weight:600; color:var(--mut); text-transform:uppercase; letter-spacing:.03em; padding:14px 18px; width:42%; vertical-align:top; }
.spectable td { padding:14px 18px; font-size:14.5px; font-weight:600; color:#fff; }
body.light .spectable td { color:var(--ink); }
/* Parametr s více hodnotami (PP, PET) — štítky (29. 9. 2026). */
.spectable td i { color:inherit; font-style:normal; }

/* ===== ROZBALOVACÍ SKUPINY PANELU (filtry i kategorie) =====
   Server je renderuje jako <details>/<summary>, takže rozbalování funguje
   i bez JS. `.fgrp` drží rámeček a padding beze změny, summary jen nahrazuje
   dřívější <h4> jako klikací hlavičku. */
.fgrp--acc > .fgrp__sum { display:flex; align-items:center; gap:10px; cursor:pointer; list-style:none; user-select:none; }
.fgrp--acc > .fgrp__sum::-webkit-details-marker { display:none; }
.fgrp--acc > .fgrp__sum h4 { margin-bottom:0; flex:1; min-width:0; }
.fgrp--acc > .fgrp__sum:hover h4 { color:var(--mut); }
.fgrp--acc > .fgrp__sum:focus-visible { outline:2px solid var(--red); outline-offset:3px; }
.fgrp__chev { color:var(--faint); transition:transform .2s; flex-shrink:0; }
.fgrp--acc[open] > .fgrp__sum .fgrp__chev { transform:rotate(180deg); color:var(--red); }
.fgrp--acc > .fgrp__body { padding-top:12px; }
/* Kategorie mají vlastní vnitřní odsazení (.catnav2__h), takže by se padding
   sčítal a strom by se odsadil od hlavičky víc než skupiny filtrů. */
.fgrp--cats > .fgrp__body { padding-top:6px; }
/* Skupiny filtrů bydlí uvnitř jedné nadřazené „Filtry“, takže by se jejich
   padding sčítal s jejím (18 + 18 px). Zápornou marží se vnořené skupiny
   vrátí na plnou šířku panelu a čáry mezi nimi navážou na okraje. */
.fgrp--filters > .fgrp__body { padding-top:0; margin:14px -18px -18px; }
.fgrp--filters > .fgrp__body > .fgrp { border-top:1px solid var(--line); border-bottom:none; }
.fgrp--filters > .fgrp__body > .fgrp--active { padding-top:14px; }

/* ===== FILTR: tlačítko v liště + modal ===== */
.cat__filterbtn { display:inline-flex; align-items:center; gap:8px; height:38px; padding:0 16px; background:var(--red); color:#fff; border:none; font-family:var(--exo); font-weight:700; font-size:13px; text-transform:uppercase; letter-spacing:.02em; cursor:pointer; flex-shrink:0; }
.cat__filterbtn svg { stroke:#fff; }
.cat__filterbtn .cnt2 { background:#fff; color:var(--red); min-width:18px; height:18px; border-radius:9px; font-size:11px; font-family:var(--mono); display:grid; place-items:center; padding:0 4px; }
/* Kategorie bez facetů: modal by byl prázdný, na mobilu ale tlačítko dál
   otevírá sheet se stromem kategorií — proto se schovává jen na desktopu. */
@media (min-width:881px){ .cat__filterbtn--mobileonly { display:none; } }
.cat__backdrop { display:none; position:fixed; inset:0; background:rgba(8,9,12,.6); backdrop-filter:blur(2px); z-index:140; }
.cat__backdrop.on { display:block; }
.cat__sheethead, .cat__sheetfoot { display:none; }

/* Modal „Filtrovat" — na rozdíl od panelu sbírá výběr dávkově a odešle ho
   teprve na potvrzení, proto je to samostatný klon skupin, ne přesunutý panel
   (ten musí na desktopu zůstat vidět vedle produktů). */
.fmodal { position:fixed; inset:0; z-index:150; display:grid; place-items:center; padding:24px; background:rgba(8,9,12,.6); backdrop-filter:blur(2px); }
.fmodal[hidden] { display:none; }
.fmodal__box { display:flex; flex-direction:column; width:min(560px,100%); max-height:min(680px,calc(100vh - 48px)); border:1px solid var(--line); background:var(--char-2); border-radius:var(--rad-lg); overflow:hidden; }
body.light .fmodal__box { background:#fff; }
.fmodal__head { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:16px 18px; border-bottom:1px solid var(--line); flex-shrink:0; }
.fmodal__head b { font-size:17px; font-weight:800; text-transform:uppercase; }
.fmodal__head button { width:38px; height:38px; display:grid; place-items:center; color:var(--faint); border:1px solid var(--line); background:none; cursor:pointer; border-radius:var(--rad-sm); }
.fmodal__head button:hover { border-color:var(--red); color:var(--red); }
.fmodal__body { flex:1; overflow-y:auto; scrollbar-width:thin; }
.fmodal__foot { display:flex; gap:10px; padding:14px 18px; border-top:1px solid var(--line); flex-shrink:0; }
.fmodal__foot .clear { flex-shrink:0; height:46px; padding:0 18px; border:1px solid var(--line); background:none; color:var(--mut); font-family:var(--exo); font-weight:700; font-size:13px; text-transform:uppercase; cursor:pointer; border-radius:var(--rad-sm); }
.fmodal__foot .clear:hover { border-color:var(--red); color:var(--red); }
.fmodal__foot .apply { flex:1; height:46px; }
/* V modalu jsou skupiny vždy rozbalené — je to jednorázový výběr, ne trvalý
   panel, a schovávat v něm filtry by šlo přímo proti důvodu, proč vznikl. */
.fmodal .fgrp--acc > .fgrp__sum { cursor:default; }
.fmodal .fgrp--acc > .fgrp__sum .fgrp__chev { display:none; }
.cat__backdrop { display:none; position:fixed; inset:0; background:rgba(8,9,12,.6); backdrop-filter:blur(2px); z-index:140; }
.cat__backdrop.on { display:block; }
.cat__sheethead, .cat__sheetfoot { display:none; }

/* responsive */
@media (max-width:1080px){
  .cat__layout { grid-template-columns:1fr; }
  .cat__bar { top:64px; }
  .cat__side { position:static; }
  .cat__grid { grid-template-columns:repeat(2,1fr); }
  .det__top { grid-template-columns:1fr; gap:26px; }
  .det__gallery { position:static; }
  .cat__head h1 { font-size:34px; }
}
@media (max-width:880px){
  /* sticky toolbar s tlačítkem Filtry — vždy dostupné při scrollu */
  .cat__bar { position:sticky; top:56px; z-index:60; gap:10px; padding:10px 12px; box-shadow:0 8px 20px -14px rgba(0,0,0,.5); }
  .cat__bar .res { order:5; width:100%; font-size:12.5px; }
  .cat__filterbtn { height:40px; }
  .cat__bar .sp { display:none; }
  .cat__sort { flex:1; min-width:0; }
  .cat__sort label { display:none; }
  .cat__select { width:100%; }

  /* filtr jako bottom sheet */
  .cat__side { position:fixed; left:0; right:0; bottom:0; top:auto; z-index:150; max-height:86vh; width:100%;
    border:none; border-top:3px solid var(--red); background:var(--char-2);
    transform:translateY(100%); transition:transform .28s cubic-bezier(.2,.8,.2,1);
    display:flex; flex-direction:column; overflow:hidden; }
  body.light .cat__side { background:#fff; }
  .cat__side.is-open { transform:none; }
  .cat__sheethead { display:flex; align-items:center; justify-content:space-between; padding:16px 18px; border-bottom:1px solid var(--line); flex-shrink:0; }
  .cat__sheethead b { font-size:17px; font-weight:800; text-transform:uppercase; }
  .cat__sheethead button { width:38px; height:38px; display:grid; place-items:center; color:var(--faint); border:1px solid var(--line); background:none; cursor:pointer; }
  .cat__sheethead button:hover { border-color:var(--red); color:var(--red); }
  .cat__side .fgrp:first-of-type { border-top:none; }
  .cat__sheetscroll { flex:1; overflow-y:auto; -webkit-overflow-scrolling:touch; }
  .cat__sheetfoot { display:flex; gap:10px; padding:14px 18px; border-top:1px solid var(--line); flex-shrink:0; }
  .cat__sheetfoot .clear { flex-shrink:0; height:48px; padding:0 18px; border:1px solid var(--line); background:none; color:var(--mut); font-family:var(--exo); font-weight:700; font-size:13px; text-transform:uppercase; cursor:pointer; }
  .cat__sheetfoot .apply { flex:1; height:48px; }

  /* grid 2 sloupce zůstává; list view zůstává kompaktní řádek (nemění se na grid) */
  .cat__grid { grid-template-columns:repeat(2,1fr); gap:12px; }
  .cat__grid.is-list { grid-template-columns:1fr; }
  .cat__grid.is-list .pc { flex-direction:row; align-items:stretch; }
  .cat__grid.is-list .pc__media { width:108px; aspect-ratio:auto; flex-shrink:0; }
  .cat__grid.is-list .pc__body { flex-direction:column; align-items:stretch; gap:0; padding:12px 14px; }
  .cat__grid.is-list .pc__price, .cat__grid.is-list .pc__foot { width:auto; }
  .cat__grid.is-list .pc__name { font-size:14.5px; -webkit-line-clamp:2; }
}
@media (max-width:680px){
  /* hluboký breadcrumb (produkt/detail) přetékal vpravo (fixní výška + nowrap) —
     poslední drobek ořezán mimo viewport. Zalom na víc řádků, výšku uvolni. */
  .A__crumb .wrap { flex-wrap:wrap; height:auto; min-height:46px; padding-top:9px; padding-bottom:9px; row-gap:2px; }
  .cat__head h1 { font-size:30px; }
  /* toolbar: grid/list přepínač (.cat__view) se na úzkém 1sloupcovém výpisu mačkal
     u pravého okraje za "Doporučené" (přetékal / ořezán). Na mobilu je zbytečný —
     skryj ho, uvolní se místo pro řazení a nic nepřetéká. */
  .cat__view { display:none; }
  .det h1 { font-size:26px; }
  .det__rich ul.det__desclist { grid-template-columns:1fr; }
  .det__keyspecs { grid-template-columns:1fr; }
  .det__cta { flex-wrap:wrap; }
  .det__sec h2 { font-size:19px; }
}
@media (max-width:460px){
  .cat__grid { grid-template-columns:1fr; }
  .det__thumbs { flex-wrap:wrap; }
}

/* ===== ZAOBLENÍ — katalog + detail (jednotný styl webu) ===== */
/* katalog: toolbar ovládání */
.cat__bar { border-radius:var(--rad-lg); }
.cat__side { border-radius:var(--rad-lg); }
.cat__select { border-radius:var(--rad-sm); }
.cat__view { border-radius:var(--rad-sm); overflow:hidden; }
.fchip { border-radius:999px; }
.cat__filterbtn { border-radius:var(--rad-sm); }
.cat__sheethead button, .cat__sheetfoot .clear { border-radius:var(--rad-sm); }
/* detail produktu */
.det__main { border-radius:var(--rad-lg); }
.det__main .badge { border-radius:var(--rad-xs); }
.det__thumb { border-radius:var(--rad-sm); }
.det__keyspecs { border-radius:var(--rad-md); overflow:hidden; }
.det__buy { border-radius:var(--rad-lg); }
.det__gated .pill { border-radius:var(--rad-sm); }
.spectable { border-radius:var(--rad-md); overflow:hidden; }
body.sharp .cat__select, body.sharp .cat__view, body.sharp .fchip, body.sharp .cat__filterbtn,
body.sharp .cat__bar, body.sharp .cat__side,
body.sharp .det__main, body.sharp .det__main .badge, body.sharp .det__thumb,
body.sharp .det__keyspecs, body.sharp .det__buy, body.sharp .det__gated .pill,
body.sharp .spectable { border-radius:0 !important; }

/* Detail: sekce VIDEA — YouTube embedy (16:9, lazy iframes) */
.det__videos { display:grid; grid-template-columns:repeat(2, minmax(0,1fr)); gap:18px; margin-top:18px; }
.det__videos--one { grid-template-columns:minmax(0, 720px); }
.det__video { position:relative; aspect-ratio:16/9; background:#0b0d10; border:1px solid var(--line); border-radius:var(--rad-lg); overflow:hidden; }
.det__video iframe { position:absolute; inset:0; width:100%; height:100%; border:0; }
body.sharp .det__video { border-radius:0 !important; }
@media (max-width:680px){ .det__videos, .det__videos--one { grid-template-columns:1fr; gap:12px; } }

/* Hláška u fuzzy výsledku hledání (2026-08-24).
   Fuzzy = „nic přesného jsme nenašli, tohle je jen podobné". Dosud se to
   vydávalo za nález, takže hledání „Lenka" tiše vrátilo „Lepenku". */
.A__searchhint { margin:8px 0 0; font-size:14px; color:var(--faint); line-height:1.55; }
.A__searchhint a { color:#fff; text-decoration:underline; text-underline-offset:2px; }
.A__searchhint a:hover { opacity:.8; }

/* Video až po souhlasu / kliknutí (2026-09-22) — tlačítko přes prázdný rámeček. */
.det__video{position:relative;}
.det__video__load{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;width:100%;height:100%;border:0;background:rgba(0,0,0,.72);color:#fff;font:600 15px/1.3 var(--exo, sans-serif);cursor:pointer;}
.det__video__load:hover{background:rgba(0,0,0,.6);}
.det__video.is-loaded .det__video__load{display:none;}

/* ===== FILTR: zásuvka z boku (2026-10-01, filter-drawer.ts + filtry-zasuvka.js) =====
   Předloha: prototyp „Zásuvka z boku + Zaškrtávátka", tlačítko zůstává ČERVENÉ
   (.cat__filterbtn). Zásuvka je v HTML od začátku, jen odsunutá — otevření nic
   nenačítá. Bez JS se otevře přes :target (#filtry). Z-index nad hlavičkou,
   modaly i cookie lištou (1400 — jinak by na mobilu zakryla tlačítko
   „Zobrazit produkty"); pod toastem (10000). Lišta je po zavření zase vidět. */
a.cat__filterbtn { text-decoration:none; }
a.cat__filterbtn:hover { background:var(--red-600); }
.cat__filterbtn .cnt2 { display:grid; }
.fdr-lock, .fdr-lock body { overflow:hidden; }
.fdr-scrim { position:fixed; inset:0; z-index:1450; background:rgba(8,9,12,.55); backdrop-filter:blur(2px); opacity:0; visibility:hidden; transition:opacity .25s, visibility 0s linear .25s; }
.fdr-scrim.is-on { opacity:1; visibility:visible; transition:opacity .25s, visibility 0s; }
.fdr { position:fixed; top:0; right:0; bottom:0; z-index:1460; width:min(400px,100vw); display:flex; flex-direction:column;
  background:var(--char-2); color:#fff; border-left:1px solid var(--line); box-shadow:-18px 0 50px -24px rgba(0,0,0,.5);
  transform:translateX(100%); visibility:hidden; transition:transform .28s cubic-bezier(.2,.7,.3,1), visibility 0s linear .28s; outline:none; margin:0; }
body.light .fdr { background:#fff; color:var(--ink); }
.fdr.is-open, .fdr:target { transform:none; visibility:visible; transition:transform .28s cubic-bezier(.2,.7,.3,1), visibility 0s; }
.fdr__head { display:flex; align-items:center; gap:12px; padding:14px 18px; border-bottom:1px solid var(--line); flex-shrink:0; padding-top:max(14px, env(safe-area-inset-top)); }
body.light .fdr__head, body.light .fdr__foot, body.light .fdr__grp, body.light .fdr__quick { border-color:#e6e8eb; }
.fdr__head b { flex:1; font-size:17px; font-weight:800; text-transform:uppercase; letter-spacing:.02em; }
.fdr__reset { font-size:13px; font-weight:700; color:var(--red); text-decoration:underline; text-underline-offset:2px; }
.fdr__x { width:38px; height:38px; display:grid; place-items:center; color:var(--faint); border:1px solid var(--line); border-radius:var(--rad-sm); text-decoration:none; }
body.light .fdr__x { border-color:#e6e8eb; }
.fdr__x:hover { border-color:var(--red); color:var(--red); }
.fdr__body { flex:1; overflow-y:auto; overscroll-behavior:contain; -webkit-overflow-scrolling:touch; scrollbar-width:thin; }
.fdr__quick { padding:14px 18px 10px; border-bottom:1px solid var(--line); }
.fdr__h { margin:0 0 8px; font-size:13px; font-weight:800; text-transform:uppercase; letter-spacing:.03em; }
.fdr__grp { border-bottom:1px solid var(--line); }
.fdr__sum { display:flex; align-items:center; gap:10px; padding:14px 18px; cursor:pointer; list-style:none; font-size:13px; font-weight:800; text-transform:uppercase; letter-spacing:.03em; }
.fdr__sum::-webkit-details-marker { display:none; }
.fdr__sum:focus-visible { outline:2px solid var(--red); outline-offset:-2px; }
.fdr__gt { flex:1; min-width:0; }
.fdr__u { font-weight:600; text-transform:none; color:var(--faint); }
.fdr__chev { color:var(--faint); transition:transform .2s; flex-shrink:0; }
.fdr__grp[open] > .fdr__sum .fdr__chev { transform:rotate(180deg); color:var(--red); }
.fdr__grp > .fdr__gb { padding:0 18px 14px; }
.fdr__opt { display:flex; align-items:center; gap:10px; padding:6px 0; font-size:14px; line-height:1.3; cursor:pointer; color:inherit; }
.fdr__opt input { position:absolute; opacity:0; width:1px; height:1px; margin:0; }
.fdr__box { flex:0 0 18px; width:18px; height:18px; border:2px solid #c3c8cf; border-radius:4px; background:#fff; display:grid; place-items:center; transition:background .12s, border-color .12s; }
.fdr__opt input:checked + .fdr__box { background:var(--red); border-color:var(--red); }
.fdr__opt input:checked + .fdr__box::after { content:""; width:5px; height:9px; border:solid #fff; border-width:0 2px 2px 0; transform:translateY(-1px) rotate(45deg); }
.fdr__opt input:focus-visible + .fdr__box { outline:2px solid var(--red); outline-offset:2px; }
.fdr__opt:hover .fdr__box { border-color:var(--red); }
/* ř. 81 (8. 10. 2026): stálé rychlé filtry s nulou — vidět, ale šedé a nezaškrtnutelné. */
.fdr__opt--off { opacity:.45; cursor:default; }
.fdr__opt--off:hover .fdr__box { border-color:#c3c8cf; }
.fdr__n0 { margin-left:4px; color:var(--faint,#9ca3af); font-size:12.5px; }
.fdr__t { min-width:0; overflow-wrap:anywhere; }
/* posuvník: dva range inputy nad sebou, výplň mezi úchyty */
.fdr__track { position:relative; height:30px; margin:2px 9px 4px; }
.fdr__track::before { content:""; position:absolute; left:-9px; right:-9px; top:13px; height:4px; border-radius:2px; background:#dfe2e6; }
.fdr__fill { position:absolute; top:13px; height:4px; border-radius:2px; background:var(--red); }
.fdr__track input[type=range] { position:absolute; left:-9px; width:calc(100% + 18px); top:5px; height:20px; margin:0; background:none; pointer-events:none; -webkit-appearance:none; appearance:none; }
.fdr__track input[type=range]::-webkit-slider-runnable-track { background:none; }
.fdr__track input[type=range]::-webkit-slider-thumb { pointer-events:auto; -webkit-appearance:none; width:20px; height:20px; border-radius:50%; background:#fff; border:2px solid var(--red); cursor:grab; box-shadow:0 1px 3px rgba(0,0,0,.25); }
.fdr__track input[type=range]::-moz-range-thumb { pointer-events:auto; width:16px; height:16px; border-radius:50%; background:#fff; border:2px solid var(--red); cursor:grab; }
.fdr__track input[type=range]::-moz-range-track { background:none; }
.fdr__track input[type=range]:focus-visible::-webkit-slider-thumb { outline:2px solid var(--red); outline-offset:2px; }
.fdr__nums { display:flex; align-items:center; gap:8px; font-size:12px; color:var(--faint); flex-wrap:wrap; }
.fdr__nums label { display:flex; align-items:center; gap:6px; }
.fdr__nums input { width:84px; height:34px; border:1px solid #d7dbe0; border-radius:var(--rad-sm); padding:0 8px; font:inherit; font-size:14px; color:inherit; background:transparent; }
body.light .fdr__nums input { color:var(--ink); background:#fff; }
.fdr__nums input:focus { outline:none; border-color:var(--red); }
.fdr__unit { font-weight:600; }
/* složený rozměr (ř. 92, 8. 10. 2026): části pod jedním nadpisem */
.fdr__part + .fdr__part { margin-top:12px; padding-top:10px; border-top:1px dashed var(--line); }
body.light .fdr__part + .fdr__part { border-color:#e6e8eb; }
.fdr__pl { font-size:13px; font-weight:700; margin:0 0 2px; }
.fdr__foot { display:flex; gap:10px; padding:12px 18px; border-top:1px solid var(--line); flex-shrink:0; padding-bottom:max(12px, env(safe-area-inset-bottom)); }
.fdr__apply { flex:1; height:48px; border:none; cursor:pointer; font-family:var(--exo); font-weight:800; font-size:14px; text-transform:uppercase; letter-spacing:.02em; }
.fdr__apply[disabled] { background:#b9bec5; cursor:default; }
.fdr__apply.is-busy { opacity:.85; }
/* strom kategorií v zásuvce jen na mobilu (levý sloupec tam není) */
/* Filtr „Kategorie" (hub / hledání, 1. 10. 2026) — podkategorie pod rodičem ve sbaleném bloku. */
.fdr__subd { margin:0 0 4px 28px; }
.fdr__subs { display:inline-flex; align-items:center; gap:6px; padding:2px 0 4px; cursor:pointer; list-style:none; font-size:12px; font-weight:700; color:var(--faint); }
.fdr__subs::-webkit-details-marker { display:none; }
.fdr__subs:hover { color:var(--red); }
.fdr__subs .fdr__chev { width:12px; height:12px; }
.fdr__subd[open] > .fdr__subs .fdr__chev { transform:rotate(180deg); color:var(--red); }
.fdr__subl { padding-left:2px; border-left:1px solid var(--line); padding-left:10px; }
.fdr__opt--sub { font-size:13.5px; padding:5px 0; }
.fdr__grp--cats { display:none; }
.fdr__grp--cats .fdr__gb { padding:0 10px 12px; }
/* čipy aktivních filtrů pod lištou */
.fchips { display:flex; flex-wrap:wrap; gap:8px; margin:-6px 0 16px; }
.fchip { display:inline-flex; align-items:center; gap:7px; padding:6px 10px 6px 13px; border:1px solid var(--line); background:var(--char-2); color:inherit; font-size:13px; line-height:1.2; text-decoration:none; }
body.light .fchip { background:#f4f5f7; border-color:#dfe2e6; color:var(--ink); }
.fchip:hover { border-color:var(--red); }
.fchip__x { display:grid; place-items:center; width:18px; height:18px; border-radius:50%; background:rgba(0,0,0,.08); color:inherit; }
.fchip:hover .fchip__x { background:var(--red); color:#fff; }
.fchip--all, body.light .fchip--all { border-color:transparent; background:none !important; color:var(--red) !important; font-weight:700; text-decoration:underline; text-underline-offset:2px; }
body.sharp .fdr__x, body.sharp .fdr__nums input, body.sharp .fchip { border-radius:0 !important; }
@media (max-width:880px){
  /* mobil: přes celou obrazovku; levý sloupec (strom kategorií) se skryje —
     kategorie jsou v zásuvce dole */
  .fdr { width:100vw; border-left:none; }
  .fdr-scrim { display:none; }
  .fdr__grp--cats { display:block; }
  .cat__side--nav { display:none !important; }
  .fchips { margin:0 0 12px; }
}
@media (prefers-reduced-motion:reduce){
  .fdr, .fdr-scrim { transition:none; }
}

/* 13. 10. 2026 (audit responzivity N-11, jako Senzapack): záložky detailu na telefonu jako vodorovně
   posuvný pás místo nepravidelného lámání po dvou */
@media (max-width:560px) {
  .det__tabs { flex-wrap:nowrap; overflow-x:auto; scrollbar-width:none; -webkit-overflow-scrolling:touch; gap:0; }
  .det__tabs::-webkit-scrollbar { display:none; }
  .det__tab { flex:0 0 auto; padding:12px 14px; white-space:nowrap; }
}
/* F-9 (13. 10. 2026): katalogové číslo „700 024697“ se lámalo na dva řádky (mezera v kódu) */
.det__code { white-space:nowrap; }

