/* ====== Romex PM — prototyp ====== */
:root{
  --bg:#f1f5f9; --surface:#ffffff; --ink:#0f172a; --muted:#64748b;
  --line:#e2e8f0; --line2:#cbd5e1; --brand:#1b2a55; --accent:#c1123f; --accent2:#e11d48;
  --ok:#16a34a; --warn:#dc2626; --info:#2563eb;
  --radius:12px; --shadow:0 1px 3px rgba(15,23,42,.08),0 1px 2px rgba(15,23,42,.04);
  /* Boční odsazení obsahu. Lišta stránky se o něj musí zápornými okraji
     roztáhnout na celou šířku – když se ta dvě čísla rozejdou, přečnívá
     a stránka se na telefonu kýve do boku. Proto jedna proměnná. */
  --pad-x:1.5rem;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{font-family:system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;
  background:var(--bg);color:var(--ink);font-size:15px;line-height:1.45}
a{color:inherit;text-decoration:none}
h1{font-size:1.5rem;margin:.2rem 0}
h2{font-size:1rem;margin:0 0 .6rem;letter-spacing:.01em}
.muted{color:var(--muted)} .sm{font-size:.82rem} .mono{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.85rem}
.r{text-align:right} .warn{color:var(--warn)} .pre{white-space:pre-wrap}

/* ---- topbar ---- */
.topbar{position:sticky;top:0;z-index:30;display:flex;align-items:center;gap:1rem;
  background:#fff;color:var(--ink);padding:.4rem 1.2rem;height:60px;border-bottom:1px solid var(--line)}
.brand{flex:none;display:flex;align-items:center;font-weight:800;letter-spacing:.01em;
  font-size:1.25rem;text-transform:lowercase;color:var(--brand)}
.brand-img{height:38px;display:block}
.brand-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--accent);
  margin-left:3px;vertical-align:.05em}
