/* Condosoft — štýly. Paleta a idiómy prevzaté z PKS Notes a PKS Pošty, aby
   všetky tri appky pôsobili ako jedna rodina. Rozloženie je dvojpanelové:
   vľavo zoznam, vpravo detail; na telefóne sa panely striedajú. */

:root {
  color-scheme: light dark;
  --akcent: #1c56a4;
  --akcent-hover: #16457f;
  --akcent-text: #1c56a4;
  --na-akcente: #ffffff;
  --pozadie: #f1f4f8;
  --plocha: #ffffff;
  --plocha-2: #f5f7fb;
  --text: #1b232e;
  --text-2: #5c6773;
  --okraj: #d6deea;
  --dobre: #15803d;
  --pozor: #d97706;
  --zle: #b91c1c;
  --chyba-bg: #fdf1f1;
  --toast-bg: #1e2a3a;
  --toast-text: #ffffff;
  --tien: 0 1px 2px rgba(15, 26, 45, .06), 0 2px 8px rgba(15, 26, 45, .08);
  --radius: 12px;
  /* Lišta nad zoznamom vľavo: podfarbená akcentom, aby sa nemiešala s domami. */
  --lista-zoznamu: color-mix(in srgb, var(--akcent) 7%, var(--plocha));
  --lista-zoznamu-okraj: color-mix(in srgb, var(--akcent) 24%, var(--okraj));
  --tien-pod: rgba(15, 26, 45, .16);
  /* Tri oblasti správy domu — farba v lište, nie klik. Fialová pre právo je
     zaužívaná; jantárová by sa plietla s výstrahou. Evidencia (spoločný základ)
     a Zostavy (výstupy) majú od 8. 10. 2026 vlastný tlmený tón: tyrkysovú a grafitovú
     — farba sekcie podfarbuje aj karty, bez nej by tieto dve ostali biele. */
  --oblast-spolocne:  #0e7c86;
  --oblast-ekonomika: #2f6fc0;
  --oblast-technika:  #1f9d55;
  --oblast-pravo:     #8b5cf6;
  --oblast-vystup:    #5f6b7a;
  /* Uzamknuté (vydané) obdobie — teplá oranžovočervená, „tade už neprejdeš“ (pripomienka 8. 10.). */
  --zamok: #c2410c;
}

/* Téma sa dá zvoliť aj ručne. Preto je média dopyt obmedzený na „používateľ si
   výslovne nevybral svetlú" — inak by voľba „svetlá" na telefóne s tmavým
   režimom nezabrala. */
@media (prefers-color-scheme: dark) {
  :root:not([data-tema="svetla"]) {
    --akcent: #2f6fc0; --akcent-hover: #3f7fce; --akcent-text: #77ade8;
    --pozadie: #0e131a; --plocha: #182029; --plocha-2: #1f2934;
    --text: #e6ecf3; --text-2: #9aa6b4; --okraj: #2c3744;
    --dobre: #22c55e; --pozor: #f59e0b; --zle: #f87171;
    --chyba-bg: #402a33; --toast-bg: #e6ecf3; --toast-text: #172029;
    --tien: 0 1px 2px rgba(0, 0, 0, .3), 0 2px 8px rgba(0, 0, 0, .35);
    --tien-pod: rgba(0, 0, 0, .5);
    --zamok: #fb923c;
  }
}
:root[data-tema="tmava"] {
  --akcent: #2f6fc0; --akcent-hover: #3f7fce; --akcent-text: #77ade8;
  --pozadie: #0e131a; --plocha: #182029; --plocha-2: #1f2934;
  --text: #e6ecf3; --text-2: #9aa6b4; --okraj: #2c3744;
  --dobre: #22c55e; --pozor: #f59e0b; --zle: #f87171;
  --chyba-bg: #402a33; --toast-bg: #e6ecf3; --toast-text: #172029;
  --tien: 0 1px 2px rgba(0, 0, 0, .3), 0 2px 8px rgba(0, 0, 0, .35);
  --tien-pod: rgba(0, 0, 0, .5);
  --zamok: #fb923c;
}

* { box-sizing: border-box; }
html, body { height: 100%; }
body {
  margin: 0; background: var(--pozadie); color: var(--text);
  font: 15px/1.45 -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  -webkit-text-size-adjust: 100%;
}
.skryte { display: none !important; }
.tiche { color: var(--text-2); }
.mensie { font-size: 13px; }
a { color: var(--akcent-text); text-decoration: none; }
a:hover { text-decoration: underline; }

/* ------------------------------------------------------------ prihlásenie */
.prihlasenie {
  min-height: 100%; display: grid; place-items: center; padding: 24px 16px;
}
.prihlas-karta { width: min(380px, 100%); display: grid; gap: 12px; }
.prihlas-karta h1 { margin: 0; font-size: 26px; letter-spacing: -.02em; }
.prihlas-karta > p:first-of-type { margin: -8px 0 6px; }
.prihlas-karta label { display: grid; gap: 4px; font-size: 13px; color: var(--text-2); }
.verzia { text-align: center; margin: 4px 0 0; opacity: .75; }

input, select, textarea {
  font: inherit; color: var(--text); background: var(--plocha);
  border: 1px solid var(--okraj); border-radius: 8px; padding: 9px 11px; width: 100%;
}
input:focus, select:focus { outline: 2px solid var(--akcent); outline-offset: -1px; }

.tlacidlo {
  font: inherit; cursor: pointer; border: 1px solid var(--okraj); border-radius: 8px;
  background: var(--plocha); color: var(--text); padding: 9px 14px;
}
.tlacidlo:hover { background: var(--plocha-2); }
.tlacidlo.hlavne { background: var(--akcent); border-color: var(--akcent); color: var(--na-akcente); }
.tlacidlo.hlavne:hover { background: var(--akcent-hover); }
.tlacidlo[disabled] { opacity: .6; cursor: default; }

.chyba {
  background: var(--chyba-bg); border: 1px solid var(--zle); color: var(--zle);
  border-radius: 8px; padding: 8px 10px; margin: 0; font-size: 14px;
}

.karta {
  background: var(--plocha); border: 1px solid var(--okraj);
  border-radius: var(--radius); box-shadow: var(--tien); padding: 16px;
}

/* ---------------------------------------------------------------- hlavička */
/* Hlavička je v akcentovej farbe s bielym textom — rovnako ako PKS Notes
   (`.hlavicka { background: var(--akcent); color: #fff }`), aby sa obe appky
   spoznali ako súrodenci. Ovládanie na nej je priesvitne biele. */
.hlavicka {
  display: flex; align-items: center; gap: 10px;
  padding: 8px 12px; background: var(--akcent); color: #fff; box-shadow: var(--tien);
}
/* Hlavička + lišta sekcií = jeden prilepený blok (index.php .vrch). */
.vrch { position: sticky; top: 0; z-index: 20; }
/* Podmenu sekcie je mimo bloku: na PC sa lepí pod neho ako druhá vrstva
   (výšku bloku dodáva app.js do --vrch-vyska), na telefóne ostáva v toku
   stránky a odíde s obsahom (pripomienka 22. 9.). */
