/* ==========================================================================
   Q-CSS SYSTEM
   Prefix: q-
   Breakpointy: xs (0+), sm (576px+), md (768px+), lg (992px+), xl (1200px+)
   Sloupcový grid: 12 sloupců

   Pořadí sekcí (dle ITCSS — od obecného ke specifickému):
   0. RESET
   1. Proměnné (:root)
   2. Container
   3. Row / Column (flexbox grid)
   4. Pořadí sloupců (order)
   5. Viditelnost dle breakpointu
   6. CSS Grid (nativní)
   7. Flexbox utility třídy
   8. Spacing (padding/margin)
   9. Šířky a výšky
   10. Tlačítka
   11. Text (formátování textu)
   12. Komponenta: Footer

   Utility třídy a tlačítka jsou záměrně až za komponentou Footer,
   aby je bylo možné spolehlivě kombinovat a přebíjet jimi vlastnosti
   komponent (např. <div class="q-footer q-py-0">).
   ========================================================================== */

/* ==========================================================================
   0. RESET
   ========================================================================== */

*,
*::before,
*::after {
  box-sizing: border-box;
}

/* ==========================================================================
   1. PROMĚNNÉ
   ========================================================================== */

:root {
  /* --- Layout --- */
  --q-gutter: 24px;               /* mezera mezi sloupci (celková, půlí se na obě strany) */
  --q-container-padding: 16px;    /* boční padding containeru na mobilu */
  --q-container-sm: 540px;
  --q-container-md: 720px;
  --q-container-lg: 960px;
  --q-container-xl: 1140px;

  /* --- Container: varianta "small" (užší — texty, formuláře, přihlašovací boxy) --- */
  --q-container-small-sm: 420px;
  --q-container-small-md: 560px;
  --q-container-small-lg: 680px;
  --q-container-small-xl: 720px;

  /* --- Container: varianta "large" (širší — hero sekce, wide showcase, ale ne full-width) --- */
  --q-container-large-sm: 540px;
  --q-container-large-md: 720px;
  --q-container-large-lg: 1140px;
  --q-container-large-xl: 1480px;

  /* --- Spacing škála (padding/margin), 0–5 --- */
  --q-space-0: 0;
  --q-space-1: 0.25rem;  /* 4px */
  --q-space-2: 0.5rem;   /* 8px */
  --q-space-3: 1rem;     /* 16px */
  --q-space-4: 1.5rem;   /* 24px */
  --q-space-5: 3rem;     /* 48px */

  /* --- Barvy (lze přepsat dle brand identity projektu) --- */
  --q-color-primary: #f9c605;
  --q-color-primary-hover: #e7b605;
  --q-color-secondary: #0f4c5c;
  --q-color-secondary-hover: #0e4653;
  --q-color-success: #1a7a3c;
  --q-color-success-hover: #145c2d;
  --q-color-danger: #c0392b;
  --q-color-danger-hover: #96271c;
  --q-color-info: #a6975d;
  --q-color-info-hover: #948650;
  --q-color-light: #f4f4f4;
  --q-color-light-hover: #e2e2e2;
  --q-color-dark: #242424;
  --q-color-dark-hover: #1d1d1d;
  --q-color-black: #000000;
  --q-color-black-hover: #000000;
  --q-color-white: #ffffff;
  --q-color-muted: #6c757d;
  --q-color-gray: #cccccc;
  --q-text-color: #1e1e1e;
  --q-link-color: #a6975d;
  --q-link-color-hover: #948650;


  /* --- Typografie --- */
  --q-fs-1: 0.75rem;   /* 12px */
  --q-fs-2: 0.875rem;  /* 14px */
  --q-fs-3: 1rem;      /* 16px — základní velikost */
  --q-fs-4: 1.25rem;   /* 20px */
  --q-fs-5: 1.5rem;    /* 24px */
  --q-fs-6: 2rem;      /* 32px */
  --q-fs-7: 2.5rem;    /* 40px */

  --q-fw-light: 300;
  --q-fw-normal: 400;
  --q-fw-medium: 500;
  --q-fw-semibold: 600;
  --q-fw-bold: 700;

  --q-lh-1: 1;
  --q-lh-2: 1.25;
  --q-lh-3: 1.5;
  --q-lh-4: 1.75;
  --q-lh-5: 2;

  /* --- Tlačítka --- */
  --q-btn-radius: 4px;
  --q-btn-font-weight: 600;
  --q-btn-transition: background-color 0.2s ease, border-color 0.2s ease, color 0.2s ease;
}

html {
  /* Zabrání prohlížeči zvětšovat text při otočení mobilu na šířku
     (typicky iOS Safari) — bez tohoto se responzivní layout "rozjede". */
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
 
  /* Plynulé scrollování na kotvy (#sekce) místo trhaného skoku. */
  scroll-behavior: smooth;
}

body {
  margin: 0; /* výchozí ~8px margin prohlížeče by rozbil container na 100% šířku */
  min-height: 100vh;
 
  font-family: system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif;
  font-size: var(--q-fs-3);
  line-height: var(--q-lh-3);
  color: var(--q-color-dark);
  background-color: var(--q-color-white);
 
  /* Sticky footer bez extra JS/HTML — .q-footer se sám odsune dolů,
     pokud je obsahu na stránce málo. Vyžaduje, aby <main> mělo flex:1. */
  display: flex;
  flex-direction: column;
}

img,
picture,
video,
svg {
  display: inline-block;
  vertical-align: middle;
  max-width: 100%;
  height: auto; /* obrázky se nikdy nerozteknou přes container a nezkreslí se */
}

main {
  flex: 1 0 auto;
}

ul,
ol {
  margin: 0;
  padding: 0;
  list-style: none; /* žádné odrážky/čísla ani výchozí 40px odsazení */
}

a {
  color: var(--q-link-color);
  text-decoration: none;
}

a:hover {
  color: var(--q-link-color-hover)
}

/* ==========================================================================
   2. CONTAINER
   ========================================================================== */

.q-container {
  width: 100%;
  margin-left: auto;
  margin-right: auto;
  padding-left: var(--q-container-padding);
  padding-right: var(--q-container-padding);
}

@media (min-width: 576px) {
  .q-container { max-width: var(--q-container-sm); }
}

@media (min-width: 768px) {
  .q-container { max-width: var(--q-container-md); }
}

@media (min-width: 992px) {
  .q-container { max-width: var(--q-container-lg); }
}

@media (min-width: 1200px) {
  .q-container { max-width: var(--q-container-xl); }
}

/* Fluid varianta — vždy 100% šířky, jen s bočním paddingem */
.q-container-fluid {
  width: 100%;
  margin-left: auto;
  margin-right: auto;
  padding-left: var(--q-container-padding);
  padding-right: var(--q-container-padding);
}

/* Varianta "small" — užší obsah (texty, formuláře, přihlašovací/objednávkové boxy) */
.q-container-small {
  width: 100%;
  margin-left: auto;
  margin-right: auto;
  padding-left: var(--q-container-padding);
  padding-right: var(--q-container-padding);
}

@media (min-width: 576px) {
  .q-container-small { max-width: var(--q-container-small-sm); }
}

@media (min-width: 768px) {
  .q-container-small { max-width: var(--q-container-small-md); }
}

@media (min-width: 992px) {
  .q-container-small { max-width: var(--q-container-small-lg); }
}

@media (min-width: 1200px) {
  .q-container-small { max-width: var(--q-container-small-xl); }
}

/* Varianta "large" — širší obsah (hero sekce, wide showcase), ale stále ohraničená (na rozdíl od -fluid) */
.q-container-large {
  width: 100%;
  margin-left: auto;
  margin-right: auto;
  padding-left: var(--q-container-padding);
  padding-right: var(--q-container-padding);
}

@media (min-width: 1200px) {
  .q-container-large { max-width: var(--q-container-large-xl); }
}

/* ==========================================================================
   3. ROW / COLUMN (flexbox grid)
   ========================================================================== */

.q-row {
  display: flex;
  flex-wrap: wrap;
  margin-left: calc(var(--q-gutter) / -2);
  margin-right: calc(var(--q-gutter) / -2);
}

.q-row-nowrap { flex-wrap: nowrap; }
.q-row-no-gutters { margin-left: 0; margin-right: 0; }
.q-row-no-gutters > [class*="q-column"] { padding-left: 0; padding-right: 0; }

/* Zarovnání obsahu v rámci row */
.q-align-start { align-items: flex-start; }
.q-align-center { align-items: center; }
.q-align-end { align-items: flex-end; }

.q-justify-start { justify-content: flex-start; }
.q-justify-center { justify-content: center; }
.q-justify-end { justify-content: flex-end; }
.q-justify-between { justify-content: space-between; }
.q-justify-around { justify-content: space-around; }

/* --- COL — základ (společný pro všechny sloupce) --- */
[class*="q-column"] {
  position: relative;
  width: 100%;
  padding-left: calc(var(--q-gutter) / 2);
  padding-right: calc(var(--q-gutter) / 2);
}

.q-column { flex: 1 0 0%; }                    /* auto-šířka podle obsahu */
.q-column-auto { flex: 0 0 auto; width: auto; } /* nezmenšuje se, šířka podle obsahu */

/* --- Generování sloupců a offsetů ---
   Vzor tříd:  q-column-{breakpoint}-{1-12}   např. q-column-md-6
               q-column-{1-12}                bez breakpointu = platí vždy (xs)
               q-offset-{breakpoint}-{0-11}
   --- */

/* XS (výchozí, bez media query, platí od 0px) */
.q-column-1  { flex: 0 0 auto; width: 8.3333%; }
.q-column-2  { flex: 0 0 auto; width: 16.6667%; }
.q-column-3  { flex: 0 0 auto; width: 25%; }
.q-column-4  { flex: 0 0 auto; width: 33.3333%; }
.q-column-5  { flex: 0 0 auto; width: 41.6667%; }
.q-column-6  { flex: 0 0 auto; width: 50%; }
.q-column-7  { flex: 0 0 auto; width: 58.3333%; }
.q-column-8  { flex: 0 0 auto; width: 66.6667%; }
.q-column-9  { flex: 0 0 auto; width: 75%; }
.q-column-10 { flex: 0 0 auto; width: 83.3333%; }
.q-column-11 { flex: 0 0 auto; width: 91.6667%; }
.q-column-12 { flex: 0 0 auto; width: 100%; }

.q-offset-0  { margin-left: 0; }
.q-offset-1  { margin-left: 8.3333%; }
.q-offset-2  { margin-left: 16.6667%; }
.q-offset-3  { margin-left: 25%; }
.q-offset-4  { margin-left: 33.3333%; }
.q-offset-5  { margin-left: 41.6667%; }
.q-offset-6  { margin-left: 50%; }
.q-offset-7  { margin-left: 58.3333%; }
.q-offset-8  { margin-left: 66.6667%; }
.q-offset-9  { margin-left: 75%; }
.q-offset-10 { margin-left: 83.3333%; }
.q-offset-11 { margin-left: 91.6667%; }

/* SM: 576px+ */
@media (min-width: 576px) {
  .q-column-sm { flex: 1 0 0%; }
  .q-column-sm-auto { flex: 0 0 auto; width: auto; }

  .q-column-sm-1  { flex: 0 0 auto; width: 8.3333%; }
  .q-column-sm-2  { flex: 0 0 auto; width: 16.6667%; }
  .q-column-sm-3  { flex: 0 0 auto; width: 25%; }
  .q-column-sm-4  { flex: 0 0 auto; width: 33.3333%; }
  .q-column-sm-5  { flex: 0 0 auto; width: 41.6667%; }
  .q-column-sm-6  { flex: 0 0 auto; width: 50%; }
  .q-column-sm-7  { flex: 0 0 auto; width: 58.3333%; }
  .q-column-sm-8  { flex: 0 0 auto; width: 66.6667%; }
  .q-column-sm-9  { flex: 0 0 auto; width: 75%; }
  .q-column-sm-10 { flex: 0 0 auto; width: 83.3333%; }
  .q-column-sm-11 { flex: 0 0 auto; width: 91.6667%; }
  .q-column-sm-12 { flex: 0 0 auto; width: 100%; }

  .q-offset-sm-0  { margin-left: 0; }
  .q-offset-sm-1  { margin-left: 8.3333%; }
  .q-offset-sm-2  { margin-left: 16.6667%; }
  .q-offset-sm-3  { margin-left: 25%; }
  .q-offset-sm-4  { margin-left: 33.3333%; }
  .q-offset-sm-5  { margin-left: 41.6667%; }
  .q-offset-sm-6  { margin-left: 50%; }
  .q-offset-sm-7  { margin-left: 58.3333%; }
  .q-offset-sm-8  { margin-left: 66.6667%; }
  .q-offset-sm-9  { margin-left: 75%; }
  .q-offset-sm-10 { margin-left: 83.3333%; }
  .q-offset-sm-11 { margin-left: 91.6667%; }
}

