﻿/* Pokladna — styly převzaté ze závazného mockupu pokladna.html */
  /* Proměnné a reset dodává tokens.css + app.css */
  body{font-family:var(--body);color:var(--ink);background:var(--bg-soft);line-height:1.6;font-size:16px}
  .wrap{max-width:1020px;margin:0 auto;padding:0 24px}

  header.site{background:#fff;border-bottom:1px solid var(--line)}
  .nav{display:flex;align-items:center;justify-content:space-between;height:var(--topbar-h)}
  .wrap.nav{max-width:var(--page-w)}
  .logo{display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--ink)}
  .logo b{font-family:var(--display);font-weight:600;font-size:19px}
  .secure{display:flex;align-items:center;gap:8px;font-size:13.5px;color:var(--muted)}

  .steps{display:flex;align-items:center;justify-content:center;gap:0;padding:34px 0 6px}
  .step{display:flex;align-items:center;gap:10px;font-size:14px;color:var(--muted)}
  .step i{font-style:normal;width:26px;height:26px;border-radius:50%;border:1.5px solid var(--line);display:flex;align-items:center;justify-content:center;font-size:12.5px;font-weight:600;background:#fff}
  .step.done i{background:var(--ok);border-color:var(--ok);color:#fff}
  .step.cur{color:var(--ink);font-weight:600}
  .step.cur i{background:var(--primary);border-color:var(--primary);color:#fff}
  .steps .dash{width:56px;height:1.5px;background:var(--line);margin:0 14px}

  h1{font-family:var(--display);font-weight:700;font-size:28px;text-align:center;margin:10px 0 34px}
  .cols{display:grid;grid-template-columns:1.15fr .85fr;gap:26px;padding-bottom:90px;align-items:start}
  .card{background:#fff;border:1px solid var(--line);border-radius:var(--radius-lg);padding:26px 28px}
  .card h2{font-family:var(--display);font-weight:600;font-size:18px;margin-bottom:16px}
  .card h3{font-family:var(--display);font-weight:600;font-size:16px;margin:0 0 14px}
  .checkout-step + .checkout-step{border-top:1px solid var(--line);margin-top:24px;padding-top:24px}
  .step-number{display:inline-flex;align-items:center;justify-content:center;width:25px;height:25px;
    margin-right:8px;border-radius:50%;background:var(--primary);color:#fff;font-size:13px}
  .order-summary{position:sticky;top:calc(var(--topbar-h) + 16px)}
  .summary-delivery{border:1px solid var(--line);border-radius:var(--radius);background:var(--bg-soft);
    padding:12px 14px;margin:8px 0 14px}
  .summary-delivery p{font-size:13.5px;color:var(--muted);margin:0}
  .summary-delivery p + p{border-top:1px solid var(--line);margin-top:10px;padding-top:10px}
  .summary-delivery b,.summary-delivery span{display:block}
  .summary-delivery b{color:var(--ink);margin-bottom:2px}
  .legal-actions{margin-top:18px}
  .legal-actions[hidden],[data-legal-audience][hidden]{display:none}
  .legal-overview{display:grid;gap:12px;margin-top:18px}
  .legal-overview .legal-actions,.legal-details{margin:0;border:1px solid var(--line);
    border-radius:var(--radius);background:var(--bg-soft);padding:14px 15px}
  .legal-overview h3{margin-bottom:8px}
  .legal-overview p,.legal-overview .consent-text{text-align:left;line-height:1.55}
  .legal-overview .consent{margin:10px 0 0;background:var(--bg)}
  .legal-details>.alt{margin-top:9px}
  .legal-details>.dokumenty{margin-bottom:0;padding-top:9px;border-top:1px solid var(--line)}
  .marketing-options{border:1px solid var(--line);border-radius:var(--radius);margin-top:14px;background:var(--bg)}
  .marketing-options summary{min-height:44px;padding:8px 12px;cursor:pointer;list-style-position:inside}
  .marketing-options summary span{font-family:var(--display);font-size:15px;font-weight:600;color:var(--ink);margin-left:4px}
  .marketing-body{border-top:1px solid var(--line);padding:2px 14px 12px}
  .marketing-body .consent{margin:10px 0 0}
  .commitment-summary{border:1px solid var(--primary-mid);border-radius:var(--radius);
    background:var(--primary-soft);padding:13px 15px;margin-top:18px;color:var(--ink)}
  .commitment-summary>p{font-size:13.5px;margin-top:4px;color:var(--ink-muted-strong)}
  .commitment-summary strong{color:var(--ink)}
  .checkout-actions{position:static}

  /* Slepá ulička („Přístup už máte") — zákazník, kterému nemáme co prodat.
     Tlačítka sdílejí vzhled s dekujeme.css záměrně: obě stránky jsou konec cesty
     pokladnou a navazují na sebe. Definice jsou per-stránka, ne v app.css — proto
     se tu opakují (stejně jako v ucet.css, dekujeme.css, chyba.css). */
  .konec{padding:34px 30px}
  .konec h2{font-size:20px;margin-bottom:10px}
  .konec p{color:var(--muted);margin-bottom:6px}
  .konec .btns{justify-content:center;margin-top:20px}
  .konec .btn-cta{display:inline-block;background:var(--accent);color:var(--accent-ink);text-decoration:none;font-weight:600;font-size:15px;padding:13px 26px;border-radius:var(--radius)}
  .konec .btn-cta:hover{background:var(--accent-hover);color:var(--accent-ink)}
  .konec .btn-ghost{display:inline-block;background:#fff;border:1px solid var(--line);color:var(--ink);text-decoration:none;font-weight:500;font-size:14px;padding:12px 20px;border-radius:var(--radius)}
  .konec .btn-ghost:hover{border-color:var(--muted)}

  .opt{display:flex;gap:14px;border:1.5px solid var(--line);border-radius:var(--radius);padding:16px 18px;cursor:pointer;margin-bottom:12px;background:#fff}
  .opt input{margin-top:5px;accent-color:var(--primary)}
  .opt .t{flex:1}
  .opt .t b{font-weight:600;font-size:15.5px}
  .opt .t p{font-size:13.5px;color:var(--muted);margin-top:2px}
  .opt .pr{font-family:var(--display);font-weight:700;font-size:19px;white-space:nowrap}
  .opt .pr small{display:block;font-family:var(--body);font-weight:400;font-size:12px;color:var(--muted);text-align:right}
  .opt.sel{border-color:var(--primary);background:var(--primary-soft)}
  .opt.sel .t p,.opt.sel .pr small{color:var(--ink-muted-strong)}
  /* vysvětlivka pod variantou (co je trvalé a co běží přes organizaci) — podřízená poznámka
     k volbě nad sebou. Neutrální (ne fialová), ať nekonkuruje vybrané kartě; odsazená na text
     varianty a uvozená „i" ikonou. Zobrazuje se jen u vybrané varianty (JS + atribut hidden). */
  .opt-note{position:relative;font-size:12.5px;line-height:1.55;color:var(--muted);background:var(--bg-soft);
    border:1px solid var(--line);border-radius:8px;padding:10px 14px 10px 36px;margin:-4px 0 12px 32px}
  .opt-note::before{content:"i";position:absolute;left:12px;top:10px;width:16px;height:16px;
    border-radius:50%;background:var(--primary);color:#fff;font-family:var(--display);font-weight:700;
    font-size:11px;line-height:16px;text-align:center}
  .opt-note b{color:var(--ink);font-weight:600}
  .opt-note[hidden]{display:none}

  .acct{border-top:1px solid var(--line);margin-top:20px;padding-top:20px}
  .acct label{display:block;font-size:13px;font-weight:600;color:var(--muted);margin:12px 0 5px}
  .acct input:not([type=checkbox]):not([type=radio]){width:100%;border:1px solid var(--line);border-radius:8px;padding:11px 14px;font-family:var(--body);font-size:15px}
  /* radia způsobu platby vynechat — kolem koleček se jinak kreslí čtvereček */
  .acct input:not([type=checkbox]):not([type=radio]):focus{outline:2px solid var(--primary-mid);border-color:var(--primary-mid)}
  .acct .note{font-size:13px;color:var(--muted);margin-top:10px}
  .acct .note a{color:var(--primary)}

  .sum-line{display:flex;justify-content:space-between;font-size:14.5px;padding:7px 0;color:var(--muted)}
  .sum-line.total{border-top:1px solid var(--line);margin-top:8px;padding-top:14px;color:var(--ink);font-weight:600;font-size:16px}
  .sum-line.total b{font-family:var(--display);font-size:22px}

  .consent{display:flex;gap:10px;align-items:flex-start;background:var(--bg-soft);border:1px solid var(--line);border-radius:var(--radius);padding:13px 15px;margin:18px 0 6px;font-size:13px;color:var(--muted);cursor:pointer}
  .consent input{margin-top:3px;accent-color:var(--primary)}
  /* Znění projevu vůle je v labelu víc (podle složek plnění vybrané varianty) a viditelné
     je vždy právě jedno. `[hidden]` je tu explicitně jako pojistka: kdyby prvek někdy
     dostal vlastní `display`, atribut by přestal platit a v pokladně by se objevil text
     k plnění, které v objednávce vůbec není. */
  .consent-text{flex:1}
  .consent-text[hidden]{display:none}
  /* Poznámka ke složkám plnění pod souhrnem — přisazená k rozpisu, ať je čitelná jako
     jeho vysvětlivka, ne jako další odstavec. `[hidden]` ze stejného důvodu jako výš. */
  .sum-exempt{margin-top:6px}
  .sum-exempt[hidden]{display:none}

  /* Tlačítko je klikatelné i bez JS (server validuje znovu). JS ho jen dočasně zakáže
     přes native [disabled] (blokuje myš i klávesnici) do doplnění polí/souhlasů. */
  .paybtn{display:block;width:100%;border:0;background:var(--accent);color:var(--accent-ink);font-family:var(--body);font-size:16px;font-weight:600;padding:15px;border-radius:var(--radius);cursor:pointer;margin-top:14px;box-shadow:0 4px 14px rgb(245 158 11/.35);transition:all .15s}
  .paybtn:hover:not(:disabled){background:var(--accent-hover);color:var(--accent-ink)}
  .paybtn:disabled{opacity:.5;cursor:not-allowed;box-shadow:none}
  /* sekundární akce pod „Zaplatit" — jasně klikatelný únik z pokladny, vizuálně podřízený CTA */
  .cancelbtn{display:block;width:100%;box-sizing:border-box;margin-top:10px;padding:12px;text-align:center;
    border:1px solid var(--line);border-radius:var(--radius);background:#fff;color:var(--muted);
    font-family:var(--body);font-size:14.5px;font-weight:500;text-decoration:none;transition:all .15s}
  .cancelbtn:hover{border-color:var(--muted);color:var(--ink)}
  .alt{font-size:12.5px;color:var(--muted);text-align:center;margin-top:12px}
  .alt a{color:var(--primary)}
  /* Tři povinné dokumenty před tlačítkem (OP čl. 5.4). Na úzkém displeji se musí zalomit
     po celých názvech — rozpůlené „Poučení o odstoupení / od smlouvy" se hůř hledá očima. */
  .dokumenty{line-height:1.9}
  .dokumenty a{display:inline-block}
  /* Vratná částka po prvním stažení — třída, ne id: text je u Kompletu i u Kompletu
     na další rok a JS ji přepisuje ve všech výskytech. */
  .sum-vratne{white-space:nowrap}
  .safety{display:flex;justify-content:center;gap:18px;font-size:12px;color:var(--muted);margin-top:16px}

  .backline{padding:14px 0 6px;text-align:center}
  .backline a{font-size:13.5px;color:var(--muted);text-decoration:none}
  .backline a:hover{color:var(--primary)}
  @media(max-width:860px){.cols{grid-template-columns:1fr}.steps{flex-wrap:wrap;gap:8px}.steps .dash{width:24px}.order-summary{position:static}.checkout-actions{position:static}}
  @media(max-width:520px){
    .wrap{padding-inline:12px}
    .card{padding:22px 18px}
    .opt{display:grid;grid-template-columns:auto minmax(0,1fr);column-gap:10px;row-gap:6px;padding:14px}
    .opt>input[type=radio]{grid-column:1;grid-row:1/span 2}
    .opt .t{grid-column:2;min-width:0}
    .opt .pr{grid-column:2;display:flex;align-items:baseline;gap:7px}
    .opt .pr small{display:inline;text-align:left}
    .opt.disabled .t{grid-column:1/-1}
    .legal-overview{gap:10px}
    .legal-overview .legal-actions,.legal-details{padding:12px 13px}
  }

/* doplňky */
.errmsg{max-width:640px;margin:0 auto 18px;background:#FDECEA;border:1px solid #F5C6CB;color:#B91C1C;font-size:13.5px;border-radius:var(--radius);padding:11px 14px}
.opt.disabled{opacity:.6;cursor:default}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:0 14px}
.grid21{display:grid;grid-template-columns:2fr 1fr;gap:0 14px}
.opt-lbl{font-weight:400}
.firmline{margin-top:14px}
.prov{font-size:12px;color:var(--muted);text-align:center;margin:0 auto 44px;max-width:640px}
.alt#whynot{color:var(--accent-dark)}

/* Validace: chybné pole má červený rámeček (řízeno aria-invalid → funguje i bez JS,
   server ho nastaví při re-renderu). Hláška pod polem je stručná a konkrétní. */
.acct input[aria-invalid="true"],
.acct input[aria-invalid="true"]:focus{border-color:#DC2626;outline-color:#DC2626}
.consent.err{border-color:#DC2626;background:#FDECEA}
.field-err{color:#B91C1C;font-size:12.5px;margin:5px 0 2px;line-height:1.4}
.field-err[hidden]{display:none}
/* souhrn nad tlačítkem se po chybě zvýrazní (assertivně), ale zůstává nenápadný */
.alt#whynot.err{color:#B91C1C;font-weight:600}
