/* ==========================================================================
   Písma – hostovaná na vlastní doméně (podřezaná na znaky, které web používá).
   Google Fonts by posílaly IP návštěvníka na cizí server a stály jedno blokující kolo navíc.
   ========================================================================== */
@font-face {
  font-family: 'Work Sans';
  font-style: normal;
  font-weight: 400 800;
  font-display: swap;
  src: url('../fonts/worksans-latin-v2.woff2') format('woff2');
  unicode-range: U+0000, U+000D, U+0020-007E, U+00A0-00FF, U+0102, U+0131, U+0152-0153, U+2009, U+200B, U+2013-2014, U+2018-201A, U+201C-201E, U+2022, U+2026, U+2032-2033, U+2039-203A, U+2044;
}
@font-face {
  font-family: 'Work Sans';
  font-style: normal;
  font-weight: 400 800;
  font-display: swap;
  src: url('../fonts/worksans-latinext-v2.woff2') format('woff2');
  unicode-range: U+0100-0101, U+0103-0130, U+0132-0148, U+014A-0151, U+0154-017F, U+2020;
}
@font-face {
  font-family: 'Ubuntu Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('../fonts/ubuntumono-400-latin-v2.woff2') format('woff2');
  unicode-range: U+0000, U+0008-0009, U+000D, U+001D, U+0020-007E, U+00A0-00FF, U+0131, U+0152-0153, U+2013-2014, U+2018-201A, U+201C-201E, U+2022, U+2026, U+2039-203A, U+2044, U+FFFD;
}
@font-face {
  font-family: 'Ubuntu Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('../fonts/ubuntumono-400-latinext-v2.woff2') format('woff2');
  unicode-range: U+0100-0130, U+0132-0151, U+0154-017F, U+2020;
}
@font-face {
  font-family: 'Ubuntu Mono';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url('../fonts/ubuntumono-700-latin-v2.woff2') format('woff2');
  unicode-range: U+0000, U+0008-0009, U+000D, U+001D, U+0020-007E, U+00A0-00FF, U+0131, U+0152-0153, U+2013-2014, U+2018-201A, U+201C-201E, U+2022, U+2026, U+2039-203A, U+2044, U+FFFD;
}
@font-face {
  font-family: 'Ubuntu Mono';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url('../fonts/ubuntumono-700-latinext-v2.woff2') format('woff2');
  unicode-range: U+0100-0130, U+0132-0151, U+0154-017F, U+2020;
}

/* ==========================================================================
   Kolofix – styly webu
   Tokeny → základ → komponenty → stránky → utility
   ========================================================================== */

:root {
  --red: #D00000;
  --red-strong: #A80000;
  --red-soft: #FBE7E7;
  --ink: #0E0B12;
  --ink-surface: #0E0B12;
  --ink-2: #181420;
  --paper: #FFFFFF;
  --paper-2: #F5F3F4;
  --paper-3: #ECE8EA;
  --line: #E2DDE0;
  --line-strong: #C9C2C7;
  --text: #14111A;
  --muted: #6B6570;
  --on-ink: #F3F0F2;
  --on-ink-muted: #B4ADB8;
  --ok: #1D8A4E;
  --ok-soft: #E3F4EA;
  --warn: #B86A00;
  --warn-soft: #FCEFD9;
  --bad: #C81E1E;
  --bad-soft: #FBE7E7;
  --map-land: #F0EDEF;
  --map-stroke: #B7AFB6;
  --map-region: #C4BAC1;
  --map-label: #6B6570;
  --map-city: #3F3947;
  --map-city-dot: #8C8492;
  --shadow: 0 12px 32px rgba(14, 11, 18, .12);
  --shadow-sm: 0 2px 8px rgba(14, 11, 18, .08);
  --radius: 14px;
  --radius-sm: 8px;
  --font: 'Work Sans', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;
  --mono: 'Ubuntu Mono', ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  --wrap: 1200px;
  --gutter: clamp(16px, 4vw, 32px);
  --header-h: 72px;
  color-scheme: light;
}


/* ---------------------------------------------------------------- základ */
*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; overflow-x: clip; }
body { overflow-x: clip; }
/* Implicitní sloupec gridu se sám roztáhne na šířku nejširšího obsahu (select, tlačítko, číslo).
   Na úzkém displeji tím přeteče celá stránka a dá se s ní táhnout do stran – proto ho všude zastropujeme. */
