/*
 * Predajná stránka Portican.
 *
 * Statická, bez zostavovania a bez cudzích zdrojov. Beží priamo z Caddy
 * na hlavnej doméne, takže nezávisí od Vendure ani od databázy: keď
 * spadne obchod, predajná stránka stojí ďalej.
 *
 * Písmo je systémové. Web font by znamenal buď cudziu doménu (a súhlas
 * s cookies), alebo o 200 kB viac pri prvom načítaní.
 */

:root {
    --ink: #0c1f1b;
    --ink-soft: #3d534e;
    --ink-faint: #6b807b;
    --papier: #fbf9f6;
    --biela: #ffffff;
    --linka: #e6e0d8;
    --zelena: #0f5c4a;
    --zelena-tmava: #0a4438;
    --koral: #e07a5f;
    --koral-svetly: #fdf1ec;
    --zlta: #f2cc8f;

    --r: 14px;
    --r-s: 8px;
    --sirka: 1140px;
    --tien: 0 1px 2px rgba(12, 31, 27, .04), 0 8px 24px rgba(12, 31, 27, .06);
    --tien-vyssi: 0 2px 4px rgba(12, 31, 27, .05), 0 18px 48px rgba(12, 31, 27, .10);
}

* { box-sizing: border-box; }

html { scroll-behavior: smooth; }

body {
    margin: 0;
    background: var(--papier);
    color: var(--ink);
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
    font-size: 17px;
    line-height: 1.6;
    -webkit-font-smoothing: antialiased;
}

h1, h2, h3, h4 { line-height: 1.15; letter-spacing: -.02em; margin: 0 0 .5em; font-weight: 650; }
h1 { font-size: clamp(2.4rem, 5.5vw, 4rem); letter-spacing: -.035em; }
h2 { font-size: clamp(1.8rem, 3.6vw, 2.6rem); letter-spacing: -.03em; }
h3 { font-size: 1.18rem; }
p  { margin: 0 0 1em; }
a  { color: var(--zelena); }

.obal { max-width: var(--sirka); margin: 0 auto; padding: 0 24px; }
.uzky { max-width: 760px; }

section { padding: clamp(64px, 9vw, 120px) 0; }
/* Hlavička je prilepená, takže cieľ kotvy by skončil pod ňou a nadpis
   sekcie by bol neviditeľný. */
section[id] { scroll-margin-top: 84px; }
section + section { padding-top: 0; }

.nadpis-sekcie { max-width: 720px; margin-bottom: 48px; }
.nadpis-sekcie p { color: var(--ink-soft); font-size: 1.1rem; margin: 0; }

