// ============================================================
// Left TOC + Right sidebar panels — single-doctype (zápůjčka)
// ============================================================

const TOC_ITEMS = [
  { id: 'art-1', num: 'I',   title: 'Předmět smlouvy' },
  { id: 'art-2', num: 'II',  title: 'Způsob poskytnutí peněz' },
  { id: 'art-3', num: 'III', title: 'Smluvní úrok' },
  { id: 'art-4', num: 'IV',  title: 'Vrácení dluhu' },
  { id: 'art-5', num: 'V',   title: 'Další práva a povinnosti' },
  { id: 'art-6', num: 'VI',  title: 'Doručování' },
  { id: 'art-7', num: 'VII', title: 'Závěrečná ustanovení' },
];

const TOC = ({ active, setActive, optionals }) => (
  <aside className="toc" aria-label="Obsah smlouvy o půjčce">
    <div className="toc-title">Obsah smlouvy</div>
    <ol>
      {TOC_ITEMS.map(item => (
        <li key={item.id}>
          <a
            href={`#${item.id}`}
            className={active === item.id ? 'active' : ''}
            onClick={() => 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í aktualizace</strong><br />{new Date().toLocaleDateString('cs-CZ', { day: 'numeric', month: 'numeric', year: 'numeric' })}</div>
      <div><strong>Autor</strong><br />JUDr. Milan Ficek</div>
      <div><strong>Editorial review</strong><br />JUDr. Milan Ficek, ev. č. 50245 ČAK</div>
    </div>
  </aside>
);

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


// ---------- Voliteľné klauzuly (single-doctype) ----------
const OPTIONAL_CLAUSES = [
  {
    id: 'c-arbitration',
    title: 'Rozhodčí doložka (čl. VII. odst. 2)',
    sub: 'Spory řeší rozhodce JUDr. Milan Ficek (ČAK 50245). Rychlejší a levnější než soudní řízení.',
  },
  {
    id: 'c-other-terms',
    title: 'Další ujednání (čl. V., 8. krok)',
    sub: 'Volitelný odstavec pro vlastní text — např. zákaz postoupení pohledávky, ručení.',
  },
];


// ---------- Tips advokáta pre každý článok zápůjčky ----------
// Citácie podľa docs/LEGAL_REFERENCES.md.
const Tips = ({ activeArticle, optionals, activeTipKey, clearTipKey }) => {
  const TIPS = {
    'art-parties': {
      head: 'Tip advokáta · Smluvní strany',
      body: <>Při <strong>právnické osobě</strong> vždy uvádějte osobu oprávněnou jednat za společnost (jednatel, představenstvo) podle aktuálního výpisu z obchodního rejstříku. Při <strong>více dlužnících</strong> doporučujeme zaškrtnout <strong>solidaritu</strong> (§ 1872 NOZ) — věřitel pak může požadovat celý dluh od kteréhokoli dlužníka. Bez solidarity každý dlužník ručí jen za svůj poměrný díl (§ 1869 NOZ).</>,
      cite: '§ 1869, § 1872 NOZ; výpis z OR / živnostenského rejstříku',
    },
    'art-1': {
      head: 'Tip advokáta · čl. I (Předmět smlouvy)',
      body: <>Smlouva o půjčce je <strong>reálný kontrakt</strong> — vzniká až <strong>předáním peněz dlužníkovi</strong>, nikoli pouhým podpisem (§ 2390 zákona č. 89/2012 Sb., občanský zákoník). V právní rovině jde o <strong>zápůjčku</strong>; pojem „půjčka" zůstává v marketingu, protože ho lidé stále vyhledávají.</>,
      cite: '§ 2390 zákona č. 89/2012 Sb., občanský zákoník (NOZ); judikát NS ČR sp. zn. 33 Cdo 4413/2017',
    },
    'art-2': {
      head: 'Tip advokáta · čl. II (Způsob poskytnutí peněz)',
      body: <>Pokud peníze už byly předány <strong>před podpisem</strong>, dlužník to musí v textu výslovně potvrdit — jinak vzniká pochybnost, zda zápůjčka skutečně vznikla. Při převodu na účet doporučujeme uvést <strong>úplné číslo účtu včetně IBAN</strong>, aby bylo identifikovatelné. Kombinace hotovost+převod vyžaduje, aby <strong>součet obou částek odpovídal celkové výši</strong> z čl. I.</>,
      cite: '§ 2390 NOZ; § 559 NOZ (forma)',
    },
    'art-3': {
      head: 'Tip advokáta · čl. III (Smluvní úrok)',
      body: <>Úrok lze sjednat <strong>pouze výslovnou dohodou</strong> (§ 1802 NOZ); bez dohody je zápůjčka bezúročná. <strong>Nepřiměřeně vysoký úrok je neplatný</strong> pro rozpor s dobrými mravy (§ 580 NOZ) nebo jako neúměrné zkrácení (§ 1796 NOZ). Soudní praxe považuje za přiměřený úrok kolem <strong>úrokové míry komerčních bank + běžné rizikové prémie</strong>.</>,
      cite: '§ 1802 NOZ, § 1796 NOZ, § 580 NOZ; NS ČR sp. zn. 21 Cdo 1484/2004',
    },
    'art-4': {
      head: 'Tip advokáta · čl. IV (Vrácení dluhu)',
      body: <>Pokud splatnost není ve smlouvě sjednaná, je dluh splatný <strong>do 6 týdnů od výzvy</strong> věřitele (§ 2393 NOZ). Při <strong>splátkách</strong> doporučujeme zachovat ujednání o ztrátě výhody splátek — při prodlení s 2 splátkami nebo 1 splátkou déle než 3 měsíce může věřitel požadovat celý zbytek najednou. Měsíční splátky se obvykle dohaduje <strong>ke konkrétnímu dni v měsíci</strong>.</>,
      cite: '§ 2393 NOZ, § 1931 NOZ',
    },
    'art-5': {
      head: 'Tip advokáta · čl. V (Další práva a povinnosti)',
      body: <>Při <strong>prodlení dlužníka</strong> má věřitel právo na <strong>úrok z prodlení</strong> ve výši stanovené nař. vlády č. 351/2013 Sb. — <strong>REPO sazba ČNB platná v 1. den kalendářního pololetí + 8 procentních bodů</strong>. Konkrétní procento se mění každé pololetí, proto v textu odkazujeme na zákonnou výši a sazbu nekvantifikujeme.</>,
      cite: '§ 1968, § 1970 NOZ; nař. vlády č. 351/2013 Sb.',
    },
    'art-6': {
      head: 'Tip advokáta · čl. VI (Doručování)',
      body: <>Ujednání o <strong>fikci doručení</strong> (zásilka odmítnutá nebo nedoručená vrácená zpět = doručená) je klíčové pro pozdější vymáhání. Bez něj musí věřitel dokazovat, že se dlužník skutečně dozvěděl o výzvě — což je zdlouhavé. Stejné pravidlo se vztahuje i na <strong>rozhodčí řízení</strong> (§ 19 zákona č. 216/1994 Sb.).</>,
      cite: '§ 562, § 573 NOZ; § 19 zák. č. 216/1994 Sb. (ZRŘ)',
    },
    'art-7': {
      head: 'Tip advokáta · čl. VII (Závěrečná ustanovení)',
      body: <><strong>Rozhodčí doložka</strong> ve prospěch konkrétního rozhodce (JUDr. Milan Ficek, ev. č. 50245 ČAK) splňuje § 7 ZRŘ — rozhodce je individuálně určen jménem. Konání u rozhodce trvá <strong>týdny</strong>, soudní řízení o vrácení půjčky <strong>roky</strong>. Pro <strong>spotřebitelské spory</strong> (zápůjčka mezi podnikatelem a spotřebitelem podle § 419 NOZ) doložka může být zneplatněna — je proto lepší ji v takovém případě nepoužívat a obrátit se přímo na advokáta.</>,
      cite: '§ 3, § 7, § 19, § 30 zákona č. 216/1994 Sb.; ÚS ČR sp. zn. III. ÚS 1996/13',
    },

    // ===== Bod-špecifické TIPy =====
    '1.1': {
      head: 'Tip advokáta · bod 1.1 (Předmět smlouvy)',
      body: <>Předmětem zápůjčky musí být <strong>zastupitelná věc</strong> — zejména peníze. Smlouva musí <strong>jednoznačně uvádět výši a měnu</strong>. Bez určité částky je smlouva neplatná pro neurčitost (§ 553 NOZ). Vyplnění hodnoty „slovem" eliminuje pochybnosti o čtení čísla.</>,
      cite: '§ 2390, § 553 NOZ',
    },
    '2.1': {
      head: 'Tip advokáta · bod 2.1 (Způsob poskytnutí)',
      body: <>Zápůjčka je <strong>reálný kontrakt</strong> — vzniká až <strong>předáním peněz</strong>. Jestli peníze byly předány už před podpisem (hotovost), dlužník to musí v textu výslovně potvrdit. Při převodu uchovejte <strong>výpis z účtu</strong> jako důkaz.</>,
      cite: '§ 2390 NOZ; NS ČR sp. zn. 33 Cdo 4413/2017',
    },
    '2.2': {
      head: 'Tip advokáta · bod 2.2 (Předání peněz)',
      body: <>Při <strong>kombinaci hotovost + převod</strong> musí <strong>součet obou částek odpovídat</strong> celkové výši z čl. I. Při převodu uveďte úplné číslo účtu včetně předčíslí a kódu banky (formát: <code>123456-1234567890/0100</code>).</>,
      cite: '§ 2390 NOZ',
    },
    '3.1': {
      head: 'Tip advokáta · bod 3.1 (Úročení)',
      body: <>Úrok lze sjednat <strong>pouze výslovnou dohodou</strong> (§ 1802 a § 2392 NOZ). Bez dohody je zápůjčka <strong>bezúročná</strong>. Pokud chcete úrok, zaškrtněte volbu „s úrokem" — bez výslovného uvedení nemůžete úroky vymáhat.</>,
      cite: '§ 1802, § 2392 NOZ',
    },
    '3.2': {
      head: 'Tip advokáta · bod 3.2 (Výše úroku)',
      body: <>Úrok můžete uvést jako <strong>procentní sazbu p. a.</strong> (např. „5 % p. a.") nebo jako <strong>konkrétní částku</strong> (např. „2 500 Kč jako odměna"). Nepřiměřeně vysoký úrok je <strong>neplatný</strong> pro rozpor s dobrými mravy (§ 580 NOZ) nebo jako neúměrné zkrácení (§ 1796 NOZ).</>,
      cite: '§ 1802, § 580, § 1796 NOZ; NS ČR sp. zn. 21 Cdo 1484/2004',
    },
    '4.1': {
      head: 'Tip advokáta · bod 4.1 (Splacení)',
      body: <>Splatnost <strong>vždy uveďte ve smlouvě</strong> — buď konkrétní datum (jednorázově) nebo splátkový kalendář. Pokud splatnost neurčíte, zápůjčka je splatná <strong>do 6 týdnů od výzvy</strong> věřitele (§ 2393 NOZ) — to je pomalé a nepraktické.</>,
      cite: '§ 2393 NOZ',
    },
    '4.2': {
      head: 'Tip advokáta · bod 4.2 (Forma splátek)',
      body: <><strong>Měsíční splátky</strong> jsou nejčastější. „Jiné než měsíční" zvolte pro speciální režim (čtvrtletní, sezónní, vázané na příjem). Při vlastním režimu popište přesně, aby bylo splátkování <strong>určité a vymahatelné</strong>.</>,
      cite: '§ 1931 NOZ',
    },
    '4.3': {
      head: 'Tip advokáta · bod 4.3 (Měsíční splátky)',
      body: <>Stanovte <strong>konkrétní den v měsíci</strong> (typicky 5., 10. nebo 15.) — usnadní to dlužníkovi vědomé plánování i věřiteli sledování. <strong>První splátka</strong> by měla být splatná nejdříve 30 dní po podpisu, aby měl dlužník čas připravit finance.</>,
      cite: '',
    },
    '4.4': {
      head: 'Tip advokáta · bod 4.4 (Ztráta výhody splátek)',
      body: <>Ujednání o ztrátě výhody splátek („při prodlení s 2 splátkami nebo 1 splátkou >3 měsíce") je <strong>výhodnější pro dlužníka</strong> než zákonná úprava § 1931 NOZ (která umožňuje žádat celý dluh už při 1 prodlené splátce). § 2394 NOZ tento prah pro zápůjčku výslovně chrání.</>,
      cite: '§ 1931, § 2394 NOZ',
    },
    '4.5': {
      head: 'Tip advokáta · bod 4.5 (Způsob vrácení)',
      body: <><strong>Převod na účet</strong> je důkazně silnější než hotovost — bankovní výpis je nezpochybnitelný. Při hotovostním splacení doporučujeme <strong>písemné potvrzení</strong> od věřitele o převzetí každé splátky. <br/><br/>Všimněte si, že místem plnění při hotovostním vrácení je <strong>bydliště věřitele</strong> — to znamená, že <strong>dlužník je povinen přinést peníze věřiteli domů</strong>, ne naopak. Bez tohoto ujednání by věřitel musel jezdit za dlužníkem, a v případě sporu by musel prokazovat, zda u dlužníka byl či nikoli — což je v praxi velmi obtížné. Tato úprava odpovídá § 1955 občanského zákoníku (peněžitý dluh se plní v sídle věřitele).</>,
      cite: '§ 1955 NOZ (místo plnění peněžitého dluhu)',
    },
    '5.1': {
      head: 'Tip advokáta · bod 5.1 (Úrok z prodlení)',
      body: <>Úrok z prodlení vzniká <strong>automaticky ze zákona</strong> (§ 1968 a § 1970 NOZ) — sazba je <strong>REPO ČNB + 8 procentních bodů</strong> (nař. vlády č. 351/2013 Sb.). Sazba se mění každé pololetí — proto smlouva odkazuje na zákonnou výši a procento nekvantifikuje.</>,
      cite: '§ 1968, § 1970 NOZ; nař. vlády č. 351/2013 Sb.',
    },
    '5.2': {
      head: 'Tip advokáta · bod 5.2 (Další ujednání)',
      body: <>Volitelný odstavec pro <strong>vlastní text</strong>. Příklady: zákaz postoupení pohledávky (§ 1881 NOZ), ručitelství třetí osoby (§ 2018 NOZ), zástava nemovitosti, sankce za prodlení nad rámec úroku z prodlení.</>,
      cite: '§ 1881, § 2018 NOZ',
    },
    '6.1': {
      head: 'Tip advokáta · bod 6.1 (Doručování)',
      body: <>Ujednání o <strong>fikci doručení</strong> (zásilka odmítnutá nebo nedoručená vrácená zpět = doručená) je důkazně klíčové. Bez něj musí věřitel dokazovat, že se dlužník skutečně dozvěděl o výzvě — to je pomalé a obtížné.</>,
      cite: '§ 562, § 573 NOZ',
    },
    '4.solidarity': {
      head: 'Tip advokáta · Solidární odpovědnost dlužníků',
      body: <>Toto ustanovení je <strong>klíčové při více dlužnících</strong>. Bez něj by každý dlužník odpovídal pouze za <strong>svůj poměrný díl</strong> dluhu (§ 1869 NOZ — pokud podíly nejsou určené, platí rovným dílem). Pokud je sjednána <strong>solidární odpovědnost</strong> („společně a nerozdílně" podle § 1872 NOZ), <strong>každý jeden z dlužníků odpovídá za celý dluh</strong> — věřitel může žádat zaplacení celé částky od kteréhokoli z nich. Ten, kdo zaplatí, má následně regresní právo vůči ostatním (§ 1876 NOZ). <br/><br/>Pro věřitele je solidarita <strong>výrazně výhodnější</strong> — nemusí soudit každého dlužníka zvlášť ani řešit, který z nich má majetek. Stačí vymáhat od kteréhokoli „bonitního" dlužníka.</>,
      cite: '§ 1869, § 1872, § 1876 zákona č. 89/2012 Sb., občanský zákoník (NOZ)',
    },
    '7.2': {
      head: 'Tip advokáta · bod 7.2 (Rozhodčí doložka)',
      body: <>Rozhodce je <strong>určen jménem</strong> (JUDr. Milan Ficek, ev. č. 50245 ČAK) — splňuje § 7 ZRŘ, doložka je platná. Řízení trvá <strong>týdny</strong>, oproti soudnímu sporu, který trvá <strong>roky</strong>. <br/><br/><strong>Klíčová výhoda:</strong> rozhodčí nález je <strong>přímo exekučním titulem</strong> (§ 28 odst. 2 zákona č. 216/1994 Sb. + § 274 odst. 1 písm. i) zákona č. 99/1963 Sb., občanský soudní řád). Po nabytí právní moci může věřitel <strong>okamžitě podat návrh na exekuci</strong> u soudního exekutora — <strong>bez nutnosti dalšího nalézacího řízení u soudu</strong>. To znamená: neuhrazený dluh můžete vymáhat řádově rychleji než cestou klasické žaloby (rozhodčí nález za týdny → exekuce; soudní rozsudek za roky → exekuce).</>,
      cite: '§ 3, § 7, § 28 zák. č. 216/1994 Sb. (ZRŘ); § 274 odst. 1 písm. i) zák. č. 99/1963 Sb. (o. s. ř.)',
    },
  };

  // Lookup poradie:
  //  1) activeTipKey (scroll-spy alebo manuálny klik na TIP v margine)
  //  2) activeArticle (default 'art-1' alebo článok pri scroll-spy)
  //  3) Fallback: ak ani jedno nemá záznam (napr. 'art-parties'), ukáž 'art-1'
  const tipKey = (activeTipKey && TIPS[activeTipKey]) ? activeTipKey
                : (activeArticle && TIPS[activeArticle]) ? activeArticle
                : 'art-1';
  const tip = TIPS[tipKey];
  if (!tip) return null;
  return (
    <div className="tip-box no-copy">
      <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 · ev. č. 50245 ČAK</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>
  );
};


// Bod-špecifické tip kľúče — synchronizované s `pointKey` v Paper.jsx TipBtn.
window.POINT_TIP_KEYS = [
  '1.1',
  '2.1', '2.2',
  '3.1', '3.2',
  '4.1', '4.2', '4.3', '4.4', '4.5', '4.solidarity',
  '5.1', '5.2',
  '6.1',
  '7.2',
];

const RightSidebar = ({ optionals, toggleOptional, activeArticle, activeTipKey, clearTipKey }) => {
  return (
    <aside className="sidebar-r" aria-label="Pomocník a vymáhání pohledávky">
      <Tips activeArticle={activeArticle} optionals={optionals} activeTipKey={activeTipKey} clearTipKey={clearTipKey} />

      {/* Help CTA — vymáhanie pohľadávky cez rozhodčie konanie (rrcr.cz) */}
      <div className="panel sidebar-help-cta">
        <div className="panel-head"><span>Dlužník Vám neplatí?</span></div>
        <p style={{ margin: '0 0 14px', fontSize: 13, lineHeight: 1.55, color: 'var(--ink-2)' }}>
          Dlužník přestal splácet nebo se vyhýbá vrácení dluhu? Dejte nám vědět — pomůžeme Vám s vymáháním pohledávky cestou <strong>rozhodčího řízení</strong>. Konání trvá <strong>týdny</strong>, ne roky, a rozhodčí nález je přímo exekučním titulem.
        </p>
        <a
          href="https://www.rrcr.cz"
          target="_blank"
          rel="noopener noreferrer"
          className="btn btn-oxblood"
          style={{ display: 'block', textAlign: 'center', textDecoration: 'none', padding: '11px 16px', fontSize: 14 }}
        >
          Kontaktovat rozhodce
        </a>
        <p style={{ margin: '10px 0 0', fontSize: 11, color: 'var(--ink-3)', textAlign: 'center', fontStyle: 'italic' }}>
          rrcr.cz · JUDr. Milan Ficek, advokát<br/>ev. č. 50245 ČAK
        </p>
      </div>
    </aside>
  );
};

window.RightSidebar = RightSidebar;
window.Tips = Tips;

// Bottom-sheet modal pre tip — používa sa len na mobile (≤768px).
const TipModal = ({ optionals, tipKey, onClose }) => {
  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="Zavřít tip">×</button>
        <Tips activeArticle={null} optionals={optionals} activeTipKey={tipKey} clearTipKey={onClose} />
      </div>
    </div>
  );
};

window.TipModal = TipModal;
