/* Bloky, ktore boli duplikovane v sablonach. Nacitava sa hned po app.css, takze
   poradie kaskady voci stranovym <style> blokom zostava rovnake ako predtym. */

/* Komentare a mentiony (detail poziadavky, tasku, scenara). */
.comment-item { border-top:1px solid var(--line);padding:12px 0; }.comment-item:first-of-type { border-top:0; }.comment-item p { margin:7px 0 0; }
.mention { position:relative;display:inline-block;padding:1px 5px;border-radius:10px;background:#e6f0f6;color:#1d4c68;font-weight:650;outline:0; }
.mention-tooltip { display:none;position:absolute;z-index:80;left:0;top:calc(100% + 5px);white-space:nowrap;padding:6px 9px;border:1px solid #cfe0ea;border-radius:6px;background:#fff;color:var(--ink);font-weight:500;font-size:12px;box-shadow:0 10px 22px rgba(21,59,92,.16); }
.mention:hover .mention-tooltip,.mention:focus .mention-tooltip,.mention:focus-within .mention-tooltip { display:block; }
.mention-field { position:relative; }
.mention-menu { display:none;position:absolute;z-index:60;left:0;right:0;margin:4px 0 0;padding:5px;max-height:230px;overflow:auto;list-style:none;border:1px solid #b7c9d5;border-radius:6px;background:#fff;box-shadow:0 12px 26px rgba(21,59,92,.16); }
.mention-menu.is-open { display:block; }
.mention-menu li { padding:7px 8px;border-radius:5px;cursor:pointer;font-size:13px; }
.mention-menu li[aria-selected="true"],.mention-menu li:hover { background:#edf4f7; }
.mention-menu small { color:var(--muted);margin-left:6px; }

/* Stranky pripojenia AI (MCP): pravidla spolocne authorize, connect aj tokens. */
.mcp-page .card { margin-bottom:18px; }
.mcp-page .mcp-write { display:flex;align-items:center;gap:8px;margin:0; }
.mcp-page .mcp-write input { width:auto;min-width:0;margin:0;flex:0 0 auto; }
.mcp-page .mcp-actions { display:flex;flex-wrap:wrap;gap:10px;margin-top:20px; }

/* Panel stlpcov nad Tabulator zoznamami (poziadavky, tasky). */
.table-toolbar { display:flex;justify-content:space-between;align-items:center;gap:12px;margin:0 0 10px; }
/* Nápoveda k tabulke ako ikona ? vedla tlacidla Stlpce namiesto riadku textu nad tabulkou. */
.table-toolbar-compact { justify-content:flex-end;gap:8px; }
.table-toolbar-compact .help-popover { position:relative;display:inline-flex;align-items:center; }
.table-toolbar-compact .help-text { left:auto;right:0;transform:none; }
.table-toolbar-compact .help-text::before { left:auto;right:8px;transform:rotate(45deg); }
.column-menu { position:relative;flex:0 0 auto; }
.column-menu-panel { position:absolute;right:0;top:calc(100% + 6px);z-index:80;min-width:210px;padding:8px;border:1px solid #b7c9d5;border-radius:7px;background:#fff;box-shadow:0 12px 26px rgba(21,59,92,.16); }
.column-menu-panel label { display:flex;align-items:center;gap:7px;padding:7px 8px;border-radius:5px;color:var(--ink);font-size:13px;cursor:pointer; }
.column-menu-panel label:hover { background:#edf4f7; }
.column-menu-panel input { width:auto;min-width:0;margin:0; }

/* W6c: mention menu otvorene nad polom, ak pod nim nie je miesto (klavesnica na telefone). */
.mention-menu.is-above { top:auto;bottom:100%;margin:0 0 4px; }
@media (pointer:coarse) { .mention-menu li { min-height:var(--tap);display:flex;align-items:center;flex-wrap:wrap; } }

/* Rychle vyhladavanie taskov (task_search.js). */
.task-search-field { position:relative; }
.task-search-menu { display:none;position:absolute;z-index:90;left:0;right:0;min-width:min(420px,92vw);margin:4px 0 0;padding:5px;max-height:360px;overflow:auto;list-style:none;border:1px solid #b7c9d5;border-radius:6px;background:#fff;box-shadow:0 12px 26px rgba(21,59,92,.16); }
.task-search-menu.is-open { display:block; }
.task-search-menu.is-above { top:auto;bottom:100%;margin:0 0 4px; }
.task-search-menu li { padding:7px 8px;border-radius:5px;font-size:13px; }
.task-search-menu li[role="option"] { cursor:pointer; }
.task-search-menu li[aria-selected="true"],.task-search-menu li[role="option"]:hover { background:#edf4f7; }
.task-search-head { display:flex;flex-wrap:wrap;align-items:baseline;gap:6px; }
.task-search-head strong { color:var(--navy);white-space:nowrap; }
.task-search-badge { font-size:11px; }
.task-search-context { display:block;margin-top:3px;color:var(--muted);overflow-wrap:anywhere; }
.task-search-empty { color:var(--muted); }
.task-search-footer { border-top:1px solid var(--line);color:#1d4c68;font-weight:650; }
@media (pointer:coarse) { .task-search-menu li[role="option"] { min-height:var(--tap); } }

/* Panel filtrov taskov (includes/task_filter_panel.html). Bez JS je vzdy otvoreny.
   Jedna vyska ovladacov (--ctl-h) v hornom riadku, aby pole, cipy a tlacidla sedeli na jednej linke. */
.task-filter-panel { --ctl-h:38px;margin-bottom:12px; }
.task-filter-bar { display:flex;flex-wrap:wrap;align-items:center;gap:8px 10px; }
.task-filter-bar .task-search-field { flex:0 1 420px;min-width:220px; }
.task-filter-bar .task-search-field input { height:var(--ctl-h); }
.quick-filters { display:flex;flex-wrap:wrap;gap:6px;flex:1 1 auto; }
.quick-chip { display:inline-flex;align-items:center;gap:4px;height:var(--ctl-h);padding:0 12px;border:1px solid #c6d6e0;border-radius:19px;background:#fff;color:#214b66;font:inherit;font-size:13px;font-weight:650;white-space:nowrap;cursor:pointer; }
.quick-chip:hover { background:#edf4f7; }
.quick-chip[aria-pressed="true"] { border-color:var(--navy);background:var(--navy);color:#fff; }
.quick-chip:focus-visible,.filter-toggle:focus-visible,.sort-menu > summary:focus-visible { outline:3px solid var(--focus,#2b85b4);outline-offset:2px; }
.task-filter-tools { display:flex;gap:8px;margin-left:auto; }
.task-filter-tools .button { display:inline-flex;align-items:center;gap:6px;height:var(--ctl-h);padding:0 12px;white-space:nowrap; }
.filter-toggle { display:none !important; }
.task-filter-panel.js-ready .filter-toggle { display:inline-flex !important; }
.filter-toggle::after { content:"";width:7px;height:7px;margin:-3px 0 0 2px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(45deg);transition:transform .15s; }
.filter-toggle[aria-expanded="true"]::after { transform:rotate(225deg);margin-top:3px; }

/* Panel s detailnymi filtrami: vlastna mriezka s rovnako sirokymi stlpcami (nie zdedena .filters). */
.task-filter-details { margin-top:10px;padding:14px;border:1px solid #e1eaf0;border-radius:8px;background:#f8fbfc; }
.task-filter-panel.is-collapsed .task-filter-details { display:none; }
.task-filter-sheet-head { display:none; }
/* Pocet stlpcov podla sirky panela (container query), nie auto-fill: mriezka ma 8 buniek (7 poli + pata)
   a stlpce 8, 4, 2 su delitele osmicky. Pri auto-fill vyslo pri ~1700 px 7 stlpcov a pata spadla sama do
   noveho riadku. Pri zmene poctu poli treba upravit aj tieto stupne (komentar v task_filter_panel.html). */
.task-filter-details { container-type:inline-size;container-name:taskfilters; }
.task-filter-grid { display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 14px;align-items:start; }
@container taskfilters (min-width:860px) { .task-filter-grid { grid-template-columns:repeat(4,minmax(0,1fr)); } }
@container taskfilters (min-width:1500px) { .task-filter-grid { grid-template-columns:repeat(8,minmax(0,1fr)); } }
/* Panel s 10 bunkami (poziadavky: 9 poli + pata): 2 a 5 stlpcov, delitele desiatky. */
@container taskfilters (min-width:860px) { .task-filter-grid.is-cols-5 { grid-template-columns:repeat(5,minmax(0,1fr)); } }
/* Lahky panel (dokumenty, architektura, riadenie, audit): rozny pocet poli (4 az 6), preto pata vzdy
   v samostatnom riadku vpravo na celu sirku, aby nikdy neostala sama vlavo v neuplnom riadku.
   Stupne stlpcov ako ostatne panely (2, 3, 6), nie auto-fill. */
@container taskfilters (min-width:860px) { .task-filter-grid.is-light { grid-template-columns:repeat(3,minmax(0,1fr)); } }
@container taskfilters (min-width:1500px) { .task-filter-grid.is-light { grid-template-columns:repeat(6,minmax(0,1fr)); } }
.task-filter-grid.is-light > .task-filter-footer { grid-column:1 / -1;padding-top:0; }
/* Panel so 6 bunkami (scenare: 5 poli + pata): 2, 3 a 6 stlpcov, delitele sestky. */
@container taskfilters (min-width:860px) { .task-filter-grid.is-cols-6 { grid-template-columns:repeat(3,minmax(0,1fr)); } }
@container taskfilters (min-width:1500px) { .task-filter-grid.is-cols-6 { grid-template-columns:repeat(6,minmax(0,1fr)); } }
.task-filter-field { min-width:0; }
.task-filter-field > label:first-child { display:block;margin-bottom:4px;color:#3d5a6c;font-size:13px;font-weight:650; }
.task-filter-field select:not([multiple]) { height:var(--ctl-h); }
/* Natívny vyber Rozsah vyzera ako ostatne vybery (chip-multiselect): rovnaka sipka, ramik a farba textu.
   Sipka je CSS trojuholnik z gradientov, nie obrazok, takze netreba menit CSP ani pridavat subor. */
.task-filter-select { appearance:none;-webkit-appearance:none;padding:5px 34px 5px 8px;border:1px solid #b7c9d5;border-radius:5px;background-color:#fff;color:var(--ink);cursor:pointer;
  background-image:linear-gradient(45deg,transparent 50%,#5e7584 50%),linear-gradient(-45deg,transparent 50%,#5e7584 50%);
  background-position:calc(100% - 16px) 50%,calc(100% - 11px) 50%;background-size:5px 6px,5px 6px;background-repeat:no-repeat; }
.task-filter-select:focus-visible { outline:2px solid var(--focus);outline-offset:2px; }
/* Rovnake pismo v natívnom vybere, poli hladania a vyberoch s cipmi. Iba desktop: na mobile plati 16 px,
   inak by iOS pri fokuse priblizil stranku. */
@media (min-width:761px) {
  .task-filter-field select:not([multiple]),.task-filter-bar .task-search-field input { font-size:14px; }
  .task-filter-field .chip-multiselect-placeholder { font-size:14px; }
}
.task-filter-field .chip-multiselect { min-width:0; }

/* V uzkom poli filtra sa vstup na pisanie pri fokuse iba roztiahne do zvysku riadku; pevnych 120 px
   by ho vedla vybraneho cipu zalomilo a pole by narastlo na dva riadky. */
.task-filter-field .chip-multiselect-input:focus { flex-basis:24px;min-width:24px; }
/* Riadok stitku: nazov pola vlavo, doplnkova volba ("iba hlavny", "iba moje") vpravo na tej istej linke. */
/* Pevna vyska riadku stitku: vacsi checkbox na dotyku (24 px) nesmie zvysit pole oproti susedom bez volby. */
.task-filter-label-row { display:flex;align-items:center;justify-content:space-between;gap:8px;height:19px;margin-bottom:4px; }
.task-filter-label-row .task-filter-check input { max-height:19px; }
.task-filter-label-row > label:first-child { color:#3d5a6c;font-size:13px;font-weight:650; }
.task-filter-check { display:inline-flex;align-items:center;gap:5px;color:var(--muted);font-size:12px;font-weight:500;white-space:nowrap;cursor:pointer; }
.task-filter-check input { width:auto;margin:0; }
.task-filter-check.is-disabled { opacity:.55;cursor:not-allowed; }
/* Pata je posledna bunka mriezky: zarovna sa s polami riadku (odsadenie o vysku stitku), nie so stitkami. */
.task-filter-footer { display:flex;flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:6px 14px;min-width:0;padding-top:21px; }
.task-filter-footer .button { height:var(--ctl-h);white-space:nowrap; }

/* Riadok pod panelom: aktivne filtre vlavo, pocet vysledkov vpravo. */
.task-filter-summary { display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 14px;margin-top:10px;min-height:24px; }
.task-filter-summary .active-filters { margin:0; }
.task-filter-note { color:var(--muted);font-size:12px; }
.task-filter-count { align-self:center;margin-right:4px;color:var(--muted);font-size:13px;font-weight:650;white-space:nowrap; }

/* Zoradenie ako rozbalovacie menu. */
.sort-menu { position:relative; }
.sort-menu > summary { list-style:none;cursor:pointer; }
.sort-menu > summary::-webkit-details-marker { display:none; }
.sort-menu-more { padding:0 6px;border-radius:9px;background:#dceaf2;font-size:11px; }
.sort-menu-panel { position:absolute;right:0;top:calc(100% + 6px);z-index:85;width:min(360px,92vw);padding:12px;border:1px solid #b7c9d5;border-radius:8px;background:#fff;box-shadow:0 12px 26px rgba(21,59,92,.16); }
.sort-menu-panel .sort-panel-title { margin:0 0 8px; }
.sort-menu-panel .sort-levels { flex-direction:column;align-items:stretch; }
.sort-menu-panel .sort-levels li { justify-content:space-between; }
.sort-menu-panel .sort-level-name { flex:1 1 auto;text-align:left; }
.sort-menu-add { display:flex;gap:8px;margin-top:10px; }
.sort-menu-add .inline-select { flex:1 1 auto;max-width:none; }
.sort-menu-panel .sort-panel-note { display:block;margin:10px 0 0; }

/* Na dotyku ma volba v riadku stitku plnu tap plochu; riadok stitku sa preto zvysi iba tam. */
/* Na dotyku ma volba v riadku stitku tap plochu cez neviditelny presah, nie vyssiu vysku:
   inak by pole s volbou bolo nizsie ako susedne polia v tom istom riadku mriezky (tablet). */
@media (pointer:coarse) {
  .task-filter-panel { --ctl-h:var(--tap); }
  /* Vyber s cipmi ma na dotyku 56 px (vstup 44 px + okraj); natívny Rozsah dostane rovnaku vysku. */
  .task-filter-field select:not([multiple]) { height:56px; }
  .task-filter-check { position:relative;font-size:13px; }
  .task-filter-check input { position:relative;z-index:1; }
  .task-filter-check::after { content:"";position:absolute;z-index:0;left:-8px;right:-8px;top:50%;height:var(--tap);transform:translateY(-50%); }
}
@media (max-width:760px) {
  .task-filter-bar .task-search-field { flex:1 1 100%; }
  .quick-filters { flex-wrap:nowrap;overflow-x:auto;max-width:100%;padding-bottom:2px;-webkit-overflow-scrolling:touch; }
  .quick-chip { flex:0 0 auto; }
  .task-filter-tools { margin-left:0;width:100%; }
  .task-filter-tools > * { flex:1 1 0; }
  .task-filter-tools .button,.sort-menu > summary { width:100%;justify-content:center; }
  .sort-menu-panel { position:fixed;left:12px;right:12px;top:auto;bottom:calc(var(--bottom-nav-h,60px) + 12px + env(safe-area-inset-bottom));width:auto;z-index:275; }
  /* Na mobile je rozbaleny panel celoobrazovkovy; z-index nad spodnou navigaciou (270). */
  .task-filter-panel.js-ready:not(.is-collapsed) .task-filter-details { position:fixed;inset:0;z-index:300;display:block;margin:0;padding:0 16px;border:0;border-radius:0;overflow:auto;background:#fff; }
  .task-filter-grid { grid-template-columns:minmax(0,1fr); }
  .task-filter-panel.js-ready .task-filter-sheet-head { display:flex;justify-content:space-between;align-items:center;gap:12px;position:sticky;top:0;z-index:1;margin:0 -16px 12px;padding:12px 16px;background:#fff;border-bottom:1px solid var(--line); }
  .task-filter-sheet-head h2 { margin:0;font-size:18px; }
  .task-filter-sheet-head .button { width:auto; }
  .task-filter-panel.js-ready:not(.is-collapsed) .task-filter-footer { position:sticky;bottom:0;z-index:1;margin:0 -16px;padding:12px 16px calc(12px + env(safe-area-inset-bottom));background:#fff;border-top:1px solid var(--line); }
  .task-filter-footer { flex-wrap:nowrap; }
  .task-filter-footer .button { flex:1 1 auto; }
  .task-filter-footer .active-filters-clear { flex:0 0 auto; }
  /* Na mobile pocet nad cipmi filtrov, nie vedla tlacidiel (tie su na celu sirku). */
  .task-filter-count { order:-1;flex:1 1 100%;margin:0; }
  body.filter-sheet-open { overflow:hidden; }
  /* Vyber s cipmi sa na dotyku otvara ako spodny panel (46vh) a pole sa posunie na vrch obrazovky. V paneli
     filtrov pod polom nebolo dost obsahu na posun, takze pole ostalo v strede a prekrylo listu Vymazat/Hotovo. */
  body.chip-sheet-open .task-filter-panel:not(.is-collapsed) .task-filter-details { padding-bottom:60vh; }
}

