// ============================================================
// Left TOC + Right sidebar panels
// ============================================================

const TOC_ITEMS = [
  { id: 'art-1', num: 'I',    title: 'Zmluvné strany' },
  { id: 'art-2', num: 'II',   title: 'Predmet zmluvy' },
  { id: 'art-3', num: 'III',  title: 'Kúpna cena a splatnosť' },
  { id: 'art-4', num: 'IV',   title: 'Odovzdanie predmetu kúpy' },
  { id: 'art-5', num: 'V',    title: 'Prechod vlastníctva' },
  { id: 'art-6', num: 'VI',   title: 'Povinnosti predávajúceho' },
  { id: 'art-7', num: 'VII',  title: 'Prepis vozidla a vady' },
  { id: 'art-8', num: 'VIII', title: 'Záverečné ustanovenia' },
];

const TOC = ({ active, setActive, optionals, doctype }) => (
  <aside className="toc" aria-label="Obsah zmluvy">
    <div className="toc-title">Obsah zmluvy</div>
    <ol>
      {TOC_ITEMS.map(item => (
        <li key={item.id}>
          <a
            href={`#${item.id}`}
            className={active === item.id ? 'active' : ''}
            onClick={(e) => { setActive(item.id); }}
          >
            <span className="toc-num">Čl. {item.num}</span>
            <span>{item.title}</span>
          </a>
        </li>
      ))}
    </ol>
    <div className="toc-divider"></div>
    <div className="toc-meta">
      <div><strong>Posledná aktualizácia</strong><br />2. 5. 2026</div>
      <div><strong>Autor</strong><br />JUDr. Milan Ficek</div>
      <div><strong>Editorial review</strong><br />Ficek &amp; Partners</div>
    </div>
  </aside>
);

window.TOC = TOC;
window.TOC_ITEMS = TOC_ITEMS;


// ---------- Voliteľné klauzuly v pravom paneli ----------
const getOptionalClauses = () => [
  { id: 'c-protocol', title: 'Preberací protokol (bod 4.3)',    sub: 'Spísanie samostatného protokolu o stave vozidla pri odovzdaní' },
  { id: 'c-warranty', title: 'Vyhlásenie kupujúceho (bod 7.4)', sub: 'Potvrdenie o oboznámení sa so stavom vozidla pred podpisom' },
  { id: 'c-penalty',  title: 'Zmluvná pokuta pri omeškaní',     sub: '0,05 % z dlžnej sumy denne pri omeškaní s platbou kúpnej ceny' },
];