:where(.finder, .field, .fields, .b2b-form, .olist, .bcard, .order__side, .branch__side, .branch-hero__cta,
       .ticket__rows, .calc, .order-done, .gallery, .svc-list, .nearest, .chips, .mapctl,
       .contact-list, .contact-emails, .footer__list, .type-legend, .halfday__btn, .choice, .branch__phone) {
  grid-auto-columns: minmax(0, 1fr);
}
body {
  margin: 0;
  font-family: var(--font);
  font-size: 1rem;
  line-height: 1.6;
  color: var(--text);
  background: var(--paper);
  -webkit-font-smoothing: antialiased;
}
img, svg { max-width: 100%; height: auto; display: block; }
[hidden] { display: none !important; }
a { color: inherit; text-decoration-thickness: 1px; text-underline-offset: .15em; }
a:hover { color: var(--red); }
h1, h2, h3, h4 { margin: 0 0 .5em; line-height: 1.1; font-weight: 800; letter-spacing: -.02em; text-wrap: balance; }
h1 { font-size: clamp(2.1rem, 5vw, 3.5rem); }
h2 { font-size: clamp(1.6rem, 3.2vw, 2.3rem); }
h3 { font-size: 1.2rem; font-weight: 600; letter-spacing: -.01em; }
.h4 { font-size: 1.05rem; font-weight: 600; letter-spacing: 0; display: flex; align-items: center; gap: .5rem; margin-bottom: .75rem; }
p { margin: 0 0 1em; }
ul, ol { margin: 0; padding: 0; list-style: none; }
button { font: inherit; color: inherit; }
:focus-visible { outline: 2px solid var(--red); outline-offset: 3px; border-radius: 4px; }
.mono { font-family: var(--mono); font-size: .95em; }
.muted { color: var(--muted); }
.small { font-size: .875rem; }
.big { font-size: 1.5rem; }
.center { text-align: center; }
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
.skip { position: absolute; left: 8px; top: -80px; background: var(--red); color: #fff; padding: .5rem 1rem; z-index: 100; border-radius: 6px; transition: top .15s; }
.skip:focus { top: 8px; }
.wrap { max-width: var(--wrap); margin-inline: auto; padding-inline: var(--gutter); }
.wrap--narrow { max-width: 820px; }
.ico { width: 1.15em; height: 1.15em; flex: none; }
.eyebrow { text-transform: uppercase; letter-spacing: .14em; font-size: .78rem; color: var(--red); margin-bottom: .75rem; font-weight: 700; }
.lead { font-size: clamp(1.05rem, 1.4vw, 1.2rem); line-height: 1.55; max-width: 62ch; color: var(--muted); }

.note { display: flex; gap: .5rem; align-items: flex-start; color: var(--muted); font-size: .92rem; }
.note .ico { margin-top: .2em; color: var(--red); }

/* ---------------------------------------------------------------- tlačítka */
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: .5rem;
  padding: .7rem 1.15rem; border-radius: var(--radius-sm); border: 1.5px solid transparent;
  font-weight: 600; font-size: .95rem; line-height: 1.2; text-decoration: none; cursor: pointer;
  transition: background-color .15s, color .15s, border-color .15s, transform .15s;
  white-space: nowrap;
}
.btn:active { transform: translateY(1px); }
.btn--primary { background: var(--red); color: #fff; }
.btn--primary:hover { background: var(--red-strong); color: #fff; }
.btn--outline { border-color: var(--line-strong); color: var(--text); background: transparent; }
.btn--outline:hover { border-color: var(--red); color: var(--red); }
.btn--ghost { background: transparent; color: var(--text); border-color: transparent; padding-inline: .8rem; }
.btn--ghost:hover { background: var(--paper-2); color: var(--red); }
.btn--sm { padding: .5rem .85rem; font-size: .875rem; }
.btn--lg { padding: .9rem 1.5rem; font-size: 1.05rem; }
.btn.is-disabled { opacity: .55; pointer-events: none; }
.btn.is-ready { animation: btnPulse .6s ease-in-out 2; }
@keyframes btnPulse { 50% { box-shadow: 0 0 0 6px color-mix(in srgb, var(--red) 25%, transparent); } }
.btn[disabled] { opacity: .55; cursor: not-allowed; }

/* ---------------------------------------------------------------- horní lišta + hlavička */
.testbar { background: #FFE58A; color: #3A2E00; font: 600 .85rem/1.4 var(--font); text-align: center; padding: .45rem 1rem; }
.testbar a { color: inherit; }
.topbar { background: var(--red); color: #fff; font-size: 1rem; font-weight: 700; letter-spacing: .05em; word-spacing: -.3em; text-transform: uppercase; }
.topbar__dot { margin-left: -.22em; } /* tečka v neproporcionálním písmu jinak vypadá jako s mezerou */
.topbar__in { display: flex; justify-content: space-between; align-items: center; gap: 1rem; padding-block: .7rem; }
.topbar a { color: #fff; display: inline-flex; align-items: center; gap: .4rem; white-space: nowrap; text-underline-offset: 4px; }
.site-header { position: sticky; top: 0; z-index: 50; background: var(--paper); border-bottom: 1px solid var(--line); }
.site-header__in { display: flex; align-items: center; gap: 2rem; height: var(--header-h); }
.logo { display: inline-flex; flex-shrink: 0; color: var(--text); text-decoration: none; }
.logo svg { width: 136px; height: auto; }
.logo--footer { color: var(--text); }
.nav { margin-left: auto; }
.nav ul { display: flex; gap: 1.6rem; }
.nav a { text-decoration: none; font-weight: 500; font-size: .95rem; padding-block: .25rem; border-bottom: 2px solid transparent; white-space: nowrap; }
.nav a:hover, .nav a[aria-current="page"] { border-bottom-color: var(--red); color: var(--text); }
.nav__mobile { display: none; }
.site-header__cta { display: flex; align-items: center; gap: 1rem; }
.header-phone { display: inline-flex; align-items: center; gap: .4rem; text-decoration: none; font-size: 1rem; font-weight: 700; white-space: nowrap; }
/* telefon a e-mail pod sebou – vedle sebe by se do hlavičky nevešly bez zmenšení loga (Marek 6. 11.) */
.header-contact { display: flex; flex-direction: column; align-items: flex-start; gap: .1rem; line-height: 1.25; }
.header-mail { font-size: .85rem; font-weight: 500; color: var(--muted); }
.header-mail:hover { color: var(--red); }
.header-mail .ico { width: 1em; height: 1em; }
/* přepínač jazyka CZ / EN – viditelný na všech šířkách */
.lang-switch { display: inline-flex; align-items: center; justify-content: center; min-width: 2.6rem; height: 2.2rem; padding: 0 .55rem;
               border: 1px solid var(--line-strong); border-radius: 999px; font-size: .8rem; font-weight: 700; letter-spacing: .06em;
               text-decoration: none; color: var(--text); }
.lang-switch:hover { border-color: var(--red); color: var(--red); }
.nav-toggle { display: none; background: none; border: 0; padding: .4rem; cursor: pointer; }
.nav-toggle .ico { width: 1.6rem; height: 1.6rem; }
.nav-toggle__close, .nav-toggle[aria-expanded="true"] .nav-toggle__open { display: none; }
.nav-toggle[aria-expanded="true"] .nav-toggle__close { display: inline; }
@media (max-width: 960px) {
  .nav { position: fixed; inset: 0 0 0 auto; width: min(86vw, 360px); background: var(--paper); border-left: 1px solid var(--line);
         box-shadow: var(--shadow); padding: calc(var(--header-h) + 1.5rem) 1.5rem 2rem; transform: translateX(100%);
         transition: transform .25s, visibility .25s; overflow: auto; z-index: 40; visibility: hidden; }
  .nav.is-open { transform: none; visibility: visible; }
  .nav ul { flex-direction: column; gap: .4rem; }
  .nav a { display: block; font-size: 1.15rem; padding: .6rem 0; border-bottom: 1px solid var(--line); }
  .nav__mobile { display: grid; gap: 1rem; margin-top: 1.5rem; }
  .nav__mobile a.mono { display: inline-flex; gap: .4rem; align-items: center; }
  .site-header__cta .header-phone, .site-header__cta .btn { display: none; }
  .nav-toggle { display: inline-flex; position: relative; z-index: 45; }
  .topbar { font-size: .95rem; }
  .topbar__long { display: none; }
}
@media (max-width: 960px) and (min-width: 600px) { .site-header__cta .btn { display: inline-flex; } }
/* notebooky kolem 1024 px: menu se nesmí zalomit – telefon jen jako ikona, menší mezery */
@media (min-width: 961px) and (max-width: 1180px) {
  .site-header__in { gap: 1rem; }
  .nav ul { gap: .9rem; }
  .site-header__cta { gap: .7rem; }
  .header-phone span { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
  .header-contact { flex-direction: row; align-items: center; gap: .9rem; }
  .header-mail .ico { width: 1.1em; height: 1.1em; }
}
/* anglické menu je delší – pod 1040 px se ikona e-mailu do hlavičky nevejde (e-mail je v patičce) */
@media (min-width: 961px) and (max-width: 1040px) { html[lang="en"] .site-header__cta .header-mail { display: none; } }
/* anglická verze má delší menu i telefon s předvolbou – číslo jen jako ikona ještě o kus dál */
@media (min-width: 1181px) { html[lang="en"] .nav ul { gap: 1.35rem; } }
@media (min-width: 1181px) and (max-width: 1260px) {
  html[lang="en"] .header-phone span { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
  html[lang="en"] .header-contact { flex-direction: row; align-items: center; gap: .9rem; }
}

/* ---------------------------------------------------------------- sekce */
.section { padding-block: clamp(3rem, 7vw, 5.5rem); }
.section--alt { background: var(--paper-2); }
.section--ink { background: var(--paper-2); color: var(--text); }
.section__head { max-width: 70ch; margin-bottom: 2.25rem; }
.section__head--row { display: flex; justify-content: space-between; align-items: flex-end; gap: 2rem; max-width: none; flex-wrap: wrap; }
.section__lead { color: var(--muted); font-size: 1.05rem; }

.section__title { margin-bottom: 1.5rem; }
.page-head { background: var(--paper-2); padding-block: clamp(2.5rem, 6vw, 4.5rem); border-bottom: 1px solid var(--line); }
.page-head h1 { margin-bottom: .6rem; }
.page-head__row { display: flex; justify-content: space-between; align-items: flex-end; gap: 2rem; flex-wrap: wrap; }
.page-head--photo { background: var(--paper-2); color: var(--text); position: relative; isolation: isolate; padding-block: clamp(4rem, 9vw, 7rem); }
.page-head--photo::before { content: ""; position: absolute; inset: 0; z-index: -1; background: var(--photo) center/cover no-repeat; opacity: .35; }
.page-suspension .page-head--photo { --photo: url("../img/silencer-1.webp"); }
.page-head--photo::after { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(90deg, var(--paper-2) 35%, rgba(245,243,244,.2) 100%); }

.crumbs { display: flex; gap: .5rem; font-size: .8rem; color: var(--muted); margin-bottom: 1rem; flex-wrap: wrap; }
.crumbs a { text-decoration: none; }

/* ---------------------------------------------------------------- hero */
.hero { background: linear-gradient(180deg, var(--paper-2) 0%, var(--paper) 100%); color: var(--text); overflow: hidden; border-bottom: 1px solid var(--line); }
.hero__grid { display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr); gap: clamp(2rem, 5vw, 4rem); align-items: center; padding-block: clamp(2.5rem, 6vw, 5rem); }
.hero__h { font-size: clamp(2.6rem, 6vw, 4.6rem); margin-bottom: 1rem; }
.hero__h em { font-style: normal; color: var(--red); }
.hero__cta { display: flex; gap: .75rem; flex-wrap: wrap; margin-block: 1.75rem 1.5rem; }
.hero__price { margin: 1rem 0 0; font-size: 1.05rem; font-weight: 600; }
.hero__price strong { color: var(--red); font-size: 1.2em; white-space: nowrap; }
.hero__facts { display: flex; gap: 1.25rem; flex-wrap: wrap; font-size: .85rem; color: var(--muted); }
.hero__facts li { display: inline-flex; align-items: center; gap: .4rem; }
.hero__facts .ico { color: var(--red); }
.hero__media { margin: 0; }
.hero__media img { border-radius: var(--radius); aspect-ratio: 7 / 5; object-fit: cover; box-shadow: var(--shadow); }
@media (max-width: 860px) {
  .hero__grid { grid-template-columns: minmax(0, 1fr); }
  .hero__media { order: -1; }
  .hero__media img { aspect-ratio: 16 / 9; }
}

/* ---------------------------------------------------------------- mapa + seznam */
.network__grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.05fr); gap: clamp(1.5rem, 4vw, 3rem); align-items: start;
                 overflow-anchor: none; /* polohu při filtrování drží main.js, prohlížeč do toho nesmí vstupovat */ }
.network__map { position: sticky; top: calc(var(--header-h) + 16px); display: grid; gap: 1rem; }
.mapbox { position: relative; background: var(--paper-2); border: 1px solid var(--line); border-radius: var(--radius); padding: 1rem; }
.czmap { width: 100%; height: auto; overflow: hidden; touch-action: pan-y; }
.czmap__geo, .czmap__pins { transition: none; }
.czmap__region { fill: var(--map-land); stroke: var(--map-region); stroke-width: 1.4; stroke-dasharray: 6 3; stroke-linejoin: round; vector-effect: non-scaling-stroke; }
.czmap__border { fill: none; stroke: var(--map-stroke); stroke-width: 2.2; stroke-linejoin: round; vector-effect: non-scaling-stroke; }
.czmap__rlabel text { font-family: var(--font); font-size: 13px; font-weight: 600; fill: var(--map-label); letter-spacing: .12em; text-transform: uppercase; pointer-events: none;
                      paint-order: stroke; stroke: var(--map-land); stroke-width: 4px; stroke-linejoin: round; }
/* název kraje jen v přiblížené mapě (přepíná main.js), na celé republice by mapu zahltil */
.czmap__rlabel { opacity: 0; transition: opacity .2s; }
.czmap__rlabel--on { opacity: 1; }
.czmap--mini .czmap__rlabel { display: none; }
.czcity text { font-family: var(--font); font-size: 20px; font-weight: 600; fill: var(--map-city); pointer-events: none;
               paint-order: stroke; stroke: var(--map-land); stroke-width: 4px; stroke-linejoin: round; }
.czcity circle { fill: var(--map-city-dot); }
.czcity--pinned text { font-size: 18px; }
.czcity--bold text { font-weight: 800; }
.czmap--mini .czcity { display: none; }
.czcity--hidden { visibility: hidden; }
.czmap__land { fill: var(--map-land); stroke: none; }
.pin { cursor: pointer; outline: none; }
.pin__hit { fill: transparent; }
.mapbox { touch-action: pan-y; }
.mapctl { position: absolute; right: 1.4rem; bottom: 1.4rem; display: flex; gap: 4px; }
.mapctl button { width: 38px; height: 38px; display: inline-flex; align-items: center; justify-content: center; background: var(--paper); border: 1px solid var(--line-strong); border-radius: 8px; cursor: pointer; color: var(--text); box-shadow: var(--shadow-sm); }
@media (hover: hover) { .mapctl button:hover { border-color: var(--red); color: var(--red); } }
.mapctl button[disabled] { opacity: .4; cursor: default; }
.mapbox__hint { position: absolute; left: 0; right: 0; bottom: .45rem; margin: 0; font-size: .72rem; color: var(--muted); text-align: center; display: none; }
.mapbox.is-touch { padding-bottom: 1.9rem; } /* nápověda pod mapou, tlačítka nad ní v prázdném rohu mapy */
.mapbox.is-touch .mapctl { bottom: 2.1rem; }
.mapbox.is-touch .mapbox__hint { display: block; }
.mapbox.is-zoomed .mapbox__hint { visibility: hidden; } /* místo zůstane, ať se legenda pod mapou nehýbe */
.pin__halo { fill: var(--red); opacity: 0; transition: opacity .15s; }
.pin__dot { fill: var(--red); stroke: var(--paper); stroke-width: 3; transition: r .15s; }
.pin--point .pin__dot { fill: var(--paper); stroke: var(--red); stroke-width: 4; }
.pin--partner .pin__dot { fill: var(--red); stroke: var(--paper); stroke-width: 2.5; r: 5.5; }
.pin__bg { fill: var(--paper); filter: drop-shadow(0 1px 2px rgb(14 11 18 / .28)); transition: r .15s; }
.pin__mark { fill: var(--red); }
.pin__mk { transition: transform .15s; }
.pin--closed .pin__mark, .pin--dim .pin__mark { fill: var(--line-strong); }
.pin--dim .pin__bg { filter: none; }
.pin--closed .pin__dot { fill: var(--line-strong); stroke: var(--paper); }
.pin--closed.pin--point .pin__dot { stroke: var(--line-strong); }
.pin__label { font-family: var(--mono); font-size: 20px; fill: var(--text); opacity: 0; pointer-events: none; transition: opacity .15s; paint-order: stroke; stroke: var(--paper-2); stroke-width: 6px; stroke-linejoin: round; }
.pin:focus-visible .pin__label, .pin.is-hover .pin__label, .pin--active .pin__label { opacity: 1; }
.pin:focus-visible .pin__halo, .pin.is-hover .pin__halo, .pin--active .pin__halo { opacity: .18; }
.pin.is-hover .pin__dot, .pin--active .pin__dot { r: 9; }
.pin.is-hover .pin__bg, .pin--active .pin__bg { r: 14.5; }
.pin.is-hover .pin__mk, .pin--active .pin__mk { transform: scale(1.2); }
@media (hover: hover) { .pin:hover .pin__label { opacity: 1; } .pin:hover .pin__halo { opacity: .18; } .pin:hover .pin__dot { r: 9; } .pin:hover .pin__bg { r: 14.5; } .pin:hover .pin__mk { transform: scale(1.2); } }
.pin--dim .pin__dot { fill: var(--line-strong); }
.pin--dim.pin--point .pin__dot { stroke: var(--line-strong); fill: var(--paper); }
.pin--hidden { display: none; }
.czmap--mini { margin-block: .5rem 1rem; }
.czmap--mini .pin--active .pin__label { opacity: 1; }
.czmap--mini .pin--active .pin__dot { r: 11; }
.czmap--mini .pin--dim .pin__dot { r: 4; stroke-width: 0; }
.czmap--mini .pin--dim .pin__bg { r: 7; }
.czmap--mini .pin--dim .pin__mk { transform: scale(.55); }
.czmap--mini .pin--active .pin__bg { r: 16; }
.czmap--mini .pin--active .pin__mk { transform: scale(1.3); }
.map-pop { position: absolute; z-index: 5; width: min(300px, 80%); background: var(--paper); color: var(--text); border: 1px solid var(--line); border-radius: var(--radius-sm); box-shadow: var(--shadow); padding: .9rem 1rem; transform: translate(-50%, calc(-100% - 18px)); }
.map-pop::after { content: ""; position: absolute; left: 50%; bottom: -7px; width: 12px; height: 12px; background: var(--paper); border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); transform: translateX(-50%) rotate(45deg); }
.map-pop__name { font-weight: 700; margin: 0 0 .15rem; display: flex; justify-content: space-between; gap: .5rem; align-items: baseline; }
.map-pop__addr { font-size: .85rem; color: var(--muted); margin: 0 0 .35rem; }
.map-pop__hours { font-size: .85rem; margin: 0 0 .7rem; display: flex; align-items: center; gap: .4rem; }
.map-pop__actions { display: flex; gap: .5rem; flex-wrap: wrap; }
.map-pop__close { position: absolute; top: .35rem; right: .35rem; background: none; border: 0; cursor: pointer; color: var(--muted); padding: .2rem; }
/* legenda = filtr typu místa (tlačítka) */
.legend { display: flex; gap: .4rem; flex-wrap: wrap; font-size: .78rem; color: var(--muted); }
.legend li { display: inline-flex; }
.legend__btn { display: inline-flex; align-items: center; gap: .4rem; min-height: 36px; padding: .3rem .65rem; border: 1px solid var(--line-strong);
               border-radius: 999px; background: var(--paper); color: var(--text); font: inherit; cursor: pointer; transition: border-color .15s, background .15s; }
@media (hover: hover) { .legend__btn:hover { border-color: var(--red); } }
.legend__btn[aria-pressed="true"] { border-color: var(--red); background: var(--red-soft); font-weight: 700; }
.legend__btn:focus-visible { outline: 2px solid var(--red); outline-offset: 2px; }
.legend__n { color: var(--muted); font-weight: 400; }
.legend__dot { width: 12px; height: 12px; border-radius: 50%; background: var(--red); display: inline-block; }
.legend__dot--point { background: var(--paper); border: 3px solid var(--red); }
.legend__dot--partner { background: var(--red); width: 9px; height: 9px; box-shadow: 0 0 0 2px var(--paper); }
.legend__mark { width: 15px; height: 15px; fill: var(--red); flex: none; }
.finder { display: grid; gap: .75rem; margin-bottom: .75rem; }
.finder__row { display: flex; gap: .75rem; flex-wrap: wrap; align-items: center; }
.finder__row .input--select { flex: 1 1 160px; min-width: 0; width: auto; }
.finder__count { font-size: .8rem; color: var(--muted); margin-bottom: .75rem; min-height: 1.2em; }
.finder__empty { color: var(--muted); padding: 2rem 0; }
.order-geo { justify-self: start; margin: .25rem 0 0 -.8rem; }
.order-cal { display: flex; gap: .5rem; flex-wrap: wrap; align-items: center; margin: 0 0 1rem; }
.order-cal__t { font-weight: 600; margin-right: .25rem; }
.bcards { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: .85rem; }
.bcard { border: 1px solid var(--line); border-radius: var(--radius-sm); padding: 1rem 1rem .9rem; background: var(--paper); transition: border-color .15s, box-shadow .15s; display: flex; flex-direction: column; gap: .35rem; }
.bcard:hover, .bcard.is-active { border-color: var(--red); box-shadow: var(--shadow-sm); }
.bcard[hidden] { display: none; }
.bcard__head { display: flex; justify-content: space-between; gap: .5rem; align-items: flex-start; }
.bcard__name { font-size: 1.05rem; margin: 0; }
.bcard__name a { text-decoration: none; }
.bcard__addr { color: var(--muted); font-size: .875rem; margin: 0; }
.bcard__hours { font-size: .85rem; margin: 0; display: flex; align-items: center; gap: .4rem; flex-wrap: wrap; min-height: 1.4em; }
.bcard__dist { margin-left: auto; color: var(--red); font-weight: 700; }
.bcard__actions { display: flex; gap: .5rem; flex-wrap: wrap; margin-top: auto; padding-top: .5rem; }
.badge { display: inline-block; font-family: var(--mono); font-size: .64rem; text-transform: uppercase; letter-spacing: .08em; padding: .2rem .5rem; border-radius: 999px; border: 1px solid var(--line-strong); color: var(--muted); white-space: nowrap; }
.badge--pobocka { border-color: var(--red); color: var(--red); }
.badge--point { border-style: dashed; border-color: var(--red); color: var(--red); }
.dot { width: 9px; height: 9px; border-radius: 50%; background: var(--line-strong); display: inline-block; flex: none; }
.dot--open { background: var(--ok); }
.dot--soon { background: var(--warn); }
.dot--phone { background: var(--warn); }
.dot--closed, .dot--temp { background: var(--bad); }
.type-legend { display: grid; gap: .5rem; margin-top: 1.25rem; font-size: .9rem; color: var(--muted); }
.type-legend li { display: flex; gap: .75rem; align-items: baseline; flex-wrap: wrap; }
.badge--ico { display: inline-flex; align-items: center; gap: .4rem; }
.badge--ico .legend__mark { width: 12px; height: 12px; }
.badge--ico .legend__dot { width: 10px; height: 10px; }
.badge--ico .legend__dot--point { border-width: 2.5px; }
.badge--ico .legend__dot--partner { width: 8px; height: 8px; box-shadow: none; }
@media (max-width: 900px) {
  .network__grid { grid-template-columns: minmax(0, 1fr); }
  .network__map { position: static; order: -1; }
  .network--page .network__map { order: 0; }
}

/* ---------------------------------------------------------------- kroky */
.steps { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 1.5rem; counter-reset: step; }
.steps--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.step { position: relative; background: var(--paper); border: 1px solid var(--line); border-radius: var(--radius); padding: 1.5rem 1.4rem 1.4rem; }
.step__n { position: absolute; top: 1.1rem; right: 1.2rem; font-size: 2.2rem; font-weight: 700; color: var(--red); line-height: 1; opacity: .9; }
.step__ico { display: inline-flex; width: 44px; height: 44px; align-items: center; justify-content: center; border-radius: 10px; background: var(--red-soft); color: var(--red); margin-bottom: 1rem; }
.step__ico .ico { width: 1.4rem; height: 1.4rem; }
.step h3 { margin-bottom: .4rem; }
.step p { margin: 0; color: var(--muted); font-size: .95rem; }
.step address { font-style: normal; margin-top: .5rem; }
@media (max-width: 960px) { .steps, .steps--3 { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 560px) { .steps, .steps--3 { grid-template-columns: minmax(0, 1fr); } }

/* ---------------------------------------------------------------- balíčky */
.seg { display: inline-flex; background: var(--paper-3); border-radius: 999px; padding: 4px; gap: 2px; }
.seg__btn { border: 0; background: transparent; padding: .5rem 1rem; border-radius: 999px; cursor: pointer; font-weight: 600; font-size: .9rem; color: var(--muted); transition: background-color .15s, color .15s; display: inline-flex; gap: .4rem; align-items: center; }
.seg__btn .mono { font-weight: 400; font-size: .8rem; }
.seg__btn.is-active, .seg__btn[aria-pressed="true"] { background: var(--paper); color: var(--text); box-shadow: var(--shadow-sm); }
.seg--tabs { margin-bottom: 1rem; flex-wrap: wrap; border-radius: var(--radius-sm); }
.seg--tabs .seg__btn { border-radius: 6px; }
.pkgs { display: grid; gap: 1.25rem; }
.pkgs--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.pkgs--4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
@media (min-width: 1001px) { .pkgs--4:has(> :nth-child(5)) { grid-template-columns: repeat(3, minmax(0, 1fr)); } } /* 5 balíčků → 3 + 2 */
.pkg { position: relative; display: flex; flex-direction: column; gap: .5rem; border: 1px solid var(--line); border-radius: var(--radius); padding: 1.6rem 1.4rem 1.4rem; background: var(--paper); }
.pkg--popular { border: 2px solid var(--red); }
.pkg__flag { position: absolute; top: -.8rem; left: 1.2rem; background: var(--red); color: #fff; font-family: var(--mono); font-size: .7rem; letter-spacing: .1em; text-transform: uppercase; padding: .25rem .6rem; border-radius: 999px; }
.pkg__flag--muted { background: var(--text); color: var(--paper); max-width: calc(100% - 2.4rem); }
.pkg__name { font-size: 1.35rem; font-weight: 800; margin: 0; letter-spacing: -.02em; }
.pkg__tag { color: var(--muted); font-size: .92rem; margin: 0; min-height: 2.9em; }
.pkg__price { font-size: 1.9rem; font-weight: 700; margin: .25rem 0 0; letter-spacing: -.02em; }
.pkg__note { color: var(--muted); font-size: .8rem; }
.pkg__note--promo { display: block; color: var(--red); font-weight: 600; margin-top: .15rem; }
.pkgs__gap { margin-top: 2.5rem; }
.branch-jump { min-width: min(100%, 360px); display: grid; gap: .35rem; }
.branch-jump .label { font-weight: 600; font-size: .9rem; }
.branch-jump .small { margin: 0; }
.pkg__details { margin-top: .5rem; }
.pkg__details summary { cursor: pointer; font-weight: 600; font-size: .9rem; color: var(--red); }
.pkg .btn { margin-top: auto; }
.ticks { display: grid; gap: .45rem; font-size: .92rem; margin-block: .5rem 1rem; }
.ticks li { padding-left: 1.5rem; position: relative; }
.ticks li::before { content: "✓"; position: absolute; left: 0; color: var(--red); font-family: var(--mono); font-weight: 700; }
.ticks strong { font-weight: 700; color: var(--text); }
.pkg__diff { font-size: .8rem; color: var(--muted); margin-top: .5rem; }
.pricing__more { margin-top: 2rem; color: var(--muted); }
.pricing__more a { display: inline-flex; align-items: center; gap: .3rem; color: var(--text); font-weight: 600; }
@media (max-width: 1000px) { .pkgs--4 { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 800px) { .pkgs--3 { grid-template-columns: minmax(0, 1fr); } }
@media (max-width: 560px) { .pkgs--4 { grid-template-columns: minmax(0, 1fr); } }

/* ---------------------------------------------------------------- proč / recenze / faq */
.why__grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 1.25rem; margin-bottom: 3rem; }
.why__grid li { border: 1px solid var(--line); background: var(--paper); border-radius: var(--radius); padding: 1.4rem; }
.why__grid h3 { color: var(--text); margin-bottom: .5rem; }
.why__grid p { color: var(--muted); margin: 0; font-size: .95rem; }
.why__grid--light li { border-color: var(--line); background: var(--paper); }
.why__grid--light h3 { color: var(--text); }
.why__grid--light p { color: var(--muted); }
.partners { border-top: 1px solid var(--line); padding-top: 2rem; }
.partners__label { color: var(--muted); font-size: .8rem; text-transform: uppercase; letter-spacing: .12em; margin-bottom: 1.25rem; }
.partners__logos { display: flex; flex-wrap: wrap; gap: 1.25rem 2.5rem; align-items: center; }
.partners__logos img { height: 30px; width: auto; filter: grayscale(1); opacity: .7; }
.partners__logos--light { margin-top: 2rem; }
.partners__logos--light img { filter: grayscale(1); opacity: .7; }
.faqs { display: grid; }
.faq { border-bottom: 1px solid var(--line); padding-block: .25rem; }
.faq summary { cursor: pointer; font-weight: 600; padding: .9rem 2.5rem .9rem 0; position: relative; list-style: none; }
.faq summary::-webkit-details-marker { display: none; }
.faq summary::after { content: "+"; position: absolute; right: .25rem; top: .75rem; font-family: var(--mono); font-size: 1.4rem; color: var(--red); }
.faq[open] summary::after { content: "–"; }
.faq p { color: var(--muted); margin: 0 0 1rem; max-width: 70ch; }
.contact-strip { border-top: 1px solid var(--line); }
.contact-strip__in { display: flex; justify-content: space-between; align-items: center; gap: 2rem; flex-wrap: wrap; }
.contact-strip h2 { margin-bottom: .25rem; }
.contact-strip p { margin: 0; color: var(--muted); }
.contact-strip__links { display: flex; gap: .75rem; flex-wrap: wrap; }
@media (max-width: 960px) { .why__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 560px) { .why__grid { grid-template-columns: minmax(0, 1fr); } }

/* ---------------------------------------------------------------- karty, chips, tabulky */
.card { border: 1px solid var(--line); border-radius: var(--radius); padding: 1.4rem; background: var(--paper); }
.card--soft { background: var(--paper-2); border-color: transparent; }
.chips { display: flex; flex-wrap: wrap; gap: .5rem; margin-block: .5rem 1.5rem; }
.chip { display: inline-flex; align-items: center; gap: .35rem; border: 1px solid var(--line-strong); border-radius: 999px; padding: .3rem .75rem; font-size: .85rem; }
.chip .ico { color: var(--red); }
.chip--tag { background: var(--red-soft); border-color: transparent; color: var(--red); font-weight: 600; }
.chips--plain .chip, .chips--plain li { border: 1px solid var(--line-strong); border-radius: 999px; padding: .3rem .75rem; font-size: .85rem; }
.chips--ink li { background: var(--paper); }
.hours { width: 100%; border-collapse: collapse; font-size: .95rem; }
.hours th { text-align: left; font-weight: 500; padding: .45rem 0; color: var(--muted); }
.hours td { text-align: right; padding: .45rem 0; }
.hours tr { border-bottom: 1px solid var(--line); }
.hours tr:last-child { border-bottom: 0; }
.hours tr.is-closed td { color: var(--muted); }
.hours tr.is-today th, .hours tr.is-today td { color: var(--text); font-weight: 700; }
.hours tr.is-today th::after { content: "dnes"; font-family: var(--mono); font-size: .7rem; text-transform: uppercase; letter-spacing: .1em; color: var(--red); margin-left: .5rem; }
.hours tr.is-today th:lang(en)::after { content: "today"; }
.ohours { margin-bottom: 1rem; }
.ohours .h4 { margin-bottom: .5rem; }
.ohours .h4 .muted { font-weight: 400; }
.hours tr.is-picked th, .hours tr.is-picked td { color: var(--text); font-weight: 700; }
.hours tr.is-picked th::after { content: "vybraný den"; font-family: var(--mono); font-size: .7rem; text-transform: uppercase; letter-spacing: .1em; color: var(--red); margin-left: .5rem; }
.hours tr.is-picked th:lang(en)::after { content: "selected day"; }
.svc-list { display: grid; gap: .6rem; margin-bottom: 1.5rem; }
.svc { display: flex; gap: .9rem; align-items: flex-start; border: 1px solid var(--line); border-radius: var(--radius-sm); padding: .8rem .9rem; }
.svc__ico { display: inline-flex; width: 38px; height: 38px; flex: none; align-items: center; justify-content: center; border-radius: 8px; background: var(--red-soft); color: var(--red); }
.svc strong { display: block; font-weight: 600; }
.svc small { display: block; color: var(--muted); font-size: .85rem; line-height: 1.45; }
.nearest { display: grid; }
.nearest a { display: flex; justify-content: space-between; gap: 1rem; padding: .6rem 0; border-bottom: 1px solid var(--line); text-decoration: none; }
.nearest li:last-child a { border-bottom: 0; }
.nearest .mono { color: var(--muted); }
.alert { border-radius: var(--radius-sm); padding: .9rem 1rem; font-size: .92rem; margin-block: 1rem; border-left: 4px solid var(--text); background: var(--paper-2); }
.alert--info { border-left-color: var(--red); }
.alert--ok { background: var(--ok-soft); border-left-color: var(--ok); }
.alert--warn { background: var(--warn-soft); border-left-color: var(--warn); }
.alert ul { padding-left: 1.2rem; list-style: disc; margin-top: .4rem; display: grid; gap: .25rem; }

/* ---------------------------------------------------------------- detail pobočky */
.branch-hero { background: var(--paper-2); border-bottom: 1px solid var(--line); padding-block: 1.5rem 2.5rem; }
.branch-hero__grid { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 2rem; align-items: start; }
.branch-hero__title { display: flex; gap: 1rem; align-items: center; flex-wrap: wrap; }
.branch-hero__title h1 { margin: 0; font-size: clamp(1.9rem, 4vw, 3rem); }
.branch-hero__status { display: flex; align-items: center; gap: .5rem; font-weight: 600; margin: .75rem 0 .35rem; }
.branch-hero__addr { display: flex; gap: .4rem; align-items: center; color: var(--muted); margin-bottom: 1rem; flex-wrap: wrap; }
.branch-hero__addr .ico { color: var(--red); }
.branch-hero__actions { display: flex; gap: .5rem; flex-wrap: wrap; }
.branch-hero__cta { display: grid; gap: .5rem; max-width: 380px; }
.branch-hero__cta .note { margin: 0; }
.branch-hero__cta .alert { margin: 0; }
.branch__grid { display: grid; grid-template-columns: minmax(0, 1fr) 360px; gap: clamp(2rem, 5vw, 4rem); align-items: start; }
.branch__photo { margin: 0 0 2rem; }
.branch__photo img { border-radius: var(--radius); aspect-ratio: 7 / 5; object-fit: cover; }
.gallery { margin-bottom: 2rem; display: grid; gap: .5rem; }
.gallery__main { position: relative; display: block; border-radius: var(--radius); overflow: hidden; }
.gallery__main img { aspect-ratio: 7 / 5; object-fit: cover; width: 100%; transition: transform .3s; }
.gallery__main:hover img { transform: scale(1.02); }
.gallery__badge { position: absolute; left: .75rem; bottom: .75rem; display: inline-flex; align-items: center; gap: .35rem;
                  background: color-mix(in srgb, var(--paper) 92%, transparent); color: var(--text); font-family: var(--mono);
                  font-size: .78rem; padding: .3rem .6rem; border-radius: 999px; box-shadow: var(--shadow-sm); }
.gallery__thumbs { display: grid; grid-auto-flow: column; grid-auto-columns: minmax(0, 1fr); gap: .5rem; }
.gallery__thumb { display: block; border-radius: var(--radius-sm); overflow: hidden; }
.gallery__thumb img { aspect-ratio: 4 / 3; object-fit: cover; width: 100%; transition: opacity .15s; }
.gallery__thumb:hover img { opacity: .82; }
.lightbox { position: fixed; inset: 0; z-index: 90; background: rgba(14, 11, 18, .92); display: grid; place-items: center; padding: var(--gutter); }
.lightbox img { max-width: min(1100px, 100%); max-height: 78vh; border-radius: var(--radius); }
.lightbox__cap { color: #fff; text-align: center; margin: 1rem 0 0; font-size: .92rem; }
.lightbox__btn { position: absolute; background: rgba(255,255,255,.12); color: #fff; border: 0; width: 46px; height: 46px; border-radius: 50%; cursor: pointer; display: inline-flex; align-items: center; justify-content: center; }
.lightbox__btn:hover { background: rgba(255,255,255,.24); }
.lightbox__prev { left: 1rem; top: 50%; transform: translateY(-50%); }
.lightbox__next { right: 1rem; top: 50%; transform: translateY(-50%); }
.lightbox__close { right: 1rem; top: 1rem; }
.branch__phone { display: grid; gap: .1rem; margin-bottom: .75rem; }
.label-sm { font-size: .75rem; text-transform: uppercase; letter-spacing: .1em; color: var(--muted); font-weight: 600; }
.branch__phone a { text-decoration: none; }
.branch__intro { font-size: 1.05rem; max-width: 65ch; }
.branch__team { color: var(--muted); }
.branch__side { display: grid; gap: 1.25rem; position: sticky; top: calc(var(--header-h) + 16px); }
.branch__note { margin-top: 1.5rem; }
@media (max-width: 900px) {
  .branch-hero__grid, .branch__grid { grid-template-columns: minmax(0, 1fr); }
  .branch__side { position: static; }
  .branch-hero__cta { max-width: none; }
}

/* ---------------------------------------------------------------- formuláře */
.input { width: 100%; padding: .7rem .9rem; border: 1.5px solid var(--line-strong); border-radius: var(--radius-sm); background: var(--paper); color: var(--text); font: inherit; line-height: 1.4; }
.input:focus { outline: 2px solid var(--red); outline-offset: 1px; border-color: var(--red); }
.input--select { appearance: none; padding-right: 2.2rem; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%236B6570' stroke-width='2'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right .7rem center; background-size: 1rem; }
textarea.input { resize: vertical; min-height: 5.5em; }
.field { display: grid; gap: .35rem; margin-bottom: 1rem; }
.field label, .field .label { font-weight: 600; font-size: .9rem; }
.fields { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: .25rem 1.25rem; }
.field--full { grid-column: 1 / -1; }
.field__err { color: var(--bad); font-size: .875rem; font-weight: 600; margin: .5rem 0 0; }
.field__hint { font-size: .875rem; margin: 0; }
.field__hint button { font: inherit; font-weight: 600; color: var(--red-strong); background: none; border: 0; padding: 0; text-decoration: underline; cursor: pointer; }
.check { display: inline-flex; gap: .5rem; align-items: center; cursor: pointer; font-size: .92rem; margin-block: .5rem; }
.check input { width: 1.1rem; height: 1.1rem; accent-color: var(--red); margin: 0; }
.upload { display: flex; gap: .75rem; align-items: center; flex-wrap: wrap; }
.upload input { position: absolute; width: 1px; height: 1px; opacity: 0; }
.upload input:focus-visible + label { outline: 2px solid var(--red); outline-offset: 3px; }
.upload__name { color: var(--muted); font-size: .85rem; }
.contact-list { display: grid; gap: .5rem; margin-block: 1rem; }
.contact-list a { display: inline-flex; gap: .5rem; align-items: center; text-decoration: none; font-size: 1.1rem; }
.contact-list .ico { color: var(--red); }
.b2b-form { display: grid; gap: .5rem; }
@media (max-width: 640px) { .fields { grid-template-columns: minmax(0, 1fr); } }

/* ---------------------------------------------------------------- objednávka */
.order { padding-block: clamp(2rem, 5vw, 4rem); }
.order__grid { display: grid; grid-template-columns: minmax(0, 1fr) 340px; gap: clamp(2rem, 5vw, 4rem); align-items: start; }
.order__side { position: sticky; top: calc(var(--header-h) + 16px); display: grid; gap: 1rem; }
.order__help a.mono { display: inline-flex; gap: .4rem; align-items: center; font-size: 1.1rem; text-decoration: none; }
.order__help p { margin-bottom: .35rem; }
.stepper { display: flex; gap: .25rem; margin: 1.5rem 0 2rem; padding-bottom: 1rem; border-bottom: 1px solid var(--line); flex-wrap: wrap; font-size: .8rem; text-transform: uppercase; letter-spacing: .08em; color: var(--muted); }
.stepper li { display: inline-flex; align-items: center; gap: .5rem; padding: .35rem .6rem; border-radius: 999px; }
.stepper li span { display: inline-flex; width: 1.6rem; height: 1.6rem; align-items: center; justify-content: center; border-radius: 50%; border: 1.5px solid var(--line-strong); font-weight: 700; }
.stepper li.is-active { color: var(--text); }
.stepper li.is-active span { background: var(--red); border-color: var(--red); color: #fff; }
.stepper li.is-done span { background: var(--text); border-color: var(--text); color: var(--paper); }
.stepper li.is-done { cursor: pointer; }
.ostep h2 { font-size: clamp(1.4rem, 2.5vw, 1.8rem); margin-bottom: 1rem; }
.ostep[hidden] { display: none; }
.ostep__branch { margin: -.5rem 0 1rem; color: var(--muted); }
.ostep__branch strong { color: var(--text); }
.ostep__branch button { font: inherit; font-weight: 600; color: var(--red-strong); background: none; border: 0; padding: 0; text-decoration: underline; text-underline-offset: 3px; cursor: pointer; }
.ostep__nav { display: flex; justify-content: space-between; gap: 1rem; margin-top: 2rem; padding-top: 1.5rem; border-top: 1px solid var(--line); }
.ostep__nav [data-order-next], .ostep__nav [data-order-submit] { margin-left: auto; }
.choice-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 1rem; margin-bottom: 1.5rem; }
.choice { position: relative; display: grid; gap: .25rem; border: 1.5px solid var(--line); border-radius: var(--radius); padding: 1.4rem; cursor: pointer; transition: border-color .15s, background-color .15s; }
.choice:hover { border-color: var(--line-strong); }
.choice:has(input:checked) { border-color: var(--red); background: var(--red-soft); }
.choice input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.choice:has(input:focus-visible) { outline: 2px solid var(--red); outline-offset: 3px; }
.choice__ico { color: var(--red); margin-bottom: .5rem; }
.choice__ico .ico { width: 2rem; height: 2rem; }
.choice__t { font-weight: 700; font-size: 1.1rem; }
.choice__d { color: var(--muted); font-size: .875rem; }
.olist { display: grid; gap: .6rem; max-height: 520px; overflow: auto; overscroll-behavior: contain; padding: 2px; }
.olist--pkgs { max-height: none; overflow: visible; }
.orow { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: .25rem .9rem; align-items: center; border: 1.5px solid var(--line); border-radius: var(--radius-sm); padding: .8rem 1rem; cursor: pointer; background: var(--paper); transition: border-color .15s; }
.orow:hover { border-color: var(--line-strong); }
.orow.is-selected { border-color: var(--red); }
.orow input { accent-color: var(--red); width: 1.1rem; height: 1.1rem; margin: 0; grid-row: span 2; }
.orow__t { font-weight: 600; display: flex; gap: .5rem; align-items: center; flex-wrap: wrap; }
.orow__d { grid-column: 2; color: var(--muted); font-size: .85rem; display: flex; gap: .5rem; flex-wrap: wrap; align-items: center; }
.orow__r { grid-column: 3; grid-row: 1 / span 2; text-align: right; font-weight: 700; white-space: nowrap; }
.orow__r small { display: block; font-weight: 400; color: var(--muted); font-size: .75rem; }
.orow.is-disabled { opacity: .55; cursor: not-allowed; }
.orow__more { grid-column: 2 / -1; font-size: .85rem; color: var(--red); background: none; border: 0; padding: 0; text-align: left; cursor: pointer; font-weight: 600; }
.orow__items { grid-column: 2 / -1; margin: .25rem 0 0; }
.orow__items[hidden] { display: none; }
.cal { border: 1px solid var(--line); border-radius: var(--radius); padding: 1rem; margin-bottom: 1rem; }
.cal__head { display: flex; justify-content: space-between; align-items: center; margin-bottom: .75rem; }
.cal__head h3 { margin: 0; font-size: 1.05rem; text-transform: capitalize; }
.cal__nav { display: flex; gap: .25rem; }
.cal__nav button { background: none; border: 1px solid var(--line-strong); border-radius: 6px; width: 2.2rem; height: 2.2rem; cursor: pointer; display: inline-flex; align-items: center; justify-content: center; }
.cal__nav button[disabled] { opacity: .35; cursor: default; }
.cal__grid { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 4px; }
.cal__dow { text-align: center; font-family: var(--mono); font-size: .75rem; color: var(--muted); text-transform: uppercase; padding-bottom: .25rem; }
.cal__day { aspect-ratio: 1; border: 1.5px solid transparent; border-radius: 8px; background: var(--paper-2); font-weight: 600; cursor: pointer; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 2px; line-height: 1; transition: border-color .15s, background-color .15s; }
.cal__day small { font-family: var(--mono); font-size: .62rem; font-weight: 400; color: var(--muted); max-width: 100%; overflow: hidden; }
.cal__day--free { background: var(--ok-soft); }
.cal__day--few { background: var(--warn-soft); }
.cal__day--full { background: var(--bad-soft); color: var(--muted); cursor: not-allowed; text-decoration: line-through; }
.cal__day--closed, .cal__day--past { background: transparent; color: var(--line-strong); cursor: not-allowed; }
.cal__day--phone { background: var(--paper-3); }
.cal__day--empty { background: transparent; cursor: default; }
.cal__day:not([disabled]):hover { border-color: var(--red); }
.cal__day.is-selected { background: var(--red); color: #fff; border-color: var(--red); }
.cal__day.is-selected small { color: rgba(255,255,255,.8); }
.cal__legend { display: flex; gap: 1rem; flex-wrap: wrap; font-size: .78rem; color: var(--muted); margin-bottom: 1.25rem; }
.cal__legend li { display: inline-flex; gap: .4rem; align-items: center; }
.cal__sw { width: 14px; height: 14px; border-radius: 4px; display: inline-block; }
.cal__sw--free { background: var(--ok-soft); border: 1px solid var(--ok); }
.cal__sw--few { background: var(--warn-soft); border: 1px solid var(--warn); }
.cal__sw--full { background: var(--bad-soft); border: 1px solid var(--bad); }
.cal__sw--closed { background: transparent; border: 1px solid var(--line-strong); }
.cal__picked { font-weight: 600; margin: .5rem 0 0; }
.halfday { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: .75rem; margin-top: .5rem; }
.halfday__btn { display: grid; gap: .15rem; justify-items: center; padding: 1rem .75rem; border: 2px solid var(--line-strong); border-radius: var(--radius); background: var(--paper); cursor: pointer; text-align: center; transition: border-color .15s, background-color .15s, color .15s; }
.halfday__btn strong { font-size: 1.05rem; }
.halfday__btn span { font-size: .8rem; color: var(--muted); }
.halfday__btn:hover { border-color: var(--red); }
.halfday__btn.is-active { border-color: var(--red); background: var(--red); color: #fff; }
.halfday__btn.is-active span { color: rgba(255,255,255,.85); }
.halfday__btn .ico { width: 1.4rem; height: 1.4rem; color: var(--red); }
.halfday__btn:disabled { opacity: .45; cursor: not-allowed; border-color: var(--line-strong); }
.cal__grid.is-loading { opacity: .5; }
/* past na roboty v objednávce – člověk pole nevidí */
.hp { position: absolute; left: -10000px; width: 1px; height: 1px; overflow: hidden; }
.halfday__btn.is-active .ico { color: #fff; }
.ticket { border: 1.5px dashed var(--line-strong); border-radius: var(--radius); padding: 1.25rem; background: var(--paper); position: relative; }
.ticket__head { text-transform: uppercase; letter-spacing: .12em; font-size: .75rem; color: var(--red); font-weight: 700; display: flex; justify-content: space-between; margin: 0 0 1.25rem; padding-bottom: .9rem; border-bottom: 1.5px dashed var(--line-strong); }
.ticket__rows { margin: 0; display: grid; gap: .55rem; font-size: .92rem; }
.ticket__rows div { display: flex; justify-content: space-between; gap: .75rem; align-items: baseline; }
.ticket__rows dt { color: var(--muted); flex: none; }
.ticket__rows dd { margin: 0; text-align: right; font-weight: 600; }
.ticket__price { display: flex; justify-content: space-between; align-items: baseline; margin: 1.25rem 0 .5rem; padding-top: .9rem; border-top: 1.5px dashed var(--line-strong); }
.ticket__price strong { font-size: 1.5rem; }
.ticket__foot { font-size: .78rem; margin: 0; }
.order-done { display: grid; gap: 1.25rem; }
.order-done__ico { display: inline-flex; width: 64px; height: 64px; border-radius: 50%; background: var(--ok-soft); color: var(--ok); align-items: center; justify-content: center; }
.order-done__ico .ico { width: 2rem; height: 2rem; }
.email { border: 1px solid var(--line); border-radius: var(--radius); overflow: hidden; }
.email__head { background: var(--paper-2); padding: .9rem 1.25rem; font-family: var(--mono); font-size: .85rem; display: grid; gap: .15rem; border-bottom: 1px solid var(--line); }
.email__head span { color: var(--muted); }
.email__body { padding: 1.25rem; font-size: .95rem; }
.email__body h3 { font-size: 1.1rem; }
.email__box { background: var(--paper-2); border-radius: var(--radius-sm); padding: .9rem 1rem; margin-block: 1rem; }
.email__box dl { margin: 0; display: grid; grid-template-columns: auto minmax(0, 1fr); gap: .3rem 1rem; }
.email__box dt { color: var(--muted); }
.email__box dd { margin: 0; font-weight: 600; }
.calc { display: grid; gap: .5rem; margin-bottom: 2.5rem; }
.calc li { display: flex; justify-content: space-between; gap: 1rem; padding: .7rem 0; border-bottom: 1px dashed var(--line-strong); }
.calc__total { font-weight: 700; font-size: 1.2rem; color: var(--red); border-bottom: 0 !important; }
.pay { display: flex; gap: 2rem; align-items: center; border: 1px solid var(--line); border-radius: var(--radius); padding: 1.5rem; }
.pay img { width: 180px; height: auto; flex: none; }
@media (max-width: 900px) {
  .order__grid { grid-template-columns: minmax(0, 1fr); }
  .order__side { position: static; }
  .order__help { display: none; }
  .choice-grid { grid-template-columns: minmax(0, 1fr); }
  .pay { flex-direction: column; align-items: flex-start; }
  .olist { max-height: none; overflow: visible; }
  .cal { padding: .6rem; }
  .cal__grid { gap: 3px; }
  .cal__day { border-radius: 6px; }
  .cal__day small { font-size: .5rem; letter-spacing: -.02em; }
  .legend { gap: .4rem; font-size: .78rem; }
  .mapctl { right: .6rem; bottom: .6rem; }
  .mapctl button { width: 34px; height: 34px; }
  .mapbox { padding: .5rem; }
  .ostep__nav { position: sticky; bottom: 0; z-index: 20; background: var(--paper); border-top: 1px solid var(--line);
                margin: 2rem calc(var(--gutter) * -1) 0; padding: .9rem var(--gutter); box-shadow: 0 -8px 20px rgba(14, 11, 18, .08); }
  .ostep__nav .btn--lg { padding: .9rem 1.1rem; }
}

/* ---------------------------------------------------------------- více kol v jedné objednávce */
.obike-tag { display: inline-block; background: var(--red-soft); color: var(--red); font-size: .72rem; font-weight: 700; text-transform: uppercase; letter-spacing: .08em; padding: .3rem .7rem; border-radius: 999px; margin: 0 0 .75rem; }
.ostep__extra { display: grid; gap: .25rem; margin-top: 1.5rem; padding-top: 1.25rem; border-top: 1px solid var(--line); }
.obikes { display: grid; gap: .9rem; border: 1px solid var(--line); border-radius: var(--radius); padding: 1.25rem; margin-bottom: 1.75rem; }
.obikes__head .h4 { margin: 0 0 .15rem; }
.obikes__head p { margin: 0; }
.obikes__list { display: grid; gap: .6rem; }
.obike { display: flex; justify-content: space-between; align-items: flex-start; gap: 1rem; background: var(--paper-2); border-radius: var(--radius-sm); padding: .85rem 1rem; }
.obike__main { display: grid; gap: .1rem; min-width: 0; }
.obike__n { margin: 0; font-size: .72rem; font-weight: 700; text-transform: uppercase; letter-spacing: .1em; color: var(--red); }
.obike__t { margin: 0; font-weight: 700; overflow-wrap: anywhere; }
.obike__d { margin: 0; font-size: .92rem; }
.obike__note { font-size: .85rem; color: var(--muted); overflow-wrap: anywhere; }
.obike__actions { display: flex; gap: .25rem; flex: none; }
.obikes__add { justify-self: start; }
.obikes__add .ico { color: var(--red); }
.ticket__bikes { display: grid; margin-block: .55rem; }
.ticket__bike + .ticket__bike { margin-top: .7rem; padding-top: .7rem; border-top: 1px dashed var(--line-strong); }
.ticket__bike-h { margin: 0 0 .4rem; font-size: .72rem; font-weight: 700; text-transform: uppercase; letter-spacing: .1em; color: var(--red); }
.ticket__bike--compact .ticket__bike-h { margin-bottom: .15rem; }
.ticket__bike-t { margin: 0; font-weight: 600; font-size: .9rem; overflow-wrap: anywhere; }
.ticket__bike-s { margin: .1rem 0 0; display: flex; justify-content: space-between; gap: .75rem; font-size: .85rem; color: var(--muted); }
.ticket__bike-s .mono { color: var(--text); white-space: nowrap; }
@media (min-width: 901px) {
  .order__side { max-height: calc(100vh - var(--header-h) - 32px); overflow-y: auto; overscroll-behavior: contain; }
}
.email__order { margin: 0 0 .5rem; font-weight: 700; color: var(--red); font-size: .85rem; }
@media (max-width: 520px) {
  .obike { flex-direction: column; gap: .5rem; }
  .obike__actions { margin-left: -.8rem; }
}

/* ---------------------------------------------------------------- ostatní stránky */
.split { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: clamp(2rem, 5vw, 4rem); align-items: center; }
.split__media { margin: 0; }
.split__media img { border-radius: var(--radius); aspect-ratio: 4 / 3; object-fit: cover; }
/* O nás: fotka s nápisem Kolofix se neořezává – vždy celá (Marek 6. 11.) */
.split__media--full img { aspect-ratio: 3 / 2; object-fit: contain; }
.section--photo { padding-block: 2.5rem 0; }
.wide-photo { margin: 0; }
.wide-photo img { display: block; width: 100%; height: auto; border-radius: var(--radius); }
.segments { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 1.5rem; }
.segments li { border: 1px solid var(--line); border-radius: var(--radius); padding: 1.75rem; }
.segments h2 { font-size: 1.4rem; }
.segments p:last-child { margin: 0; }
.segments li:last-child:nth-child(odd) { grid-column: 1 / -1; }
.segments li:last-child:nth-child(odd) > p { max-width: 72ch; }
.contact__grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1.25rem;
  grid-template-areas: "phone mail hq" "seat mail hq"; }
.contact__photo { margin: 0 0 1rem; }
.contact__photo img { width: 100%; height: auto; aspect-ratio: 7 / 5; object-fit: cover; border-radius: var(--radius); }
.contact__actions { display: flex; flex-wrap: wrap; gap: .5rem; align-items: center; }
.contact__phone { grid-area: phone; } .contact__mail { grid-area: mail; } .contact__hq { grid-area: hq; } .contact__seat { grid-area: seat; }
.contact-emails { display: grid; gap: .6rem; }
.contact-emails li { display: grid; gap: .1rem; }
.contact-emails span { font-size: .85rem; color: var(--muted); }
@media (max-width: 900px) { .split, .segments, .contact__grid { grid-template-columns: minmax(0, 1fr); }
  .contact__grid { grid-template-areas: none; } .contact__grid > * { grid-area: auto; } }

/* ---------------------------------------------------------------- patička */
.site-footer { background: var(--paper-2); color: var(--muted); padding-block: 3.5rem 1.5rem; margin-top: 2rem; border-top: 1px solid var(--line); }
.footer__grid { display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr); gap: 2rem; padding-bottom: 2.5rem; border-bottom: 1px solid var(--line-strong); }
.footer__brand p { margin-top: 1rem; max-width: 34ch; }
.footer__h { font-size: .78rem; text-transform: uppercase; letter-spacing: .14em; color: var(--text); margin-bottom: 1rem; }
.footer__list { display: grid; gap: .45rem; }
.footer__list a { text-decoration: none; color: var(--text); }
.footer__list a:hover { color: var(--red); }
.footer__list .muted { color: var(--muted); font-size: .875rem; }
.social { display: flex; gap: .75rem; margin-top: 1rem; }
.social a { display: inline-flex; width: 38px; height: 38px; align-items: center; justify-content: center; border: 1px solid var(--line-strong); border-radius: 50%; color: var(--text); }
.social a:hover { border-color: var(--red); color: var(--red); }
.footer__legal { display: flex; justify-content: space-between; gap: 1rem; flex-wrap: wrap; padding-top: 1.25rem; font-size: .78rem; }
.footer__legal a { color: var(--muted); }
@media (max-width: 900px) { .footer__grid { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); } }
@media (max-width: 520px) { .footer__grid { grid-template-columns: minmax(0, 1fr); } }

/* ---------------------------------------------------------------- právní texty (ochrana osobních údajů) */
.legal h2 { font-size: clamp(1.25rem, 2.4vw, 1.5rem); margin-top: 2.25rem; }
.legal h3 { font-size: 1.05rem; margin-top: 1.4rem; margin-bottom: .35rem; }
.legal ol { list-style: decimal; padding-left: 1.4rem; display: grid; gap: .75rem; margin-bottom: 1em; }
.legal ul { list-style: disc; padding-left: 1.3rem; display: grid; gap: .3rem; margin-block: .4rem 1em; }
.legal li::marker { color: var(--red); }
.legal__valid { margin-top: 2.5rem; padding-top: 1rem; border-top: 1px solid var(--line); }

/* ---------------------------------------------------------------- pohyb */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { transition: none !important; animation: none !important; scroll-behavior: auto !important; }
}