.stitok {
    display: inline-block;
    font-size: .74rem;
    font-weight: 600;
    letter-spacing: .09em;
    text-transform: uppercase;
    color: var(--zelena);
    background: rgba(15, 92, 74, .09);
    padding: 5px 11px;
    border-radius: 100px;
    margin-bottom: 18px;
}
.stitok.coskoro { color: #9a5b18; background: rgba(242, 204, 143, .34); }
.stitok.sluzba  { color: #a2452c; background: var(--koral-svetly); }

/* ── hlavička ─────────────────────────────────────────────── */
header {
    position: sticky; top: 0; z-index: 50;
    background: rgba(251, 249, 246, .86);
    backdrop-filter: blur(12px);
    border-bottom: 1px solid transparent;
    transition: border-color .2s;
}
header.pri-scrollovani { border-bottom-color: var(--linka); }
header .obal { display: flex; align-items: center; gap: 32px; height: 68px; }

.logo { font-weight: 700; font-size: 1.22rem; letter-spacing: -.03em; color: var(--ink); text-decoration: none; display: flex; align-items: center; gap: 9px; }
.logo-znak {
    width: 26px; height: 26px; border-radius: 7px; flex: none;
    background: linear-gradient(140deg, var(--zelena) 0%, #1c8069 70%, var(--zlta) 190%);
}

nav.hlavne { margin-left: auto; display: flex; gap: 26px; align-items: center; }
nav.hlavne a { color: var(--ink-soft); text-decoration: none; font-size: .95rem; font-weight: 500; }
nav.hlavne a:hover { color: var(--ink); }

/* Prepínač jazyka.
   Pri dvoch jazykoch stačil odkaz, pri desiatich by z hlavičky spravil
   pás skratiek. `<details>` je rozbaľovací zoznam bez kúska JavaScriptu;
   natívny `<select>` by sem nepatril, lebo vyzerá inak v každom
   prehliadači a my máme všade rovnaký tvar. */
.jazyky { position: relative; }
.jazyky summary {
    list-style: none; cursor: pointer; user-select: none;
    border: 1px solid var(--linka); border-radius: 100px;
    padding: 5px 12px; font-size: .84rem; font-weight: 600;
    letter-spacing: .04em; color: var(--ink-faint);
}
.jazyky summary::-webkit-details-marker { display: none; }
.jazyky summary::after { content: "▾"; margin-left: 6px; font-size: .8em; }
.jazyky summary:hover { border-color: var(--ink-faint); color: var(--ink); }
.jazyky[open] summary { border-color: var(--ink-faint); color: var(--ink); }
.jazyky-panel {
    position: absolute; right: 0; top: calc(100% + 8px); z-index: 30;
    min-width: 190px; padding: 6px;
    background: var(--biela); border: 1px solid var(--linka);
    border-radius: var(--r-s); box-shadow: var(--tien-vyssi);
    display: grid; gap: 1px;
}
.jazyky-panel a {
    display: block; padding: 8px 12px; border-radius: var(--r-s);
    font-size: .93rem; color: var(--ink-soft); text-decoration: none;
    white-space: nowrap;
}
.jazyky-panel a:hover { background: var(--papier); color: var(--ink); }
/* Jazyk, v ktorom stránka práve je. Bez toho sa v zozname desiatich
   položiek nedá zistiť, kde človek stojí. */
.jazyky-panel a[aria-current] { color: var(--zelena); font-weight: 600; }
.jazyky-panel a[aria-current]::after { content: " ✓"; }

/* V mobilnom páse hlavička odkazy skrýva, tak sa prepínač musí ukázať
   inak: ako posledná položka pásu, rozbalená nadol pod ním. */
@media (max-width: 900px) {
    nav.hlavne .jazyky { display: none; }
    .mobilne-odkazy .jazyky { display: block; }
    .mobilne-odkazy .jazyky-panel { right: auto; left: 0; }
}

/* Na mobile sa odkazy nezmestia vedľa seba, ale tlačidlo zmiznúť nesmie:
   je to jediná výzva k akcii, ktorá je vidieť po celý čas listovania.
   Odkazy sa presunú do pásu pod hlavičkou, ktorý sa dá posúvať prstom. */
.mobilne-odkazy { display: none; }
@media (max-width: 900px) {
    header .obal { gap: 14px; }
    nav.hlavne { gap: 0; }
    nav.hlavne a:not(.tlacidlo) { display: none; }
    nav.hlavne .tlacidlo { padding: 10px 17px; font-size: .92rem; }
    .mobilne-odkazy {
        display: flex; gap: 20px;
        overflow-x: auto; scrollbar-width: none;
        padding: 0 24px 11px;
        /* 🔴 TVRDÝ REZ VYZERÁ AKO CHYBA. Pás sa posúva prstom, ale na
           kraji obrazovky sa posledný odkaz iba useknul uprostred slova
           a nič nenaznačovalo, že vpravo niečo je. Zmiznutie do stratena
           je jediný spôsob, ako to povedať bez ďalšieho prvku. */
        -webkit-mask-image: linear-gradient(to right, #000 calc(100% - 30px), transparent);
        mask-image: linear-gradient(to right, #000 calc(100% - 30px), transparent);
        max-width: var(--sirka); margin: 0 auto;
        -webkit-overflow-scrolling: touch;
    }
    .mobilne-odkazy::-webkit-scrollbar { display: none; }
    .mobilne-odkazy a {
        color: var(--ink-soft); text-decoration: none;
        font-size: .9rem; font-weight: 500; white-space: nowrap;
    }
    /* Hlavička je o pás vyššia, kotvy musia odskočiť nižšie. */
    section[id] { scroll-margin-top: 116px; }
}

.tlacidlo {
    display: inline-flex; align-items: center; justify-content: center; gap: 8px;
    padding: 12px 22px; border-radius: 100px;
    font-weight: 600; font-size: .97rem; text-decoration: none;
    border: 1px solid transparent; cursor: pointer; white-space: nowrap;
    transition: transform .12s ease, box-shadow .2s ease, background .2s;
}
.tlacidlo:active { transform: translateY(1px); }
.tlacidlo.hlavne { background: var(--zelena); color: #fff; box-shadow: 0 6px 18px rgba(15, 92, 74, .22); }
.tlacidlo.hlavne:hover { background: var(--zelena-tmava); }
.tlacidlo.vedlajsie { background: var(--biela); color: var(--ink); border-color: var(--linka); }
.tlacidlo.vedlajsie:hover { border-color: var(--ink-faint); }
.tlacidlo.velke { padding: 15px 30px; font-size: 1.03rem; }

/* ── hero ─────────────────────────────────────────────────── */
.hero { padding-top: clamp(56px, 8vw, 96px); position: relative; overflow: hidden; }
.hero::before {
    content: ""; position: absolute; inset: -20% -10% auto -10%; height: 620px; z-index: -1;
    background:
        radial-gradient(52% 60% at 18% 8%, rgba(15, 92, 74, .10), transparent 62%),
        radial-gradient(40% 50% at 88% 0%, rgba(224, 122, 95, .13), transparent 60%);
}
.hero h1 { max-width: 15ch; }
.hero .perex { font-size: clamp(1.08rem, 1.7vw, 1.32rem); color: var(--ink-soft); max-width: 60ch; margin-bottom: 32px; }
.hero-akcie { display: flex; gap: 12px; flex-wrap: wrap; align-items: center; }
.hero-poznamka { color: var(--ink-faint); font-size: .92rem; margin: 18px 0 0; }

/* Sľuby pod hero. Bol tu pás veľkých čísel, lenže číslo z katalógu
   cudzieho obchodu nekúpi nikoho: kupujúci nerieši, koľko produktov mal
   niekto iný, ale čo dostane on. Preto štyri dôvody na prenájom, a každý
   z nich má krytie nižšie na stránke alebo v obchodných podmienkach. */
.slubky {
    list-style: none; margin: 52px 0 0; padding: 30px 0 0;
    border-top: 1px solid var(--linka);
    display: grid; grid-template-columns: repeat(4, 1fr); gap: 22px 34px;
}
.slubky li { font-size: .93rem; color: var(--ink-soft); line-height: 1.5; }
.slubky b {
    display: block; margin-bottom: 4px;
    color: var(--ink); font-size: 1.02rem; font-weight: 620; letter-spacing: -.01em;
}
.slubky b::before { content: "✓"; color: var(--zelena); font-weight: 700; margin-right: 8px; }
@media (max-width: 980px) { .slubky { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 560px) { .slubky { grid-template-columns: 1fr; gap: 18px; } }

/* ── mriežky ──────────────────────────────────────────────── */
.mriezka { display: grid; gap: 20px; }
.mriezka.dva  { grid-template-columns: repeat(2, 1fr); }
.mriezka.tri  { grid-template-columns: repeat(3, 1fr); }
.mriezka.styri{ grid-template-columns: repeat(4, 1fr); }
@media (max-width: 980px) { .mriezka.tri, .mriezka.styri { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 680px) { .mriezka.dva, .mriezka.tri, .mriezka.styri { grid-template-columns: 1fr; } }

.karta {
    background: var(--biela);
    border: 1px solid var(--linka);
    border-radius: var(--r);
    padding: 26px;
    box-shadow: var(--tien);
}
.karta h3 { margin-bottom: .4em; }
.karta p { color: var(--ink-soft); font-size: .96rem; margin: 0; }
.karta .ikona { font-size: 1.5rem; line-height: 1; margin-bottom: 14px; display: block; }

.karta.zvyraznena { border-color: rgba(15, 92, 74, .35); box-shadow: var(--tien-vyssi); }

/* ── funkcie ──────────────────────────────────────────────── */
.funkcia { display: flex; gap: 14px; padding: 18px 0; border-bottom: 1px solid var(--linka); }
.funkcia:last-child { border-bottom: 0; }
.funkcia .znak { flex: none; width: 22px; height: 22px; border-radius: 50%; display: grid; place-items: center; font-size: .72rem; font-weight: 700; margin-top: 3px; }
.funkcia .znak.je   { background: rgba(15, 92, 74, .12); color: var(--zelena); }
.funkcia .znak.bude { background: rgba(242, 204, 143, .45); color: #8a5410; }
.funkcia h4 { margin: 0 0 3px; font-size: 1.02rem; font-weight: 620; }
.funkcia p  { margin: 0; color: var(--ink-soft); font-size: .94rem; }

/* ── ukážky šablón ────────────────────────────────────────── */
.prepinac { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 28px; }
.prepinac button {
    font: inherit; font-size: .93rem; font-weight: 550;
    padding: 9px 17px; border-radius: 100px; cursor: pointer;
    background: var(--biela); border: 1px solid var(--linka); color: var(--ink-soft);
    transition: all .15s;
}
.prepinac button:hover { border-color: var(--ink-faint); color: var(--ink); }
.prepinac button[aria-selected="true"] { background: var(--ink); border-color: var(--ink); color: #fff; }

.ukazka { display: none; }
.ukazka[data-aktivna] { display: block; }

.okno {
    border: 1px solid var(--linka); border-radius: var(--r); overflow: hidden;
    background: var(--biela); box-shadow: var(--tien-vyssi);
}
.okno-lista {
    display: flex; align-items: center; gap: 7px;
    padding: 11px 15px; border-bottom: 1px solid var(--linka); background: #f4f1ec;
}
.okno-lista i { width: 10px; height: 10px; border-radius: 50%; background: #d9d2c8; display: block; }
.okno-adresa {
    margin-left: 10px; font-size: .78rem; color: var(--ink-faint);
    background: var(--biela); border-radius: 100px; padding: 3px 12px; font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
}

/* obchod v ukážke, farby dodá trieda odvetvia */
.obchod { --o-primar: #0f5c4a; --o-akcent: #eef4f0; --o-pismo: inherit; }
.obchod-hlavicka { display: flex; align-items: center; gap: 18px; padding: 16px 22px; border-bottom: 1px solid var(--linka); }
.obchod-logo { font-weight: 700; letter-spacing: -.02em; color: var(--o-primar); font-size: 1.05rem; font-family: var(--o-pismo); }
.obchod-menu { display: flex; gap: 15px; font-size: .82rem; color: var(--ink-soft); flex-wrap: wrap; }
.obchod-kosik { margin-left: auto; flex: none; font-size: .8rem; background: var(--o-primar); color: #fff; padding: 5px 13px; border-radius: 100px; white-space: nowrap; }

/* Na mobile sa menu ukážky lámalo na päť riadkov a hlavička obchodu bola
   vyššia než celý jeho obsah. Skutočný obchod na tejto šírke kategórie
   posúva do strany, ukážka má vyzerať rovnako. */
@media (max-width: 680px) {
    .obchod-hlavicka { gap: 12px; padding: 13px 16px; }
    .obchod-logo { flex: none; }
    .obchod-menu {
        flex: 1 1 auto; min-width: 0;
        flex-wrap: nowrap; overflow-x: auto; scrollbar-width: none; gap: 13px;
    }
    .obchod-menu::-webkit-scrollbar { display: none; }
    .obchod-menu span { white-space: nowrap; }
    .obchod-hero { padding: 26px 16px; }
    .obchod-produkty { padding: 16px; gap: 12px; }
}
.obchod-hero { padding: 34px 22px; background: var(--o-akcent); }
.obchod-hero h4 { font-size: 1.5rem; margin: 0 0 6px; letter-spacing: -.02em; font-family: var(--o-pismo); }
.obchod-hero p { margin: 0; color: var(--ink-soft); font-size: .9rem; }
.obchod-produkty { display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; padding: 22px; }
@media (max-width: 680px) { .obchod-produkty { grid-template-columns: repeat(2, 1fr); } }
.produkt-obrazok { aspect-ratio: 1; border-radius: var(--r-s); display: grid; place-items: center; font-size: clamp(2.4rem, 4.5vw, 3.4rem); line-height: 1; }
.produkt-nazov { font-size: .8rem; margin: 8px 0 2px; line-height: 1.3; }
.produkt-cena { font-size: .82rem; font-weight: 650; color: var(--o-primar); }

.popis-sablony { margin-top: 20px; display: flex; gap: 26px; flex-wrap: wrap; }
.popis-sablony div { flex: 1 1 200px; }
.popis-sablony h4 { margin: 0 0 4px; font-size: .95rem; }
.popis-sablony p { margin: 0; font-size: .89rem; color: var(--ink-soft); }

/* ── porovnanie ───────────────────────────────────────────── */
.tabulka-obal { overflow-x: auto; border: 1px solid var(--linka); border-radius: var(--r); background: var(--biela); }
table { border-collapse: separate; border-spacing: 0; width: 100%; min-width: 720px; font-size: .93rem; }

/* 🔴 NA MOBILE TABUĽKA PRESTÁVA BYŤ TABUĽKOU. Päť stĺpcov sa na
   štyristo bodov nezmestí a posúvanie do strany to nezachráni: prilepený
   prvý stĺpec zabral 168 bodov zo 390 a zo zvyšku ostali z tretieho
   stĺpca jednotlivé písmená pod sebou. Riadok sa preto rozpadne na kartu:
   hore otázka, pod ňou odpoveď každej platformy so svojím menom.
   Meno berie bunka z `data-stlpec`, lebo hlavička je vtedy skrytá. */
.tabulka-posun { display: none; }
@media (max-width: 760px) {
    .tabulka-obal { overflow-x: visible; border: 0; background: transparent; border-radius: 0; }
    table { display: block; min-width: 0; font-size: .95rem; }
    thead { display: none; }
    tbody, tr, td { display: block; }
    tr {
        background: var(--biela); border: 1px solid var(--linka);
        border-radius: var(--r); margin-bottom: 14px; padding: 6px 0;
    }
    td { border-bottom: 0; padding: 9px 16px; }
    /* Otázka je nadpis karty, nie ďalší riadok medzi odpoveďami. */
    td:first-child {
        font-size: 1.04rem; padding: 12px 16px 8px;
        border-bottom: 1px solid var(--linka); margin-bottom: 6px;
    }
    /* 🔴 MENOVKA IDE NAD HODNOTU, NIE VEDĽA NEJ. Dvojstĺpcová mriežka
       vyzerala úhľadnejšie, ale rozbila obsah: bunka s tučným začiatkom
       má viac potomkov a mriežka z každého spravila vlastnú bunku, takže
       „Custom built" stálo vedľa menovky a zvyšok vety pod ňou. Navyše
       „WOOCOMMERCE" sa do stĺpca nezmestilo a dotýkalo sa textu; v
       desiatich jazykoch by to bola lotéria. */
    td:not(:first-child)::before {
        content: attr(data-stlpec);
        display: block; margin-bottom: 3px;
        color: var(--ink-faint); font-size: .74rem; font-weight: 600;
        letter-spacing: .04em; text-transform: uppercase;
    }
    td.nase { background: rgba(15, 92, 74, .05); border-radius: var(--r-s); margin: 0 6px; }
}
th, td { padding: 14px 16px; text-align: left; border-bottom: 1px solid var(--linka); vertical-align: top; }
thead th { background: #f4f1ec; font-weight: 620; font-size: .84rem; letter-spacing: .02em; }
tbody tr:last-child td { border-bottom: 0; }
td.nase { background: rgba(15, 92, 74, .045); font-weight: 550; }
th.nase { background: rgba(15, 92, 74, .12); color: var(--zelena); }
.ano { color: var(--zelena); font-weight: 700; }
.nie { color: #b4544a; }
.ciastocne { color: #9a5b18; }

/* ── cenník ───────────────────────────────────────────────── */
.cennik { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; align-items: start; }
@media (max-width: 900px) { .cennik { grid-template-columns: 1fr; } }
.tarifa { background: var(--biela); border: 1px solid var(--linka); border-radius: var(--r); padding: 28px; box-shadow: var(--tien); }
.tarifa.odporucana { border-color: var(--zelena); box-shadow: var(--tien-vyssi); position: relative; }
/* Text odznaku dodáva stránka, nie štýl. Napevno tu bola slovenská veta,
   takže na anglickom cenníku svietilo „Najčastejšia voľba". */
.tarifa.odporucana::after {
    content: attr(data-znacka); position: absolute; top: -11px; left: 28px;
    background: var(--zelena); color: #fff; font-size: .72rem; font-weight: 600;
    padding: 3px 12px; border-radius: 100px; letter-spacing: .03em;
}
.cena { font-size: 2.3rem; font-weight: 680; letter-spacing: -.03em; margin: 10px 0 2px; }
.cena small { font-size: .95rem; font-weight: 500; color: var(--ink-faint); letter-spacing: 0; }
/* Cena vyjadrená slovami, nie číslom. V plnej veľkosti sa „Vyžiadať ponuku"
   láme do dvoch riadkov a karta prestane s ostatnými držať rytmus. */
.cena.slovom { font-size: 1.5rem; letter-spacing: -.02em; line-height: 1.25; margin-top: 14px; }
.tarifa ul { list-style: none; padding: 0; margin: 20px 0 24px; }
.tarifa li { padding: 7px 0 7px 26px; position: relative; font-size: .94rem; color: var(--ink-soft); }
.tarifa li::before { content: "✓"; position: absolute; left: 0; color: var(--zelena); font-weight: 700; }

.cennik-nadpis {
    display: flex; align-items: center; gap: 14px;
    margin: 40px 0 18px; font-size: 1.12rem; font-weight: 620;
}
.cennik-nadpis:first-of-type { margin-top: 0; }
.cennik-nadpis::after {
    content: ""; flex: 1; height: 1px; background: var(--linka);
}
.cennik-nadpis small {
    font-size: .9rem; font-weight: 500; color: var(--ink-faint);
}

.upozornenie {
    background: rgba(242, 204, 143, .22);
    border: 1px solid rgba(242, 204, 143, .8);
    border-radius: var(--r-s);
    padding: 16px 18px; font-size: .92rem; color: #6d4a12; margin-top: 26px;
}
.upozornenie b { color: #4d340b; }

/* ── faq ──────────────────────────────────────────────────── */
/* Viazané na sekciu, nie na značku `details`. Bez toho chytalo pravidlo
   aj prepínač jazykov v hlavičke: dostal biele pozadie, rám a plusko
   namiesto šípky, hoci s otázkami nemá nič spoločné. */
#faq details {
    background: var(--biela); border: 1px solid var(--linka);
    border-radius: var(--r-s); padding: 16px 20px; margin-bottom: 10px;
}
#faq details[open] { box-shadow: var(--tien); }
#faq summary { cursor: pointer; font-weight: 580; list-style: none; display: flex; justify-content: space-between; gap: 16px; }
#faq summary::-webkit-details-marker { display: none; }
#faq summary::after { content: "+"; color: var(--ink-faint); font-size: 1.3rem; line-height: 1; flex: none; }
#faq details[open] summary::after { content: "−"; }
#faq details p { margin: 12px 0 0; color: var(--ink-soft); font-size: .95rem; }

/* ── výzva a päta ─────────────────────────────────────────── */
.vyzva {
    background: var(--ink); color: #e9f0ed; border-radius: 22px;
    padding: clamp(40px, 6vw, 68px); text-align: center;
    background-image: radial-gradient(60% 80% at 50% -10%, rgba(15, 92, 74, .55), transparent 65%);
}
.vyzva h2 { color: #fff; }
.vyzva p { color: #a9bcb6; max-width: 54ch; margin: 0 auto 28px; }
.vyzva .tlacidlo.vedlajsie { background: transparent; color: #fff; border-color: rgba(255, 255, 255, .3); }

/* Bez margin-top: sekcia nad pätičkou má vlastné spodné odsadenie a keď
   sa obe sčítali, ostal medzi výzvou a pätičkou pás prázdna cez pol
   obrazovky. */
footer { border-top: 1px solid var(--linka); padding: 44px 0 60px; }
.footer-obsah { display: flex; gap: 40px; flex-wrap: wrap; justify-content: space-between; }
footer p, footer a { font-size: .9rem; color: var(--ink-faint); }
footer a { text-decoration: none; }
footer a:hover { color: var(--ink); }
/* 🔴 VEĽKOSŤ PATRÍ NA KONTAJNER, NIE NA ODKAZY. Odvolanie súhlasu je
   `button` s `font: inherit`, takže si berie písmo rodiča; kým veľkosť
   sedela len na `footer a`, tlačidlo dedilo základné písmo stránky
   a v päte stálo väčšie a tmavšie než odkazy vedľa neho. Pridať ho do
   toho zoznamu nestačí: `.odkaz-ako-text` je v súbore nižšie a
   `font: inherit` by ho aj tak prebilo.
   Prst nie je kurzor: dvadsaťtri bodov vysoký odkaz sa na telefóne trafí
   ťažko, preto majú odkazy v päte aj vlastnú výšku. */
.footer-odkazy {
    display: flex; gap: 8px 22px; flex-wrap: wrap; align-items: center;
    font-size: .9rem; color: var(--ink-faint);
}
.footer-odkazy a, .footer-odkazy button { display: inline-flex; align-items: center; min-height: 34px; }

@media (prefers-reduced-motion: reduce) {
    html { scroll-behavior: auto; }
    * { transition: none !important; }
}

/* ── registrácia ──────────────────────────────────────────────
 *
 * Formulár na samostatnej stránke, nie v modálnom okne. Vypĺňa sa
 * z mobilu aj z počítača, má dvanásť polí a zopár z nich si človek
 * musí niekde nájsť (IČO, DIČ). Okno, ktoré sa dá omylom zavrieť,
 * by znamenalo vyplňovať to znova.
 */
.uzky-blok { padding: clamp(48px, 7vw, 90px) 0; }
.uzky-blok h1 { font-size: clamp(1.9rem, 4vw, 2.8rem); }

form fieldset {
    border: 0;
    border-top: 1px solid var(--linka);
    padding: 26px 0 0;
    margin: 34px 0 0;
}
form legend {
    font-size: .78rem;
    font-weight: 600;
    letter-spacing: .09em;
    text-transform: uppercase;
    color: var(--ink-faint);
    padding: 0 10px 0 0;
}

form label {
    display: block;
    font-weight: 550;
    font-size: .95rem;
    margin: 18px 0 6px;
}
.nepovinne {
    font-weight: 400;
    font-size: .82rem;
    color: var(--ink-faint);
}

form input,
form select {
    width: 100%;
    font: inherit;
    font-size: 1rem;
    padding: 11px 13px;
    border: 1px solid var(--linka);
    border-radius: var(--r-s);
    background: var(--biela);
    color: var(--ink);
}
form input:focus,
form select:focus {
    outline: 2px solid var(--zelena);
    outline-offset: 1px;
    border-color: var(--zelena);
}
/* Chybné pole je označené aj farbou aj textom pri ňom. Samotná farba
   nestačí: kto ju nerozozná, nedozvie sa, čo má opraviť. */
form input.zle,
form select.zle { border-color: #b4544a; background: #fdf6f5; }

form small {
    display: block;
    font-size: .84rem;
    color: var(--ink-faint);
    margin-top: 6px;
}

.chyba { display: none; font-size: .88rem; color: #b4544a; margin: 6px 0 0; }
.chyba.vidno { display: block; }
.chyba.celkova { margin-top: 24px; font-size: .95rem; }

/* Adresa obchodu s pevnou príponou. Bez nej ľudia píšu celú doménu
   aj s https a formulár ich odmietne za niečo, čo nemali tušiť. */
.adresa { display: flex; align-items: stretch; }
.adresa input {
    border-top-right-radius: 0;
    border-bottom-right-radius: 0;
    border-right: 0;
}
.pripona {
    display: flex;
    align-items: center;
    padding: 0 13px;
    border: 1px solid var(--linka);
    border-left: 0;
    border-top-right-radius: var(--r-s);
    border-bottom-right-radius: var(--r-s);
    background: var(--papier);
    color: var(--ink-faint);
    font-size: .95rem;
    white-space: nowrap;
}

.dvojica { display: grid; grid-template-columns: 1fr 1fr; gap: 0 18px; }
@media (max-width: 520px) { .dvojica { grid-template-columns: 1fr; } }

form button[type="submit"] { margin-top: 30px; }
form button[disabled] { opacity: .6; cursor: default; }

.poznamka {
    font-size: .9rem;
    color: var(--ink-faint);
    margin-top: 14px;
    max-width: 62ch;
}

/* ─────────────────────────────────────────────────────────────────────
   Právne stránky a súhlas s cookies.

   Dlhý text sa číta inak než predajná stránka: úzky stĺpec, väčšie
   riadkovanie, nadpisy, ktoré sa dajú preskočiť očami. Bez toho je
   dokument formálne na webe a prakticky neprečítateľný, čo je presne
   ten stav, pre ktorý Meta účet zamietla.
   ───────────────────────────────────────────────────────────────────── */

.pravna-stranka {
    padding: 56px 0 72px;
}

.obal.uzky {
    max-width: 760px;
}

.pravna-stranka h1 {
    font-size: 2.1rem;
    letter-spacing: -.02em;
    margin-bottom: 6px;
}

.pravna-stranka .platnost {
    color: var(--ink-faint);
    font-size: .9rem;
    margin-bottom: 28px;
}

.pravna-stranka .uvod {
    font-size: 1.05rem;
    color: var(--ink-soft);
    line-height: 1.7;
    padding: 16px 18px;
    background: var(--papier);
    border: 1px solid var(--linka);
    border-radius: var(--r);
    margin-bottom: 36px;
}

.pravna-stranka h2 {
    font-size: 1.25rem;
    margin: 36px 0 12px;
    letter-spacing: -.01em;
}

.pravna-stranka h3 {
    font-size: 1.02rem;
    margin: 24px 0 8px;
    color: var(--ink-soft);
}

.pravna-stranka p,
.pravna-stranka li {
    line-height: 1.75;
    color: var(--ink-soft);
}

.pravna-stranka p {
    margin-bottom: 14px;
}

.pravna-stranka ul {
    margin: 0 0 16px 20px;
    list-style: disc;
}

.pravna-stranka li {
    margin-bottom: 8px;
}

.pravna-stranka a {
    color: var(--zelena);
    text-decoration: underline;
    text-underline-offset: 2px;
}

.pravna-stranka .poznamka {
    font-size: .92rem;
    color: var(--ink-faint);
}

/* Tabuľka údajov. Dve stĺpce, na mobile pod sebou: účel a doba sa
   nedajú čítať, keď sa text zúži na tri slová na riadok. */
.udaje-tabulka {
    width: 100%;
    border-collapse: collapse;
    margin: 0 0 20px;
    font-size: .95rem;
}

.udaje-tabulka th,
.udaje-tabulka td {
    text-align: left;
    vertical-align: top;
    padding: 10px 12px;
    border-bottom: 1px solid var(--linka);
    line-height: 1.6;
}

.udaje-tabulka th {
    width: 32%;
    font-weight: 600;
    color: var(--ink);
}

.udaje-tabulka td {
    color: var(--ink-soft);
}

@media (max-width: 560px) {
    .udaje-tabulka th,
    .udaje-tabulka td {
        display: block;
        width: auto;
        border-bottom: none;
        padding: 4px 0;
    }
    .udaje-tabulka td {
        padding-bottom: 14px;
        border-bottom: 1px solid var(--linka);
    }
}

/* Údaje firmy na kontakte. Popis a hodnota vedľa seba, aby sa dali
   prepísať do zmluvy bez hľadania. */
.udaje-firmy {
    display: grid;
    grid-template-columns: 200px 1fr;
    gap: 10px 18px;
    margin: 0 0 24px;
    font-size: .97rem;
}

.udaje-firmy dt {
    color: var(--ink-faint);
}

.udaje-firmy dd {
    margin: 0;
    color: var(--ink);
    font-weight: 500;
}

.kontakt-zoznam {
    list-style: none;
    margin: 0 0 20px;
    padding: 0;
}

.kontakt-zoznam li {
    display: flex;
    flex-wrap: wrap;
    gap: 4px 14px;
    padding: 10px 0;
    border-bottom: 1px solid var(--linka);
}

.kontakt-popis {
    min-width: 200px;
    color: var(--ink-faint);
}

@media (max-width: 560px) {
    .udaje-firmy {
        grid-template-columns: 1fr;
        gap: 2px;
    }
    .udaje-firmy dt {
        margin-top: 10px;
    }
}

/* Lišta súhlasu. Dole, cez celú šírku, nad obsahom; nie uprostred
   obrazovky. Modálne okno na prvej návšteve je nátlak, nie voľba. */
.suhlas-lista {
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 100;
    background: var(--biela);
    border-top: 1px solid var(--linka);
    box-shadow: 0 -8px 30px rgba(12, 31, 27, .08);
    padding: 16px 0 calc(16px + env(safe-area-inset-bottom));
}

.suhlas-obsah {
    max-width: 1100px;
    margin: 0 auto;
    padding: 0 20px;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 12px 24px;
}

.suhlas-text {
    flex: 1 1 320px;
    margin: 0;
    font-size: .92rem;
    line-height: 1.6;
    color: var(--ink-soft);
}

.suhlas-volby {
    display: flex;
    flex-wrap: wrap;
    gap: 14px;
    font-size: .9rem;
    color: var(--ink-soft);
}

.suhlas-volby label {
    display: inline-flex;
    align-items: center;
    gap: 6px;
}

.suhlas-tlacidla {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}

.tlacidlo.male {
    padding: 4px 10px;
    font-size: .85rem;
}

/* 🔴 LIŠTA SÚHLASU ROZTIAHLA CELÚ STRÁNKU. Text v nej má
   `flex: 1 1 320px` a vedľa neho stoja voľby a tlačidlá; na štyristo
   bodov sa to do riadka nezmestí a prehliadač namiesto zalomenia
   rozšíril výrez na 420, takže sa zmenšila celá stránka aj s hlavičkou.
   Vidí to každý návštevník, lebo lišta je prvé, čo sa ukáže.
   Na úzkej obrazovke preto stojí všetko pod sebou a tlačidlá sú na šírku,
   čo sa na telefóne aj lepšie trafí. */
@media (max-width: 560px) {
    .suhlas-obsah { flex-direction: column; align-items: stretch; gap: 12px; }
    .suhlas-text { flex: 0 0 auto; min-width: 0; }
    .suhlas-tlacidla .tlacidlo { flex: 1 1 auto; justify-content: center; }
}

/* Tlačidlo, ktoré má vyzerať ako odkaz. Odvolanie súhlasu musí byť medzi
   ostatnými odkazmi pätičky, ale ovládací prvok to je, nie navigácia. */
.odkaz-ako-text {
    background: none;
    border: 0;
    padding: 0;
    font: inherit;
    color: inherit;
    cursor: pointer;
    text-align: left;
}

.odkaz-ako-text:hover {
    color: var(--ink);
}

/* Fieldset sa sám nezmenší: prehliadač mu dáva
   `min-inline-size: min-content`, takže formulár s mriežkou vnútri sa
   nedá zúžiť pod šírku najširšieho obsahu a namiesto zalomenia roztiahne
   stránku. Tu to zatiaľ nič nelámalo, ale je to pasca, ktorú `overflow`
   ani `max-width` nechytia: nejde o pretečenie, prvok len odmieta byť
   užší. */
fieldset { min-width: 0; }

/* Voľba web / e-shop v registrácii. Dve karty, nie select: je to prvé
   a najdôležitejšie rozhodnutie a musí byť vidieť obe možnosti naraz. */
.stitok-pola { display: block; font-weight: 600; margin: 18px 0 8px; }
.volba-typu { display: grid; gap: 10px; grid-template-columns: 1fr 1fr; }
@media (max-width: 560px) { .volba-typu { grid-template-columns: 1fr; } }
.typ-karta { display: block; cursor: pointer; position: relative; }
/* 🔴 SKRYTÝ PREPÍNAČ ROZTIAHOL CELÚ STRÁNKU. Je `position: absolute`, ale
   karta nebola ukotvená, takže sa počítal voči celému dokumentu a bez
   zadanej šírky sa roztiahol cez neho: na telefóne z toho bol výrez 420
   namiesto 390 a stránka sa aj s hlavičkou zmenšila, na tablete dokonca
   dokument 1162 pri okne 768. `opacity: 0` prvok neschová z rozloženia,
   len ho spraví neviditeľným, takže to nebolo na čom vidieť.
   Kotva na karte a vlastný rozmer to držia; prepínač zostáva v strome
   aj zameriavateľný, takže `:checked` aj klávesnica fungujú ďalej. */
.typ-karta input {
    position: absolute; opacity: 0;
    width: 1px; height: 1px; margin: 0; inset: 0 auto auto 0;
}
.typ-karta .typ-telo {
    display: block; padding: 14px 16px; border: 1px solid #d8d3cb;
    border-radius: 10px; background: #fff; transition: border-color .15s, box-shadow .15s;
}
.typ-karta input:checked + .typ-telo {
    border-color: var(--zelena, #0f5c4a);
    box-shadow: 0 0 0 2px rgba(15, 92, 74, .18);
}
.typ-karta input:focus-visible + .typ-telo { outline: 2px solid var(--zelena, #0f5c4a); outline-offset: 2px; }
.typ-karta strong { display: block; margin-bottom: 2px; }
.typ-karta small { color: #5c6660; line-height: 1.45; display: block; }