/* MD: 768px+ */
@media (min-width: 768px) {
  .q-column-md { flex: 1 0 0%; }
  .q-column-md-auto { flex: 0 0 auto; width: auto; }

  .q-column-md-1  { flex: 0 0 auto; width: 8.3333%; }
  .q-column-md-2  { flex: 0 0 auto; width: 16.6667%; }
  .q-column-md-3  { flex: 0 0 auto; width: 25%; }
  .q-column-md-4  { flex: 0 0 auto; width: 33.3333%; }
  .q-column-md-5  { flex: 0 0 auto; width: 41.6667%; }
  .q-column-md-6  { flex: 0 0 auto; width: 50%; }
  .q-column-md-7  { flex: 0 0 auto; width: 58.3333%; }
  .q-column-md-8  { flex: 0 0 auto; width: 66.6667%; }
  .q-column-md-9  { flex: 0 0 auto; width: 75%; }
  .q-column-md-10 { flex: 0 0 auto; width: 83.3333%; }
  .q-column-md-11 { flex: 0 0 auto; width: 91.6667%; }
  .q-column-md-12 { flex: 0 0 auto; width: 100%; }

  .q-offset-md-0  { margin-left: 0; }
  .q-offset-md-1  { margin-left: 8.3333%; }
  .q-offset-md-2  { margin-left: 16.6667%; }
  .q-offset-md-3  { margin-left: 25%; }
  .q-offset-md-4  { margin-left: 33.3333%; }
  .q-offset-md-5  { margin-left: 41.6667%; }
  .q-offset-md-6  { margin-left: 50%; }
  .q-offset-md-7  { margin-left: 58.3333%; }
  .q-offset-md-8  { margin-left: 66.6667%; }
  .q-offset-md-9  { margin-left: 75%; }
  .q-offset-md-10 { margin-left: 83.3333%; }
  .q-offset-md-11 { margin-left: 91.6667%; }
}

/* LG: 992px+ */
@media (min-width: 992px) {
  .q-column-lg { flex: 1 0 0%; }
  .q-column-lg-auto { flex: 0 0 auto; width: auto; }

  .q-column-lg-1  { flex: 0 0 auto; width: 8.3333%; }
  .q-column-lg-2  { flex: 0 0 auto; width: 16.6667%; }
  .q-column-lg-3  { flex: 0 0 auto; width: 25%; }
  .q-column-lg-4  { flex: 0 0 auto; width: 33.3333%; }
  .q-column-lg-5  { flex: 0 0 auto; width: 41.6667%; }
  .q-column-lg-6  { flex: 0 0 auto; width: 50%; }
  .q-column-lg-7  { flex: 0 0 auto; width: 58.3333%; }
  .q-column-lg-8  { flex: 0 0 auto; width: 66.6667%; }
  .q-column-lg-9  { flex: 0 0 auto; width: 75%; }
  .q-column-lg-10 { flex: 0 0 auto; width: 83.3333%; }
  .q-column-lg-11 { flex: 0 0 auto; width: 91.6667%; }
  .q-column-lg-12 { flex: 0 0 auto; width: 100%; }

  .q-offset-lg-0  { margin-left: 0; }
  .q-offset-lg-1  { margin-left: 8.3333%; }
  .q-offset-lg-2  { margin-left: 16.6667%; }
  .q-offset-lg-3  { margin-left: 25%; }
  .q-offset-lg-4  { margin-left: 33.3333%; }
  .q-offset-lg-5  { margin-left: 41.6667%; }
  .q-offset-lg-6  { margin-left: 50%; }
  .q-offset-lg-7  { margin-left: 58.3333%; }
  .q-offset-lg-8  { margin-left: 66.6667%; }
  .q-offset-lg-9  { margin-left: 75%; }
  .q-offset-lg-10 { margin-left: 83.3333%; }
  .q-offset-lg-11 { margin-left: 91.6667%; }
}

/* XL: 1200px+ */
@media (min-width: 1200px) {
  .q-column-xl { flex: 1 0 0%; }
  .q-column-xl-auto { flex: 0 0 auto; width: auto; }

  .q-column-xl-1  { flex: 0 0 auto; width: 8.3333%; }
  .q-column-xl-2  { flex: 0 0 auto; width: 16.6667%; }
  .q-column-xl-3  { flex: 0 0 auto; width: 25%; }
  .q-column-xl-4  { flex: 0 0 auto; width: 33.3333%; }
  .q-column-xl-5  { flex: 0 0 auto; width: 41.6667%; }
  .q-column-xl-6  { flex: 0 0 auto; width: 50%; }
  .q-column-xl-7  { flex: 0 0 auto; width: 58.3333%; }
  .q-column-xl-8  { flex: 0 0 auto; width: 66.6667%; }
  .q-column-xl-9  { flex: 0 0 auto; width: 75%; }
  .q-column-xl-10 { flex: 0 0 auto; width: 83.3333%; }
  .q-column-xl-11 { flex: 0 0 auto; width: 91.6667%; }
  .q-column-xl-12 { flex: 0 0 auto; width: 100%; }

  .q-offset-xl-0  { margin-left: 0; }
  .q-offset-xl-1  { margin-left: 8.3333%; }
  .q-offset-xl-2  { margin-left: 16.6667%; }
  .q-offset-xl-3  { margin-left: 25%; }
  .q-offset-xl-4  { margin-left: 33.3333%; }
  .q-offset-xl-5  { margin-left: 41.6667%; }
  .q-offset-xl-6  { margin-left: 50%; }
  .q-offset-xl-7  { margin-left: 58.3333%; }
  .q-offset-xl-8  { margin-left: 66.6667%; }
  .q-offset-xl-9  { margin-left: 75%; }
  .q-offset-xl-10 { margin-left: 83.3333%; }
  .q-offset-xl-11 { margin-left: 91.6667%; }
}

/* ==========================================================================
   4. POŘADÍ SLOUPCŮ (order)
   ========================================================================== */

.q-order-first { order: -1; }
.q-order-0  { order: 0; }
.q-order-1  { order: 1; }
.q-order-2  { order: 2; }
.q-order-3  { order: 3; }
.q-order-4  { order: 4; }
.q-order-5  { order: 5; }
.q-order-6  { order: 6; }
.q-order-7  { order: 7; }
.q-order-8  { order: 8; }
.q-order-9  { order: 9; }
.q-order-10 { order: 10; }
.q-order-11 { order: 11; }
.q-order-12 { order: 12; }
.q-order-last { order: 13; }

/* ==========================================================================
   5. VIDITELNOST DLE BREAKPOINTU
   ========================================================================== */

.q-hidden { display: none !important; }

@media (max-width: 575.98px) {
  .q-hidden-xs { display: none !important; }
}

@media (min-width: 576px) and (max-width: 767.98px) {
  .q-hidden-sm { display: none !important; }
}

@media (min-width: 768px) and (max-width: 991.98px) {
  .q-hidden-md { display: none !important; }
}

@media (min-width: 992px) and (max-width: 1199.98px) {
  .q-hidden-lg { display: none !important; }
}

@media (min-width: 1200px) {
  .q-hidden-xl { display: none !important; }
}

/* Zobrazit AŽ OD daného breakpointu (mobile-first opak k hidden) */
@media (max-width: 767.98px) {
  .q-visible-md-up { display: none !important; }
}

@media (max-width: 991.98px) {
  .q-visible-lg-up { display: none !important; }
}

@media (max-width: 1199.98px) {
  .q-visible-xl-up { display: none !important; }
}

/* ==========================================================================
   6. CSS GRID (nativní, odlišné od flexbox .q-row/.q-column)
   Třídy:  q-grid, q-grid-cols-{1-12}, q-grid-span-{1-12}, q-grid-gap-{0-5}
   Responzivní: q-grid-cols-{bp}-{1-12}, q-grid-span-{bp}-{1-12}
   ========================================================================== */

.q-grid { display: grid; gap: var(--q-gutter); }

.q-grid-gap-0 { gap: var(--q-space-0); }
.q-grid-gap-1 { gap: var(--q-space-1); }
.q-grid-gap-2 { gap: var(--q-space-2); }
.q-grid-gap-3 { gap: var(--q-space-3); }
.q-grid-gap-4 { gap: var(--q-space-4); }
.q-grid-gap-5 { gap: var(--q-space-5); }

/* XS — počet sloupců */
.q-grid-cols-1  { grid-template-columns: repeat(1, 1fr); }
.q-grid-cols-2  { grid-template-columns: repeat(2, 1fr); }
.q-grid-cols-3  { grid-template-columns: repeat(3, 1fr); }
.q-grid-cols-4  { grid-template-columns: repeat(4, 1fr); }
.q-grid-cols-5  { grid-template-columns: repeat(5, 1fr); }
.q-grid-cols-6  { grid-template-columns: repeat(6, 1fr); }
.q-grid-cols-7  { grid-template-columns: repeat(7, 1fr); }
.q-grid-cols-8  { grid-template-columns: repeat(8, 1fr); }
.q-grid-cols-9  { grid-template-columns: repeat(9, 1fr); }
.q-grid-cols-10 { grid-template-columns: repeat(10, 1fr); }
.q-grid-cols-11 { grid-template-columns: repeat(11, 1fr); }
.q-grid-cols-12 { grid-template-columns: repeat(12, 1fr); }

/* XS — rozpětí prvku přes N sloupců */
.q-grid-span-1  { grid-column: span 1; }
.q-grid-span-2  { grid-column: span 2; }
.q-grid-span-3  { grid-column: span 3; }
.q-grid-span-4  { grid-column: span 4; }
.q-grid-span-5  { grid-column: span 5; }
.q-grid-span-6  { grid-column: span 6; }
.q-grid-span-7  { grid-column: span 7; }
.q-grid-span-8  { grid-column: span 8; }
.q-grid-span-9  { grid-column: span 9; }
.q-grid-span-10 { grid-column: span 10; }
.q-grid-span-11 { grid-column: span 11; }
.q-grid-span-12 { grid-column: span 12; }

/* SM: 576px+ */
@media (min-width: 576px) {
  .q-grid-cols-sm-1 { grid-template-columns: repeat(1, 1fr); }
  .q-grid-cols-sm-2 { grid-template-columns: repeat(2, 1fr); }
  .q-grid-cols-sm-3 { grid-template-columns: repeat(3, 1fr); }
  .q-grid-cols-sm-4 { grid-template-columns: repeat(4, 1fr); }
  .q-grid-cols-sm-6 { grid-template-columns: repeat(6, 1fr); }
  .q-grid-cols-sm-12 { grid-template-columns: repeat(12, 1fr); }

  .q-grid-span-sm-1 { grid-column: span 1; }
  .q-grid-span-sm-2 { grid-column: span 2; }
  .q-grid-span-sm-3 { grid-column: span 3; }
  .q-grid-span-sm-4 { grid-column: span 4; }
  .q-grid-span-sm-6 { grid-column: span 6; }
  .q-grid-span-sm-12 { grid-column: span 12; }
}

/* MD: 768px+ */
@media (min-width: 768px) {
  .q-grid-cols-md-1 { grid-template-columns: repeat(1, 1fr); }
  .q-grid-cols-md-2 { grid-template-columns: repeat(2, 1fr); }
  .q-grid-cols-md-3 { grid-template-columns: repeat(3, 1fr); }
  .q-grid-cols-md-4 { grid-template-columns: repeat(4, 1fr); }
  .q-grid-cols-md-6 { grid-template-columns: repeat(6, 1fr); }
  .q-grid-cols-md-12 { grid-template-columns: repeat(12, 1fr); }

  .q-grid-span-md-1 { grid-column: span 1; }
  .q-grid-span-md-2 { grid-column: span 2; }
  .q-grid-span-md-3 { grid-column: span 3; }
  .q-grid-span-md-4 { grid-column: span 4; }
  .q-grid-span-md-6 { grid-column: span 6; }
  .q-grid-span-md-12 { grid-column: span 12; }
}

/* LG: 992px+ */
@media (min-width: 992px) {
  .q-grid-cols-lg-1 { grid-template-columns: repeat(1, 1fr); }
  .q-grid-cols-lg-2 { grid-template-columns: repeat(2, 1fr); }
  .q-grid-cols-lg-3 { grid-template-columns: repeat(3, 1fr); }
  .q-grid-cols-lg-4 { grid-template-columns: repeat(4, 1fr); }
  .q-grid-cols-lg-6 { grid-template-columns: repeat(6, 1fr); }
  .q-grid-cols-lg-12 { grid-template-columns: repeat(12, 1fr); }

  .q-grid-span-lg-1 { grid-column: span 1; }
  .q-grid-span-lg-2 { grid-column: span 2; }
  .q-grid-span-lg-3 { grid-column: span 3; }
  .q-grid-span-lg-4 { grid-column: span 4; }
  .q-grid-span-lg-6 { grid-column: span 6; }
  .q-grid-span-lg-12 { grid-column: span 12; }
}

/* XL: 1200px+ */
@media (min-width: 1200px) {
  .q-grid-cols-xl-1 { grid-template-columns: repeat(1, 1fr); }
  .q-grid-cols-xl-2 { grid-template-columns: repeat(2, 1fr); }
  .q-grid-cols-xl-3 { grid-template-columns: repeat(3, 1fr); }
  .q-grid-cols-xl-4 { grid-template-columns: repeat(4, 1fr); }
  .q-grid-cols-xl-6 { grid-template-columns: repeat(6, 1fr); }
  .q-grid-cols-xl-12 { grid-template-columns: repeat(12, 1fr); }

  .q-grid-span-xl-1 { grid-column: span 1; }
  .q-grid-span-xl-2 { grid-column: span 2; }
  .q-grid-span-xl-3 { grid-column: span 3; }
  .q-grid-span-xl-4 { grid-column: span 4; }
  .q-grid-span-xl-6 { grid-column: span 6; }
  .q-grid-span-xl-12 { grid-column: span 12; }
}

/* ==========================================================================
   7. FLEXBOX UTILITY TŘÍDY
   Nezávislé na .q-row — lze kombinovat s .q-justify-* a .q-align-*
   definovanými výše v sekci ROW / COLUMN.
   ========================================================================== */

.q-flex { display: flex; }
.q-inline-flex { display: inline-flex; }

.q-flex-row { flex-direction: row; }
.q-flex-row-reverse { flex-direction: row-reverse; }
.q-flex-col { flex-direction: column; }
.q-flex-col-reverse { flex-direction: column-reverse; }

.q-flex-wrap { flex-wrap: wrap; }
.q-flex-nowrap { flex-wrap: nowrap; }
.q-flex-wrap-reverse { flex-wrap: wrap-reverse; }

