/* ops.css — KOORD operačná vrstva (uzol C). Len vlastné triedy s predponou ops- a prvky s id ops…; mobil na prvom mieste,
   dotykové ciele ≥ 40 px. Jediný zásah do rozloženia appky: posun horných líšt, kým je aktívna výstraha (body.ops-alert). */
:root{--ops-ah:46px}

/* ---- pruh aktívnej výstrahy */
#opsAlerts{position:fixed;z-index:45;left:8px;right:8px;top:calc(58px + var(--safe-t,0px));min-height:var(--ops-ah);display:flex;align-items:stretch;gap:0;border-radius:12px;overflow:hidden;
  background:#b45309;color:#fff;box-shadow:0 6px 24px rgba(15,23,42,.35);animation:opsPulse 1.4s ease-in-out infinite}
#opsAlerts.t911{background:#b91c1c}#opsAlerts.tbell{background:#1d4ed8}#opsAlerts.tcontact{background:#c2410c}
#opsAlerts button{border:0;background:none;color:#fff;min-height:44px;font:inherit}
#opsAlerts .ops-ab{flex:1;min-width:0;text-align:left;padding:6px 12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:14px}
#opsAlerts .ops-ab b{font-size:15px;letter-spacing:.02em}
#opsAlerts .ops-an{min-width:44px;font-weight:800;background:rgba(0,0,0,.18)}
#opsAlerts .ops-ae{padding:0 14px;font-weight:700;background:rgba(0,0,0,.3)}
@keyframes opsPulse{50%{box-shadow:0 0 0 5px rgba(220,38,38,.35),0 6px 24px rgba(15,23,42,.35)}}
@media (prefers-reduced-motion:reduce){#opsAlerts,.ops-amk i{animation:none!important}}
body.ops-alert #navbar,body.ops-alert #drawbar{top:calc(64px + var(--ops-ah) + var(--safe-t,0px))}
body.ops-alert #routebar,body.ops-alert #tools{top:calc(66px + var(--ops-ah) + var(--safe-t,0px))}
body.ops-alert:has(#navbar:not([hidden])) #routebar{top:calc(122px + var(--ops-ah) + var(--safe-t,0px))}
body.ops-alert #toasts{top:calc(64px + var(--ops-ah) + var(--safe-t,0px))}
body.ops-alert #sheet.tall{max-height:calc(100% - 122px - var(--ops-ah) - var(--safe-t,0px))}
@media (min-width:900px){body.ops-alert #sheet.tall{max-height:none}}
@media (min-width:900px){#opsAlerts{left:50%;right:auto;transform:translateX(-50%);width:min(640px,calc(100% - 460px))}}

/* ---- značky na mape */
.ops-amk{position:relative;width:0;height:0}
.ops-amk span{position:absolute;left:-18px;top:-18px;width:36px;height:36px;border-radius:50%;display:grid;place-items:center;font-size:19px;background:#b91c1c;border:3px solid #fff;box-shadow:0 2px 8px rgba(0,0,0,.5)}
.ops-amk.tbell span{background:#1d4ed8}.ops-amk.tcontact span,.ops-amk.tcustom span,.ops-amk.tgeofence span{background:#c2410c}
.ops-amk i{position:absolute;left:-30px;top:-30px;width:60px;height:60px;border-radius:50%;background:rgba(220,38,38,.35);animation:opsRing 1.3s ease-out infinite}
@keyframes opsRing{from{transform:scale(.4);opacity:1}to{transform:scale(1.5);opacity:0}}
.ops-rmk,.ops-imk{display:inline-flex;align-items:center;gap:4px;transform:translate(-14px,-14px);white-space:nowrap;color:#fff;border-radius:999px;padding:2px 8px 2px 4px;border:2px solid #fff;box-shadow:0 2px 6px rgba(0,0,0,.4);font:600 11px/1.5 system-ui;cursor:pointer}
.ops-rmk span,.ops-imk span{font-size:15px;line-height:1}.ops-rmk b,.ops-imk b{max-width:120px;overflow:hidden;text-overflow:ellipsis}
.ops-imk{background:#0f172a}

/* ---- karta Operácie */
#bottom #opsBadge{top:2px;right:calc(50% - 22px)}
.ops-nav{display:flex;gap:6px;overflow-x:auto;padding:2px 0 8px;margin:0 -16px;padding-left:16px;padding-right:16px;position:sticky;top:0;background:var(--bg);z-index:3;scrollbar-width:none;-webkit-overflow-scrolling:touch}
.ops-nav::-webkit-scrollbar{display:none}
.ops-nav button{flex:none;min-height:40px;border:1px solid var(--line);background:var(--chip);border-radius:999px;padding:0 12px;font-weight:600;font-size:13px;white-space:nowrap}
.ops-nav button.on{background:var(--pri);border-color:var(--pri);color:#fff}
.ops .btn{min-height:40px}.ops .btn.sm{min-height:40px;min-width:40px}
.ops .li{cursor:pointer}.ops .li.done{opacity:.6}
.ops-sec{display:flex;justify-content:space-between;align-items:center;gap:8px}.ops-sec small{text-transform:none;font-weight:500;letter-spacing:0}
.ops-empty{color:var(--mut);font-size:13px;margin:8px 2px}
.ops-tb{margin:8px 0}.ops-tb>*{flex:0 1 auto}
.ops-q{flex:1 1 140px;min-height:40px;width:100%;margin:4px 0}
.ops select.ops-fs,.ops select.ops-qs{width:auto;max-width:100%;min-height:40px;padding:6px 8px;flex:1 1 120px}
.ops select.ops-qs{flex:none;max-width:42%;font-size:13px}
.ops-chip{display:inline-block;font-size:11px;font-weight:700;border-radius:6px;padding:2px 7px;background:var(--chip);color:var(--mut);margin:0 4px 2px 0;white-space:nowrap}
.ops-chip.lv{background:#dbeafe;color:#1e40af}.ops-chip.st{background:#e2e8f0;color:#0f172a}.ops-chip.esc{background:#fee2e2;color:#b91c1c}.ops-chip.ok{background:#dcfce7;color:#166534}.ops-chip.tg{background:#0f172a;color:#fff;margin-left:6px}
.ops-pend{margin-left:6px;font-size:12px}
.ops-warn{background:#fef3c7;color:#92400e;border-radius:10px;padding:8px 10px;font-size:13px;margin:8px 0}
.ops-hint{color:var(--mut);font-size:12px;display:block;margin:2px 0}
.ops-meta{color:var(--mut);display:block;margin-top:8px}
.ops-desc{white-space:pre-wrap;overflow-wrap:anywhere;margin:8px 0}
.ops-big{font-size:18px;font-weight:700;overflow-wrap:anywhere}
.ops-pre{white-space:pre-wrap;overflow-wrap:anywhere;font:13px/1.45 ui-monospace,Menlo,monospace;background:var(--chip);border-radius:10px;padding:10px;margin:8px 0;max-height:50vh;overflow:auto}
.ops-pre.ops-kb{font:inherit}
.ops-mono{font-family:ui-monospace,Menlo,monospace;font-size:12px;overflow-wrap:anywhere}
.ops-kv{font-size:13px;padding:6px 0;border-top:1px solid var(--line);overflow-wrap:anywhere}.ops-kv small{display:block;color:var(--mut);font-weight:600}
.ops-dot{display:inline-block;width:14px;height:14px;border-radius:50%;flex:none;border:2px solid #fff;box-shadow:0 0 0 1px var(--line);vertical-align:-2px}
.ops-ext:empty{display:none}.ops-ext button,.ops-ext a{min-height:44px}.ops-ext{margin-top:12px;display:flex;flex-direction:column;gap:8px}

/* zásah + výstrahy */
.ops-inc{border:1px solid var(--line);border-left:6px solid var(--bad);border-radius:12px;padding:10px 12px;display:flex;flex-direction:column;gap:6px;background:#fff}
.ops-inc.spreclosed{border-left-color:var(--warn)}.ops-inc.sclosed{border-left-color:var(--mut)}.ops-inc.none{border-left-color:var(--line);align-items:flex-start}
.ops-it{font-size:17px;overflow-wrap:anywhere}.ops-inc small{color:var(--mut)}
.ops-sos{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px;margin:12px 0 4px}
.ops-sos button{min-height:60px;border:0;border-radius:14px;background:#1e293b;color:#fff;font-size:20px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;padding:6px}
.ops-sos button b{font-size:12px;letter-spacing:.02em}
.ops-sos .ops-911{grid-column:1/-1;min-height:76px;background:#b91c1c;font-size:28px;flex-direction:row;gap:12px;box-shadow:0 4px 14px rgba(185,28,28,.45)}
.ops-sos .ops-911 b{font-size:20px}
.ops-sos button:active{filter:brightness(.85)}
.ops-al.act{background:#fff7ed}.ops-al.act.t911{background:#fee2e2}
.ops-ai{font-size:22px;flex:none}
.ops-tiles{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.ops-tile{min-height:72px;border:1px solid var(--line);background:#fff;border-radius:12px;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:6px;gap:1px}
.ops-tile b{font-size:18px}.ops-tile small{font-size:11px;color:var(--mut);text-align:center}.ops-tile.warn{border-color:#fecaca;background:#fef2f2}.ops-tile.warn b{color:var(--bad)}

/* úlohy, denník, zdroje, žiadosti */
.ops-pr{width:8px;align-self:stretch;border-radius:4px;flex:none;min-height:34px}
.ops-task.esc{background:#fef2f2}.ops-esc{color:var(--bad);font-weight:800}
.ops-seg{display:inline-flex;border:1px solid var(--line);border-radius:10px;overflow:hidden}
.ops-seg button{border:0;background:var(--chip);min-height:40px;padding:0 10px;font-weight:600;font-size:13px}.ops-seg button.on{background:var(--pri);color:#fff}
.ops-chk{display:flex;flex-direction:column;margin:8px 0}
.ops-chk label{display:flex;gap:10px;align-items:center;min-height:40px;border-top:1px solid var(--line)}
.ops-chk input,.ops-vis input,.ops-row input[type=checkbox],.ops-oa input{width:22px;height:22px;flex:none}
.ops-quick{display:flex;gap:6px;align-items:center;margin:8px 0;position:sticky;top:48px;background:var(--bg);z-index:2;padding:4px 0}
.ops-quick select{width:auto;flex:none;max-width:34%;min-height:44px}.ops-quick input{flex:1;min-width:0;min-height:44px}.ops-quick .btn{min-width:48px;min-height:44px;font-size:18px}
.ops-log{display:flex;flex-direction:column}
.ops-day{font-size:12px;font-weight:700;color:var(--mut);margin:10px 0 2px;text-transform:uppercase}
.ops-le{display:flex;gap:8px;align-items:flex-start;padding:8px 2px;border-top:1px solid var(--line);min-height:40px;cursor:pointer}
.ops-le time{font:600 12px/1.6 ui-monospace,Menlo,monospace;color:var(--mut);flex:none}
.ops-le .grow{flex:1;min-width:0}.ops-le small{color:var(--mut);font-size:11px}
.ops-lt{overflow-wrap:anywhere;display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}
.ops-le.csystem{background:var(--chip);color:var(--mut);font-style:italic;padding-left:6px;border-radius:6px}
.ops-le.cdecision .ops-lt{font-weight:700}.ops-le.csitrep{border-left:4px solid var(--pri);padding-left:6px}
.ops-ri{width:36px;height:36px;border-radius:10px;display:grid;place-items:center;font-size:18px;flex:none}
.ops-ri2{border:1px solid var(--line);border-radius:12px;padding:10px;margin:8px 0;display:flex;flex-direction:column;gap:6px}
.ops-of{display:flex;gap:8px;align-items:center;border-top:1px dashed var(--line);padding-top:6px;font-size:13px}.ops-of .grow{flex:1;min-width:0;overflow-wrap:anywhere}.ops-of small{display:block;color:var(--mut)}
.ops-gap{color:var(--bad);font-weight:700}.ops-ok{color:var(--ok);font-weight:700}
.ops-okb{background:#dcfce7;color:#166534}.ops-badb{background:#fee2e2;color:#b91c1c}
.ops-mrow{margin-top:6px}.ops-oa{display:inline-flex;align-items:center;gap:4px;font-size:12px;min-height:40px}

/* stĺpce prehľadu, tabuľky */
.ops-bars{display:flex;flex-direction:column;gap:6px;margin:4px 0}
.ops-bar{display:flex;align-items:center;gap:8px;font-size:13px}
.ops-bl{flex:0 0 38%;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ops-bt{flex:1;height:12px;background:var(--chip);border-radius:6px;overflow:hidden}.ops-bt i{display:block;height:100%;border-radius:6px;min-width:0}
.ops-bar b{flex:0 0 32px;text-align:right}
.ops-ri2 .ops-bt{flex:none}
.ops-tblw{overflow:auto;max-height:48vh;border:1px solid var(--line);border-radius:10px;margin:6px 0}
.ops-tbl{border-collapse:collapse;width:100%;font-size:12px}
.ops-tbl th,.ops-tbl td{padding:6px 8px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top;overflow-wrap:anywhere}
.ops-tbl th{position:sticky;top:0;background:var(--chip);white-space:nowrap}.ops-tbl td small{display:block;color:var(--mut)}
.ops-tbl tr.bad td{background:#fef2f2;color:#b91c1c}

/* formuláre v modálnych oknách */
.ops-f input[type=datetime-local],.ops-f input[type=date],.ops-rows input[type=date],.ops-rows input[type=number]{width:100%;border:1px solid var(--line);border-radius:10px;padding:10px;background:#fff;min-height:42px}
.ops-f input,.ops-f select,.ops-f textarea{min-height:42px}
.ops-ll input{flex:1;min-width:0}.ops-ll .btn{min-width:42px;min-height:42px}
.ops-vis{display:flex;flex-direction:column}.ops-vis label{display:flex;align-items:center;gap:8px;min-height:40px}
.ops-rows{display:flex;flex-direction:column;gap:6px;margin-bottom:6px}
.ops-row{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.ops-row input[type=text]{flex:1 1 120px;min-width:0;min-height:42px}.ops-row input[type=date]{flex:1 1 120px}
.ops-row select{flex:1 1 90px;width:auto;min-height:42px}
.ops-row .ops-in{flex:0 0 76px}.ops-row .ops-iu{flex:0 0 64px}.ops-row .ops-iw{flex:1 1 100%}
.ops-x{min-width:42px;min-height:42px}
.ops-col{width:64px;height:42px;border:1px solid var(--line);border-radius:10px;padding:2px;background:#fff}
.ops-mbtn{justify-content:flex-end;margin-top:14px}.ops-mbtn .btn{min-height:42px}

/* chat: skupiny a potvrdenia prečítania */
.ops-cg{display:flex;gap:8px;align-items:center;padding:6px 0 0;position:sticky;bottom:52px;background:#fff}
.ops-cg select{width:auto;max-width:60%;min-height:40px}.ops-cg.on small{color:var(--bad);font-weight:700}
.msg.ops-grp{outline:2px solid #93c5fd}.ops-gt{font-weight:700;color:#1e40af}
.ops-read{text-align:right;color:var(--ok)!important}

/* tlač denníka */
#opsPrint{display:none}
@media print{
  body.ops-printing{overflow:visible!important;height:auto!important;background:#fff}
  html:has(body.ops-printing){overflow:visible!important;height:auto!important}
  body.ops-printing>*:not(#opsPrint){display:none!important}
  body.ops-printing #opsPrint{display:block!important;position:static;font-size:10pt;color:#000}
  #opsPrint h2{margin:0 0 4px;font-size:14pt}#opsPrint table{width:100%;border-collapse:collapse}
  #opsPrint th,#opsPrint td{border:.2mm solid #999;padding:1.5mm;text-align:left;vertical-align:top;overflow-wrap:anywhere}
  #opsPrint td:first-child{white-space:nowrap}#opsPrint tr.sys td{color:#555;font-style:italic}
  #opsAlerts{display:none!important}
}

/* vyhľadanie miesta v poli „Miesto“ */
.ops-llbox{display:flex;flex-direction:column;gap:4px}
.ops-llnote{color:var(--mut);font-size:12px;min-height:0}
.ops-llnote:empty{display:none}
.ops-places{display:flex;flex-direction:column;gap:4px;max-height:40vh;overflow:auto}
.ops-places:empty{display:none}
.ops-place{display:flex;flex-direction:column;align-items:flex-start;text-align:left;gap:1px;padding:8px 10px;border:1px solid var(--line);border-radius:10px;background:var(--bg);color:var(--fg);font:inherit;cursor:pointer;min-height:44px}
.ops-place small{color:var(--mut);font-size:12px}
.ops-place:active,.ops-place:hover{border-color:var(--pri)}
.ops-llwarn{color:#b45309;font-size:12.5px}
.names-list{display:flex;flex-direction:column;gap:4px;margin:6px 0}
.names-area .btn{margin-left:4px}