const Tips = ({ activeArticle, optionals, activeTipKey, clearTipKey, doctype }) => {
  const isPripoj = doctype === 'pripojne';
  const isMoto = doctype === 'motorka';

  const TIPS = {
    // ============================================================
    // Článkové (default) tipy
    // ============================================================
    'art-1': { head: 'Tip advokáta · Čl. I', body: <>Pri vozidle v <strong>bezpodielovom spoluvlastníctve manželov (BSM)</strong> musia zmluvu podpísať obaja manželia, inak je relatívne neplatná podľa § 145 OZ. Pri právnickej osobe vždy uveďte konajúcu osobu podľa výpisu z obchodného registra a pripojte e-mailové aj telefónne kontakty — pre prípadné reklamácie a doručovanie.</>, cite: 'OZ § 145, § 40a; § 13 ObchZ' },
    'art-2': { head: 'Tip advokáta · Čl. II', body: <>Predmet kúpy musí byť <strong>jednoznačne identifikovaný</strong> — bez VIN, EVČ a roku výroby je zmluva spravidla neurčitá v zmysle § 37 ods. 1 OZ. Skontrolujte VIN priamo na karosérii vozidla (typický štítok pri čelnom skle a v motorovom priestore) — musí súhlasiť s VIN v technickom preukaze. <strong>Pred podpisom</strong> overte vozidlo v registri záložných práv, vo verejne dostupnom registri kradnutých áut a v zozname vozidiel s tachometrom upraveným nadol.</>, cite: 'OZ § 37, § 588' },
    'art-3': { head: 'Tip advokáta · Čl. III', body: <>Kúpna cena musí byť <strong>určitá</strong>, slovne aj číselne. Pri platbe v hotovosti pamätajte na <strong>zákon č. 394/2012 Z. z.</strong> — všeobecný limit je <strong>5 000 €</strong>, pri platbe medzi fyzickými osobami, ktoré nie sú podnikateľmi, <strong>15 000 €</strong>. Súvisiace hotovostné platby z jedného právneho vzťahu sa sčítajú. Pri prevode na účet vždy uveďte VIN ako variabilný symbol — uľahčí to dokazovanie.</>, cite: 'Zák. č. 394/2012 Z. z. §§ 4, 8, 12; OZ § 588' },
    'art-4': { head: 'Tip advokáta · Čl. IV', body: <>Pri odovzdaní auta na inom mieste a čase odporúčame <strong>preberací protokol</strong> s fotodokumentáciou (interiér, exteriér, motorový priestor, stav tachometra) a so zoznamom kľúčov a dokladov. Pri spore o vady alebo poškodenie pri odovzdaní je protokol s fotodôkazmi rozhodujúci dôkaz. Bez neho je dôkazná pozícia oboch strán slabá.</>, cite: 'OZ § 588 a nasl.' },
    'art-5': { head: 'Tip advokáta · Čl. V', body: <>Pri kúpe na splátky odporúčame variant <strong>„úplným zaplatením kúpnej ceny"</strong> — predávajúci ostáva vlastníkom, kým kupujúci nezaplatí. Pri jednorazovej platbe stačí variant „odovzdaním". Variant „prepisom na DI" je <strong>právne najslabší</strong> — prevod držby v evidencii nie je hmotnoprávnym úkonom prevodu vlastníctva podľa OZ.</>, cite: 'OZ § 132 ods. 1, § 133 ods. 1' },
    'art-6': { head: 'Tip advokáta · Čl. VI', body: <>Vyhlásenia predávajúceho v bode 6.1 sú <strong>kľúčové</strong> — sú zmluvným základom pre prípadné odstúpenie od zmluvy a náhradu škody, ak sa ukážu byť nepravdivé. Predávajúci je povinný vozidlo odhlásiť (resp. podať žiadosť o prevod držby) do 15 dní podľa § 117 zák. č. 8/2009 Z. z. Nesplnenie tejto povinnosti je priestupkom s pokutou až <strong>3 320 €</strong>.</>, cite: 'Zák. č. 8/2009 Z. z. § 117, § 139a; OZ § 597' },
    'art-7': { head: 'Tip advokáta · Čl. VII', body: <>Kupujúci je povinný do <strong>30 dní</strong> od nadobudnutia vlastníctva požiadať o zápis prevodu držby vozidla. Vyhlásenie kupujúceho o oboznámení sa so stavom vozidla obmedzuje možnosti reklamácie zjavných vád. Skryté vady sa však riadia § 596 a § 597 OZ — predávajúci ručí za vlastnosti, ktoré vyhlásil, a za vady, ktoré pri kúpe použitej veci výslovne nepriznal.</>, cite: 'Zák. č. 8/2009 Z. z. § 116; OZ § 596 – § 599' },
    'art-8': { head: 'Tip advokáta · Čl. VIII', body: <>Zmluva musí byť <strong>písomná</strong> a podpísaná oboma stranami v rovnopisoch. <strong>Rozhodcovská doložka</strong> je v tomto vzore pevnou súčasťou záverečných ustanovení a smeruje prípadný spor na rozhodcu uvedeného v bode 8.3.</>, cite: 'OZ § 40, § 46; zák. č. 244/2002 Z. z.' },

    // ============================================================
    // Bodové tipy
    // ============================================================
    '2.1': { head: 'Tip advokáta · Bod 2.1 — vlastníctvo predávajúceho', body: <>Skontrolujte, či je predávajúci v technickom preukaze (osvedčenie o evidencii časť II) zapísaný ako <strong>„vlastník"</strong>, nie len „držiteľ". <strong>Držiteľ ≠ vlastník</strong> — pri leasingu alebo úvere je vlastníkom leasingová či úverová spoločnosť a držiteľ nemôže vozidlo predať bez jej súhlasu. Pri BSM musia podpísať obaja manželia, inak je zmluva relatívne neplatná podľa § 145 OZ.</>, cite: 'Zák. č. 8/2009 Z. z. § 114; OZ § 145, § 40a' },
    '2.2': { head: 'Tip advokáta · Bod 2.2 — identifikácia vozidla', body: <>VIN má <strong>presne 17 znakov</strong> a možno ho overiť na <strong>www.minv.sk</strong> (overenie z pohľadu kradnutia) a v komerčných databázach (CarVertical, AutoDNA). Prvé 3 znaky určujú výrobcu (WMI), 9. znak je kontrolný, 10. označuje modelový rok. Skontrolujte, či VIN na karosérii (typicky pod čelným sklom, na rámu) súhlasí s VIN v technickom preukaze a fyzickou kontrolou nie sú znaky prekované alebo prerazené.</>, cite: 'Vyhláška č. 9/2009 Z. z.; ISO 3779' },
    '2.3': { head: 'Tip advokáta · Bod 2.3 — doklady a vybavenie', body: <>Vyžadujte odovzdanie <strong>oboch častí osvedčenia o evidencii</strong> (časť I — malý technický preukaz, časť II — veľký technický preukaz), <strong>všetkých kľúčov</strong> (typicky 2× — pri chýbajúcom druhom kľúči má vozidlo nižšiu hodnotu), <strong>servisnej knižky</strong> a poslednej STK/EK. Pri novších vozidlách aj kódy k autorádiu a navigácii a karty na palivo, ak sú súčasťou.</>, cite: 'Zák. č. 8/2009 Z. z. § 114' },

    '3.1': { head: 'Tip advokáta · Bod 3.1 — výška kúpnej ceny', body: <>Cena musí byť uvedená <strong>číselne aj slovne</strong>. Pri rozporu medzi číselnou a slovnou hodnotou má prednosť slovné vyjadrenie — kontrolujte ho dvakrát. Pri vozidle pod 50 % zvyčajnej trhovej hodnoty (overenie na portáloch ako autobazar.eu) hrozí podozrenie, že vozidlo pochádza z trestnej činnosti — banky aj poisťovne to označujú za „indikátor rizika".</>, cite: 'OZ § 588' },
    '3.2': { head: 'Tip advokáta · Bod 3.2 — spôsob úhrady', body: <>Pri hotovosti platí všeobecný limit <strong>5 000 €</strong>. Vyšší limit <strong>15 000 €</strong> sa týka hotovostnej platby medzi fyzickými osobami, ktoré nie sú podnikateľmi. Limit nemožno obísť rozdelením jednej kúpnej ceny na viac hotovostných platieb — súvisiace platby z tej istej zmluvy sa sčítajú.</>, cite: 'Zák. č. 394/2012 Z. z. §§ 4, 8, 12' },
    '3.3-hotovost': { head: 'Tip advokáta · Bod 3.3 — platba v hotovosti', body: <>Podpis predávajúceho na zmluve, kde je <strong>výslovne potvrdené prevzatie peňazí</strong>, plne nahrádza samostatný príjmový doklad. Odporúčame však pri vyšších sumách (od 5 000 €) <strong>fotodokumentáciu</strong> alebo <strong>svedka</strong> — pri spore môže predávajúci tvrdiť, že peniaze nedostal. Pri sumách blížiacich sa zákonnému limitu odporúčame uskutočniť platbu v banke a požiadať o potvrdenie.</>, cite: 'OZ § 559; zák. č. 394/2012 Z. z.' },
    '3.4-hotovost-limit': { head: 'Tip advokáta · Hotovostný limit', body: <>Ak kúpna cena prevyšuje príslušný zákonný limit, hotovostná platba nemá byť vykonaná. Zmluva preto výslovne prepína nadlimitnú sumu na bezhotovostný prevod a pripomína, že pri jednej kúpnej zmluve sa súvisiace hotovostné platby sčítajú.</>, cite: 'Zák. č. 394/2012 Z. z. § 4' },
    '3.3-prevod': { head: 'Tip advokáta · Bod 3.3 — bezhotovostný prevod', body: <>Vždy uveďte <strong>VIN ako variabilný symbol</strong> a do správy pre prijímateľa „Kúpna cena za vozidlo, VIN: XXX, zmluva zo dňa DD.MM.RRRR". Bezhotovostný prevod je nezvratným dôkazom úhrady. <strong>Nepoužívajte hotovostné vklady tretích osôb na účet predávajúceho</strong> — banky takéto transakcie môžu nahlásiť ako podozrivé podľa zák. č. 297/2008 Z. z. (AML).</>, cite: 'Zák. č. 297/2008 Z. z.' },
    '3.4-prevod': { head: 'Tip advokáta · Bod 3.4 — splatnosť', body: <>Pri jednorazovej platbe odporúčame, aby <strong>cena bola zaplatená pred odovzdaním vozidla</strong>, alebo aby vlastníctvo prešlo až úplným zaplatením (Čl. V, variant 3). Pri splátkach pamätajte na <strong>výhradu vlastníctva</strong> — kým je kúpna cena nezaplatená, predávajúci ostáva vlastníkom. Bez tejto výhrady sa kupujúci stáva vlastníkom okamihom odovzdania a predávajúci stratí silnú vyjednávaciu pozíciu pri vymáhaní zvyšku ceny.</>, cite: 'OZ § 601' },
    '3.3-kombi': { head: 'Tip advokáta · Bod 3.3 — kombinovaná platba', body: <>Hotovostná zložka kombinovanej platby nesmie prekročiť príslušný zákonný limit. Ak je plánovaná hotovostná časť pri limite, radšej zvoľte celú platbu prevodom — súvisiace hotovostné platby z jednej zmluvy sa sčítajú.</>, cite: 'Zák. č. 394/2012 Z. z. § 4' },
    '3.4-kombi-limit': { head: 'Tip advokáta · Hotovostná zložka', body: <>Tento bod dáva priamo do zmluvy kontrolku, že hotovostná časť musí zostať pod zákonným limitom. Pri vyššej cene auta je najčistejšie presunúť celú cenu alebo aspoň nadlimitnú časť na bankový prevod.</>, cite: 'Zák. č. 394/2012 Z. z. § 4' },
    '3.5-kombi': { head: 'Tip advokáta · Prevodná zložka', body: <>Pri kombinovanej platbe je rozumné uviesť, že prevodná zložka bude pripísaná na účet predávajúceho najneskôr v deň odovzdania vozidla. Pri splátkach platia rovnaké pravidlá ako pri samostatnej splátkovej platbe — odporúčame výhradu vlastníctva podľa § 601 OZ.</>, cite: 'OZ § 601' },
    '3.5-splatky': { head: 'Tip advokáta · Strata výhody splátok', body: <>Klauzula o <strong>strate výhody splátok</strong> (acceleration clause) je v Slovensku štandardne uznávaná podľa § 565 OZ. Bez nej musí predávajúci vymáhať každú splátku samostatne, čo je extrémne nehospodárne. Lehota 7 dní omeškania je primeraná — kratšia môže byť napadnuteľná ako neprimeraná, dlhšia oslabuje pozíciu predávajúceho.</>, cite: 'OZ § 565' },
    '3.x-pokuta': { head: 'Tip advokáta · Zmluvná pokuta', body: <>Zmluvná pokuta podľa § 544 OZ je platná, len ak je dohodnutá <strong>písomne</strong>. Sadzba <strong>0,05 % denne</strong> (≈ 18,25 % p. a.) je všeobecne akceptovaná aj judikatúrou. Vyššie sadzby (napr. 1 % denne) môžu byť napadnuté ako neprimerané a v rozpore s dobrými mravmi (§ 39 OZ). Tým nie je dotknuté zákonné právo na úroky z omeškania a náhradu škody (§ 545 OZ).</>, cite: 'OZ § 544, § 545' },

    '4.1': { head: 'Tip advokáta · Bod 4.1 — odovzdanie', body: <>Pri odovzdaní pri podpise je všetko najjednoduchšie. Pri odloženom odovzdaní vznikajú riziká — vozidlo môže utrpieť škodu, byť predaný tretej osobe alebo zaťažené záložným právom. Ak nemáte zaplatené, žiadajte do zmluvy <strong>výhradu vlastníctva</strong> a uveďte presný <strong>termín a miesto</strong> odovzdania.</>, cite: 'OZ § 588' },
    '4.2-pri': { head: 'Tip advokáta · Bod 4.2 — odovzdanie pri podpise', body: <>Aj pri okamžitom odovzdaní odporúčame v zmluve <strong>fixovať stav tachometra</strong> a poznámku o odovzdaných kľúčoch. Pri prípadnej manipulácii s tachometrom po odovzdaní (čo nie je pri použitých autách výnimočné) má kupujúci pevný odkaz na zmluvný stav.</>, cite: 'OZ § 421' },
    '4.2-neskor': { head: 'Tip advokáta · Bod 4.2 — odložené odovzdanie', body: <>Stanovte <strong>presný dátum a miesto</strong> odovzdania, alebo lehotu „do … dní od …" (typicky od zaplatenia kúpnej ceny). Lehota dlhšia ako 30 dní je nezvyčajná a zvyšuje riziko sporu — počas nej sa vozidlo môže poškodiť, ukradnúť alebo predať inému kupujúcemu.</>, cite: 'OZ § 588 a nasl.' },
    '4.3-protokol': { head: 'Tip advokáta · Bod 4.3 — preberací protokol', body: <>Preberací protokol je v praxi <strong>najpodceňovanejší dokument</strong> pri kúpe vozidla. Mal by obsahovať: stav tachometra, fotodokumentáciu (interiér, exteriér, motorový priestor — najmenej 12 fotiek), zoznam dokladov a kľúčov, podpisy oboch strán. Pri spore o stav vozidla je rozhodujúcim dôkazom. <strong>Bez protokolu</strong> má kupujúci pri reklamácii skrytých vád výrazne sťaženú pozíciu.</>, cite: 'OZ § 596 a nasl.' },

    '5.1': { head: 'Tip advokáta · Bod 5.1 — prechod vlastníctva', body: <>Slovenský právny poriadok rozlišuje <strong>vlastníctvo</strong> (hmotnoprávna kategória — § 132, 133 OZ) a <strong>držbu</strong> (zápis v evidencii vozidiel — § 114 zák. č. 8/2009). Vlastníctvo prechádza zmluvou — <strong>nie zápisom v evidencii</strong>. Variant „odovzdaním" je default. Pri kúpe na splátky odporúčame variant „úplným zaplatením" (= výhrada vlastníctva podľa § 601 OZ) — predávajúci ostáva vlastníkom, kým nedostane všetky peniaze.</>, cite: 'OZ § 132, § 133, § 601' },
    '5.2': { head: 'Tip advokáta · Bod 5.2 — nebezpečenstvo škody', body: <>Nebezpečenstvo škody (vrátane zničenia, poškodenia, krádeže) prechádza prevzatím vozidla aj keď vlastníctvo ešte neprešlo. Kupujúci by si preto mal <strong>okamžite po prevzatí</strong> uzavrieť poistku zodpovednosti aj havarijné poistenie, ak je vozidlo financované úverom alebo má vyššiu hodnotu.</>, cite: 'OZ § 590, § 593' },

    '6.1': { head: 'Tip advokáta · Bod 6.1 — vyhlásenia predávajúceho', body: <>Tieto vyhlásenia tvoria <strong>právny základ pre odstúpenie</strong> a náhradu škody pri klamlivých informáciách. Pred podpisom overte: 1) na <strong>www.notar.sk</strong> centrálny notársky register záložných práv (CRR), 2) na <strong>minv.sk</strong> zoznam kradnutých vozidiel, 3) cez VIN dekoder históriu škôd a najazdených km. Pri leasingovom vozidle vyžiadajte súhlas leasingovej spoločnosti.</>, cite: 'OZ § 597, § 596' },
    '6.2': { head: 'Tip advokáta · Bod 6.2 — odstúpenie pri klamstve', body: <>Pri nepravdivom vyhlásení (napr. zatajené havárie, upravený tachometer, záložné právo) má kupujúci právo <strong>odstúpiť od zmluvy</strong> a požadovať vrátenie celej kúpnej ceny. Premlčacia lehota je 3 roky podľa § 101 OZ, ale pri úmyselnom konaní 10 rokov. Vždy si <strong>uschovávajte zmluvu, foto a komunikáciu</strong> — sú to kľúčové dôkazy.</>, cite: 'OZ § 597, § 101, § 106' },

    '7.1': { head: 'Tip advokáta · Bod 7.1 — lehota a spôsob prepisu', body: <>Zákon č. 8/2009 Z. z. v § 117 ukladá <strong>30-dňovú lehotu</strong> od uzatvorenia kúpnej zmluvy obom stranám — predávajúcemu na oznámenie zmeny držby a kupujúcemu na zápis nového vlastníctva. Pri omeškaní hrozí pokuta až <strong>3 320 €</strong> (§ 139a). Vyberte z 4 spôsobov prepisu: <strong>spoločne</strong> (najjednoduchšie), <strong>predávajúci s plnomocenstvom</strong> (najčastejšie v praxi), <strong>kupujúci s overenou zmluvou</strong>, alebo <strong>elektronicky</strong> (cez slovensko.sk s KEP).</>, cite: 'Zák. č. 8/2009 Z. z. § 116, § 117, § 139a' },
    '7.2-spolocne': { head: 'Tip advokáta · Bod 7.2 — spoločná návšteva DI', body: <>Toto je <strong>najjednoduchší a najlacnejší spôsob</strong> — bez plnomocenstva, bez notárskeho overenia, bez čakania na poštu. Obe strany prinesú občiansky preukaz, predávajúci aj oba technické preukazy (časť I a II). Polícia vykoná prepis na mieste a vydá nové osvedčenie o evidencii časť I priamo. Odporúčame si vopred <strong>dohodnúť termín</strong> a overiť úradné hodiny príslušného dopravného inšpektorátu.</>, cite: 'Zák. č. 8/2009 Z. z. § 117 ods. 4' },
    '7.2-predavajuci': { head: 'Tip advokáta · Bod 7.2 — prepis cez plnomocenstvo', body: <>Toto je <strong>najčastejší prípad v praxi</strong>. Predávajúci ide na DI sám, ale potrebuje od kupujúceho <strong>písomné plnomocenstvo s úradne osvedčeným podpisom</strong> (notár alebo matrika, cca 2 €). Alternatívne kupujúci osvedčí svoj podpis priamo na jednom vyhotovení kúpnej zmluvy. <strong>Výnimka:</strong> pri prevode na blízku osobu (rodič, dieťa, manžel/ka, súrodenec) sa overenie nevyžaduje. Predávajúci odovzdá polícii len veľký TP (časť II); nové doklady polícia pošle kupujúcemu poštou.</>, cite: 'Zák. č. 8/2009 Z. z. § 117 ods. 5; OZ § 116 (blízka osoba)' },
    '7.2-kupujuci': { head: 'Tip advokáta · Bod 7.2 — prepis kupujúcim', body: <>Variant kde sa kupujúci postará o prepis sám. Odporúčame, aby <strong>obe strany osvedčili podpisy</strong> na zmluve (notár), čím sa predíde sporu o pravosť zmluvy. Predávajúci pri podpise odovzdá kupujúcemu <strong>oba technické preukazy</strong>, kupujúci ich predloží polícii spolu so zmluvou. Pre kupujúceho výhoda: má kontrolu nad načasovaním. Pre predávajúceho riziko: ak kupujúci nepodá žiadosť včas, predávajúci ostáva v evidencii ako držiteľ a chodia mu pokuty za priestupky.</>, cite: 'Zák. č. 8/2009 Z. z. § 116' },
    '7.2-elektronicky': { head: 'Tip advokáta · Bod 7.2 — elektronický prepis', body: <>Plne online cez <strong>slovensko.sk</strong>, bez návštevy DI. Vyžaduje <strong>kvalifikovaný elektronický podpis (KEP)</strong> — eID karta s aktivovaným podpisovým certifikátom. Kupujúci môže predávajúceho elektronicky vyzvať na udelenie plnomocenstva (výzva platí 5 pracovných dní). <strong>Výhody:</strong> bez čakania v rade, bez notára. <strong>Nevýhody:</strong> obe strany musia mať aktivovaný eID + KEP, čo na Slovensku stále nie je samozrejmosťou. Nové doklady prídu poštou.</>, cite: 'Zák. č. 8/2009 Z. z. § 117 ods. 9; zák. č. 305/2013 Z. z. (eGovernment)' },
    '7.3': { head: 'Tip advokáta · Bod 7.3 — tabuľky s evidenčným číslom', body: <>Štandardne <strong>EVČ ostáva na vozidle</strong> aj keď má kupujúci pobyt v inom okrese — od roku 2018 sa pri zmene držiteľa tabuľky nevymieňajú. Predávajúci si však môže tabuľky <strong>ponechať pre svoje ďalšie vozidlo</strong> (napr. drahé „výberové" alebo individuálne EVČ). Túto skutočnosť musí oznámiť polícii pri prepise — kupujúci dostane nové EVČ. Ak kupujúci nie je na DI prítomný, polícia mu nové tabuľky pošle poštou na adresu na Slovensku.</>, cite: 'Zák. č. 8/2009 Z. z. § 123a; vyhláška č. 9/2009 Z. z.' },
    '7.4': { head: 'Tip advokáta · Bod 7.4 — vyhlásenie kupujúceho', body: <>Toto vyhlásenie obmedzuje neskoršie reklamácie <strong>zjavných</strong> vád, ktoré boli pri obvyklej prehliadke rozpoznateľné. Skryté vady (najčastejšie korózia rámu, technický stav motora, prevodovky, predchádzajúce ťažké havárie) sa však riadia § 596 a § 597 OZ a kupujúci ich môže reklamovať aj napriek tomuto vyhláseniu.</>, cite: 'OZ § 596, § 597, § 599' },
    '7.5': { head: 'Tip advokáta · Bod 7.5 — zoznam vád', body: <>Vady, ktoré predávajúci výslovne <strong>uvedie a kupujúci ich akceptuje</strong>, nemôžu byť neskôr predmetom reklamácie. Naopak, vady, ktoré predávajúci zatajil aj keď o nich vedel, zakladajú právo kupujúceho na odstúpenie alebo zľavu z kúpnej ceny. Buďte čo najpresnejší — odporúčame fotodokumentáciu jednotlivých vád pripojenú k preberaciemu protokolu.</>, cite: 'OZ § 596, § 597' },
    '7.6': { head: 'Tip advokáta · Bod 7.6 — skryté vady', body: <>Pri kúpe použitého vozidla od fyzickej osoby (nepodnikateľa) sa <strong>záruka neuplatňuje</strong>. Kupujúci má len právo zo zodpovednosti za skryté vady podľa § 596 a nasl. OZ. Lehota na uplatnenie je <strong>2 roky</strong> od prevzatia (§ 599 OZ). Pri kúpe od podnikateľa (autobazár) sa môže uplatňovať osobitný režim podľa zákona o ochrane spotrebiteľa s minimálnou zárukou 12 mesiacov pri použitom vozidle.</>, cite: 'OZ § 596 – § 599; zák. č. 250/2007 Z. z.' },
    '7.7': { head: 'Tip advokáta · Bod 7.7 — bežné opotrebenie', body: <>Bežné opotrebenie použitého vozidla nie je vadou. Súdy posudzujú primeranosť opotrebenia voči veku a počtu km — typické referenčné hodnoty: <strong>15 000 km/rok</strong> ako bežný nájazd, <strong>jasne viditeľné stopy</strong> v interiéri po 80 000 km. Sporné sú prípady, keď vozidlo má v inzeráte „TOP stav" a v skutočnosti vykazuje výrazné opotrebenie — vtedy ide o <strong>nepravdivé vyhlásenie</strong> a kupujúci môže reklamovať.</>, cite: 'OZ § 596' },

    '8.1': { head: 'Tip advokáta · Bod 8.1 — odstúpenie pri omeškaní s prevodom', body: <>Ak vlastníctvo neprejde do 30 dní od plánovaného termínu, neporušujúca strana môže odstúpiť od zmluvy. Lehota 30 dní je primeraná pre administratívne prieťahy (DI, kataster, banka). Pri kratšej lehote súdy posudzujú primeranosť individuálne.</>, cite: 'OZ § 48' },
    '8.2': { head: 'Tip advokáta · Bod 8.2 — doručovanie', body: <>Klauzula o tom, že vrátená zásielka sa považuje za doručenú, je v zmluvných vzťahoch (§ 45 ods. 2 OZ) všeobecne uznávaná, pri spotrebiteľských zmluvách však môže byť napadnuteľná. Pri pochybnosti uveďte adresy <strong>presné a aktuálne</strong> a žiadajte oznámenie každej zmeny do 7 dní.</>, cite: 'OZ § 45; CSP § 105 a nasl.' },
    '8.3': { head: 'Tip advokáta · Bod 8.3 — rozhodcovská doložka', body: <>Rozhodcovská doložka je osobitná dohoda o riešení sporov mimo všeobecného súdu. V tomto vzore je zaradená priamo do zmluvy; jej účelom je zrýchlené písomné riešenie sporov rozhodcom uvedeným v texte doložky.</>, cite: 'Zák. č. 244/2002 Z. z. § 6 ods. 3' },

    // ============================================================
    // Doctype-specific overrides — kľúče s príponou doctype
    // (lookup: TIPS[`${key}-${doctype}`] || TIPS[key])
    // ============================================================

    // Motocykel
    '2.2-motorka': { head: 'Tip advokáta · Bod 2.2 — identifikácia motocykla', body: <>VIN motocykla má rovnako 17 znakov a býva razený na <strong>rámu pri hlave riadenia</strong> alebo na motore. Pri starších motocykloch (pred 1981) môže mať VIN menej znakov — vtedy odkazujte na číslo rámu a motora samostatne. Skontrolujte aj <strong>typové schválenie</strong> a kategóriu (L1e – L7e), ktorá určuje vodičské oprávnenie potrebné na vedenie.</>, cite: 'Vyhláška č. 9/2009 Z. z.' },

    // Dodávka
    '2.2-dodavka': { head: 'Tip advokáta · Bod 2.2 — identifikácia úžitkového vozidla', body: <>Pri dodávkach a nákladných autách rozlišujte <strong>kategóriu N1 (do 3,5 t)</strong>, <strong>N2 (3,5 – 12 t)</strong> a <strong>N3 (nad 12 t)</strong>. Od kategórie závisí požadované vodičské oprávnenie aj sadzba poistenia a cestnej dane. Skontrolujte stav <strong>nákladového priestoru</strong> a poslednej technickej kontroly — N2 a N3 majú častejšie intervaly STK.</>, cite: 'Vyhláška č. 9/2009 Z. z.; zák. č. 8/2009 Z. z.' },

    // Prívesný vozík
    '2.2-pripojne': { head: 'Tip advokáta · Bod 2.2 — identifikácia prívesného vozíka', body: <>Prívesné vozíky kategórie <strong>O1 (do 750 kg)</strong> môžu byť bez vlastného EVČ — vtedy sa identifikujú VIN a typovým štítkom. Vyššie kategórie (O2 do 3,5 t, O3 do 10 t, O4 nad 10 t) majú vlastné EVČ a vyžadujú samostatné PZP. Skontrolujte <strong>celkovú a užitočnú hmotnosť</strong> — od nej závisí, či je potrebné vodičské oprávnenie skupiny BE alebo iné.</>, cite: 'Vyhláška č. 9/2009 Z. z.' },
    '7.1-pripojne': { head: 'Tip advokáta · Bod 7.1 — prepis prívesného vozíka', body: <>Pri kategórii <strong>O1 (do 750 kg) bez vlastného EVČ</strong> nie je prepis potrebný — vozík sa identifikuje VIN a jazdí pod EVČ ťažného vozidla. Pri vyšších kategóriách (O2, O3, O4) s vlastným EVČ platí rovnaký 30-dňový režim ako pri motorovom vozidle. <strong>Pozor:</strong> pri kúpe svojpomocne vyrobeného prívesu („homemade") bez typového schválenia ho nie je možné prepísať ani prevádzkovať bez schválenia stavby vozidla.</>, cite: 'Zák. č. 8/2009 Z. z. § 117; vyhl. č. 9/2009 Z. z.' },
    '7.7-pripojne': { head: 'Tip advokáta · Bod 7.7 — opotrebenie prívesného vozíka', body: <>Pri prívesných vozíkoch sú <strong>najčastejšie skryté vady</strong>: korózia podvozku a brzdovej sústavy, nefunkčné brzdové vahadlá, opotrebenie ťažného oka a posuvných nástavcov, nefunkčné svetlá a 13-pólová zásuvka. Pred kúpou odporúčame mokrú skúšku (jazda pod záťažou) a kontrolu zo spodu.</>, cite: 'OZ § 596' },
  };

  // Tip key resolution:
  // 1) doctype-specific override (`<key>-<doctype>`)
  // 2) generic key
  // 3) article-level fallback (`art-N` / `art-N-<doctype>`)
  const tryKeys = [];
  if (activeTipKey) {
    tryKeys.push(`${activeTipKey}-${doctype}`);
    tryKeys.push(activeTipKey);
  }
  if (activeArticle) {
    tryKeys.push(`${activeArticle}-${doctype}`);
    tryKeys.push(activeArticle);
  }
  let tip = null;
  for (const k of tryKeys) {
    if (TIPS[k]) { tip = TIPS[k]; break; }
  }
  // Default fallback — keď user neoznačí žiadny článok, ukáž onboarding tip.
  if (!tip) {
    tip = {
      head: 'Tip advokáta',
      body: <>Kliknite na ktorékoľvek <strong>TIP</strong> tlačidlo v dokumente — zobrazí sa tu vysvetlenie konkrétneho bodu zmluvy. Pri scrollovaní sa tipy automaticky aktualizujú podľa toho, kde sa nachádzate.</>,
      cite: ''
    };
  }

  return (
    <div className="tip-box">
      <div className="tip-author">
        <div className="tip-author-img">
          <img src="/assets/milan-ficek.jpg" alt="JUDr. Milan Ficek" loading="lazy" decoding="async" />
        </div>
        <div className="tip-author-meta">
          <div className="tip-author-name">JUDr. Milan Ficek</div>
          <div className="tip-author-role">Advokát · Ficek &amp; Partners</div>
        </div>
      </div>
      <div className="tip-head">
        <span className="pilcrow">§</span>
        <span>{tip.head}</span>
      </div>
      <p className="tip-body">{tip.body}</p>
      {tip.cite && <div className="tip-cite">Zdroj: {tip.cite}</div>}
    </div>
  );
};

window.Tips = Tips;


// ---------- Right sidebar ----------
const RightSidebar = ({ doctype, optionals, toggleOptional, activeArticle, activeTipKey, clearTipKey }) => {
  const clauses = getOptionalClauses();
  const enabledClauses = clauses.filter(c => optionals[c.id]).length;

  return (
    <aside className="sidebar-r" aria-label="Pomocník a kontakt na advokáta">
      <Tips
        doctype={doctype}
        activeArticle={activeArticle}
        optionals={optionals}
        activeTipKey={activeTipKey}
        clearTipKey={clearTipKey}
      />

      <div className="panel no-print">
        <div className="panel-head">
          <span>Voliteľné klauzuly</span>
          <span className="count">{enabledClauses}/{clauses.length}</span>
        </div>
        <div className="clause-list">
          {clauses.map(clause => (
            <label className="clause" key={clause.id}>
              <input
                type="checkbox"
                checked={!!optionals[clause.id]}
                onChange={() => toggleOptional(clause.id)}
              />
              <span className="clause-text">
                <strong>{clause.title}</strong>
                <span>{clause.sub}</span>
              </span>
            </label>
          ))}
        </div>
      </div>

      <div className="panel no-print">
        <div className="panel-head">
          <span>Potrebujete pomôcť?</span>
        </div>
        <p className="panel-body">Máte otázky k Vášmu konkrétnemu prípadu? Naša advokátska kancelária Vám rada pomôže.</p>
        <a
          href={window.CONSULTATION_URL || window.CONTACT_URL || '#'}
          target="_blank"
          rel="noopener noreferrer"
          className="btn btn-oxblood panel-cta"
        >
          Opýtajte sa advokáta
        </a>
      </div>
    </aside>
  );
};

window.RightSidebar = RightSidebar;


// ---------- Tip modal (mobile) ----------
const TipModal = ({ doctype, optionals, tipKey, onClose }) => {
  // Iba Escape handler — body scroll lock zámerne nerobíme. Bol fragile pri
  // rýchlych re-renderoch (scroll-spy v Paper) a navyše modal sám pokrýva
  // celý viewport, takže scroll pozadia neprekáža.
  React.useEffect(() => {
    if (!tipKey) return;
    const onKey = (e) => { if (e.key === 'Escape') onClose(); };
    window.addEventListener('keydown', onKey);
    return () => window.removeEventListener('keydown', onKey);
  }, [tipKey, onClose]);

  if (!tipKey) return null;

  return (
    <div className="tip-modal no-copy" role="dialog" aria-modal="true" aria-label="Tip advokáta">
      <div className="tip-modal-overlay" onClick={onClose} />
      <div className="tip-modal-sheet">
        <button type="button" className="tip-modal-close" onClick={onClose} aria-label="Zatvoriť tip">×</button>
        <Tips doctype={doctype} activeArticle={null} optionals={optionals} activeTipKey={tipKey} clearTipKey={onClose} />
      </div>
    </div>
  );
};

window.TipModal = TipModal;