.q-flex-fill { flex: 1 1 auto; }
.q-flex-grow-0 { flex-grow: 0; }
.q-flex-grow-1 { flex-grow: 1; }
.q-flex-shrink-0 { flex-shrink: 0; }
.q-flex-shrink-1 { flex-shrink: 1; }

.q-align-self-start { align-self: flex-start; }
.q-align-self-center { align-self: center; }
.q-align-self-end { align-self: flex-end; }
.q-align-self-stretch { align-self: stretch; }
.q-align-self-baseline { align-self: baseline; }

.q-gap-0 { gap: var(--q-space-0); }
.q-gap-1 { gap: var(--q-space-1); }
.q-gap-2 { gap: var(--q-space-2); }
.q-gap-3 { gap: var(--q-space-3); }
.q-gap-4 { gap: var(--q-space-4); }
.q-gap-5 { gap: var(--q-space-5); }

/* Responzivní varianty pro flex-direction (nejčastěji používané) */
@media (min-width: 576px) {
  .q-flex-sm-row { flex-direction: row; }
  .q-flex-sm-col { flex-direction: column; }
}

@media (min-width: 768px) {
  .q-flex-md-row { flex-direction: row; }
  .q-flex-md-col { flex-direction: column; }
}

@media (min-width: 992px) {
  .q-flex-lg-row { flex-direction: row; }
  .q-flex-lg-col { flex-direction: column; }
}

@media (min-width: 1200px) {
  .q-flex-xl-row { flex-direction: row; }
  .q-flex-xl-col { flex-direction: column; }
}

/* ==========================================================================
   8. SPACING — padding a margin
   Škála 0–5 dle --q-space-* proměnných.
   Směry: (bez zkratky) = všechny strany, t/b/l/r = jedna strana, x/y = osa
   ========================================================================== */

/* --- PADDING --- */
.q-p-0 { padding: var(--q-space-0); }
.q-p-1 { padding: var(--q-space-1); }
.q-p-2 { padding: var(--q-space-2); }
.q-p-3 { padding: var(--q-space-3); }
.q-p-4 { padding: var(--q-space-4); }
.q-p-5 { padding: var(--q-space-5); }

.q-pt-0 { padding-top: var(--q-space-0); }
.q-pt-1 { padding-top: var(--q-space-1); }
.q-pt-2 { padding-top: var(--q-space-2); }
.q-pt-3 { padding-top: var(--q-space-3); }
.q-pt-4 { padding-top: var(--q-space-4); }
.q-pt-5 { padding-top: var(--q-space-5); }

.q-pb-0 { padding-bottom: var(--q-space-0); }
.q-pb-1 { padding-bottom: var(--q-space-1); }
.q-pb-2 { padding-bottom: var(--q-space-2); }
.q-pb-3 { padding-bottom: var(--q-space-3); }
.q-pb-4 { padding-bottom: var(--q-space-4); }
.q-pb-5 { padding-bottom: var(--q-space-5); }

.q-pl-0 { padding-left: var(--q-space-0); }
.q-pl-1 { padding-left: var(--q-space-1); }
.q-pl-2 { padding-left: var(--q-space-2); }
.q-pl-3 { padding-left: var(--q-space-3); }
.q-pl-4 { padding-left: var(--q-space-4); }
.q-pl-5 { padding-left: var(--q-space-5); }

.q-pr-0 { padding-right: var(--q-space-0); }
.q-pr-1 { padding-right: var(--q-space-1); }
.q-pr-2 { padding-right: var(--q-space-2); }
.q-pr-3 { padding-right: var(--q-space-3); }
.q-pr-4 { padding-right: var(--q-space-4); }
.q-pr-5 { padding-right: var(--q-space-5); }

.q-px-0 { padding-left: var(--q-space-0); padding-right: var(--q-space-0); }
.q-px-1 { padding-left: var(--q-space-1); padding-right: var(--q-space-1); }
.q-px-2 { padding-left: var(--q-space-2); padding-right: var(--q-space-2); }
.q-px-3 { padding-left: var(--q-space-3); padding-right: var(--q-space-3); }
.q-px-4 { padding-left: var(--q-space-4); padding-right: var(--q-space-4); }
.q-px-5 { padding-left: var(--q-space-5); padding-right: var(--q-space-5); }

.q-py-0 { padding-top: var(--q-space-0); padding-bottom: var(--q-space-0); }
.q-py-1 { padding-top: var(--q-space-1); padding-bottom: var(--q-space-1); }
.q-py-2 { padding-top: var(--q-space-2); padding-bottom: var(--q-space-2); }
.q-py-3 { padding-top: var(--q-space-3); padding-bottom: var(--q-space-3); }
.q-py-4 { padding-top: var(--q-space-4); padding-bottom: var(--q-space-4); }
.q-py-5 { padding-top: var(--q-space-5); padding-bottom: var(--q-space-5); }

/* --- MARGIN --- */
.q-m-0 { margin: var(--q-space-0); }
.q-m-1 { margin: var(--q-space-1); }
.q-m-2 { margin: var(--q-space-2); }
.q-m-3 { margin: var(--q-space-3); }
.q-m-4 { margin: var(--q-space-4); }
.q-m-5 { margin: var(--q-space-5); }
.q-m-auto { margin: auto; }

.q-mt-0 { margin-top: var(--q-space-0); }
.q-mt-1 { margin-top: var(--q-space-1); }
.q-mt-2 { margin-top: var(--q-space-2); }
.q-mt-3 { margin-top: var(--q-space-3); }
.q-mt-4 { margin-top: var(--q-space-4); }
.q-mt-5 { margin-top: var(--q-space-5); }
.q-mt-auto { margin-top: auto; }

.q-mb-0 { margin-bottom: var(--q-space-0); }
.q-mb-1 { margin-bottom: var(--q-space-1); }
.q-mb-2 { margin-bottom: var(--q-space-2); }
.q-mb-3 { margin-bottom: var(--q-space-3); }
.q-mb-4 { margin-bottom: var(--q-space-4); }
.q-mb-5 { margin-bottom: var(--q-space-5); }
.q-mb-auto { margin-bottom: auto; }

.q-ml-0 { margin-left: var(--q-space-0); }
.q-ml-1 { margin-left: var(--q-space-1); }
.q-ml-2 { margin-left: var(--q-space-2); }
.q-ml-3 { margin-left: var(--q-space-3); }
.q-ml-4 { margin-left: var(--q-space-4); }
.q-ml-5 { margin-left: var(--q-space-5); }
.q-ml-auto { margin-left: auto; }

.q-mr-0 { margin-right: var(--q-space-0); }
.q-mr-1 { margin-right: var(--q-space-1); }
.q-mr-2 { margin-right: var(--q-space-2); }
.q-mr-3 { margin-right: var(--q-space-3); }
.q-mr-4 { margin-right: var(--q-space-4); }
.q-mr-5 { margin-right: var(--q-space-5); }
.q-mr-auto { margin-right: auto; }

.q-mx-0 { margin-left: var(--q-space-0); margin-right: var(--q-space-0); }
.q-mx-1 { margin-left: var(--q-space-1); margin-right: var(--q-space-1); }
.q-mx-2 { margin-left: var(--q-space-2); margin-right: var(--q-space-2); }
.q-mx-3 { margin-left: var(--q-space-3); margin-right: var(--q-space-3); }
.q-mx-4 { margin-left: var(--q-space-4); margin-right: var(--q-space-4); }
.q-mx-5 { margin-left: var(--q-space-5); margin-right: var(--q-space-5); }
.q-mx-auto { margin-left: auto; margin-right: auto; }

.q-my-0 { margin-top: var(--q-space-0); margin-bottom: var(--q-space-0); }
.q-my-1 { margin-top: var(--q-space-1); margin-bottom: var(--q-space-1); }
.q-my-2 { margin-top: var(--q-space-2); margin-bottom: var(--q-space-2); }
.q-my-3 { margin-top: var(--q-space-3); margin-bottom: var(--q-space-3); }
.q-my-4 { margin-top: var(--q-space-4); margin-bottom: var(--q-space-4); }
.q-my-5 { margin-top: var(--q-space-5); margin-bottom: var(--q-space-5); }
.q-my-auto { margin-top: auto; margin-bottom: auto; }

/* ==========================================================================
   9. ŠÍŘKY A VÝŠKY
   ========================================================================== */

.q-w-25  { width: 25%; }
.q-w-50  { width: 50%; }
.q-w-75  { width: 75%; }
.q-w-100 { width: 100%; }
.q-w-auto { width: auto; }
.q-w-100vw { width: 100vw; }

.q-h-25  { height: 25%; }
.q-h-50  { height: 50%; }
.q-h-75  { height: 75%; }
.q-h-100 { height: 100%; }
.q-h-auto { height: auto; }
.q-h-100vh { height: 100vh; }

.q-min-w-0   { min-width: 0; }
.q-min-w-100 { min-width: 100%; }
.q-max-w-100 { max-width: 100%; }

.q-min-h-0     { min-height: 0; }
.q-min-h-100   { min-height: 100%; }
.q-min-h-100vh { min-height: 100vh; }
.q-max-h-100   { max-height: 100%; }

/* Responzivní šířky (nejčastěji používané zlomky) */
@media (min-width: 576px) {
  .q-w-sm-25 { width: 25%; }
  .q-w-sm-50 { width: 50%; }
  .q-w-sm-75 { width: 75%; }
  .q-w-sm-100 { width: 100%; }
  .q-w-sm-auto { width: auto; }
}

@media (min-width: 768px) {
  .q-w-md-25 { width: 25%; }
  .q-w-md-50 { width: 50%; }
  .q-w-md-75 { width: 75%; }
  .q-w-md-100 { width: 100%; }
  .q-w-md-auto { width: auto; }
}

@media (min-width: 992px) {
  .q-w-lg-25 { width: 25%; }
  .q-w-lg-50 { width: 50%; }
  .q-w-lg-75 { width: 75%; }
  .q-w-lg-100 { width: 100%; }
  .q-w-lg-auto { width: auto; }
}

@media (min-width: 1200px) {
  .q-w-xl-25 { width: 25%; }
  .q-w-xl-50 { width: 50%; }
  .q-w-xl-75 { width: 75%; }
  .q-w-xl-100 { width: 100%; }
  .q-w-xl-auto { width: auto; }
}

/* ==========================================================================
   10. TLAČÍTKA
   Základ: .q-btn (+ velikost/varianta/blok/outline dle potřeby)
   ========================================================================== */

.q-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.5em;
  padding: 0.65em 1.4em;
  border: 1px solid transparent;
  border-radius: var(--q-btn-radius);
  font-weight: var(--q-btn-font-weight);
  font-size: 1rem;
  line-height: 1.2;
  text-decoration: none;
  cursor: pointer;
  transition: var(--q-btn-transition);
  background-color: var(--q-color-secondary);
  color: #fff;
}

.q-btn:hover,
.q-btn:focus-visible {
  background-color: var(--q-color-secondary-hover);
  color: #fff;
}

.q-btn.q-btn-hover-icon-rotate svg {
  transition: transform 2s ease;
}

.q-btn.q-btn-hover-icon-rotate:hover svg {
    transform: rotate(244deg);
}

.q-btn:disabled,
.q-btn.q-btn-disabled {
  opacity: 0.55;
  cursor: not-allowed;
  pointer-events: none;
}

/* --- Barevné varianty (plné) --- */
.q-btn-primary { background-color: var(--q-color-primary); border-color: var(--q-color-primary); }
.q-btn-primary:hover,
.q-btn-primary:focus-visible { background-color: var(--q-color-primary-hover); border-color: var(--q-color-primary-hover); }

.q-btn-secondary { background-color: var(--q-color-secondary); border-color: var(--q-color-secondary); }
.q-btn-secondary:hover,
.q-btn-secondary:focus-visible { background-color: var(--q-color-secondary-hover); border-color: var(--q-color-secondary-hover); }

.q-btn-success { background-color: var(--q-color-success); border-color: var(--q-color-success); }
.q-btn-success:hover,
.q-btn-success:focus-visible { background-color: var(--q-color-success-hover); border-color: var(--q-color-success-hover); }

.q-btn-danger { background-color: var(--q-color-danger); border-color: var(--q-color-danger); }
.q-btn-danger:hover,
.q-btn-danger:focus-visible { background-color: var(--q-color-danger-hover); border-color: var(--q-color-danger-hover); }

.q-btn-info { background-color: var(--q-color-info); border-color: var(--q-color-info); }
.q-btn-info:hover,
.q-btn-info:focus-visible { background-color: var(--q-color-info-hover); border-color: var(--q-color-info-hover); }