.podmenu-obal:empty { display: none; }
.podmenu-obal .lista-podmenu { border-top: 0; border-bottom: 1px solid var(--okraj); }
@media (min-width: 761px) {
  .podmenu-obal { position: sticky; top: var(--vrch-vyska, 86px); z-index: 19; }
}
.znacka { font-weight: 700; font-size: 17px; color: #fff; letter-spacing: -.01em; }
.znacka:hover { text-decoration: none; color: #fff; }
.hladanie { flex: 1; min-width: 0; max-width: 520px; position: relative; }
.hladanie input { padding-right: 38px; }
.hladanie input::-webkit-search-cancel-button { -webkit-appearance: none; appearance: none; }
.hladaj-zrus {
  position: absolute; right: 7px; top: 50%; transform: translateY(-50%);
  width: 26px; height: 26px; border: 0; border-radius: 6px; cursor: pointer;
  background: rgba(255, 255, 255, .26); color: #fff; font: inherit; font-size: 17px; line-height: 1;
  display: grid; place-items: center; padding: 0;
}
.hladaj-zrus:hover { background: rgba(255, 255, 255, .4); }
.hladanie input {
  border-radius: 8px; background: rgba(255, 255, 255, .14); color: #fff;
  border-color: rgba(255, 255, 255, .4);
}
.hladanie input::placeholder { color: rgba(255, 255, 255, .78); }
.hladanie input:focus { outline-color: #fff; background: rgba(255, 255, 255, .22); }
.hlavicka .ikona { color: rgba(255, 255, 255, .9); }
.hlavicka .ikona:hover { background: rgba(255, 255, 255, .18); color: #fff; }
.hlavicka .tlacidlo.tichy {
  background: rgba(255, 255, 255, .14); color: #fff; border: 1px solid rgba(255, 255, 255, .4);
}
.hlavicka .tlacidlo.tichy:hover { background: rgba(255, 255, 255, .24); color: #fff; }
.hlavicka .tlacidlo.tichy[aria-expanded="true"] { background: rgba(255, 255, 255, .28); border-color: #fff; color: #fff; }
.hlavicka .ja .rola { color: rgba(255, 255, 255, .82); }
.hlavicka .ja-tl .sipka { opacity: .9; }
/* Admin a prihlásený užívateľ: DVE ROVNAKO VEĽKÉ tlačidlá (pripomienka 22. 9.).
   Ikona vľavo, text, šípka pri pravom okraji; dlhé meno sa skráti bodkami,
   tlačidlo nerastie. */
.hlavicka .menu-tl {
  display: inline-flex; align-items: center; gap: 8px; height: 38px; width: 176px;
  padding: 0 10px 0 12px; justify-content: flex-start; text-align: left; border-radius: 8px;
}
.hlavicka .menu-tl .sipka { margin-left: auto; font-size: 10px; opacity: .9; }
.hlavicka .menu-tl .ja-ikona { font-size: 15px; line-height: 1; flex: none; }
.hlavicka .ja { min-width: 0; }
.hlavicka .ja > span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ikona {
  font: inherit; font-size: 18px; line-height: 1; cursor: pointer;
  background: none; border: 1px solid transparent; border-radius: 8px;
  color: var(--text-2); padding: 7px 9px;
}
.ikona:hover { background: var(--plocha-2); color: var(--text); }
/* Zapnutý prepínač (zobrazenie zrušených záznamov) má byť vidieť na prvý pohľad. */
.ikona.zapnute { background: var(--plocha-2); color: var(--zle); border-color: var(--zle); }
.ja { display: grid; line-height: 1.15; text-align: left; font-size: 13px; }
.ja .rola { color: var(--text-2); font-size: 11px; }
.ja-tl { display: inline-flex; align-items: center; gap: 8px; }
.ja-tl .sipka { font-size: 10px; opacity: .7; }
.tlacidlo.tichy { background: none; border-color: transparent; color: var(--text-2); }
.tlacidlo.tichy:hover { background: var(--plocha-2); color: var(--text); }
.tlacidlo.tichy[aria-expanded="true"] { background: var(--plocha-2); color: var(--text); border-color: var(--okraj); }
/* Rozbaľovacie menu pod tlačidlom v hlavičke. */
.menu-kotva { position: relative; }
.rozbal {
  position: absolute; right: 0; top: calc(100% + 6px); min-width: 280px; z-index: 30;
  max-width: calc(100vw - 16px);   /* app.js ho posunie, aby nevybehlo cez okraj (r39) */
  background: var(--plocha); border: 1px solid var(--okraj); border-radius: 10px;
  box-shadow: var(--tien); padding: 6px; display: grid; gap: 2px;
}
.rozbal [role="menuitem"] {
  display: flex; align-items: center; gap: 8px; width: 100%; text-align: left;
  padding: 8px 10px; border: 0; border-radius: 8px; background: none;
  color: var(--text); font: inherit; font-size: 13px; cursor: pointer; text-decoration: none;
}
.rozbal [role="menuitem"]:hover { background: var(--plocha-2); text-decoration: none; }
.rozbal [role="menuitem"][aria-pressed="true"] { color: var(--zle); }
.rozbal [role="menuitem"][aria-pressed="true"]::after { content: '✓'; margin-left: auto; }
.rozbal .odznak { margin-left: auto; }

.pas {
  padding: 6px 14px; font-size: 13px; text-align: center;
  background: #fff7e8; color: #8a5200; border-bottom: 1px solid #f0d9ae;
}
:root[data-tema="tmava"] .pas { background: #3a2e17; color: #f0c987; border-bottom-color: #5a4520; }
@media (prefers-color-scheme: dark) {
  :root:not([data-tema="svetla"]) .pas { background: #3a2e17; color: #f0c987; border-bottom-color: #5a4520; }
}
.pas.tichy { background: var(--plocha-2); color: var(--text-2); border-bottom-color: var(--okraj); }

/* Testovacia verzia (condosoft-test.prvakosicka.sk): iná farba hlavičky,
   odznak TEST a pruhovaný pás. Farby sú rovnaké vo svetlej aj tmavej téme,
   je to výstraha. */
html[data-prostredie="test"] .hlavicka { background: #9a3412; }
.test-odznak {
  display: inline-block; margin-left: 6px; padding: 1px 6px; border-radius: 5px;
  font-size: 11px; font-weight: 700; letter-spacing: .06em; vertical-align: 2px;
  background: #fde047; color: #422006;
}
.test-znak {
  padding: 4px 8px; border-radius: 6px; text-align: center;
  font-size: 12px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase;
  background: #fde047; color: #422006;
}
html[data-prostredie="test"] .pas.test {
  background: repeating-linear-gradient(-45deg, #fde68a 0 14px, #fcd34d 14px 28px);
  color: #422006; border-bottom-color: #d97706;
}
.pas.test .tlacidlo { margin-left: 8px; padding: 2px 10px; font-size: 12px; }
/* „Obnoviť z ostrej“ vpravo v hlavičke nad tlačidlom Návod — pruhovaný pás sa nekreslí (užívateľ 10. 10. 2026).
   Žltá ako odznak TEST: výstraha, že ide o cvičné údaje. */
.hlavicka .test-obnov {
  margin-left: auto; flex: none; height: 34px; padding: 0 14px; border-radius: 8px; font-weight: 600;
  background: #fde047; color: #422006; border: 1px solid #facc15;
}
.hlavicka .test-obnov:hover { background: #fef08a; color: #422006; border-color: #fde047; }
.hlavicka .test-obnov { display: inline-flex; align-items: center; gap: 6px; }
.hlavicka .test-obnov .ik { font-size: 15px; line-height: 1; }
/* Telefón a úzky tablet: len ikona ↻ — celý text je v nápovede, do prvého riadku hlavičky sa musí zmestiť. */
@media (max-width: 860px) { .hlavicka .test-obnov .text { display: none; } .hlavicka .test-obnov { height: 36px; padding: 0 11px; } }

/* ----------------------------------------------------------------- plocha */
.plocha {
  display: grid; grid-template-columns: minmax(320px, 400px) 1fr;
  gap: 14px; padding: 14px; align-items: start;
}
.panel { min-width: 0; }
.zoznam { display: grid; gap: 8px; }
/* Ľavý panel má VLASTNÉ posúvanie a drží sa pod lištou (pripomienka 22. 9.):
   klik na dom dole v zozname už neodroluje stránku tak, že dom zmizne z dohľadu.
   Výšku prilepeného bloku hore dodáva app.js do --vrch-vyska. */
@media (min-width: 861px) {
  .zoznam {
    position: sticky; top: calc(var(--vrch-vyska, 100px) + var(--podmenu-vyska, 0px) + 14px);
    max-height: calc(100vh - var(--vrch-vyska, 100px) - var(--podmenu-vyska, 0px) - 28px);
    overflow-y: auto; scrollbar-width: thin; scrollbar-gutter: stable; padding-right: 18px;
    align-content: start;
  }
  /* Prilepená lišta: pás pozadia okolo nej schová rolované domy skôr, než sa
     jej dotknú, a tieň pod ňou ukáže, že zoznam ide popod ňu. */
  .zoznam-hlavicka {
    position: sticky; top: 0; z-index: 2; margin-bottom: 10px;
    box-shadow: 0 0 0 8px var(--pozadie), 0 14px 12px -8px var(--tien-pod);
  }
}

.polozka {
  display: block; width: 100%; text-align: left; cursor: pointer;
  background: var(--plocha); border: 1px solid var(--okraj); border-radius: var(--radius);
  padding: 10px 12px; color: var(--text); font: inherit;
}
.polozka:hover { border-color: var(--akcent); text-decoration: none; }
.polozka.vybrana { border-color: var(--akcent); box-shadow: inset 3px 0 0 var(--akcent); }
/* „← dom“ v sekcii (r38): zoznam domov sa ukáže a vybraný dom krátko zabliká —
   na PC je zoznam stále vľavo a bez toho by sa zdalo, že klik nič neurobil. */
.polozka.vybrana.blik { animation: polozka-blik 1.5s ease-out; }
@keyframes polozka-blik {
  0%, 35% { box-shadow: inset 3px 0 0 var(--akcent), 0 0 0 3px var(--akcent); }
  100%    { box-shadow: inset 3px 0 0 var(--akcent), 0 0 0 3px transparent; }
}
@media (prefers-reduced-motion: reduce) { .polozka.vybrana.blik { animation: none; } }
.polozka .nadpis { font-weight: 600; }
.bez-zlomu { white-space: nowrap; }   /* mesto a PSČ v názve domu sa nezalomia (r65) */
/* Evidenčné číslo domu — to, čím sa dom volá v rozhovore, nie technické id. */
.evc { color: var(--text-2); font-variant-numeric: tabular-nums; font-weight: 400; }
.polozka .popis { color: var(--text-2); font-size: 13px; margin-top: 2px; }
.polozka .cisla { color: var(--text-2); font-size: 12px; margin-top: 4px; }
/* Publikovanie (3. 11. 2026): riadok Všetky domy navrchu ľavého panela — oddelený od domov pod ním. */
.polozka-vsetky { border-style: dashed; margin-bottom: 4px; }
.polozka-vsetky.vybrana { border-style: solid; }
/* Pracovníci PKS: prepínač Všetky domy | Žiadny dom vedľa seba (3. 11. 2026 večer). */
.rozsah-prepinac { display: flex; gap: 6px; }
.rozsah-prepinac .polozka { flex: 1 1 0; min-width: 0; }

/* Tlačidlo, ktoré vyzerá ako odkaz — klikateľné modré (R88): počítadlo „Otvorilo X z Y“ otvorí rozpis. */
.tl-odkaz { background: none; border: 0; padding: 0; font: inherit; color: var(--akcent-text); cursor: pointer; text-align: inherit; }
.tl-odkaz:hover, .tl-odkaz:focus-visible { text-decoration: underline; }

/* Dom v ľavom paneli sa vie rozbaliť na vchody. Šípka je mimo odkazu (tlačidlo
   v odkaze je neplatné HTML), preto obal; klik na vchod filtruje obrazovku
   vpravo — priestory alebo užívateľov toho vchodu. */
.polozka-obal { position: relative; }
.polozka-obal.ma-vchody > .polozka { padding-right: 38px; }
.rozbal-vchody {
  position: absolute; right: 6px; top: 7px; border: 0; background: none; cursor: pointer;
  color: var(--text-2); font: inherit; font-size: 12px; padding: 5px 8px; border-radius: 6px;
  transition: transform .12s;
}
.rozbal-vchody:hover { background: var(--plocha-2); color: var(--text); }
.rozbal-vchody[aria-expanded="true"] { transform: rotate(90deg); }
.vchody {
  display: grid; gap: 3px; margin: 4px 0 2px 14px; padding-left: 10px;
  border-left: 2px solid var(--okraj);
}
.vchod {
  display: flex; justify-content: space-between; gap: 8px; align-items: baseline;
  padding: 5px 10px; border-radius: 8px; color: var(--text); font-size: 13px;
}
.vchod:hover { background: var(--plocha-2); text-decoration: none; }
.vchod.aktivny {
  background: color-mix(in srgb, var(--akcent) 12%, transparent);
  color: var(--akcent-text); font-weight: 600;
}
.vchod .pocet { color: var(--text-2); font-size: 12px; font-weight: 400; }

/* Filtre v detaile (vchody domu): vybraný svieti ako položka podmenu. Bez tučného písma —
   tlačidlo by pri výbere zmenilo šírku a posunulo susedov (r52, pripomienka 28. 9.). */
.filtre { display: flex; flex-wrap: wrap; gap: 6px; margin: 10px 0 0; align-items: center; }
.filtre .tlacidlo[aria-current="true"] {
  border-color: var(--akcent); color: var(--akcent-text);
  background: color-mix(in srgb, var(--akcent) 10%, var(--plocha));
}

.detail > .karta { margin-bottom: 14px; }
.detail h2 { margin: 0 0 2px; font-size: 20px; letter-spacing: -.01em; }
.detail h3 { margin: 0 0 10px; font-size: 15px; color: var(--text-2); text-transform: uppercase; letter-spacing: .04em; }
.drobky { font-size: 13px; color: var(--text-2); margin: 0 0 10px; }

/* Cesta späť. Drobky boli len text s odkazmi a nikto ich nepovažoval za
   ovládanie — návrat o úroveň vyššie je teraz tlačidlo, na ktoré sa dá trafiť
   aj palcom. */
.cesta { display: flex; flex-wrap: wrap; gap: 6px; margin: 0 0 10px; }
.cesta .tlacidlo { padding: 4px 10px; font-size: 13px; }
.spat-krok { font-weight: 600; }
.tlacidlo.tichy {
  background: transparent; border-color: transparent; color: var(--text-2);
}
.tlacidlo.tichy:hover { background: var(--plocha-2); color: var(--text); }
.drobky a::after { content: " ›"; color: var(--okraj); }

/* Dvojstĺpcový výpis údajov. Na telefóne sa zloží pod seba. */
.udaje { display: grid; grid-template-columns: auto 1fr; gap: 4px 14px; font-size: 14px; }
.udaje dt { color: var(--text-2); }
.udaje dd { margin: 0; }

table.tab { width: 100%; border-collapse: collapse; font-size: 14px; }
table.tab th {
  text-align: left; font-weight: 600; color: var(--text-2); font-size: 12px;
  text-transform: uppercase; letter-spacing: .03em; padding: 4px 8px; border-bottom: 1px solid var(--okraj);
}
table.tab td { padding: 6px 8px; border-bottom: 1px solid var(--okraj); vertical-align: top; }
table.tab tr:last-child td { border-bottom: none; }
table.tab td.cislo, table.tab th.cislo { text-align: right; font-variant-numeric: tabular-nums; }
table.tab tr.klik { cursor: pointer; }
table.tab tr.klik:hover td { background: var(--plocha-2); }
/* Čo sa dá otvoriť, je modré (R88, 27. 9.): v klikateľnom riadku je hlavná bunka odkaz (číslo bytu,
   meno, dom); pri prejdení myšou nad riadkom alebo fokuse sa podčiarkne. Akcie sú tlačidlá v rámčeku. */
table.tab tr.klik:hover a, table.tab tr.klik:focus-within a, a:focus-visible { text-decoration: underline; }
/* Prepínač ZAP / VYP namiesto zaškrtávacieho políčka (r41). */
.prepinac-tl {
  display: inline-flex; align-items: center; gap: 6px; padding: 3px 4px 3px 10px;
  border: 1px solid var(--okraj); border-radius: 999px; background: var(--plocha);
  color: var(--text-2); font: inherit; font-size: 12px; cursor: pointer; white-space: nowrap;
}
.prepinac-tl b {
  font-size: 10.5px; letter-spacing: .04em; padding: 1px 7px; border-radius: 999px;
  background: var(--plocha-2); color: var(--text-2);
}
.prepinac-tl:hover { border-color: var(--akcent); color: var(--text); }
.prepinac-tl[aria-pressed="true"] { border-color: var(--akcent); color: var(--text); }
.prepinac-tl[aria-pressed="true"] b { background: var(--akcent); color: #fff; }
/* Výber viacerých položiek tlačidlami ZAP/VYP (R88) — priestory strediska (r43). */
.prepinace { display: grid; gap: 8px; }
.prepinace-rychle { display: flex; flex-wrap: wrap; gap: 6px; }
.prepinace-zoznam { display: flex; flex-wrap: wrap; gap: 6px; max-height: 260px; overflow-y: auto; padding: 2px; }
.prepinac-volba {
  font: inherit; font-size: 13px; min-width: 44px; padding: 4px 10px; border-radius: 999px;
  border: 1px solid var(--okraj); background: var(--plocha); color: var(--text-2); cursor: pointer;
}
.prepinac-volba:hover { border-color: var(--akcent); color: var(--text); }
.prepinac-volba[aria-pressed="true"] { background: var(--akcent); border-color: var(--akcent); color: #fff; }
/* Listy vlastníctva: A) Stavba, B) Pozemky (r41). */
.lv-cast { margin: 12px 0 4px; font-size: 13px; font-weight: 600; color: var(--text-2); }
/* Ukončené záznamy (užívateľ, právny titul, účet, predseda SVB…) sa od platných
   odlíšia na prvý pohľad: tlmené, kurzívou, s jemným podkladom a šedým pásom
   vľavo. Platné ostávajú plné — kontrast robí rozdiel, nie ozdoba. */
table.tab tr.ukoncena { background: var(--plocha-2); }
table.tab tr.ukoncena td { color: var(--text-2); opacity: .8; }
/* Rozbalené odberné miesto (1.38.0, R125): meracie miesta a merače pod riadkom odberného miesta */
table.tab tr.om-det > td { background: var(--plocha-2); padding: 4px 12px 12px 24px; }
.om-detail .om-mm { margin-top: 8px; }
.om-detail .om-mm h4 { margin: 0; }
.om-detail table.tab { background: var(--plocha); margin-bottom: 4px; }
table.tab tr.ukoncena td:first-child { box-shadow: inset 3px 0 0 var(--okraj); }
table.tab tr.ukoncena td.akcie { opacity: 1; }
.podkarta.ukoncena { opacity: .72; border-style: dashed; }
.podkarta.ukoncena .odznak { opacity: 1; }

table.tab th.akcie, table.tab td.akcie { white-space: nowrap; text-align: right; }

.odznak {
  display: inline-block; font-size: 11px; padding: 1px 7px; border-radius: 999px;
  border: 1px solid var(--okraj); color: var(--text-2); background: var(--plocha-2);
  white-space: nowrap;
}
.odznak.dobry { color: var(--dobre); border-color: var(--dobre); background: transparent; }
.odznak.pozor { color: var(--pozor); border-color: var(--pozor); background: transparent; }
.odznak.zly   { color: var(--zle);   border-color: var(--zle);   background: transparent; }
/* Uzamknuté — vydaný mesiac alebo obdobie MPPi, ktoré doň siaha: zámok a teplá farba, nie zelená „v poriadku“. */
.odznak.zamok {
  color: var(--zamok); font-weight: 600;
  border-color: color-mix(in srgb, var(--zamok) 55%, transparent);
  background: color-mix(in srgb, var(--zamok) 12%, var(--plocha));
}

/* Sprievodca zmenou užívateľa (F1): úzke číselné polia v tabuľke (bázy, stavy meračov) a text chyby v riadku. */
input.uzke { width: 7.5em; text-align: right; padding: 5px 8px; }
.chyba-text { color: var(--zle); }

/* Zbaliteľná karta — obsah, ktorý treba len občas (pripomienka 8. 10.: Zmeny predpisu po mesiacoch). */
details.karta.zbal > summary {
  display: flex; align-items: baseline; justify-content: space-between; gap: 10px;
  cursor: pointer; list-style: none;
}
details.karta.zbal > summary::-webkit-details-marker { display: none; }
details.karta.zbal > summary h3 { margin: 0; }
details.karta.zbal > summary:hover h3 { color: var(--akcent-text); }
details.karta.zbal > summary .sipka-roz { display: inline-block; width: .9em; color: var(--text-2); transition: transform .12s; }
details.karta.zbal[open] > summary { margin-bottom: 10px; }
details.karta.zbal[open] > summary .sipka-roz { transform: rotate(90deg); }

.prazdne { color: var(--text-2); font-style: italic; padding: 6px 0; }
/* Voľba, čo sa má s bytom pri importe urobiť. Úzka, nech nerozhodí tabuľku. */
select.lv-akcia { margin-top: 4px; font-size: 12px; padding: 2px 4px; max-width: 26em; }
.sekcia-nadpis { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; }
.sekcia-nadpis .pocet { color: var(--text-2); font-size: 13px; }

/* Lišta nad zoznamom domov a nad výsledkami hľadania: vyššia, s odstupom od
   kraja a podfarbená, aby sa nemiešala s domami pod ňou (pripomienka 23. 9.). */
.zoznam-hlavicka {
  display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap;
  gap: 8px 10px; min-height: 50px; padding: 10px 12px;
  background: var(--lista-zoznamu); border: 1px solid var(--lista-zoznamu-okraj);
  border-radius: var(--radius);
}
.zoznam-hlavicka h3 { margin: 0; font-size: 13px; color: var(--akcent-text); text-transform: uppercase; letter-spacing: .04em; }
.zoznam-hlavicka h3 .pocet { color: var(--text-2); font-weight: 600; margin-left: 2px; }

.prepinac { display: flex; gap: 6px; font-size: 12px; color: var(--text-2); align-items: center; }
.prepinac input { width: auto; }

.toast {
  position: fixed; left: 50%; bottom: 20px; transform: translateX(-50%);
  background: var(--toast-bg); color: var(--toast-text); padding: 10px 16px;
  border-radius: 10px; font-size: 14px; z-index: 50; box-shadow: var(--tien);
}

/* ------------------------------------------------------------------ mobil */
@media (max-width: 860px) {
  .plocha { grid-template-columns: 1fr; padding: 10px; gap: 10px; }
  /* Na úzkej obrazovke je vidieť práve jeden panel — ten, ktorý si otvoril. */
  body[data-panel="detail"] .zoznam { display: none; }
  body[data-panel="zoznam"] .detail { display: none; }
  .hlavicka { gap: 6px; padding: 6px 8px; flex-wrap: wrap; }
  .znacka { font-size: 16px; }
  .ja, .ja-text { display: none; }
  .hlavicka .menu-tl { width: auto; height: 36px; padding: 0 10px; }
  .hladanie { order: 10; flex-basis: 100%; max-width: none; }
  .udaje { grid-template-columns: 1fr; gap: 0 0; }
  .udaje dt { margin-top: 8px; font-size: 12px; }
  table.tab { font-size: 13px; }
  table.tab th, table.tab td { padding: 5px 6px; }
  /* Nadpis objektu a jeho tlačidlá vedľa seba sa na telefóne nezmestia. */
  .sekcia-nadpis { flex-wrap: wrap; align-items: center; }
  .sekcia-nadpis > span { width: 100%; }
  .tlacidla.vlavo .tlacidlo { flex: 1 1 auto; }

  /* Široká tabuľka sa na telefóne posúva do strany a „Upraviť" končilo mimo
     obrazovky — pri účtoch domu a SIPO sa k nemu nedalo dostať vôbec. Stĺpec
     s tlačidlami je preto prilepený k pravému okraju a tabuľka sa posúva pod
     ním. Na monitore nič z toho netreba: tam sa tabuľka zmestí. */
  table.tab { display: block; overflow-x: auto; -webkit-overflow-scrolling: touch; }
  table.tab > thead, table.tab > tbody { display: table; width: 100%; }
  table.tab th.akcie, table.tab td.akcie {
    position: sticky; right: 0; z-index: 1;
    background: var(--karta-bg, var(--plocha));
    box-shadow: -8px 0 8px -8px rgba(0, 0, 0, .28);
  }
  .podkarta table.tab th.akcie, .podkarta table.tab td.akcie { background: var(--karta-bg, var(--plocha-2)); }
}
@media (min-width: 861px) { .spat { display: none !important; } }

/* ------------------------------------------------------------- formuláre */
.prekryv {
  position: fixed; inset: 0; z-index: 40; display: grid; place-items: center;
  background: rgba(10, 16, 24, .55); padding: 16px; overflow: auto;
}
/* Všetky dialógy sú široké ako vzorový „Nový merač priestoru" (pripomienka
   23. 9.) — pri 560 px boli polia krátke a rámčeky sa nezmestili. */
.dialog {
  width: min(760px, 100%); max-height: calc(100vh - 32px); overflow: auto;
  display: grid; gap: 12px;
}
.dialog h3 { margin: 0; font-size: 18px; color: var(--text); text-transform: none; letter-spacing: 0; }
/* Mriežka o šiestich stĺpcoch na monitore, jeden stĺpec na telefóne. Pole
   zaberá štandardne polovicu, krátke číslo tretinu alebo šestinu, dlhý text
   celú šírku (`sirka` v app.js). `minmax(0, …)`: dlhá voľba vo výbere nesmie
   rozšíriť svoj stĺpec. `start`: pole s nápovedou je vyššie a pri roztiahnutí
   by susedovi posunulo okienko pod úroveň ostatných (pripomienka 23. 9.). */
.polia, .polia-vnutri {
  display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 10px; align-items: start;
}
.polia > *, .polia-vnutri > * { grid-column: span 3; }
.polia > .pole-siroke, .polia-vnutri > .pole-siroke, .polia > .skupina-poli { grid-column: 1 / -1; }
.polia > .pole-dvetretiny, .polia-vnutri > .pole-dvetretiny { grid-column: span 4; }
.polia > .pole-tretina, .polia-vnutri > .pole-tretina { grid-column: span 2; }
.polia > .pole-sestina, .polia-vnutri > .pole-sestina { grid-column: span 1; }
.pole { display: grid; gap: 3px; font-size: 13px; color: var(--text-2); }
.pole-siroke { grid-column: 1 / -1; }
/* Zoznam domov v dialógu o rozsahu. Nie je ich veľa, ale ani málo — preto
   vlastný posuvník a nie rozbaľovacie pole, v ktorom nevidno, čo je vybrané. */
.zoznam-volieb {
  max-height: 180px; overflow: auto; border: 1px solid var(--okraj);
  border-radius: 8px; padding: 6px 8px; background: var(--plocha);
  display: grid; gap: 2px;
}
.zoznam-volieb label { display: flex; gap: 8px; align-items: center; color: var(--text); }
.zoznam-volieb input { width: auto; }
/* Vchody do strediska (r53): dom ako nadpis so zaškrtnutím všetkých jeho vchodov, vchody odsadené. */
.stredisko-vchody .stredisko-dom { margin-top: 6px; }
.stredisko-vchody .stredisko-dom:first-child { margin-top: 0; }
.stredisko-vchody .stredisko-vchod { padding-left: 24px; }
/* Zaškrtávacie pole: políčko, vedľa neho text, pod textom nápoveda. */
.pole-check { grid-template-columns: auto 1fr; align-items: center; column-gap: 8px; row-gap: 3px; }
/* Zaškrtávacie pole je mriežková položka: bez `justify-self` by ho
   `width: auto` roztiahlo cez celý stĺpec a vyzeralo by ako dlhý pruh. */
.pole-check input { width: auto; justify-self: start; }
.pole textarea { resize: vertical; line-height: 1.45; }
.pole-check > .napoveda { grid-column: 2; }
/* Vedľa bežného poľa sedí políčko v úrovni jeho okienka, nie popisu: odsadí sa
   o riadok popisu a prvý riadok má výšku okienka (13 px × 1,45 + 2 × 9 + 2 × 1). */
.polia > .pole-check:not(.pole-siroke),
.polia-vnutri > .pole-check:not(.pole-siroke) {
  margin-top: calc(1.45em + 3px); grid-template-rows: minmax(calc(1.45em + 20px), auto);
}
.napoveda { font-style: normal; font-size: 12px; color: var(--text-2); opacity: .85; }
.tlacidla { display: flex; gap: 8px; justify-content: flex-end; flex-wrap: wrap; }
.tlacidla.vlavo { justify-content: flex-start; margin-top: 12px; }
/* Rámček skupiny polí. Každá položka predpisu má vlastný rámček a v ňom vždy
   to isté: bázu, úpravu a vypínač — aj tam, kde sa báza nezadáva. Rovnaký tvar
   sa číta; striedavý tvar sa lúšti. */
.skupina-poli {
  grid-column: 1 / -1; margin: 0; padding: 2px 12px 12px;
  border: 1px solid var(--okraj); border-radius: 10px; background: var(--plocha-2);
  display: grid; gap: 8px;
}
.skupina-poli > legend { padding: 0 6px; font-size: 13px; font-weight: 600; color: var(--text); }
.skupina-hlava { display: flex; justify-content: space-between; align-items: baseline; gap: 10px; }
.skupina-popis { font-size: 12px; color: var(--text-2); }
.skupina-suma {
  font-size: 13px; font-weight: 600; color: var(--text);
  font-variant-numeric: tabular-nums; white-space: nowrap;
}
.skupina-poli.vypnuta { opacity: .5; }
/* `trojica` je pre rámčeky, kde tretie pole je vypínač a nemá zaberať tretinu
   šírky — tam vlastné tri stĺpce a polia bez rozpätia. */
.polia-vnutri.trojica { grid-template-columns: 1fr 1fr auto; align-items: end; }
.polia-vnutri.trojica > * { grid-column: auto; }
.pole-hodnota { font-size: 13px; color: var(--text-2); padding: 9px 0; }
/* Zoznam na výber (formulár stránky, 3. 11. 2026 večer): riadok na položku, vybraný zvýraznený, za menom stĺpce
   s políčkami, nad ním hľadanie a počet, pod ním súhrn vybraných — pri desiatkach kolegov a domov sa výber nestratí. */
.vz { display: grid; gap: 6px; }
.vz-lista { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 12px; font-size: 13px; }
.vz-lista .vz-hladaj { flex: 1 1 200px; width: auto; min-width: 150px; padding: 6px 9px; }
.vz-len { display: inline-flex; gap: 5px; align-items: center; font-size: 12px; color: var(--text-2); cursor: pointer; }
.vz-len input { width: auto; }
.vz-pocet { margin-left: auto; font-size: 12px; color: var(--text-2); font-variant-numeric: tabular-nums; white-space: nowrap; }
.vz-hlavicka, .vz-riadok {
  display: grid; grid-template-columns: minmax(0, 1fr) repeat(var(--z-stlpcov, 0), 108px); align-items: center;
}
.vz-hlavicka {
  padding: 0 0 2px 8px; font-size: 11px; color: var(--text-2); text-transform: uppercase; letter-spacing: .03em;
}
.vz-hl-bunka { display: grid; justify-items: center; text-align: center; line-height: 1.25; gap: 1px; }
.vz-hl-bunka .tl-odkaz { font-size: 11px; text-transform: none; letter-spacing: 0; }
.vz-riadky {
  max-height: 252px; overflow-y: auto; border: 1px solid var(--okraj); border-radius: 8px; background: var(--plocha);
}
.vz-nic { margin: 0; padding: 8px 10px; }
.vz-riadok { border-bottom: 1px solid color-mix(in srgb, var(--okraj) 55%, transparent); }
.vz-riadok:last-child { border-bottom: 0; }
.vz-riadok[hidden], .vz-skupina[hidden] { display: none; }
.vz-riadok:hover { background: var(--plocha-2); }
.vz-volba {
  display: flex; align-items: center; gap: 8px; width: 100%; min-width: 0; padding: 6px 8px; text-align: left;
  font: inherit; font-size: 13px; color: var(--text); background: none; border: 0; cursor: pointer;
}
.vz-volba:focus-visible { outline: 2px solid var(--akcent); outline-offset: -2px; }
.vz-znak {
  flex: none; display: grid; place-items: center; width: 16px; height: 16px; border-radius: 4px;
  border: 1.5px solid var(--okraj); background: var(--plocha); color: #fff; font-size: 11px; line-height: 1;
}
.vz-riadok.vybrany { background: color-mix(in srgb, var(--akcent) 13%, var(--plocha)); box-shadow: inset 3px 0 0 var(--akcent); }
.vz-riadok.vybrany .vz-volba { font-weight: 600; }
.vz-riadok.vybrany .vz-znak { background: var(--akcent); border-color: var(--akcent); }
.vz-riadok.vybrany .vz-znak::after { content: "✓"; }
.vz-bunka { display: grid; place-items: center; padding: 4px 0; cursor: pointer; }
.vz-bunka input { width: 16px; height: 16px; margin: 0; cursor: pointer; }
.vz-riadok:not(.vybrany) .vz-bunka { opacity: .4; }
.vz-riadok:not(.vybrany) .vz-bunka:hover { opacity: .85; }
.vz-skupina {
  position: sticky; top: 0; z-index: 1; display: flex; justify-content: space-between; align-items: baseline; gap: 8px;
  padding: 5px 8px 3px; font-size: 12px; font-weight: 600; color: var(--text-2);
  background: var(--plocha-2); border-bottom: 1px solid var(--okraj);
}
.vz-riadok.v-skupine .vz-volba { padding-left: 22px; }
.vz-suhrn { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 6px; min-height: 22px; }
.vz-cip {
  display: inline-flex; align-items: center; gap: 1px; padding: 1px 2px 1px 8px; border-radius: 999px; font-size: 12px; color: var(--text);
  background: color-mix(in srgb, var(--akcent) 11%, var(--plocha)); border: 1px solid color-mix(in srgb, var(--akcent) 32%, var(--okraj));
}
.vz-cip button {
  padding: 0 5px; border: 0; border-radius: 999px; background: none; color: var(--text-2);
  font: inherit; font-size: 14px; line-height: 1.1; cursor: pointer;
}
.vz-cip button:hover { color: var(--zle); background: var(--plocha-2); }
/* Zamknutý zoznam (Všetci kolegovia): vybraní sú všetci, menia sa len stĺpce za menom. */
.vz-zamknuty .vz-rychle, .vz-zamknuty .vz-len, .vz-zamknuty .vz-suhrn { display: none; }
.vz-zamknuty .vz-volba { cursor: default; }
@media (max-width: 560px) {
  .vz-hlavicka, .vz-riadok { grid-template-columns: minmax(0, 1fr) repeat(var(--z-stlpcov, 0), 76px); }
  .vz-hlavicka { font-size: 10px; }
}
/* Jedna z volieb ako rad tlačidiel (Týka sa: Žiadny dom | Vybrané domy | Vybrané vchody | Všetky domy). */
.segment {
  display: inline-flex; flex-wrap: wrap; max-width: 100%; justify-self: start; overflow: hidden;
  border: 1px solid var(--okraj); border-radius: 9px; background: var(--plocha);
}
.segment [role="radio"] {
  padding: 7px 14px; border: 0; border-right: 1px solid var(--okraj); background: none;
  font: inherit; font-size: 13px; color: var(--text-2); cursor: pointer;
}
.segment [role="radio"]:last-child { border-right: 0; }
.segment [role="radio"]:hover { background: var(--plocha-2); color: var(--text); }
.segment [role="radio"][aria-checked="true"] { background: var(--akcent); color: #fff; font-weight: 600; }
.segment [role="radio"]:focus-visible { outline: 2px solid var(--akcent); outline-offset: -3px; }
.segment-popis { margin: 0; font-size: 12px; color: var(--text-2); }
.segment-popis:empty { display: none; }
/* Súčet drží hore aj pri rolovaní — inak by človek pri desiatej položke
   nevidel, čo tým robí s celkovou sumou. */
.suhrn {
  position: sticky; top: 0; z-index: 1; margin: 0; padding: 8px 0;
  background: var(--plocha); border-bottom: 1px solid var(--okraj);
  display: flex; justify-content: space-between; align-items: baseline; gap: 10px;
  font-size: 14px; color: var(--text-2);
}
.suhrn strong { font-size: 16px; color: var(--text); font-variant-numeric: tabular-nums; }
@media (max-width: 620px) {
  .polia, .polia-vnutri, .polia-vnutri.trojica { grid-template-columns: 1fr; }
  .polia > .pole, .polia-vnutri > .pole { grid-column: 1 / -1; }
  .polia > .pole-check:not(.pole-siroke),
  .polia-vnutri > .pole-check:not(.pole-siroke) { margin-top: 0; grid-template-rows: none; }
}

/* Zrolovateľná šablóna. Domov s piatimi šablónami je dosť na to, aby sa
   nezmestili na obrazovku naraz; zbalená je z nej jeden riadok a vidieť, čo
   je kedy platilo. Natívne <details> preto, že vie klávesnicu aj hľadanie
   v stránke bez toho, aby sme to museli písať. */
.podkarta > summary {
  display: flex; align-items: baseline; justify-content: space-between; gap: 10px;
  cursor: pointer; list-style: none; padding: 2px 0;
}
.podkarta > summary::-webkit-details-marker { display: none; }
.podkarta > summary:hover { color: var(--akcent-text); }
.podkarta > summary .sipka-roz {
  display: inline-block; width: .9em; color: var(--text-2); transition: transform .12s;
}
.podkarta[open] > summary .sipka-roz { transform: rotate(90deg); }
@media (max-width: 620px) {
  .podkarta > summary { flex-wrap: wrap; }
  .podkarta > summary > span { width: 100%; }
}

/* Malé tlačidlo v hlavičke objektu — nesmie prevýšiť nadpis. */
.tlacidlo.maly { padding: 4px 9px; font-size: 13px; }
.sekcia-nadpis > span { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.zoznam-akcie { display: flex; align-items: center; gap: 8px; }
/* Jeden list vlastníctva vnútri karty „Listy vlastníctva". */
.podkarta {
  border: 1px solid var(--okraj); border-radius: 10px; padding: 10px 12px; margin-bottom: 10px;
  background: var(--plocha-2);
}
.podkarta:last-child { margin-bottom: 0; }

/* Prehliadač priečinkov v Nextcloude. Výška je zastropovaná, aby dialóg
   nevyrástol nad obrazovku pri priečinku s deväťdesiatimi domami. */
.nc-zoznam { display: grid; gap: 6px; max-height: min(52vh, 420px); overflow: auto; }
.nc-zoznam .polozka { display: flex; justify-content: space-between; gap: 10px; }
.nc-zoznam .polozka .tiche { font-size: 12px; }

/* Lišta sekcií pod hlavičkou. Na úzkej obrazovke sa posúva do strany —
   skladať ju do „hamburgera" by znamenalo klik navyše pri každom prepnutí. */
.lista { background: var(--plocha); border-bottom: 1px solid var(--okraj); }
.lista:empty { display: none; }
.lista-riadok {
  display: flex; gap: 2px; padding: 0 8px; overflow-x: auto; scrollbar-width: thin;
}
/* Podmenu: SKUPINY POD SEBOU (pripomienka 22. 9.). Dva stĺpce — názov skupiny
   vľavo, jej tlačidlá vpravo — takže názvy stoja v jednej zvislici a riadky sa
   čítajú ako obsah. Rôzne kategórie v jednom riadku sa čítali ako jedna.
   Sekcia bez skupín má jediný riadok bez názvu. */
.lista-podmenu {
  display: grid; grid-template-columns: max-content 1fr; gap: 5px 14px; padding: 7px 12px;
  align-items: center; background: var(--plocha-2); border-top: 1px solid var(--okraj);
}
.lista-podmenu.bez-skupin { grid-template-columns: 1fr; }
.podmenu-riadok { display: contents; }
.podmenu-tlacidla { display: flex; flex-wrap: wrap; gap: 4px 6px; align-items: center; min-width: 0; }
.lista-podmenu button[aria-current="page"] {
  border-color: var(--akcent); color: var(--akcent-text); font-weight: 600;
  background: color-mix(in srgb, var(--akcent) 10%, var(--plocha));
}
.lista-podmenu button {
  border: 1px solid var(--okraj); background: var(--plocha); cursor: pointer;
  color: var(--text); font: inherit; font-size: 13px; padding: 4px 10px;
  border-radius: 8px; display: inline-flex; align-items: center; justify-content: center; gap: 6px;
}
.lista-podmenu button:hover { border-color: var(--akcent); }
/* Nehotová položka: prerušovaný okraj, tlmená farba, malý znak s tooltipom. */
.lista-podmenu button.pripravuje { border-style: dashed; color: var(--text-2); }
.lista-podmenu .znak-pripravuje { font-size: 11px; opacity: .75; letter-spacing: -.05em; }
.lista-podmenu .odznak { font-size: 10px; }
.lista-podmenu .skupina {
  font-size: 11px; color: var(--text-2); text-transform: uppercase;
  letter-spacing: .04em; white-space: nowrap; line-height: 1.2;
}
@media (max-width: 760px) {
  /* Na telefóne názov skupiny NAD tlačidlami — dva stĺpce by vzali polovicu šírky. */
  .lista-podmenu { grid-template-columns: 1fr; gap: 3px; }
  .lista-podmenu .skupina { margin-top: 4px; }
}
/* PC: podlišta PEVNEJ VEĽKOSTI — vždy tri riadky rovnakej výšky, stĺpec názvov skupín rovnako široký vo všetkých
   sekciách a tlačidlá v mriežke štyroch rovnako širokých stĺpcov (šírku najdlhšej položky zo všetkých sekcií dodá
   app.js), takže tlačidlá lícujú a obsah pod podlištou sa pri prepínaní sekcií nehýbe (užívateľ 10. 10. 2026).
   Sekcia s menej riadkami (Admin) má prázdne riadky. Tablet a telefón ostávajú pružné. */
@media (min-width: 1100px) {
  /* miesto pre posuvník stránky stále — obrazovka s posuvníkom a bez neho sa neposúva do strany */
  html { scrollbar-gutter: stable; }
  .lista-podmenu, .lista-podmenu.bez-skupin {
    grid-template-columns: var(--podmenu-skupina, 170px) minmax(0, 1fr);
    grid-template-rows: repeat(3, 28px); gap: 5px 14px; align-content: center;
  }
  .podmenu-tlacidla { display: grid; grid-template-columns: repeat(4, minmax(0, var(--podmenu-tl, 200px))); gap: 6px; }
  .lista-podmenu button { height: 28px; padding: 0 10px; min-width: 0; overflow: hidden; white-space: nowrap; }
  .lista-podmenu.podmenu-meranie { display: block; }
}
/* Tlačidlá sekcií: ROVNAKÁ ŠÍRKA bez ohľadu na dĺžku názvu, s ikonou (pripomienka
   22. 9.). `flex: 1 1 0` delí riadok rovnomerne; `min-width: max-content` nedovolí
   „BANKA A PLATBY" zlomiť — keď sa nezmestia, riadok sa posúva do strany. */
.lista .sekcia {
  border: 0; background: none; cursor: pointer; color: var(--text-2);
  font: inherit; font-size: 12px; padding: 8px 6px; white-space: nowrap;
  border-bottom: 2px solid transparent; border-top: 2px solid transparent;
  text-transform: uppercase; letter-spacing: .03em;
  display: inline-flex; align-items: center; justify-content: center; gap: 6px;
  /* Rovnaká pevná šírka, nie roztiahnutie cez celú obrazovku (pripomienka 22. 9.).
     142 px × 8 + oddeľovače ≈ 1 225 px — zmestí sa aj do okna 1 240 px;
     najdlhšie „Banka a platby" má prirodzene 132 px. */
  flex: 0 0 auto; width: 142px; min-width: max-content;
}
.lista .sekcia .ik { width: 17px; height: 17px; flex: none; opacity: .85; }
.lista .sekcia:hover { color: var(--text); background: var(--plocha-2); }
/* Vybraná sekcia ostáva vybraná, kým z nej človek neodíde — je to režim,
   v ktorom pracuje, nie odkaz, na ktorý práve klikol. */
.lista .sekcia.aktivna {
  color: var(--akcent-text); border-bottom-color: var(--akcent); font-weight: 600;
  background: color-mix(in srgb, var(--akcent) 12%, transparent);
}
.lista .sekcia.aktivna .ik { opacity: 1; }
/* Oblasť správy: farebný okraj ZHORA AJ ZDOLA tlačidla sekcie, tlačidlá samotné ostávajú ako pôvodne (pripomienky
   8. 10. 2026: „zvýrazni menu množstvom farby“, potom „hore nechaj farebne iba ohraničenie zhora a zdola, samotné
   buttoniky nechaj ako pôvodne“). Vybraná sekcia je podfarbená akcentom ako doteraz. Farbu nesie premenná --c podľa
   data-oblast; tú istú si od <body data-oblast> (kresliListu) berie horný panel obrazovky. Podmenu je bez farby. */
.lista .sekcia[data-oblast="spolocne"],  body[data-oblast="spolocne"]  { --c: var(--oblast-spolocne); }
.lista .sekcia[data-oblast="ekonomika"], body[data-oblast="ekonomika"] { --c: var(--oblast-ekonomika); }
.lista .sekcia[data-oblast="technika"],  body[data-oblast="technika"]  { --c: var(--oblast-technika); }
.lista .sekcia[data-oblast="pravo"],     body[data-oblast="pravo"]     { --c: var(--oblast-pravo); }
.lista .sekcia[data-oblast="vystup"],    body[data-oblast="vystup"]    { --c: var(--oblast-vystup); }
.lista .sekcia[data-oblast] {
  border-top: 4px solid var(--c, transparent);
  border-bottom: 4px solid var(--c, transparent);
}
/* Horný panel obrazovky — prvá karta v detaile (app.js detailHTML ju označí .karta-hlavna), napríklad karta domu
   s tlačidlami Upraviť dom a + Vchod / sekcia — jemne vo farbe sekcie. Karty pod ním ostávajú biele (pripomienka
   8. 10. 2026). --karta-bg si berie aj prilepený stĺpec akcií na telefóne. */
body[data-oblast] #detail .karta-hlavna {
  --karta-bg: color-mix(in srgb, var(--c, var(--akcent)) 7%, var(--plocha));
  background: var(--karta-bg);
  border-color: color-mix(in srgb, var(--c, var(--akcent)) 28%, var(--okraj));
  border-top: 3px solid color-mix(in srgb, var(--c, var(--akcent)) 60%, var(--plocha));
}
body[data-oblast] #detail .karta-hlavna .podkarta {
  --karta-bg: color-mix(in srgb, var(--c, var(--akcent)) 12%, var(--plocha));
  background: var(--karta-bg);
  border-color: color-mix(in srgb, var(--c, var(--akcent)) 20%, var(--okraj));
}
.lista-oddelovac { flex: 0 0 1px; align-self: stretch; margin: 9px 6px; background: var(--okraj); }
@media (max-width: 760px) { .lista .sekcia { flex: 0 0 auto; } }

/* IBAN sa číta po štvoriciach, preto rovnako široké číslice. */
.iban { font-variant-numeric: tabular-nums; }
input.iban, input.rc { letter-spacing: .04em; }
.napoveda.dobra { color: var(--dobre); opacity: 1; }
.napoveda.zla   { color: var(--zle);   opacity: 1; }

/* Pripojené dokumenty. Sú to ODKAZY do cloudu, nie kópie — preto spinka
   a nie ikona súboru. Každý na vlastnom riadku: k jednej zmluve ich býva
   viac (dodatky) a vedľa seba by sa dlhé názvy nedali rozoznať. */
.dokumenty { list-style: none; margin: 6px 0 0; padding: 0; display: grid; gap: 4px; }
.dokument {
  display: flex; align-items: center; gap: 8px;
  border: 1px solid var(--okraj); border-radius: 8px; padding: 3px 4px 3px 10px;
  font-size: 12px; background: var(--plocha-2);
}
.dokument a { color: var(--text); flex: 1 1 auto; min-width: 0; overflow-wrap: break-word; }
/* Dokumenty pod riadkom tabuľky — bez horného orámovania, aby bolo vidno,
   že patria k záznamu nad nimi, a nie že sú ďalší záznam. */
.riadok-dokumentov > td { border-top: 0; padding-top: 0; }
.dokument .tiche { flex: 0 0 auto; }
.dokument .nastroje { flex: 0 0 auto; margin-left: auto; white-space: nowrap; }
.dokument .odpoj {
  border: 0; background: none; cursor: pointer; color: var(--text-2);
  font: inherit; font-size: 14px; line-height: 1; padding: 0 4px;
}
.dokument .odpoj:hover { color: var(--zle); }
/* R141: zverejnenie dokumentu — doterajšie zverejnenia v dialógu (komu, platnosť, štatistika, Zrušiť). */
.zv-zoznam { list-style: none; margin: 4px 0 10px; padding: 0; display: grid; gap: 6px; }
.zv-zoznam li { display: flex; align-items: flex-start; gap: 10px; border: 1px solid var(--okraj); border-radius: 8px;
                padding: 6px 8px 6px 10px; background: var(--plocha-2); }
.zv-zoznam li > span { flex: 1 1 auto; min-width: 0; overflow-wrap: break-word; }
.zv-zoznam li > button { flex: 0 0 auto; }

/* Zaškrtnutý súbor v prehliadači cloudu. */
.nc-zoznam .polozka.vybrana { border-color: var(--akcent); background: var(--plocha-2); }
.podkarta table.tab { margin-top: 8px; }

/* Prehľad vydaných predpisov: vybraný dom v tabuli, malé akcie v bunke,
   sumy so zarovnanými číslicami. */
table.tab tr.vybrana td { background: color-mix(in srgb, var(--akcent) 8%, transparent); }
.mini-akcie { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 4px; }
.cislo-mpp { font-variant-numeric: tabular-nums; white-space: nowrap; }

/* Výber obdobia v zostavách: úzky select v riadku filtrov, nie na celú šírku. Najviac šírka karty — dlhý názov
   dodávateľa vo výbere faktúr (R150) by ju inak pretiahol. */
.filtre select { width: auto; max-width: 100%; padding: 4px 8px; font-size: 13px; }
.filtre input { width: auto; padding: 4px 8px; font-size: 13px; }
input.pole-mesiaca { width: 6.5em; text-align: center; font-variant-numeric: tabular-nums; }
/* Voľby podpisovej listiny (R143) v riadku zostavy: druh listiny vedľa textu pod nadpisom, na úzkom displeji pod sebou. */
.zost-volby { display: grid; grid-template-columns: minmax(150px, 210px) minmax(0, 1fr); gap: 8px 12px; align-items: start; margin-top: 8px; max-width: 760px; }
.zost-volby textarea { resize: vertical; line-height: 1.45; }
@media (max-width: 560px) { .zost-volby { grid-template-columns: minmax(0, 1fr); } }
input[aria-invalid="true"] { border-color: var(--zle); background: var(--chyba-bg); }

/* Výpisy z účtu, krok 1: náhľad */
table.tab td.bv-plus { color: var(--dobre); }
table.tab tr.bv-rucne td { background: color-mix(in srgb, var(--pozor) 7%, transparent); }

/* Identifikácia obratov (r65): druh pohybu je tlačidlo, ktoré otvorí rozhodnutie — modré ako odkaz (R88). */
button.bi-otvor { font: inherit; font-weight: 600; color: var(--akcent-text); background: none; border: 0; padding: 0;
  cursor: pointer; text-align: left; }
table.tab tr.klik:hover button.bi-otvor, button.bi-otvor:focus-visible { text-decoration: underline; }
.obal-tab { overflow-x: auto; }
.bi-detail { margin: 0 0 12px; }
.bi-rozdel { margin: 0 0 8px; }
table.tab td.bi-akcie { white-space: nowrap; text-align: right; }
table.tab td.bi-akcie .tlacidlo + .tlacidlo { margin-left: 4px; }
.bi-rozdel-nastroje { grid-column: 1 / -1; display: flex; flex-direction: column; gap: 8px; }
.bi-rozdel-nastroje .tlacidla { margin: 0; }
/* Kontrola súčtov rozdelenia (5. 10. 2026): zelený rámček pri zhode, svetločervený pri nesúlade. */
.bi-sucet { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 4px 14px; padding: 8px 12px;
  border: 1px solid var(--okraj); border-radius: 8px; font-variant-numeric: tabular-nums; }
.bi-sucet > div { display: flex; flex-direction: column; gap: 1px; min-width: 0; }
.bi-sucet span { font-size: 12px; color: var(--text-2); }
.bi-sucet b { font-size: 15px; }
.bi-sucet.sedi { background: color-mix(in srgb, var(--dobre) 14%, var(--plocha)); border-color: var(--dobre); }
.bi-sucet.sedi b[data-s="rozdiel"] { color: var(--dobre); }
.bi-sucet.nesedi { background: color-mix(in srgb, var(--zle) 10%, var(--plocha)); border-color: color-mix(in srgb, var(--zle) 55%, var(--plocha)); }
.bi-sucet.nesedi b[data-s="rozdiel"] { color: var(--zle); }
.bi-sucet-problem { margin: 0; color: var(--zle); font-size: 13px; }
select[aria-invalid="true"] { border-color: var(--zle); background: var(--chyba-bg); }
@media (max-width: 520px) { .bi-sucet { grid-template-columns: minmax(0, 1fr); } }

/* Schôdze a hlasovanie (r31): záložky, otázky, zápis listiny, výsledok. */
.hl-zalozky { display: flex; flex-wrap: wrap; gap: 4px; border-bottom: 1px solid var(--okraj); margin-top: 10px; }
.hl-zalozky button { font: inherit; border: 0; background: none; padding: 8px 12px; cursor: pointer; color: var(--text-2);
  border-bottom: 2px solid transparent; margin-bottom: -1px; }
/* Vybraná záložka bez tučného písma: šírka sa výberom nemení (r52). */
.hl-zalozky button[aria-selected="true"] { color: var(--akcent-text); border-bottom-color: var(--akcent); }
.hl-obal { overflow-x: auto; }
.hl-otazka { border: 1px solid var(--okraj); border-radius: 10px; padding: 10px 12px; display: grid; gap: 8px; margin-bottom: 10px; }
.hl-otazka-hlava { display: flex; justify-content: space-between; align-items: center; gap: 8px; }
.hl-otazka-tl { display: inline-flex; gap: 4px; }
.hl-zoznam-otazok { padding-left: 22px; }
.hl-zoznam-otazok li { margin-bottom: 8px; }
.hl-zoznam-otazok p { margin: 0 0 2px; }
.hl-dlazdice { display: grid; grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)); gap: 10px; }
.hl-dlazdice div { border: 1px solid var(--okraj); border-radius: 10px; padding: 8px 12px; display: grid; }
.hl-dlazdice b { font-size: 22px; font-variant-numeric: tabular-nums; }
.hl-odpoved { border-top: 1px solid var(--okraj); padding: 10px 0; }
.hl-odpoved p { margin: 0 0 6px; }
.hl-volby { display: flex; flex-wrap: wrap; gap: 6px; }
/* Vybraná voľba podkladom, nie tučným písmom — šírka sa výberom nemení (r52). */
.hl-volby .vybrana-S { border-color: var(--dobre); color: var(--dobre); background: color-mix(in srgb, var(--dobre) 10%, var(--plocha)); }
.hl-volby .vybrana-N { border-color: var(--zle); color: var(--zle); background: color-mix(in srgb, var(--zle) 10%, var(--plocha)); }
.hl-volby .vybrana-X { border-color: var(--pozor); color: var(--pozor); background: color-mix(in srgb, var(--pozor) 10%, var(--plocha)); }
.hl-check { display: flex; gap: 8px; align-items: center; margin-top: 10px; font-size: 14px; }
.hl-check input { width: auto; }
.hl-upozornenie { color: var(--pozor); font-size: 13.5px; margin: 8px 0; }
.hl-vysledok { padding: 10px 0; border-bottom: 1px solid var(--okraj); }
.hl-vysledok:last-of-type { border-bottom: 0; }
.hl-vysledok p { margin: 0 0 6px; }
.hl-pocty, .v-pocty { display: flex; flex-wrap: wrap; gap: 2px 18px; align-items: baseline; }
.hl-pocty b, .v-pocty b { font-variant-numeric: tabular-nums; }
/* Graf hlasovania (r33): pás za všetky byty a NP — súhlas, nesúhlas, neplatný,
   zvyšok (podklad) nehlasoval; čiarka = počet potrebných súhlasov. */
.hl-graf { position: relative; display: flex; height: 14px; border-radius: 7px; background: var(--plocha-2);
  border: 1px solid var(--okraj); overflow: hidden; margin: 2px 0 6px; }
.hl-graf > span { display: block; height: 100%; flex: none; }
.hl-graf-ucast { height: 10px; margin-top: 12px; }
.g-s { background: var(--dobre); }
.g-n { background: var(--zle); }
.g-x { background: var(--pozor); }
.g-0 { background: color-mix(in srgb, var(--text-2) 28%, var(--plocha)); }
.g-l { background: var(--akcent); }
.g-e { background: color-mix(in srgb, var(--akcent) 50%, var(--plocha)); }
.g-hranica { position: absolute; top: 0; bottom: 0; width: 2px; margin-left: -1px; background: var(--text); }
.hl-bod { display: inline-block; width: 10px; height: 10px; border-radius: 3px; margin-right: 5px; vertical-align: -1px; }
/* Ako byt hlasoval pri otázke: ✓ ✗ ! – */
.hl-z { display: inline-flex; align-items: center; justify-content: center; width: 20px; height: 20px; border-radius: 5px;
  color: #fff; font-size: 12px; font-weight: 700; line-height: 1; vertical-align: middle; }
.hl-z.g-0 { color: var(--text); }
.tab th.hl-odp, .tab td.hl-odp { text-align: center; width: 1%; white-space: nowrap; padding-left: 4px; padding-right: 4px; }
.hl-znenie { display: -webkit-box; -webkit-line-clamp: 2; line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
/* Overovatelia a náhradníci v príprave (r33). */
.hl-ov { display: grid; gap: 6px; margin: 2px 0 4px; }
.hl-ov-riadok { display: grid; grid-template-columns: minmax(0, 1fr) auto auto; gap: 6px; align-items: center; }
/* Prvý krok nového hlasovania: čo sa z výpisu LV prečítalo. */
.hl-lv-suhrn { border: 1px solid var(--okraj); border-radius: 10px; padding: 8px 12px; margin-bottom: 10px; background: var(--plocha-2); }
.hl-lv-suhrn p { margin: 0 0 4px; }
.hl-lv-suhrn p:last-child { margin-bottom: 0; }
/* Počítadlo pri Admin: registrácie a zmeny údajov z portálu čakajú na kanceláriu. */
.admin-pocet { min-width: 18px; height: 18px; padding: 0 5px; border-radius: 9px; background: var(--pozor); color: #fff;
  font-size: 11px; font-weight: 700; line-height: 18px; text-align: center; flex: none; }

/* ------------------------------------------------ portál vlastníka (r32) */
/* Samostatná stránka /vlastnik/ (vlastnik.js). Pre ľudí, ktorí appku otvoria
   párkrát do roka, často na telefóne: jeden stĺpec, veľké tlačidlá, krátke vety. */
/* height: auto — pri body { height: 100% } by lepenie hlavičky a pätičky prestalo po prvej obrazovke. */
.v-telo { height: auto; min-height: 100%; display: flex; flex-direction: column; }
.v-hlavicka {
  display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap;
  padding: 10px 16px; padding-top: calc(10px + env(safe-area-inset-top, 0px));
  background: var(--akcent); color: #fff; box-shadow: var(--tien);
}
html[data-prostredie="test"] .v-hlavicka { background: #9a3412; }
.v-znacka { color: #fff; display: flex; align-items: center; gap: 10px; line-height: 1.25; min-width: 0; }
.v-znacka-text { display: grid; min-width: 0; }
/* Logo PKS v bielom rámčeku — rovnako ako v PKS Notes (PKS_apps/_dizajn/PKS_styl.md). */
.pks-logo { height: 36px; width: auto; background: #fff; padding: 5px 8px; border-radius: 8px; box-shadow: 0 1px 3px rgba(0, 0, 0, .18); flex: none; display: block; }
/* Hlavička, pás testu a lišta ostávajú hore pri posúvaní (užívateľ 26. 9.). */
.v-vrch { position: sticky; top: 0; z-index: 30; }
.v-znacka:hover { text-decoration: none; }
.v-znacka b { font-size: 17px; letter-spacing: -.01em; }
.v-podnazov { font-size: 12px; opacity: .85; }
.v-ja { display: flex; align-items: center; gap: 10px; font-size: 14px; }
.v-ja .tlacidlo { background: rgba(255, 255, 255, .14); border-color: rgba(255, 255, 255, .4); color: #fff; }
.v-test { background: #fde047; color: #422006; text-align: center; font-size: 12.5px; font-weight: 600; padding: 5px 16px; }
/* 880 px: pätička s kontaktmi sa na PC zmestí do jedného riadku v tej istej šírke ako obsah (pripomienka 26. 9.). */
.v-obsah { width: min(880px, 100%); margin: 0 auto; padding: 16px; display: grid; grid-template-columns: minmax(0, 1fr); gap: 14px; flex: 1; align-content: start; }
.v-obsah h1 { font-size: 20px; margin: 0 0 6px; letter-spacing: -.01em; text-wrap: balance; }
.v-obsah h2 { font-size: 16px; margin: 0 0 8px; }
.v-obsah h3 { font-size: 15px; margin: 4px 0 6px; }
.v-sekcia { display: grid; gap: 10px; }
.v-sekcia > h2 { margin: 6px 2px 0; }
.v-form { display: grid; gap: 12px; }
.v-form p { margin: 0; }
.v-velke { padding: 10px 14px; font-size: 15px; font-weight: 600; }
.v-check { display: grid; grid-template-columns: auto 1fr; gap: 10px; align-items: start; font-size: 14px; color: var(--text); }
.v-check input { width: auto; margin-top: 3px; }
.v-udaje { display: grid; grid-template-columns: minmax(120px, max-content) 1fr; gap: 6px 14px; margin: 8px 0 0; }
.v-udaje dt { color: var(--text-2); font-size: 13.5px; }
.v-udaje dd { margin: 0; font-variant-numeric: tabular-nums; }
.v-priestor p { margin: 0; }
.v-hlasovanie { display: grid; gap: 4px; color: var(--text); }
.v-hlasovanie:hover { text-decoration: none; border-color: var(--akcent); }
.v-hl-hlava { display: flex; justify-content: space-between; gap: 8px; align-items: baseline; flex-wrap: wrap; }
.v-otazky { padding-left: 22px; margin: 0; }
.v-otazky li { margin-bottom: 10px; }
.v-otazky p { margin: 0 0 2px; }
.v-otazka { border-top: 1px solid var(--okraj); padding: 12px 0; }
.v-otazka p { margin: 0 0 8px; }
.v-volby { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.v-volba { padding: 8px 10px; font-size: 14px; }
.v-volba.vybrana-S { border-color: var(--dobre); color: var(--dobre); background: color-mix(in srgb, var(--dobre) 10%, var(--plocha)); font-weight: 700; }
.v-volba.vybrana-N { border-color: var(--zle); color: var(--zle); background: color-mix(in srgb, var(--zle) 10%, var(--plocha)); font-weight: 700; }
.v-hlas > .tlacidlo.hlavne { margin-top: 6px; width: 100%; }
.v-hlas > .pole, .v-hlas > .sms-obal, .v-hlas > .chyba { margin: 10px 0; }
.v-moje { margin: 4px 0 8px; padding-left: 22px; }
.v-potvrdenie { display: grid; gap: 8px; }
.v-potvrdenie p { margin: 0; }
.v-ok { font-size: 19px; font-weight: 700; color: var(--dobre); }
.v-kod { font-family: ui-monospace, Consolas, monospace; letter-spacing: .06em; }
/* Zoznam hlásení po rokoch a mesiacoch, riadok sa rozbalí (r35). */
.v-hl-zoznam { padding: 6px 14px 10px; }
.v-hl-rok { margin: 10px 0 2px; font-size: 15px; }
.v-hl-mesiac { margin: 8px 0 4px; font-size: 12.5px; font-weight: 600; color: var(--text-2); text-transform: uppercase; letter-spacing: .04em; }
.v-hl-riadky { display: grid; grid-template-columns: minmax(0, 1fr); }
.v-hl-riadok { border-top: 1px solid var(--okraj); }
.v-hl-riadok summary { list-style: none; cursor: pointer; display: flex; align-items: center; gap: 10px; padding: 8px 2px; font-size: 14px; }
.v-hl-riadok summary::-webkit-details-marker { display: none; }
.v-hl-riadok summary::after { content: '▸'; color: var(--text-2); flex: none; }
.v-hl-riadok[open] summary::after { content: '▾'; }
.v-hl-den { color: var(--text-2); font-variant-numeric: tabular-nums; flex: none; }
.v-hl-druh { font-weight: 600; flex: none; }
.v-hl-uryvok { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--text-2); }
.v-hl-riadok .odznak { flex: none; }
.v-hl-detail { padding: 0 2px 10px; display: grid; gap: 6px; }
.v-hl-detail p { margin: 0; }
.v-hl-odpoved { border-left: 3px solid var(--akcent); padding: 6px 10px; background: color-mix(in srgb, var(--akcent) 7%, var(--plocha)); border-radius: 0 8px 8px 0; }
@media (max-width: 480px) { .v-hl-druh { display: none; } }
/* Poruchy a podnety v portáli (r33). */
.v-hlasenia { list-style: none; padding: 0; margin: 0; display: grid; gap: 10px; }
.v-hlasenie { margin: 0; }
.v-hlasenie .v-hl-hlava { display: flex; justify-content: space-between; gap: 8px; align-items: baseline; flex-wrap: wrap; }
.v-hl-text { white-space: pre-wrap; margin: 6px 0; overflow-wrap: anywhere; }
.v-volby-riadok { border: 0; padding: 0; margin: 0; display: grid; gap: 6px; min-width: 0; }
.v-volby-riadok legend { font-size: 13px; color: var(--text-2); margin-bottom: 4px; padding: 0; }
.v-volby-riadok label { display: flex; gap: 8px; align-items: center; }
.v-volby-riadok input[type=radio] { width: auto; flex: none; margin: 0; }
.v-fotky { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 6px; }
.v-fotky:empty { display: none; }
.v-fotka { position: relative; width: 96px; height: 96px; border-radius: 8px; overflow: hidden; border: 1px solid var(--okraj); }
.v-fotka img { width: 100%; height: 100%; object-fit: cover; display: block; }
.v-fotka button { position: absolute; top: 4px; right: 4px; min-width: 0; padding: 0 6px; }
/* Nahliadnutie do príloh zápisnice v portáli (r34). */
.v-nahliadnutie { border: 1px solid var(--pozor); border-radius: 10px; padding: 10px 12px; display: grid; gap: 8px;
  background: color-mix(in srgb, var(--pozor) 8%, var(--plocha)); }
.v-nahliadnutie p { margin: 0; }
.v-odkazy { display: flex; flex-wrap: wrap; gap: 6px 18px; }
/* Voľby vo formulári hlásenia ako tlačidlá (r34c): jedna je vždy vybraná, na mobile pod sebou. */
.v-volby-h { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 8px; }
.v-volba.vybrana { border-color: var(--akcent); color: var(--akcent-text); background: color-mix(in srgb, var(--akcent) 12%, var(--plocha));
  font-weight: 700; box-shadow: inset 0 0 0 1px var(--akcent); }
/* Zaškrtnutie v portáli s dlhším popisom (registrácia). */
.v-check { display: grid; grid-template-columns: auto 1fr; gap: 8px; align-items: start; font-size: 14px; }
.v-check input { width: auto; margin: 3px 0 0; }
/* Kancelária: text hlásenia z portálu v tabuľke. */
.hl-text-hlasenia { max-width: 42ch; white-space: pre-wrap; overflow-wrap: anywhere; }
.v-vysledok { border-top: 1px solid var(--okraj); padding: 8px 0; }
.v-vysledok p { margin: 0 0 4px; }
/* Pätička appiek PKS (vzor ekosystému, 26. 9. 2026): ostáva dole, obchodné meno a kontakty. Každá položka
   sa drží pokope; na širokej obrazovke idú v riadku, na úzkej pod sebou. */
.pks-pata { position: sticky; bottom: 0; z-index: 30; padding: 7px 0 calc(7px + env(safe-area-inset-bottom, 0px));
  background: color-mix(in srgb, var(--akcent) 7%, var(--plocha)); border-top: 1px solid color-mix(in srgb, var(--akcent) 30%, var(--okraj));
  color: var(--text-2); font-size: 12.5px; line-height: 1.4; }
/* Jemne vo farbe hlavičky — v teste oranžovohnedej (pripomienka 26. 9.). */
html[data-prostredie="test"] .pks-pata { background: color-mix(in srgb, #9a3412 7%, var(--plocha)); border-top-color: color-mix(in srgb, #9a3412 30%, var(--okraj)); }
/* Neviditeľný pásik vo farbe pozadia nad pätičkou: posúvaný obsah do nej nenarazí, skončí kúsok nad ňou. */
.pks-pata::before { content: ''; position: absolute; left: 0; right: 0; bottom: 100%; height: 10px; background: var(--pozadie); pointer-events: none; }
.pks-pata:empty { display: none; }
/* Tá istá šírka a okraje ako .v-obsah, aby pätička nepresahovala obsah. */
.pks-pata-riadok { width: min(880px, 100%); margin: 0 auto; padding: 0 16px; display: flex; flex-wrap: wrap; justify-content: center; column-gap: 18px; row-gap: 1px; }
.pks-pata-riadok > * { white-space: nowrap; }
.pks-pata-riadok b { color: var(--text); }
.pks-pata-pozn { width: min(880px, 100%); margin: 3px auto 0; padding: 0 16px; text-align: center; font-size: 12px; opacity: .85; }
.v-pozn-telefon { display: none; margin: 0; }   /* veta z pätičky na konci prehľadu, len v telefóne */
@media (max-width: 600px) {
  .pks-pata { font-size: 12px; line-height: 1.3; padding-top: 5px; padding-bottom: calc(5px + env(safe-area-inset-bottom, 0px)); }
  .pks-pata::before { height: 8px; }
  .pks-pata-riadok { flex-direction: column; align-items: center; }
  .pks-pata-pozn { display: none; }   /* na telefóne šetrí miesto; tá istá veta je na konci prehľadu (.v-pozn-telefon) */
  .v-pozn-telefon { display: block; }
  /* hlavička v telefóne na jeden riadok: meno správcu je v pätičke, meno vlastníka v Mojich kontaktoch */
  .v-hlavicka { flex-wrap: nowrap; padding-top: calc(8px + env(safe-area-inset-top, 0px)); padding-bottom: 8px; }
  .v-podnazov, .v-meno { display: none; }
  .pks-logo { height: 34px; padding: 4px 7px; }
}
/* Prehľad: rýchla voľba Poruchy a podnety hore (r35b). */
.v-rychle { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 10px 14px; }
/* Prihlásenie bez konta (r40): portál neprezrádza, či je číslo zaregistrované, preto pri zadávaní
   kódu vždy povie, čo robiť, keď kód nepríde; po 45 s sa zvýrazní. */
.v-bez-konta {
  display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px 14px;
  padding: 10px 14px; border: 1px solid var(--okraj); border-radius: 10px;
  background: color-mix(in srgb, var(--akcent) 7%, var(--plocha));
}
.v-bez-konta p { margin: 0; flex: 1 1 240px; }
.v-bez-konta.naliehavo { border-color: var(--akcent); background: color-mix(in srgb, var(--akcent) 14%, var(--plocha)); }
.v-rychle p { margin: 0; }
.v-rychle .tlacidla { margin: 0; }
@media (max-width: 480px) { .v-udaje { grid-template-columns: 1fr; gap: 2px; } .v-udaje dd { margin-bottom: 6px; } }

/* SMS, ktorá v testovacej verzii neodišla naozaj — ukáže sa jej text. Farby sú
   rovnaké v oboch témach, je to výstraha ako pás testovacej verzie. */
.sms-obal { display: grid; gap: 6px; }
.sms-test {
  margin: 0; padding: 10px 12px; border-radius: 8px; border: 1px dashed #ca8a04;
  background: #fef9c3; color: #422006; font: 15px/1.45 ui-monospace, Consolas, monospace; white-space: pre-wrap; overflow-wrap: anywhere;
}

/* Portál vlastníka r32b: menu, predpis, kontakty */
.v-menu { display: flex; gap: 4px; justify-content: center; flex-wrap: wrap; padding: 6px 16px; background: var(--plocha); border-bottom: 1px solid var(--okraj); }
.v-menu a { padding: 6px 12px; border-radius: 8px; color: var(--text-2); font-weight: 600; font-size: 14px; }
.v-menu a:hover { background: var(--plocha-2); text-decoration: none; color: var(--text); }
.v-menu a[aria-current="page"] { color: var(--akcent-text); background: color-mix(in srgb, var(--akcent) 10%, var(--plocha)); }
.v-odkazy { margin: 10px 0 0; }
.v-suma { font-size: 15px; margin: 10px 0; }
.v-suma b { font-size: 28px; letter-spacing: -.01em; font-variant-numeric: tabular-nums; }
.v-polozky { margin: 6px 0 12px; }
.v-polozky tr.v-spolu td { border-top: 2px solid var(--okraj); }
.v-zoznam { margin: 2px 0 10px; padding-left: 20px; }
.v-zoznam li { margin: 2px 0; }
/* R141: dokumenty zverejnené vlastníkovi — pri objekte v Môj dom, v záložke Dokumenty a na Nástenke. */
.v-doky { list-style: none; margin: 6px 0 4px; padding: 0; display: grid; gap: 6px; }
.v-dok { border: 1px solid var(--okraj); border-radius: 8px; padding: 6px 10px; background: var(--plocha-2); overflow-wrap: break-word; }
.v-dok a { font-weight: 600; }
.v-dok .tlacidlo { margin-top: 4px; }
.v-dok .odznak { margin-left: 4px; }

/* R138 (17. 10. 2026): hlavička portálu — zvýraznené „Nahlásiť poruchu“ a „Moje konto“ s menom. */
.v-ja a.tlacidlo { display: inline-flex; align-items: center; gap: 8px; text-decoration: none; }
.v-ja svg { width: 18px; height: 18px; flex: none; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.v-ja .tlacidlo.v-porucha { background: #dc2626; border-color: rgba(255, 255, 255, .75); color: #fff; font-weight: 700; }
.v-ja .tlacidlo.v-porucha:hover { background: #b91c1c; }
.v-ja a.tlacidlo[aria-current="page"] { box-shadow: 0 0 0 2px rgba(255, 255, 255, .8); }
.v-konto-text { display: grid; line-height: 1.15; text-align: left; min-width: 0; }
.v-konto-text .v-meno { font-weight: 600; max-width: 22ch; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.v-konto-popis { font-size: 11.5px; opacity: .85; }
.v-kratky { display: none; }
/* Telefón: hlavička ostáva v jednom riadku (26. 9.) — tlačidlá s krátkym textom „Porucha“ a „Moje konto“ (meno sa skryje). */
@media (max-width: 600px) {
  .v-ja { gap: 6px; }
  .v-ja a.tlacidlo { padding: 6px 8px; gap: 5px; font-size: 13px; }
  .v-dlhy { display: none; }
  .v-kratky { display: inline; }
  .v-konto-popis { font-size: 13px; opacity: 1; }
}

/* R138: kontakty pri poruche vo vizuáli Condosoftu (užívateľ 17. 10.: „zosúladená s vizuálom CondoSoft“) — prevádzka
   PKS v podfarbenom rámčeku s hlavnými tlačidlami, partneri a dôležité čísla v kartách so sekundárnymi tlačidlami. */
.v-havaria { display: grid; gap: 10px; }
.v-havaria > h1 { margin: 0; }
/* R140: navrchu blok „Pri havárii“ (havarijná služba, únik plynu, prevádzka PKS) — podfarbený, hlavné tlačidlá. */
.v-havaria-hore { background: var(--lista-zoznamu); border: 1px solid var(--lista-zoznamu-okraj); border-radius: 10px; padding: 10px 12px 12px; display: grid; gap: 6px; }
.v-havaria-hore .v-havaria-h { margin: 0; }
.v-havaria-hore .v-partner { background: var(--plocha); }
.v-volaj-popis { font-weight: 400; opacity: .9; margin-right: 2px; }
.v-havaria-h { margin: 6px 0 0; font-size: 15px; }
.v-partneri { display: grid; grid-template-columns: repeat(auto-fit, minmax(210px, 1fr)); gap: 8px; }
.v-partner { background: var(--plocha-2); border: 1px solid var(--okraj); border-radius: 10px; padding: 10px 12px; display: grid; gap: 3px; align-content: start; }
.v-partner-nadpis { font-size: 12px; font-weight: 600; color: var(--text-2); text-transform: uppercase; letter-spacing: .04em; }
.v-partner-nazov { font-weight: 600; }
/* Ďalšie dôležité čísla po tri v riadku (užívateľ 17. 10.: „rozdeľ po tri okná a nie 4“); v telefóne po dve, úzky po jednom. */
.v-dolezite { grid-template-columns: repeat(3, minmax(0, 1fr)); }
@media (max-width: 640px) { .v-dolezite { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 400px) { .v-dolezite { grid-template-columns: minmax(0, 1fr); } }
/* Blok Pri havárii (R140, užívateľ 17. 10. 2026): v riadku havarijná služba a únik plynu, pod nimi PKS na celú šírku;
   na úzkom telefóne pod sebou v tom istom poradí. */
.v-havaria-karty { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.v-havaria-karty > .v-partner:last-child:nth-child(odd) { grid-column: 1 / -1; }
@media (max-width: 400px) { .v-havaria-karty { grid-template-columns: minmax(0, 1fr); } }
/* Priestor s miestnosťami a meračmi (R140): súčet plochy ako posledný riadok tela tabuľky — tfoot by sa na telefóne
   (thead a tbody ako samostatné tabuľky, viď vyššie) nezarovnal so stĺpcami. */
table.tab tr.v-spolu td { font-weight: 600; border-top: 1px solid var(--okraj); }
.v-volaj-rad { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 4px; }
.tlacidlo.v-volaj { display: inline-flex; align-items: center; gap: 6px; font-variant-numeric: tabular-nums; white-space: nowrap; text-decoration: none; }
.tlacidlo.v-volaj:hover { text-decoration: none; }
.v-volaj svg { width: 15px; height: 15px; flex: none; fill: currentColor; }
.v-havaria-dalej { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 12px; margin: 4px 0 0; }
.v-havaria-riadok { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 8px; margin: 10px 0 0; flex-basis: 100%; }
.v-havaria-prih details summary { cursor: pointer; font-weight: 600; text-align: center; padding: 4px; color: var(--akcent-text); }
.v-havaria-prih details[open] { display: grid; gap: 12px; }

/* R138: Nástenka a Môj dom. */
.v-nast-byt { display: grid; gap: 4px; color: var(--text); }
.v-nast-byt:hover { text-decoration: none; border-color: var(--akcent); }
.v-dom-hlava { display: grid; gap: 10px; }
.v-dom-hlava h1 { margin: 0; }
.v-prepinac, .v-zalozky { display: flex; flex-wrap: wrap; gap: 6px; }
.v-zalozky { border-top: 1px solid var(--okraj); padding-top: 10px; }
.v-prepinac a, .v-zalozky a { padding: 6px 12px; border-radius: 8px; border: 1px solid var(--okraj); color: var(--text-2); font-weight: 600; font-size: 14px; }
.v-prepinac a:hover, .v-zalozky a:hover { text-decoration: none; color: var(--text); background: var(--plocha-2); }
.v-prepinac a[aria-current="page"], .v-zalozky a[aria-current="page"] { color: var(--akcent-text); border-color: var(--akcent);
                                                                          background: color-mix(in srgb, var(--akcent) 10%, var(--plocha)); }
.v-lv + .v-lv { border-top: 1px solid var(--okraj); margin-top: 8px; padding-top: 8px; }
.v-lv p { margin: 0 0 4px; }
.v-iban { font-variant-numeric: tabular-nums; letter-spacing: .02em; }
.v-konto-hlava .tlacidla { margin: 8px 0 0; }

/* R139: zdieľaná stránka v izolovanom rámci — biely papier ako v prehliadači (stránka si farby určuje sama). */
.st-hlava h2 { margin: 6px 0; }
.st-hlava p { margin: 4px 0; }
.st-ram { display: block; width: 100%; height: calc(100vh - 230px); min-height: 480px; border: 1px solid var(--okraj);
          border-radius: var(--radius); background: #fff; box-shadow: var(--tien); }
.v-podform { margin-top: 12px; padding: 12px; border: 1px solid var(--okraj); border-radius: 10px; background: var(--plocha-2); }
.v-podform h3 { margin: 0; }
/* Overenie kódom z aplikácie (17. 10. 2026): QR kód, kľúč na ručné zadanie, záložné kódy. QR kód je čierny
   na bielom aj v tmavej téme — inak ho fotoaparát nenačíta. */
.v-kroky { margin: 0; padding-left: 22px; display: grid; gap: 14px; }
.v-kroky li > p { margin: 6px 0 0; }
.v-qr { margin: 8px 0 4px; }
.v-qr svg { display: block; width: 220px; max-width: 100%; height: auto; border-radius: 6px; }
.v-kluc { font: 600 16px/1.5 ui-monospace, Consolas, monospace; letter-spacing: .08em; overflow-wrap: anywhere; user-select: all; }
.v-zalozne { display: grid; grid-template-columns: repeat(2, max-content); gap: 6px 28px; margin: 4px 0;
  font: 600 17px/1.4 ui-monospace, Consolas, monospace; letter-spacing: .06em; font-variant-numeric: tabular-nums; }
@media (max-width: 360px) { .v-zalozne { grid-template-columns: 1fr; } }
.v-tlac { display: grid; gap: 10px; }
.v-tlac p { margin: 0; }
/* Tlač záložných kódov: na papier ide len obal s nimi (vlastnik.js ho pridá do body spolu s body.tlac-zalozne). */
#v-tlac-obal { display: none; }
@media print {
  body.tlac-zalozne > * { display: none !important; }
  body.tlac-zalozne > #v-tlac-obal { display: block !important; color: #000; background: #fff; font-size: 12pt; }
  #v-tlac-obal .v-zalozne { font-size: 18pt; gap: 10pt 40pt; margin: 14pt 0; }
}

/* ------------------------------------------------ manuál a panel ⓘ Návod (R82) */
/* Obsah kapitol — rovnaký v paneli (app.js) aj na stránke /manual/ (manual/index.html). */
.man { line-height: 1.55; color: var(--text); }
.man section > h2 { font-size: 19px; margin: 2px 0; letter-spacing: -.01em; text-wrap: balance; }
.man .man-cesta { margin: 0; font-size: 11.5px; text-transform: uppercase; letter-spacing: .05em; color: var(--text-2); }
.man .man-meta { margin: 0 0 12px; font-size: 12.5px; color: var(--text-2); }
.man .man-stav { display: inline-block; padding: 0 8px; border-radius: 999px; border: 1px solid var(--okraj); font-size: 11.5px; line-height: 18px; }
.man .man-stav.hotove { color: var(--dobre); border-color: color-mix(in srgb, var(--dobre) 45%, var(--okraj)); }
.man .man-stav.test { color: #c2410c; border-color: color-mix(in srgb, #c2410c 45%, var(--okraj)); }
.man .man-stav.pripravuje { border-style: dashed; }
.man h3 { font-size: 15px; margin: 18px 0 6px; }
.man p { margin: 0 0 10px; }
.man ul, .man ol { margin: 0 0 12px; padding-left: 22px; }
.man li { margin-bottom: 4px; }
.man .man-kde { font-size: 13px; color: var(--text-2); margin-bottom: 8px; }
.man .man-polia { display: grid; grid-template-columns: minmax(110px, max-content) minmax(0, 1fr); gap: 6px 14px; margin: 0 0 12px; font-size: 14px; }
.man .man-polia dt { font-weight: 600; }
.man .man-polia dd { margin: 0; color: var(--text-2); }
.man figure { margin: 8px 0 14px; }
.man figure img { display: block; max-width: 100%; height: auto; border: 1px solid var(--okraj); border-radius: 8px; }
.man figcaption { font-size: 12.5px; color: var(--text-2); margin-top: 4px; }
.man .man-pozor, .man .man-tip { border-left: 3px solid var(--pozor); background: color-mix(in srgb, var(--pozor) 8%, var(--plocha));
  padding: 8px 12px; border-radius: 0 8px 8px 0; margin: 10px 0 12px; }
.man .man-tip { border-left-color: var(--akcent); background: color-mix(in srgb, var(--akcent) 7%, var(--plocha)); }
.man .man-pozor p, .man .man-tip p { margin: 2px 0 0; }
.man .man-vzorec { font-family: ui-monospace, Consolas, monospace; font-size: 13.5px; background: var(--plocha-2);
  border: 1px solid var(--okraj); border-radius: 6px; padding: 6px 10px; }
.man .man-suvisi { font-size: 13.5px; border-top: 1px solid var(--okraj); padding-top: 8px; margin-top: 14px; }
.man .man-otazka { border-top: 1px solid var(--okraj); padding: 6px 0; }
.man .man-otazka summary { cursor: pointer; font-weight: 600; }
.man .man-otazka p { margin: 6px 0 2px; }
.man .man-tiche { color: var(--text-2); font-size: 13px; }
@media (max-width: 480px) { .man .man-polia { grid-template-columns: minmax(0, 1fr); gap: 2px; } .man .man-polia dd { margin-bottom: 6px; } }

/* Tlačidlo ⓘ Návod na konci podmenu — mimo .lista-podmenu, aby ho nerátalo zarovnávanie šírok. */
.podmenu-blok { display: flex; align-items: flex-start; background: var(--plocha-2); }
.podmenu-blok > .lista-podmenu { flex: 1; min-width: 0; }
.podmenu-obal .podmenu-blok { border-bottom: 1px solid var(--okraj); }
.podmenu-obal .podmenu-blok .lista-podmenu { border-bottom: 0; }
.pomoc-tl { flex: none; margin: 7px 12px 7px 0; border: 1px solid color-mix(in srgb, var(--akcent) 45%, var(--okraj));
  background: var(--plocha); color: var(--akcent-text); font: inherit; font-size: 13px; font-weight: 600; padding: 4px 11px 4px 6px;
  border-radius: 999px; cursor: pointer; display: inline-flex; align-items: center; gap: 6px; white-space: nowrap; }
.pomoc-tl:hover, .pomoc-tl[aria-expanded="true"] { background: color-mix(in srgb, var(--akcent) 12%, var(--plocha)); border-color: var(--akcent); }
.ik-i { display: inline-grid; place-items: center; width: 18px; height: 18px; border-radius: 50%; flex: none;
  background: var(--akcent); color: #fff; font: italic 700 12px/1 Georgia, "Times New Roman", serif; }
@media (max-width: 760px) { .pomoc-tl .text { display: none; } .pomoc-tl { padding: 4px 6px; } }

/* Bočný panel: na PC vpravo pod prilepenou lištou, obrazovka ostáva použiteľná; na telefóne cez celú obrazovku. */
.pomoc { position: fixed; right: 0; bottom: 0; top: calc(var(--vrch-vyska, 96px) + var(--podmenu-vyska, 0px)); z-index: 26;
  width: min(460px, 100vw); display: flex; flex-direction: column; background: var(--plocha);
  border-left: 1px solid var(--okraj); box-shadow: -8px 0 24px rgba(15, 26, 45, .14); }
.pomoc-hlava { display: flex; align-items: center; gap: 6px; padding: 8px 10px 8px 16px; border-bottom: 1px solid var(--okraj); background: var(--plocha-2); }
.pomoc-hlava .nadpis { flex: 1; min-width: 0; font-weight: 700; font-size: 14px; display: flex; align-items: center; gap: 8px; }
.pomoc-hlava .tlacidlo { white-space: nowrap; }
.pomoc-hladaj { padding: 8px 16px; border-bottom: 1px solid var(--okraj); }
.pomoc-hladaj input { width: 100%; }
.pomoc-telo { flex: 1; overflow-y: auto; padding: 14px 18px 32px; overscroll-behavior: contain; scrollbar-width: thin; }
.pomoc-telo:focus { outline: none; }
.pomoc-vysledky { list-style: none; margin: 0; padding: 0; display: grid; gap: 1px; }
.pomoc-vysledky a { display: block; padding: 6px 8px; border-radius: 8px; color: var(--text); }
.pomoc-vysledky a:hover, .pomoc-vysledky a[aria-current="true"] { background: var(--plocha-2); text-decoration: none; }
.pomoc-vysledky .cesta { display: block; font-size: 11.5px; color: var(--text-2); }
.pomoc-vysledky .uryvok { display: block; font-size: 12.5px; color: var(--text-2); }
.pomoc-obsah h3 { font-size: 11.5px; text-transform: uppercase; letter-spacing: .05em; color: var(--text-2); margin: 12px 0 2px; }
/* Na širokej obrazovke panel nič nezakryje — plocha sa odsunie. */
@media (min-width: 1300px) { body.pomoc-otvorena .plocha, body.pomoc-otvorena .pas { margin-right: 460px; } }
@media (max-width: 760px) { .pomoc { top: 0; width: 100vw; z-index: 45; border-left: 0; padding-top: env(safe-area-inset-top, 0px); } }

/* Zmena predpisu od mesiaca (r36): jeden riadok nad vchodmi namiesto dialógu. */
.mpp-zmena { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 14px; }
.mpp-zmena-pole { display: inline-flex; align-items: center; gap: 8px; }
.mpp-zmena select { width: auto; }
.mpp-zmena p { flex-basis: 100%; margin: 0; }
.podkarta .tab s.tiche { text-decoration-thickness: 1px; }

/* Výpisy z účtu (r37): výber po rokoch nad zoznamom súborov. */
.bv-roky { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin: 6px 0; font-size: 13px; color: var(--text-2); }

/* Garáž (r61): výsledok v každom nebytovom priestore zvlášť */
.hl-vysledok .hl-skupina-nadpis { margin: 10px 0 2px; font-weight: 600; }

/* ------------------------------------------------ pripomienky (7. 10. 2026) */
/* Okno pripomienok: úloha v termíne s oranžovým okrajom, po termíne s červeným; najbližšie termíny ako zoznam. */
.prip-zoznam h4 { margin: 14px 0 6px; }
.prip-zoznam h4:first-child { margin-top: 0; }
.prip-polozka { border-left: 4px solid var(--pozor); padding: 4px 0 8px 12px; margin: 0 0 12px; }
.prip-polozka.po-termine { border-left-color: var(--zle); }
.prip-polozka p { margin: 4px 0; }
.prip-hlava { display: flex; flex-wrap: wrap; gap: 6px; align-items: baseline; }
.prip-najblizsie { margin: 0 0 8px; padding-left: 18px; }
.prip-najblizsie li { margin: 3px 0; }
/* Zvonček je len ikona s počtom — nie široký ako menu Admin a prihlásený (.menu-tl 176 px). */
.hlavicka #tl-pripomienky { width: auto; padding: 0 11px; gap: 6px; }
/* Export SIPO: dôvod pre poštu pri vete s prílohou (Upozornenie / Iná požiadavka). */
.sx-ziadost { display: block; margin-top: 6px; }
.sx-ziadost input { display: block; width: 100%; min-width: 16em; margin-top: 2px; }

/* Doklady v1 (9. 10. 2026): položky faktúry v tabuľke s poliami, súčty a kontrola voči titulu */
table.dk-riadky { width: 100%; min-width: 900px; border-collapse: collapse; font-size: 13px; }
table.dk-riadky td:nth-child(1) { width: 9em; } table.dk-riadky td:nth-child(3) { width: 8em; }
table.dk-riadky td:nth-child(5), table.dk-riadky td:nth-child(6) { width: 6.5em; } table.dk-riadky td:nth-child(7) { width: 6em; }
table.dk-riadky th { text-align: left; font-weight: 600; color: var(--text-2); font-size: 11px; text-transform: uppercase;
  letter-spacing: .03em; padding: 4px; border-bottom: 1px solid var(--okraj); white-space: nowrap; }
table.dk-riadky th.cislo { text-align: right; }
table.dk-riadky td { padding: 4px; border-bottom: 1px solid var(--okraj); vertical-align: top; }
table.dk-riadky input, table.dk-riadky select { width: 100%; font-size: 13px; padding: 5px 6px; }
table.dk-riadky input[type="date"], table.dk-riadky td:nth-child(5) input { display: block; margin-bottom: 3px; }
table.dk-riadky input[type="date"] { min-width: 9.5em; }
table.dk-riadky input.c { text-align: right; font-variant-numeric: tabular-nums; }
table.dk-riadky td.dk-zaklad { text-align: right; white-space: nowrap; font-weight: 600; padding-top: 10px; font-variant-numeric: tabular-nums; }
.dk-odstran { border: 0; background: none; cursor: pointer; color: var(--text-2); font-size: 18px; line-height: 1; padding: 4px 8px; border-radius: 6px; }
.dk-odstran:hover { color: var(--zle); }
.dk-sucty { display: flex; flex-wrap: wrap; gap: 6px 22px; justify-content: flex-end; margin-top: 10px; color: var(--text-2);
  font-variant-numeric: tabular-nums; }
.dk-sucty b { color: var(--text); margin-left: 4px; }
/* Delenie cez prelom roka vo formulári faktúry (R148): blok pri každej delenej položke. */
.dk-delenie { margin: 10px 0; padding: 8px 10px; border: 1px solid var(--okraj); border-radius: 8px; }
.dk-delenie select { width: auto; margin-left: 6px; padding: 3px 6px; font-size: 13px; }
table.dk-delenie-tab { margin-top: 6px; font-size: 13px; }
table.dk-delenie-tab input.c { width: 8em; padding: 4px 6px; font-size: 13px; text-align: right; font-variant-numeric: tabular-nums; }
.dk-ok { color: var(--dobre); font-weight: 600; }
ul.dk-kontrola { list-style: none; margin: 0 0 8px; padding: 0; display: grid; gap: 6px; }
ul.dk-kontrola li.ok { color: var(--dobre); }
ul.dk-kontrola li.zle { color: var(--zle); }

/* Partneri a prílohy dokladov (1.34.0, 9. 10. 2026): vyhľadanie partnera vo formulári, register, prílohy */
.hladac { position: relative; }
.hladac-zoznam { position: absolute; left: 0; right: 0; z-index: 40; background: var(--plocha); border: 1px solid var(--okraj);
  border-radius: 8px; box-shadow: var(--tien); max-height: 320px; overflow-y: auto; padding: 4px; display: grid; gap: 1px; }
.hladac-polozka { display: grid; gap: 1px; width: 100%; text-align: left; border: 0; background: none; padding: 6px 8px; border-radius: 6px;
  cursor: pointer; font: inherit; font-size: 13px; color: var(--text); }
.hladac-polozka:hover, .hladac-polozka.aktivna { background: var(--plocha-2); }
.hladac-novy { color: var(--akcent); border-top: 1px solid var(--okraj); border-radius: 0 0 6px 6px; }
.hladac-nic { margin: 6px 8px; }
.hladac-stav { min-height: 1.2em; }
.pole > .tlacidlo.maly { justify-self: start; margin-top: 4px; }
.pt-register { display: grid; gap: 6px; }
.pt-register:empty { display: none; }
.pt-register-polozka { display: flex; flex-wrap: wrap; gap: 2px 10px; align-items: baseline; text-align: left; border: 1px solid var(--okraj);
  background: var(--plocha); border-radius: 8px; padding: 7px 10px; cursor: pointer; font: inherit; font-size: 13px; color: var(--text); }
.pt-register-polozka:hover { border-color: var(--akcent); }
.pt-register-polozka.zanikla { opacity: .6; }
.pt-hladaj { margin: 10px 0 6px; }
.pt-hladaj input { width: 100%; max-width: 560px; font-size: 15px; padding: 8px 10px; }
.dk-prilohy ul.dokumenty { margin-bottom: 6px; }
.dokument.nova { opacity: .85; }
a.odznak.priloha { text-decoration: none; cursor: pointer; }
td.iban { white-space: nowrap; font-variant-numeric: tabular-nums; }

/* Návrhy partnerov z výpisov: meno z banky v stĺpci, ktorý sa nezlomí po slovách (tlačidlá akcií zaberajú šírku). */
table.pt-navrhy td:first-child { min-width: 11em; }
table.pt-navrhy td.akcie { white-space: normal; text-align: right; min-width: 11em; }
table.pt-navrhy td.akcie .tlacidlo { margin: 2px 0 2px 4px; }

/* Import prijatej faktúry z PDF alebo XML (9. 10. 2026) */
.dk-import { border: 1px dashed var(--akcent); border-radius: 10px; padding: 8px 12px; margin: 8px 0 4px;
  background: color-mix(in srgb, var(--akcent) 6%, var(--plocha)); font-size: 14px; }
.dk-import ul { margin: 6px 0 0; padding-left: 18px; color: var(--pozor); }
.dk-imp-volby { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 10px; margin: 6px 0 12px; }
.dk-imp-volby .tlacidlo { display: grid; gap: 4px; text-align: left; padding: 12px; }
.dk-imp-volby .tlacidlo[disabled] { opacity: .55; cursor: not-allowed; }

/* Dom › Odberné miesta (9. 10. 2026) */
button.om-otvor { font: inherit; font-weight: 600; color: var(--akcent-text); background: none; border: 0; padding: 0; cursor: pointer; text-align: left; }
button.om-otvor:hover, button.om-otvor:focus-visible { text-decoration: underline; }
table.om-tab td { vertical-align: top; }

/* Saldo (1.40.0): dátum „K dňu“ v riadku tlačidiel filtra — kompaktne, nenaťahuje tlačidlá. */
.saldo-den { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; color: var(--text-2, #555); white-space: nowrap; }
.saldo-den input { height: 30px; padding: 2px 8px; font: inherit; }
tr.vybrany td { background: color-mix(in srgb, var(--akcent, #1f4f8f) 8%, transparent); }

/* Saldo 1.41.0 (R133): rozpis predpisu po službách v konte — rozbaliteľný pod „predpis“. */
.saldo-sluzby summary { cursor: pointer; color: var(--akcent, #1f4f8f); }
.saldo-sluzby[open] summary { font-weight: 600; margin-bottom: 4px; }
.saldo-sluzby table { min-width: 280px; }

/* Navigácia (12. 10. 2026): zapamätaný vchod pri obrazovke za celý dom — položka ho použije, keď má obrazovku vchodu. */
.vchod.zvoleny { box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--akcent) 45%, transparent); color: var(--akcent-text); }

/* Párovanie: dva kroky — identifikácia, párovanie robí appka (12. 10. 2026) */
.parovanie-kroky { margin: .5rem 0 .6rem; padding-left: 1.4rem; display: grid; gap: .35rem; line-height: 1.45; }

/* × vpravo hore v oknách a formulároch (14. 10. 2026) — zatvorí bez uloženia ako Zrušiť alebo Esc. */
.dialog, .karta.s-krizikom { position: relative; }
.dialog > h3, .karta.s-krizikom > h2, .karta.s-krizikom > .cesta { padding-right: 44px; }
.dialog-x, .form-x {
  position: absolute; top: 8px; right: 8px; z-index: 2; width: 36px; height: 36px; display: grid; place-items: center;
  border: 1px solid transparent; border-radius: 8px; background: transparent; color: var(--text-2);
  font: inherit; font-size: 26px; line-height: 1; cursor: pointer; text-decoration: none;
}
.dialog-x:hover, .form-x:hover { color: var(--text); background: var(--plocha-2); border-color: var(--okraj); }
.dialog-x:focus-visible, .form-x:focus-visible { outline: 2px solid var(--akcent); outline-offset: 1px; }