.brand.big{font-size:2.4rem}
.brand.big .brand-img{height:64px}
.search{flex:1;display:flex;justify-content:center;min-width:0}
.search input{width:100%;max-width:520px;border:0;border-radius:20px;padding:.5rem 1rem;
  background:#f1f5f9;color:var(--ink);font:inherit}
.search input::placeholder{color:#94a3b8}
.search input:focus{outline:2px solid var(--accent);background:#fff}
.topbar-right{display:flex;align-items:center;gap:.3rem;flex:none;margin-left:auto}

.bell{position:relative;display:inline-grid;place-items:center;width:40px;height:40px;
  border-radius:50%;font-size:1.15rem;color:var(--ink)}
.bell:hover{background:#f1f5f9}
.bell .bell-ic{display:inline-block;transform-origin:50% 0}
.bell.ring .bell-ic{animation:bell-shake 2.6s ease-in-out infinite}
.dot{position:absolute;top:3px;right:2px;background:var(--accent);color:#fff;font-size:.62rem;
  min-width:17px;height:17px;border-radius:9px;display:grid;place-items:center;padding:0 3px;
  font-weight:700;box-shadow:0 0 0 2px #fff}
.bell.ring .dot{animation:dot-pulse 2.6s ease-in-out infinite}
@keyframes bell-shake{
  0%,82%,100%{transform:rotate(0)}
  84%{transform:rotate(15deg)} 86%{transform:rotate(-13deg)}
  88%{transform:rotate(10deg)} 90%{transform:rotate(-8deg)}
  92%{transform:rotate(6deg)} 94%{transform:rotate(-4deg)} 96%{transform:rotate(2deg)}
}
@keyframes dot-pulse{0%,82%,100%{transform:scale(1)}86%{transform:scale(1.25)}92%{transform:scale(1.1)}}

.avatar{display:inline-grid;place-items:center;width:32px;height:32px;border-radius:50%;
  background:var(--accent);color:#fff;font-size:.74rem;font-weight:700;flex:none;overflow:hidden}
img.avatar{object-fit:cover}
.avatar.sm{width:24px;height:24px;font-size:.62rem}
.avatar.lg{width:50px;height:50px;font-size:1.05rem}
.avatar.xl{width:108px;height:108px;font-size:2.1rem}

/* user dropdown */
.user-menu{position:relative}
.user-btn{display:flex;align-items:center;gap:.45rem;background:transparent;border:0;color:var(--ink);
  cursor:pointer;padding:.2rem .5rem .2rem .3rem;border-radius:22px;font:inherit}
.user-btn:hover{background:#f1f5f9}
.user-name{font-weight:600;font-size:.9rem}
.chev{font-size:.7rem;opacity:.85}
.user-dd{position:absolute;right:0;top:calc(100% + 8px);background:#fff;color:var(--ink);
  border:1px solid var(--line);border-radius:12px;box-shadow:0 12px 30px rgba(15,23,42,.18);
  min-width:235px;padding:.4rem;opacity:0;visibility:hidden;transform:translateY(-6px);
  transition:.15s;z-index:50}
.user-menu.open .user-dd{opacity:1;visibility:visible;transform:translateY(0)}
.user-dd a{display:block;padding:.55rem .7rem;border-radius:8px;font-weight:600;color:#334155}
.user-dd a:hover{background:#f1f5f9}
.user-dd hr{border:0;border-top:1px solid var(--line);margin:.3rem 0}
.user-dd-head{display:flex;align-items:center;gap:.6rem;padding:.5rem .6rem .7rem;border-bottom:1px solid var(--line);margin-bottom:.3rem}
.udd-id{display:flex;flex-direction:column;min-width:0}
.udd-id strong{font-size:.9rem}
.udd-id small{color:var(--muted);font-size:.76rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:150px}
@media(max-width:820px){.user-name{display:none}.topbar{padding:.5rem .8rem;gap:.5rem}}

/* ---- profil ---- */
.profile-badges{display:flex;align-items:center;gap:.4rem;flex-wrap:wrap;margin:.25rem 0}
.profile-badges .role{margin-left:0}      /* role nesmí odlétat doprava */
.profile-stats{display:flex;gap:.6rem;margin:.55rem 0 .2rem;flex-wrap:wrap}
.profile-stats .st{background:#f8fafc;border:1px solid var(--line);border-radius:10px;padding:.45rem .9rem;
  text-align:center;color:inherit;min-width:96px;transition:border-color .12s,box-shadow .12s}
.profile-stats .st:hover{border-color:var(--accent);box-shadow:var(--shadow)}
.profile-stats .st b{display:block;font-size:1.3rem;color:var(--accent)}
.file-input{font:inherit}

/* profil – jedna sekce */
.profile{margin-left:auto;margin-right:auto}
.profile-top{display:flex;gap:1.6rem;align-items:center;flex-wrap:wrap}
.profile-photo-col{flex:none;display:flex;flex-direction:column;align-items:center;gap:.35rem;
  text-align:center;width:140px}
.profile-photo{cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:.4rem}
.profile-photo .file-input{display:none}        /* skryté, klik na label otevře výběr */
.profile-photo .avatar{transition:filter .12s}
.profile-photo:hover .avatar{filter:brightness(.92)}
.profile-photo-edit{font-size:.74rem;font-weight:700;color:var(--accent);max-width:130px;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.profile-photo-hint{font-size:.7rem;color:var(--muted);line-height:1.3}
.link-rm{font-size:.74rem;font-weight:600;color:var(--accent)}
.link-rm:hover{text-decoration:underline}
.profile-id{flex:1;min-width:240px}
.profile-id h2{margin:.1rem 0 0}
.profile .sep{border:0;border-top:1px solid var(--line);margin:1.2rem 0}
.profile-h{margin:1.3rem 0 .5rem;font-size:1.05rem}
.profile-h:first-of-type{margin-top:0}

/* ---- layout ---- */
.navtoggle{background:transparent;border:0;color:var(--ink);font-size:1.25rem;cursor:pointer;
  padding:.2rem .55rem;border-radius:7px;flex:none;line-height:1}
.navtoggle:hover{background:#f1f5f9}
.layout{display:flex;align-items:flex-start}                 /* na celou šířku */
.side{position:sticky;top:60px;width:194px;flex:none;padding:.5rem .45rem;
  height:calc(100vh - 60px);display:flex;flex-direction:column;gap:1px;
  background:#f8fafc;border-right:1px solid var(--line);transition:width .15s}
.side a{display:flex;align-items:center;gap:.55rem;padding:.34rem .55rem;border-radius:7px;
  color:#334155;font-weight:600;font-size:.85rem;white-space:nowrap;overflow:hidden;position:relative}
.side a:hover{background:#e2e8f0}
.side a.on{background:#fff;box-shadow:var(--shadow);color:var(--ink)}
.side .ic{font-size:.95rem;width:19px;text-align:center;flex:none}
.side .lbl{flex:1}
.navdot{background:var(--accent);color:#fff;border-radius:9px;font-size:.7rem;padding:0 6px}
.btn-new{margin-top:.6rem;background:var(--accent)!important;color:#fff!important}
.btn-new:hover{background:#9f0e33!important}
.side-foot{margin-top:auto;font-size:.78rem;color:var(--muted);padding:.6rem .7rem;border-top:1px solid var(--line)}
.content{flex:1;min-width:0;padding:1.1rem var(--pad-x) 5rem}
/* sbalený rail: jen ikony */
html.nav-collapsed .side{width:52px;padding:.5rem .3rem}
.nav-collapsed .side .lbl{display:none}
.nav-collapsed .side a{justify-content:center;padding:.42rem 0}
.nav-collapsed .side .ic{font-size:1.1rem;width:auto}
.nav-collapsed .side .navdot{position:absolute;top:5px;right:9px}
.nav-collapsed .side-foot{display:none}
.nav-collapsed .side .btn-new .ic{font-size:1.35rem}
/* oddělovač sekcí místo popisku */
.nav-collapsed .side .nav-sec{font-size:0;padding:0;margin:.4rem .35rem;height:0;
  border-top:1px solid var(--line2)}
/* bublina s názvem při najetí (sbalené menu) */
.nav-collapsed .side a{position:relative}
.nav-collapsed .side a::after{content:attr(title);position:absolute;left:calc(100% + 8px);top:50%;
  transform:translateY(-50%);background:#1e293b;color:#fff;font-size:.75rem;font-weight:600;
  padding:.25rem .5rem;border-radius:7px;white-space:nowrap;opacity:0;pointer-events:none;
  transition:opacity .12s;z-index:60}
.nav-collapsed .side a:hover::after{opacity:1}

/* ---- bottom nav (mobil) ---- */
.bottomnav{display:none}
@media(max-width:820px){
  .side{display:none}
  .search{display:none}
  .navtoggle{display:none}
  /* Užší okraje na telefonu. Mění se proměnná, takže se s obsahem posune
     i lišta stránky a nic nepřečnívá. */
  /* --bottomnav-h je výška spodní navigace i s bezpečnou zónou iPhonu.
     Odečítá si ji kanban, aby sloupce sahaly přesně nad ni. Když se změní
     vzhled navigace, mění se to na jednom místě. */
  :root{--pad-x:.8rem;
    --bottomnav-h:calc(3.3rem + env(safe-area-inset-bottom, 12px))}
  .content{padding:1rem var(--pad-x) 5.5rem}
  .layout{display:block}
  .bottomnav{display:flex;position:fixed;bottom:0;left:0;right:0;z-index:40;background:#fff;
    border-top:1px solid var(--line);justify-content:space-around;
    /* odsazení od spodní hrany kvůli gesture baru na iPhonu */
    padding:.4rem 0 calc(.45rem + env(safe-area-inset-bottom, 12px))}
  .bottomnav a,.bottomnav .bn-more{flex:1;text-align:center;font-size:1.2rem;color:var(--muted);
    position:relative;border:0;background:transparent;font-family:inherit;cursor:pointer;padding:0}
  .bottomnav a span,.bottomnav .bn-more span{display:block;font-size:.63rem;margin-top:.1rem}
  .bottomnav a.on{color:var(--accent)}
  .bottomnav .bdot{position:absolute;top:-2px;right:24%;width:8px;height:8px;border-radius:50%;background:var(--accent)}
  .content{padding-bottom:calc(6rem + env(safe-area-inset-bottom, 0px))}
}
/* plovoucí výzva k povolení notifikací – mimo tok stránky, nerozhazuje layout */
.pushbar{position:fixed;right:1rem;bottom:1rem;z-index:75;width:min(420px,calc(100vw - 2rem));
  display:flex;align-items:center;justify-content:space-between;gap:.7rem;flex-wrap:wrap;
  background:#eff6ff;border:1px solid #bfdbfe;color:#1e40af;border-radius:12px;
  padding:.7rem .9rem;font-size:.85rem;box-shadow:0 12px 30px rgba(15,23,42,.22)}
@media(max-width:820px){
  .pushbar{left:.7rem;right:.7rem;width:auto;
    bottom:calc(4.6rem + env(safe-area-inset-bottom, 0px))}   /* nad spodním menu */
}
.pushbar-act{display:flex;align-items:center;gap:.4rem;flex:none}
.pushbar-x{border:0;background:transparent;color:#1e40af;cursor:pointer;font-size:.95rem;
  width:28px;height:28px;border-radius:7px}
.pushbar-x:hover{background:#dbeafe}
/* rozbalovací návod podle zařízení */
.pushbar-help{width:100%;border-top:1px solid #bfdbfe;padding-top:.45rem;margin-top:.1rem}
.pushbar-help>summary{cursor:pointer;font-size:.8rem;font-weight:700;list-style:none}
.pushbar-help>summary::-webkit-details-marker{display:none}
.pushbar-help>summary::before{content:'▸ ';font-size:.7rem}
.pushbar-help[open]>summary::before{content:'▾ '}
.pushbar-help ol{margin:.5rem 0 .2rem;padding-left:1.1rem;font-size:.82rem;line-height:1.55}
.pushbar-help li{margin-bottom:.15rem}
.pushbar-help p{margin:.4rem 0;font-size:.82rem}
.pushbar-help--profil{border:1px solid var(--line);border-radius:10px;padding:.5rem .7rem;
  margin-top:.5rem;max-width:520px;background:#f8fafc;color:var(--ink)}

/* mobilní nabídka „Více" (bottom sheet) */
.msheet{position:fixed;inset:0;z-index:70}
.msheet[hidden]{display:none}
.msheet-back{position:absolute;inset:0;background:rgba(15,23,42,.5)}
.msheet-panel{position:absolute;left:0;right:0;bottom:0;background:#fff;border-radius:16px 16px 0 0;
  padding:.5rem .8rem calc(1rem + env(safe-area-inset-bottom, 12px));max-height:80vh;overflow:auto;
  box-shadow:0 -8px 30px rgba(15,23,42,.25)}
.msheet-grip{width:38px;height:4px;border-radius:3px;background:var(--line2);margin:.15rem auto .5rem}
.msheet-sec{font-size:.62rem;font-weight:800;letter-spacing:.09em;text-transform:uppercase;
  color:var(--muted);padding:.6rem .4rem .2rem;border-top:1px solid var(--line);margin-top:.2rem}
.msheet-sec:first-of-type{border-top:0;margin-top:0}
.msheet-panel a{display:block;padding:.6rem .5rem;border-radius:9px;color:inherit;font-weight:600;font-size:.95rem}
.msheet-panel a:active{background:#f1f5f9}

/* ---- cards / generic ---- */
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);
  padding:1rem;box-shadow:var(--shadow);margin-bottom:1rem}
/* kontextová lišta stránky: název + meta inline vlevo, akce vpravo, drží se při scrollu */
.page-head{position:sticky;top:60px;z-index:25;background:var(--bg);
  display:flex;align-items:center;justify-content:flex-start;gap:.6rem 1rem;flex-wrap:wrap;
  margin:-1.1rem calc(-1 * var(--pad-x)) .9rem;padding:.4rem var(--pad-x);
  border-bottom:1px solid var(--line);
  min-height:54px}   /* jednotná výška na všech stránkách – ať to při přepínání neposkakuje */
.page-head.row{justify-content:space-between}
.page-head>div:first-child{display:flex;align-items:baseline;gap:.6rem;flex-wrap:wrap;min-width:0}
.page-head h1{font-size:1.15rem;margin:0;line-height:1.25}
.page-head h2{font-size:1.05rem;margin:0}
.page-head p{margin:0;font-size:.8rem;color:var(--muted)}
.page-head .row.gap,.page-head .toolbar{margin:0}
@media(max-width:700px){
  /* Bokem se nehýbe – to řídí --pad-x. Tady jen užší mezery a schovaný popisek. */
  .page-head{margin-bottom:.7rem;padding-top:.5rem;padding-bottom:.5rem;gap:.5rem}
  .page-head p{display:none}
}
@media(max-width:820px){
  /* Filtry a přepínače v hlavičce se na telefonu nelámou do tří řádků, ale
     posouvají do boku. U servisu jich je osm a hlavička kvůli nim narostla
     na 141 px – to je šestina displeje, než člověk uvidí první kartu. */
  /* .page-head.row, ne jen .page-head: obecné .row{flex-wrap:wrap} je
     v souboru níž a při stejné specificitě by vyhrálo. */
  .page-head,.page-head.row{flex-wrap:nowrap}
  .page-head>.row.gap,.page-head>.toolbar{
    flex-wrap:nowrap;overflow-x:auto;min-width:0;scrollbar-width:none}
  .page-head>.row.gap::-webkit-scrollbar,
  .page-head>.toolbar::-webkit-scrollbar{display:none}
  .page-head>.row.gap>*,.page-head>.toolbar>*{flex:none}
}
/* Atribut hidden musí vždycky vyhrát. Komponenty si nastavují display:flex/grid,
   což beze !important přebije [hidden] z prohlížeče – element pak zůstane vidět
   a JS `el.hidden = true` nemá žádný efekt. */
[hidden]{display:none!important}

.row{display:flex;justify-content:space-between;align-items:flex-end;gap:1rem;flex-wrap:wrap}
/* Odkaz zpět se lepí pod horní lištu, hned nad nadpis stránky (ten je sticky taky).
   Dřív se při odscrollování zasunul pod lištu a chvíli z něj koukal rozříznutý
   proužek – a na dlouhé stránce jako kalkulace se pak nebylo jak vrátit zpět. */
.back{position:sticky;top:60px;z-index:26;display:block;
  color:var(--muted);margin:-1.1rem -1.5rem 0;padding:.3rem 1.5rem .15rem;
  font-weight:600;font-size:.78rem;line-height:1.5;background:var(--bg);
  height:26px;box-sizing:border-box;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}   /* dlouhý název se nezalomí */
.back:hover{color:var(--accent)}
/* nadpis se posune pod něj, ale jen tam, kde odkaz zpět opravdu je.
   Odkaz má pevných 26 px a nadpis ho o 1 px podjede (odkaz je ve vyšší
   vrstvě) — výška z písma vycházela na zlomky pixelu a podle zoomu mezi
   nimi při skrolu prosvítala tenká mezera. */
.back ~ .page-head{top:85px;margin-top:0}
@media(max-width:760px){
  .back{margin:-1.1rem -1rem 0;padding:.3rem 1rem .15rem}
  .back ~ .page-head{margin-top:0}
}
/* v modalu a v tisku nemá co dělat */
.dmodal .back,.doklad .back{position:static;background:none;margin:0}
@media print{.back{display:none!important}}
.flash{padding:.6rem .9rem;border-radius:9px;margin-bottom:.8rem;font-size:.9rem}
.flash--ok{background:#dcfce7;color:#166534}
.flash--error{background:#fee2e2;color:#991b1b}
.flash--message{background:#dbeafe;color:#1e40af}
.flash--warn{background:#fef3c7;color:#92400e}
.flash--info{background:#dbeafe;color:#1e40af}
.empty{text-align:center;color:var(--muted);padding:2rem}

/* ---- buttons ---- */
.btn{display:inline-block;border:1px solid var(--line2);background:#fff;border-radius:9px;
  padding:.45rem .8rem;font-weight:600;cursor:pointer;font-size:.88rem}
.btn:hover{background:#f8fafc}
.btn--primary{background:var(--accent);border-color:var(--accent);color:#fff}
.btn--primary:hover{background:#9f0e33}
.toolbar{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap}
.toggle{display:inline-flex;border:1px solid var(--line2);border-radius:9px;overflow:hidden}
.toggle a{padding:.4rem .8rem;font-weight:600;font-size:.85rem}
.toggle a.on{background:var(--brand);color:#fff}

/* ---- badges / tags ---- */
.badge{display:inline-block;padding:.12rem .5rem;border-radius:20px;font-size:.72rem;font-weight:700;
  background:#e2e8f0;color:#334155;white-space:nowrap}
.badge--poptavka,.badge--nabidka{background:#e0e7ff;color:#3730a3}
.badge--zasmluvneno{background:#cffafe;color:#155e75}
.badge--priprava{background:#fef3c7;color:#92400e}
.badge--pripraveno-k-montazi{background:#fae8ff;color:#86198f}
.badge--v-realizaci{background:#dbeafe;color:#1d4ed8}
.badge--predani-nedodelky{background:#ffedd5;color:#9a3412}
.badge--fakturace-zadrzne{background:#dcfce7;color:#166534}
.badge--archiv{background:#e2e8f0;color:#475569}
.badge--todo{background:#e2e8f0;color:#475569}
.badge--probiha{background:#dbeafe;color:#1d4ed8}
.badge--kontrola{background:#fef3c7;color:#92400e}
.badge--hotovo{background:#dcfce7;color:#166534}
.badge--blokovano{background:#fee2e2;color:#991b1b}
.badge--nezahajeno{background:#f1f5f9;color:#64748b}
.badge--neresi-se{background:#f1f5f9;color:#94a3b8}
.badge--vystavena{background:#dbeafe;color:#1d4ed8}
.badge--po-splatnosti{background:#fee2e2;color:#991b1b}
.badge--uhrazena{background:#dcfce7;color:#166534}
.tag{display:inline-block;padding:.1rem .45rem;border-radius:6px;font-size:.7rem;font-weight:700}
.tag--priprava{background:#fef3c7;color:#92400e}
.tag--nakup{background:#e0e7ff;color:#3730a3}
.tag--montaz{background:#dbeafe;color:#1d4ed8}
.tag--fakturace{background:#dcfce7;color:#166534}
.tag--servis{background:#fae8ff;color:#86198f}
.tag--ostatni{background:#e2e8f0;color:#475569}
.prio{font-size:.7rem;font-weight:700;padding:.1rem .4rem;border-radius:6px}
.prio--vysoka{background:#ffedd5;color:#9a3412}
.prio--urgentni{background:#fee2e2;color:#991b1b}
.termin{font-size:.78rem;color:var(--muted);white-space:nowrap}
.termin.over{color:var(--warn);font-weight:700}
.termin.dnes{color:var(--accent);font-weight:700}
.chip{font-size:.75rem;background:#f1f5f9;border:1px solid var(--line);border-radius:20px;padding:.1rem .55rem;color:#475569}

/* ---- task line ---- */
.taskline{display:flex;align-items:center;gap:.6rem;padding:.5rem .3rem;border-bottom:1px solid var(--line)}
.taskline:last-child{border-bottom:0}
.t-name{font-weight:600;flex:1;min-width:120px}
.t-name:hover{color:var(--accent)}
.t-meta{display:flex;align-items:center;gap:.4rem;flex-wrap:wrap}
.t-proj{font-size:.76rem;color:var(--info);background:#eff6ff;padding:.05rem .4rem;border-radius:5px}
@media(max-width:820px){.t-meta{width:100%;order:3}.taskline{flex-wrap:wrap}}

/* ---- progress ---- */
.progress{background:#e2e8f0;border-radius:10px;height:7px;overflow:hidden;margin:.3rem 0}
.progress .bar{height:100%;background:var(--accent2);border-radius:10px}

/* ---- agenda ---- */
.agenda-grid{display:grid;grid-template-columns:1fr 340px;gap:1rem;align-items:start}
@media(max-width:980px){.agenda-grid{grid-template-columns:1fr}}
.sect h2{display:flex;align-items:center;gap:.5rem}
.count{background:#e2e8f0;border-radius:20px;font-size:.7rem;padding:0 .5rem;color:#475569;font-weight:700}
.sect--po{border-left:4px solid var(--warn)}
.sect--dnes{border-left:4px solid var(--accent)}
.mil-row{display:block;padding:.5rem .2rem;border-bottom:1px solid var(--line)}
.mil-row:last-child{border-bottom:0}
.mil-name{font-weight:600;display:block}
.mil-sub{font-size:.78rem;color:var(--muted)}
.mil-meta{display:flex;gap:.4rem;align-items:center;margin-top:.2rem;flex-wrap:wrap}
.notif-row{display:flex;flex-direction:column;padding:.5rem .2rem;border-bottom:1px solid var(--line)}
.notif-row:last-child{border-bottom:0}
.notif-row.unread{background:#fff7ed;border-radius:7px}
.notif-typ{font-size:.68rem;text-transform:uppercase;letter-spacing:.04em;color:var(--accent);font-weight:700}
.notif-text{font-size:.86rem}
.notif-row.big{flex-direction:row;align-items:center;gap:.8rem}
.notif-row.big .notif-text{flex:1}
.more{display:inline-block;margin-top:.5rem;color:var(--info);font-weight:600;font-size:.85rem}

/* ---- table ---- */
.tablewrap{overflow-x:auto;padding:0}
/* Posuvná tabulka uvnitř karty, která má vlastní odsazení a další obsah –
   tam .tablewrap použít nejde, protože nuluje padding celé karty. */
.tblscroll{overflow-x:auto;max-width:100%}
.table{width:100%;border-collapse:collapse;font-size:.88rem}
.table th{ text-align:left;padding:.6rem .7rem;border-bottom:2px solid var(--line);color:var(--muted);font-size:.76rem;text-transform:uppercase;letter-spacing:.03em}
.table td{padding:.55rem .7rem;border-bottom:1px solid var(--line)}
.table tbody tr:hover{background:#f8fafc;cursor:pointer}

/* ---- kanban ---- */
/* stránka s kanbanem: obsah je sloupec přes celou výšku okna, kanban zabere zbytek –
   funguje bez ohledu na to, co je nad ním (lišta stránky, pruh Můj plán…) */
.content:has(.kb-board){
  display:flex;flex-direction:column;height:calc(100dvh - 60px);
  padding-bottom:.5rem;overflow:hidden}
/* v kanbanu se stránka neroluje → lišta nemusí být sticky (ve flexu by se překrývala) */
.content:has(.kb-board)>.page-head,
.content:has(.kb-board)>.plan-bar{position:static;flex:none}
.content:has(.kb-board)>.kb-board,
.content:has(.kb-board) .zak-desktop{min-height:0}
.zak-desktop:has(.kb-board){display:flex;flex-direction:column;flex:1;min-height:0}
/* kanban vyplní zbytek výšky obsahu (uklizeno omylem při sjednocení tříd) */
.kb-board{flex:1;min-height:0;height:auto}
@media(max-width:820px){.kb-board{height:auto;max-height:none}}
@media(max-width:820px){
  /* Kanban drží celou výšku displeje i na telefonu. Sloupec sahá od lišty
     stránky až nad spodní navigaci, karty se rolují uvnitř něj a pustit
     kartu jde kamkoli po celé té výšce – ne jen do horní části.
     Odečítá se horní lišta (60 px) a spodní navigace i s bezpečnou zónou
     iPhonu, jinak by poslední karty zůstaly schované pod navigací. */
  .content:has(.kb-board){
    height:calc(100dvh - 60px - var(--bottomnav-h));
    padding-bottom:0}
  .kb-tecky{flex:none}

  /* Na telefonu jeden sloupec přes celý displej a přeskakování po sloupcích,
     ne volné popojíždění. scroll-snap-stop:always drží krok po jednom –
     bez něj by rychlé švihnutí přeletělo tři sloupce naráz. */
  .kb-board{scroll-snap-type:x mandatory;scroll-behavior:smooth;
    scrollbar-width:none;overscroll-behavior-x:contain}
  .kb-board::-webkit-scrollbar{display:none}
  .kb-board>.kb-col{flex:0 0 100%;min-width:100%;
    scroll-snap-align:center;scroll-snap-stop:always}
  /* dlouhý stisk na kartě nesmí vyvolat výběr textu ani nabídku prohlížeče */
  .kb-card{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}
}

/* Tečky pod deskou: s jedním sloupcem na displeji jinak není poznat,
   kolik jich ještě je a kde člověk stojí. Dokresluje je app.js. */
.kb-tecky{display:none}
@media(max-width:820px){
  .kb-tecky{display:flex;justify-content:center;gap:.4rem;padding:.6rem 0 .2rem}
  .kb-tecka{width:.5rem;height:.5rem;padding:0;border-radius:50%;cursor:pointer;
    border:0;background:var(--line2);transition:background .15s,transform .15s}
  .kb-tecka.on{background:var(--brand);transform:scale(1.35)}
}

/* Karta zvednutá prstem. Klon letí nad stránkou a nechává pod sebou
   prosvítat, co je pod prstem – proto pointer-events:none, jinak by
   elementFromPoint vracel pořád jen ten klon. */
.kb-klon{position:fixed;z-index:120;pointer-events:none;margin:0;
  box-shadow:0 12px 28px rgba(15,23,42,.28);transform:rotate(1.5deg) scale(1.03);
  opacity:.97;border-color:var(--accent)}
.kb-card.kb-tahne{opacity:.35}
/* při tažení prstem se nesmí rolovat stránka pod ním */
body.kb-tahne-rezim{touch-action:none;overflow:hidden}
body.kb-tahne-rezim .kb-board{scroll-snap-type:none}
.column{flex:1 1 0;min-width:190px;background:#e9eef5;border-radius:var(--radius);padding:.5rem;
  display:flex;flex-direction:column;min-height:0}
.hint{color:var(--muted);font-size:.82rem;margin-top:.6rem}

/* ---- detail zakázky ---- */
.proj-head{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;flex-wrap:wrap;margin-bottom:.8rem}
.proj-num{color:var(--muted);font-size:.8rem}
.proj-sub{color:var(--muted)}
.stav-pick select{padding:.45rem .7rem;border-radius:9px;border:1px solid var(--line2);font-weight:700;background:#fff}
.cards-row{display:flex;gap:.7rem;flex-wrap:wrap;margin-bottom:1rem}
.kpi{flex:1;min-width:130px;background:#fff;border:1px solid var(--line);border-radius:10px;padding:.6rem .8rem;box-shadow:var(--shadow)}
.kpi-l{display:block;font-size:.74rem;color:var(--muted)}
.kpi strong{font-size:1.05rem}
/* Záložky: pilulky s ikonou, aktivní barevně podle svého významu. Ikona pomáhá
   trefit se očima rychleji než čtení popisků. */
/* padding-bottom musí odpovídat zápornému okraji záložek (-4px), jinak aktivní
   záložka přeteče dolů, prohlížeč si rezervuje svislý posuvník a středění je vedle */
.tabs{display:flex;gap:.35rem;border-bottom:2px solid var(--line);margin-bottom:1rem;overflow-x:auto;
  padding-bottom:4px}
/* Vystředěno automatickými okraji, ne justify-content:center – to by při
   nedostatku místa uřízlo první záložku a nešlo by na ni doscrollovat. */
.tabs>:first-child{margin-inline-start:auto}
.tabs>:last-child{margin-inline-end:auto}
.tab{display:inline-flex;align-items:center;gap:.4rem;background:none;border:1px solid transparent;
  padding:.45rem .8rem;font-weight:700;font-size:.88rem;color:var(--muted);cursor:pointer;
  border-radius:9px 9px 0 0;border-bottom:2px solid transparent;margin-bottom:-4px;white-space:nowrap;
  transition:background .12s,color .12s}
.tab-ic{font-size:1rem;line-height:1;filter:grayscale(1) opacity(.6);transition:filter .12s}
.tab:hover{background:var(--bg2,#f1f5f9);color:var(--ink)}
.tab:hover .tab-ic{filter:none}
.tab i{font-style:normal;font-size:.68rem;background:#e2e8f0;border-radius:10px;padding:0 .4rem;color:#475569;font-weight:700}
.tab i.hotovo{background:#dcfce7;color:#15803d}
.tab.on{color:var(--ink);background:#fff;border-color:var(--line);border-bottom-color:var(--accent)}
.tab.on .tab-ic{filter:none}
.tab.on.t-prubeh{border-bottom-color:#2563eb}
.tab.on.t-rozpocet{border-bottom-color:#7c3aed}
.tab.on.t-fakturace{border-bottom-color:#16a34a}
.tab.on i{background:var(--ink,#0f172a);color:#fff}
.tab.on i.hotovo{background:#16a34a;color:#fff}
.panel{display:none}
.panel.on{display:block}
.two-col{display:grid;grid-template-columns:1.4fr 1fr;gap:1rem;align-items:start}
@media(max-width:900px){.two-col{grid-template-columns:1fr}}
.form label{display:block;font-size:.8rem;font-weight:600;color:#475569;margin-bottom:.6rem}
.form input,.form select,.form textarea{display:block;width:100%;margin-top:.2rem;padding:.5rem .6rem;
  border:1px solid var(--line2);border-radius:8px;font:inherit;background:#fff}
.form textarea{resize:vertical}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:.4rem 1rem}
@media(max-width:600px){.grid2{grid-template-columns:1fr}}
.team-row{display:flex;align-items:center;gap:.6rem;padding:.35rem 0}
.role{font-size:.72rem;color:var(--muted);margin-left:auto;background:#f1f5f9;padding:.05rem .45rem;border-radius:6px}

/* milníky */
.milestone{padding:.7rem .9rem}
.mil-top{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}
.mil-poradi{width:22px;height:22px;border-radius:50%;background:#e2e8f0;color:#475569;display:grid;place-items:center;font-size:.72rem;font-weight:700;flex:none}
.mil-title{font-weight:700}
.mil-right{margin-left:auto;display:flex;align-items:center;gap:.4rem;font-size:.78rem;color:var(--muted)}
.mil-tasks{margin-top:.5rem;border-top:1px dashed var(--line);padding-top:.2rem}

/* konverzace */
.convo{display:flex;flex-direction:column;gap:.7rem;margin-bottom:1rem}
.post{display:flex;gap:.6rem}
.post-body{background:#f8fafc;border:1px solid var(--line);border-radius:10px;padding:.5rem .7rem;flex:1}
.post-head{display:flex;gap:.5rem;align-items:baseline;margin-bottom:.15rem}
.post-text{white-space:pre-wrap}

/* ---- úkol detail ---- */
.task-head{margin-bottom:1rem}
.task-meta{display:flex;gap:.4rem;flex-wrap:wrap;margin-top:.4rem}
.checkrow{display:flex;align-items:center;gap:.6rem;padding:.35rem 0;border:0;background:none;width:100%;text-align:left}
.check{width:22px;height:22px;border-radius:6px;border:2px solid var(--line2);background:#fff;cursor:pointer;color:#fff;font-weight:900;flex:none}
.check.done{background:var(--ok);border-color:var(--ok)}
.strike{text-decoration:line-through;color:var(--muted)}
.task-side h2{margin-top:1rem}
.task-side h2:first-child{margin-top:0}
.full{width:100%;padding:.5rem;border:1px solid var(--line2);border-radius:8px;font:inherit}

/* ---- timeline ---- */
.tl-filters{display:flex;gap:1rem;flex-wrap:wrap;align-items:end}
.tl-filters label{font-size:.8rem;font-weight:600;color:#475569}
.tl-filters select{display:block;margin-top:.2rem;padding:.4rem .5rem;border:1px solid var(--line2);border-radius:8px}
/* ===== Timeline / Gantt ===== */
.gantt-wrap{padding:0;overflow:hidden}
.gantt{overflow:auto;max-height:72vh}
.g-head,.g-row{display:flex;align-items:stretch}
.g-head{position:sticky;top:0;z-index:6;height:38px;background:#fff;border-bottom:2px solid var(--line2)}
.g-corner,.g-label{flex:0 0 240px;width:240px;position:sticky;left:0;z-index:4;background:#fff;
  border-right:1px solid var(--line2)}
.g-corner{z-index:7;display:flex;align-items:center;padding:0 .7rem;font-size:.72rem;font-weight:700;
  color:var(--muted);border-bottom:2px solid var(--line2)}
.g-time,.g-track{position:relative;width:var(--tw);flex:0 0 var(--tw)}
.g-month{position:absolute;top:3px;font-size:.68rem;font-weight:800;color:#334155;border-left:1px solid var(--line2);
  padding-left:.3rem;text-transform:capitalize;overflow:hidden;white-space:nowrap}
.g-tick{position:absolute;bottom:2px;transform:translateX(-50%);font-size:.64rem;color:var(--muted);white-space:nowrap}
.g-tick::before{content:'';position:absolute;top:-7px;left:50%;height:6px;border-left:1px solid var(--line)}
.g-row{border-bottom:1px solid var(--line);min-height:32px}
.g-row:hover .g-track{background:#fbfcfe}
.g-grp,.g-grp .g-label{background:#f1f5f9}
.g-label{display:flex;flex-direction:column;justify-content:center;gap:1px;padding:.28rem .7rem;color:inherit;overflow:hidden}
.g-label strong{font-size:.84rem;line-height:1.15;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.g-label small{font-size:.68rem;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.g-sub{flex-direction:row;align-items:center;gap:.4rem;padding-left:1.4rem}
.g-sub .g-name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:.8rem}
.g-sub:hover{background:#eef2f7}
.g-sub.over .g-name{color:#b91c1c;font-weight:600}
.g-kind{flex:none;width:17px;height:17px;border-radius:5px;font-size:.6rem;font-weight:800;color:#fff;
  display:inline-grid;place-items:center;font-style:normal}
.g-kind--milnik{background:#a21caf}
.g-kind--ukol{background:#2563eb}
.g-track{padding:.28rem 0}
.g-today{position:absolute;top:0;bottom:0;width:2px;background:var(--accent);opacity:.55;z-index:1}
.g-span{position:absolute;top:50%;transform:translateY(-50%);height:7px;border-radius:5px;background:#cbd5e1}
.g-bar{position:absolute;top:50%;transform:translateY(-50%);height:22px;border-radius:6px;display:flex;
  align-items:center;gap:.3rem;padding:0 .35rem;background:var(--info);color:#fff;font-size:.72rem;font-weight:600;
  overflow:hidden;box-shadow:0 1px 2px rgba(15,23,42,.2);min-width:10px;z-index:2}
.g-bar--ukol{height:18px;background:#3b82f6;font-weight:500}
.g-bar .avatar{width:16px;height:16px;font-size:.5rem;flex:none;box-shadow:0 0 0 1px rgba(255,255,255,.6)}
.g-bar-txt{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.g-bar.done{background:var(--ok)!important;opacity:.85}
.g-bar.over{background:var(--accent2)!important;box-shadow:0 0 0 1.5px #7f1d1d}
.g-bar:hover{filter:brightness(1.07);z-index:5;box-shadow:0 3px 10px rgba(15,23,42,.35)}
.over-sw{background:var(--accent2)}
/* swimlane per zakázka + rozbalovací detail */
.g-proj{border-bottom:1px solid var(--line2)}
.g-grp{cursor:pointer}
.g-grp .g-label{flex-direction:row;align-items:center;gap:.45rem}
.g-toggle{flex:none;border:1px solid var(--line2);background:#fff;color:var(--muted);width:20px;height:20px;
  border-radius:6px;cursor:pointer;font-size:.7rem;line-height:1;display:grid;place-items:center;transition:transform .12s}
.g-proj.open .g-toggle{transform:rotate(90deg);color:var(--accent);border-color:var(--accent)}
.g-proj-link{display:flex;flex-direction:column;gap:1px;min-width:0;color:inherit}
.g-proj-link strong{font-size:.84rem;line-height:1.15;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.g-proj-link small{font-size:.67rem;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.g-proj-link:hover strong{color:var(--brand)}
.g-grp .g-bar{height:15px;font-size:.64rem;font-weight:600;box-shadow:0 1px 1px rgba(15,23,42,.15)}
.g-detail{display:none}
.g-proj.open .g-detail{display:block;background:#fcfdff}
.cat--priprava{background:#d97706}
.cat--nakup{background:#4f46e5}
.cat--montaz{background:#2563eb}
.cat--fakturace{background:#16a34a}
.cat--servis{background:#a21caf}
.cat--ostatni{background:#64748b}
.tl-empty{padding:1.5rem;text-align:center}
.legend{display:flex;gap:1rem;flex-wrap:wrap;font-size:.8rem;color:var(--muted);margin-top:.4rem}
.leg{display:flex;align-items:center;gap:.35rem}
.sw{width:14px;height:14px;border-radius:4px;display:inline-block}
.today-sw{background:var(--accent)}

/* ---- login ---- */
.login-wrap{min-height:100vh;display:grid;place-items:center;background:linear-gradient(135deg,#0f172a,#1e293b);padding:1rem}
.login-card{background:#fff;border-radius:16px;padding:2rem;width:100%;max-width:420px;box-shadow:0 20px 40px rgba(0,0,0,.3)}
.login-card .brand{color:var(--brand)}
.brand-sub{color:var(--accent);font-weight:800;font-size:.7rem;letter-spacing:.18em;
  text-transform:uppercase;margin:.1rem 0 .2rem}
.login-form{margin:1rem 0}
.login-form label{display:block;font-size:.82rem;font-weight:600;margin-bottom:.7rem}
.login-form input{display:block;width:100%;margin-top:.25rem;padding:.6rem;border:1px solid var(--line2);border-radius:9px;font:inherit}
.login-form .btn{width:100%;margin-top:.4rem}
.demo{border-top:1px solid var(--line);margin-top:1rem;padding-top:1rem}
.demo-h{font-size:.78rem;color:var(--muted);margin-bottom:.6rem}
.demo-row{margin-bottom:.4rem}
.demo-btn{display:flex;align-items:center;gap:.7rem;width:100%;background:#f8fafc;border:1px solid var(--line);
  border-radius:10px;padding:.5rem .7rem;cursor:pointer;text-align:left}
.demo-btn:hover{background:#f1f5f9;border-color:var(--line2)}
.demo-name{display:flex;flex-direction:column;font-weight:600;font-size:.88rem}
.demo-name small{font-weight:400;color:var(--muted);font-size:.74rem}
.demo-go{margin-left:auto;color:var(--accent);font-weight:800}
code{background:#f1f5f9;padding:.05rem .3rem;border-radius:4px;font-size:.85em}

/* ---- editační prvky (dotažení UI) ---- */
.inline{display:inline}
.nowrap{white-space:nowrap}
form.inline{display:inline-block}
.btn.sm{padding:.25rem .55rem;font-size:.78rem}
.btn--danger{background:#fff;border-color:#fca5a5;color:#b91c1c}
.btn--danger:hover{background:#fee2e2}
.full{width:100%}
.xbtn{border:0;background:transparent;color:var(--muted);cursor:pointer;font-size:1.05rem;
  line-height:1;padding:.15rem .35rem;border-radius:6px}
.xbtn:hover{background:#fee2e2;color:#b91c1c}
.mini-select{padding:.2rem .4rem;border:1px solid var(--line2);border-radius:7px;font:inherit;font-size:.8rem}

/* rozbalovací formuláře (details/summary) */
.adder{margin-bottom:1rem}
.adder>summary{cursor:pointer;font-weight:700;color:var(--accent);list-style:none;
  padding:.5rem .2rem;user-select:none}
.adder>summary::-webkit-details-marker{display:none}
.adder>summary:hover{color:#9f0e33}
.adder[open]>summary{margin-bottom:.6rem;border-bottom:1px solid var(--line)}
.mini-form{margin:0}
.mini-form label{font-size:.78rem}
.mini-form .btn{margin-top:.2rem}

/* malé „+ Nový…" tlačítko v řádku s nadpisem (formulář se otevře jako modal – viz .rowedit) */
.add-head{position:relative;margin:0;flex:none}
.addrow{display:flex;gap:.4rem;align-items:center;margin-top:.6rem}
.addrow input{flex:1;margin-top:0}
.addrow select{margin-top:0;max-width:160px}
.addrow .btn{margin-top:0;padding:.4rem .7rem}

.mil-actions{display:flex;gap:.5rem;align-items:flex-start;flex-wrap:wrap;margin-top:.6rem;
  padding-top:.5rem;border-top:1px dashed var(--line)}
.mil-actions .adder{margin-bottom:0}
.mil-actions .adder>summary{padding:.3rem .5rem;font-size:.82rem;background:#f1f5f9;border-radius:7px}
.mil-actions .mini-form{margin-top:.5rem;background:#f8fafc;padding:.7rem;border-radius:9px;
  border:1px solid var(--line);min-width:280px}

.filterbar{display:flex;gap:1rem;align-items:end;flex-wrap:wrap}
.filterbar label{font-size:.78rem;font-weight:600;color:#475569}
.filterbar select{display:block;margin-top:.2rem;padding:.35rem .5rem;border:1px solid var(--line2);border-radius:8px}

.chk{display:flex!important;align-items:center;gap:.4rem;flex-direction:row!important}
.chk input{width:auto!important;margin-top:0!important}

/* sub-tabs (číselníky) */
/* Nastavení má sedm záložek a na telefon se v žádném případě nevejdou.
   .toggle má overflow:hidden kvůli zaoblení rohů, takže přebývající záložky
   se tiše uřízly a nešlo se k nim dostat. Segmentový vzhled zůstává, jen se
   lišta dá posunout prstem – a aktivní záložku app.js po načtení nascrolluje
   do zorného pole, ať člověk vidí, kde je. */
.subtabs{margin-bottom:1rem;max-width:100%;overflow-x:auto;overscroll-behavior-x:contain;
  scrollbar-width:thin}
.subtabs a{flex:none;white-space:nowrap}

/* řádková editace v tabulce */
.rowedit{display:inline-block}
.rowedit>summary{list-style:none;display:inline-block}
.rowedit>summary::-webkit-details-marker{display:none}
.rowedit[open]>summary{outline:2px solid var(--accent);border-radius:9px}
.mini-form.pop{position:absolute;right:1rem;z-index:20;background:#fff;border:1px solid var(--line2);
  box-shadow:0 12px 30px rgba(15,23,42,.18);border-radius:12px;padding:1rem;margin-top:.4rem;
  min-width:320px;text-align:left}
.tablewrap{position:relative}

/* 2FA – záložní kódy a klíč */
.codes{display:flex;flex-wrap:wrap;gap:.5rem;margin:.7rem 0}
.codes code{background:#f1f5f9;border:1px solid var(--line);padding:.35rem .6rem;border-radius:7px;
  font-size:.95rem;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}
.codes code.secret{font-size:1.1rem;letter-spacing:.08em;font-weight:700;color:var(--brand)}

/* Zavřený <details> si obsah drží v layoutu (Chrome mu dá content-visibility:hidden,
   což je i containing block), takže skryté modaly nafukovaly šířku tabulky a dělaly
   vodorovný posuvník. Zavřený modal ať v layoutu není vůbec. */
.rowedit:not([open]) .mini-form.pop{display:none}
/* VŠECHNY rozbalovací formuláře = vycentrovaný modal přes celou stránku se ztmavením */
.rowedit[open]::before{content:"";position:fixed;inset:0;background:rgba(15,23,42,.5);
  backdrop-filter:blur(1px);z-index:1000}
.rowedit .mini-form.pop{position:fixed;left:50%;top:50%;right:auto;
  transform:translate(-50%,-50%);z-index:1001;width:min(560px,94vw);max-height:88vh;overflow:hidden;
  margin:0;padding:0;box-shadow:0 25px 60px rgba(0,0,0,.45);border-radius:14px;
  display:flex;flex-direction:column}
/* tlačítko nesmí přebít ztmavení ani modal (zavírá se ✕ / Zrušit / klikem mimo / Esc) */
.rowedit[open]>summary{position:static;z-index:auto}
/* kontejner s otevřeným modalem musí být nad horní lištou, jinak modal „zapadne" pod ni
   (sticky/relative předek jinak drží modal ve své vrstvě) */
.page-head:has(.rowedit[open]),
.sec-bar:has(.rowedit[open]),
.filterbar:has(.rowedit[open]),
.cust-sec-head:has(.rowedit[open]),
.ck-tree:has(.rowedit[open]),
.ck-head:has(.rowedit[open]),
.tablewrap:has(.rowedit[open]),
.card:has(.rowedit[open]),
.mrow:has(.rowedit[open]),
.msub:has(.rowedit[open]),
.rozp-sekce-head:has(.rowedit[open]),
.smil-act:has(.rowedit[open]),
.ov-card:has(.rowedit[open]){position:relative;z-index:1010}
/* hlavička / tělo / patička modalu */
.mform-head{flex:none;display:flex;align-items:center;justify-content:space-between;gap:1rem;
  padding:.85rem 1.1rem;border-bottom:1px solid var(--line);background:#fff}
.mform-head h3{margin:0;font-size:1rem;font-weight:800;color:var(--brand)}
.mform-x{border:0;background:transparent;color:var(--muted);font-size:1rem;cursor:pointer;
  width:30px;height:30px;border-radius:8px;flex:none}
.mform-x:hover{background:#fee2e2;color:#b91c1c}
.mform-body{flex:1;min-height:0;overflow-y:auto;padding:1.1rem}
.mform-body>label:last-of-type{margin-bottom:0}
.mform-foot{flex:none;display:flex;justify-content:flex-end;align-items:center;gap:.5rem;
  padding:.75rem 1.1rem;border-top:1px solid var(--line);background:#f8fafc}
.mform-foot .btn{margin-top:0}

/* ===== Šablony zakázek ===== */
/* skupina tlačítek – .row má space-between, ve skupině ho nechceme (jinak dvě
   tlačítka odletí na opačné konce) */
.row.gap{display:flex;justify-content:flex-start;gap:1rem;align-items:center;
  flex-wrap:wrap;margin:.3rem 0}
.sablona-list{display:flex;flex-direction:column;gap:.6rem}
.sablona-card{display:flex;align-items:center;gap:1rem;justify-content:space-between}
.sablona-card-name{font-weight:800;font-size:1.05rem;color:var(--brand)}
.sablona-card-meta{display:flex;gap:.4rem;flex-wrap:wrap;margin-top:.4rem}
.sablona-card-act{display:flex;align-items:center;gap:.5rem;flex:none}
.sablona-head{margin-bottom:1rem}
.smil{margin-bottom:.7rem}
.smil-head{display:flex;align-items:flex-start;justify-content:space-between;gap:.6rem;flex-wrap:wrap}
.smil-title{display:flex;align-items:center;gap:.45rem;flex-wrap:wrap}
.smil-title .role{margin-left:0}
.smil-act{display:flex;align-items:center;gap:.3rem;flex:none}
.sukoly{margin-top:.6rem;padding-top:.5rem;border-top:1px dashed var(--line);display:flex;flex-direction:column;gap:.35rem}
.sukol{background:#f8fafc;border:1px solid var(--line);border-radius:9px;padding:.45rem .6rem}
.sukol-row{display:flex;align-items:center;gap:.45rem;flex-wrap:wrap}
.sukol-name{font-weight:700}
.sukol-act{display:flex;align-items:center;gap:.25rem;margin-left:auto}
.sukol-row .role,.spod-row .role{margin-left:0}
.role.sm{font-size:.68rem}
.spod-row{display:flex;align-items:center;gap:.4rem;flex-wrap:wrap;padding:.15rem 0 .15rem 1.1rem}
.spod-dot{color:var(--muted)}
.spod-name{font-size:.9rem}
.sub-adder{margin:.35rem 0 0 1.1rem}
.sub-adder>summary{font-size:.78rem}

/* ===== Notifikace ===== */
.noscroll{overflow:hidden}
.notif-modal{position:fixed;inset:0;z-index:60;pointer-events:none}   /* dropdown – nezamyká stránku */
.notif-backdrop{display:none}
.notif-panel{position:absolute;top:62px;right:14px;width:420px;max-width:calc(100vw - 28px);
  max-height:78vh;display:flex;flex-direction:column;background:#fff;border:1px solid var(--line);
  border-radius:14px;box-shadow:0 20px 50px rgba(15,23,42,.3);overflow:hidden;pointer-events:auto}
.notif-head{display:flex;align-items:center;gap:.5rem;padding:.6rem .7rem;border-bottom:1px solid var(--line)}
.notif-tabs{display:flex;gap:.3rem;flex:1}
.ntab{background:#f1f5f9;border:0;border-radius:8px;padding:.35rem .7rem;font-weight:700;cursor:pointer;
  font-size:.82rem;color:#475569}
.ntab.on{background:var(--brand);color:#fff}
.ntab i{font-style:normal;opacity:.8;font-size:.72rem}
.notif-head-actions{display:flex;align-items:center;gap:.4rem}
.notif-x{border:0;background:none;font-size:1rem;cursor:pointer;color:var(--muted);padding:.2rem .4rem}
.notif-body{overflow-y:auto}
.nlist{display:none}
.nlist.on{display:block}
.empty-n{padding:1.4rem;text-align:center}

.nrow{position:relative;display:flex;align-items:stretch;border-bottom:1px solid var(--line);overflow:hidden;background:#fff}
.nrow.unread{background:#fff7ed}
.nrow-swipe{position:absolute;top:0;bottom:0;display:flex;align-items:center;padding:0 1rem;
  font-size:.75rem;font-weight:800;color:#fff;text-transform:uppercase;letter-spacing:.04em}
.nrow-swipe--read{left:0;background:var(--ok)}
.nrow-swipe--arch{right:0;background:var(--accent)}
.nrow-main{position:relative;z-index:1;background:inherit;flex:1;display:grid;
  grid-template-columns:1fr auto;gap:.1rem .6rem;padding:.55rem .7rem;align-items:baseline;transition:transform .05s}
.nrow.swiping .nrow-main{transition:none}
.nrow-tags{grid-column:1;grid-row:1;display:flex;align-items:center;gap:.35rem;flex-wrap:wrap;min-width:0}
.ntyp{font-size:.6rem;text-transform:uppercase;letter-spacing:.04em;color:var(--accent);font-weight:800;
  background:#fee2e8;padding:.07rem .4rem;border-radius:20px;white-space:nowrap}
.ntyp--prirazeni{color:#1d4ed8;background:#dbeafe}
.ntyp--komentar{color:#92400e;background:#fef3c7}
.ntyp--konverzace{color:#6d28d9;background:#ede9fe}
.nproj{font-size:.66rem;font-weight:700;color:#334155;background:#f1f5f9;padding:.07rem .45rem;border-radius:20px;
  max-width:170px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ntime{grid-column:2;grid-row:1;font-size:.72rem;color:var(--muted);white-space:nowrap}
.ntext{grid-column:1 / span 2;font-size:.88rem}
.nrow.unread .ntext{font-weight:600}
.nact{position:relative;z-index:1;background:inherit;display:flex;align-items:center;gap:.1rem;padding-right:.4rem}
.nbtn{border:0;background:none;cursor:pointer;font-size:1rem;color:var(--muted);padding:.2rem .35rem;border-radius:6px}
.nbtn:hover{background:#e2e8f0}
.npage .nrow{border-radius:0}
.npage-tabs{margin-bottom:1rem}
@media(max-width:820px){.notif-panel{display:none}}

/* ===== Agenda – dlaždice ===== */
.agenda-sekce{margin-bottom:1.4rem}
.sekce-h{display:flex;align-items:center;gap:.5rem;font-size:1.05rem;margin:0 0 .7rem}
.sekce-ic{width:28px;height:28px;border-radius:8px;display:grid;place-items:center;font-size:.95rem}
.ic-mil{background:#fae8ff}.ic-ukol{background:#dbeafe}.ic-pod{background:#ccfbf1}
.tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:.7rem}
.tile{display:block;background:#fff;border:1px solid var(--line);border-left:4px solid var(--line2);
  border-radius:11px;padding:.7rem .8rem;box-shadow:var(--shadow);transition:.12s}
.tile:hover{box-shadow:0 6px 16px rgba(15,23,42,.1);transform:translateY(-1px)}
.tile--mil{border-left-color:#a21caf}
.tile--ukol{border-left-color:#2563eb}
.tile--pod{border-left-color:#0d9488}
.tile.over{border-left-color:var(--warn)}
.tile-top{display:flex;justify-content:space-between;align-items:center;gap:.4rem;margin-bottom:.25rem}
.tile-kind{font-size:.64rem;font-weight:800;letter-spacing:.05em;color:var(--muted)}
.tile--mil .tile-kind{color:#a21caf}.tile--ukol .tile-kind{color:#2563eb}.tile--pod .tile-kind{color:#0d9488}
.tile-name{font-weight:700;line-height:1.25}
.tile-proj{font-size:.78rem;color:var(--muted);margin:.15rem 0 .4rem}
.tile-foot{display:flex;align-items:center;gap:.4rem;flex-wrap:wrap}

/* ===== Milník – popis / historie ===== */
.mil-popis{background:#f8fafc;border:1px solid var(--line);border-radius:8px;padding:.5rem .7rem;
  margin:.2rem 0 .5rem;font-size:.9rem;white-space:pre-wrap;color:#334155}
.convo.small .post-body{padding:.4rem .6rem}
.convo.small{margin-bottom:.6rem}

/* ===== Průběh – stepper ===== */
.stepper{display:flex;gap:0;overflow-x:auto;padding:.4rem .2rem 1rem;margin-bottom:.4rem}
.step{flex:1 1 0;min-width:78px;display:flex;flex-direction:column;align-items:center;text-align:center;position:relative}
.step::before{content:"";position:absolute;top:16px;left:-50%;width:100%;height:3px;background:var(--line2);z-index:0}
.step:first-child::before{display:none}
.step-dot{position:relative;z-index:1;width:34px;height:34px;border-radius:50%;display:grid;place-items:center;
  background:#fff;border:3px solid var(--line2);color:#64748b;font-weight:800;font-size:.85rem}
.step-lbl{font-size:.67rem;color:var(--muted);margin-top:.3rem;max-width:94px;line-height:1.1;
  overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.step--hotovo .step-dot{background:var(--ok);border-color:var(--ok);color:#fff}
.step--hotovo::before{background:var(--ok)}
.step--probiha .step-dot{border-color:var(--info);color:var(--info)}
.step--neresi-se .step-dot{border-style:dashed}
.step.over .step-dot{border-color:var(--warn);color:var(--warn)}

/* ===== Zákazníci (agenda) ===== */
.cust-list{display:flex;flex-direction:column;gap:3px}
.cust-row{display:flex;align-items:center;gap:.7rem;padding:.35rem .7rem;border:1px solid var(--line);
  border-radius:8px;background:#fff;color:inherit;min-height:34px}
.cust-row:hover{border-color:var(--accent);background:#f8fafc}
.cust-row-name{font-weight:700;color:var(--brand);flex:0 1 auto;min-width:120px;max-width:34%;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cust-row-meta{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cust-row-stats{flex:none;display:flex;gap:.35rem}
@media(max-width:640px){.cust-row-meta{display:none}.cust-row-name{max-width:none}}
.cust-dl{display:grid;grid-template-columns:auto 1fr;gap:.35rem 1rem;font-size:.9rem}
.cust-dl span:nth-child(odd){color:var(--muted)}
.cust-note{margin-top:.7rem;white-space:pre-wrap;font-size:.9rem;background:#f8fafc;border:1px solid var(--line);
  border-radius:9px;padding:.55rem .7rem}
.cust-summary{display:flex;gap:.6rem}
.cust-summary .st{flex:1;background:#f8fafc;border:1px solid var(--line);border-radius:10px;
  padding:.55rem .9rem;text-align:center}
.cust-summary .st b{display:block;font-size:1.25rem;color:var(--accent)}
.cust-proj{display:flex;align-items:center;justify-content:space-between;gap:.6rem;padding:.5rem .2rem;
  border-bottom:1px solid var(--line);color:inherit}
.cust-proj:last-child{border-bottom:0}
.cust-proj:hover{background:#f8fafc}
.cust-proj-name{font-weight:600}
.cust-proj-meta{display:flex;align-items:center;gap:.5rem;flex:none;flex-wrap:wrap;justify-content:flex-end}
.cust-sec-head{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap;margin:1.3rem 0 .6rem}
.cust-sec-head h2{margin:0}
/* popisek se lepí k nadpisu, akce k pravému kraji – space-between by je jinak
   při třech a více prvcích roztáhl rovnoměrně a tlačítko skončilo uprostřed */
.cust-sec-popis{margin-right:auto}
.cust-sec-akce{margin-left:auto;display:flex;align-items:center;gap:.4rem;flex-wrap:wrap}

/* ===== Detail zakázky – přehled (dashboard) ===== */
.ov-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem;align-items:start}
.ov-grid2{display:grid;grid-template-columns:1fr 1fr;gap:1rem;align-items:start;margin-top:0}
@media(max-width:1150px){.ov-grid{grid-template-columns:1fr 1fr}.ov-grid>.ov-card:last-child{grid-column:1/-1}}
@media(max-width:820px){.ov-grid,.ov-grid2{grid-template-columns:1fr}}
.ov-card{margin-bottom:1rem;display:flex;flex-direction:column}
.ov-card h6{margin:0 0 .8rem;font-size:.72rem;font-weight:800;letter-spacing:.06em;
  text-transform:uppercase;color:var(--muted)}
.ov-card h6 .count{font-size:.7rem;background:#f1f5f9;border-radius:20px;padding:0 .4rem;color:#475569}
/* řádky label ↔ hodnota */
.ovl{display:grid;grid-template-columns:auto 1fr;gap:0 1rem;font-size:.86rem}
.ovl>span{padding:.42rem 0;border-bottom:1px solid #f1f5f9;display:flex;align-items:center}
.ovl>span:nth-child(odd){color:var(--muted)}
.ovl>span:nth-child(even){justify-content:flex-end;text-align:right;font-weight:600;column-gap:.3em;flex-wrap:wrap}
.ovl>span:nth-last-child(-n+2){border-bottom:0}
.ov-note{margin:.7rem 0 0;font-size:.84rem;color:#475569;background:#f8fafc;border-radius:9px;
  padding:.5rem .6rem;white-space:pre-wrap}
/* progress */
.ov-prog{display:flex;align-items:center;gap:.6rem;margin-top:.8rem}
.ov-prog-bar{flex:1;height:7px;background:#e2e8f0;border-radius:5px;overflow:hidden}
.ov-prog-bar i{display:block;height:100%;background:var(--info);border-radius:5px}
.ov-prog-bar i.ok{background:var(--ok)}
.ov-links{display:flex;gap:.4rem;margin-top:.9rem}
.ov-links .btn{cursor:pointer}
/* tým */
/* Tým: kdo má v zakázce roli, je zvýrazněný; kdo je jen zapojený (úkol, milník,
   zmínka), je pod čarou. Notifikace z konverzace chodí oběma skupinám. */
.ov-team{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:.4rem}
.ov-mem{display:flex;align-items:center;gap:.5rem;background:#f8fafc;border:1px solid var(--line);
  border-radius:10px;padding:.4rem .55rem;min-width:0}
.ov-mem.key{background:#fff7f8;border-color:#fecdd3}
.ov-mem>div{flex:1;min-width:0;display:flex;flex-direction:column;line-height:1.25}
.ov-mem strong{font-size:.85rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ov-mem small{font-size:.7rem;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ov-mem.key small{color:var(--accent);font-weight:700}
.ov-team-del{display:flex;align-items:center;gap:.5rem;margin:.8rem 0 .4rem;
  font-size:.64rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}
.ov-team-del::after{content:"";flex:1;border-top:1px dashed var(--line2)}
/* statistiky průběhu */
.ov-stats{display:flex;gap:.5rem;margin-top:.9rem}
.ov-stat{flex:1;background:#f8fafc;border:1px solid var(--line);border-radius:10px;padding:.5rem .4rem;
  text-align:center;font-size:.7rem;color:var(--muted);cursor:pointer}
.ov-stat b{display:block;font-size:1.15rem;color:var(--ink);font-weight:800}
.ov-stat:hover{border-color:var(--accent)}
.ov-stat.bad b{color:var(--accent2)}
.ov-now{margin-top:.8rem;display:flex;flex-direction:column;gap:.2rem}
.ov-now-it{font-size:.84rem;color:inherit;padding:.25rem .35rem;border-radius:7px}
.ov-now-it:hover{background:#f1f5f9}
.ov-convo{max-height:230px;overflow-y:auto;margin-bottom:.6rem}

/* ===== Stavby a jejich části ===== */
.sekce-chip{display:inline-block;font-size:.7rem;font-weight:800;background:var(--brand);color:#fff;
  border-radius:5px;padding:.05rem .35rem;min-width:20px;text-align:center}
.sekce-chip.sm{font-size:.62rem;padding:0 .3rem}
.st-row .cust-row-name{color:var(--brand)}

/* ===== Mapový editor částí stavby ===== */
.mapa-head{margin-bottom:.5rem}
/* stejný princip jako kanban: obsah je sloupec přes výšku okna, mapa zabere zbytek */
.content:has(.mapa-wrap){display:flex;flex-direction:column;height:calc(100dvh - 60px)}
.content:has(.mapa-wrap)>.page-head{position:static;flex:none}
.mapa-wrap{display:grid;grid-template-columns:330px 1fr;gap:.7rem;
  flex:1;min-height:0}
.mapa-panel{display:flex;flex-direction:column;gap:.6rem;overflow:auto;
  background:#fff;border:1px solid var(--line2);border-radius:10px;padding:.7rem}
.mapa-map{border:1px solid var(--line2);border-radius:10px;overflow:hidden;position:relative}
.mapa-map.kresli{cursor:crosshair}
.mapa-map.kresli .leaflet-container{cursor:crosshair}
.mapa-hledat{display:flex;gap:.35rem}
.mapa-hledat input{flex:1;min-width:0}
.mapa-sekce{display:flex;flex-direction:column;gap:.25rem}
.mapa-cast{display:grid;grid-template-columns:12px 1fr auto;grid-template-areas:"b n p" ". a a";
  gap:.2rem .45rem;align-items:center;padding:.4rem .5rem;border-radius:8px;
  border:1px solid var(--line2);cursor:pointer;font-size:.84rem}
.mapa-cast:hover{background:#f8fafc}
.mapa-cast.on{border-color:var(--brand);background:#f1f5ff}
.mapa-barva{grid-area:b;width:12px;height:12px;border-radius:3px}
.mapa-cast-nazev{grid-area:n;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mapa-cast-plocha{grid-area:p;font-weight:700;font-size:.8rem;white-space:nowrap}
.mapa-cast-akce{grid-area:a;display:flex;gap:.25rem;justify-content:flex-end}
.mapa-cast:not(.on) .mapa-cast-akce{opacity:.55}
.mapa-cast.on .mapa-cast-akce{opacity:1}
.mapa-nastroje{border-top:1px solid var(--line2);padding-top:.5rem;display:flex;
  flex-direction:column;gap:.3rem;font-size:.82rem}
.mapa-nastroje .chk{display:flex;align-items:center;gap:.4rem;margin:0}
.mapa-souhrn{display:flex;justify-content:space-between;align-items:baseline;
  background:#f8fafc;border-radius:8px;padding:.45rem .6rem;font-size:.84rem}
.mapa-souhrn strong{font-size:1.05rem}
.mapa-help{margin:0}
/* detail stavby: vlevo úzký sloupec s údaji, vpravo velký zákres přes dva sloupce */
.st-top{display:grid;grid-template-columns:minmax(250px,1fr) 2fr;gap:.7rem;
  align-items:stretch;margin-bottom:.8rem}
.st-top>.card{margin:0}
.st-info{display:flex;flex-direction:column}
.st-info .ov-stats{margin-bottom:.5rem}
.st-mapa{display:flex;flex-direction:column;min-height:340px}
.st-mapa-head{display:flex;align-items:baseline;gap:.6rem;margin-bottom:.5rem}
.st-mapa-head h6{margin:0}
.st-mapa-head .btn{margin-left:auto;flex:none;align-self:center}
.st-mapa-prazdno{flex:1;display:flex;flex-direction:column;align-items:center;
  justify-content:center;gap:.7rem;text-align:center;background:#f8fafc;
  border:1px dashed var(--line2);border-radius:8px;padding:1.2rem}
.st-mapa-prazdno p{margin:0}

/* Leaflet má vrstvy se z-index 200–800; bez vlastního kontextu vrstvení
   by mapa při skrolu přejela lepivou horní lištu (30) i nadpis stránky (25). */
.leaflet-container{isolation:isolate}

/* náhled zákresu v kartě (detail stavby) */
.mapa-nahled{height:190px;border-radius:8px;overflow:hidden;background:#e2e8f0;
  display:flex;align-items:center;justify-content:center;position:relative}
.mapa-nahled.velky{height:auto;flex:1;min-height:300px}
.mapa-nahled.je-mapa{background:#000}
.mapa-nahled.je-mapa .mapa-nahled-cekej{display:none}
.mapa-nahled .leaflet-container{background:#0b1020}
.mapa-legenda{display:flex;flex-wrap:wrap;gap:.3rem;margin-top:.45rem}
.mapa-leg{display:inline-flex;align-items:center;gap:.3rem;font-size:.74rem;color:var(--muted)}
.mapa-leg i{width:9px;height:9px;border-radius:2px;display:inline-block}
.mapa-leg b{color:var(--ink, #0f172a)}
.mapa-leg.off{opacity:.6}
.mapa-leg.off i{background:none;border:1px dashed var(--muted)}
.mapa-tip.sm{font-size:.66rem;padding:.05rem .25rem;font-weight:700}

.mapa-uzel{background:#fff;border:2px solid #1b2a55;border-radius:50%;
  box-shadow:0 1px 3px rgba(0,0,0,.4);cursor:move}
.mapa-uzel:hover{background:#fecaca;border-color:#dc2626}
.mapa-tip{background:rgba(15,23,42,.78);border:0;color:#fff;font-size:.72rem;
  padding:.15rem .35rem;box-shadow:none;white-space:nowrap}
.mapa-tip::before{display:none}
.mapa-hlas{position:absolute;left:50%;transform:translateX(-50%);bottom:14px;z-index:600;
  background:rgba(15,23,42,.9);color:#fff;font-size:.8rem;padding:.4rem .8rem;border-radius:999px}
@media(max-width:900px){
  .content:has(.mapa-wrap){display:block;height:auto}
  .mapa-wrap{grid-template-columns:1fr;height:auto}
  .mapa-map{height:60dvh}
  .mapa-panel{max-height:none;overflow:visible}
  /* na mobilu zákres nad údaje – je to to hlavní, co člověk chce vidět */
  .st-top{grid-template-columns:1fr}
  .st-mapa{order:-1;min-height:0}
  .mapa-nahled.velky{height:44dvh;min-height:240px;flex:none}
}

/* ===== Servisní plány (pravidelné servisy) ===== */
.pl-dot{display:inline-block;width:10px;height:10px;border-radius:50%;background:var(--line2)}
.pl-dot.pl-ok{background:#16a34a}
.pl-dot.pl-blizi{background:#f59e0b}
.pl-dot.pl-po{background:#ef4444}
.pl-dot.pl-vyp{background:#cbd5e1}
.pl-t-blizi{color:#b45309}
.pl-t-po{color:#dc2626}
.pl-tbl tr.off{opacity:.5}
.pl-tbl td{vertical-align:middle}
.pl-ceka{border-left:3px solid #f59e0b}
.pl-ceka-list{display:flex;flex-wrap:wrap;gap:.35rem;margin-top:.5rem}
.pl-pill{font-size:.76rem;padding:.15rem .5rem;border-radius:999px;background:#fef3c7;color:#92400e}
.pl-pill.pl-po{background:#fee2e2;color:#991b1b}
.pl-rytmus{border:1px solid var(--line2);border-radius:8px;padding:.5rem .6rem;margin:.2rem 0}
.pl-rytmus legend{font-size:.75rem;color:var(--muted);padding:0 .3rem}
.pl-rytmus .chk{display:flex;align-items:center;gap:.45rem;margin:.25rem 0}
.pl-rytmus .chk select,.pl-rytmus .chk input[type=text],.pl-rytmus .chk input:not([type=radio]){width:auto;flex:1}
.badge.pl-b-po{background:#fee2e2;color:#991b1b}
.badge.pl-b-blizi{background:#fef3c7;color:#92400e}
.badge.sm{font-size:.66rem;padding:0 .3rem}

/* ===== Servis a reklamace ===== */
.sv-card.sv-reklamace{border-left-color:#ef4444}
.sv-card.sv-servis{border-left-color:#06b6d4}
.sv-cislo-reklamace{background:#fee2e2;color:#b91c1c}
.sv-cislo-servis{background:#cffafe;color:#0e7490}
.sv-zar{margin-top:.3rem;font-size:.68rem;font-weight:700;border-radius:5px;padding:.05rem .35rem;display:inline-block}
.sv-zar.ok{background:#dcfce7;color:#166534}
.sv-zar.no{background:#fee2e2;color:#b91c1c}

/* ===== Přehledy (matice na porady) ===== */
/* obsazení rolí při zakládání zakázky ze šablony */
.obsazeni{background:var(--bg2,#f8fafc);border:1px solid var(--line);border-radius:10px;
  padding:.7rem .8rem;margin-bottom:.6rem}
.obsazeni[hidden]{display:none}
.obsazeni-h{display:flex;align-items:baseline;gap:.5rem;flex-wrap:wrap;
  font-size:.78rem;font-weight:700;margin-bottom:.5rem}

/* ===== Nastavení → Firma ===== */
.fi-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(340px,1fr));gap:1rem;align-items:start}
.fi-blok{padding:.9rem 1rem}
.fi-blok h6{margin:0 0 .7rem;font-size:.68rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}
.fi-blok label{display:block;font-size:.78rem;font-weight:600;color:#475569;margin-bottom:.6rem}
.fi-blok input{display:block;width:100%;margin-top:.2rem;padding:.45rem .6rem;
  border:1px solid var(--line2);border-radius:8px;font:inherit;background:#fff}
.fi-blok input:focus{outline:2px solid var(--accent);outline-offset:-2px;border-color:var(--accent)}
.fi-blok input[type=file]{padding:.35rem;font-size:.8rem}
.fi-logo{display:flex;gap:1rem;align-items:flex-start;flex-wrap:wrap}
.fi-logo-nahled{flex:none;width:180px;min-height:60px;display:flex;flex-direction:column;
  align-items:center;justify-content:center;gap:.3rem;padding:.7rem;
  background:repeating-conic-gradient(#f1f5f9 0 25%,#fff 0 50%) 0/14px 14px;
  border:1px solid var(--line2);border-radius:10px}
.fi-logo-nahled img{max-width:100%;max-height:64px;display:block}
.fi-logo>div:last-child{flex:1;min-width:220px}
.fi-akce{grid-column:1/-1;display:flex;gap:.6rem;align-items:center;flex-wrap:wrap}
/* chybová stránka uvnitř aplikace (404 / 500) */
.chyba{text-align:center;max-width:520px;margin:2.5rem auto;padding:2rem 1.6rem}
.chyba-ic{font-size:2.6rem;line-height:1;display:block;margin-bottom:.7rem}
.chyba h1{font-size:1.3rem;margin:0 0 .5rem}
.chyba p{margin:0 0 .4rem}

.pd-tbl{font-size:.85rem}
.pd-tbl td,.pd-tbl th{padding:.35rem .5rem}
.pd-vychozi td{background:#f0fdf4}
.pd-vychozi td:first-child{box-shadow:inset 3px 0 0 #16a34a}

/* ===== Přehledy – podklad na poradu ===== */
/* pásmo čísel nad tabulkou */
.ph-kpi{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:.7rem;margin-bottom:1rem}
.ph-k{background:#fff;border:1px solid var(--line);border-radius:12px;padding:.7rem .9rem;
  display:flex;flex-direction:column;gap:.1rem;box-shadow:0 1px 2px rgba(15,23,42,.04)}
.ph-k-l{font-size:.66rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:700}
.ph-k strong{font-size:1.5rem;line-height:1.15;font-variant-numeric:tabular-nums;letter-spacing:-.01em}
.ph-k-p{font-size:.72rem;color:var(--muted)}
.ph-k--pozor{border-color:#fecaca;background:linear-gradient(#fff,#fef2f2)}
.ph-k--pozor strong{color:#b91c1c}
.ph-k-pruh{display:block;height:5px;border-radius:99px;background:var(--line);overflow:hidden;margin-top:.35rem}
.ph-k-pruh>i{display:block;height:100%;background:var(--accent)}

/* sloupcový graf fakturace */
.ph-graf-box{padding:.9rem 1rem 1rem;margin-bottom:1rem}
.ph-graf-box h6{margin:0 0 .8rem;font-size:.68rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}
.ph-graf{display:grid;grid-template-columns:repeat(12,1fr);gap:.4rem;height:200px}
/* pevné pruhy: popisek částky · plocha sloupce · název měsíce.
   Sloupec tak měří procenta z jasně dané výšky a nevytlačí popisek nad sebou. */
.ph-sl{display:grid;grid-template-rows:15px 1fr 18px;justify-items:center;height:100%}
.ph-sl-b{align-self:end}
.ph-sl-m{align-self:center}
.ph-sl-kc{font-size:.62rem;color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap;
  opacity:0;transition:opacity .12s}
.ph-sl:hover .ph-sl-kc,.ph-sl.ted .ph-sl-kc{opacity:1}
.ph-sl-b{width:100%;max-width:44px;border-radius:6px 6px 2px 2px;flex:none;
  background:linear-gradient(180deg,#60a5fa,#2563eb);transition:filter .12s;min-height:2px}
.ph-sl:hover .ph-sl-b{filter:brightness(1.12)}
.ph-sl.ted .ph-sl-b{background:linear-gradient(180deg,#f472b6,var(--accent))}
.ph-sl.prazdny .ph-sl-b{background:var(--line);min-height:2px}
.ph-sl-m{font-size:.66rem;color:var(--muted);font-weight:600}
.ph-sl.ted .ph-sl-m{color:var(--accent);font-weight:800}

.ph-wrap{padding:0;overflow:auto;max-height:calc(100dvh - 210px)}
.ph-table{border-collapse:separate;border-spacing:0;font-size:.8rem;width:100%}
.ph-table th,.ph-table td{border-bottom:1px solid var(--line);padding:.3rem .4rem;background:#fff}
.ph-table tbody tr:hover td{background:#f8fafc}
.ph-table tbody tr:hover .ph-fix{background:#f8fafc}
.ph-table thead th{position:sticky;top:0;z-index:3;background:#f8fafc;border-bottom:2px solid var(--line2);
  font-size:.7rem;font-weight:700;color:#475569;vertical-align:bottom}
/* řádek ve skluzu je vidět na první pohled */
.ph-r-skluz .ph-fix1{box-shadow:inset 3px 0 0 #dc2626}
/* sloupec s postupem milníků */
.ph-prog-h{min-width:96px}
.ph-prog{min-width:96px;white-space:nowrap}
.ph-prog-p{display:inline-block;width:52px;height:6px;border-radius:99px;background:var(--line);
  overflow:hidden;vertical-align:middle;margin-right:.35rem}
.ph-prog-p>i{display:block;height:100%;background:#16a34a}
.ph-prog-t{font-size:.72rem;color:var(--muted);font-variant-numeric:tabular-nums}
.ph-table td.r,.ph-table th.r{text-align:right;white-space:nowrap}
/* zmrazené sloupce vlevo */
.ph-fix{position:sticky;z-index:2;background:#fff}
.ph-fix1{left:0;min-width:210px;max-width:260px}
.ph-fix2{left:210px;min-width:120px}
.ph-table thead .ph-fix{z-index:4}
.ph-fix1 a{display:flex;flex-direction:column;color:inherit;line-height:1.2}
.ph-fix1 strong{font-size:.82rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ph-fix1 a:hover strong{color:var(--accent)}
/* Svislé hlavičky milníků. Dřív byly otočené o 60° přes transform – text lezl
   mimo buňku a nahoře se ořezával. writing-mode text sází svisle uvnitř buňky,
   takže se nemá kde ztratit a všechny začínají na stejné lince. */
.ph-rot{height:162px;width:34px;min-width:34px;max-width:34px;padding:0 0 .35rem;
  vertical-align:bottom;text-align:center}
.ph-rot span{writing-mode:vertical-rl;transform:rotate(180deg);display:inline-block;
  max-height:152px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
  font-size:.7rem;font-weight:700;color:#475569;letter-spacing:.01em}
/* buňky stavu – kulaté dlaždičky, ne obarvená mřížka */
.ph-c{width:34px;min-width:34px;text-align:center;padding:2px;font-weight:800;font-size:.76rem}
.ph-c a{display:flex;align-items:center;justify-content:center;height:26px;color:inherit;
  border-radius:7px;text-decoration:none;transition:transform .1s}
.ph-c a:hover{transform:scale(1.12)}
.ph-table td.ph-ok a{background:#bbf7d0;color:#14532d}
.ph-table td.ph-run a{background:#fed7aa;color:#7c2d12}
.ph-table td.ph-late a{background:#fecaca;color:#7f1d1d;box-shadow:0 0 0 1px #f87171 inset}
.ph-table td.ph-todo a{background:#f1f5f9;color:#cbd5e1}
.ph-table td.ph-off a{background:#e2e8f0;color:#94a3b8}
.ph-table td.ph-none{background:#fff}
.ph-table td.ph-none::after{content:"";display:block;height:26px;border-radius:7px;
  background:repeating-linear-gradient(45deg,#fbfcfd,#fbfcfd 3px,#eef2f7 3px,#eef2f7 6px)}
/* oddělení finančních sloupců vpravo */
.ph-table .ph-sep{border-left:2px solid var(--line2)}
.ph-late-txt{color:#b91c1c;font-weight:700}
.ph-c:hover{outline:2px solid var(--accent);outline-offset:-2px}
.ph-sw{display:inline-block;width:14px;height:14px;border-radius:4px;border:1px solid var(--line2)}
.ph-sw.ph-ok{background:#bbf7d0} .ph-sw.ph-run{background:#fed7aa}
.ph-sw.ph-late{background:#fecaca} .ph-sw.ph-todo{background:#f1f5f9}
.ph-sw.ph-off{background:#e2e8f0}
.ph-sw.ph-none{background:repeating-linear-gradient(45deg,#fbfcfd,#fbfcfd 3px,#eef2f7 3px,#eef2f7 6px)}
/* fakturace */
.ph-fakt td.ph-castka{background:#f0fdf4;color:#166534;font-weight:600}
.ph-fakt tbody tr:hover td.ph-castka{background:#dcfce7}
.ph-fakt tfoot td{position:sticky;bottom:0;background:#f1f5f9;border-top:2px solid var(--line2);z-index:2;
  font-variant-numeric:tabular-nums}

/* na poradu se tiskne – ať se vejde na šířku a nezmizí barvy */
@media print{
  .ph-wrap{max-height:none;overflow:visible;border:0}
  .ph-table{font-size:7.5pt}
  .ph-table thead th{position:static}
  .ph-fix{position:static}
  .ph-graf{height:120px}
  .ph-sl-kc{opacity:1}
  .ph-k{break-inside:avoid}
  .ph-table tr{break-inside:avoid}
  @page{size:A4 landscape;margin:10mm}
}

/* ===== Konverzace (sjednocená všude) ===== */
.konv{display:flex;flex-direction:column;min-height:0}
.konv-head h6{margin:0 0 .6rem;font-size:.72rem;font-weight:800;letter-spacing:.06em;
  text-transform:uppercase;color:var(--muted)}
.konv-head .count{font-size:.7rem;background:#f1f5f9;border-radius:20px;padding:0 .4rem;color:#475569}
.konv-list{display:flex;flex-direction:column;gap:.15rem;overflow-y:auto;
  padding:.7rem .1rem .5rem}   /* horní odsazení = místo pro vysunuté akce první zprávy */
.konv-prazdno{margin:.4rem .2rem}

/* oddělovač dnů */
.konv-den{display:flex;align-items:center;gap:.6rem;margin:.6rem 0 .35rem;
  font-size:.66rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}
.konv-den::before,.konv-den::after{content:"";flex:1;border-top:1px solid var(--line)}

.konv-msg{display:flex;gap:.45rem;max-width:96%;align-items:flex-end}
.konv-msg.moje{align-self:flex-end;flex-direction:row-reverse}
.konv-msg.navaz{margin-top:-.05rem}
.konv-mezera{flex:none;width:28px}          /* místo po avataru u navazující zprávy */

.konv-body{background:#fff;border:1px solid var(--line);border-radius:14px;padding:.35rem .6rem .3rem;
  box-shadow:0 1px 2px rgba(15,23,42,.05);min-width:0;position:relative}
/* bublina má „ouško" u avataru, navazující zprávy mají roh zaoblený */
.konv-msg:not(.navaz) .konv-body{border-bottom-left-radius:4px}
.konv-msg.moje:not(.navaz) .konv-body{border-bottom-left-radius:14px;border-bottom-right-radius:4px}
.konv-msg.moje .konv-body{background:#eef4ff;border-color:#c7d9f7}
.konv-msg.smazana .konv-body{background:#f8fafc;border-style:dashed}
.konv-meta{font-size:.74rem;font-weight:700;color:var(--accent);margin-bottom:.05rem;line-height:1.3}
.konv-msg.moje .konv-meta{text-align:right;color:#2f5fbf}

.konv-cit{border-left:3px solid var(--accent);background:rgba(15,23,42,.045);border-radius:0 6px 6px 0;
  padding:.15rem .45rem;margin-bottom:.25rem;font-size:.76rem;color:#475569;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:320px}
.konv-cit strong{color:var(--accent);margin-right:.35rem}
.konv-text{font-size:.88rem;white-space:pre-wrap;word-break:break-word;line-height:1.4}
/* čas doplave na konec posledního řádku, jako v telefonu */
.konv-cas{float:right;margin:.35rem 0 0 .5rem;font-size:.66rem;color:var(--muted);
  white-space:nowrap;line-height:1}

/* akce se vysunou nad pravý horní roh bubliny – nezabírají žádný řádek */
.konv-akce{position:absolute;top:-11px;right:6px;z-index:2;display:flex;gap:1px;
  background:#fff;border:1px solid var(--line2);border-radius:20px;padding:1px;
  box-shadow:0 2px 6px rgba(15,23,42,.12);
  opacity:0;visibility:hidden;transform:translateY(3px);transition:opacity .12s,transform .12s,visibility .12s}
.konv-msg:hover .konv-akce,.konv-msg:focus-within .konv-akce{opacity:1;visibility:visible;transform:none}
.konv-akce button{border:0;background:transparent;color:var(--muted);font-size:.72rem;cursor:pointer;
  padding:.1rem .3rem;border-radius:20px;line-height:1.4}
.konv-akce button:hover{background:#f1f5f9;color:var(--accent)}
.konv-akce form{display:inline}

.konv-edit textarea{width:100%;font:inherit;font-size:.88rem;border:1px solid var(--line2);
  border-radius:8px;padding:.35rem .5rem}
.konv-edit-act{display:flex;gap:.4rem;margin-top:.3rem}

/* psací pole jako v chatu: řádek s textem a kulatým tlačítkem odeslat */
.konv-form{margin-top:.5rem;position:relative}
.konv-vstup{display:flex;align-items:flex-end;gap:.4rem;background:#fff;border:1px solid var(--line2);
  border-radius:20px;padding:.25rem .3rem .25rem .75rem}
.konv-vstup:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px rgba(193,18,63,.09)}
.konv-form textarea{flex:1;min-width:0;font:inherit;font-size:.88rem;border:0;background:none;
  padding:.35rem 0;resize:none;max-height:8rem;line-height:1.4}
.konv-form textarea:focus{outline:none}
.konv-odeslat{flex:none;width:30px;height:30px;border:0;border-radius:50%;background:var(--accent);
  color:#fff;font-size:.85rem;cursor:pointer;display:flex;align-items:center;justify-content:center;
  transition:transform .12s,opacity .12s}
.konv-odeslat:hover{transform:scale(1.08)}
.konv-odeslat:disabled{opacity:.4;cursor:default;transform:none}
.konv-reply{display:flex;align-items:center;gap:.4rem;background:#f1f5f9;border-left:3px solid var(--accent);
  border-radius:0 7px 7px 0;padding:.25rem .5rem;margin-bottom:.35rem;font-size:.78rem}
.konv-reply .xbtn{margin-left:auto}

/* ===== Ceník / knihovna položek ===== */
.cenik-grid{display:grid;grid-template-columns:300px minmax(0,1fr);gap:1rem;align-items:start}
/* min-width:0 není kosmetika: prvek v mřížce má výchozí minimální šířku podle
   obsahu, takže široká tabulka ceníku sloupec roztáhne místo toho, aby se
   uvnitř posouvala – a celá stránka pak na telefonu ujíždí do boku. */
.cenik-grid>*{min-width:0}
@media(max-width:900px){.cenik-grid{grid-template-columns:minmax(0,1fr)}}
.ck-tree{padding:.6rem;position:sticky;top:.5rem;max-height:78vh;overflow:auto}
.ck-tree-head{display:flex;align-items:center;justify-content:space-between;gap:.5rem;
  padding:.1rem .3rem .5rem;border-bottom:1px solid var(--line);margin-bottom:.35rem}
.ck-node{margin:1px 0}
.ck-link{display:flex;align-items:center;gap:.35rem;padding:.3rem .45rem;border-radius:7px;color:inherit;
  font-size:.84rem;text-decoration:none}
.ck-link:hover{background:#f1f5f9}
.ck-link.on{background:var(--brand);color:#fff;font-weight:600}
.ck-link.on .ck-count,.ck-link.on .ck-kod{background:rgba(255,255,255,.22);color:#fff}
.ck-arrow{flex:none;font-size:.6rem;color:var(--muted);width:10px;transition:transform .12s}

/* rozbalovací skupina */
.ck-skupina{margin:2px 0}
.ck-skupina>summary{list-style:none;cursor:pointer;font-weight:700}
.ck-skupina>summary::-webkit-details-marker{display:none}
.ck-skupina[open]>summary{background:var(--bg2,#f1f5f9)}
.ck-skupina[open]>summary .ck-arrow{transform:rotate(90deg)}
.ck-link--skupina .ck-name{font-size:.85rem}
/* potomci odsazení jednou linkou, ne počítáním úrovní */
.ck-deti{margin:1px 0 .35rem .5rem;padding-left:.5rem;border-left:1px solid var(--line)}
.ck-vse{font-size:.76rem;color:var(--muted);font-style:italic}
.ck-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ck-kod{font-size:.68rem;font-weight:700;background:#eef2f7;color:#475569;border-radius:4px;
  padding:0 .25rem;margin-right:.25rem}
.ck-count{flex:none;font-size:.68rem;font-weight:700;color:var(--muted);background:#f1f5f9;
  border-radius:20px;padding:0 .35rem;min-width:20px;text-align:center}
.ck-head{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap;padding:.7rem .9rem}
.ck-search{padding:.4rem .7rem;border:1px solid var(--line2);border-radius:20px;font:inherit;
  font-size:.85rem;min-width:200px}
.ck-table{font-size:.85rem}
.ck-table td.r,.ck-table th.r{text-align:right;white-space:nowrap}
/* našeptávač zákazníka + modal nového zákazníka */
.zpick{position:relative;display:block}
.zpick-in{width:100%}
.zpick-res{position:absolute;z-index:60;left:0;right:0;top:calc(100% + 3px);background:#fff;
  border:1px solid var(--line2);border-radius:10px;box-shadow:0 12px 30px rgba(15,23,42,.18);
  padding:.25rem;max-height:280px;overflow:auto;display:block}
.zpick-res[hidden]{display:none}
.zpick-it{display:flex;flex-direction:column;gap:1px;width:100%;text-align:left;border:0;background:transparent;
  border-radius:7px;padding:.35rem .5rem;cursor:pointer;font:inherit}
.zpick-it:hover{background:#f1f5f9}
.zpick-name{font-weight:600;font-size:.88rem}
.zpick-new{border-top:1px solid var(--line);margin-top:.2rem;color:var(--accent);font-weight:700;font-size:.85rem}
/* rychlé založení (zákazník, kontakt) se otevírá i z formuláře v modalu (vrstva 1010) → nad něj */
.zmodal-back{position:fixed;inset:0;background:rgba(15,23,42,.5);backdrop-filter:blur(1px);z-index:1100}
.zmodal{position:fixed;left:50%;top:50%;transform:translate(-50%,-50%);z-index:1101;
  width:min(520px,94vw);max-height:88vh;background:#fff;border:1px solid var(--line2);border-radius:14px;
  box-shadow:0 25px 60px rgba(0,0,0,.45);display:flex;flex-direction:column;overflow:hidden}
.zmodal label{display:block;font-size:.8rem;font-weight:600;color:#475569;margin-bottom:.6rem}
.zmodal input{display:block;width:100%;margin-top:.2rem;padding:.5rem .6rem;
  border:1px solid var(--line2);border-radius:9px;font:inherit}
.zmodal .grid2{display:grid;grid-template-columns:1fr 1fr;gap:0 .7rem}
.zmodal-err{color:#b91c1c;min-height:1rem}

/* ===== Příležitosti (obchod / CRM) ===== */
.kb-board{display:flex;gap:.6rem;overflow-x:auto;align-items:stretch;padding-bottom:.2rem}
/* sloupec ve firemní barvě stavu (--st), jemné pozadí + výrazná hlavička */
.kb-col{flex:1 1 0;min-width:215px;border:1px solid color-mix(in srgb, var(--st, #94a3b8) 25%, var(--line));
  border-radius:11px;overflow:hidden;display:flex;flex-direction:column;min-height:0;
  background:color-mix(in srgb, var(--st, #94a3b8) 5%, #fff)}
.kb-col-head{padding:.45rem .6rem;flex:none;position:relative;display:grid;
  grid-template-columns:1fr auto;align-items:center;
  background:color-mix(in srgb, var(--st, #94a3b8) 12%, #fff);
  border-bottom:1px solid color-mix(in srgb, var(--st, #94a3b8) 22%, var(--line))}
.kb-col-name{font-weight:800;font-size:.72rem;letter-spacing:.05em;text-transform:uppercase;
  color:color-mix(in srgb, var(--st, #475569) 75%, #0f172a);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.kb-col-count{font-size:.7rem;font-weight:800;color:#475569;background:#fff;border-radius:20px;
  min-width:22px;height:20px;display:inline-grid;place-items:center;padding:0 .35rem;
  border:1px solid color-mix(in srgb, var(--st, #94a3b8) 25%, var(--line))}
.kb-col-sum{grid-column:1/-1;font-size:.66rem;color:var(--muted);margin-top:.1rem}
.kb-col-body{padding:.4rem;display:flex;flex-direction:column;gap:.4rem;flex:1;min-height:0;overflow-y:auto}
.kb-card{display:block;background:#fff;border:1px solid var(--line);border-left:3px solid var(--line2);
  border-radius:9px;padding:.5rem .6rem;color:inherit;box-shadow:var(--shadow)}
.kb-card:hover{border-color:var(--accent);border-left-color:var(--accent)}
.kb-card.over{border-left-color:var(--accent2)}
.kb-card-top{display:flex;justify-content:space-between;align-items:center}
.kb-cislo{font-size:.68rem;font-weight:800;color:var(--brand);background:#eef2f7;border-radius:5px;padding:.05rem .3rem}
.op-pct{font-size:.68rem;font-weight:800;color:var(--muted)}
.kb-name{font-weight:700;font-size:.85rem;line-height:1.2;margin:.25rem 0}
.kb-meta{display:flex;justify-content:space-between;align-items:baseline;gap:.4rem;font-size:.8rem}
.kb-akce{margin-top:.35rem;font-size:.7rem;font-weight:600;border-radius:6px;padding:.15rem .4rem;
  background:#f1f5f9;color:#475569;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.kb-akce--po_terminu,.kb-akce--chybi{background:#fee2e2;color:#b91c1c}
.kb-akce--dnes{background:#ffedd5;color:#9a3412}
.kb-akce--zitra{background:#dbeafe;color:#1e40af}
.kb-foot{display:flex;align-items:center;gap:.3rem;margin-top:.35rem}
.kb-stav{color:#fff;font-size:.7rem;font-weight:700;border-radius:20px;padding:.1rem .5rem;white-space:nowrap}
.kb-akce-in{font-size:.72rem;border-radius:6px;padding:.05rem .35rem}
/* můj plán */
.plan-bar{display:flex;align-items:center;gap:.4rem;flex-wrap:nowrap;overflow-x:auto;
  padding:.4rem .7rem;margin-bottom:.7rem;flex:none}
.plan-title{font-size:.82rem;white-space:nowrap;flex:none}
.plan-chip{position:relative}
.plan-chip{flex:none}
.plan-chip>summary{list-style:none;cursor:pointer;font-size:.73rem;font-weight:700;border-radius:20px;
  padding:.15rem .55rem;background:#f1f5f9;color:#475569;border:1px solid var(--line);white-space:nowrap}
.plan-chip>summary::-webkit-details-marker{display:none}
.plan-chip--over>summary{background:#fee2e2;color:#b91c1c;border-color:#fca5a5}
.plan-chip--dnes>summary{background:#ffedd5;color:#9a3412;border-color:#fed7aa}
.plan-chip--chibi>summary,.plan-chip--chybi>summary{background:#fef3c7;color:#92400e;border-color:#fde68a}
.plan-pop{position:absolute;z-index:40;top:calc(100% + .3rem);left:0;background:#fff;border:1px solid var(--line2);
  border-radius:10px;box-shadow:0 12px 30px rgba(15,23,42,.18);padding:.4rem;min-width:320px;max-height:50vh;overflow:auto}
.plan-it{display:block;padding:.3rem .45rem;border-radius:7px;color:inherit}
.plan-it:hover{background:#f1f5f9}
.plan-it-name{display:block;font-weight:600;font-size:.82rem}
/* stage bar */
.stagebar{display:flex;gap:.3rem;flex-wrap:wrap;padding:.6rem .7rem}
.stage-form{flex:1;min-width:110px;display:flex}
.stage{flex:1;border:1px solid var(--line2);background:#fff;border-radius:8px;padding:.35rem .4rem;
  font:inherit;font-size:.74rem;font-weight:700;color:#475569;cursor:pointer;line-height:1.2}
.stage i{display:block;font-style:normal;font-size:.64rem;font-weight:600;opacity:.75}
.stage:hover{border-color:var(--accent);color:var(--accent)}
.stage.done{background:#f1f5f9;color:#94a3b8}
/* focus box – další krok */
.focusbox{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap;
  border-left:4px solid var(--info)}
.focusbox.chibi,.focusbox.chybi{border-left-color:var(--warn);background:#fffbeb}
.focusbox.over{border-left-color:var(--accent2);background:#fef2f2}
.focus-main{display:flex;align-items:center;gap:.7rem}
.focus-ico{font-size:1.4rem}
.focus-act{display:flex;align-items:center;gap:.4rem;flex-wrap:wrap}
.focus-new{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;width:100%}
.focus-new input[name=popis]{flex:1;min-width:180px}
.focus-new select,.focus-new input{padding:.35rem .5rem;border:1px solid var(--line2);border-radius:8px;font:inherit;font-size:.85rem}
.duvod-box.vyhra{border-left:4px solid var(--ok);background:#f0fdf4}
.duvod-box.prohra{border-left:4px solid var(--accent2);background:#fef2f2}
/* tým + timeline v detailu */
.op-tym{display:flex;gap:.8rem;flex-wrap:wrap}
.op-tym-it{flex:1;min-width:120px;background:#f8fafc;border:1px solid var(--line);border-radius:9px;padding:.4rem .55rem}
.op-tym-it>div{display:flex;align-items:center;gap:.35rem;font-size:.85rem;font-weight:600;margin-top:.15rem}
.kb-akce-hist{display:flex;gap:.5rem;padding:.35rem 0;border-bottom:1px solid var(--line)}
.kb-akce-hist:last-child{border-bottom:0}

/* ===== Rozpočty / cenové nabídky ===== */
/* Dlaždice nabídky = rekapitulace jako v PDF: sekce vlevo, souhrn vpravo. */
.rozp-card{margin-bottom:.7rem;padding:.75rem .9rem}
.rozp-card--schvalena{border-color:#bbf7d0;box-shadow:inset 3px 0 0 #16a34a}
.rozp-card-h{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;margin-bottom:.5rem}
.rozp-card-name{font-weight:800;color:var(--brand);font-size:1.02rem;text-decoration:none}
.rozp-card-name:hover{text-decoration:underline}
.rozp-card-otevrit{margin-left:auto;flex:none}
.rozp-platnost{font-size:.72rem;color:var(--muted)}
.rozp-card-popis{margin:0 0 .5rem;font-size:.8rem;color:var(--muted);
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}

.rozp-card-telo{display:grid;grid-template-columns:minmax(0,1fr) 250px;gap:1rem;align-items:start}
@media(max-width:820px){.rozp-card-telo{grid-template-columns:1fr}}

.rozp-rekap{display:flex;flex-direction:column;gap:1px;min-width:0}
.rozp-rekap-r{display:flex;justify-content:space-between;gap:.7rem;align-items:baseline;
  font-size:.82rem;padding:.18rem .35rem;border-radius:5px}
.rozp-rekap-r:nth-child(odd){background:var(--bg2,#f8fafc)}
.rozp-rekap-r>span:first-child{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rozp-rekap-r i{font-style:normal;font-size:.7rem;font-weight:700;color:var(--muted);
  background:#eef2f7;border-radius:4px;padding:0 .25rem}
.rozp-rekap-r em{font-style:normal;font-size:.7rem;color:var(--muted)}
.rozp-rekap-kc{flex:none;font-variant-numeric:tabular-nums}

.rozp-souhrn{border-left:1px solid var(--line);padding-left:.9rem;display:flex;flex-direction:column;gap:.15rem}
@media(max-width:820px){.rozp-souhrn{border-left:0;border-top:1px solid var(--line);
  padding:.6rem 0 0;margin-top:.3rem}}
.rozp-souhrn-r{display:flex;justify-content:space-between;gap:.6rem;align-items:baseline;
  font-size:.82rem;font-variant-numeric:tabular-nums}
.rozp-souhrn-celkem{border-top:1px solid var(--line);padding-top:.25rem;margin-top:.15rem;font-size:.95rem}
.rozp-souhrn-celkem strong{font-size:1.05rem}
.rozp-souhrn-marze{margin-top:.3rem}
.rozp-cerp{margin-top:.5rem;color:var(--muted)}
.rozp-cerp-pruh{height:5px;border-radius:99px;background:var(--line);overflow:hidden;margin-bottom:.2rem}
.rozp-cerp-pruh>i{display:block;height:100%;background:#16a34a}
.rozp-sekce{padding:0;overflow:hidden}
.rozp-cast{display:flex;align-items:baseline;gap:.8rem;flex-wrap:wrap;margin:1.4rem 0 .5rem;
  padding-bottom:.35rem;border-bottom:2px solid var(--line2)}
.rozp-cast h2{margin:0;font-size:1.1rem}
.rozp-cast-soucet{font-weight:600;color:var(--muted)}
.rozp-cast .rowedit{margin-left:auto}
.listy-vyber{display:grid;gap:.4rem;margin:.6rem 0 1rem}
.listy-vyber label{display:flex;align-items:center;gap:.6rem;padding:.55rem .7rem;border:1px solid var(--line);
  border-radius:9px;cursor:pointer}
.listy-vyber label:has(input:checked){border-color:var(--brand);background:rgba(27,42,85,.05)}
.listy-vyber .lv-nazev{font-weight:600;flex:1}
.listy-vyber .lv-info{white-space:nowrap}
.rozp-sekce-head{display:flex;align-items:center;justify-content:space-between;gap:.6rem;flex-wrap:wrap;
  padding:.6rem .8rem;background:#f8fafc;border-bottom:1px solid var(--line)}
.rozp-sekce-title{display:flex;align-items:baseline;gap:.7rem;flex-wrap:wrap}
.rozp-sekce-act{display:flex;align-items:center;gap:.25rem;flex:none}
.rozp-table{font-size:.84rem}
.rozp-table td.r,.rozp-table th.r{text-align:right;white-space:nowrap}
.rozp-sek-row td{background:#eef2f7;font-size:.82rem}
.cerp-in{width:90px;text-align:right;padding:.25rem .4rem;border:1px solid var(--line2);border-radius:7px;font:inherit}
.cerp-in:focus{outline:2px solid var(--accent);border-color:var(--accent)}

/* ===== Průběh zakázky – milníky jako úkoly s podúkoly ===== */
.sec-bar{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap;
  margin-bottom:.6rem}
.sec-bar .ov-prog{margin-top:0;flex:1}
.mlist{padding:0;overflow:hidden}
.mgroup{border-bottom:1px solid var(--line)}
.mgroup:last-child{border-bottom:0}
.mrow{display:flex;align-items:center;gap:.5rem;padding:.4rem .7rem;min-height:40px}
.mrow:hover{background:#f8fafc}
.mgroup.hotovo .mrow{background:#f6fef9}
.mgroup.over .mrow{background:#fff8f8}
.mgroup.vypnuto{opacity:.55}
.mrow-tog{flex:none;width:20px;height:20px;border:0;background:transparent;color:var(--muted);
  cursor:pointer;font-size:.7rem;border-radius:5px;transition:transform .12s}
.mrow-tog:hover{background:#e2e8f0}
.mrow-tog.prazdny{opacity:.25}
.mgroup.open .mrow-tog{transform:rotate(90deg);color:var(--accent)}
.mrow-name{flex:1;min-width:0;font-weight:600;font-size:.9rem;color:inherit;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mrow-name:hover{color:var(--accent)}
.mgroup.hotovo .mrow-name{color:var(--muted);text-decoration:line-through}
.mrow-kat{flex:none;font-size:.66rem;font-weight:700;color:#475569;background:#f1f5f9;
  border-radius:5px;padding:.05rem .35rem}
.mrow-sub{flex:none;font-size:.7rem;font-weight:700;color:#166534;background:#dcfce7;
  border-radius:20px;padding:.05rem .4rem}
.mrow-sub.open{color:#92400e;background:#fef3c7}
.mrow-ico{flex:none;font-size:.7rem;color:var(--muted)}
.mrow-date{flex:none;width:66px;text-align:right;font-size:.74rem;color:var(--muted);white-space:nowrap}
.mrow-date.over{color:#b91c1c;font-weight:700}
/* podúkoly milníku */
.msub{display:none;padding:.1rem .7rem .5rem 2.5rem;background:#fcfdff}
.mgroup.open .msub{display:block}
.msub-row{display:flex;align-items:center;gap:.5rem;padding:.22rem 0}
.msub-name{flex:1;min-width:0;font-size:.85rem;color:inherit;overflow:hidden;
  text-overflow:ellipsis;white-space:nowrap}
.msub-name:hover{color:var(--accent)}
.msub-name.strike{text-decoration:line-through;color:var(--muted)}
.msub-add{margin-top:.25rem}
.msub-add>summary{font-size:.74rem;padding:.15rem .5rem}
.check.sm{width:16px;height:16px;font-size:.62rem}

/* ===== Průběh – dlaždice milníků ===== */
.sekce-label{font-size:.72rem;font-weight:800;letter-spacing:.06em;color:var(--muted);
  text-transform:uppercase;margin:.8rem 0 .4rem}
.mil-tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:.7rem;margin-bottom:.4rem}
.mtile{background:#fff;border:1px solid var(--line);border-left:4px solid var(--line2);border-radius:11px;
  padding:.7rem .8rem;box-shadow:var(--shadow)}
.mtile--hotovo{border-left-color:var(--ok);background:#f6fef9}
.mtile--probiha{border-left-color:var(--info)}
.mtile--neresi-se{border-left-color:#cbd5e1;opacity:.7}
.mtile.over{border-left-color:var(--warn)}
.mtile-top{display:flex;justify-content:space-between;align-items:flex-start;gap:.5rem}
.mtile-name{font-weight:700;line-height:1.25}
.mtile-date{font-size:.74rem;font-weight:700;color:#475569;background:#f1f5f9;border-radius:20px;padding:.05rem .5rem;white-space:nowrap}
.mtile-date.over{background:#fee2e2;color:#b91c1c}
.mtile-popis{font-size:.84rem;color:#475569;margin:.35rem 0;white-space:pre-wrap}
.mtile-meta{display:flex;align-items:center;gap:.4rem;flex-wrap:wrap;margin:.4rem 0}
.mtile-who{font-size:.82rem;font-weight:600}
.mtile-badge{font-size:.72rem;background:#dcfce7;color:#166534;border-radius:20px;padding:.05rem .5rem;font-weight:700}
.mtile-badge.open{background:#fef3c7;color:#92400e}
.mtile-badge.done{background:#dcfce7;color:#166534}
.mtile-badge.muted{background:#f1f5f9;color:#64748b}
.mtile-tasks{border-top:1px dashed var(--line);margin-top:.3rem;padding-top:.3rem;display:flex;flex-direction:column;gap:.05rem}
.mtt{display:flex;align-items:center;gap:.45rem;padding:.2rem .1rem;font-size:.86rem;border-radius:6px;color:inherit}
.mtt:hover{background:#f8fafc}
.mtt-check{width:16px;height:16px;border:2px solid var(--line2);border-radius:5px;display:inline-grid;place-items:center;font-size:.7rem;color:#fff;flex:none}
.mtt-check.done{background:var(--ok);border-color:var(--ok)}
.mtt-name{flex:1}
.mtt-name.strike{text-decoration:line-through;color:var(--muted)}
.mtt-sub{font-size:.72rem;color:var(--muted)}
.mtile-actions{display:flex;align-items:center;gap:.4rem;flex-wrap:wrap;margin-top:.5rem;padding-top:.45rem;border-top:1px solid var(--line)}
.mtile-open{margin-left:auto;font-size:.8rem;font-weight:700;color:var(--brand);white-space:nowrap}
.mtile-open:hover{text-decoration:underline}

/* ===== Montážní skupiny ===== */
.grp-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:.6rem;margin-bottom:1rem}
.grp-card{display:flex;align-items:center;gap:.6rem;background:#fff;border:1px solid var(--line);
  border-radius:11px;padding:.6rem .8rem;box-shadow:var(--shadow);color:inherit}
.grp-card:hover{box-shadow:0 6px 16px rgba(15,23,42,.1)}
.grp-card.sub{margin-left:1.4rem;border-left:3px solid var(--line2)}
.grp-dot{width:14px;height:14px;border-radius:50%;flex:none;display:inline-block}
.grp-main{flex:1;min-width:0}
.grp-name{font-weight:700}
.grp-sub{font-size:.78rem;color:var(--muted)}
.grp-stats{display:flex;gap:.6rem;font-size:.8rem;color:var(--muted);white-space:nowrap}
/* ---- časová osa obsazení part ------------------------------------------
   Popisky týdnů i pruhy se umisťují v procentech, takže rodič MUSÍ mít
   position:relative — bez toho se popisky neumístí, slijí se do jedné
   řádky vlevo a plocha zůstane prázdná. */
.tl-wrap{padding:.8rem}
.tl-scroll{overflow-x:auto;overscroll-behavior-x:contain}
.tl{min-width:640px}
.tl-axis{position:relative;height:22px;margin-bottom:.4rem;
  border-bottom:1px solid var(--line)}
.tl-tick{position:absolute;top:0;font-size:.68rem;color:var(--muted);
  white-space:nowrap;transform:translateX(-50%);padding-bottom:3px}
.tl-tick::after{content:"";position:absolute;left:50%;top:100%;width:1px;height:5px;
  background:var(--line2)}
.tl-row{display:flex;align-items:stretch;gap:.5rem;margin-bottom:.35rem}
.tl-label{flex:none;color:inherit;font-size:.8rem;overflow:hidden}
.tl-label.grp{width:210px;display:flex;align-items:center;gap:.4rem}
.grp-dot{flex:none;width:.6rem;height:.6rem;border-radius:50%}
.grp-lab-txt{flex:1;min-width:0;display:flex;flex-direction:column;line-height:1.15}
.grp-lab-txt small{color:var(--muted);font-size:.7rem}
.vyt{flex:none;font-size:.68rem;font-weight:700;color:#475569;background:#eef2f7;
  border-radius:20px;padding:.05rem .4rem}
/* Dráha s týdenním rastrem, ať je poznat, kam pruh sahá. */
.tl-track{position:relative;flex:1;min-width:0;height:30px;border-radius:7px;
  background:#f1f5f9;
  background-image:repeating-linear-gradient(to right,
    transparent 0, transparent calc(10% - 1px), #e2e8f0 calc(10% - 1px), #e2e8f0 10%)}
.tl-bar{position:absolute;top:4px;bottom:4px;border-radius:5px;overflow:hidden;
  display:flex;align-items:center;padding:0 .35rem;min-width:6px;
  box-shadow:0 1px 2px rgba(15,23,42,.18)}
.tl-bar-txt{font-size:.68rem;font-weight:700;color:#fff;white-space:nowrap;
  overflow:hidden;text-overflow:ellipsis;text-shadow:0 1px 2px rgba(0,0,0,.35)}
.tl-today{position:absolute;top:0;bottom:0;width:2px;background:var(--accent);z-index:2}
.tl-today.thin{opacity:.45}
.tl-axis--grp{margin-left:calc(210px + .5rem)}
@media(max-width:820px){
  .tl-label.grp{width:130px}
  .tl-axis--grp{margin-left:calc(130px + .5rem)}
  .grp-lab-txt small{display:none}
}
.grp-lab-txt{display:flex;flex-direction:column;min-width:0;flex:1}
.grp-lab-txt strong{font-size:.82rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.grp-lab-txt small{color:var(--muted);font-size:.68rem}
.vyt{font-size:.7rem;font-weight:800;color:#475569;background:#f1f5f9;border-radius:20px;padding:.05rem .4rem}
.nas-row{display:flex;align-items:center;gap:.6rem;padding:.45rem .2rem;border-bottom:1px solid var(--line)}
.nas-row:last-child{border-bottom:0}
.nas-name{font-weight:600;flex:1}
.nas-date{font-size:.82rem;color:var(--muted);white-space:nowrap}
.kal{width:100%;border-collapse:collapse;font-size:.82rem}
.kal th{padding:.4rem;color:var(--muted);font-size:.72rem;text-transform:uppercase}
.kal td{border:1px solid var(--line);height:46px;vertical-align:top;padding:.25rem .35rem;color:#94a3b8;width:14.2%}
.kal td.occ{background:#e0ecff;background:color-mix(in srgb, var(--g) 22%, #fff);
  border-color:var(--g);font-weight:700;color:#1e293b}
.kal td.kday-today{outline:2px solid var(--accent);outline-offset:-2px}

/* ===== Agenda – položky (mix milník/úkol/podúkol) ===== */
.abucket{margin-bottom:1.3rem}
.abucket-h{font-size:.95rem;color:var(--muted);font-weight:800;letter-spacing:.02em;margin:0 0 .55rem;
  display:flex;align-items:center;gap:.5rem}
.abucket--po .abucket-h{color:var(--warn)}
.abucket--dnes .abucket-h{color:var(--accent)}
.aitem{display:flex;align-items:center;gap:.6rem;padding:.6rem .85rem;background:#fff;border:1px solid var(--line);
  border-left:4px solid transparent;border-radius:10px;margin-bottom:.45rem;box-shadow:var(--shadow);color:inherit}
.aitem:hover{box-shadow:0 5px 14px rgba(15,23,42,.1)}

/* agenda dashboard – 2 sloupce */
@media(max-width:980px){.agenda-2col{grid-template-columns:1fr}}
.wg-h{font-size:.92rem;margin:0 0 .7rem}
.ag-kpi{flex:1;background:#fff;border:1px solid var(--line);border-radius:11px;padding:.7rem .4rem;
  text-align:center;box-shadow:var(--shadow)}
.minical{width:100%;border-collapse:collapse}
.minical th{font-size:.64rem;color:var(--muted);padding:.2rem 0;font-weight:700}
.minical td{text-align:center;padding:.12rem 0;overflow:visible}
.mc-day{width:32px;height:32px;display:inline-grid;place-items:center;border-radius:9px;
  font-size:.82rem;position:relative;color:#334155}
.mc-day.out{color:#cbd5e1}
.mc-day.has{background:#eef2fb;cursor:pointer;font-weight:700}
.mc-day.has:hover{background:#dde6f7}
.mc-day.has.over{background:#fee2e2;color:#b91c1c}
.mc-day.today{outline:2px solid var(--brand);font-weight:800}
.mc-day.today.has{background:var(--brand);color:#fff;outline:none}
.mc-n{position:absolute;top:-6px;right:-6px;background:var(--accent);color:#fff;font-size:.6rem;
  min-width:16px;height:16px;border-radius:8px;display:grid;place-items:center;padding:0 3px;
  font-weight:700;box-shadow:0 0 0 1.5px #fff}

/* našeptávač hledání zakázek */
.search-pop{position:absolute;z-index:90;background:#fff;border:1px solid var(--line2);border-radius:10px;
  box-shadow:0 12px 30px rgba(15,23,42,.2);overflow:hidden}
.search-pop[hidden]{display:none}
.sp-it{display:flex;align-items:center;gap:.5rem;padding:.5rem .7rem;cursor:pointer}
.sp-it:hover,.sp-it.on{background:#f1f5f9}
.sp-num{color:var(--muted);font-size:.78rem;flex:none}
.sp-ico{flex:none;font-size:.95rem}
.sp-name{flex:1;font-weight:600;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink)}
.sp-sub{flex:none;max-width:45%;color:var(--muted);font-size:.74rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.nav-badge{margin-left:auto;background:var(--accent);color:#fff;font-size:.68rem;font-weight:800;
  min-width:18px;height:18px;border-radius:20px;padding:0 .3rem;display:inline-grid;place-items:center}
.nav-collapsed .side a .nav-badge{position:absolute;top:2px;right:4px;margin:0}
/* sekce v menu */
.nav-sec{font-size:.6rem;font-weight:800;letter-spacing:.09em;text-transform:uppercase;
  color:var(--muted);padding:.5rem .55rem .18rem;margin-top:.25rem;border-top:1px solid var(--line)}
.nav-sec:first-of-type{margin-top:.15rem}
.nav-collapsed .side .nav-sec{font-size:0;padding:.5rem 0 .3rem;margin:0 .5rem}
/* audit log */
.audit-table{font-size:.82rem}
.audit-table td{vertical-align:top}
.audit-akce{background:#f1f5f9;padding:.05rem .35rem;border-radius:5px;font-size:.74rem;color:#334155;white-space:nowrap}
.audit-detail{max-width:440px;overflow:hidden;text-overflow:ellipsis}
.audit-fail{background:#fef2f2}
.audit-fail .audit-akce{background:#fee2e2;color:#b91c1c}
.pager{display:flex;align-items:center;gap:.9rem;margin-top:.7rem;justify-content:center}

/* popover dne v kalendáři */
.day-pop{position:absolute;z-index:90;background:#fff;border:1px solid var(--line2);border-radius:11px;
  box-shadow:0 12px 30px rgba(15,23,42,.22);min-width:220px;max-width:290px;padding:.55rem;
  display:flex;flex-direction:column;gap:.3rem}
.day-pop[hidden]{display:none}
.dp-h{font-weight:800;font-size:.74rem;color:var(--muted);margin:.1rem .25rem .2rem;letter-spacing:.03em}
.dp-item{display:flex;align-items:center;gap:.5rem;padding:.5rem .5rem;border-radius:8px;color:inherit;
  border-left:3px solid transparent;background:#f8fafc}
.dp-item:hover{background:#f1f5f9}
.dp-item.aitem--milnik{border-left-color:#a21caf}
.dp-item.aitem--ukol{border-left-color:#2563eb}
.dp-item.aitem--podukol{border-left-color:#0d9488}
.dp-kind{font-size:.58rem;font-weight:800;width:56px;flex:none;color:var(--muted)}
.dp-name{font-size:.85rem;font-weight:600}
.ag-proj{display:flex;align-items:center;gap:.5rem;padding:.45rem 0;border-bottom:1px solid var(--line);color:inherit}
.ag-proj:last-child{border-bottom:0}
.ag-proj .apn{flex:1;font-weight:600;font-size:.86rem;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.aitem--milnik{border-left-color:#a21caf}
.aitem--ukol{border-left-color:#2563eb}
.aitem--podukol{border-left-color:#0d9488}
.aitem.over{border-left-color:var(--warn)}
.aitem-kind{font-size:.6rem;font-weight:800;letter-spacing:.04em;width:64px;flex:none;color:var(--muted)}
.aitem--milnik .aitem-kind{color:#a21caf}.aitem--ukol .aitem-kind{color:#2563eb}.aitem--podukol .aitem-kind{color:#0d9488}
.aitem--dalsi_krok{border-left-color:var(--accent)}
.aitem--dalsi_krok .aitem-kind{color:var(--accent)}

/* widget vpravo v agendě: reklamace a servisy (kontejnery, ne položky košů) */
.wg-warn{font-size:.68rem;font-weight:700;background:#fee2e2;color:#991b1b;
  border-radius:20px;padding:.05rem .45rem;margin-left:.3rem}
.ag-sv{width:100%;border-collapse:collapse;font-size:.82rem}
.ag-sv td{padding:.45rem .3rem;border-bottom:1px solid #f1f5f9;vertical-align:top}
.ag-sv tr:last-child td{border-bottom:0}
.ag-sv tr.over{background:#fff7f7}
.ag-sv-c{width:64px}
.ag-sv-cislo{font-weight:800;font-size:.74rem;border-radius:5px;padding:.1rem .3rem;
  display:inline-block;color:#fff;text-decoration:none}
.ag-sv-cislo.rekl{background:#ef4444}
.ag-sv-cislo.serv{background:#06b6d4}
.ag-sv-n a{font-weight:600;color:inherit;text-decoration:none}
.ag-sv-n a:hover{color:var(--brand)}
.ag-sv-t{width:82px;text-align:right;white-space:nowrap;font-size:.76rem;color:var(--muted)}
.ag-sv-t .over{color:#dc2626;font-weight:700}
.ag-sv-t .dnes{color:#b45309;font-weight:700}
.ag-sv-t .badge{margin-top:.2rem}
.dp-item.aitem--dalsi_krok{border-left-color:var(--accent)}
/* označili mě v komunikaci */
.zmin-list{display:flex;flex-direction:column;gap:.35rem;max-height:300px;overflow-y:auto}
.zmin{display:block;padding:.4rem .5rem;border:1px solid var(--line);border-left:3px solid #f59e0b;
  border-radius:8px;background:#fffbeb;color:inherit}
.zmin:hover{border-color:var(--accent);border-left-color:#f59e0b}
.zmin-top{display:flex;justify-content:space-between;gap:.5rem;font-size:.8rem}
.zmin-kde{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.zmin-text{font-size:.82rem;color:#334155;margin-top:.15rem}
.aitem-name{font-weight:600;flex:1;min-width:120px}
.aitem-ctx{font-size:.78rem;color:var(--muted);max-width:28%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.more-wrap{margin-top:.5rem}
.more-wrap>summary{cursor:pointer;color:var(--accent);font-weight:700;font-size:.85rem;padding:.35rem 0;list-style:none}
.more-wrap>summary::-webkit-details-marker{display:none}
.sect--tyden{border-left:4px solid var(--info)}
.sect--pristi{border-left:4px solid #0d9488}
@media(max-width:820px){.aitem{flex-wrap:wrap}.aitem-ctx{max-width:100%;order:5;width:100%}}

/* ===== Detail (Asana stacked) ===== */
.detail{max-width:860px}
.crumbs{display:flex;align-items:center;gap:.4rem;flex-wrap:wrap;font-size:.82rem;color:var(--muted);margin-bottom:.3rem}
.crumbs a{color:var(--info)}
.crumbs .sep{color:var(--line2)}
.kindchip{font-size:.62rem;font-weight:800;letter-spacing:.05em;padding:.1rem .45rem;border-radius:6px;color:#fff}
.kindchip--milnik{background:#a21caf}.kindchip--ukol{background:#2563eb}.kindchip--podukol{background:#0d9488}
.detail-title{margin:.1rem 0 .5rem}
.detail-meta{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;margin-bottom:.25rem}
.mchip{display:inline-flex;align-items:center;gap:.3rem;font-size:.82rem;background:#f1f5f9;border-radius:20px;padding:.15rem .6rem}
.detail-sec h2{font-size:1rem;display:flex;align-items:center;gap:.5rem}
.subt{display:flex;align-items:center;gap:.5rem;padding:.4rem .1rem;border-bottom:1px solid var(--line)}
.subt:last-of-type{border-bottom:0}
.subt-name{flex:1;font-weight:600;color:inherit}
.subt-name:hover{color:var(--accent)}
.subt-name.strike{text-decoration:line-through;color:var(--muted)}

/* ===== Detail modal (vyskakovací okno) ===== */
.dmodal{position:fixed;inset:0;z-index:80;display:flex;align-items:flex-start;justify-content:center;padding:3.5vh 1rem}
.dmodal[hidden]{display:none}
.dmodal-back{position:absolute;inset:0;background:rgba(15,23,42,.55);backdrop-filter:blur(1px)}
.dmodal-panel{position:relative;z-index:1;background:var(--bg);border-radius:16px;width:100%;max-width:760px;
  max-height:90vh;overflow:hidden;box-shadow:0 25px 60px rgba(0,0,0,.45);display:flex;flex-direction:column}
.dmodal-x{position:absolute;top:.6rem;right:.7rem;border:1px solid var(--line);background:#fff;
  width:34px;height:34px;border-radius:50%;cursor:pointer;font-size:.95rem;z-index:3;color:var(--muted)}
.dmodal-x:hover{background:#fee2e2;color:#b91c1c}
.dmodal-load{padding:3rem;text-align:center;color:var(--muted)}
.dmodal-body{flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden}
.dmodal .detail{max-width:none;display:flex;flex-direction:column;flex:1;min-height:0}
.dmodal .detail-head{padding:1.1rem 3rem .6rem 1.3rem;margin:0;border-bottom:1px solid var(--line);background:#fff;flex:none}
.dmodal .detail-body{flex:1;overflow-y:auto;min-height:0;padding:.55rem 1.3rem 1rem;background:var(--bg)}
.dmodal .detail-foot{flex:none;margin:0;padding:.9rem 1.3rem;border-top:1px solid var(--line);background:#fff}
.dmodal .back{display:none}

/* detail – hlavička / patička (platí i na plné stránce) */
.detail-head{margin-bottom:1rem}
.dh-row{display:flex;align-items:flex-start;gap:.8rem;justify-content:space-between}
.dh-row .detail-title{margin:.1rem 0 .5rem;flex:1;min-width:0}
.dh-assignee{display:inline-flex;align-items:center;gap:.35rem;font-size:.85rem;font-weight:600;
  background:#f1f5f9;border-radius:20px;padding:.18rem .65rem .18rem .25rem;white-space:nowrap;flex:none}
.detail-foot{display:flex;gap:.6rem;align-items:center;margin-top:1rem;padding-top:1rem;border-top:1px solid var(--line)}
.detail-edit[hidden]{display:none}

/* klikatelný stav badge */
.stavpick{position:relative;display:inline-block}
.stavpick-btn,.stavpick-opt{border:0;cursor:pointer;font:inherit}
.stavpick-btn i{font-style:normal;font-size:.72em;opacity:.7;margin-left:1px}
.stavpick-menu{position:absolute;top:calc(100% + 5px);left:0;z-index:30;background:#fff;border:1px solid var(--line2);
  border-radius:10px;box-shadow:0 10px 26px rgba(15,23,42,.2);padding:.35rem;display:flex;flex-direction:column;
  gap:.28rem;min-width:165px}
.stavpick-menu[hidden]{display:none}
.stavpick-opt{text-align:center}
.stavpick-opt:hover{box-shadow:0 0 0 2px var(--line2)}

/* inline editace polí */
.edit-title{flex:1;min-width:0;font-size:1.5rem;font-weight:800;border:1px solid transparent;border-radius:8px;
  padding:.15rem .4rem;margin:.05rem 0;color:var(--ink);background:transparent;font-family:inherit}
.edit-title:hover{background:#f1f5f9}
.edit-title:focus{outline:none;background:#fff;border-color:var(--accent)}
.dh-row{align-items:center}
.inline-pick{display:inline-flex;align-items:center;gap:.3rem;background:#f1f5f9;border-radius:20px;padding:.12rem .35rem;flex:none}
.inline-sel{border:1px solid var(--line);background:#f1f5f9;border-radius:20px;padding:.22rem .55rem;font:inherit;
  font-size:.82rem;font-weight:600;color:#334155;cursor:pointer;max-width:175px}
.inline-pick .inline-sel{background:transparent;border:0;padding:.1rem .15rem;max-width:150px}
.inline-sel:focus{outline:2px solid var(--accent)}
.inline-date{display:inline-flex;align-items:center;gap:.25rem;background:#f1f5f9;border-radius:20px;padding:.12rem .5rem;
  font-size:.72rem;color:var(--muted)}
.inline-date input{border:0;background:transparent;font:inherit;font-size:.78rem;color:var(--ink);cursor:pointer}
.daterange{position:relative;display:inline-block}
.daterange-btn{border:0;cursor:pointer;font:inherit;font-weight:600;color:#334155}
.daterange-pop{position:absolute;top:calc(100% + 5px);left:0;z-index:30;background:#fff;border:1px solid var(--line2);
  border-radius:10px;box-shadow:0 10px 26px rgba(15,23,42,.2);padding:.6rem;display:flex;flex-direction:column;
  gap:.45rem;min-width:180px}
.daterange-pop[hidden]{display:none}
.daterange-pop label{display:flex;align-items:center;justify-content:space-between;gap:.6rem;font-size:.78rem;
  font-weight:700;color:#475569}
.daterange-pop input{border:1px solid var(--line2);border-radius:7px;padding:.25rem .4rem;font:inherit}
.detail-meta{gap:.5rem .55rem}

/* popis s formátováním */
.rt{border:1px solid var(--line);border-radius:10px;overflow:hidden}
.rt-toolbar{display:flex;gap:.25rem;padding:.3rem .4rem;background:#f8fafc;border-bottom:1px solid var(--line)}
.rt-toolbar button{border:1px solid var(--line);background:#fff;border-radius:6px;cursor:pointer;font-size:.8rem;
  padding:.12rem .45rem;min-width:28px;color:#334155}
.rt-toolbar button:hover{background:#eef2f7}
.popis-edit{min-height:72px;padding:.6rem .7rem;font-size:.92rem;line-height:1.45;outline:none;white-space:pre-wrap}
.popis-edit:empty:before{content:attr(data-ph);color:var(--muted)}
.popis-edit ul,.popis-edit ol{margin:.2rem 0 .2rem 1.2rem;white-space:normal}
.foot-hint{margin-right:auto}
.foot-hint.ok{color:var(--ok);font-weight:700}
@media(max-width:820px){
  .dmodal{padding:0}
  .dmodal-panel{max-width:none;max-height:100vh;border-radius:0;min-height:100vh}
}

/* ===== @zmínky našeptávač ===== */
.mention-pop{position:absolute;z-index:200;background:#fff;border:1px solid var(--line2);
  border-radius:10px;box-shadow:0 10px 26px rgba(15,23,42,.2);overflow:hidden;max-width:280px}
.mention-pop[hidden]{display:none}
.mp-it{padding:.45rem .7rem;cursor:pointer;font-size:.88rem;font-weight:600;color:#334155}
.mp-it:hover,.mp-it.on{background:#fff7ed;color:var(--accent)}

/* ===== jednorázový hint ===== */
.hint-once{display:flex;align-items:center;gap:.6rem;background:#eff6ff;border:1px solid #bfdbfe;
  color:#1e40af;border-radius:10px;padding:.55rem .8rem;margin-bottom:1rem;font-size:.86rem}
.hint-once[hidden]{display:none}
.hint-x{margin-left:auto;border:0;background:none;cursor:pointer;color:#1e40af;font-size:1rem;flex:none}

/* ===== push banner ===== */
.push-enable{display:flex;align-items:center;gap:.7rem;background:#fff7ed;border:1px solid #fed7aa;
  color:#9a3412;border-radius:10px;padding:.6rem .8rem;margin-bottom:1rem;font-size:.88rem}
.push-enable[hidden]{display:none}
.push-enable .btn{margin-left:auto;flex:none}

/* ===== PWA install hint (mobil) ===== */
.pwa-install{position:fixed;left:.6rem;right:.6rem;bottom:4.3rem;z-index:70;display:flex;align-items:center;
  gap:.6rem;background:var(--brand);color:#fff;border-radius:12px;padding:.7rem .9rem;box-shadow:0 12px 30px rgba(0,0,0,.35)}
.pwi-txt{flex:1;display:flex;flex-direction:column;font-size:.82rem;line-height:1.3;min-width:0}
.pwi-txt b{font-size:.9rem}
.pwi-txt span{color:#cbd5e1}
.pwi-x{background:transparent;border:0;color:#cbd5e1;font-size:1rem;cursor:pointer;flex:none;padding:.2rem}
.pwa-install .btn{flex:none}

/* ===== mobilní úpravy ===== */
.zak-mobile{display:none}
.zak-row{display:flex;align-items:center;gap:.7rem;background:#fff;border:1px solid var(--line);
  border-radius:10px;padding:.7rem .85rem;margin-bottom:.5rem;box-shadow:var(--shadow);color:inherit}
.zak-row .zr-num{color:var(--muted);font-size:.78rem;flex:none}
.zak-row .zr-name{font-weight:700;flex:1;min-width:0}
@media(max-width:820px){
  .zak-desktop{display:none}
  .zak-mobile{display:block}
  /* Kanban se na telefonu ukazuje, když je vybraný – a tehdy se místo něj
     schová jednoduchý seznam. Dřív se kreslily obě věci pod sebou: pravidlo
     .zak-desktop:has(.kb-board) je specifičtější než .zak-desktop{display:none}
     a mediální dotaz na specificitě nic nemění, takže výše uvedené skrytí
     neplatilo a seznam nad kanbanem ukrajoval půl displeje.
     Přepínač pohledů proto musí zůstat dostupný, jinak se ke kanbanu
     na telefonu nedá dostat. */
  .content:has(.kb-board) .zak-mobile{display:none}
  .zakazky-toolbar .btn-export{display:none}
  /* Přepínač jen ikonami – s celými slovy se lišta zalomí na druhý řádek
     a ukrojí kanbanu skoro 40 px výšky. */
  .toggle .lbl{display:none}
  .toggle a{padding:.4rem .6rem}
  .npage{border:0;background:transparent;box-shadow:none;padding:0}
  .npage .nrow{border:1px solid var(--line);border-radius:10px;margin-bottom:.45rem;background:#fff}
  .npage .nrow.unread{background:#fff7ed}
  .npage .nact{display:none}
}

/* ===== Outlook doplněk v profilu ===== */
.ol-box{display:flex;flex-direction:column;gap:.9rem;background:#f8fafc;
  border:1px solid var(--line2);border-radius:10px;padding:.9rem;margin-top:.6rem}
.ol-krok{display:flex;gap:.7rem;align-items:flex-start}
.ol-krok>div{flex:1;min-width:0}
.ol-krok p{margin:.2rem 0 0}
.ol-c{flex:none;width:22px;height:22px;border-radius:50%;background:var(--brand);color:#fff;
  font-size:.75rem;font-weight:800;display:flex;align-items:center;justify-content:center;margin-top:.1rem}
.ol-token{display:flex;align-items:center;gap:.5rem;margin:.4rem 0 .2rem;flex-wrap:wrap}
.ol-token code{flex:1;min-width:200px;background:#fff;border:1px solid var(--line2);border-radius:6px;
  padding:.35rem .5rem;font-size:.78rem;word-break:break-all;user-select:all}

/* ===== Návod na instalaci Outlook doplňku ===== */
.nav-navod{max-width:820px}
.nav-navod .card{margin-bottom:.9rem}
.nav-navod h2{font-size:1rem;margin:0 0 .5rem}
.nav-navod p{font-size:.9rem;line-height:1.6}
.nvd-seznam{margin:.4rem 0 0;padding-left:1.2rem;font-size:.88rem;line-height:1.7}
.nvd-uvod{border-left:3px solid var(--brand)}
.nvd-bezpeci{border-left:3px solid #16a34a;background:#f0fdf4}
.nvd-krok{display:flex;gap:.9rem;align-items:flex-start}
.nvd-c{flex:none;width:30px;height:30px;border-radius:50%;background:var(--brand);color:#fff;
  font-size:.95rem;font-weight:800;display:flex;align-items:center;justify-content:center}
.nvd-t{flex:1;min-width:0}
.nvd-btns{margin:.6rem 0}
.nvd-ol{margin:.5rem 0 0;padding-left:1.4rem;font-size:.9rem;line-height:1.75}
.nvd-ol li{margin-bottom:.25rem}
.nvd-ol code,.nav-navod code{background:#f1f5f9;border-radius:4px;padding:.05rem .3rem;font-size:.85em}
.nvd-var{border:1px solid var(--line2);border-radius:8px;padding:.5rem .7rem;margin:.5rem 0}
.nvd-var[open]{background:#f8fafc}
.nvd-var>summary{cursor:pointer;font-size:.9rem}
.nvd-tip{margin-top:.8rem;padding:.6rem .7rem;border-radius:8px;background:#eff6ff;
  border-left:3px solid #3b82f6;font-size:.86rem}
.nvd-pin{border-left:3px solid #8b5cf6}
.nvd-problemy{border-left:3px solid #f59e0b}
.nvd-dl{margin:.5rem 0 0}
.nvd-dl dt{font-weight:700;font-size:.88rem;margin-top:.8rem}
.nvd-dl dd{margin:.15rem 0 0;font-size:.87rem;line-height:1.6;color:#475569}
.nvd-tisk{margin-top:.5rem}
/* ===== Tiskový doklad (zjišťovací protokol, soupis, nabídka) ===== */
.doklad{background:#fff;color:#111;border:1px solid var(--line);border-radius:10px;
  padding:1.6rem 1.8rem;max-width:210mm;margin:0 auto;font-size:.84rem;line-height:1.45}
.dok-h{position:relative;text-align:center;border-bottom:2px solid #111;padding-bottom:.6rem;margin-bottom:1rem}
.dok-logo{position:absolute;left:0;top:0;height:26px;width:auto}
@media(max-width:520px){.dok-logo{position:static;display:block;margin:0 auto .5rem}}
.dok-h h2{margin:0;font-size:1.25rem;letter-spacing:.06em}
.dok-h p{margin:.15rem 0 0;font-size:.78rem;color:#444;text-transform:uppercase;letter-spacing:.04em}
.dok-meta{width:100%;border-collapse:collapse;margin-bottom:.9rem}
.dok-meta td{border:1px solid #bbb;padding:.35rem .5rem;vertical-align:top}
.dok-meta span{display:block;font-size:.66rem;text-transform:uppercase;letter-spacing:.04em;color:#666}
.dok-strany{display:grid;grid-template-columns:1fr 1fr;gap:.9rem;margin-bottom:.9rem}
.dok-strana{border:1px solid #bbb;padding:.5rem .6rem}
.dok-strana h3{margin:0 0 .3rem;font-size:.66rem;text-transform:uppercase;letter-spacing:.04em;color:#666}
.dok-strana p{margin:.15rem 0}
.dok-nadpis{font-size:.75rem;text-transform:uppercase;letter-spacing:.04em;margin:1rem 0 .35rem}
.dok-tbl{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums;margin-bottom:.6rem}
.dok-tbl th,.dok-tbl td{border:1px solid #bbb;padding:.28rem .5rem;text-align:left}
.dok-tbl th{background:#f1f1f1;font-size:.68rem;text-transform:uppercase;letter-spacing:.03em}
.dok-tbl .r{text-align:right}
.dok-tbl .w1{width:70px}
.dok-tbl .dok-soucet td{background:#f6f6f6}
.dok-tbl .dok-prazdny td{height:1.15rem;color:#bbb}
.dok-tbl .dok-tento{background:#fffbeb}
.dok-podpisy{display:grid;grid-template-columns:1fr 1fr;gap:1.6rem;margin-top:1.6rem}
.dok-podpisy h4{margin:0 0 .2rem;font-size:.7rem;text-transform:uppercase;letter-spacing:.04em;color:#666}
.dok-jm{margin:0 0 1.8rem;font-weight:600}
.dok-radky{display:grid;grid-template-columns:2fr 1fr 1.4fr;gap:.6rem}
.dok-radky span{border-top:1px solid #111;padding-top:.15rem;font-size:.62rem;color:#666}

@media print{
  .doklad{border:0;border-radius:0;padding:0;max-width:none;font-size:9.5pt}
  .doklad .dok-tbl{break-inside:auto}
  .doklad tr{break-inside:avoid}
  .dok-podpisy{break-inside:avoid}
  @page{size:A4;margin:14mm}
}
@media print{
  .noprint{display:none!important}
  .topbar,.side,.bottomnav,.back,.nvd-tisk,.nvd-btns{display:none!important}
  .ol-token{display:none!important}          /* kód se do tisku nedostane */
  .nav-navod{max-width:none}
  .nav-navod .card{break-inside:avoid;border:1px solid #ccc;box-shadow:none}
  .nvd-var{display:block!important}
  .nvd-var>summary{list-style:none}
  .nvd-var .nvd-ol{display:block!important}
}

/* ===== @zmínka jako bublina v textu komentáře ===== */
.zmin-tag{display:inline-block;background:#e8eeff;color:#243a75;border-radius:20px;
  padding:0 .42rem;font-weight:700;font-size:.94em;line-height:1.5;white-space:nowrap}
.zmin-tag.ja{background:#fef3c7;color:#92400e}          /* označili mě */
.konv-cit .zmin-tag{font-size:.9em;padding:0 .3rem}
.zmin-text .zmin-tag{font-size:.92em}
.konv-msg.moje .zmin-tag{background:#fff;color:#243a75}

/* návod: obě stahovací tlačítka vedle sebe, ne do krajů */
.nvd-btns{gap:.5rem}
.ol-box .row.gap{gap:.5rem}

/* ===== Průběh zakázky: milníky v mřížce (data pod sebou) ===== */
/* Sloupce: rozbalení | ✓ | název | fáze | 💬 | termín | kdo | stav
   Grid drží všechny řádky i hlavičku ve stejných kolonkách – dřív to byl flex
   a datum se posouvalo podle toho, kolik odznaků řádek měl. */
.prubeh{--mcols:64px 26px minmax(120px,1fr) 92px 44px 82px 30px 124px}
.prubeh .mhead,
.prubeh .mrow,
.prubeh .msub-row{display:grid;grid-template-columns:var(--mcols);
  align-items:center;gap:.5rem}

.prubeh .mhead{padding:.45rem .7rem;background:#f8fafc;border-bottom:1px solid var(--line2);
  font-size:.62rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:#94a3b8}
.prubeh .mhead>span:nth-child(4),
.prubeh .mhead>span:nth-child(5),
.prubeh .mhead>span:nth-child(6),
.prubeh .mhead>span:nth-child(7){text-align:right}
.prubeh .mhead>span:nth-child(8){text-align:left}

.prubeh .mrow{padding:.42rem .7rem;min-height:42px}
.prubeh .mgroup.ma-sub .mrow{cursor:default}

/* rozbalovací chip s počtem podúkolů – hlavní signál, že tam něco je */
.prubeh .mrow-tog{display:flex;align-items:center;gap:.18rem;width:auto;height:24px;
  padding:0 .3rem 0 .15rem;border:1px solid var(--line2);border-radius:20px;background:#fff;
  color:var(--muted);cursor:pointer;font-size:.7rem;font-weight:700;transition:.12s}
.prubeh .mrow-tog:hover{border-color:var(--accent);color:var(--accent);background:#fff5f7}
.prubeh .mrow-tog .mt-sip{display:inline-block;transition:transform .14s;font-size:.7rem}
/* transform:none ruší staré pravidlo z ř. 1177, které otáčelo celou pilulku
   včetně počtu podúkolů – otáčet se má jen šipka */
.prubeh .mgroup.open .mrow-tog{transform:none;border-color:var(--accent);
  color:var(--accent);background:#fff5f7}
.prubeh .mgroup.open .mrow-tog .mt-sip{transform:rotate(90deg)}
.prubeh .mrow-tog.prazdny{border:0;background:none;color:#cbd5e1;justify-content:center;
  width:100%;cursor:default;font-weight:400}
.mt-pocet{background:#dcfce7;color:#166534;border-radius:20px;padding:0 .3rem;font-size:.68rem;
  font-weight:800;line-height:1.55}
.mt-pocet.open{background:#fef3c7;color:#92400e}

.prubeh .mrow-name{font-weight:600;font-size:.9rem;color:inherit;text-decoration:none;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.prubeh .mrow-kat{justify-self:end;font-size:.64rem;font-weight:700;color:#475569;
  background:#f1f5f9;border-radius:20px;padding:.1rem .45rem;white-space:nowrap;
  overflow:hidden;text-overflow:ellipsis;max-width:100%}
.prubeh .mrow-ico{justify-self:end;font-size:.7rem;color:var(--muted);white-space:nowrap}
.prubeh .mrow-date{justify-self:end;width:auto;font-size:.75rem;font-variant-numeric:tabular-nums}
.prubeh .mrow-kdo{justify-self:center}
.prubeh .stavpick{justify-self:start;width:100%}
.prubeh .stavpick-btn{width:100%;text-align:center}

/* podúkoly: viditelná odbočka pod milníkem */
.prubeh .msub{display:none;background:#f8fafc;border-top:1px dashed var(--line2);
  padding:.25rem .7rem .5rem;box-shadow:inset 3px 0 0 var(--accent)}
.prubeh .mgroup.open .msub{display:block}
.prubeh .msub-row{padding:.24rem 0}
.prubeh .msub-sip{color:#94a3b8;font-size:.85rem;text-align:right;padding-right:.15rem}
.prubeh .msub-name{font-size:.85rem;color:#334155;text-decoration:none;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.prubeh .msub-name:hover{color:var(--accent)}
.prubeh .msub-vnor{justify-self:end}
.prubeh .msub-add{margin-top:.3rem;padding-left:calc(64px + .5rem)}
.stavpick-btn.sm{font-size:.66rem;padding:.05rem .35rem}

@media(max-width:1100px){
  /* na úzkém displeji zmizí fáze a počet zpráv, datum a stav zůstávají */
  .prubeh{--mcols:64px 26px minmax(90px,1fr) 78px 30px 110px}
  .prubeh .mhead>span:nth-child(4),.prubeh .mhead>span:nth-child(5),
  .prubeh .mrow-kat,.prubeh .mrow-ico,.prubeh .msub-vnor{display:none}
  .prubeh .mhead>span:nth-child(6){text-align:right}
}

/* .mlist má overflow:hidden (kvůli zaobleným krajům) – to by rozbalené menu stavu
   ukouslo. Když je nějaké otevřené, přepni kartu na visible a řádek nad ostatní. */
.prubeh:has(.stavpick-menu:not([hidden])){overflow:visible}
.prubeh .mrow:has(.stavpick-menu:not([hidden])),
.prubeh .msub-row:has(.stavpick-menu:not([hidden])){position:relative;z-index:30}
/* u posledních řádků menu vyjede nahoru, ať nekončí za patou karty */
.prubeh .mgroup:nth-last-child(-n+3) .stavpick-menu{top:auto;bottom:calc(100% + 5px)}

/* ===== Detail milníku / úkolu / podúkolu ===== */
.crumbs a{text-decoration:none}
.crumbs a:hover{text-decoration:underline}
.crumb-rodic{font-weight:700}
.dh-row{gap:.7rem;align-items:center}
.stavpick-btn.lg{font-size:.82rem;padding:.3rem .7rem;font-weight:700}

/* popsaná pole místo řady bezejmenných selectů */
.dmeta{display:grid;grid-template-columns:repeat(auto-fit,minmax(158px,1fr));gap:.55rem .7rem;
  background:#f8fafc;border:1px solid var(--line2);border-radius:11px;padding:.65rem .75rem;
  margin:.15rem 0 .2rem}
.dm{display:flex;flex-direction:column;gap:.22rem;min-width:0;margin:0}
.dm-l{font-size:.61rem;font-weight:800;letter-spacing:.05em;text-transform:uppercase;color:#94a3b8}
.dm-pozn{font-style:normal;color:#dc2626}
.dm-v{display:flex;align-items:center;gap:.35rem;min-width:0}
.dm-v .inline-sel{width:100%;max-width:none;background:#fff;border-radius:8px;font-weight:600}
.dm-kdo .inline-sel{flex:1;min-width:0}
.dm-v .daterange{width:100%}
.dm-v .inline-date{width:100%;justify-content:flex-start;background:#fff;border:1px solid var(--line);
  border-radius:8px;padding:.24rem .5rem;font-size:.8rem;color:var(--ink)}
.dm-v .inline-date.over{border-color:#fca5a5;background:#fff5f5;color:#b91c1c;font-weight:700}
.dm-hint{margin:.5rem 0 0;padding:.5rem .65rem;border-radius:9px;background:#eff6ff;
  border-left:3px solid #3b82f6;font-size:.82rem;line-height:1.55;color:#334155}

/* zpět v modalu (proklikání se do podúkolu a nazpátek) */
.dmodal-back-btn{position:absolute;top:.6rem;left:.7rem;z-index:3;display:inline-flex;align-items:center;
  gap:.3rem;border:1px solid var(--line);background:#fff;border-radius:20px;padding:.28rem .7rem;
  font:inherit;font-size:.78rem;font-weight:700;color:var(--muted);cursor:pointer;max-width:52%}
.dmodal-back-btn:hover{border-color:var(--accent);color:var(--accent)}
.dmodal-back-btn span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dmodal .detail-head{padding-top:2.4rem}
.zmodal--stavba{max-width:560px}
.zmodal--stavba .mform-body{max-height:70vh;overflow:auto}

/* Průběh: filtr v hlavičce + sekce samostatných úkolů */
.prubeh-filtr{display:flex;gap:.35rem;align-items:center;margin:0}
.prubeh-filtr select{padding:.22rem .45rem;border:1px solid var(--line2);border-radius:8px;
  font:inherit;font-size:.78rem;background:#fff;color:#334155;cursor:pointer}
.prubeh-info{margin:.1rem 0 .5rem;padding:.4rem .6rem;background:#eff6ff;border-radius:8px;
  border-left:3px solid #3b82f6}
.prubeh-sam-head{margin-top:1.1rem}
.btn.xs{font-size:.7rem;padding:.15rem .45rem}

/* návod: tabulka kompatibility + stopka pro nepodporované verze */
.nvd-tbl{width:100%;border-collapse:collapse;margin:.6rem 0;font-size:.86rem}
.nvd-tbl th{text-align:left;font-size:.66rem;text-transform:uppercase;letter-spacing:.05em;
  color:#94a3b8;padding:.3rem .5rem;border-bottom:1px solid var(--line2)}
.nvd-tbl td{padding:.42rem .5rem;border-bottom:1px solid #f1f5f9;vertical-align:top}
.nvd-tbl tr:last-child td{border-bottom:0}
.nvd-tbl tr.ok td:nth-child(2){color:#166534;font-weight:700;white-space:nowrap}
.nvd-tbl tr.ne{background:#fff5f5}
.nvd-tbl tr.ne td:nth-child(2){color:#b91c1c;font-weight:700;white-space:nowrap}
.nvd-stop{margin:.7rem 0;padding:.7rem .8rem;border-radius:10px;background:#fff5f5;
  border-left:3px solid #dc2626}
.nvd-stop p{margin:.4rem 0 0;font-size:.86rem;line-height:1.6}
@media print{ .nvd-var{display:block!important} .nvd-var .nvd-ol,.nvd-var .nvd-seznam{display:block!important} }

/* ===== Matice oprávnění rolí ===== */
.opr-wrap{overflow:auto;max-height:calc(100dvh - 300px)}
.opr-tbl{border-collapse:separate;border-spacing:0;min-width:640px}
.opr-tbl th,.opr-tbl td{border-bottom:1px solid var(--line)}
.opr-nazev{position:sticky;left:0;background:#fff;z-index:2;min-width:260px;max-width:340px}
.opr-tbl thead th{position:sticky;top:0;background:#f8fafc;z-index:3}
.opr-tbl thead th.opr-nazev{z-index:4}
.opr-role{text-align:center;min-width:96px;vertical-align:bottom;padding:.4rem .3rem}
.opr-role span{display:block;font-size:.78rem;font-weight:800;color:var(--ink)}
.opr-role i{font-style:normal;font-size:.62rem;white-space:nowrap}
.opr-modul td{background:#f1f5f9;font-size:.72rem;font-weight:800;letter-spacing:.04em;
  text-transform:uppercase;color:#475569;padding:.35rem .5rem}
.opr-modul td{position:sticky;left:0}
.opr-kod{display:block;margin-top:.15rem;font-size:.64rem;color:#94a3b8;background:none;padding:0}
.opr-chk{text-align:center}
.opr-chk label{display:block;padding:.35rem 0;cursor:pointer}
.opr-chk input{width:17px;height:17px;cursor:pointer}
.opr-chk:hover{background:#f8fafc}
.opr-foot{margin-top:.7rem;align-items:center}

/* ===== Časová osa – jednotná napříč moduly (nahrazuje op-timeline, st-hist, .hist) ===== */
.cosa{display:flex;flex-direction:column}
.cosa-it{display:grid;grid-template-columns:76px 20px 1fr auto;gap:0 .5rem;
  align-items:flex-start;padding:.45rem 0;color:inherit;text-decoration:none;position:relative}
a.cosa-it:hover{background:#f8fafc;border-radius:8px}
a.cosa-it:hover .cosa-nazev{color:var(--accent)}
.cosa-kdy{font-size:.76rem;color:var(--muted);text-align:right;padding-top:.15rem;
  font-variant-numeric:tabular-nums;white-space:nowrap}
/* svislá linka + tečka */
.cosa-osa{position:relative;display:flex;justify-content:center;padding-top:.3rem}
.cosa-osa::before{content:"";position:absolute;top:0;bottom:-.9rem;left:50%;width:2px;
  margin-left:-1px;background:var(--line2)}
.cosa-it:last-child .cosa-osa::before{display:none}
.cosa-dot{position:relative;z-index:1;width:10px;height:10px;border-radius:50%;
  background:#fff;border:2px solid var(--line2)}
.cosa-telo{min-width:0;display:flex;flex-direction:column;gap:.1rem}
.cosa-hlava{display:flex;align-items:center;gap:.35rem;min-width:0;flex-wrap:wrap}
.cosa-ikona{font-size:.8rem;flex:none}
.cosa-nazev{font-size:.87rem;font-weight:600;overflow:hidden;text-overflow:ellipsis}
.cosa-popis{font-size:.8rem;color:#475569}
.cosa-kdo{font-size:.74rem;color:var(--muted)}
.cosa-prav{display:flex;align-items:center;gap:.4rem;padding-top:.1rem;white-space:nowrap}
.cosa-castka{font-size:.8rem;color:var(--muted);font-variant-numeric:tabular-nums}
.cosa-prazdno{margin:.4rem 0}
/* barva tečky podle typu */
.cosa--zakazka .cosa-dot{border-color:#2563eb}
.cosa--reklamace .cosa-dot{border-color:#ef4444}
.cosa--servis .cosa-dot{border-color:#06b6d4}
.cosa--prilezitost .cosa-dot{border-color:#f59e0b}
.cosa--plan .cosa-dot{border-color:#8b5cf6}
.cosa--zprava .cosa-dot{border-color:#94a3b8}
/* plánované (budoucí) položky jsou vybledlé a s prstencem */
.cosa-budouci{opacity:.78}
.cosa-budouci .cosa-dot{background:#faf9ff;border-style:dashed}
.cosa-sep{display:flex;align-items:center;gap:.5rem;margin:.4rem 0 .2rem;
  font-size:.7rem;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}
.cosa-sep::before,.cosa-sep::after{content:"";flex:1;height:1px;background:var(--line2)}
@media(max-width:640px){
  .cosa-it{grid-template-columns:58px 16px 1fr}
  .cosa-prav{grid-column:3;justify-content:flex-start}
}

/* ===== QR pro dvoufázové ověření ===== */
.qr-box{display:flex;gap:1.1rem;align-items:flex-start;flex-wrap:wrap;margin:.7rem 0}
.qr-kod{flex:none;width:190px;height:190px;padding:.5rem;background:#fff;
  border:1px solid var(--line2);border-radius:12px}
.qr-kod svg{width:100%;height:100%;display:block}
.qr-vedle{flex:1;min-width:220px}
.qr-vedle p{margin:0 0 .5rem}
@media(max-width:520px){.qr-kod{width:100%;height:auto;max-width:260px;margin:0 auto}}


/* ===== Kanban – jedna sada pro zakázky, příležitosti i servis ===== */
.kb-card.kb-zakazka .progress{margin:.35rem 0 .2rem}
.kb-cislo{font-size:.7rem;font-weight:800;color:var(--muted);letter-spacing:.02em}
.kb-card[draggable]{cursor:grab}
.kb-card[draggable]:active{cursor:grabbing}
.kb-card.kb-tahne{opacity:.45;transform:rotate(1deg)}
/* Cílem je celý sloupec, ne jen jeho vnitřek – karta se dá pustit kamkoli,
   včetně hlavičky a prázdného místa pod poslední kartou. */
.kb-col.kb-cil{background:#eef2ff;outline:2px dashed var(--accent);outline-offset:-3px}
.kb-foot{display:flex;align-items:center;gap:.4rem;margin-top:.35rem;font-size:.72rem}
.kb-foot .termin{margin-left:auto}
.kb-foot .avatar{flex:none}


/* ===== Moje agenda — vlevo akce, vpravo kontext ===== */
.ag-head{display:flex;align-items:flex-end;justify-content:space-between;gap:1rem;
  flex-wrap:wrap;margin-bottom:.9rem}

/* čísla nahoře filtrují seznam vlevo */
.agf{display:inline-flex;align-items:center;gap:.4rem;border:1px solid var(--line2);
  background:#fff;border-radius:20px;padding:.3rem .7rem;font:inherit;font-size:.8rem;
  font-weight:600;color:#475569;cursor:pointer;transition:.12s}
.agf i{font-style:normal;font-size:.72rem;font-weight:800;background:#f1f5f9;color:#475569;
  border-radius:20px;padding:0 .35rem;min-width:1.15rem;text-align:center}

@media(max-width:1100px){.ag-2col{grid-template-columns:1fr}}

/* prázdný stav místo prázdných krabic */
.ag-klid{display:flex;align-items:center;gap:.9rem}
.ag-klid-ic{font-size:1.8rem}
.ag-klid p{margin:.15rem 0 0}

/* vzdálené koše sbalené – právě ty rostou nejvíc */
.ag-sbal>summary::before{content:"▸";display:inline-block;width:1rem;color:var(--muted);
  transition:transform .14s}

/* pravý sloupec: sbalitelné karty s počtem – další widget stojí jeden řádek */
.ag-wg>summary{display:flex;align-items:center;gap:.45rem;padding:.6rem .75rem;cursor:pointer;
  list-style:none;font-size:.86rem;font-weight:700;color:var(--ink)}
.ag-wg .count{font-size:.7rem;font-weight:800;background:#f1f5f9;color:#475569;
  border-radius:20px;padding:0 .4rem}


/* ===== Moje agenda =========================================================
   Tři zóny místo pěti widgetů:
   1) co hoří teď  2) plán jako jeden chronologický seznam  3) kontext vpravo.
   Měsíční kalendář zrušen – ukazoval tatáž data jako seznam; nahradil ho
   pruh sedmi dnů, který slouží k orientaci a skoku na den.               */
.ag-head{display:flex;align-items:flex-end;justify-content:space-between;gap:1.2rem;
  flex-wrap:wrap;margin-bottom:1rem}
.ag-head h1{margin:0}
.ag-head p{margin:.1rem 0 0}

/* pruh 7 dnů */
.ag-tyden{display:flex;gap:.25rem}
.agd{display:flex;flex-direction:column;align-items:center;gap:.05rem;min-width:42px;
  padding:.3rem .2rem .25rem;border:1px solid var(--line);border-radius:9px;background:#fff;
  color:var(--muted);text-decoration:none;transition:.12s}
.agd:hover{border-color:var(--accent);color:var(--accent)}
.agd-den{font-size:.6rem;text-transform:uppercase;letter-spacing:.04em}
.agd-cislo{font-size:1rem;font-weight:800;color:var(--ink);line-height:1}
.agd-pocet{font-size:.6rem;font-weight:800;min-height:.85rem}
.agd.vikend{background:#f8fafc}
.agd.ma .agd-pocet{background:var(--brand);color:#fff;border-radius:20px;padding:0 .3rem}
.agd.dnes{border-color:var(--accent);border-width:2px;background:#fff5f7}
.agd.dnes .agd-cislo{color:var(--accent)}

.ag-2col{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:1.1rem;align-items:start}
@media(max-width:1100px){.ag-2col{grid-template-columns:1fr}.ag-tyden{width:100%;justify-content:space-between}}
.ag-akce{display:flex;flex-direction:column;gap:1.1rem;min-width:0}
.ag-kontext{display:flex;flex-direction:column;gap:.8rem;min-width:0}
.ag-zona-h{font-size:.78rem;font-weight:800;letter-spacing:.05em;text-transform:uppercase;
  color:#94a3b8;margin:0 0 .45rem;display:flex;align-items:center;gap:.45rem}
.ag-zona-h .count{background:#f1f5f9;color:#475569;border-radius:20px;padding:0 .4rem;font-size:.72rem}

/* 1) co hoří teď – bez rámečku krabice, jen barevný pruh vlevo */
.ag-hned{border-left:3px solid var(--line2);padding-left:.8rem}
.ag-hned--pozor{border-left-color:#dc2626}
.ag-hned--pozor .ag-zona-h{color:#dc2626}
.ag-hned--klid{display:flex;align-items:center;gap:.5rem;border-left-color:#16a34a;
  padding:.55rem .8rem;background:#f0fdf4;border-radius:0 9px 9px 0;font-size:.9rem}

/* 2) plán – dny jako mezinadpisy uvnitř jednoho seznamu */
.ag-plan{border-left:3px solid var(--line2);padding-left:.8rem}
.ag-den+.ag-den{margin-top:.5rem}
.ag-den-h{display:flex;align-items:center;gap:.5rem;margin:.35rem 0 .2rem;scroll-margin-top:70px}
.ag-den-datum{font-size:.8rem;font-weight:700;color:var(--ink);font-variant-numeric:tabular-nums}
.ag-den-za{font-size:.7rem;color:var(--muted)}
.ag-den-cara{flex:1;height:1px;background:var(--line)}
.ag-den-h .count{font-size:.68rem;color:var(--muted)}

/* 3) bez termínu – na konci, sbalené: nemá termín, tedy ani naléhavost */
.ag-bez{border:1px dashed var(--line2);border-radius:10px;padding:.2rem .8rem;background:#fafafa}
.ag-bez>summary{cursor:pointer;list-style:none;padding:.45rem 0;font-size:.84rem;
  font-weight:600;color:var(--muted)}
.ag-bez>summary::-webkit-details-marker{display:none}
.ag-bez>summary::before{content:"▸";display:inline-block;width:1rem;transition:transform .14s}
.ag-bez[open]>summary::before{transform:rotate(90deg)}

.ag-klid{display:flex;align-items:center;gap:.9rem}
.ag-klid-ic{font-size:1.8rem}
.ag-klid p{margin:.15rem 0 0}

/* vpravo: dva bloky, ne pět widgetů */
.ag-blok{padding:.75rem .85rem}
.ag-blok-h{font-size:.78rem;font-weight:800;letter-spacing:.05em;text-transform:uppercase;
  color:#94a3b8;margin:0 0 .55rem;display:flex;align-items:center;gap:.45rem}
.ag-blok-h .count{background:#f1f5f9;color:#475569;border-radius:20px;padding:0 .4rem;
  font-size:.72rem;font-weight:800}
.ag-blok-h .count.warn{background:#fee2e2;color:#991b1b}
.ag-kont{display:flex;align-items:center;gap:.5rem;padding:.4rem .1rem;color:inherit;
  text-decoration:none;border-bottom:1px solid var(--line)}
.ag-kont:last-child{border-bottom:0}
.ag-kont:hover strong{color:var(--accent)}
.ag-kont.pozor{background:#fff7f7;border-radius:6px;padding-left:.4rem;padding-right:.4rem}
.ag-kont-ic{flex:none;font-size:.9rem}
.ag-kont-txt{flex:1;min-width:0;display:flex;flex-direction:column;line-height:1.25}
.ag-kont-txt strong{font-size:.84rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ag-kont-txt small{font-size:.7rem;color:var(--muted);overflow:hidden;
  text-overflow:ellipsis;white-space:nowrap}

/* ===== Nabídka: hustá tabulka ==============================================
   Uživatelé přicházejí z Excelu, kde se vejde ~45 řádků a píše se přímo do
   buňky. Řádek proto stlačen na ~22 px a hodnoty se editují na místě.     */

/* Pevné rozvržení: šířky drží <colgroup>, ne obsah. Bez toho si prohlížeč
   rozdělil místo po svém – název se lámal do čtyř řádků a čísla plavala. */
.rz-tbl{font-size:.82rem;font-variant-numeric:tabular-nums;table-layout:fixed;min-width:620px}
.rz-tbl th{padding:.3rem .45rem;font-size:.63rem;position:sticky;top:0;background:#fff;z-index:2}
.rz-tbl td{padding:.18rem .45rem;line-height:1.35;vertical-align:middle}
/* hlavička musí být zarovnaná stejně jako čísla pod ní, jinak popisek nesedí
   nad sloupcem (.table th má text-align:left a přebilo by samotné .r) */
.rz-tbl th.r{text-align:right}
.rz-tbl tbody tr:hover{background:#f8fafc}
.rz-tbl .c-kod{width:52px} .rz-tbl .c-mj{width:38px} .rz-tbl .c-mn{width:74px}
.rz-tbl .c-cena{width:78px} .rz-tbl .c-celkem{width:92px}
.rz-tbl .c-nakl{width:72px} .rz-tbl .c-marze{width:58px} .rz-tbl .c-akce{width:78px}
.rz-kod{font-size:.72rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rz-mj,.rz-cislo,.rz-soucet{white-space:nowrap}
/* Názvy prací bývají dlouhé. Ořez na dva řádky drží stejnou výšku řádků;
   celý text ukáže tooltip a kliknutí do buňky. */
.rz-nazev{overflow-wrap:anywhere}
.rz-nz{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
/* font-size:0 vyhodí mezery mezi inline-block tlačítky, aby se tři vešla do 78 px */
.rz-akce{opacity:0;transition:opacity .1s;font-size:0;white-space:nowrap;padding-left:0!important}
.rz-akce>*{font-size:.68rem}
.rz-tbl tbody tr:hover .rz-akce,.rz-tbl tbody tr:focus-within .rz-akce{opacity:1}
.rz-pozn{color:var(--muted);font-size:.7rem;cursor:help}
.btn.xs{font-size:.68rem;padding:.05rem .3rem}

/* psaní přímo do buňky */
.rz-tbl [data-pole]{cursor:text}
.rz-tbl [data-pole]:hover{box-shadow:inset 0 0 0 1px var(--line2);border-radius:3px}
.rz-tbl [data-pole].uprava{vertical-align:top}
/* Editor musí sedět přesně na místě textu: stejné písmo, stejné odsazení, žádný
   rámeček navíc (outline dovnitř), takže se při kliknutí nic nepohne.
   Název se edituje v textarea – zalamuje se stejně, jako se zobrazuje. */
.rz-tbl [data-pole] input,.rz-tbl [data-pole] textarea{
  display:block;width:100%;box-sizing:border-box;margin:0;
  border:0;outline:2px solid var(--accent);outline-offset:-2px;border-radius:3px;
  padding:0 .1rem;font:inherit;font-size:.82rem;line-height:1.35;background:#fff;
  font-variant-numeric:tabular-nums}
.rz-tbl [data-pole] textarea{resize:none;overflow:hidden;white-space:pre-wrap}
.rz-tbl [data-pole].r input{text-align:right}
.rz-bliklo{animation:rzBlik .6s ease-out}
@keyframes rzBlik{from{background:#dcfce7}to{background:transparent}}
.rz-chyba{animation:rzChyba .6s ease-out}
@keyframes rzChyba{from{background:#fee2e2}to{background:transparent}}

/* zapojený, ale nezapsaný člen týmu – vizuálně slabší, s tečkovaným rámečkem */
.ov-mem--navic{opacity:.82}
.ov-mem--navic small{font-style:italic}

/* fakturace: stupňovitý pruh sjednáno → odsouhlaseno → fakturováno → uhrazeno */
.fk-pruh{position:relative;height:10px;border-radius:99px;background:var(--line);
  overflow:hidden;margin:.1rem 0 .35rem}
.fk-pruh>i{position:absolute;left:0;top:0;height:100%;transition:width .3s}
.fk-pruh .fk-ods{background:#cbd5e1}
.fk-pruh .fk-fak{background:#60a5fa}
.fk-pruh .fk-uhr{background:#16a34a}
.fk-legenda{display:flex;gap:1rem;flex-wrap:wrap;align-items:center;margin:0 0 .9rem}
.fk-t{display:inline-block;width:9px;height:9px;border-radius:3px;margin-right:.25rem;vertical-align:baseline}
.fk-t.fk-ods{background:#cbd5e1} .fk-t.fk-fak{background:#60a5fa} .fk-t.fk-uhr{background:#16a34a}
.fk-zadrz{margin-left:auto}
.kpi-p{display:block;font-size:.72rem;color:var(--muted)}
.fk-tbl{font-size:.85rem}
.fk-tbl th,.fk-tbl td{padding:.4rem .55rem}
.fk-tbl .w1{width:38px}
.fk-tbl thead th{border-bottom:2px solid var(--line)}
.fk-odk{margin-left:.35rem;font-size:.78rem}

/* překryv při stahování dokumentu */
.stah-back{position:fixed;inset:0;z-index:2000;background:rgba(15,23,42,.45);
  backdrop-filter:blur(2px);display:flex;align-items:center;justify-content:center}
.stah-box{background:#fff;border-radius:14px;padding:1.6rem 2rem;min-width:280px;max-width:min(420px,92vw);
  display:flex;flex-direction:column;align-items:center;gap:.5rem;text-align:center;
  box-shadow:0 25px 60px rgba(0,0,0,.4)}
.stah-kolo{width:34px;height:34px;border-radius:50%;margin-bottom:.3rem;
  border:3px solid var(--line);border-top-color:var(--accent);animation:stahToc .8s linear infinite}
.stah-kolo--chyba{animation:none;border-color:#fecaca;border-top-color:#dc2626;position:relative}
.stah-kolo--chyba::after{content:"!";position:absolute;inset:0;display:flex;align-items:center;
  justify-content:center;color:#dc2626;font-weight:800;font-size:1.1rem}
@keyframes stahToc{to{transform:rotate(360deg)}}
.stah-nadpis{font-size:1rem}
.stah-krok{min-height:1.2em}
@media(prefers-reduced-motion:reduce){.stah-kolo{animation-duration:2.4s}}

/* nabídka výstupů z kalkulace */
.vyst{display:flex;flex-direction:column;gap:.5rem;padding:.9rem}
.vyst-it{display:flex;gap:.7rem;align-items:flex-start;padding:.65rem .75rem;border:1px solid var(--line2);
  border-radius:10px;text-decoration:none;color:inherit;background:#fff;transition:background .12s,border-color .12s}
.vyst-it:hover{background:var(--bg2,#f8fafc);border-color:var(--accent)}
.vyst-it--interni{background:#fffbeb;border-color:#fde68a}
.vyst-it--interni:hover{background:#fef3c7}
.vyst-ic{font-size:1.4rem;line-height:1.1}
.vyst-it>span:last-child{display:flex;flex-direction:column;gap:.15rem;min-width:0}
.vyst-it small{color:var(--muted);font-size:.75rem;line-height:1.35}

/* přepínač stavu nabídky – vidět a na jeden klik, ne schovaný v modalu */
.rz-stav{display:inline-flex;align-items:center;gap:0;border:1px solid var(--line2);
  border-radius:9px;overflow:hidden;background:#fff}
.rz-stav-l{padding:0 .5rem;font-size:.66rem;text-transform:uppercase;letter-spacing:.04em;
  color:var(--muted);border-right:1px solid var(--line2);align-self:stretch;display:flex;align-items:center}
.rz-stav-b{border:0;background:none;padding:.34rem .6rem;font:inherit;font-size:.76rem;
  color:var(--muted);cursor:pointer;border-right:1px solid var(--line)}
.rz-stav-b:last-child{border-right:0}
.rz-stav-b:hover{background:var(--bg2,#f1f5f9);color:var(--text)}
.rz-stav-b.on{background:var(--text,#0f172a);color:#fff;font-weight:600}
.rz-stav-b.on.s-schvaleno{background:#16a34a}
.rz-stav-b.on.s-zamitnuto{background:#dc2626}
.rz-stav-b.on.s-odeslano{background:#2563eb}

/* ---- Fakturace zakázky: čerpání schválené nabídky ---- */
.cerp-pruh{height:8px;border-radius:99px;background:var(--line);overflow:hidden;margin:.1rem 0 .8rem}
.cerp-pruh>i{display:block;height:100%;background:var(--ok,#16a34a);transition:width .3s}
.cerp-polozky>summary{cursor:pointer;padding:.7rem .9rem;list-style:none}
.cerp-polozky>summary::-webkit-details-marker{display:none}
.cerp-polozky>summary::before{content:"▸ ";color:var(--muted)}
.cerp-polozky[open]>summary::before{content:"▾ "}
.cerp-tbl,.cerp-vyber{font-size:.82rem;table-layout:fixed;font-variant-numeric:tabular-nums}
.cerp-tbl th,.cerp-vyber th{padding:.3rem .45rem;font-size:.63rem}
.cerp-tbl td,.cerp-vyber td{padding:.2rem .45rem;line-height:1.35}
.cerp-tbl th.r,.cerp-vyber th.r{text-align:right}
.cerp-tbl .c-kod{width:66px} .cerp-tbl .c-mj{width:44px} .cerp-tbl .c-mn{width:86px}
.cerp-tbl .c-kc{width:104px} .cerp-tbl .c-pct{width:78px}
.cerp-vyber .c-chk{width:34px} .cerp-vyber .c-mj{width:44px}
.cerp-vyber .c-mn{width:96px} .cerp-vyber .c-kc{width:104px}
.cerp-sekce td{background:var(--bg2,#f1f5f9);font-size:.74rem}
.cerp-hotovo{color:var(--muted)}
.cerp-hotovo td:nth-child(2){text-decoration:line-through;text-decoration-color:var(--line2)}
.cerp-mini{display:inline-block;width:38px;height:5px;border-radius:99px;background:var(--line);
  overflow:hidden;vertical-align:middle;margin-right:.3rem}
.cerp-mini>i{display:block;height:100%;background:var(--ok,#16a34a)}

/* modal výběru položek k fakturaci */
.cerp-modal{position:fixed;inset:0;z-index:1200;background:rgba(15,23,42,.5);
  backdrop-filter:blur(1px);display:flex;align-items:center;justify-content:center;padding:1.2rem}
.cerp-modal[hidden]{display:none}
.cerp-box{background:#fff;border-radius:14px;width:min(1000px,96vw);max-height:92vh;
  display:flex;flex-direction:column;box-shadow:0 25px 60px rgba(0,0,0,.45);overflow:hidden}
.cerp-box-h{display:flex;align-items:center;justify-content:space-between;gap:1rem;
  padding:.8rem 1rem;border-bottom:1px solid var(--line)}
.cerp-box-top{display:flex;gap:.7rem;align-items:end;flex-wrap:wrap;padding:.7rem 1rem;
  border-bottom:1px solid var(--line);background:var(--bg2,#f8fafc)}
.cerp-box-top label{margin:0;font-size:.72rem}
.cerp-box-top input{padding:.3rem .5rem;border:1px solid var(--line2);border-radius:7px;font-size:.85rem}
.cerp-hledat{flex:1;min-width:180px}
.cerp-hledat input{width:100%}
.cerp-box-body{flex:1;min-height:0;overflow-y:auto}
.cerp-box-p{display:flex;align-items:center;gap:1rem;flex-wrap:wrap;
  padding:.7rem 1rem;border-top:1px solid var(--line);background:var(--bg2,#f8fafc)}
.cerp-pozn{flex:1;min-width:160px;margin:0;font-size:.72rem}
.cerp-pozn input{width:100%;padding:.3rem .5rem;border:1px solid var(--line2);border-radius:7px}
.cerp-soucet{margin-left:auto;font-size:.9rem}
.cerp-mn{width:100%;box-sizing:border-box;text-align:right;padding:.15rem .35rem;
  border:1px solid var(--line2);border-radius:5px;font:inherit;font-size:.82rem;
  font-variant-numeric:tabular-nums}
.cerp-vyber tr[data-radek].vybrano{background:#f0fdf4}
.cerp-vyber tr[data-radek].vybrano .cerp-mn{border-color:var(--ok,#16a34a)}
.cerp-kc{color:var(--muted)}
.cerp-vyber tr[data-radek].vybrano .cerp-kc{color:inherit;font-weight:600}
@media(max-width:700px){.cerp-box{width:100%;max-height:100vh;border-radius:0}}

/* Kategorie částí staveb – barevná tečka vedle názvu. Barva je jen doplněk,
   název je vždy vypsaný, takže se dá číst i bez rozlišení barev. */
.kat-tecka{display:inline-block;width:.75rem;height:.75rem;border-radius:50%;
  border:1px solid rgba(15,23,42,.15)}
.kat-stitek{display:inline-flex;align-items:center;gap:.4rem;white-space:nowrap;
  font-size:.82rem}
.kat-stitek i{flex:none;width:.6rem;height:.6rem;border-radius:50%;
  border:1px solid rgba(15,23,42,.15)}

/* Nastavení → Zálohování: stav poslední zálohy. Barva nese sdělení, ikona
   a text ho opakují – kdo barvy nerozezná, přečte si totéž. */
.zal-stav{display:flex;gap:1rem;align-items:flex-start;border-left:4px solid var(--line2)}
.zal-ikona{flex:none;width:2.2rem;height:2.2rem;border-radius:50%;display:grid;
  place-items:center;font-size:1.2rem;font-weight:700;color:#fff;background:var(--muted)}
.zal-text{min-width:0}
.zal-text h2{margin:.1rem 0 .35rem;font-size:1.05rem}
.zal-text p{margin:0 0 .3rem}
.zal-ok{border-left-color:var(--ok);background:#f0fdf4}
.zal-ok .zal-ikona{background:var(--ok)}
.zal-varovani{border-left-color:#d97706;background:#fffbeb}
.zal-varovani .zal-ikona{background:#d97706}
.zal-chyba,.zal-nikdy{border-left-color:var(--warn);background:#fef2f2}
.zal-chyba .zal-ikona,.zal-nikdy .zal-ikona{background:var(--warn)}

/* ---- seznam prostorů ---------------------------------------------------
   Dlaždice se skládají do mřížky podle šířky okna; na telefonu jeden sloupec. */
.pr-grid{display:grid;gap:.7rem;grid-template-columns:repeat(auto-fill,minmax(240px,1fr))}
.pr-card{display:flex;flex-direction:column;gap:.25rem;color:inherit;min-width:0;
  transition:border-color .12s,box-shadow .12s}
.pr-card:hover{border-color:var(--accent);box-shadow:0 4px 14px rgba(15,23,42,.10)}
.pr-card strong{font-size:.95rem;line-height:1.25;overflow-wrap:anywhere}
.pr-card .badge{flex:none;white-space:nowrap}
@media(max-width:520px){.pr-grid{grid-template-columns:1fr}}

/* Konečné akce v nastavení prostoru – oddělené čárou, ať nesplývají
   s ukládáním názvu hned nad nimi. */
.pop-akce{display:flex;gap:.5rem;flex-wrap:wrap;margin-top:.9rem;padding-top:.7rem;
  border-top:1px solid var(--line)}

/* fakturační údaje zákazníka */
.fu{padding:.55rem 0;border-top:1px solid var(--line)}
.fu:first-of-type{border-top:0}
.fu-hlava{display:flex;align-items:center;gap:.4rem;flex-wrap:wrap}
.fu-akce{margin-top:.35rem}
.fu--vyrazene{opacity:.55}
/* kontakt, který už u zákazníka nepracuje */
.kontakt--pryc td{color:var(--muted)}
.kontakt--pryc td strong{font-weight:500}

/* ===== Akvizice ===== */
.aitem--akvizice,.dp-item.aitem--akvizice{border-left-color:#ea580c}
.aitem--akvizice .aitem-kind{color:#ea580c}
/* převod: podle cíle (příprava / servis) jen odpovídající pole */
.prevod-form:has(input[name="cil"][value="servis"]:checked) .jen-priprava,
.prevod-form:has(input[name="cil"][value="priprava"]:checked) .jen-servis{display:none}
.ak-krok{display:flex;gap:.8rem;padding:.55rem 0;border-top:1px solid var(--line)}
.ak-krok:first-of-type{border-top:0}
.ak-krok-datum{flex:none;width:5.5rem;font-variant-numeric:tabular-nums;color:var(--muted);font-size:.85rem}
.ak-krok--otevreny .ak-krok-datum{color:var(--brand);font-weight:700}
.ak-krok-telo{min-width:0}
.ak-odlozene td{opacity:.7}
.ak-odlozene-h td{opacity:1;background:#f8fafc;font-weight:600;font-size:.85rem}

/* =====================================================================
   DESIGN 2026 – základ: písmo, ikony a komponenty. Nové obrazovky se
   staví z těchto tříd; starší se na ně převádějí postupně (vzor: Akvizice).
   ===================================================================== */
@font-face{font-family:"Inter";font-style:normal;font-display:swap;font-weight:100 900;
  src:url("vendor/inter/inter-latin-ext.woff2") format("woff2");
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,
    U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,
    U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:"Inter";font-style:normal;font-display:swap;font-weight:100 900;
  src:url("vendor/inter/inter-latin.woff2") format("woff2");
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,
    U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}

:root{
  --bg:#f3f5f9; --line:#e4e8ef; --line2:#d0d6e0; --ink:#101828; --muted:#667085;
  --brand-50:#eef1f8; --brand-100:#dde3f0;
  --radius:14px; --radius-sm:10px;
  --shadow:0 1px 2px rgba(16,24,40,.05),0 1px 3px rgba(16,24,40,.06);
  --shadow-lg:0 16px 40px rgba(16,24,40,.14);
  --fokus:0 0 0 3px rgba(27,42,85,.14);
}
body{font-family:"Inter",system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;
  font-size:14.5px;-webkit-font-smoothing:antialiased}
.table,.termin-pill,.krok-ted-kdy{font-variant-numeric:tabular-nums}

/* ---- ikony (SVG sprite, Lucide) ---- */
.ik{width:1.15em;height:1.15em;flex:none;vertical-align:-.2em}
.side .ic{display:inline-flex;width:20px;justify-content:center;color:#7a8699}
.side .ic .ik{width:18px;height:18px}
.side a{gap:.65rem;padding:.42rem .6rem}
.side a.on{font-weight:700}
.side a.on .ic{color:var(--accent)}
.nav-collapsed .side .ic .ik{width:20px;height:20px}
.bottomnav a .ik,.bottomnav button .ik{width:22px;height:22px;display:block;margin:0 auto 1px}
.bell-ic .ik,.navtoggle .ik{width:20px;height:20px}
.msheet-panel a .ik{width:18px;height:18px;color:#7a8699;margin-right:.35rem}
.user-dd a .ik{width:16px;height:16px;margin-right:.3rem;color:var(--muted)}

/* ---- tlačítka, pole, přepínače ---- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;border-radius:10px}
.btn .ik{width:16px;height:16px}
.btn.sm .ik{width:15px;height:15px}
.form label{color:#344054}
.form input,.form select,.form textarea{border-radius:10px;padding:.55rem .7rem;
  transition:border-color .12s,box-shadow .12s}
.form input:focus,.form select:focus,.form textarea:focus{outline:none;border-color:var(--brand);
  box-shadow:var(--fokus)}
.toggle{background:#e9edf3;border:0;padding:3px;border-radius:11px;gap:2px}
.toggle a{border-radius:8px;padding:.36rem .75rem;color:#475467;display:inline-flex;align-items:center;gap:.35rem}
.toggle a.on{background:#fff;color:var(--ink);box-shadow:var(--shadow)}

/* ---- modaly: velký formulář širší; na telefonu přes celou obrazovku ---- */
.rowedit .mini-form.pop.pop--velky{width:min(760px,96vw)}
.mform-head h3{font-size:1.05rem}
@media(max-width:640px){
  .rowedit .mini-form.pop,.rowedit .mini-form.pop.pop--velky{inset:0;transform:none;width:auto;
    max-height:none;height:auto;border-radius:0}
}

/* ---- sekce formuláře (logické celky) ---- */
.grid3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.4rem 1rem}
@media(max-width:600px){.grid3{grid-template-columns:1fr}}
.fsekce{padding:0 0 1.1rem;margin:0 0 1.1rem;border-bottom:1px solid var(--line)}
.fsekce:last-of-type{border-bottom:0;margin-bottom:0;padding-bottom:0}
.fsekce-h{display:flex;align-items:center;gap:.55rem;margin:0 0 .2rem;font-size:.95rem;font-weight:700;color:var(--ink)}
.fsekce-h .ik{width:18px;height:18px;color:var(--brand)}
.form .fsekce-pop,.fsekce-pop{margin:.1rem 0 .85rem 1.65rem;font-size:.8rem;color:var(--muted)}
.fsekce-pole{padding-left:1.65rem}
@media(max-width:640px){.form .fsekce-pop,.fsekce-pop,.fsekce-pole{margin-left:0;padding-left:0}}
.pov{color:var(--accent);font-style:normal;margin-left:.15rem}
.fsekce-h+.fsekce-pole{margin-top:.8rem}
.fsekce-pole>.volby{margin-bottom:.9rem}
.napoveda{display:block;font-weight:400;color:var(--muted);font-size:.75rem;margin-top:.3rem}
/* volba jako karta (radio) */
.volby{display:grid;grid-template-columns:1fr 1fr;gap:.6rem;margin-bottom:.2rem}
@media(max-width:520px){.volby{grid-template-columns:1fr}}
.form label.volba{display:flex;gap:.65rem;align-items:flex-start;padding:.8rem .9rem;margin:0;
  border:1.5px solid var(--line2);border-radius:12px;cursor:pointer;font-weight:400;font-size:.85rem;
  background:#fff;transition:border-color .12s,background .12s}
.form label.volba input{display:inline-block;width:auto;margin:.15rem 0 0;accent-color:var(--brand)}
.volba .ik{width:20px;height:20px;color:var(--brand);margin-top:.05rem}
.volba strong{display:block;font-size:.9rem;color:var(--ink)}
.volba small{display:block;color:var(--muted);margin-top:.1rem}
.form label.volba:has(input:checked){border-color:var(--brand);background:var(--brand-50)}

/* ---- hlavička seznamu a detailu ---- */
.shlav,.hlav{display:flex;justify-content:space-between;gap:1rem 1.5rem;flex-wrap:wrap;margin:.35rem 0 1.25rem}
.shlav{align-items:flex-end}
.hlav{align-items:flex-start}
.shlav h1,.hlav h1{font-size:1.6rem;line-height:1.2;margin:0;letter-spacing:-.015em}
.shlav p{margin:.3rem 0 0;color:var(--muted);font-size:.9rem;max-width:760px}
.shlav-akce,.hlav-akce{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap}
.hlav-nad{display:flex;align-items:center;gap:.5rem;font-size:.8rem;color:var(--muted);margin-bottom:.35rem}
.hlav-meta{display:flex;flex-wrap:wrap;gap:.35rem 1.2rem;margin-top:.55rem;color:var(--muted);font-size:.86rem}
.hlav-meta>span{display:inline-flex;align-items:center;gap:.4rem}
.hledat{position:relative;display:inline-flex}
.hledat .ik{position:absolute;left:.7rem;top:50%;transform:translateY(-50%);color:var(--muted);pointer-events:none}
.hledat input{padding:.5rem .7rem .5rem 2.1rem;border:1px solid var(--line2);border-radius:10px;
  font:inherit;width:230px;background:#fff}
.hledat input:focus{outline:none;border-color:var(--brand);box-shadow:var(--fokus)}
@media(max-width:700px){
  .shlav h1,.hlav h1{font-size:1.3rem}
  .shlav-akce{width:100%}
  .hledat{flex:1}.hledat input{width:100%}
  /* akce v hlavičce detailu: hlavní přes celou šířku, ostatní po dvou – nic nepřetéká */
  .hlav-akce{width:100%;display:grid;grid-template-columns:1fr 1fr}
  .hlav-akce>:first-child{grid-column:1/-1}
  .hlav-akce>*>summary.btn,.hlav-akce>.btn{width:100%}
}

/* ---- štítky stavů ---- */
.stitek{display:inline-flex;align-items:center;gap:.35rem;padding:.14rem .6rem;border-radius:999px;
  font-size:.74rem;font-weight:700;background:#eef2f7;color:#475467;white-space:nowrap}
.stitek::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}
.stitek--aktivni{background:#e8efff;color:#1d4ed8}
.stitek--odlozeno{background:#fff4e0;color:#b45309}
.stitek--prevedeno{background:#e6f6ec;color:#15803d}
.stitek--bez_vysledku{background:#f1f2f4;color:#6b7280}
.stitek--vysoka,.stitek--urgentni{background:#fdecef;color:#b42318}

/* ---- rozvržení detailu: hlavní obsah + boční údaje ---- */
.rozvrh{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:1.25rem;align-items:start}
.rozvrh-hlavni,.rozvrh-bok{display:flex;flex-direction:column;gap:1.25rem;min-width:0}
@media(max-width:1000px){.rozvrh{grid-template-columns:1fr}}

/* ---- blok (karta s hlavičkou) ---- */
.blok{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}
.blok-h{display:flex;align-items:center;justify-content:space-between;gap:.75rem;
  padding:.85rem 1.15rem;border-bottom:1px solid var(--line)}
.blok-h h2{display:flex;align-items:center;gap:.5rem;margin:0;font-size:.95rem;font-weight:700}
.blok-h h2 .ik{width:18px;height:18px;color:var(--muted)}
.blok-h .pocet{font-size:.75rem;font-weight:700;color:var(--muted);background:#eef2f7;border-radius:999px;padding:.05rem .5rem}
.blok-b{padding:1.1rem 1.15rem}
.blok--hlavni{border-color:#cdd5e5;box-shadow:0 0 0 4px var(--brand-50),var(--shadow)}
.banner{display:flex;align-items:center;gap:.75rem;padding:.85rem 1.1rem;border-radius:var(--radius);
  margin:0 0 1.25rem;font-size:.92rem;border:1px solid}
.banner .ik{width:20px;height:20px}
.banner--ok{background:#ecfdf3;border-color:#abefc6;color:#067647}
.banner--sedy{background:#f6f7f9;border-color:var(--line);color:#475467}
.banner a{font-weight:700;text-decoration:underline;text-underline-offset:2px}

/* ---- údaje (boční panel) ---- */
.udaje{display:flex;flex-direction:column;gap:.9rem}
.udaj{display:flex;gap:.7rem;align-items:flex-start}
.udaj>.ik{width:18px;height:18px;color:#98a2b3;margin-top:.15rem}
.udaj-l{display:block;font-size:.74rem;color:var(--muted);font-weight:600}
.udaj-h{display:block;font-weight:600;color:var(--ink);overflow-wrap:anywhere}
.udaj-h a{color:var(--brand);text-decoration:underline;text-decoration-color:#c5cde0;text-underline-offset:2px}
.udaj-h .muted{font-weight:400}
.udaje-popis{margin:1rem 0 0;padding:.75rem .85rem;background:#f6f8fb;border-radius:10px;font-size:.88rem;white-space:pre-wrap}

/* ---- další krok ---- */
.krok-ted{display:flex;gap:.9rem;align-items:center;padding:.9rem 1rem;border-radius:12px;
  background:#f6f8fc;border:1px solid var(--line);margin-bottom:1.1rem}
.krok-ted-ik{display:grid;place-items:center;width:42px;height:42px;border-radius:12px;background:#fff;
  border:1px solid var(--line);color:var(--brand);flex:none}
.krok-ted-ik .ik{width:20px;height:20px}
.krok-ted-text{flex:1;min-width:0}
.krok-ted-text strong{display:block;font-size:1rem}
.krok-ted-text small{color:var(--muted)}
.termin-pill{display:inline-flex;align-items:center;gap:.35rem;padding:.25rem .6rem;border-radius:999px;
  background:#fff;border:1px solid var(--line);font-size:.8rem;font-weight:700;color:#344054;white-space:nowrap}
.termin-pill .ik{width:14px;height:14px}
@media(max-width:520px){
  .krok-ted{flex-wrap:wrap}
  .krok-ted-text{flex:1 1 calc(100% - 60px)}
  .krok-ted .termin-pill{margin-left:57px}
}
.termin-pill.over{background:#fef3f2;border-color:#fecdca;color:#b42318}
.termin-pill.dnes{background:#fffaeb;border-color:#fedf89;color:#b54708}

/* ---- časová osa ---- */
.osa{list-style:none;margin:0;padding:0}
.osa li{position:relative;padding:0 0 1.15rem 1.9rem}
.osa li::before{content:"";position:absolute;left:8px;top:1.25rem;bottom:.1rem;width:2px;background:var(--line)}
.osa li:last-child{padding-bottom:0}
.osa li:last-child::before{display:none}
.osa-tecka{position:absolute;left:0;top:.15rem;width:18px;height:18px;border-radius:50%;
  background:#fff;border:2px solid #cbd5e1;display:grid;place-items:center}
.osa-tecka .ik{width:10px;height:10px;color:#fff}
.osa li.hotovo .osa-tecka{background:var(--brand);border-color:var(--brand)}
.osa li.otevreny .osa-tecka{border-color:var(--accent);box-shadow:0 0 0 4px #fde7ec}
.osa-hl{display:flex;align-items:center;gap:.45rem;font-weight:600;flex-wrap:wrap}
.osa-hl .ik{width:16px;height:16px;color:var(--muted)}
.osa-kdy{font-size:.78rem;color:var(--muted);margin-top:.1rem}
.osa-vysl{margin-top:.4rem;padding:.5rem .7rem;background:#f6f8fb;border-radius:9px;font-size:.88rem}

/* ---- řádkový seznam (na telefonu karty) ---- */
.radky{overflow:hidden}
.radek{display:grid;grid-template-columns:72px minmax(0,2.2fr) minmax(0,1.7fr) 120px 170px;gap:.2rem 1rem;
  align-items:center;padding:.5rem 1.15rem;border-top:1px solid var(--line);color:inherit;min-height:52px}
.radek:first-child{border-top:0}
a.radek:hover{background:#f8fafc}
.radek--hlava{font-size:.72rem;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.03em;
  padding-top:.5rem;padding-bottom:.5rem;min-height:0;background:#fafbfd}
.radek-hl{min-width:0}
.radek-nazev{display:flex;align-items:center;gap:.45rem;min-width:0}
.radek-nazev strong{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:.93rem;line-height:1.3}
.radek-cislo{font-size:.75rem;color:var(--muted);font-weight:600;font-variant-numeric:tabular-nums}
.radek-pod{display:flex;align-items:center;gap:.3rem;font-size:.8rem;line-height:1.3;color:var(--muted);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.radek-pod .ik{width:14px;height:14px}
.radek-krok{display:flex;align-items:center;gap:.45rem;font-size:.88rem;min-width:0}
.radek-krok span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.radek-krok .ik{width:16px;height:16px;color:var(--brand)}
.radek-kdo{display:flex;align-items:center;gap:.5rem;font-size:.85rem;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.radek--hlava .r,.radek-cislo-r{text-align:right}
.radek-cislo-r{font-variant-numeric:tabular-nums;font-size:.88rem;font-weight:600;white-space:nowrap}
.radek-mono{font-variant-numeric:tabular-nums;font-size:.85rem;color:#344054}
.radek-spojeni{flex-wrap:wrap;white-space:normal}
.radky--kontakty .radek{grid-template-columns:minmax(0,1fr) 84px minmax(0,320px) 64px 120px}
.radky--objekty .radek{grid-template-columns:minmax(0,1fr) minmax(0,240px) 52px 90px 64px}
@media(max-width:820px){
  .radky .radek[class]{grid-template-columns:minmax(0,1fr) auto}
  .radky--kontakty .radek>:nth-child(2),.radky--kontakty .radek>:nth-child(4),
  .radky--objekty .radek>:nth-child(3),.radky--objekty .radek>:nth-child(5){display:none}
}
.radek-oddil{padding:.6rem 1.15rem;background:#fafbfd;border-top:1px solid var(--line);
  font-size:.8rem;font-weight:700;color:var(--muted);display:flex;align-items:center;gap:.4rem}
.radek--tlumeny{opacity:.72}
@media(max-width:820px){
  .radek--hlava{display:none}
  .radek{grid-template-columns:minmax(0,1fr) auto;padding:.65rem 1rem}
  .radek-hl{grid-column:1/-1}
  .radek-cislo{display:none}
  .radek-kdo{display:none}
}

/* ---- lišta seznamu: záložky vlevo, filtr a hledání vpravo ---- */
.listar{display:flex;align-items:flex-end;justify-content:space-between;gap:.5rem 1rem;flex-wrap:wrap;
  border-bottom:1px solid var(--line);margin:0 0 1.1rem}
.listar .zalozky{border-bottom:0;margin:0}
.listar-nastroje{display:flex;align-items:center;gap:.5rem;padding-bottom:.5rem;flex-wrap:wrap}
@media(max-width:700px){.listar-nastroje{width:100%;order:-1;padding-bottom:.6rem}}
/* ---- záložky ---- */
.zalozky{display:flex;gap:.25rem;border-bottom:1px solid var(--line);margin:0 0 1.1rem;overflow-x:auto;scrollbar-width:none}
.zalozky a{display:inline-flex;align-items:center;gap:.4rem;padding:.6rem .85rem;font-weight:600;color:var(--muted);
  border-bottom:2px solid transparent;margin-bottom:-1px;white-space:nowrap}
.zalozky a:hover{color:var(--ink)}
.zalozky a.on{color:var(--ink);border-bottom-color:var(--accent)}
.zalozky .pocet{min-width:1.5em;padding:0 .4rem;border-radius:999px;background:#eef2f7;font-size:.72rem;text-align:center}

/* ---- prázdný stav ---- */
.prazdno{text-align:center;padding:2.75rem 1rem;color:var(--muted)}
.prazdno-ik{display:inline-grid;place-items:center;width:54px;height:54px;border-radius:15px;
  background:var(--brand-50);color:var(--brand);margin-bottom:.8rem}
.prazdno-ik .ik{width:26px;height:26px}
.prazdno h3{margin:0 0 .35rem;color:var(--ink);font-size:1.02rem}
.prazdno p{margin:0 auto;max-width:440px;font-size:.88rem}

/* ---- sjednocení starších obrazovek s novými komponentami ---- */
/* nadpisy karet jako hlavička bloku: normální písmo, ikona, oddělovací linka */
.ov-card h6{display:flex;align-items:center;gap:.5rem;margin:-1rem -1rem 1rem;padding:.8rem 1rem;
  border-bottom:1px solid var(--line);font-size:.95rem;font-weight:700;letter-spacing:0;
  text-transform:none;color:var(--ink)}
.konv-head h6,.fi-blok h6,.ph-graf-box h6{display:flex;align-items:center;gap:.5rem;font-size:.95rem;
  font-weight:700;letter-spacing:0;text-transform:none;color:var(--ink)}
.ov-card h6 .ik,.konv-head h6 .ik,.fi-blok h6 .ik,.ph-graf-box h6 .ik,.cust-sec-head h2 .ik{width:18px;height:18px;color:var(--muted)}
.cust-sec-head h2{display:flex;align-items:center;gap:.5rem;font-size:1.05rem}
.card>h6{display:flex;align-items:center;gap:.5rem;margin:0 0 .8rem;font-size:.95rem;font-weight:700;
  letter-spacing:0;text-transform:none;color:var(--ink)}
.card>h6 .ik{width:18px;height:18px;color:var(--muted)}
/* záložky detailu: podtržení jako .zalozky, jedna barva */
.tabs{border-bottom:1px solid var(--line);gap:.25rem;padding-bottom:0}
.tab{border:0;border-bottom:2px solid transparent;border-radius:0;margin-bottom:-1px;padding:.65rem .9rem}
.tab:hover{background:none}
.tab.on,.tab.on.t-prubeh,.tab.on.t-rozpocet,.tab.on.t-fakturace{background:none;border-bottom-color:var(--accent)}
.tab-ic{filter:none;color:var(--muted);display:inline-flex}
.tab-ic .ik{width:17px;height:17px}
.tab.on .tab-ic{color:var(--accent)}
/* hlavička stránky */
.page-head h1{font-size:1.3rem;font-weight:800;letter-spacing:-.01em}
@media(max-width:820px){
  /* detail (bez lišty filtrů): název nahoře, akce pod ním – nic neuteče za okraj */
  .page-head:not(:has(>.row.gap,>.toolbar)),.page-head.row:not(:has(>.row.gap,>.toolbar)){flex-wrap:wrap}
  .page-head:not(:has(>.row.gap,>.toolbar))>div:first-child{flex-basis:100%}
  /* detail (s odkazem zpět): i lišta akcí se zalomí místo posouvání do boku */
  .back ~ .page-head,.back ~ .page-head.row{flex-wrap:wrap}
  .back ~ .page-head>div:first-child{flex-basis:100%}
  .back ~ .page-head>.row.gap,.back ~ .page-head>.toolbar{flex-wrap:wrap;overflow:visible}
}

/* hlavička seznamů (stará .page-head bez odkazu zpět) vypadá jako .shlav:
   velký nadpis, popis pod ním, akce vpravo; detaily (.back ~ .page-head)
   si nechávají kompaktní lepící lištu */
.page-head:not(.back ~ .page-head){position:static;background:none;border-bottom:0;
  margin:.35rem 0 1.15rem;padding:0;min-height:0;align-items:flex-end}
.page-head:not(.back ~ .page-head)>div:first-child{flex-direction:column;align-items:flex-start;gap:.3rem}
.page-head:not(.back ~ .page-head) h1{font-size:1.6rem;letter-spacing:-.015em}
.page-head:not(.back ~ .page-head) p{font-size:.9rem;max-width:760px}
@media(max-width:700px){.page-head:not(.back ~ .page-head) h1{font-size:1.3rem}}
.st-mapa-head h6{margin:0;padding:0;border:0}
/* tabulky v duchu řádkových seznamů */
.table th{background:#fafbfd;font-size:.72rem;font-weight:700;padding:.55rem .75rem;border-bottom:1px solid var(--line);color:var(--muted)}
.table td{padding:.6rem .75rem;border-bottom-color:var(--line)}
.table tbody tr:last-child td{border-bottom:0}
.table tbody tr[data-odkaz]:hover td,.table tbody tr:hover td{background:#f8fafc}
.table td.mono{white-space:nowrap}

/* ====== BARVY: modul stránky (--m) a lidé (avatary) ======
   Barva říká, KDE jsem (obchod, příprava, realizace…), ne v jakém stavu
   věc je – na stav jsou dál jen významové barvy (červená po termínu,
   zelená hotovo). Modul nastavuje base.html podle cesty (data-modul). */
:root{--m-osobni:#c1123f;--m-obchod:#2563eb;--m-priprava:#7c3aed;--m-realizace:#ea580c;
  --m-servis:#0891b2;--m-evidence:#059669;--m-sprava:#64748b}
body,.m-osobni{--m:var(--m-osobni)}
body[data-modul=obchod],.m-obchod{--m:var(--m-obchod)}
body[data-modul=priprava],.m-priprava{--m:var(--m-priprava)}
body[data-modul=realizace],.m-realizace{--m:var(--m-realizace)}
body[data-modul=servis],.m-servis{--m:var(--m-servis)}
body[data-modul=evidence],.m-evidence{--m:var(--m-evidence)}
body[data-modul=sprava],.m-sprava{--m:var(--m-sprava)}

.side .ic,.msheet-panel a .ik{color:var(--m)}
.side a.on{background:color-mix(in srgb,var(--m) 10%,#fff);box-shadow:none}
.side a.on .ic{color:var(--m)}

/* ikona v hlavičce bloku/karty = dlaždice v barvě modulu */
.blok-h h2 .ik,.ov-card h6 .ik,.konv-head h6 .ik,.fi-blok h6 .ik,.ph-graf-box h6 .ik,
.cust-sec-head h2 .ik,.card>h6 .ik{box-sizing:content-box;width:16px;height:16px;padding:6px;
  border-radius:9px;flex:none;color:var(--m);background:color-mix(in srgb,var(--m) 12%,#fff)}
.fsekce-h .ik{color:var(--m)}
.prazdno-ik{color:var(--m);background:color-mix(in srgb,var(--m) 10%,#fff)}

/* hlavička detailu s dlaždicí modulu */
.hlav-s-ik{display:flex;gap:1rem;align-items:flex-start;min-width:0}
.hlav-ik{display:grid;place-items:center;width:52px;height:52px;border-radius:15px;flex:none;
  color:var(--m);background:color-mix(in srgb,var(--m) 12%,#fff);margin-top:.1rem}
.hlav-ik .ik{width:26px;height:26px}
.hlav-popis{margin:.4rem 0 0;color:#475467;font-size:.92rem;max-width:720px;white-space:pre-wrap}
@media(max-width:700px){.hlav-ik{width:42px;height:42px;border-radius:12px}.hlav-ik .ik{width:22px;height:22px}}

/* každý člověk má svou barvu – v týmu, kanbanu i konverzaci ho poznáš na první pohled */
.avatar.av0{background:#1d4ed8}.avatar.av1{background:#c1123f}.avatar.av2{background:#7c3aed}
.avatar.av3{background:#c2410c}.avatar.av4{background:#0e7490}.avatar.av5{background:#047857}
.avatar.av6{background:#be185d}.avatar.av7{background:#4d7c0f}

/* stavy úkolů a prostorů */
.stitek--todo,.stitek--soukromy{background:#f1f2f4;color:#475467}
.stitek--probiha,.stitek--sdileny{background:#e8efff;color:#1d4ed8}
.stitek--kontrola{background:#fef3c7;color:#92400e}
.stitek--hotovo{background:#e6f6ec;color:#15803d}
.stitek--blokovano{background:#fdecef;color:#b42318}

/* postup (x z y hotovo) v hlavičce bloku */
.postup{display:flex;align-items:center;gap:.55rem;font-size:.8rem;font-weight:700;color:var(--muted)}
.postup-bar{width:110px;height:6px;border-radius:99px;background:#eef2f7;overflow:hidden}
.postup-bar i{display:block;height:100%;background:var(--ok);border-radius:inherit}

/* úkoly v řádcích */
.radky--ukoly .radek{grid-template-columns:minmax(0,1fr) 100px 132px 180px}
.ukol-ik{width:18px;height:18px;color:#cbd5e1;flex:none}
.radek--hotovo .ukol-ik{color:var(--ok)}
.radek--hotovo .radek-nazev strong{color:var(--muted);font-weight:600}
.radek-odsaz{padding-left:calc(18px + .45rem)}
.tym-pridat{margin-top:.75rem}
.blok-b>.napoveda{display:flex;align-items:center;gap:.4rem;margin:.75rem 0 0}
.blok-b>.napoveda .ik{width:14px;height:14px}
@media(max-width:820px){
  /* úkol na telefonu: název přes celou šířku, pod ním stav · termín · avatar řešitele */
  .radky--ukoly .radek[class]{grid-template-columns:auto minmax(0,1fr) auto}
  .radky--ukoly .radek-kdo{display:flex}
  .radky--ukoly .radek-kdo>span:not(.avatar){display:none}
}
.ov-now-it{display:flex;align-items:center;gap:.4rem}
.ov-now-it .ik{width:15px;height:15px;color:var(--m);flex:none}

/* ====== detail milníku / úkolu: vlastnosti místo krabice s poli ======
   Na šířce stránky vlastnosti v pravém sloupci; v okně a na telefonu nahoře
   (v okně ve dvou sloupcích). Řídí se šířkou obsahu, ne okna – stejný
   fragment se zobrazuje na stránce i ve vyskakovacím okně. */
.detail{max-width:1120px}
.detail-body{container:detail / inline-size}
.detail-grid{display:flex;flex-direction:column;gap:1rem}
.detail-hlavni{display:flex;flex-direction:column;gap:1rem;min-width:0}
.detail-hlavni>.detail-sec{margin:0}
.detail-bok{display:flex;flex-direction:column;gap:.75rem;min-width:0}
.detail-bok .dm-hint{margin:0}
@container detail (min-width:860px){
  .detail-grid{display:grid;grid-template-columns:minmax(0,1fr) 340px;align-items:start;gap:1.25rem}
  .detail-bok{order:2;position:sticky;top:76px}
}
.vlast{display:grid;grid-template-columns:minmax(0,1fr);padding:.35rem}
@container detail (min-width:540px) and (max-width:859px){
  .vlast{grid-template-columns:repeat(2,minmax(0,1fr));column-gap:.35rem}
}
.vlast-r{display:grid;grid-template-columns:96px minmax(0,1fr);align-items:center;gap:.4rem;min-height:42px;padding:0 .4rem}
.vlast-l{display:flex;align-items:center;gap:.5rem;font-size:.84rem;color:var(--muted);min-width:0}
.vlast-l .ik{width:16px;height:16px;color:#98a2b3;flex:none}
.vlast-h{position:relative;display:flex;align-items:center;gap:.35rem;min-width:0}
.vlast-av{display:inline-flex;flex:none}
.avatar--nikdo{background:#fff;border:1.5px dashed #cbd5e1;color:#94a3b8}
.vlast .vlast-sel,.vlast .vlast-btn{appearance:none;-webkit-appearance:none;width:100%;min-width:0;max-width:none;
  border:1px solid transparent;background:transparent;border-radius:8px;padding:.38rem 1.7rem .38rem .5rem;
  font:inherit;font-size:.9rem;font-weight:600;color:var(--ink);cursor:pointer;text-align:left;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.vlast .vlast-sel:hover,.vlast .vlast-btn:hover{background:#f1f5f9}
.vlast .vlast-sel:focus,.vlast .vlast-btn:focus-visible{outline:none;border-color:var(--accent);background:#fff}
.vlast .vlast-sel:has(option[value=""]:checked),.vlast .vlast-btn.prazdny{color:var(--muted);font-weight:500}
.vlast .vlast-btn{padding-right:.5rem}
.vlast .vlast-btn.over{color:#b42318}
.vlast .daterange{flex:1;min-width:0}
.vlast-chev{position:absolute;right:.45rem;top:50%;transform:translateY(-50%);width:14px;height:14px;
  color:#98a2b3;pointer-events:none;opacity:0;transition:opacity .12s}
.vlast-h:hover .vlast-chev,.vlast-sel:focus+.vlast-chev{opacity:1}
@media(hover:none){.vlast-chev{opacity:.7}}
.vlast-pevne{padding:.38rem .5rem;border:1px solid transparent;font-size:.9rem;font-weight:600;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.prio-tecka{width:9px;height:9px;border-radius:50%;flex:none;margin-left:.45rem;margin-right:-.3rem;background:#cbd5e1}
.prio-tecka[data-v="Normální"]{background:#60a5fa}
.prio-tecka[data-v="Vysoká"]{background:#f59e0b}
.prio-tecka[data-v="Urgentní"]{background:#ef4444}
/* nadpisy sekcí detailu s dlaždicí jako ostatní bloky; panel formátování až při psaní */
.detail-sec>h2 .ik{box-sizing:content-box;width:16px;height:16px;padding:6px;border-radius:9px;flex:none;
  color:var(--m);background:color-mix(in srgb,var(--m) 12%,#fff)}
.rt-toolbar{display:none}
.rt:focus-within .rt-toolbar{display:flex}
.popis-edit{min-height:52px}
.vlast .vlast-btn{display:flex;align-items:center;gap:.35rem}
.vlast .vlast-btn .ik{width:15px;height:15px;flex:none}
.vlast .dr-label{overflow:hidden;text-overflow:ellipsis}
textarea.edit-title{display:block;resize:none;overflow:hidden;font-family:inherit;line-height:1.25;
  padding:.2rem .4rem;color:var(--ink);background:transparent}
@media(max-width:700px){.edit-title{font-size:1.2rem}}
.stavpick-btn.lg{box-shadow:inset 0 0 0 1px rgba(15,23,42,.1)}

/* ====== Moje agenda: řádky položek a měsíční kalendář ====== */
.ag-hlav{margin-bottom:.9rem}
.ag-hlav .ag-po{color:#b42318}
.ag-2col{grid-template-columns:minmax(0,1fr) 400px;gap:1rem}
.ag-akce,.ag-kontext{gap:1rem}
@media(max-width:1250px){.ag-2col{grid-template-columns:minmax(0,1fr) 350px}}
@media(max-width:1000px){.ag-2col{grid-template-columns:1fr}}

.arows{overflow:hidden}
.arows--pozor{border-color:#fecdca}
.arows--pozor>.blok-h h2{color:#b42318}
.arows--pozor>.blok-h h2 .ik{color:#b42318;background:#fef3f2}
.arow{display:grid;grid-template-columns:26px minmax(0,1fr) auto;align-items:center;gap:.7rem;
  padding:.4rem 1rem;border-top:1px solid #f1f3f6;color:inherit;min-height:40px}
.blok-h+.arow,.arow-den+.arow{border-top:0}
a.arow:hover{background:#f8fafc}
.arow-ik{display:grid;place-items:center;width:26px;height:26px;border-radius:7px;
  color:var(--m);background:color-mix(in srgb,var(--m) 11%,#fff)}
.arow-ik .ik{width:15px;height:15px}
.arow-txt{display:flex;align-items:baseline;gap:.65rem;min-width:0}
.arow-nazev{flex:0 1 auto;max-width:62%;font-weight:600;font-size:.9rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.arow-kde{flex:1 1 0;min-width:0;font-size:.8rem;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.arow-druh{font-size:.64rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:#98a2b3;margin-right:.5rem}
.arow-sip{margin:0 .3rem;color:#cbd5e1}
.arow-prav{display:flex;align-items:center;gap:.55rem;justify-content:flex-end}
.arow-role{display:inline-flex;align-items:center;gap:.25rem;font-size:.75rem;color:var(--muted);white-space:nowrap}
.arow-role .ik{width:13px;height:13px}
.arow-kdy{width:46px;text-align:right;font-size:.8rem;font-weight:700;font-variant-numeric:tabular-nums;color:#344054;white-space:nowrap}
.arow.over .arow-kdy{color:#b42318}
.arow-den{display:flex;align-items:baseline;gap:.5rem;padding:.4rem 1rem .3rem;background:#fafbfd;
  border-top:1px solid var(--line);font-size:.78rem;scroll-margin-top:80px}
.blok-h+.arow-den{border-top:0}
.arow-den strong{color:var(--ink);font-size:.8rem}
.arow-den span{color:var(--muted)}
.arow-den i{margin-left:auto;font-style:normal;color:var(--muted);font-size:.72rem}
.ag-bez.blok{border:1px solid var(--line);border-radius:var(--radius);padding:0;background:var(--surface)}
.ag-bez>summary.blok-h{cursor:pointer;list-style:none;padding:.6rem 1rem;font-size:inherit}
.ag-bez>summary::-webkit-details-marker{display:none}
.ag-bez>summary::before{content:none}
.ag-bez:not([open])>summary{border-bottom:0}
.ag-bez-sip{width:16px;height:16px;color:var(--muted);transition:transform .15s}
.ag-bez[open] .ag-bez-sip{transform:rotate(180deg)}
@media(max-width:700px){
  .arow{gap:.6rem;padding:.5rem .8rem}
  .arow-txt{flex-direction:column;align-items:stretch;gap:.05rem}
  .arow-nazev{max-width:100%}
  .arow-kde{flex:none}
  .arow-prav .stitek,.arow-prav .arow-role{display:none}
}

.akal{padding:.55rem .65rem .7rem}
.kal-h{display:flex;align-items:center;gap:.35rem;padding:.15rem .25rem .55rem}
.kal-h h2{flex:1;display:flex;align-items:center;gap:.5rem;margin:0;font-size:.98rem;font-weight:800}
.kal-h h2 .ik{box-sizing:content-box;width:16px;height:16px;padding:6px;border-radius:9px;
  color:var(--m);background:color-mix(in srgb,var(--m) 12%,#fff)}
.kal-nav{display:grid;place-items:center;width:30px;height:30px;border-radius:8px;border:1px solid var(--line);color:var(--muted)}
.kal-nav:hover{background:#f1f5f9;color:var(--ink)}
.kal-nav .ik{width:16px;height:16px}
.kal-mrizka{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:2px}
.kal-dn{font-size:.66rem;font-weight:700;color:var(--muted);text-align:center;padding:.15rem 0 .3rem;text-transform:uppercase;letter-spacing:.03em}
.kal-den{display:flex;flex-direction:column;align-items:center;gap:.2rem;height:48px;padding:.3rem 0 0;
  border:0;border-radius:9px;background:transparent;font:inherit;color:var(--ink);cursor:pointer}
.kal-den:hover{background:#f1f5f9}
.kal-den.vikend{background:#fafbfc}
.kal-den.mimo{color:#c3cad5}
.kal-cislo{display:grid;place-items:center;width:26px;height:26px;border-radius:50%;font-size:.84rem;
  font-weight:600;font-variant-numeric:tabular-nums}
.kal-den.po .kal-cislo{color:#b42318;font-weight:800}
.kal-den.dnes .kal-cislo{background:var(--accent);color:#fff;font-weight:800}
.kal-den.vybrany{background:#fff5f7;box-shadow:inset 0 0 0 1.5px #f4b6c4}
.kal-tecky{display:flex;align-items:center;gap:3px;height:6px}
.kal-tecky i{width:6px;height:6px;border-radius:50%;background:var(--m)}
.kal-den.po .kal-tecky i{background:#ef4444}
.kal-tecky b{font-size:.6rem;line-height:1;color:var(--muted);font-weight:700;margin-left:1px}
.kal-vyber{border-top:1px solid var(--line);margin-top:.55rem;padding-top:.45rem}
.kal-denlist-h{font-size:.76rem;font-weight:700;color:var(--muted);padding:0 .35rem .25rem}
.kal-it{display:grid;grid-template-columns:18px minmax(0,1fr);column-gap:.5rem;align-items:center;
  padding:.32rem .35rem;border-radius:8px;color:inherit}
.kal-it:hover{background:#f8fafc}
.kal-it .ik{width:15px;height:15px;color:var(--m);grid-row:span 2}
.kal-it span{font-size:.86rem;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.kal-it small{grid-column:2;font-size:.74rem;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.kal-nic{margin:0;padding:.15rem .35rem;font-size:.82rem;color:var(--muted)}
.ag-seznam{padding:.35rem 1rem .6rem}
.ag-nic{margin:.35rem 0;font-size:.84rem;color:var(--muted)}
.ag-kont-ic{display:grid;place-items:center;width:26px;height:26px;border-radius:7px;font-size:inherit;
  color:var(--m);background:color-mix(in srgb,var(--m) 11%,#fff)}
.ag-kont-ic .ik{width:15px;height:15px}
.blok-h .pocet.warn{background:#fee2e2;color:#991b1b}
.pl-tbl td{white-space:nowrap}
.pl-tbl td.pl-obj{white-space:normal}
.pl-obj a{margin-right:.35rem}
.pl-akce{display:flex;gap:.3rem;justify-content:flex-end;align-items:center}
/* seznamy kontaktů a objektů na jeden řádek: vedlejší údaj hned za názvem */
.radky--kontakty .radek,.radky--objekty .radek,.radky--akvizice .radek{min-height:44px;padding-top:.35rem;padding-bottom:.35rem}
.radky--kontakty .radek-hl,.radky--objekty .radek-hl,.radky--akvizice .radek-hl{display:flex;align-items:baseline;gap:.6rem;min-width:0}
.radky--kontakty .radek-nazev,.radky--objekty .radek-nazev,.radky--akvizice .radek-nazev{flex:0 1 auto;max-width:70%}
.radky--kontakty .radek-hl>.radek-pod,.radky--objekty .radek-hl>.radek-pod,.radky--akvizice .radek-hl>.radek-pod{flex:1 1 0;min-width:0}
.radky--kontakty .radek-spojeni{flex-wrap:nowrap;white-space:nowrap}
@media(max-width:820px){
  .radky--kontakty .radek-hl,.radky--objekty .radek-hl,.radky--akvizice .radek-hl{flex-direction:column;align-items:stretch;gap:.05rem}
  .radky--kontakty .radek-hl>.radek-pod,.radky--objekty .radek-hl>.radek-pod,.radky--akvizice .radek-hl>.radek-pod{flex:none}
  .radky--kontakty .radek-nazev,.radky--objekty .radek-nazev,.radky--akvizice .radek-nazev{max-width:100%}
}
.radky--akvizice .radek{grid-template-columns:72px minmax(0,1fr) minmax(0,260px) 116px 150px}

/* agenda v2: pevné sloupce – všechno zarovnané pod sebou */
.arows .arow{grid-template-columns:96px minmax(0,1.55fr) minmax(0,1fr) 104px 24px 48px;
  gap:.75rem;align-items:center}
.arow--hlava{min-height:0;padding-top:.4rem;padding-bottom:.4rem;background:#fafbfd;font-size:.68rem;font-weight:700;
  color:var(--muted);text-transform:uppercase;letter-spacing:.03em}
.arow--hlava .r{text-align:right}
.arow-druh{display:inline-flex;align-items:center;gap:.3rem;justify-self:start;padding:.16rem .5rem .16rem .4rem;
  border-radius:7px;font-size:.72rem;font-weight:700;white-space:nowrap}
.arow-druh .ik{width:13px;height:13px;flex:none}
.druh--milnik{background:#fbefff;color:#9d1fb0}
.druh--ukol{background:#eaf1ff;color:#1d4ed8}
.druh--podukol{background:#e6f6f3;color:#0f766e}
.druh--dalsi_krok{background:#fff3e2;color:#b45309}
.druh--akvizice{background:#eef0ff;color:#4338ca}
.arows .arow-nazev{max-width:none;font-weight:600;font-size:.9rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.arow-kde{display:flex;flex-direction:column;justify-content:center;min-width:0;line-height:1.25}
.arow-kde-1,.arow-kde-2{display:flex;align-items:center;gap:.35rem;min-width:0}
.arow-kde-1{font-size:.82rem;color:#475467}
.arow-kde-2{font-size:.74rem;color:var(--muted)}
.arow-kde span span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.arow-kde-1 .ik{width:14px;height:14px;flex:none;color:var(--m)}
.arow-kde-2 .ik{width:12px;height:12px;flex:none;color:#98a2b3}
.arow-stav{display:flex;min-width:0}
.arow-kdo{display:flex;justify-content:center}
.arows .arow-kdy{width:auto;text-align:right}
@media(max-width:700px){
  .arow--hlava{display:none}
  .arows .arow{grid-template-columns:auto minmax(0,1fr) auto;grid-template-areas:"druh nazev kdy" "druh kde kdy";
    row-gap:.1rem;column-gap:.6rem;padding:.5rem .8rem}
  .arows .arow-druh{grid-area:druh;align-self:start;font-size:0;gap:0;padding:.3rem}
  .arows .arow-druh .ik{width:15px;height:15px}
  .arows .arow-nazev{grid-area:nazev}
  .arows .arow-kde{grid-area:kde}
  .arows .arow-kdy{grid-area:kdy}
  .arows .arow-stav,.arows .arow-kdo{display:none}
}

/* ====== detail milníku / úkolu v3: štítky pod názvem, popis bez karty, menší mezery ====== */
.detail{max-width:920px}
.detail-head{margin-bottom:.7rem}
.edit-title{font-size:1.35rem}
.detail-head .vlast{display:flex;flex-wrap:wrap;align-items:center;gap:.4rem;padding:0;margin:.4rem 0 0}
.vlast-r{position:relative;display:inline-flex;align-items:center;gap:.35rem;height:30px;min-height:0;max-width:100%;
  padding:0 .6rem;border:1px solid var(--line);border-radius:8px;background:#fff;
  font-size:.84rem;font-weight:600;color:var(--ink);cursor:pointer}
.vlast-r:hover{border-color:var(--line2);background:#f8fafc}
.vlast-r:focus-within{border-color:var(--accent);box-shadow:var(--fokus)}
.vlast-r.prazdny{color:var(--muted);font-weight:500;border-style:dashed}
.vlast-ik{width:14px;height:14px;color:#98a2b3;flex:none}
.vlast-txt{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:230px}
/* neviditelný select přes celý štítek – nativní výběr (i na telefonu), štítek široký podle textu */
.vlast-r .vlast-sel{position:absolute;inset:0;width:100%;height:100%;margin:0;padding:0;border:0;
  opacity:0;cursor:pointer;-webkit-appearance:none;appearance:none;font-size:16px}
.vlast-r:has(.vlast-av){padding-left:.3rem}
.vlast-av .avatar.sm{width:21px;height:21px;font-size:.56rem}
.vlast-r .prio-tecka{margin:0}
.vlast-r--termin{padding:0}
.vlast-r--termin .daterange{flex:none;display:block}
.vlast-r--termin .vlast-btn{display:inline-flex;align-items:center;gap:.35rem;width:auto;height:28px;padding:0 .6rem;
  border:0;border-radius:8px;background:transparent;font:inherit;font-weight:inherit;color:inherit;cursor:pointer}
.vlast-r--termin .vlast-btn:hover{background:transparent}
.vlast-r--termin.over{color:#b42318;border-color:#fecdca;background:#fef3f2}
.vlast-r--termin.over .vlast-ik{color:#b42318}
.vlast-zadal{font-size:.78rem;color:var(--muted);margin-left:.2rem}
.vlast-hint{display:flex;align-items:center;gap:.4rem;margin:.45rem 0 0;font-size:.78rem;color:#475467}
.vlast-hint .ik{width:14px;height:14px;color:#b45309;flex:none}
/* popis: obyčejný text pod hlavičkou, rámeček až při najetí a psaní */
.rt.detail-popis{border:1px solid transparent;border-radius:10px;background:transparent;overflow:visible}
.rt.detail-popis:hover{border-color:var(--line)}
.rt.detail-popis:focus-within{border-color:var(--line2);background:#fff}
.detail-popis .popis-edit{min-height:0;padding:.4rem .6rem;font-size:.93rem}
.detail-popis .rt-toolbar{border-radius:10px 10px 0 0}
.detail-hlavni{gap:.7rem}
.detail-hlavni>.detail-sec{padding:.75rem 1rem}
.detail-sec>h2{font-size:.92rem;margin:0 0 .45rem}
.detail-sec>h2 .ik{width:14px;height:14px;padding:5px;border-radius:8px}
.dmodal .detail-head{padding-bottom:.75rem}
.dmodal .detail-body{padding-top:.6rem}
/* historie: jeden záznam = jeden řádek (kdy s časem · co · kdo) */
.cosa-it{grid-template-columns:84px 20px 1fr auto}
.cosa-radek{padding:.26rem 0;align-items:center}
.cosa-radek .cosa-kdy{padding-top:0}
.cosa-radek .cosa-osa{padding-top:0;align-self:stretch;align-items:center}
.cosa-radek .cosa-nazev{font-weight:500;font-size:.85rem}
.cosa-kdy small{color:#98a2b3;font-size:.7rem;margin-left:.1rem}
.cosa-radek .cosa-prav .cosa-kdo{font-size:.75rem}
@media(max-width:700px){.vlast-txt{max-width:150px}.edit-title{font-size:1.15rem}}
.stitek--nezahajeno,.stitek--naplanovano{background:#f1f2f4;color:#475467}
.stitek--neresi-se{background:#f1f2f4;color:#98a2b3}
.arow-role-ik{display:grid;place-items:center;width:24px;height:24px;border-radius:50%;
  border:1.5px dashed #cbd5e1;color:#98a2b3}
.arow-role-ik .ik{width:12px;height:12px}

/* ====== detail kontaktu ====== */
.kt-udaje,.kt-2,.kt-udaje+.blok{margin-bottom:1rem}
.blok+.blok{margin-top:0}
.kt-skupiny{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0}
.kt-sk{padding:.75rem 1.15rem;min-width:0}
.kt-sk+.kt-sk{border-left:1px solid var(--line)}
.kt-sk h3{margin:0 0 .45rem;font-size:.68rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}
.kt-dl{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.3rem .8rem;margin:0;font-size:.88rem}
.kt-dl dt{color:var(--muted)}
.kt-dl dd{margin:0;font-weight:600;overflow-wrap:anywhere}
.kt-dl a{color:var(--brand)}
.kt-pozn{margin:0;font-size:.88rem;white-space:pre-wrap}
.kt-nic,.kt-prazdne{margin:0;font-size:.84rem;color:var(--muted)}
.kt-prazdne{padding:.8rem 1.15rem}
.kt-chybi{margin:0;padding:.5rem 1.15rem;border-top:1px solid var(--line);font-size:.78rem;color:var(--muted);background:#fafbfd}
.fu2{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr) minmax(0,1.3fr) minmax(0,1fr) 190px;
  gap:.3rem 1rem;align-items:center;padding:.6rem 1.15rem;border-top:1px solid var(--line);font-size:.86rem}
.blok-h+.fu2{border-top:0}
.fu2--vyrazene{opacity:.55}
.fu2-nazev{display:flex;align-items:center;gap:.4rem;flex-wrap:wrap;min-width:0}
.fu2-id{display:flex;flex-wrap:wrap;gap:.2rem .7rem;color:var(--muted)}
.fu2-id b{color:var(--ink);font-weight:600;font-variant-numeric:tabular-nums}
.fu2-adr{color:#475467}
.fu2-pl{display:flex;flex-direction:column;gap:.1rem;color:#475467;font-size:.82rem}
.fu2-pl span{display:inline-flex;align-items:center;gap:.3rem}
.fu2-pl .ik{width:13px;height:13px;color:#98a2b3}
.fu2-akce{display:flex;align-items:center;gap:.3rem;justify-content:flex-end}
.fu2-pozn{grid-column:1/-1;font-size:.8rem;color:var(--muted)}
.kt-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;align-items:start}
.kt-2>.blok{margin:0}
@media(max-width:900px){
  .kt-skupiny,.kt-2{grid-template-columns:1fr}
  .kt-sk+.kt-sk{border-left:0;border-top:1px solid var(--line)}
  .fu2{grid-template-columns:minmax(0,1fr) auto}
  .fu2-akce{grid-column:2;grid-row:1}
}

/* ====== části objektu: řádek se rozbalí do podrobností ====== */
.casti .cast-r{cursor:pointer}
.casti .cast-r:hover td{background:#f8fafc}
.cast-ozn{white-space:nowrap;width:1%}
.cast-sip{width:14px;height:14px;color:#98a2b3;margin-right:.35rem;vertical-align:-2px;transition:transform .15s}
.cast.otevrena .cast-sip{transform:rotate(90deg);color:var(--ink)}
.cast-vic .ik{width:13px;height:13px;color:#98a2b3;vertical-align:-1px}
.cast-akce{width:1%}
.cast-akce details{display:inline-block}
.casti .cast-detail{display:none}
.cast.otevrena .cast-detail{display:table-row}
.cast.otevrena .cast-r td{border-bottom-color:transparent;background:#fafbfd}
.cast-detail td{background:#fafbfd;padding-top:0}
.cast-mriz{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.6rem 1.2rem;padding:.2rem 0 .7rem}
.cast-pole--siroke{grid-column:span 2}
.cast-pole span{display:block;font-size:.68rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}
.cast-pole p{margin:.15rem 0 0;font-size:.86rem;white-space:pre-wrap}
.cast-odkazy{display:flex;flex-wrap:wrap;gap:.3rem .9rem;white-space:normal}
.cast-odkazy a{display:inline-flex;align-items:center;gap:.3rem;color:var(--brand)}
.cast-odkazy .ik{width:13px;height:13px;color:var(--m)}
@media(max-width:820px){.cast-mriz{grid-template-columns:1fr}.cast-pole--siroke{grid-column:auto}}

/* ====== tooltip-dlaždice (Timeline, Přehledy) ====== */
.tip{position:fixed;z-index:120;width:290px;padding:.75rem .85rem .7rem;background:#fff;border:1px solid var(--line);
  border-radius:12px;box-shadow:0 12px 32px rgba(15,23,42,.18),0 2px 6px rgba(15,23,42,.08);font-size:.84rem;pointer-events:none}
.tip[hidden]{display:none}
.tip-h{display:flex;align-items:center;justify-content:space-between;gap:.5rem;margin-bottom:.45rem}
.tip-nazev{display:block;font-size:.95rem;line-height:1.3;margin-bottom:.4rem}
.tip-r{display:flex;align-items:center;gap:.4rem;color:#475467;margin-top:.2rem}
.tip-r .ik{width:14px;height:14px;color:#98a2b3;flex:none}
.tip-r.tip-po{color:#b42318;font-weight:600}
.tip-r.tip-po .ik{color:#b42318}
.tip-kdo{display:flex;align-items:center;gap:.6rem;margin:.6rem 0 0;padding:.55rem .6rem;border-radius:10px;background:#f6f8fb}
.tip-kdo b{display:block;font-size:.88rem}
.tip-kdo small{display:block;color:var(--muted);font-size:.74rem}
.avatar.tip-av{width:36px;height:36px;font-size:.8rem}
.tip-pod{margin-top:.6rem}
.tip-pod-h{display:flex;align-items:center;gap:.5rem;font-size:.74rem;color:var(--muted);margin-bottom:.25rem}
.tip-pod-h b{color:var(--ink)}
.tip-pruh{flex:1;height:5px;border-radius:99px;background:#eef2f7;overflow:hidden}
.tip-pruh i{display:block;height:100%;background:var(--ok)}
.tip-pod-r{display:flex;align-items:center;gap:.4rem;padding:.12rem 0;font-size:.8rem}
.tip-pod-r .ik{width:14px;height:14px;color:#cbd5e1;flex:none}
.tip-pod-r.hotovo{color:var(--muted)}
.tip-pod-r.hotovo .ik{color:var(--ok)}
.tip-pod-r span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tip-dalsi{color:var(--muted);font-size:.74rem}
.tip-pata{display:flex;gap:1rem;margin-top:.6rem;padding-top:.5rem;border-top:1px solid var(--line);color:var(--muted);font-size:.76rem}
.tip-pata span{display:inline-flex;align-items:center;gap:.3rem}
.tip-pata .ik{width:13px;height:13px}

/* ====== Timeline v2: nody, názvy vedle pruhů, souhrn zakázky ====== */
.gantt{max-height:76vh}
.g-row{min-height:38px}
.g-head{height:44px}
.g-corner,.g-label{flex-basis:260px;width:260px}
.g-vikend{position:absolute;top:0;bottom:0;background:#f6f7fa;z-index:0}
.g-today{width:2px;opacity:.8;z-index:3}
.g-dnes-stitek{position:absolute;bottom:2px;transform:translateX(-50%);padding:.05rem .4rem;border-radius:99px;
  background:var(--accent);color:#fff;font-size:.6rem;font-weight:800;z-index:2}
.g-toggle{width:22px;height:22px;padding:0}
.g-toggle .ik{width:14px;height:14px}
.g-druh{padding:.2rem;flex:none}
.g-druh .ik{width:13px;height:13px}
.g-sub{padding-left:1.1rem}
/* pruh = zaoblený node: avatar řešitele na začátku, název vedle pruhu (neusekne se) */
.g-bar{height:26px;border-radius:13px;padding:0 3px;gap:.25rem;overflow:visible;font-size:.78rem;z-index:2;
  box-shadow:0 1px 3px rgba(15,23,42,.18)}
.g-bar--ukol{height:22px;border-radius:11px;background:#60a5fa}
.g-bar .avatar{width:20px;height:20px;font-size:.55rem;box-shadow:0 0 0 2px #fff}
.g-bar .avatar--nikdo{background:#fff;color:#94a3b8}
.g-bar-ok{display:grid;place-items:center;color:#fff}
.g-bar-ok .ik{width:13px;height:13px}
.g-bar-lbl{position:absolute;left:calc(100% + 8px);top:50%;transform:translateY(-50%);white-space:nowrap;
  color:var(--ink);font-weight:600;font-size:.78rem;pointer-events:none}
.g-bar.over .g-bar-lbl{color:#b42318}
.g-bar.done{background:#86efac!important;opacity:1}
.g-bar.done .g-bar-lbl{color:var(--muted);font-weight:500}
.g-bar.over{background:#f87171!important;box-shadow:0 0 0 2px #fecaca}
.g-bar:hover{filter:none;box-shadow:0 4px 14px rgba(15,23,42,.28)}
/* souhrn zakázky ve sbaleném řádku: pruh s vyplněným postupem + nody milníků */
.g-souhrn{position:absolute;top:50%;transform:translateY(-50%);height:12px;border-radius:6px;background:#e2e8f0;z-index:2;overflow:visible}
.g-souhrn i{display:block;height:100%;border-radius:6px;background:linear-gradient(90deg,#22c55e,#16a34a)}
.g-souhrn.over{box-shadow:0 0 0 2px #fecaca}
.g-souhrn b{position:absolute;left:calc(100% + 8px);top:50%;transform:translateY(-50%);font-size:.7rem;color:var(--muted);white-space:nowrap}
.g-uzel{position:absolute;top:50%;width:12px;height:12px;margin-left:-6px;transform:translateY(-50%) rotate(45deg);
  border-radius:2px;background:#94a3b8;border:2px solid #fff;box-shadow:0 1px 3px rgba(15,23,42,.3);z-index:3}
.g-uzel.done{background:#16a34a}
.g-uzel.over{background:#dc2626}
.g-uzel:hover{transform:translateY(-50%) rotate(45deg) scale(1.35)}
.g-grp .g-track{background:#f8fafc}
.legend .g-druh{display:inline-flex}
.ph-c a[data-tip]{cursor:pointer}
/* řádek široký jako celý harmonogram – jinak přilepený sloupec s názvy při posunu odjede */
.g-head,.g-row{width:max-content;min-width:100%}

/* ====== karta milníku Nabídka (verze + odeslat / úprava / schválit) ====== */
.nab-karta{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:.6rem 1rem;
  margin:.35rem 0 .55rem;padding:.6rem .7rem;border:1px solid var(--line);border-radius:10px;background:#fff}
.nab-verze{display:flex;flex-wrap:wrap;gap:.4rem;min-width:0}
.nab-v{display:inline-flex;align-items:center;gap:.45rem;padding:.3rem .55rem;border:1px solid var(--line);
  border-radius:9px;color:inherit;font-size:.82rem;background:#fff}
.nab-v:hover{border-color:var(--line2);background:#f8fafc}
.nab-v--akt{border-color:#93c5fd;box-shadow:0 0 0 3px #eff6ff}
.nab-v--stara{opacity:.6}
.nab-v small{color:var(--muted)}
.nab-cena{font-weight:700;font-variant-numeric:tabular-nums}
.nab-nic{margin:0;font-size:.84rem;color:var(--muted)}
.nab-akce{display:flex;flex-wrap:wrap;gap:.35rem;align-items:center}
.nab-akce details{display:inline-block}
.stitek--odeslano{background:#e8efff;color:#1d4ed8}
.stitek--schvaleno{background:#e6f6ec;color:#15803d}
.stitek--navrh{background:#f1f2f4;color:#475467}
.stitek--nahrazena,.stitek--zamitnuto{background:#f1f2f4;color:#98a2b3}
/* dlouhý popisek zaškrtávátka se zalomí (dřív roztáhl okno do boku) */
.chk--dlouhy{align-items:flex-start!important}
.chk--dlouhy>span{flex:1;min-width:0;white-space:normal}
.chk--dlouhy input{margin-top:.2rem!important}
tr[data-upravit-radek]{cursor:pointer}
tr.radek--neaktivni td{color:var(--muted)}
/* agenda: Čekám na… */
.cek{display:grid;grid-template-columns:24px minmax(0,1fr) auto;align-items:center;gap:.55rem;padding:.4rem 0;
  border-top:1px solid #f1f3f6;color:inherit}
.cek:first-child{border-top:0}
.cek:hover strong{color:var(--accent)}
.cek-txt{display:flex;flex-direction:column;min-width:0;line-height:1.25}
.cek-txt strong{font-size:.85rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cek-txt small{font-size:.74rem;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cek-kdy{font-size:.78rem;font-weight:700;color:#344054;font-variant-numeric:tabular-nums}
.cek.over .cek-kdy{color:#b42318}

/* ====== průběh poptávky z milníků ====== */
.op-prubeh{display:flex;align-items:center;justify-content:space-between;gap:.8rem 1.5rem;flex-wrap:wrap;padding:.75rem 1rem}
.op-kroky{display:flex;align-items:center;gap:.4rem;flex-wrap:wrap;min-width:0}
.op-krok{display:inline-flex;align-items:center;gap:.5rem;padding:.3rem .65rem .3rem .35rem;border-radius:99px;
  border:1px solid var(--line);background:#fff;color:inherit}
.op-krok:hover{border-color:var(--line2)}
.op-krok-ik{display:grid;place-items:center;width:24px;height:24px;border-radius:50%;background:#eef2f7;
  color:#64748b;font-size:.75rem;font-weight:800;flex:none}
.op-krok-ik .ik{width:14px;height:14px}
.op-krok-t{display:flex;flex-direction:column;line-height:1.15}
.op-krok-t b{font-size:.84rem}
.op-krok-t small{font-size:.7rem;color:var(--muted)}
.op-krok--hotovo .op-krok-ik{background:#16a34a;color:#fff}
.op-krok--hotovo b{color:var(--muted);font-weight:600}
.op-krok--ted{border-color:#93c5fd;box-shadow:0 0 0 3px #eff6ff}
.op-krok--ted .op-krok-ik{background:#2563eb;color:#fff}
.op-krok.over small{color:#b42318;font-weight:700}
.op-krok-cara{width:22px;height:2px;background:var(--line2);border-radius:2px}
.op-krok-cara.hotova{background:#16a34a}
.op-konec{display:flex;align-items:center;gap:.4rem;flex-wrap:wrap}
.op-pct{font-size:.8rem;font-weight:800;color:var(--muted);margin-right:.3rem;font-variant-numeric:tabular-nums}
.op-konec-btn .ik{color:var(--st)}
.kb-col--milnik .kb-col-name{display:inline-flex;align-items:center;gap:.3rem}
.kb-col--milnik .kb-col-name .ik{width:13px;height:13px}

/* ====== Kontakty (osoby) ====== */
.kpick{position:relative;display:block}
.kpick-in{width:100%}
.radky--osoby .radek{grid-template-columns:minmax(0,1.3fr) minmax(0,1fr) 150px minmax(0,1fr)}
@media(max-width:820px){.radky--osoby .radek>:nth-child(4){display:none}}
.kh{display:flex;flex-direction:column}
.kh-r{display:grid;grid-template-columns:110px minmax(0,1fr) auto;gap:.7rem;align-items:center;
  padding:.5rem 1.15rem;border-top:1px solid #f1f3f6;color:inherit}
.kh-r:first-child{border-top:0}
.kh-r:hover{background:#f8fafc}
.kh-r strong{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:.9rem}
.kh-druh{display:inline-flex;align-items:center;gap:.35rem;font-size:.74rem;font-weight:700;color:var(--m)}
.kh-druh .ik{width:14px;height:14px}
.kh-role{font-size:.8rem;color:var(--muted);white-space:nowrap}
.kv-seznam{padding:.3rem 1rem}
.kv-r{display:grid;grid-template-columns:minmax(0,1.2fr) auto minmax(0,1fr) auto 24px;gap:.7rem;align-items:center;
  padding:.45rem 0;border-top:1px solid #f1f3f6;font-size:.88rem}
.kv-r:first-child{border-top:0}
.kv-r a{color:inherit}
.kv-kde{color:var(--muted);font-size:.82rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.kv-tel a{display:inline-flex;align-items:center;gap:.3rem;color:var(--brand);font-size:.84rem}
.kv-tel .ik{width:13px;height:13px}
.kv-r--text{display:block}
.ov-mem--kontakt a{color:inherit}
@media(max-width:700px){.kv-r{grid-template-columns:minmax(0,1fr) auto 24px}.kv-kde,.kv-tel{display:none}}
