/* ============================================================================
   Wellness Booking – klientský portál (portal.css): jen rozložení obsahu.
   Vzhled je ze základu aplikace (portal/zaklad.css = _zaklad/zaklad.css) a
   z veřejného rámu (verejne/ram.css); tady nejsou barvy, písma ani stíny.
   ============================================================================ */
/* první karta pod hlavou stránky na stejném místě jako v aplikaci (y = 140 / telefon 124): hlavička 72 + 20 + hlava 32 + 16 */
.pt .vr-obsah { padding-top: 20px; }
/* portál je pracovní plocha klienta (tabulky): sloupec široký jako obsah aplikace, ne úzký sloupec veřejných stránek – nic se neustřihne (T 23. 10.: „nikdy max-width na tabulky“) */
body.pt.pt-klient { --vr-sirka: 1080px; }
/* nadpis nad kartou se záložkami: mezera 16 dává už sloupec (gap) – karta y = 140 / 124 */
.pt .vr-sloupec > .str-hlava:has(+ .card.s-hlavou), html.karta-jen-zalozky body.pt .vr-sloupec > .str-hlava:has(+ .card.s-hlavou) { margin-bottom: 0; }
.pt .vr-sloupec > .str-hlava { min-height: 32px; }
.pt .str-akce { display: flex; gap: 8px; margin-left: auto; }
/* záložky a název služby jsou odkazy – bez podtržení, jako tlačítka záložek v aplikaci */
.pt .zalozky > a, .pt a.t-odkaz { text-decoration: none; }
.pt a.t-odkaz { color: inherit; border-radius: 6px; }
.pt a.t-odkaz:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
/* tabulka v kartě: řádek je odkaz na detail */
.pt tr[data-href], .pt .rc[data-id] { cursor: pointer; }
.pt .t-time .t-day { margin-right: 6px; }
/* detail: dvojice popis – hodnota a akce pod nimi */
.pt .card > .popis + .form-akce, .pt .card > .popis + .form-pata { margin-top: 16px; }
.pt .card > .card-head + .popis { margin-top: 0; }
.pt-potvrzeni { align-items: center; }
.pt-potvrzeni-form { display: contents; }
.pt .pt-pod-popisem { margin: 16px 0 0; }
.pt .pt-tise { color: var(--muted); }
.pt-potvrzeni .pt-otazka { flex-basis: 100%; margin: 0 0 4px; font-size: 12.5px; line-height: 18px; color: var(--ink); }
.pt-potvrzeni .pole-blok { flex-basis: 100%; margin-bottom: 4px; }
/* přihlášení a registrace: jeden sloupec polí */
.pt-alt { margin: 0; text-align: center; font-size: 11.5px; line-height: 18px; color: var(--muted); }
.pt-alt a { color: var(--ink); text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 3px; text-decoration-color: var(--rz-line); border-radius: 6px; }
.pt-alt a:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
/* stránkování seznamu */
.pt .pt-dalsi { display: flex; justify-content: center; padding: 6px 0 12px; }
/* předplacené: velké číslo kreditu */
.pt .pt-zustatek { display: flex; align-items: baseline; gap: 8px; margin: 2px 0 6px; }
.pt .pt-zustatek .vr-cislo { font-size: 26px; }
.pt .pt-polozky { display: flex; flex-direction: column; }
.pt .pt-polozka { display: flex; align-items: center; justify-content: space-between; gap: 8px 16px; flex-wrap: wrap; padding: 12px 0; border-bottom: 1px solid var(--row-line); }
.pt .pt-polozka:first-child { padding-top: 0; }
.pt .pt-polozka:last-child { border-bottom: 0; padding-bottom: 0; }
.pt .pt-polozka-t { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.pt .pt-polozka-t b { font-weight: 450; font-size: 12.5px; line-height: 18px; color: var(--ink); }
.pt .pt-polozka-t span { font-size: 11.5px; line-height: 18px; color: var(--muted); }
@media (max-width: 640px) {
  .pt .pt-polozka > .dt-btn, .pt .pt-polozka > form { margin-left: auto; }
}
/* odkaz na PDF a kód poukazu v tabulce */
.pt a.pt-odkaz-pdf { font-size: 11.5px; line-height: 18px; color: var(--ink-2); text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 3px; text-decoration-color: var(--rz-line); border-radius: 6px; }
.pt a.pt-odkaz-pdf:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.pt .pt-kod { font-variant-numeric: tabular-nums; letter-spacing: .02em; }
.pt .card.flush > .prazdno { padding-top: 28px; padding-bottom: 32px; }
.pt .card.flush > .card-head + .tbl-scroll { margin-top: 10px; }
.pt .pt-nad-polem { margin: 0 0 14px; }
.pt .form-pata .mezera { flex: 1; }
.pt .pt-cena { align-self: center; font-size: 12.5px; color: var(--ink); white-space: nowrap; }
.pt .pt-pod-nadpisem { margin: 0 0 12px; font-size: 12.5px; line-height: 18px; color: var(--ink-2); }
.pt .popis.pt-terminy { display: grid; grid-template-columns: minmax(0, 1fr) auto; }
.pt .popis.pt-terminy dt, .pt .popis.pt-terminy dd { display: flex; align-items: center; min-height: 40px; padding: 0; border-bottom: 1px solid var(--row-line); }
.pt .popis.pt-terminy dt { font-size: 12.5px; color: var(--ink); }
/* datum a čas v Safari (iOS): hodnota svisle na středu pole jako u ostatních polí */
.pt input.pole[type="date"], .pt input.pole[type="time"] { -webkit-appearance: none; appearance: none; display: flex; align-items: center; }
.pt input.pole::-webkit-date-and-time-value { text-align: left; margin: 0; }
/* formulář začíná skrytým tokenem (@csrf): první oddíl karty má horní okraj jako první oddíl v aplikaci */
.pt .card > input[type="hidden"]:first-child + .nast-sekce { padding-top: 4px; }
.pt .card > input[type="hidden"]:first-child + .nast-sekce:last-child { padding-bottom: 4px; }
.pt .pt-oddil { margin: 18px 0 2px; }
.pt .pt-polozka > .form-akce { margin-top: 0; align-items: center; }
/* stránka s více kartami (Předplacené, detail série): prázdná karta je jen tak vysoká, jak je její obsah – ne do konce obrazovky jako seznam */
@media (min-width: 641px) { body[data-aktivni] .card.pt-cast:has(.prazdno):not(:has(tbody tr)) { min-height: 0; } }
.pt .prazdno-h + .dt-btn { margin-top: 10px; }
