/* Zakladne styly Project Hubu. Presunute z base.html bez zmeny pravidiel a ich poradia. */
:root { --navy:#153b5c; --blue:#226b9a; --sky:#eaf3f8; --ink:#172b3a; --muted:#667887; --line:#d9e4eb; --must:#bf3a3a; --should:#d38121; --could:#287c8d; --wont:#8a8f98; }
* { box-sizing:border-box; } [hidden] { display:none !important; } body { margin:0; background:#f5f8fa; color:var(--ink); font:15px/1.45 system-ui,-apple-system,"Segoe UI",sans-serif; }
a { color:var(--blue); } .topbar { background:var(--navy); color:#fff; } .topbar-inner { max-width:1440px; margin:auto; min-height:64px; padding:0 28px; display:flex; align-items:center; gap:24px; }
.brand { display:inline-flex;align-items:center;gap:9px;font-size:18px;font-weight:750;letter-spacing:.2px;text-decoration:none;color:#fff; } .brand-logo { width:34px;height:34px;object-fit:contain;flex:0 0 auto; } .brand small { color:#a8c8dc; font-weight:500; margin-left:8px; } .brand-version { color:#a8c8dc;text-decoration:none;font-size:13px;font-weight:650;margin-left:-18px; }
.nav { margin-left:auto; display:flex; gap:18px; align-items:center; } .nav a { color:#e7f3fa; text-decoration:none; } .nav .admin { border:1px solid #88b5ce; border-radius:5px; padding:6px 10px; } .notification-link { display:inline-flex;align-items:center;gap:6px; } .notification-badge { display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 6px;border-radius:10px;background:#f4b942;color:#153b5c;font-size:11px;font-weight:800; } .logout-form { margin:0; } .logout-button { border:0;background:transparent;color:#e7f3fa;text-decoration:none;font:inherit;cursor:pointer;padding:0; }
main { max-width:1440px; margin:0 auto; padding:30px 28px 48px; } .project-head { display:flex; gap:24px; justify-content:space-between; align-items:flex-end; margin-bottom:24px; }
h1 { color:var(--navy); margin:0; font-size:30px; letter-spacing:-.5px; } h2 { color:var(--navy); font-size:18px; margin:0 0 14px; } .subtitle { margin:7px 0 0; color:var(--muted); }
.project-switcher label { display:block; color:var(--muted); font-size:12px; font-weight:700; margin-bottom:4px; text-transform:uppercase; letter-spacing:.05em; } select { min-width:280px; padding:9px 10px; border:1px solid #b7c9d5; border-radius:5px; background:#fff; color:var(--ink); }
.metrics { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:14px; margin-bottom:24px; } .metric { background:#fff; border:1px solid var(--line); border-radius:7px; padding:17px; box-shadow:0 1px 1px rgba(19,56,83,.03); }
.metric .value { color:var(--navy); font-size:29px; font-weight:760; line-height:1; } .metric .name { color:var(--muted); font-size:13px; margin-top:7px; }
.grid { display:grid; grid-template-columns:1.45fr 1fr; gap:18px; margin-bottom:18px; } .card { background:#fff; border:1px solid var(--line); border-radius:7px; padding:20px; box-shadow:0 1px 1px rgba(19,56,83,.03); } .actions-row { display:flex; flex-wrap:wrap; gap:8px; justify-content:flex-end; }
.bar-row { display:grid; grid-template-columns:250px 1fr 36px; align-items:center; gap:12px; margin:9px 0; } .bar-label { white-space:nowrap; overflow:hidden; text-overflow:ellipsis; } .bar-track { height:12px; background:#e8f0f4; border-radius:6px; overflow:hidden; } .bar { height:100%; min-width:1px; background:linear-gradient(90deg,#2b85b4,#59a8c6); border-radius:6px; } .bar-value { font-weight:700; text-align:right; }
.split-bars { display:grid; grid-template-columns:1fr 1fr; gap:24px; } .tag { display:inline-block; padding:3px 8px; border-radius:12px; background:#edf4f7; color:#31566d; font-size:12px; font-weight:650; }
table { width:100%; border-collapse:collapse; } th { color:#5e7584; font-size:12px; text-transform:uppercase; letter-spacing:.04em; text-align:left; border-bottom:1px solid var(--line); padding:0 8px 9px; } td { padding:10px 8px; border-bottom:1px solid #edf2f5; vertical-align:top; } tr:last-child td { border-bottom:0; }
.empty { padding:32px; text-align:center; color:var(--muted); } .page-nav { background:#fff; border-bottom:1px solid var(--line); } .page-nav-inner { max-width:1440px;margin:auto;padding:0 28px;display:flex;gap:20px; } .page-nav a { color:#375b71;text-decoration:none;padding:11px 0;border-bottom:3px solid transparent;font-weight:650; } .page-nav a.active { color:var(--navy);border-bottom-color:#2b85b4; } .button { display:inline-block;border:0;border-radius:5px;padding:9px 13px;background:var(--navy);color:#fff;text-decoration:none;font-weight:700;cursor:pointer; } .button.secondary { background:#edf4f7;color:#214b66; } .filters { display:grid;grid-template-columns:minmax(280px,2fr) repeat(3,minmax(150px,1fr));gap:12px;align-items:end;margin-bottom:16px; } .filters .filter-actions { display:flex;gap:8px;align-items:center; } .filters label { display:block;color:var(--muted);font-size:12px;font-weight:700;margin-bottom:4px;text-transform:uppercase; } input,select,textarea { width:100%;min-width:0;padding:9px 10px;border:1px solid #b7c9d5;border-radius:5px;background:#fff;color:var(--ink);font:inherit; } textarea { resize:vertical; } .inline-select { width:auto;min-width:110px;max-width:165px;padding:5px 24px 5px 7px;font-size:13px;border-color:#d5e1e8;background:#fbfdfe; } .inline-select[data-field="capability"] { min-width:92px;max-width:115px; } .inline-select.is-saving { background:#fff7df;border-color:#d8ae3d; } .inline-select.is-saved { background:#e8f6ec;border-color:#54a36b; } .inline-select.is-error { background:#fdecec;border-color:#c94c4c; } .inline-status { color:var(--muted);font-size:12px;margin-top:10px;min-height:18px; } .form-grid { display:grid;grid-template-columns:1fr 1fr;gap:15px; } .form-grid .wide { grid-column:1/-1; } .messages { margin-bottom:16px; } .message { padding:11px 14px;background:#eef3f7;color:#22405a;border-radius:5px;border-left:4px solid #7d97ac;margin-bottom:8px; } .messages .message:last-child { margin-bottom:0; } .message.success { background:#e6f4ea;color:#1c6531;border-left-color:#3f8f5c; } .message.info, .message.debug { background:#e8f1fa;color:#1d4a72;border-left-color:#3d7fb5; } .message.warning { background:#fdf3e0;color:#7a4e08;border-left-color:#c07d12; } .message.error { background:#fdecec;color:#8f2020;border-left-color:#c94c4c; } .message-label { font-weight:700;margin-right:6px; } .detail-meta { display:flex;flex-wrap:wrap;gap:8px;margin:12px 0 20px; } .detail-section { margin:18px 0; } .detail-section h2 { border-bottom:1px solid var(--line);padding-bottom:8px; } @media(max-width:1100px) { .filters { grid-template-columns:1fr 1fr; } } @media(max-width:900px) { .metrics { grid-template-columns:repeat(2,1fr); } .grid { grid-template-columns:1fr; } .project-head { display:block; } .project-switcher { margin-top:16px; } .bar-row { grid-template-columns:150px 1fr 32px; } .topbar-inner,.page-nav-inner { padding:0 16px; } main { padding:22px 16px; } .filters,.form-grid { grid-template-columns:1fr; } .filters .filter-actions { flex-wrap:wrap; } .form-grid .wide { grid-column:auto; } }
.pagination { display:flex;gap:10px;align-items:center;justify-content:flex-end;margin-top:14px;color:var(--muted); }
.auth-card { max-width:520px;margin:50px auto; } .auth-card form p { margin:16px 0; } .auth-card .errorlist { margin:8px 0;padding-left:20px;color:#a32b2b; } .auth-actions { display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-top:20px; } .auth-actions .secondary-link { margin-left:auto; } .qr-code { display:block;max-width:280px;width:100%;height:auto;margin:20px auto;padding:12px;background:#fff;border:1px solid var(--line);border-radius:8px; } .totp-secret { overflow-wrap:anywhere;padding:10px;background:#edf4f7;border-radius:5px;font-family:ui-monospace,SFMono-Regular,Consolas,monospace; } .backup-codes { display:grid;grid-template-columns:1fr 1fr;gap:8px 18px;padding:16px 16px 16px 36px;background:#edf4f7;border-radius:6px;font-family:ui-monospace,SFMono-Regular,Consolas,monospace; }
th a { color:inherit;text-decoration:none;display:inline-flex;align-items:center;gap:5px; } th a:hover .sort-label { color:#2b85b4; } th a:focus-visible { outline:2px solid #2b85b4;outline-offset:2px;border-radius:3px; }
.sort-label { display:inline-flex;align-items:center;gap:4px; } .sort-label.is-sorted { color:var(--navy);font-weight:800; } .sort-arrow { font-size:13px;line-height:1;color:#2b85b4; }
.sort-order { display:inline-grid;place-items:center;min-width:16px;height:16px;padding:0 4px;border-radius:8px;background:#dceaf2;color:#214b66;font-size:10px;font-weight:700; }
th[aria-sort="ascending"], th[aria-sort="descending"] { background:#f4f9fb;border-bottom-color:#2b85b4; }
.sr-only { position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0; }
.sort-panel { display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin:0 0 14px;padding:10px 12px;background:#f7fbfc;border:1px solid #e3edf2;border-radius:6px; }
.sort-panel-title { color:var(--muted);font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.04em; }
.sort-panel-note { color:var(--muted);font-size:12px; }
.sort-levels { display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:0;padding:0;list-style:none;counter-reset:sortlevel; }
.sort-levels li { counter-increment:sortlevel;display:inline-flex;align-items:center;gap:6px;padding:4px 8px;background:#fff;border:1px solid #cfe0e9;border-radius:14px;font-size:13px; }
.sort-levels li::before { content:counter(sortlevel);display:inline-grid;place-items:center;min-width:16px;height:16px;border-radius:8px;background:#dceaf2;color:#214b66;font-size:10px;font-weight:700; }
.sort-level-name { color:var(--ink);font-weight:650; }
.sort-level-toggle { color:#2b85b4;text-decoration:none;font-weight:700;font-size:12px;white-space:nowrap; }
.sort-level-toggle:hover { text-decoration:underline; }
.sort-level-remove { color:#95a9b5;text-decoration:none;font-weight:700;line-height:1;padding:0 2px; }
.sort-level-remove:hover { color:#c94c4c; }
.sort-add { display:inline-flex;align-items:center;gap:8px;margin:0; }
.sort-add .inline-select { margin:0; }
/* Stav je pilulka, priorita bodka. Rozdielny tvar odlisi obe dimenzie aj pri podobnom odtieni. */
.status-pill { display:inline-block;padding:3px 9px;border-radius:12px;background:#eef2f5;color:#4a5c6a;font-size:12px;font-weight:700;white-space:nowrap; }
.status-pill.is-new { background:#eef2f5;color:#4a5c6a; }
.status-pill.is-progress { background:#fdf3e0;color:#8a5410; }
.status-pill.is-done { background:#e6f4ea;color:#1c6531; }
.status-pill.is-waiting { background:#e4f0fa;color:#1d5a8c; }
.status-pill.is-blocked { background:#fbe3d3;color:#8c3a0a; }
.status-pill.is-blocked::before { content:"\26D4\00a0"; }
.status-pill.is-review { background:#efe6f8;color:#5b2d86; }
.status-pill.is-cancelled { background:#eceff1;color:#5d6b75;text-decoration:line-through; }
.status-pill.is-overdue { background:#fdecec;color:#a32b2b; }
.priority-mark { display:inline-flex;align-items:center;gap:6px;white-space:nowrap; }
.priority-mark::before { content:"";width:9px;height:9px;border-radius:50%;background:#8a8f98;flex:0 0 auto; }
.priority-mark.is-critical::before { background:var(--must); }
.priority-mark.is-high::before { background:var(--should); }
.priority-mark.is-medium::before { background:var(--could); }
.priority-mark.is-low::before { background:var(--wont); }
.priority-mark.is-critical { color:#8f2b2b;font-weight:700; }
.co-assignees { position:relative;display:inline-block;padding:3px 8px;border-radius:12px;background:#edf4f7;color:#31566d;font-size:12px;font-weight:650;cursor:help;outline:0; }
.co-assignees:hover,.co-assignees:focus-visible { background:#dcecf4;color:#153b5c; }
.assignee-with-others { white-space:nowrap; }
.assignee-with-others .co-assignees-tooltip { white-space:normal; }
.co-assignees:focus-visible { outline:2px solid #2b85b4;outline-offset:2px; }
.co-assignees-tooltip { display:none;position:absolute;z-index:80;left:0;top:calc(100% + 5px);min-width:150px;max-width:280px;padding:8px 10px;border:1px solid #cfe0ea;border-radius:6px;background:#fff;color:var(--ink);font-weight:500;font-size:12px;line-height:1.5;text-align:left;box-shadow:0 10px 22px rgba(21,59,92,.16); }
.co-assignees-tooltip strong { display:block;margin-bottom:4px;color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.04em; }
.co-assignees-tooltip span { display:block;white-space:nowrap; }
.co-assignees:hover .co-assignees-tooltip,.co-assignees:focus .co-assignees-tooltip,.co-assignees:focus-within .co-assignees-tooltip { display:block; }
/* Odsadenie podla urovne; level 1 zostava na lavom okraji. */
.tree-name { display:inline-flex;align-items:baseline;gap:6px;padding-left:calc((var(--tree-level) - 1) * 26px); }
.tree-branch { color:#9db4c2;font-weight:700; }
.capability-ref { position:relative;display:inline-block; }
.capability-tooltip { display:none;position:absolute;z-index:80;left:0;top:calc(100% + 5px);width:max-content;max-width:320px;padding:9px 11px;border:1px solid #cfe0ea;border-radius:6px;background:#fff;color:var(--ink);font-weight:500;font-size:12px;line-height:1.45;text-align:left;box-shadow:0 10px 22px rgba(21,59,92,.16); }
.capability-tooltip strong { display:block;color:var(--navy); }
.capability-meta { display:block;margin-top:3px;color:var(--muted);font-size:11px; }
.capability-desc { display:block;margin-top:6px;padding-top:6px;border-top:1px solid #eef3f6;white-space:normal; }
.capability-ref:hover .capability-tooltip,.capability-ref:focus-within .capability-tooltip { display:block; }
.page-size { margin-right:auto;font-size:12px; } .page-size strong { color:var(--navy); }
.bulk-row { display:grid;grid-template-columns:minmax(170px,1fr) minmax(240px,2fr) minmax(120px,auto) 40px;gap:12px;align-items:end;margin-bottom:12px; }
.bulk-row label { display:block;color:var(--muted);font-size:12px;font-weight:700;margin-bottom:4px;text-transform:uppercase; }
.bulk-row .bulk-remove { padding:9px 12px;line-height:1; }
.bulk-actions { display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-top:4px; }
.table-selection-toolbar { display:flex;flex-wrap:wrap;align-items:center;gap:9px;margin:0 0 14px;padding:10px 12px;border:1px solid #d9e4eb;border-radius:7px;background:#f7fafc; }
.table-selection-toolbar form { display:inline-flex;margin:0 0 0 auto; }
/* Bez JS (bez triedy js-selection) ostava lista viditelna, inak by sa export nedal pouzit vobec. */
.js-selection .table-selection-toolbar:not(.has-selection) { display:none; }
.table-select-all { display:inline-flex;align-items:center;gap:7px;font-weight:700; }
.table-select-all input,[data-row-select] { width:auto;min-width:0;margin:0; }
.table-selection-count { color:var(--muted);font-size:13px; }
.active-filters { display:flex;flex-wrap:wrap;align-items:center;gap:7px;margin:-5px 0 16px; }
.active-filters-title { color:var(--muted);font-size:12px;font-weight:750;text-transform:uppercase;letter-spacing:.04em; }
.active-filter-chip { display:inline-flex;align-items:center;padding:4px 9px;border:1px solid #cfe0e9;border-radius:14px;background:#edf4f7;color:#214b66;text-decoration:none;font-size:12px;font-weight:650; }
.active-filter-chip:hover { border-color:#c94c4c;background:#fdecec;color:#8f2b2b; }
.active-filters-clear { border:0;background:transparent;color:#a32b2b;text-decoration:underline;cursor:pointer;font:inherit;font-size:12px;font-weight:700; }
@media(max-width:900px) { .bulk-row { grid-template-columns:1fr; } }
a.metric { text-decoration:none;color:inherit;transition:border-color .12s; }
a.metric:hover { border-color:#2b85b4; } a.metric:hover .name { color:#2b85b4; }
a.metric:focus-visible { outline:2px solid #2b85b4;outline-offset:2px; }
select.chip-multiselect-source { display:none !important; }
.chip-multiselect { position:relative;width:100%;min-width:220px; }
.chip-multiselect.inline { min-width:240px;max-width:360px; }
.chip-multiselect-control { min-height:38px;width:100%;display:flex;align-items:center;flex-wrap:wrap;gap:6px;padding:5px 34px 5px 7px;border:1px solid #b7c9d5;border-radius:5px;background:#fff;cursor:text;position:relative; }
.chip-multiselect.inline .chip-multiselect-control { min-height:32px;border-color:#d5e1e8;background:#fbfdfe;font-size:13px; }
.chip-multiselect-control::after { content:"";position:absolute;right:11px;top:50%;width:0;height:0;margin-top:-3px;border-left:5px solid transparent;border-right:5px solid transparent;border-top:6px solid #5e7584;transform-origin:center 40%;transition:transform .15s ease; }
.chip-multiselect.is-open .chip-multiselect-control::after { transform:rotateZ(180deg); }
.chip-multiselect-chip { display:inline-flex;align-items:center;gap:5px;max-width:100%;min-width:0;padding:3px 7px;border-radius:14px;background:#edf4f7;color:#214b66;font-size:12px;font-weight:650; }
/* Dlhe meno sa v cipe nezalamuje na dva riadky; skrati sa trojbodkou a cele je v title. */
.chip-multiselect-chip-text { flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap; }
.chip-multiselect-chip button { flex:0 0 auto; }
/* Suhrn "+N" v poli filtra (data-chip-summary). */
.chip-multiselect-more { flex:0 0 auto;padding:3px 7px;border-radius:14px;background:#dceaf2;color:#214b66;font-size:12px;font-weight:700;cursor:help; }
.chip-multiselect-control.is-summary { flex-wrap:nowrap; }
/* Meno ma prednost pred vstupom na pisanie: cip sa zmensi (trojbodka) az ked uz nie je kam, vstup ma pevnych 24 px. */
.chip-multiselect-control.is-summary .chip-multiselect-chip { flex:0 1 auto;max-width:none; }
/* Bez fokusu je vstup v suhrne neviditelny a nezabera miesto (meno sa tak neskracuje zbytocne); pri fokuse sa
   suhrn "+N" schova a vstup ma miesto na pisanie. Fokus z klavesnice ostava, vstup nie je display:none. */
.chip-multiselect-control.is-summary .chip-multiselect-input { flex:0 0 0;min-width:0;padding:0; }
.chip-multiselect-control.is-summary:focus-within .chip-multiselect-input { flex:1 1 24px;min-width:24px;padding:2px; }
.chip-multiselect-control.is-summary:focus-within .chip-multiselect-more { display:none; }
.chip-multiselect-chip button { border:0;background:transparent;color:#456879;cursor:pointer;font:inherit;font-weight:800;padding:0;line-height:1; }
.chip-multiselect-placeholder { color:var(--muted);font-size:13px;padding:2px 0; }
/* Bez fokusu je vstup iba miesto na pisanie: neberie celu sirku, takze placeholder a cipy sa nezalamu na druhy riadok. */
/* width:0 + flex-grow: globalne `input { width:100% }` by inak urcovalo sirku pri zalamovani a vstup by sa vedla
   vybraneho cipu zlomil na novy riadok. Takto zaberie zvysok riadku, a az ked tam nie je ani min-width, zalomi sa. */
.chip-multiselect-input { flex:1 1 24px;width:0;min-width:24px;border:0;padding:2px;background:transparent;outline:0;font:inherit; }
.chip-multiselect-input:focus { flex-basis:120px;min-width:90px; }
/* Pri fokuse placeholder zmizne (pise sa do pola). Inak sa siroke pole s placeholderom zalomilo na dva riadky,
   po strate fokusu sa ovladac zmensil a menu vyskocilo vyssie, takze klik na volbu minul ciel. */
.chip-multiselect-control:focus-within .chip-multiselect-placeholder { display:none; }
.chip-multiselect-menu { display:none;position:absolute;z-index:40;left:0;right:0;top:calc(100% + 4px);max-height:260px;overflow:auto;border:1px solid #b7c9d5;border-radius:6px;background:#fff;box-shadow:0 12px 26px rgba(21,59,92,.16);padding:6px; }
.chip-multiselect.is-open .chip-multiselect-menu { display:block; }
label.chip-multiselect-option { display:flex;align-items:center;gap:7px;padding:7px 8px;border-radius:5px;cursor:pointer;font-size:13px; }
.filters label.chip-multiselect-option { display:flex;align-items:center;gap:7px;margin-bottom:0;text-transform:none;letter-spacing:normal;font-weight:500;color:var(--ink); }
.chip-multiselect-option:hover { background:#edf4f7; }
.chip-multiselect-option input { width:auto;min-width:0;margin:0;flex:0 0 auto; }
.chip-multiselect-empty { padding:8px;color:var(--muted);font-size:13px; }
.chip-multiselect.is-saving .chip-multiselect-control { background:#fff7df;border-color:#d8ae3d; }
.chip-multiselect.is-saved .chip-multiselect-control { background:#e8f6ec;border-color:#54a36b; }
.chip-multiselect.is-error .chip-multiselect-control { background:#fdecec;border-color:#c94c4c; }
.heading-help { display:inline-flex;align-items:center;gap:7px; }
.help-popover { position:relative;display:inline-flex;align-items:center;justify-content:center;vertical-align:middle;outline:0; }
.help-mark { display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:50%;background:#edf4f7;color:#31566d;font-size:12px;font-weight:800;cursor:help;line-height:1;border:1px solid #cfe0ea; }
.help-popover:focus .help-mark,.help-popover:hover .help-mark { background:#dcecf4;color:#153b5c;border-color:#9fc0d3; }
.help-text { display:none;position:absolute;z-index:90;left:50%;top:calc(100% + 8px);width:min(320px,calc(100vw - 36px));transform:translateX(-50%);padding:11px 12px;border:1px solid #cfe0ea;border-radius:8px;background:#fff;color:var(--ink);box-shadow:0 12px 30px rgba(21,59,92,.18);font-size:13px;font-weight:500;line-height:1.4;text-transform:none;letter-spacing:normal; }
.help-text::before { content:"";position:absolute;left:50%;top:-6px;width:10px;height:10px;transform:translateX(-50%) rotate(45deg);background:#fff;border-left:1px solid #cfe0ea;border-top:1px solid #cfe0ea; }
.help-popover:hover .help-text,.help-popover:focus .help-text,.help-popover:focus-within .help-text { display:block; }
.checkbox-list .form-control { display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:8px 18px;margin:8px 0 0;padding:0;list-style:none; }
.checkbox-list .form-control li { margin:0; }
.checkbox-list label { display:flex;align-items:center;gap:8px;margin:0;font-weight:500;color:var(--ink); }
.checkbox-list input { width:auto;min-width:0;margin:0;flex:0 0 auto; }
.mobile-header-actions,.mobile-menu { display:none; }
.icon-button { position:relative;display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;border:1px solid rgba(255,255,255,.3);border-radius:9px;background:rgba(255,255,255,.08);color:#fff;text-decoration:none;font:inherit;cursor:pointer; }
.desktop-profile { position:relative; } .desktop-profile-toggle { display:inline-flex;align-items:center;gap:8px;border:0;background:transparent;color:#e7f3fa;font:inherit;cursor:pointer;padding:7px 3px; } .user-icon { display:inline-grid;place-items:center;width:25px;height:25px;border:1px solid #88b5ce;border-radius:50%;font-size:14px;line-height:1; } .desktop-profile-arrow { width:7px;height:7px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(45deg);transition:transform .16s; } .desktop-profile-toggle[aria-expanded="true"] .desktop-profile-arrow { transform:rotate(225deg); } .desktop-profile-menu { position:absolute;z-index:100;right:0;top:calc(100% + 7px);display:grid;gap:4px;min-width:230px;padding:7px;border:1px solid #cfe0ea;border-radius:8px;background:#fff;box-shadow:0 14px 30px rgba(21,59,92,.2); } .desktop-profile-menu[hidden] { display:none; } .desktop-profile-menu a,.desktop-profile-menu .logout-button { display:block;width:100%;padding:9px 10px;border-radius:6px;color:#214b66;text-align:left;text-decoration:none;font:inherit;font-weight:650; } .desktop-profile-menu a:hover,.desktop-profile-menu .logout-button:hover,.desktop-profile-menu a:focus-visible,.desktop-profile-menu .logout-button:focus-visible { background:#edf4f7;outline:none; } .desktop-profile-menu form { margin:0; } .desktop-profile-menu .logout-button { border:0;background:transparent;cursor:pointer; }
.hamburger-lines,.hamburger-lines::before,.hamburger-lines::after { display:block;width:18px;height:2px;border-radius:2px;background:currentColor;content:""; }
.hamburger-lines { position:relative; }
.hamburger-lines::before,.hamburger-lines::after { position:absolute;left:0; }
.hamburger-lines::before { top:-6px; }
.hamburger-lines::after { top:6px; }
@media(max-width:1100px){ .metrics{grid-template-columns:repeat(3,minmax(0,1fr))}.grid{grid-template-columns:1fr}.filters{grid-template-columns:repeat(2,minmax(0,1fr))}.split-bars{grid-template-columns:1fr}.bar-row{grid-template-columns:minmax(120px,1fr) minmax(100px,2fr) 36px} }
@media(max-width:760px){
  body{font-size:14px}.topbar-inner{min-height:auto;padding:10px 14px;gap:8px}.brand{font-size:16px;gap:7px}.brand-logo{width:30px;height:30px}.brand-version{margin-left:0;font-size:12px}.nav,.page-nav{display:none}.mobile-header-actions{display:flex;margin-left:auto;gap:8px}.mobile-menu{display:block;background:#fff;border-bottom:1px solid var(--line);box-shadow:0 14px 26px rgba(21,59,92,.12)}.mobile-menu[hidden]{display:none}.mobile-menu-inner{padding:14px}.mobile-menu-nav{display:grid;gap:6px}.mobile-menu-nav a,.mobile-profile-toggle,.mobile-profile-panel a,.mobile-profile-panel .logout-button{display:block;width:100%;padding:10px 11px;border-radius:8px;background:#f3f8fb;color:#214b66;text-align:left;text-decoration:none;font-weight:700}.mobile-menu-nav a.active{background:#dcecf4;color:var(--navy)}.mobile-profile{margin-top:12px;padding-top:12px;border-top:1px solid var(--line)}.mobile-profile-toggle{display:flex;align-items:center;justify-content:space-between;border:0;cursor:pointer}.mobile-profile-label{display:inline-flex;align-items:center;gap:8px;min-width:0}.mobile-profile-username{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mobile-profile-arrow{width:9px;height:9px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(45deg);transition:transform .16s ease;flex:0 0 auto}.mobile-profile-toggle[aria-expanded="true"] .mobile-profile-arrow{transform:rotate(225deg)}.mobile-profile-panel{display:grid;gap:6px;margin-top:7px}.mobile-profile-panel[hidden]{display:none}.mobile-profile-user{display:block;margin:0 0 7px;color:var(--muted);font-size:12px}.mobile-profile-panel form{margin:0}.mobile-profile-panel .logout-button{border:0;font:inherit;cursor:pointer}.mobile-notification-badge{position:absolute;right:-4px;top:-5px}
  main{padding:18px 12px 34px}.project-head{display:block;margin-bottom:16px}.project-head .actions-row{justify-content:flex-start;margin-top:12px}.actions-row{gap:7px}.button{padding:9px 11px}.card{padding:14px;border-radius:6px}h1{font-size:24px}h2{font-size:17px}.subtitle{font-size:13px}.auth-card{margin:18px auto}.backup-codes{grid-template-columns:1fr}.auth-actions .secondary-link{margin-left:0;width:100%}
  .metrics{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-bottom:14px}.metric{padding:13px}.metric .value{font-size:24px}.metric .name{font-size:12px}.grid{gap:12px;margin-bottom:12px}.filters{grid-template-columns:1fr;gap:10px}.filters .filter-actions{align-items:stretch;flex-wrap:wrap}.filters .filter-actions .button{width:100%;text-align:center}.form-grid{grid-template-columns:1fr}.form-grid .wide{grid-column:auto}.project-switcher{margin-top:12px}.project-switcher select,select{min-width:0}
  table{display:block;width:100%;min-width:0;overflow-x:auto;-webkit-overflow-scrolling:touch}th[aria-sort="ascending"],th[aria-sort="descending"]{background:#f4f9fb}.pagination{justify-content:flex-start;flex-wrap:wrap}.page-size{width:100%;margin-right:0}.sort-panel{align-items:stretch}.sort-add{width:100%;align-items:stretch}.sort-add .inline-select{width:100%;max-width:none}.sort-add .button{white-space:nowrap}.bulk-row{grid-template-columns:1fr}.bulk-actions{align-items:stretch}.bulk-actions .button{width:100%}.chip-multiselect{min-width:0}.chip-multiselect.inline{min-width:0;max-width:none}.chip-multiselect-menu{max-height:45vh}.table-toolbar{align-items:stretch;flex-direction:column}.column-menu{position:static;align-self:flex-start}.column-menu-panel{position:fixed;left:12px;right:12px;top:72px;max-height:70vh;overflow:auto}.bar-row{grid-template-columns:minmax(90px,1fr) minmax(90px,1.4fr) 32px;gap:8px}.bar-label{white-space:normal}.checkbox-list .form-control{grid-template-columns:1fr}
  .table-selection-toolbar{align-items:stretch;flex-direction:column}.table-selection-toolbar form{margin-left:0}.table-selection-toolbar .button{width:100%}.heading-help{align-items:flex-start}.help-text{position:fixed;left:18px;right:18px;top:auto;bottom:18px;width:auto;transform:none}.help-text::before{display:none}.help-mark{width:22px;height:22px;font-size:13px}
}
@media(max-width:420px){ .metrics{grid-template-columns:1fr}.nav{grid-template-columns:1fr}.button{width:100%;text-align:center}.actions-row .button{width:auto}.bar-row{grid-template-columns:1fr 56px}.bar-track{grid-column:1/-1;grid-row:2}.bar-value{text-align:right} }
[data-copy-link] { position:relative; } [data-copy-link].copy-link-confirmed::after { content:attr(data-copy-tooltip);position:absolute;z-index:110;left:50%;bottom:calc(100% + 8px);transform:translateX(-50%);padding:6px 8px;border-radius:5px;background:#153b5c;color:#fff;font-size:12px;font-weight:650;line-height:1.2;white-space:nowrap;box-shadow:0 8px 18px rgba(15,39,58,.2); } [data-copy-link].copy-link-confirmed::before { content:"";position:absolute;z-index:110;left:50%;bottom:calc(100% + 3px);width:8px;height:8px;transform:translateX(-50%) rotate(45deg);background:#153b5c; }
@media(min-width:1600px){ .topbar-inner,.page-nav-inner,main{max-width:1760px} }

/* ---- W2: mobilny zaklad (PWA plan 7.1 a 7.2). Pravidla su na konci, aby prebili starsie bloky bez zmeny ich poradia. ---- */
:root { --tap:44px; --bottom-nav-h:60px; --focus:#2b85b4; }

/* Jednotny fokus pre vsetky interaktivne prvky; povodne outline:0 bez nahrady bolo neviditelne pre klavesnicu. */
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible,[tabindex]:focus-visible { outline:2px solid var(--focus);outline-offset:2px; }
.chip-multiselect-control .chip-multiselect-input:focus-visible { outline:0; }
.chip-multiselect-control:focus-within { outline:2px solid var(--focus);outline-offset:2px; }

/* Vzory tabuliek: .table-scroll posuva vodorovne iba vnutri kontajnera, .table-stack ju na mobile zobrazi ako karty. */
.table-scroll { max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch; }
.global-project-switcher { display:grid;gap:6px;margin:0 0 12px; }
.global-project-switcher label { color:var(--muted);font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.05em; }
.global-project-switcher select { min-width:0; }
.desktop-profile-menu .global-project-switcher { padding:8px 10px 10px;border-bottom:1px solid var(--line);margin:0 0 4px; }
.bottom-nav,.mobile-menu-close,.button.actions-more-toggle { display:none; }
/* Sirka popisku stlpca sa predtym zadavala inline, co prebijalo vsetky breakpointy. Hodnoty zodpovedaju povodnym inline sirkam. */
.bar-row-w62 { grid-template-columns:62px 1fr 28px; }
.bar-row-w88 { grid-template-columns:88px 1fr 32px; }
.bar-row-w100 { grid-template-columns:100px 1fr 28px; }
.bar-row-w120 { grid-template-columns:120px 1fr 36px; }
.bar-row-w150 { grid-template-columns:150px 1fr 32px; }

/* Tablet: hlavna lista sa posuva vodorovne namiesto pretecenia stranky. */
@media(min-width:761px) and (max-width:1100px) {
  .page-nav-inner { overflow-x:auto;scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch;scrollbar-width:thin; }
  .page-nav-inner a { flex:0 0 auto;white-space:nowrap;scroll-snap-align:start; }
}

@media(max-width:900px) {
  /* 1fr ma minimum podla obsahu; siroky toolbar editora alebo tabulka vtedy roztiahne stlpec a polia vycnievaju z karty. */
  .grid,.form-grid,.filters { grid-template-columns:minmax(0,1fr); }
  .grid > *,.form-grid > *,.filters > * { min-width:0; }
  .toastui-editor-defaultUI { max-width:100%; }
}

@media(max-width:760px) {
  .bar-row[class*="bar-row-w"] { grid-template-columns:minmax(70px,1fr) minmax(70px,1.4fr) 32px; }
  /* Cislniky maju vlastny grid v stranke (1fr); bez min-width:0 ho siroka tabulka roztiahne za viewport. */
  .dictionary-layout > * { min-width:0; }
  .phase-completion form { min-width:0; }
  h1,.subtitle { overflow-wrap:anywhere; }
  .has-bottom-nav main { padding-bottom:calc(var(--bottom-nav-h) + 34px + env(safe-area-inset-bottom)); }
  body.menu-open { overflow:hidden; }

  .bottom-nav { display:flex;position:fixed;left:0;right:0;bottom:0;z-index:270;background:#fff;border-top:1px solid var(--line);box-shadow:0 -4px 14px rgba(21,59,92,.08);padding:0 env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left); }
  .bottom-nav a,.bottom-nav button { position:relative;flex:1 1 0;min-width:0;min-height:var(--bottom-nav-h);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;padding:6px 2px;border:0;background:transparent;color:#375b71;font:inherit;font-size:11px;font-weight:650;text-decoration:none;cursor:pointer; }
  .bottom-nav a > span:not(.bn-icon):not(.notification-badge),.bottom-nav button > span:not(.bn-icon) { max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap; }
  .bottom-nav [aria-current="page"],.bottom-nav [aria-expanded="true"] { color:var(--navy);box-shadow:inset 0 3px 0 var(--focus); }
  .bottom-nav .bn-icon { font-size:20px;line-height:1; }
  .bottom-nav .notification-badge { position:absolute;top:4px;left:calc(50% + 6px); }
  /* Pri pisani na klavesnici lista zaberala miesto nad klavesnicou. */
  body:has(main :is(input,textarea,select):focus) .bottom-nav { display:none; }

  /* Menu je panel cez celu obrazovku, aby sa dalo otvorit zo spodnej listy aj po odrolovani stranky. */
  .mobile-menu { position:fixed;top:0;left:0;right:0;bottom:0;z-index:260;overflow-y:auto;overscroll-behavior:contain;padding-top:env(safe-area-inset-top);padding-bottom:calc(var(--bottom-nav-h) + env(safe-area-inset-bottom)); }
  .mobile-menu-close { display:flex;align-items:center;justify-content:center;width:100%;min-height:var(--tap);margin:0 0 12px;border:1px solid var(--line);border-radius:8px;background:#fff;color:#214b66;font:inherit;font-weight:700;cursor:pointer; }

  /* .table-stack: riadok tabulky sa zobrazi ako karta; popisky stlpcov berie z data-label (funguje aj bez JS). */
  table.table-stack { display:block;overflow:visible;max-width:100%; }
  .table-stack thead { position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0); }
  .table-stack tbody,.table-stack tr,.table-stack td { display:block; }
  .table-stack tr { margin:0 0 10px;padding:8px 12px;border:1px solid var(--line);border-radius:7px;background:#fff; }
  .table-stack td { padding:5px 0;border:0; }
  .table-stack td[data-label] { display:grid;grid-template-columns:minmax(84px,34%) minmax(0,1fr);gap:8px;align-items:start; }
  .table-stack td[data-label]::before { content:attr(data-label);color:var(--muted);font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.03em; }
  .table-stack td.stack-title { font-size:15px; }
  .table-stack td.stack-select { float:right;padding:0 0 0 12px; }
  .table-stack td.stack-actions form,.table-stack td.stack-actions .button { width:100%; }
  /* Skryty riadok (napr. detail auditu) nesmie po display:block na tr znova vyskocit. */
  .table-stack tr[hidden] { display:none; }
  /* Inline ovladace v karte: na plnu sirku, aby sa dali trafit prstom. */
  .table-stack td .inline-select { width:100%;max-width:none; }
  .table-stack td .chip-multiselect { width:100%; }
  .table-stack td .tag { display:inline-block;margin:2px 4px 2px 0; }
  .table-stack td .icon-actions { gap:8px; }
  .notification-table tr.is-unread { border-left:4px solid #f4b942; }

  /* Detail: hlavne akcie ostanu na viditelnom mieste, ostatne su pod tlacidlom Viac. */
  .actions-row[data-actions-collapsible] .act-primary { order:-1; }
  .actions-row[data-actions-collapsible] .button.actions-more-toggle { display:inline-flex;order:10; }
  .actions-row[data-actions-collapsible]:not(.is-expanded) .act-secondary { display:none; }
  .actions-row[data-actions-collapsible].is-expanded .act-secondary { order:20; }
}

/* Dotykove ovladanie: ciele aspon 44 px a pisma poli 16 px, aby iOS pri fokuse nezoomoval. */
@media (pointer:coarse) {
  .button { display:inline-flex;align-items:center;justify-content:center;min-height:var(--tap);text-align:center; }
  .icon-button { width:var(--tap);height:var(--tap); }
  .icon-action { min-width:var(--tap);min-height:var(--tap); }
  select,.inline-select { min-height:var(--tap); }
  input:not([type=checkbox]):not([type=radio]),select,textarea,.inline-select,.chip-multiselect-input { font-size:16px; }
  input[type=checkbox],input[type=radio] { width:24px;height:24px; }
  label.table-select-all,label.chip-multiselect-option,.column-menu-panel label,.checkbox-list label { min-height:var(--tap); }
  .pagination a,.page-nav a,.mobile-menu-nav a,.mobile-profile-panel a,.desktop-profile-menu a { display:inline-flex;align-items:center;min-height:var(--tap); }
  .mobile-menu-nav a,.mobile-profile-panel a { display:flex; }
  .dictionary-sidebar a,.brand,.brand-version,.phase-blockers summary,.phase-completion > summary { display:inline-flex;align-items:center;min-height:var(--tap); }
  .dictionary-sidebar a { display:flex; }
  .brand-version { min-width:var(--tap);justify-content:center; }
  .pagination a { padding:0 12px; }
  /* Plocha klepnutia sa zvacsi neviditelnym prvkom; vzhlad ostava, susedne chipy sa neprekryvaju vodorovne. */
  a.tag { position:relative; }
  a.tag::after { content:"";position:absolute;left:0;right:0;top:50%;height:var(--tap);transform:translateY(-50%); }
  .chip-multiselect-chip button { position:relative; }
  .chip-multiselect-chip button::after { content:"";position:absolute;left:-18px;right:-18px;top:50%;height:var(--tap);transform:translateY(-50%); }
}

/* Tiche hodiny v nastaveniach notifikacii (W3). */
.quiet-hours { margin-top:22px;padding-top:18px;border-top:1px solid var(--line); }
.quiet-grid { display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 16px;align-items:end;max-width:640px; }
.quiet-grid label { display:block;margin-bottom:4px;color:var(--muted);font-size:12px;font-weight:700;text-transform:uppercase; }
.quiet-grid .quiet-check { display:flex;align-items:center;gap:8px;margin:0;color:var(--ink);font-size:14px;font-weight:600;text-transform:none; }
.quiet-grid .quiet-check input { width:auto;min-width:0;margin:0; }
@media (pointer:coarse) { .quiet-grid .quiet-check { min-height:var(--tap); } }
@media(max-width:760px) { .quiet-grid { grid-template-columns:minmax(0,1fr); } }

/* Obrazovka "Moje" (W5a): karty uloh s rychlymi akciami. */
.my-metrics { grid-template-columns:repeat(auto-fit,minmax(130px,1fr)); }
.my-section { margin-bottom:18px; }
.my-task-list,.my-notif-list { list-style:none;margin:0;padding:0; }
.my-task-card { display:flex;gap:12px;align-items:center;justify-content:space-between;padding:12px 0;border-top:1px solid var(--line); }
.my-task-card:first-child { border-top:0; }
.my-task-main { min-width:0;flex:1 1 auto; }
.my-task-main > a { color:var(--navy);text-decoration:none;overflow-wrap:anywhere; }
.my-task-meta { display:flex;flex-wrap:wrap;gap:6px 10px;align-items:center;margin-top:6px;color:var(--muted);font-size:13px; }
.my-task-actions { display:flex;gap:8px;flex:0 0 auto; }
.my-notif-list li { padding:10px 0;border-top:1px solid var(--line);overflow-wrap:anywhere; }
.my-notif-list li:first-child { border-top:0; }
@media (pointer:coarse) { .my-task-actions .button { min-height:var(--tap); } }
@media(max-width:760px) {
  .my-task-card { flex-direction:column;align-items:stretch; }
  .my-task-actions .button { flex:1 1 0;width:auto;text-align:center; }
}
/* Hlasky editora pod poliom (W5b): priebeh nahravania a chyba bez window.alert. */
.editor-note { margin-top:6px;color:var(--muted);font-size:13px; }
.editor-note:empty { display:none; }
.editor-message { margin-top:8px; }
.editor-image-button { display:none;margin-top:8px; }
@media(max-width:760px) { .editor-image-button { display:inline-block; } }

/* W6: dotykove ciele v kartach a zoznamoch (plocha klepnutia sa zvacsuje, vzhlad ostava). */
@media (pointer:coarse) {
  .table-stack td a:not(.button):not(.tag):not(.icon-action),.heading-help > a { display:inline-flex;align-items:center;min-height:var(--tap); }
  .chip-multiselect-input { min-height:var(--tap); }
  .help-popover { min-width:var(--tap);min-height:var(--tap); }
  .co-assignees { display:inline-flex;align-items:center;justify-content:center;min-width:var(--tap);min-height:var(--tap);padding:0 12px; }
  .preview-button { min-width:var(--tap);min-height:var(--tap); }
  .scenario-sort-button,.sort-level-toggle { display:inline-flex;align-items:center;min-height:var(--tap);padding:0 8px; }
  .pagination a,.pagination .button { min-height:var(--tap);min-width:var(--tap); }
}
@media(max-width:760px) {
  .table-stack td.stack-select input[type=checkbox] { width:28px;height:28px; }
  .table-stack td.stack-select { min-width:var(--tap);min-height:var(--tap);display:flex;align-items:center;justify-content:center;padding:0 0 0 12px;cursor:pointer; }
}

/* Zoradenie audit logu na mobile: hlavicka tabulky je skryta, preto rovnake odkazy stoja nad zoznamom. */
.mobile-sort { display:none; }
@media(max-width:760px) {
  .mobile-sort { display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;margin:0 0 12px;font-size:13px; }
  .mobile-sort > span { color:var(--muted);font-weight:700;text-transform:uppercase;font-size:12px; }
  .mobile-sort a { display:inline-flex;align-items:center;min-height:var(--tap);padding:0 10px;border:1px solid var(--line);border-radius:7px;background:#fff;text-decoration:none; }
}

/* W6b: zoznamy ako karty (prepinac Karty/Tabulka, zoradenie nad kartami, spodna lista vyberu). */
.list-view-toggle,.list-sort,.selection-bar { display:none; }
@media(max-width:760px) {
  .list-view-toggle { display:flex;flex-wrap:wrap;gap:8px;margin:0 0 12px; }
  .list-view-toggle .button { flex:1 1 auto;width:auto; }
  .list-view-toggle .button[aria-pressed="true"] { background:var(--navy);color:#fff; }
  .list-view-toggle .button[hidden] { display:none; }
  body.list-cards .list-sort { display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px;margin:0 0 12px;font-size:13px; }
  .list-sort > span { color:var(--muted);font-weight:700;text-transform:uppercase;font-size:12px; }
  .list-sort a { display:inline-flex;align-items:center;min-height:var(--tap);padding:0 10px;border:1px solid var(--line);border-radius:7px;background:#fff;text-decoration:none; }
  /* V kartach nie su hlavicky ani stlpce Tabulatora, takze ich ovladanie a navod davaju zmysel iba v tabulke. */
  body.list-cards .table-toolbar,body.list-cards .scenario-table-toolbar { display:none; }
  /* Menej dolezite polia sa zobrazia az na pokyn "Vsetky polia". */
  body.list-cards:not(.list-cards-all) .table-stack td.card-extra { display:none; }
  /* Farba fazy patri karte, nie jednotlivym bunkam. */
  .table-stack tr.phase-past { background:#fff1f1; }
  .table-stack tr.phase-current { background:#eef9f1; }
  .table-stack tr.phase-next { background:#eef6ff; }
  .table-stack tr.phase-future { background:#f3efff; }
  .table-stack tr.phase-unknown { background:#f7f9fb; }
  .table-stack tr.phase-row td { background:transparent; }
  .selection-bar { display:flex;position:fixed;left:0;right:0;bottom:calc(var(--bottom-nav-h) + env(safe-area-inset-bottom));z-index:268;align-items:center;gap:8px;padding:8px 12px;background:#153b5c;color:#fff;box-shadow:0 -4px 14px rgba(21,59,92,.2); }
  .selection-bar[hidden] { display:none; }
  .selection-bar .sb-count { flex:1 1 auto;font-weight:700;font-size:14px; }
  .selection-bar .button { flex:0 0 auto;width:auto;padding:0 12px; }
  .has-bottom-nav.has-selection-bar main { padding-bottom:calc(var(--bottom-nav-h) + 96px + env(safe-area-inset-bottom)); }
}

/* W6b: posledne drobnosti dotykovych cielov na zoznamoch. */
@media (pointer:coarse) {
  input:not([type=checkbox]):not([type=radio]):not([type=hidden]),select { min-height:var(--tap); }
  .list-sort a { min-width:var(--tap);justify-content:center; }
  .bulk-panel > label:first-child,.bulk-decision > label { min-height:var(--tap);align-items:center; }
}

/* W6c: viacvyber ako spodny panel na dotyku (7.7), desktop ostava dropdown. */
.chip-sheet-bar { display:none; }
@media (pointer:coarse) and (max-width:760px) {
  .chip-multiselect.is-open .chip-multiselect-menu { position:fixed;left:0;right:0;bottom:0;top:auto;z-index:290;height:46vh;padding:6px 10px calc(10px + env(safe-area-inset-bottom));border:0;border-radius:14px 14px 0 0;box-shadow:0 -10px 30px rgba(21,59,92,.28); }
  .chip-multiselect.is-open .chip-sheet-bar { display:flex;position:fixed;left:0;right:0;bottom:46vh;z-index:291;justify-content:space-between;gap:8px;padding:8px 10px;background:#f5f8fa;border-top:1px solid var(--line);border-radius:14px 14px 0 0; }
  .chip-multiselect.is-open .chip-multiselect-control { position:relative;z-index:292; }
  body.chip-sheet-open::after { content:"";position:fixed;inset:0;z-index:280;background:rgba(15,39,58,.4); }
  body.chip-sheet-open .bottom-nav { z-index:270; }
  /* Miesto pod stranou, aby sa pole dalo odrolovat nad panel. */
  body.chip-sheet-open main { padding-bottom:52vh; }
  .chip-multiselect-control { scroll-margin-top:76px; }
  label.chip-multiselect-option { min-height:var(--tap);padding:10px 8px;font-size:15px; }
}

/* W6c: ukazky (stream/capability/mention tooltip) sa na dotyku otvaraju ťuknutim, nie hoverom. */
@media (pointer:coarse) {
  /* Na dotyku zostava po tuknuti :focus/:hover, preto by nezavrel Escape ani tuknutie inam; riadi sa iba triedou is-open. */
  .help-popover:hover .help-text,.help-popover:focus .help-text,.help-popover:focus-within .help-text,
  .co-assignees:hover .co-assignees-tooltip,.co-assignees:focus .co-assignees-tooltip,.co-assignees:focus-within .co-assignees-tooltip { display:none; }
  .co-assignees.is-open .co-assignees-tooltip,.help-popover.is-open .help-text { display:block; }
  .co-assignees-tooltip { white-space:normal; }
  .help-popover.is-open .help-mark { background:#dcecf4;color:#153b5c;border-color:#9fc0d3; }
}

/* W6d: ciselniky - bocny panel sekcii sa na mobile zmeni na vodorovne segmentove menu, ikonove akcie maju text. */
@media(max-width:760px) {
  .dictionary-layout { grid-template-columns:minmax(0,1fr) !important; }
  .dictionary-sidebar { position:static !important;flex-direction:row !important;flex-wrap:nowrap;overflow-x:auto;gap:6px !important;padding:8px !important;-webkit-overflow-scrolling:touch;scroll-snap-type:x proximity; }
  .dictionary-sidebar a { flex:0 0 auto;white-space:nowrap;scroll-snap-align:start;border:1px solid var(--line); }
  .dictionary-sidebar a.active { border-color:#174ea6; }
  .dictionary-section-head { flex-wrap:wrap; }
  .icon-actions { gap:8px; }
  .icon-action { width:auto !important;min-width:var(--tap);padding:0 12px;gap:6px;font-size:14px !important; }
  .icon-action[title]::after { content:attr(title);font:600 13px/1 system-ui,-apple-system,"Segoe UI",sans-serif; }
  .dictionary-tag { padding:4px 0; }
}

/* W6d: siroke diagramy a tabulky v dokumente sa posuvaju vo vlastnom kontajneri, nie celou strankou. */
.markdown-body .mermaid-diagram,.markdown-body .table-scroll { max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch; }
.mermaid-fullscreen-open { display:none; }
@media(max-width:760px) { .mermaid-fullscreen-open { display:inline-flex;margin:6px 0 14px; } }
.mermaid-fullscreen { position:fixed;inset:0;z-index:310;display:flex;flex-direction:column;background:#fff; }
.mermaid-fullscreen[hidden] { display:none; }
.mermaid-fullscreen-bar { display:flex;justify-content:flex-end;padding:10px 12px;border-bottom:1px solid var(--line); }
.mermaid-fullscreen-body { flex:1;overflow:auto;padding:12px;-webkit-overflow-scrolling:touch; }
.mermaid-fullscreen-body svg { max-width:none !important;width:auto;height:auto; }
.markdown-body svg { max-width:100%;height:auto; }

/* W6d: Toast UI na mobile - nizsi editor namiesto pevnych 360 az 640 px, lista nastrojov sa zalamuje do dvoch riadkov. */
@media(max-width:760px) {
  [data-toastui-markdown-editor] { height:auto !important;min-height:280px; }
  .toastui-editor-defaultUI { height:auto !important;min-height:280px; }
  .toastui-editor-main { min-height:220px; }
  .toastui-editor-defaultUI .toastui-editor-md-container,.toastui-editor-defaultUI .toastui-editor-ww-container { min-height:220px; }
  .toastui-editor-defaultUI-toolbar { flex-wrap:wrap;height:auto;padding:4px 6px; }
}
@media (pointer:coarse) {
  .toastui-editor-defaultUI-toolbar button { width:40px;height:40px; }
  .toastui-editor-defaultUI-toolbar .toastui-editor-toolbar-icons { margin:2px; }
}

/* W7: potvrdzovaci dialog namiesto window.confirm. */
.ph-dialog { width:min(420px,calc(100vw - 32px));padding:20px;border:1px solid var(--line);border-radius:12px;box-shadow:0 24px 70px rgba(15,39,58,.35);color:var(--ink); }
.ph-dialog::backdrop { background:rgba(15,39,58,.5); }
.ph-dialog h2 { margin:0 0 10px;font-size:18px; }
.ph-dialog p { margin:0 0 18px;line-height:1.5; }
.ph-dialog form { margin:0; }
.ph-dialog-actions { display:flex;gap:10px;justify-content:flex-end;flex-wrap:wrap; }
.ph-status-dialog { width:min(480px,calc(100vw - 32px)); }
.ph-status-dialog .ph-field { margin:0 0 14px;display:grid;gap:5px; }
.ph-status-dialog .ph-field label { font-weight:700;font-size:13px; }
.ph-status-dialog textarea,.ph-status-dialog select,.ph-status-dialog input[type=date] { width:100%;font:inherit;padding:8px 10px;border:1px solid var(--line);border-radius:8px;box-sizing:border-box; }
.status-note { margin:10px 0;padding:10px 12px;border-left:4px solid var(--line);border-radius:6px;background:#f4f7fa;font-size:13px;line-height:1.5; }
.status-note.is-waiting { border-left-color:#1d5a8c;background:#eaf3fb; }
.status-note.is-blocked { border-left-color:#8c3a0a;background:#fdeee3; }
.status-note.is-review { border-left-color:#5b2d86;background:#f3ecfa; }
.status-note.is-cancelled { border-left-color:#5d6b75;background:#eef0f2; }
.status-note.is-paused-children { border-left-color:#8c3a0a;background:#fdeee3; }
.cancelled-children { margin:10px 0; }
.status-note-inline { color:#8c3a0a;font-weight:700; }
.cancelled-children summary { cursor:pointer;font-weight:700;color:#5d6b75; }
.ph-dialog-error { margin:0 0 12px;color:#a32b2b;font-weight:700; }
@media(max-width:760px) {
  .ph-dialog { margin:auto auto calc(16px + env(safe-area-inset-bottom));width:calc(100vw - 24px); }
  .ph-dialog-actions .button { flex:1 1 0;width:auto; }
}