.q-btn-light { background-color: var(--q-color-light); border-color: var(--q-color-light); color: #1a1a1a; }
.q-btn-light:hover,
.q-btn-light:focus-visible { background-color: var(--q-color-light-hover); border-color: var(--q-color-light-hover); color: #1a1a1a; }

.q-btn-dark { background-color: var(--q-color-dark); border-color: var(--q-color-dark); }
.q-btn-dark:hover,
.q-btn-dark:focus-visible { background-color: var(--q-color-dark-hover); border-color: var(--q-color-dark-hover); }

.q-btn-black { background-color: var(--q-color-black); border-color: var(--q-color-black); }
.q-btn-black:hover,
.q-btn-black:focus-visible { background-color: var(--q-color-black-hover); border-color: var(--q-color-black-hover); }

.q-btn-white { background-color: var(--q-color-white); border-color: var(--q-color-white); }
.q-btn-white:hover,
.q-btn-white:focus-visible { background-color: var(--q-color-white-hover); border-color: var(--q-color-white-hover); }

/* --- Outline varianty --- */
.q-btn-outline-primary { background-color: transparent; border-color: var(--q-color-primary); color: var(--q-color-primary); }
.q-btn-outline-primary:hover,
.q-btn-outline-primary:focus-visible { background-color: var(--q-color-primary); color: #fff; }

.q-btn-outline-secondary { background-color: transparent; border-color: var(--q-color-secondary); color: var(--q-color-secondary); }
.q-btn-outline-secondary:hover,
.q-btn-outline-secondary:focus-visible { background-color: var(--q-color-secondary); color: #fff; }

.q-btn-outline-info { background-color: transparent; border-color: var(--q-color-info); color: var(--q-color-info); }
.q-btn-outline-info:hover,
.q-btn-outline-info:focus-visible { background-color: var(--q-color-info); color: #fff; }

.q-btn-outline-light { background-color: transparent; border-color: #fff; color: #fff; }
.q-btn-outline-light:hover,
.q-btn-outline-light:focus-visible { background-color: #fff; color: var(--q-color-dark); }

/* --- Velikosti --- */
.q-btn-sm { padding: 0.4em 0.9em; font-size: 0.875rem; }
.q-btn-lg { padding: 0.85em 1.8em; font-size: 1.125rem; }

/* --- Tvar/rozvržení --- */
.q-btn-rounded { border-radius: 999px; }
.q-btn-square { border-radius: 0; }
.q-btn-block { display: flex; width: 100%; }

/* ==========================================================================
   11. TEXT — formátování textu
   ========================================================================== */

/* --- Zarovnání --- */
.q-text-left { text-align: left; }
.q-text-center { text-align: center; }
.q-text-right { text-align: right; }
.q-text-justify { text-align: justify; }

/* Responzivní zarovnání */
@media (min-width: 576px) {
  .q-text-sm-left { text-align: left; }
  .q-text-sm-center { text-align: center; }
  .q-text-sm-right { text-align: right; }
}

@media (min-width: 768px) {
  .q-text-md-left { text-align: left; }
  .q-text-md-center { text-align: center; }
  .q-text-md-right { text-align: right; }
}

@media (min-width: 992px) {
  .q-text-lg-left { text-align: left; }
  .q-text-lg-center { text-align: center; }
  .q-text-lg-right { text-align: right; }
}

@media (min-width: 1200px) {
  .q-text-xl-left { text-align: left; }
  .q-text-xl-center { text-align: center; }
  .q-text-xl-right { text-align: right; }
}

/* --- Velikost písma --- */
.q-fs-1 { font-size: var(--q-fs-1); }
.q-fs-2 { font-size: var(--q-fs-2); }
.q-fs-3 { font-size: var(--q-fs-3); }
.q-fs-4 { font-size: var(--q-fs-4); }
.q-fs-5 { font-size: var(--q-fs-5); }
.q-fs-6 { font-size: var(--q-fs-6); }
.q-fs-7 { font-size: var(--q-fs-7); }

/* --- Tloušťka písma --- */
.q-fw-light { font-weight: var(--q-fw-light); }
.q-fw-normal { font-weight: var(--q-fw-normal); }
.q-fw-medium { font-weight: var(--q-fw-medium); }
.q-fw-semibold { font-weight: var(--q-fw-semibold); }
.q-fw-bold { font-weight: var(--q-fw-bold); }

/* --- Řez písma --- */
.q-italic { font-style: italic; }
.q-not-italic { font-style: normal; }

/* --- Výška řádku --- */
.q-lh-1 { line-height: var(--q-lh-1); }
.q-lh-2 { line-height: var(--q-lh-2); }
.q-lh-3 { line-height: var(--q-lh-3); }
.q-lh-4 { line-height: var(--q-lh-4); }
.q-lh-5 { line-height: var(--q-lh-5); }

/* --- Transformace textu --- */
.q-text-uppercase { text-transform: uppercase; }
.q-text-lowercase { text-transform: lowercase; }
.q-text-capitalize { text-transform: capitalize; }
.q-text-normal-case { text-transform: none; }

/* --- Dekorace textu --- */
.q-text-underline { text-decoration: underline; }
.q-text-line-through { text-decoration: line-through; }
.q-text-no-underline { text-decoration: none; }

/* --- Zalamování a přetečení --- */
.q-text-nowrap { white-space: nowrap; }
.q-text-break { overflow-wrap: break-word; word-break: break-word; }
.q-text-truncate {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* --- Barvy textu --- */
.q-text-primary { color: var(--q-color-primary); }
.q-text-secondary { color: var(--q-color-secondary); }
.q-text-success { color: var(--q-color-success); }
.q-text-danger { color: var(--q-color-danger); }
.q-text-info { color: var(--q-color-info); }
.q-text-light { color: var(--q-color-light); }
.q-text-dark { color: var(--q-color-dark); }
.q-text-white { color: var(--q-color-white); }
.q-text-muted { color: var(--q-color-muted); }

/* --- Barvy pozadí --- */
.q-bg-primary { background-color: var(--q-color-primary); }
.q-bg-secondary { background-color: var(--q-color-secondary); }
.q-bg-success { background-color: var(--q-color-success); }
.q-bg-danger { background-color: var(--q-color-danger); }
.q-bg-info { background-color: var(--q-color-info); }
.q-bg-light { background-color: var(--q-color-light); }
.q-bg-dark { background-color: var(--q-color-dark); }
.q-bg-white { background-color: var(--q-color-white); }
.q-bg-muted { background-color: var(--q-color-muted); }

/* ==========================================================================
   12. KOMPONENTA: FOOTER
   ========================================================================== */

.q-footer {
  background-color: #231f20;
  color: #fff;
}

.q-footer a {
  color: #fff;
}

.q-footer .q-footer__header {
  text-align: center;
  display: block;
  padding: 20px 0px;
  font-size: 32px;
  font-weight: bold;
}

.q-footer .q-footer-navs__header {
  font-size: 24px;
  font-weight: bold;
  border-bottom: 1px solid #fff;
  padding: 10px 0;
}

.q-footer .q-footer-navs__links {
  padding: 0;
  margin-top: 10px;
  margin-bottom: 10px;
}

.q-footer .q-footer-navs__links li {
  margin-bottom: 5px;
}

.q-footer .q-footer__separate {
  border-top: 1px solid #ffffff26;
  padding-top: 16px;
  padding-bottom: 16px;
}

.q-footer .q-footer__additional {
  text-align: right;
}

/* ==========================================================================
   13. KOMPONENTA: HEADER
   Založeno na reálném vzhledu q-cz.cz (hodnoty načteny přímo z produkce).
   Breakpoint pro mobilní menu je vlastní (1000px), neřídí se standardní
   škálou sm/md/lg/xl výše — přebírá se přesně z aktuální produkce.
   ========================================================================== */

:root {
  /* --- Barvy specifické pro header (reálné z q-cz.cz) --- */
  --q-header-topbar-bg: #ffffff;
  --q-header-topbar-color: #000000;
  --q-header-topbar-border: #e2e2e2;
  --q-header-accent-yellow: #f9c605;
  --q-header-teal: #0f4c5c;
  --q-header-teal-hover: #0c3c48;
  --q-header-navy: #2e3b4e;
  --q-header-text-on-accent: #f0f8ff;
  --q-header-dropdown-shadow: 0 8px 16px rgba(0, 0, 0, 0.2);
  --q-header-breakpoint: 1000px;
}

.q-header {
  position: relative;
  font-family: inherit;
}

/* --- 13.1 Horní tenký pruh (tel / kontakt / odkazy) --- */

.q-header__topbar {
  background-color: var(--q-header-topbar-bg);
  color: var(--q-header-topbar-color);
  font-size: 13px;
  padding: 5px 0;
}

.q-header__topbar-inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
}

.q-header__topbar-left {
  display: block;
}

.q-header__topbar-right {
  display: flex;
  justify-content: flex-end;
  align-items: center;
}

.q-header__topbar-link {
  color: var(--q-header-topbar-color);
  font-size: 12px;
  text-decoration: none;
  padding: 0 15px;
  border-right: 1px solid var(--q-header-topbar-border);
  white-space: nowrap;
}

.q-header__topbar-link:first-child {
  padding-left: 0;
}

.q-header__topbar-link:last-child {
  padding-right: 0;
  border-right: none;
}

.q-header__topbar-link:hover {
  text-decoration: underline;
}

/* --- 13.2 Hlavní řádek (logo / vyhledávání dostupnosti / CTA) --- */

.q-header__main {
  background-color: #fff;
  border-top: 1px solid var(--q-color-gray);
  border-bottom: 1px solid var(--q-color-gray);
}

.q-header__main-inner {
  display: flex;
  align-items: stretch;
  padding-top: 10px;
  padding-bottom: 10px;
}

.q-header__left {
  display: flex;
  gap: 10px;
}

.q-header__logo {
  flex: 0 0 auto;
  display: block;
  width: 87px;
  height: 87px;
}

.q-header__logo img {
  display: block;
  width: 87px;
  height: 87px;
  border-radius: 10px;
  background-color: var(--q-header-accent-yellow);
  padding: 10px;
}

.q-header__search {
  flex: 1 1 auto;
  min-width: 0;
  margin: 0 60px;
}

.q-header__search__inner {
  display: flex;
  align-items: center;
  width: 100%;
  height: 100%
}

.q-header__search-form {
  display: flex;
  align-items: center;
  gap: 20px;
  max-width: 1400px;
  flex: 1 1 auto;
}

.q-header__search-input {
  flex: 1 1 auto;
  min-width: 0;
  height: 46px;
  padding: 10px;
  font-size: 19px;
  color: #000;
  background-color: #fff;
  border: 2px solid var(--q-header-teal);
  box-shadow: inset 0 0 0 1px #fff, 0 0 4px 2px var(--q-header-teal), inset 0 0 0 1px #fff, 0 0 4px 2px var(--q-header-teal);
  border-radius: 11px;
}

.q-header__search-btn {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  height: 46px;
  padding: 10px 15px;
  font-size: 19.2px;
  font-weight: 700;
  color: var(--q-header-text-on-accent);
  background-color: var(--q-header-teal);
  border: none;
  border-radius: 4px;
  cursor: pointer;
  white-space: nowrap;
  transition: background-color 0.2s ease;
}

.q-header__search-btn:hover,
.q-header__search-btn:focus-visible {
  background-color: var(--q-header-teal-hover);
}

.q-header__search-btn svg {
  transition: transform 2s ease;
}

.q-header__search-btn:hover svg,
.q-header__search-btn:focus-visible svg {
  transform: rotate(244deg);
}

.q-header__search-icon {
  flex: 0 0 auto;
}

.q-header__search-stats {
  text-align: center;
}

.q-header__cta {
  display: flex;
  align-items: center;
  padding-left: 60px;
  border-left: 1px solid var(--q-color-gray);
  flex: 0 0 auto;
}

.q-header__cta-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  height: 46px;
  padding: 10px 15px;
  font-size: 19.2px;
  font-weight: 700;
  text-decoration: none;
  color: var(--q-header-text-on-accent);
  background-color: var(--q-header-accent-yellow);
  border-radius: 4px;
  cursor: pointer;
  white-space: nowrap;
  transition: filter 0.2s ease;
}

.q-header__cta-btn:hover,
.q-header__cta-btn:focus-visible {
  filter: brightness(0.94);
}

/* --- 13.3 Spodní navigace (desktop, s dropdown menu) --- */

.q-header__nav {
  position: relative;
}

.q-header__nav-list {
  display: flex;
  justify-content: flex-end;
  list-style: none;
  margin: 0;
  padding: 0;
}

.q-header__nav-item {
  position: relative;
}

.q-header__nav-link {
  display: block;
  padding: 20px 0 20px 31px;
  font-size: 19.2px;
  font-weight: 700;
  color: #000;
  text-decoration: none;
}

.q-header__nav-link.active {
  color: var(--q-color-primary);
}

.q-header__nav-item:hover > .q-header__nav-link,
.q-header__nav-item:focus-within > .q-header__nav-link {
  color: var(--q-header-teal);
}

.q-header__dropdown {
  display: none;
  flex-direction: column;
  position: absolute;
  top: 100%;
  left: 0;
  z-index: 9999999;
  width: var(--dropdown-width, 300px);
  background-color: #fff;
  box-shadow: var(--q-header-dropdown-shadow);
  padding: 10px 0;
}

.q-header__nav-item:hover > .q-header__dropdown,
.q-header__nav-item:focus-within > .q-header__dropdown {
  display: flex;
}

.q-header__dropdown-link {
  padding: 8px 20px;
  font-size: 14px;
  color: #000;
  text-decoration: none;
  white-space: normal;
}

.q-header__dropdown-link:hover {
  background-color: #f4f4f4;
  color: var(--q-header-teal);
}

/* --- 13.4 Hamburger (mobilní přepínač) --- */

.q-header__hamburger {
  display: none;
  flex: 0 0 auto;
  align-items: center;
  justify-content: center;
  width: 46px;
  height: 46px;
  padding: 0;
  font-size: 28px;
  line-height: 1;
  color: #fff;
  background-color: var(--q-header-navy);
  border: none;
  border-radius: 4px;
  cursor: pointer;
}

/* --- 13.5 Mobilní off-canvas menu --- */

.q-header__mobile-nav {
  position: fixed;
  top: 0;
  right: 0;
  z-index: 999995;
  display: flex;
  flex-direction: column;
  width: min(320px, 85vw);
  height: 100%;
  background-color: var(--q-header-navy);
  color: #fff;
  padding: 20px;
  overflow-y: auto;
  transform: translateX(100%);
  transition: transform 0.25s ease-out;
}

.q-header__mobile-nav.is-open {
  transform: translateX(0);
}

.q-header__mobile-brand {
  display: block;
  color: #fff;
  text-decoration: none;
  padding-bottom: 16px;
  margin-bottom: 16px;
  border-bottom: 1px solid rgba(255, 255, 255, 0.15);
}

.q-header__mobile-brand-title {
  display: block;
  font-size: 1.6rem;
  font-weight: bold;
}

.q-header__mobile-brand-subtitle {
  display: block;
  font-size: 1rem;
  font-weight: bold;
  margin-top: 4px;
}

.q-header__mobile-list {
  list-style: none;
  margin: 0;
  padding: 0;
  flex: 1 0 auto;
}

.q-header__mobile-link {
  display: block;
  padding: 14px 0;
  font-size: 1.1rem;
  color: #fff;
  text-decoration: none;
  border-bottom: 1px solid rgba(255, 255, 255, 0.08);
}

.q-header__mobile-logo {
  display: block;
  margin-top: 20px;
}

.q-header__mobile-logo img {
  width: 96px;
  height: auto;
  border-radius: 10px;
  padding-top: 10px;
}

.q-header__mobile-copy {
  display: block;
  margin-top: 12px;
  font-size: 1rem;
  color: var(--q-header-accent-yellow);
  font-family: Georgia, Times, Arial, serif, sans-serif;
  text-decoration: none;
}

/* --- 13.6 Responzivní chování (breakpoint 1000px, dle produkce) --- */

@media (max-width: 1000px) {
  .q-header__topbar-right {
    flex-wrap: wrap;
    justify-content: flex-start;
    gap: 4px;
  }

  .q-header__logo {
    width: 46px;
    height: 46px;
  }
  
  .q-header__logo img {
    width: 46px;
    height: 46px;
  }

  .q-header__nav {
    display: none;
  }

  .q-header__hamburger {
    display: inline-flex;
  }

  .q-header__main-inner {
    flex-direction: column;
  }

  .q-header__search {
    margin: 15px 0;
  }

  .q-header__search-form {
    flex-wrap: wrap;
  }

  .q-header__search-btn {
    width: 100%;
    justify-content: center;
  }

  .q-header__topbar {
    display: none;
  }

  .q-header__cta {
    padding-left: 0;
    border-left: none;
  }
}

@media (max-width: 600px) {
  .q-header__cta-btn {
    width: 100%;
  }

  .q-header__main-inner {
    gap: 12px;
  }
}

/* ==========================================================================
   13. KOMPONENTA: MAIN
   ========================================================================== */
.q-main {
  padding-bottom: 30px;
}

/* ==========================================================================
   14. KOMPONENTA: SECTION
   ========================================================================== */
.q-section {
  padding: var(--q-space-5) var(--q-space-5);
}

.q-section.q-section--sm {
  padding: var(--q-space-2) var(--q-space-2);
}

.q-section.q-section--primary {
  background-color: var(--q-color-primary);
}

.q-section.q-section--secondary {
  background-color: var(--q-color-secondary);
}

.q-section.q-section--secondary h1,
.q-section.q-section--secondary h2,
.q-section.q-section--secondary h3,
.q-section.q-section--secondary h4,
.q-section.q-section--secondary h5,
.q-section.q-section--secondary h6,
.q-section.q-section--secondary p {
  color: #fff;
}

.q-section.q-section--info {
  background-color: var(--q-color-info);
  color: #fff;
}

.q-section.q-section--info h1,
.q-section.q-section--info h2,
.q-section.q-section--info h3,
.q-section.q-section--info h4,
.q-section.q-section--info h5,
.q-section.q-section--info h6,
.q-section.q-section--info p {
  color: #fff;
}

.q-section.q-section--dark {
  background-color: var(--q-color-dark);
  color: #fff;
}

.q-section.q-section--dark h1,
.q-section.q-section--dark h2,
.q-section.q-section--dark h3,
.q-section.q-section--dark h4,
.q-section.q-section--dark h5,
.q-section.q-section--dark h6,
.q-section.q-section--dark p {
  color: #fff;
}


.q-section.q-section--black {
  background-color: var(--q-color-black);
  color: #fff;
}

.q-section.q-section--black h1,
.q-section.q-section--black h2,
.q-section.q-section--black h3,
.q-section.q-section--black h4,
.q-section.q-section--black h5,
.q-section.q-section--black h6,
.q-section.q-section--black p {
  color: #fff;
}

.q-section__image {
  height: 500px;
}


/* ==========================================================================
   14. KOMPONENTA: IMAGES, LINKS
   ========================================================================== */

.q-image-cover {
    border-radius: 30px;
    object-fit: cover;
    display: block;
    margin: 0 auto;
    width: 100%
}

.q-link {
  color: var(--q-link-color);
  text-decoration: none;
}

.q-link:hover {
  color: var(--q-link-color-hover)
}

/* ==========================================================================
   15. KOMPONENTA: TEXT SECTION
   Základní typografie pro dlouhý/CMS obsah (h1–h6, p, seznamy, odkazy...).
   Globální reset výše (sekce 0) schválně odstraňuje veškeré výchozí
   marginy/odrážky — tahle komponenta je vrací zpět, ale JEN uvnitř
   .q-text-section, aby to neovlivnilo zbytek layoutu (navigace, karty...).
   ========================================================================== */

.q-text-section {
  color: var(--q-color-dark);
  font-size: var(--q-fs-3);
  line-height: var(--q-lh-3);
}

/* --- Nadpisy --- */

.q-text-section h1,
.q-text-section h2,
.q-text-section h3,
.q-text-section h4,
.q-text-section h5,
.q-text-section h6 {
  color: var(--q-color-dark);
  font-weight: var(--q-fw-semibold);
  line-height: var(--q-lh-2);
  margin-top: var(--q-space-5);
  margin-bottom: var(--q-space-3);
}

/* první nadpis v sekci nepotřebuje horní odsazení */
.q-text-section > :first-child {
  margin-top: 0;
}

.q-text-section h1 { font-size: var(--q-fs-7); }
.q-text-section h2 { font-size: var(--q-fs-6); }
.q-text-section h3 { font-size: var(--q-fs-5); }
.q-text-section h4 { font-size: var(--q-fs-4); }
.q-text-section h5 { font-size: var(--q-fs-3); font-weight: var(--q-fw-bold); }
.q-text-section h6 {
  font-size: var(--q-fs-2);
  font-weight: var(--q-fw-bold);
  text-transform: uppercase;
  letter-spacing: 0.03em;
}

/* --- Odstavce a základní text --- */

.q-text-section p {
  margin: 0 0 var(--q-space-3);
}

.q-text-section strong,
.q-text-section b {
  font-weight: var(--q-fw-bold);
}

.q-text-section em,
.q-text-section i {
  font-style: italic;
}

.q-text-section small {
  font-size: var(--q-fs-2);
  color: var(--q-color-muted);
}

/* --- Odkazy --- */

.q-text-section a {
  color: var(--q-color-info);
  text-decoration: underline;
  text-underline-offset: 2px;
}

.q-text-section a:hover,
.q-text-section a:focus-visible {
  color: var(--q-color-info-hover);
}

/* --- Seznamy (globální reset výše je vynuloval — tady je vracíme) --- */

.q-text-section ul,
.q-text-section ol {
  margin: 0 0 var(--q-space-3);
  padding-left: var(--q-space-4);
}

.q-text-section ul {
  list-style: disc;
}

.q-text-section ol {
  list-style: decimal;
}

.q-text-section li {
  margin-bottom: var(--q-space-1);
}

.q-text-section li > ul,
.q-text-section li > ol {
  margin-top: var(--q-space-1);
  margin-bottom: 0;
}

/* --- Citace --- */

.q-text-section blockquote {
  margin: var(--q-space-4) 0;
  padding-left: var(--q-space-3);
  border-left: 3px solid var(--q-color-light-hover);
  color: var(--q-color-muted);
  font-style: italic;
}

/* --- Oddělovač --- */

.q-text-section hr {
  border: none;
  border-top: 1px solid var(--q-color-light-hover);
  margin: var(--q-space-5) 0;
}

/* --- Kód --- */

.q-text-section code {
  font-family: ui-monospace, "SF Mono", Consolas, monospace;
  font-size: 0.9em;
  background-color: var(--q-color-light);
  padding: 0.15em 0.4em;
  border-radius: 4px;
}

.q-text-section pre {
  background-color: var(--q-color-light);
  padding: var(--q-space-3);
  border-radius: 4px;
  overflow-x: auto;
  margin: 0 0 var(--q-space-3);
}

.q-text-section pre code {
  background: none;
  padding: 0;
}

/* --- Tabulky --- */

.q-text-section table {
  width: 100%;
  border-collapse: collapse;
  margin: 0 0 var(--q-space-4);
}

.q-text-section th,
.q-text-section td {
  padding: var(--q-space-2) var(--q-space-3);
  border-bottom: 1px solid var(--q-color-light-hover);
  text-align: left;
}

.q-text-section th {
  font-weight: var(--q-fw-semibold);
}

/* --- Obrázky uvnitř textu --- */

.q-text-section img {
  border-radius: 4px;
  margin: var(--q-space-4) 0;
}

/* poslední prvek v sekci nepotřebuje spodní mezeru */
.q-text-section > :last-child {
  margin-bottom: 0;
}

/* ==========================================================================
   15. KOMPONENTA: ARTICLES (střídavé řádky obrázek/text)
   Sudé položky se automaticky prohodí (text vlevo, obrázek vpravo).
   Na mobilu je obrázek VŽDY první, bez ohledu na střídání.
   ========================================================================== */

.q-articles {
  display: flex;
  flex-direction: column;
  gap: var(--q-space-5);
}

.q-articles__item {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--q-space-4);
}

.q-articles__media {
  flex: 1 1 320px;
  order: 1;
  max-width: 400px;
}

.q-articles__media img {
  display: block;
  width: 100%;
  height: auto;
  border-radius: 8px;
  object-fit: cover;
}

.q-articles__content {
  flex: 1 1 320px;
  order: 2;
}

/* --- Sudé položky: obrázek doprava, text doleva --- */
.q-articles__item:nth-child(even) .q-articles__media {
  order: 2;
}

.q-articles__item:nth-child(even) .q-articles__content {
  order: 1;
}

/* --- Nadpis --- */
.q-articles__heading {
  color: var(--q-articles-accent, #a6975d);
  font-weight: var(--q-fw-bold);
  line-height: var(--q-lh-2);
  margin: 0 0 var(--q-space-3);
}

.q-articles__content p {
  margin: 0 0 var(--q-space-3);
  line-height: var(--q-lh-3);
}

/* --- Modifikátor: zvýrazněná/hlavní položka --- */
.q-articles__item--primary .q-articles__heading {
  color: var(--q-color-primary);
}

.q-articles__item--secondary .q-articles__heading {
  color: var(--q-color-secondary);
}

.q-articles__item--info .q-articles__heading {
  color: var(--q-color-info);
}

/* --- Mobil: obrázek vždy první, střídání se ruší --- */
@media (max-width: 767.98px) {
  .q-articles__media {
    max-width: 100%;   /* na mobilu ať klidně vyplní celou šířku */
  }

  .q-articles__item,
  .q-articles__item:nth-child(even) {
    flex-direction: column;
  }

  .q-articles__media,
  .q-articles__item:nth-child(even) .q-articles__media {
    order: 1;
  }

  .q-articles__content,
  .q-articles__item:nth-child(even) .q-articles__content {
    order: 2;
  }
}

/* ==========================================================================
   15. KOMPONENTA: BOX (střídavé řádky obrázek/text)
   ========================================================================== */

.q-box {
  background-color: var(--q-color-light);
  padding: var(--q-space-3) var(--q-space-3);
  display: flex;
  flex-direction: column;
  color: var(--q-text-color);
}

/* --- Modifikátory: stín --- */
.q-box--shadow-sm {
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08);
}

.q-box--shadow-md {
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
}

.q-box--shadow-lg {
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.15);
}

/* --- Zaoblení (recykluje --q-radius-* ze sekce 17) --- */
.q-box--rounded { border-radius: var(--q-radius-md); }
.q-box--rounded-lg { border-radius: var(--q-radius-lg); }

/* --- Obrys místo/vedle pozadí --- */
.q-box--bordered {
  background-color: transparent;
  border: 1px solid var(--q-border-color);
}

/* --- Velikost paddingu --- */
.q-box--compact { padding: var(--q-space-2); }
.q-box--spacious { padding: var(--q-space-5); }

/* --- Tmavá varianta pozadí (ne jen barva nadpisu, celý box) --- */
.q-box--dark-bg {
  background-color: var(--q-color-secondary);
  color: var(--q-color-white);
}

.q-box.q-box--hover:hover {
  background-color: var(--q-color-light-hover);
}

.q-box.q-box--primary h1,
.q-box.q-box--primary h2,
.q-box.q-box--primary h3,
.q-box.q-box--primary h4,
.q-box.q-box--primary h5 {
  color: var(--q-color-primary);
}

.q-box.q-box--secondary h1,
.q-box.q-box--secondary h2,
.q-box.q-box--secondary h3,
.q-box.q-box--secondary h4,
.q-box.q-box--secondary h5 {
  color: var(--q-color-secondary);
}

.q-box.q-box--info h1,
.q-box.q-box--info h2,
.q-box.q-box--info h3,
.q-box.q-box--info h4,
.q-box.q-box--info h5 {
  color: var(--q-color-info);
}

.q-box.q-box--dark h1,
.q-box.q-box--dark h2,
.q-box.q-box--dark h3,
.q-box.q-box--dark h4,
.q-box.q-box--dark h5 {
  color: var(--q-color-dark);
}

/* --- Layout modifikátor: řádek místo výchozího sloupce --- */

.q-box--row {
  flex-direction: row;
  align-items: center;
  gap: var(--q-space-4);
}

/* --- Bez pozadí — použití jako "položka v seznamu", ne barevný panel --- */

.q-box--flat {
  background-color: transparent;
  padding: var(--q-space-3) 0;
}

.q-box--divider {
  border-bottom: 1px solid var(--q-border-color);
  border-radius: 0; /* kdyby byl box zaoblený, u divideru to nechceme */
}

.q-box--divider:last-child {
  border-bottom: none;
}

/* --- Vnitřní stavební prvky (BEM elementy k .q-box) --- */

.q-box__media {
  flex: 0 0 auto;
}

.q-box__media .q-image {
  width: 90px;
}

.q-box__body {
  flex: 1 1 auto;
  min-width: 0; /* aby dlouhý text bez mezer nerozbil flex layout */
}

.q-box__title {
  display: block;
  font-size: var(--q-fs-3);
  color: var(--q-color-info);
  text-decoration: none;
  margin: 0 0 var(--q-space-1);
}

a.q-box__title:hover,
a.q-box__title:focus-visible {
  text-decoration: underline;
}

.q-box__meta {
  margin: 0;
  font-size: var(--q-fs-3);
  font-weight: var(--q-fw-bold);
  color: var(--q-color-dark);
}

.q-box__aside {
  flex: 0 0 auto;
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: var(--q-space-2);
  text-align: right;
}

.q-box__price {
  font-size: var(--q-fs-3);
  font-weight: var(--q-fw-bold);
  color: var(--q-color-dark);
}

/* --- Wrapper seznamu + nadpis sekce (modrý text + linka pod ním) --- */

.q-list__heading {
  font-size: var(--q-fs-4);
  font-weight: var(--q-fw-semibold);
  color: var(--q-color-info);
  margin: 0 0 var(--q-space-2);
  padding-bottom: var(--q-space-3);
  border-bottom: 1px solid var(--q-border-color);
}

/* --- Mobil: řádek se rozpadne pod sebe, cena+tlačítko zůstanou vedle sebe --- */

@media (max-width: 575.98px) {
  .q-box--row {
    flex-direction: column;
    align-items: flex-start;
  }

  .q-box__aside {
    flex-direction: row;
    align-items: center;
    justify-content: space-between;
    width: 100%;
  }
}

/* ==========================================================================
   16. UTILITY: IMAGE
   Báze + modifikátory pro práci s poměrem stran a ořezem obrázků.
   ========================================================================== */

.q-image {
  display: block;
  max-width: 100%;
  height: auto;
}

/* --- Ořez obsahu (object-fit) --- */

.q-image--cover {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.q-image--contain {
  width: 100%;
  height: 100%;
  object-fit: contain;
}

/* Pozice ořezu — použít spolu s --cover/--contain */
.q-image--pos-top { object-position: top; }
.q-image--pos-center { object-position: center; }
.q-image--pos-bottom { object-position: bottom; }

/* --- Pevná VÝŠKA — šířka se dopočítá sama (zachová poměr stran) --- */

.q-image--fixed-height {
  height: var(--q-image-height, 240px);
  width: auto;
  max-width: none; /* přebije base .q-image, ať se nezastaví na 100% */
}

/* --- Pevná ŠÍŘKA — výška se dopočítá sama (zachová poměr stran) --- */

.q-image--fixed-width {
  width: var(--q-image-width, 240px);
  height: auto;
}

/* --- Pevný poměr stran (ořízne obsah, drží tvar boxu i při různých zdrojových rozměrech) --- */

.q-image--ratio-1-1 { aspect-ratio: 1 / 1; width: 100%; height: auto; object-fit: cover; }
.q-image--ratio-4-3 { aspect-ratio: 4 / 3; width: 100%; height: auto; object-fit: cover; }
.q-image--ratio-16-9 { aspect-ratio: 16 / 9; width: 100%; height: auto; object-fit: cover; }
.q-image--ratio-3-4 { aspect-ratio: 3 / 4; width: 100%; height: auto; object-fit: cover; }

/* --- Tvar / okraje --- */

.q-image--rounded { border-radius: 8px; }
.q-image--rounded-lg { border-radius: 16px; }
.q-image--circle { border-radius: 50%; aspect-ratio: 1 / 1; object-fit: cover; }

.q-image--bordered {
  border: 1px solid var(--q-color-light-hover);
}

/* --- Vizuální efekty --- */

.q-image--grayscale { filter: grayscale(100%); }
.q-image--shadow { box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1); }

/* ==========================================================================
   17. UTILITY: BORDER
   ========================================================================== */

:root {
  /* --- Border škála --- */
  --q-border-color: #e2e2e2;
  --q-border-width: 1px;

  /* --- Radius škála --- */
  --q-radius-sm: 4px;
  --q-radius-md: 8px;
  --q-radius-lg: 16px;
  --q-radius-xl: 24px;
  --q-radius-full: 999px;
}

/* --- Základ / vypnutí --- */

.q-border { border: var(--q-border-width) solid var(--q-border-color); }
.q-border-0 { border: none; }

/* --- Jednotlivé strany --- */

.q-border-top { border-top: var(--q-border-width) solid var(--q-border-color); }
.q-border-right { border-right: var(--q-border-width) solid var(--q-border-color); }
.q-border-bottom { border-bottom: var(--q-border-width) solid var(--q-border-color); }
.q-border-left { border-left: var(--q-border-width) solid var(--q-border-color); }

.q-border-top-0 { border-top: none; }
.q-border-right-0 { border-right: none; }
.q-border-bottom-0 { border-bottom: none; }
.q-border-left-0 { border-left: none; }

/* Osy (zkratky) */
.q-border-x {
  border-left: var(--q-border-width) solid var(--q-border-color);
  border-right: var(--q-border-width) solid var(--q-border-color);
}

.q-border-y {
  border-top: var(--q-border-width) solid var(--q-border-color);
  border-bottom: var(--q-border-width) solid var(--q-border-color);
}

/* --- Tloušťka --- */

.q-border-1 { border-width: 1px; }
.q-border-2 { border-width: 2px; }
.q-border-3 { border-width: 3px; }
.q-border-4 { border-width: 4px; }

/* --- Styl čáry --- */

.q-border-solid { border-style: solid; }
.q-border-dashed { border-style: dashed; }
.q-border-dotted { border-style: dotted; }

/* --- Barevné varianty (napojené na existující --q-color-*) --- */

.q-border-primary { border-color: var(--q-color-primary); }
.q-border-secondary { border-color: var(--q-color-secondary); }
.q-border-success { border-color: var(--q-color-success); }
.q-border-danger { border-color: var(--q-color-danger); }
.q-border-info { border-color: var(--q-color-info); }
.q-border-light { border-color: var(--q-color-light); }
.q-border-dark { border-color: var(--q-color-dark); }
.q-border-white { border-color: var(--q-color-white); }
.q-border-muted { border-color: var(--q-color-muted); }

/* --- Zaoblení rohů (samostatné, funguje i bez .q-border) --- */

.q-rounded-none { border-radius: 0; }
.q-rounded-sm { border-radius: var(--q-radius-sm); }
.q-rounded-md { border-radius: var(--q-radius-md); }
.q-rounded-lg { border-radius: var(--q-radius-lg); }
.q-rounded-xl { border-radius: var(--q-radius-xl); }
.q-rounded-full { border-radius: var(--q-radius-full); }
.q-rounded-circle { border-radius: 50%; }

/* Zaoblení jen některých rohů (hodí se pro karty se svázaným obrázkem nahoře atd.) */
.q-rounded-top {
  border-top-left-radius: var(--q-radius-md);
  border-top-right-radius: var(--q-radius-md);
}

.q-rounded-bottom {
  border-bottom-left-radius: var(--q-radius-md);
  border-bottom-right-radius: var(--q-radius-md);
}

.q-rounded-left {
  border-top-left-radius: var(--q-radius-md);
  border-bottom-left-radius: var(--q-radius-md);
}

.q-rounded-right {
  border-top-right-radius: var(--q-radius-md);
  border-bottom-right-radius: var(--q-radius-md);
}

/* ==========================================================================
   18. KOMPONENTA: PLAN CARD
   Karta tarifu: obrázek vlevo + tmavý panel s parametry vpravo.
   Vychází z .q-border/.q-rounded-lg/.q-image utilit definovaných výše —
   tahle sekce doplňuje jen to, co univerzální utility nepokryjí.
   ========================================================================== */

:root {
  --q-plan-card-tagline-color: #c99a53;
}

.q-plan-card__title {
  font-size: var(--q-fs-5);
  font-weight: var(--q-fw-bold);
  color: var(--q-color-dark);
  margin: 0 0 var(--q-space-4);
}

.q-plan-card__body {
  align-items: stretch; /* media a panel mají vždy stejnou výšku */
}

/* --- Media (obrázek vlevo) --- */

.q-plan-card__media {
  flex: 0 0 26%;
  min-width: 200px;
}

.q-plan-card__media .q-image {
  width: 100%;
  height: 100%;
}

/* --- Tmavý panel --- */

.q-plan-card__panel {
  flex: 1 1 auto;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  gap: var(--q-space-4);
  padding: var(--q-space-4);
  background-color: var(--q-color-dark);
  color: var(--q-color-white);
}

/* --- Úvod (rychlost + tagline) --- */

.q-plan-card__intro {
  padding-bottom: var(--q-space-3);
  border-bottom: 1px solid rgba(255, 255, 255, 0.15);
}

.q-plan-card__speed {
  margin: 0;
  line-height: var(--q-lh-1);
}

.q-plan-card__speed-value {
  color: var(--q-header-accent-yellow, #f9c605);
  font-size: var(--q-fs-6);
  font-weight: var(--q-fw-bold);
  margin-right: var(--q-space-2);
}

.q-plan-card__speed-label {
  color: var(--q-header-accent-yellow, #f9c605);
  font-size: var(--q-fs-2);
  font-weight: var(--q-fw-semibold);
}

.q-plan-card__upload {
  margin: var(--q-space-1) 0 0;
  font-size: var(--q-fs-3);
  color: var(--q-color-white);
}

.q-plan-card__tagline {
  margin: var(--q-space-2) 0 0;
  font-size: var(--q-fs-2);
  color: var(--q-plan-card-tagline-color);
}

/* --- Seznam výhod --- */

.q-plan-card__features {
  display: flex;
  flex-direction: column;
  gap: var(--q-space-2);
  flex: 1 0 auto;
}

.q-plan-card__features li {
  display: flex;
  align-items: flex-start;
  gap: var(--q-space-2);
  font-size: var(--q-fs-3);
  color: var(--q-color-white);
}

.q-plan-card__features li::before {
  content: "✓";
  flex: 0 0 auto;
  color: var(--q-color-white);
  font-weight: var(--q-fw-bold);
}

/* --- Patička (cena + CTA) --- */

.q-plan-card__price {
  line-height: var(--q-lh-2);
}

.q-plan-card__price-value {
  margin: 0;
  font-size: var(--q-fs-4);
  font-weight: var(--q-fw-semibold);
  color: var(--q-color-white);
}

.q-plan-card__price-activation {
  margin: 0;
  font-size: var(--q-fs-2);
  color: var(--q-color-muted);
}

.q-plan-card__cta {
  flex: 0 0 auto;
  background-color: var(--q-header-accent-yellow, #f9c605);
  color: #1a1a1a;
  border-color: var(--q-header-accent-yellow, #f9c605);
}

.q-plan-card__cta:hover,
.q-plan-card__cta:focus-visible {
  background-color: #e0b204;
  border-color: #e0b204;
  color: #1a1a1a;
}

/* --- Responzivní chování: pod md se panel a media skládají pod sebe --- */

@media (max-width: 767.98px) {
  .q-plan-card__body {
    flex-direction: column;
  }

  .q-plan-card__media {
    flex: 0 0 auto;
    width: 100%;
    height: 200px;
  }

  .q-plan-card__footer {
    flex-direction: column;
    align-items: stretch;
    gap: var(--q-space-3);
  }

  .q-plan-card__cta {
    justify-content: center;
  }
}

/* --- Varianta: SIMPLE (bez obrázku/panelu, jen text + outline tlačítko) --- */

.q-plan-card-grid {
  display: flex;
  flex-wrap: wrap;
  gap: var(--q-space-4);
}

.q-plan-card--simple {
  flex: 1 1 240px;
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  gap: var(--q-space-3);
  padding: var(--q-space-4);
}

.q-plan-card--simple .q-plan-card__title {
  font-size: var(--q-fs-4);
  color: var(--q-color-dark);
  margin: 0;
}

.q-plan-card--simple .q-plan-card__text {
  margin: 0;
  font-size: var(--q-fs-2);
  line-height: var(--q-lh-3);
  color: var(--q-color-gray);
}

.q-plan-card--simple .q-plan-card__price-value {
  color: var(--q-color-dark);
}

.q-plan-card--simple .q-plan-card__cta {
  margin-top: auto; /* tlačítka na stejné výšce i při různě dlouhém textu nad nimi */
  padding-top: var(--q-space-4);
}

/* --- Tlačítko: outline pill --- */

.q-plan-card__cta--outline {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  padding: var(--q-space-2) var(--q-space-4);
  border: 1px solid var(--q-plan-card-tagline-color, #c99a53);
  border-radius: var(--q-radius-full);
  background-color: #faf6ea;
  color: var(--q-color-dark);
  font-weight: var(--q-fw-semibold);
  text-decoration: none;
  transition: background-color 0.2s ease;
}

.q-plan-card__cta--outline:hover,
.q-plan-card__cta--outline:focus-visible {
  background-color: #f2e9d0;
}

/* --- Responzivní: pod md dvě na řádek, pod sm jedna --- */

@media (max-width: 991.98px) {
  .q-plan-card--simple {
    flex: 1 1 calc(50% - var(--q-space-4));
  }
}

@media (max-width: 575.98px) {
  .q-plan-card--simple {
    flex: 1 1 100%;
  }
}

/* ==========================================================================
   19. KOMPONENTA: TABLE
   Báze .q-table + modifikátory. Zaoblení rohů řeší wrapper .q-table-wrapper
   (overflow:hidden), protože border-radius na <table> samotné nefunguje
   spolehlivě přes buňky při border-collapse.
   ========================================================================== */

.q-table-wrapper {
  overflow: hidden;
  border-radius: var(--q-radius-md);
}

.q-table {
  width: 100%;
  border-collapse: collapse;
  font-size: var(--q-fs-3);
}

.q-table th,
.q-table td {
  padding: var(--q-space-3) var(--q-space-4);
  text-align: left;
  vertical-align: middle;
}

.q-table th {
  font-weight: var(--q-fw-semibold);
  color: var(--q-color-dark);
  background-color: var(--q-color-light);
  border-bottom: 2px solid var(--q-border-color);
}

.q-table td {
  color: var(--q-color-dark);
  border-bottom: 1px solid var(--q-border-color);
}

.q-table tbody tr:last-child td {
  border-bottom: none;
}

/* --- Modifikátor: STRIPED (proužkované řádky) --- */

.q-table--striped tbody tr:nth-child(odd) {
  background-color: var(--q-color-light);
}

.q-table--striped tbody tr:nth-child(even) {
  background-color: var(--q-color-white);
}

/* --- Modifikátor: HOVER (zvýraznění řádku pod kurzorem) --- */

.q-table--hover tbody tr {
  transition: background-color 0.15s ease;
}

.q-table--hover tbody tr:hover {
  background-color: var(--q-color-light-hover);
}

/* --- Modifikátor: BORDERED (viditelná mřížka na všech buňkách) --- */

.q-table--bordered th,
.q-table--bordered td {
  border: 1px solid var(--q-border-color);
}

/* --- Modifikátor: COMPACT (menší padding) --- */

.q-table--compact th,
.q-table--compact td {
  padding: var(--q-space-2) var(--q-space-3);
  font-size: var(--q-fs-2);
}

/* --- Modifikátor: SPECS (dvousloupcová tabulka parametrů, jako na screenshotu) --- */

.q-table--specs td:first-child {
  font-weight: var(--q-fw-bold);
  color: var(--q-color-dark);
  white-space: nowrap;
  width: 1%; /* první sloupec se smrskne na obsah, druhý zabere zbytek */
}

.q-table--specs td:last-child {
  color: var(--q-color-info);
}

.q-table--specs td {
  border-bottom: 1px solid var(--q-border-color);
}

/* --- Responzivní: pod sm dovolí vodorovný scroll místo rozbití layoutu --- */

@media (max-width: 575.98px) {
  .q-table-wrapper {
    overflow-x: auto;
  }

  .q-table {
    min-width: 480px;
  }
}

/* ==========================================================================
   20. KOMPONENTA: TAGS (chips/pilulky)
   Skupina malých zaoblených štítků — filtry, kategorie, štítky obsahu.
   ========================================================================== */

.q-tags {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: var(--q-space-2) var(--q-space-3);
}

.q-tag {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: var(--q-space-2) var(--q-space-4);
  border-radius: var(--q-radius-full);
  background-color: var(--q-color-light);
  color: var(--q-color-dark);
  font-size: var(--q-fs-2);
  font-weight: var(--q-fw-semibold);
  text-transform: uppercase;
  letter-spacing: 0.02em;
  text-decoration: none;
  white-space: nowrap;
  border: 1px solid transparent;
  cursor: pointer;
  transition: background-color 0.15s ease, border-color 0.15s ease, color 0.15s ease;
}

.q-tag:hover,
.q-tag:focus-visible {
  background-color: var(--q-color-light-hover);
}

/* --- Modifikátor: AKTIVNÍ / VYBRANÝ (např. právě zvolený filtr) --- */

.q-tag--active {
  background-color: var(--q-color-primary);
  color: var(--q-color-white);
}

.q-tag--active:hover,
.q-tag--active:focus-visible {
  background-color: var(--q-color-primary-hover);
}

/* --- Modifikátor: OUTLINE (jen obrys, průhledné pozadí) --- */

.q-tag--outline {
  background-color: transparent;
  border-color: var(--q-border-color);
}

.q-tag--outline:hover,
.q-tag--outline:focus-visible {
  background-color: var(--q-color-light);
}

/* --- Velikosti --- */

.q-tag--sm {
  padding: var(--q-space-1) var(--q-space-3);
  font-size: 0.7rem;
}

.q-tag--lg {
  padding: var(--q-space-3) var(--q-space-5);
  font-size: var(--q-fs-3);
}

/* --- S ikonou/křížkem pro smazání (filtry) --- */

.q-tag__remove {
  display: inline-flex;
  margin-left: var(--q-space-2);
  font-weight: var(--q-fw-bold);
  opacity: 0.6;
}

.q-tag__remove:hover {
  opacity: 1;
}

/* ==========================================================================
   21. KOMPONENTA: PRODUCT DETAIL
   Detail produktu: galerie vlevo, info vpravo. Pod tím volné textové
   sekce (nadpis + odstavec), opakovatelné pro libovolný počet bloků.
   ========================================================================== */

.q-product-detail {
  display: flex;
  flex-wrap: wrap;
  gap: var(--q-space-5);
}

/* --- Galerie --- */

.q-product-detail__gallery {
  flex: 1 1 340px;
  max-width: 480px;
}

.q-product-detail__main-image {
  width: 100%;
}

.q-product-detail__thumbs {
  display: flex;
  gap: var(--q-space-3);
  margin-top: var(--q-space-4);
}

.q-product-detail__thumb {
  padding: var(--q-space-2);
  border: 1px solid var(--q-border-color);
  border-radius: var(--q-radius-sm);
  background: none;
  cursor: pointer;
  transition: border-color 0.15s ease;
}

.q-product-detail__thumb img {
  display: block;
  width: 60px;
  height: auto;
}

.q-product-detail__thumb:hover,
.q-product-detail__thumb--active {
  border-color: var(--q-color-primary);
}

/* --- Info panel --- */

.q-product-detail__info {
  flex: 1 1 480px;
}

.q-product-detail__title {
  font-size: var(--q-fs-6);
  font-weight: var(--q-fw-bold);
  color: var(--q-color-dark);
  margin: 0 0 var(--q-space-2);
}

.q-product-detail__subtitle {
  font-size: var(--q-fs-4);
  color: var(--q-color-muted);
  margin: 0 0 var(--q-space-4);
}

.q-product-detail__description {
  font-size: var(--q-fs-3);
  line-height: var(--q-lh-4);
  color: var(--q-color-dark);
  margin: 0 0 var(--q-space-4);
}

.q-product-detail__note {
  margin: 0 0 var(--q-space-4);
}

.q-product-detail__note-label {
  display: block;
  font-weight: var(--q-fw-bold);
  margin-bottom: var(--q-space-2);
}

.q-product-detail__note p {
  margin: 0 0 var(--q-space-1);
  line-height: var(--q-lh-3);
}

/* --- Stock/info box (šedý panel se stavem skladu) --- */

.q-product-detail__stockbox {
  background-color: var(--q-color-light);
  border-radius: var(--q-radius-md);
  padding: var(--q-space-4);
  margin-bottom: var(--q-space-4);
}

.q-product-detail__stock-status {
  display: block;
  color: var(--q-color-success);
  font-weight: var(--q-fw-semibold);
  margin-bottom: var(--q-space-2);
}

.q-product-detail__stockbox ul {
  display: flex;
  flex-direction: column;
  gap: var(--q-space-1);
}

.q-product-detail__stockbox li {
  color: var(--q-color-dark);
}

/* --- Cena + manuál --- */

.q-product-detail__price {
  font-size: var(--q-fs-5);
  color: var(--q-color-success);
  margin: 0 0 var(--q-space-2);
}

.q-product-detail__manual-link {
  display: inline-block;
  color: var(--q-color-danger);
  font-weight: var(--q-fw-bold);
  text-decoration: none;
}

.q-product-detail__manual-link:hover,
.q-product-detail__manual-link:focus-visible {
  text-decoration: underline;
}

/* --- Volné textové sekce POD galerií/info (na celou šířku) --- */

.q-product-detail__section {
  margin-top: var(--q-space-5);
}

.q-product-detail__section-title {
  font-size: var(--q-fs-5);
  font-weight: var(--q-fw-semibold);
  color: var(--q-color-dark);
  margin: 0 0 var(--q-space-3);
}

.q-product-detail__section-text {
  font-size: var(--q-fs-3);
  line-height: var(--q-lh-4);
  color: var(--q-color-dark);
  margin: 0;
}

/* --- Responzivní: pod md se galerie a info skládají pod sebe --- */

@media (max-width: 767.98px) {
  .q-product-detail {
    flex-direction: column;
  }

  .q-product-detail__gallery {
    max-width: 100%;
  }
}

/* ==========================================================================
   22. KOMPONENTA: STEPS (číslovaný postup)
   ========================================================================== */

.q-steps {
  background-color: var(--q-color-light);
  border-radius: var(--q-radius-md);
  padding: var(--q-space-4);
}

.q-steps__title {
  font-size: var(--q-fs-4);
  font-weight: var(--q-fw-bold);
  color: var(--q-color-dark);
  margin: 0 0 var(--q-space-4);
}

.q-steps__list {
  display: flex;
  flex-direction: column;
}

.q-steps__item {
  display: flex;
  align-items: flex-start;
  gap: var(--q-space-3);
  padding: var(--q-space-3) 0;
  border-bottom: 1px solid var(--q-border-color);
}

.q-steps__item:last-child {
  border-bottom: none;
  padding-bottom: 0;
}

.q-steps__item:first-child {
  padding-top: 0;
}

.q-steps__number {
  flex: 0 0 auto;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 24px;
  height: 24px;
  border-radius: 50%;
  background-color: var(--q-header-accent-yellow, #f9c605);
  color: var(--q-color-white);
  font-size: var(--q-fs-1);
  font-weight: var(--q-fw-bold);
  margin-top: 2px; /* jemné zarovnání s první řádkou textu */
}

.q-steps__content {
  flex: 1 1 auto;
}

.q-steps__step-title {
  margin: 0 0 var(--q-space-1);
  font-size: var(--q-fs-3);
  font-weight: var(--q-fw-bold);
  color: var(--q-color-dark);
}

.q-steps__step-text {
  margin: 0;
  font-size: var(--q-fs-2);
  color: var(--q-color-info);
}

/* --- Modifikátor: aktivní/dokončený krok (např. rozpracovaná objednávka) --- */

.q-steps__item--done .q-steps__number {
  background-color: var(--q-color-success);
}

.q-steps__item--active .q-steps__number {
  background-color: var(--q-color-primary);
}

/* ==========================================================================
   23. KOMPONENTA: FORMULÁŘOVÉ PRVKY
   Label, input, textarea, select, checkbox, radio + validační stavy.
   Checkbox/radio jsou vlastní (ne nativní vzhled), aby šly konzistentně
   stylovat napříč prohlížeči — vizuálně, ne přístupností (viz poznámky).
   ========================================================================== */

:root {
  --q-form-border: var(--q-border-color);
  --q-form-border-focus: var(--q-color-primary);
  --q-form-bg: #ffffff;
  --q-form-bg-disabled: var(--q-color-light);
  --q-form-radius: var(--q-radius-sm);
  --q-form-height: 46px;
}

/* --- Wrapper jednoho pole (label + input + hint/error) --- */

.q-form-group {
  display: flex;
  flex-direction: column;
  gap: var(--q-space-2);
  margin-bottom: var(--q-space-4);
}

.q-form-row {
  display: flex;
  flex-wrap: wrap;
  gap: var(--q-space-4);
}

.q-form-row > .q-form-group {
  flex: 1 1 200px;
  margin-bottom: 0;
}

/* --- Label --- */

.q-label {
  font-size: var(--q-fs-2);
  font-weight: var(--q-fw-semibold);
  color: var(--q-color-dark);
}

.q-label__required {
  color: var(--q-color-danger);
  margin-left: 2px;
}

/* --- Base: input / textarea / select --- */

.q-input,
.q-textarea,
.q-select {
  width: 100%;
  padding: var(--q-space-2) var(--q-space-3);
  font-size: var(--q-fs-3);
  font-family: inherit;
  color: var(--q-color-dark);
  background-color: var(--q-form-bg);
  border: 1px solid var(--q-form-border);
  border-radius: var(--q-form-radius);
  transition: border-color 0.15s ease, box-shadow 0.15s ease;
}

.q-input,
.q-select {
  height: var(--q-form-height);
}

.q-input::placeholder,
.q-textarea::placeholder {
  color: var(--q-color-muted);
}

.q-input:focus,
.q-textarea:focus,
.q-select:focus {
  outline: none;
  border-color: var(--q-form-border-focus);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--q-form-border-focus) 15%, transparent);
}

.q-input:disabled,
.q-textarea:disabled,
.q-select:disabled {
  background-color: var(--q-form-bg-disabled);
  color: var(--q-color-muted);
  cursor: not-allowed;
}

.q-textarea {
  min-height: 120px;
  resize: vertical;
}

/* --- Select — vlastní šipka (nativní je v každém prohlížeči jiná) --- */

.q-select {
  appearance: none;
  padding-right: var(--q-space-5);
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath fill='%231a1a1a' d='M1 1l5 5 5-5'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right var(--q-space-3) center;
  cursor: pointer;
}

/* --- Velikosti --- */

.q-input--sm,
.q-select--sm {
  height: 36px;
  padding: var(--q-space-1) var(--q-space-2);
  font-size: var(--q-fs-2);
}

.q-input--lg,
.q-select--lg {
  height: 56px;
  padding: var(--q-space-3) var(--q-space-4);
  font-size: var(--q-fs-4);
}

.q-select--sm {
  padding-right: var(--q-space-4);
  background-size: 10px 7px;
}

.q-select--lg {
  padding-right: var(--q-space-5);
  background-size: 14px 9px;
}

/* --- Hint a chybová hláška --- */

.q-form-hint {
  font-size: var(--q-fs-1);
  color: var(--q-color-muted);
}

.q-form-error {
  font-size: var(--q-fs-1);
  color: var(--q-color-danger);
  display: none;
}

/* --- Validační stav: ERROR --- */

.q-form-group--error .q-input,
.q-form-group--error .q-textarea,
.q-form-group--error .q-select {
  border-color: var(--q-color-danger);
}

.q-form-group--error .q-input:focus,
.q-form-group--error .q-textarea:focus,
.q-form-group--error .q-select:focus {
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--q-color-danger) 15%, transparent);
}

.q-form-group--error .q-form-error {
  display: block;
}

.q-form-group--error .q-form-hint {
  display: none;
}

/* --- Validační stav: SUCCESS --- */

.q-form-group--success .q-input,
.q-form-group--success .q-textarea,
.q-form-group--success .q-select {
  border-color: var(--q-color-success);
}

/* --- Checkbox / Radio (vlastní vzhled) --- */

.q-check {
  display: flex;
  align-items: flex-start;
  gap: var(--q-space-2);
  cursor: pointer;
  font-size: var(--q-fs-2);
  color: var(--q-color-dark);
}

.q-check input[type="checkbox"],
.q-check input[type="radio"] {
  /* Skryté vizuálně, ale funkční a přístupné (ne display:none) */
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

.q-check__box {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 20px;
  height: 20px;
  margin-top: 1px;
  background-color: var(--q-form-bg);
  border: 1px solid var(--q-form-border);
  transition: background-color 0.15s ease, border-color 0.15s ease;
}

.q-check input[type="checkbox"] + .q-check__box {
  border-radius: var(--q-radius-sm);
}

.q-check input[type="radio"] + .q-check__box {
  border-radius: 50%;
}

.q-check__box::after {
  content: "";
  opacity: 0;
}

.q-check input[type="checkbox"]:checked + .q-check__box {
  background-color: var(--q-color-primary);
  border-color: var(--q-color-primary);
}

.q-check input[type="checkbox"]:checked + .q-check__box::after {
  opacity: 1;
  width: 5px;
  height: 9px;
  border: solid #fff;
  border-width: 0 2px 2px 0;
  transform: rotate(45deg) translate(-1px, -1px);
}

.q-check input[type="radio"]:checked + .q-check__box {
  border-color: var(--q-color-primary);
}

.q-check input[type="radio"]:checked + .q-check__box::after {
  opacity: 1;
  width: 10px;
  height: 10px;
  border-radius: 50%;
  background-color: var(--q-color-primary);
}

/* Klávesnicové ovládání — outline na wrapperu, když má skrytý input focus */
.q-check input:focus-visible + .q-check__box {
  outline: 2px solid var(--q-color-primary);
  outline-offset: 2px;
}

.q-check--disabled {
  color: var(--q-color-muted);
  cursor: not-allowed;
}

.q-check--disabled .q-check__box {
  background-color: var(--q-form-bg-disabled);
}

/* ==========================================================================
   24. KOMPONENTA: GLOSSARY (abecední rejstřík)
   Skupiny podle písmene — velké písmeno + seznam pojmů, oddělené linkou.
   ========================================================================== */

.q-glossary {
  display: flex;
  flex-direction: column;
}

.q-glossary__group {
  padding: var(--q-space-4) 0;
  border-bottom: 1px solid var(--q-border-color);
}

.q-glossary__group:last-child {
  border-bottom: none;
}

.q-glossary__letter {
  margin: 0 0 var(--q-space-3);
  font-size: var(--q-fs-6);
  font-weight: var(--q-fw-semibold);
  line-height: 1;
  color: var(--q-color-info);
}

.q-glossary__terms {
  display: flex;
  flex-direction: column;
  gap: var(--q-space-1);
}

.q-glossary__term {
  font-size: var(--q-fs-3);
  font-weight: var(--q-fw-bold);
  color: var(--q-color-dark);
}

a.q-glossary__term {
  text-decoration: none;
}

a.q-glossary__term:hover,
a.q-glossary__term:focus-visible {
  color: var(--q-color-info);
  text-decoration: underline;
}

/* --- Volitelně: rychlá abecední navigace nahoře (skoky na kotvy) --- */

.q-glossary-nav {
  display: flex;
  flex-wrap: wrap;
  gap: var(--q-space-2);
  margin-bottom: var(--q-space-4);
}

.q-glossary-nav a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  border-radius: var(--q-radius-sm);
  background-color: var(--q-color-light);
  color: var(--q-color-dark);
  font-size: var(--q-fs-2);
  font-weight: var(--q-fw-semibold);
  text-decoration: none;
}

.q-glossary-nav a:hover,
.q-glossary-nav a:focus-visible {
  background-color: var(--q-color-info);
  color: var(--q-color-white);
}

/* ==========================================================================
   26. KOMPONENTA: ALERT (informační panely)
   ========================================================================== */

:root {
  /* Warning barva v systému chyběla — success/danger/info máš, warning ne */
  --q-color-warning: #b8860b;
  --q-color-warning-hover: #966f09;
  --q-color-warning-bg: #fdf3e0;

  --q-color-info-bg: #eaf3fb;
  --q-color-success-bg: #eaf6ee;
  --q-color-danger-bg: #fbeceb;
}

.q-alert {
  display: flex;
  align-items: flex-start;
  gap: var(--q-space-3);
  padding: var(--q-space-3) var(--q-space-4);
  border-radius: var(--q-radius-md);
  border-left: 4px solid transparent;
  font-size: var(--q-fs-3);
  line-height: var(--q-lh-3);
}

.q-alert__icon {
  flex: 0 0 auto;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 24px;
  height: 24px;
  border-radius: 50%;
  font-size: var(--q-fs-2);
  font-weight: var(--q-fw-bold);
  color: #fff;
  margin-top: 1px;
}

.q-alert__body {
  flex: 1 1 auto;
  min-width: 0;
}

.q-alert__title {
  margin: 0 0 var(--q-space-1);
  font-weight: var(--q-fw-bold);
  color: var(--q-color-dark);
}

.q-alert__text {
  margin: 0;
  color: var(--q-color-dark);
}

.q-alert__text a {
  color: inherit;
  text-decoration: underline;
}

.q-alert__close {
  flex: 0 0 auto;
  background: none;
  border: none;
  font-size: var(--q-fs-4);
  line-height: 1;
  cursor: pointer;
  color: var(--q-color-muted);
  padding: 0;
}

.q-alert__close:hover {
  color: var(--q-color-dark);
}

/* --- Varianty --- */

.q-alert--info {
  background-color: var(--q-color-info-bg);
  border-left-color: var(--q-color-info);
}

.q-alert--info .q-alert__icon {
  background-color: var(--q-color-info);
}

.q-alert--success {
  background-color: var(--q-color-success-bg);
  border-left-color: var(--q-color-success);
}

.q-alert--success .q-alert__icon {
  background-color: var(--q-color-success);
}

.q-alert--warning {
  background-color: var(--q-color-warning-bg);
  border-left-color: var(--q-color-warning);
}

.q-alert--warning .q-alert__icon {
  background-color: var(--q-color-warning);
}

.q-alert--danger {
  background-color: var(--q-color-danger-bg);
  border-left-color: var(--q-color-danger);
}

.q-alert--danger .q-alert__icon {
  background-color: var(--q-color-danger);
}

/* --- Kompaktní varianta (bez title, jen jednořádkový text) --- */

.q-alert--compact {
  padding: var(--q-space-2) var(--q-space-3);
  align-items: center;
}

.q-alert--compact .q-alert__icon {
  width: 20px;
  height: 20px;
  font-size: var(--q-fs-1);
}

/* ==========================================================================
   27. KOMPONENTA: ACCORDION
   Postavené na <details>/<summary> — funguje bez JS, přístupné z krabice
   (klávesnice, screenreader). JS níže je jen volitelný pro "jen jeden
   otevřený najednou" chování.
   ========================================================================== */

.q-accordion {
  display: flex;
  flex-direction: column;
  border-top: 1px solid var(--q-border-color);
}

.q-accordion__item {
  border-bottom: 1px solid var(--q-border-color);
}

/* Zruší výchozí šipku prohlížeče u <summary> */
.q-accordion__header {
  list-style: none;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--q-space-3);
  padding: var(--q-space-4) var(--q-space-2);
  font-size: var(--q-fs-3);
  font-weight: var(--q-fw-semibold);
  color: var(--q-color-dark);
}

.q-accordion__header::-webkit-details-marker {
  display: none;
}

.q-accordion__header:hover {
  color: var(--q-color-info);
}

.q-accordion__header:focus-visible {
  outline: 2px solid var(--q-color-info);
  outline-offset: 2px;
  border-radius: var(--q-radius-sm);
}

/* --- Ikona plus/minus (čistě CSS, žádný obrázek/font) --- */

.q-accordion__icon {
  flex: 0 0 auto;
  position: relative;
  width: 18px;
  height: 18px;
}

.q-accordion__icon::before,
.q-accordion__icon::after {
  content: "";
  position: absolute;
  top: 50%;
  left: 50%;
  background-color: var(--q-color-dark);
  transition: transform 0.2s ease;
}

.q-accordion__icon::before {
  width: 100%;
  height: 2px;
  transform: translate(-50%, -50%);
}

.q-accordion__icon::after {
  width: 2px;
  height: 100%;
  transform: translate(-50%, -50%);
}

/* Otevřený stav: "+" se otočí na "−" (svislá čárka zmizí) */
.q-accordion__item[open] > .q-accordion__header .q-accordion__icon::after {
  transform: translate(-50%, -50%) rotate(90deg) scaleX(0);
}

/* --- Obsah --- */

.q-accordion__body {
  padding: 0 var(--q-space-2) var(--q-space-4);
  font-size: var(--q-fs-3);
  line-height: var(--q-lh-3);
  color: var(--q-color-dark);
}

.q-accordion__body p {
  margin: 0 0 var(--q-space-2);
}

.q-accordion__body p:last-child {
  margin-bottom: 0;
}

/* --- Jednoduchá animace otevření (jen fade, plná výšková animace
       by potřebovala JS kvůli auto výšce <details>) --- */

.q-accordion__body {
  animation: q-accordion-fade 0.2s ease;
}

@keyframes q-accordion-fade {
  from { opacity: 0; }
  to { opacity: 1; }
}

/* ==========================================================================
   28. KOMPONENTA: BENEFITS (ikona + nadpis + text)
   ========================================================================== */

.q-benefits {
  display: flex;
  flex-direction: column;
  gap: var(--q-space-4);
}

.q-benefit {
  display: flex;
  align-items: flex-start;
  gap: var(--q-space-3);
}

.q-benefit__icon {
  flex: 0 0 auto;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  border-radius: 50%;
  background-color: var(--q-color-info);
  color: var(--q-color-white);
  font-size: var(--q-fs-4);
}

.q-benefit__body {
  flex: 1 1 auto;
  min-width: 0;
}

.q-benefit__title {
  margin: 0 0 var(--q-space-1);
  font-size: var(--q-fs-3);
  font-weight: var(--q-fw-bold);
  color: var(--q-color-dark);
}

.q-benefit__text {
  margin: 0;
  font-size: var(--q-fs-2);
  line-height: var(--q-lh-3);
  color: var(--q-color-muted);
}

.q-benefit__list {
  margin: var(--q-space-1) 0 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: var(--q-space-1);
  font-size: var(--q-fs-2);
  color: var(--q-color-muted);
}

/* --- Modifikátor: menší ikona/kompaktnější (na úzký boční panel, jako v produktu) --- */

.q-benefit--compact .q-benefit__icon {
  width: 36px;
  height: 36px;
  font-size: var(--q-fs-3);
}

/* ==========================================================================
   KOMPONENTA: COUNTER (číselník s +/- tlačítky)
   ========================================================================== */

.q-counter-grid {
  display: flex;
  flex-wrap: wrap;
  gap: var(--q-space-4);
}

.q-counter {
  flex: 1 1 260px;
}

.q-counter__inner {
  border: 1px solid var(--q-border-color);
  border-radius: var(--q-radius-lg);
  overflow: hidden;
}

.q-counter__header {
  padding: var(--q-space-3);
  background-color: var(--q-color-light);
  text-align: center;
}

.q-counter__header h3 {
  margin: 0;
  font-size: var(--q-fs-4);
  font-weight: var(--q-fw-bold);
  color: var(--q-color-dark);
}

.q-counter__body {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--q-space-4);
  padding: var(--q-space-4);
}

.q-counter__value {
  width: 60px;
  text-align: center;
  border: none;
  font-size: var(--q-fs-6);
  font-weight: var(--q-fw-bold);
  color: var(--q-color-dark);
  background: none;
}

.q-counter__buttons {
  display: flex;
  flex-direction: column;
  gap: var(--q-space-1);
}

.q-counter__btn {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 24px;
  border: 1px solid var(--q-border-color);
  border-radius: var(--q-radius-sm);
  background-color: var(--q-color-white);
  color: var(--q-color-dark);
  cursor: pointer;
  font-size: var(--q-fs-1);
  transition: background-color 0.15s ease;
}

.q-counter__btn:hover {
  background-color: var(--q-color-light);
}