/* =============================================================================
   ODZVONILO — ŠEMA VEZA (link-analysis board).
   Shared component used by both the public portal and the backoffice console.
   Reads tokens from ../../colors_and_type.css; the page sets data-theme="dark"
   so the board renders on the carbon (ops) ground. No shadows, no gradients,
   radius 0; furniture is typewriter; the accent is the only chromatic voice.
   Everything is scoped under .lk.
   ========================================================================== */

.lk, .lk *{box-sizing:border-box;}
.lk{position:fixed;inset:0;display:grid;grid-template-rows:auto 1fr;
  background:var(--bg);color:var(--ink);font-family:var(--font-body);
  -webkit-font-smoothing:antialiased;overflow:hidden;}

/* ---- Toolbar ---- */
.lk-top{display:flex;align-items:center;gap:12px;padding:11px 18px;
  background:var(--header);border-bottom:2px solid var(--ink);flex-wrap:wrap;}
.lk-brand{display:flex;align-items:center;gap:8px;}
.lk-brand .bell{color:var(--accent);font-size:18px;}
.lk-brand .mk{font-family:var(--font-display);font-size:15px;letter-spacing:.04em;color:var(--ink);}
.lk-brand .mk b{color:var(--accent);}
.lk-sep{width:1px;height:22px;background:var(--rule);}
.lk-mapname{font:700 13px/1 var(--font-data);color:var(--ink);}
.lk-mapname .crumb{color:var(--muted);font-weight:400;}
.lk-top .spacer{flex:1;}
.lk-tool{display:inline-flex;align-items:center;gap:6px;font:700 11px/1 var(--font-data);
  color:var(--ink2);background:none;border:1px solid transparent;padding:7px 9px;cursor:pointer;white-space:nowrap;}
.lk-tool i{font-size:15px;}
.lk-tool:hover{color:var(--ink);border-color:var(--rule);}
.lk-tool:disabled{opacity:.4;cursor:not-allowed;}
.lk-zoom{font:700 11px/1 var(--font-data);color:var(--muted);min-width:42px;text-align:center;}
.lk-toggle{display:inline-flex;align-items:center;gap:8px;border:2px solid var(--ink);padding:5px 7px 5px 10px;
  font:700 11px/1 var(--font-data);color:var(--ink);cursor:pointer;background:none;}
.lk-toggle .sw{width:30px;height:16px;border:1px solid var(--ink);background:var(--chip);position:relative;}
.lk-toggle.on .sw{background:var(--accent);border-color:var(--accent);}
.lk-toggle .sw::after{content:"";position:absolute;top:1px;left:1px;width:12px;height:12px;background:var(--bg);transition:left var(--fast,120ms) ease;}
.lk-toggle.on .sw::after{left:15px;}
.lk-save{display:inline-flex;align-items:center;gap:6px;font:700 10px/1 var(--font-data);letter-spacing:.04em;
  color:var(--pv);border:1px solid var(--pv);padding:6px 9px;text-transform:uppercase;}

/* ---- Main: palette | board | panel ---- */
.lk-main{position:relative;display:grid;grid-template-columns:auto 1fr;min-height:0;}

/* palette */
.lk-palette{width:188px;border-right:1px solid var(--rule);background:var(--header);
  padding:14px 0;overflow-y:auto;}
.lk-palette .ph{font:400 9px/1 var(--font-display);letter-spacing:.12em;color:var(--faint);
  text-transform:uppercase;padding:6px 16px 10px;}
.lk-obj{display:flex;align-items:center;gap:11px;width:100%;text-align:left;background:none;border:none;
  cursor:pointer;padding:9px 16px;font:700 12px/1 var(--font-data);color:var(--ink2);border-left:3px solid transparent;}
.lk-obj .ic{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;
  border:1px solid var(--rule);flex:none;}
.lk-obj:hover{color:var(--ink);background:color-mix(in srgb,var(--accent) 7%,transparent);border-left-color:var(--accent);}
.lk-obj .ic i{font-size:15px;}
.lk-hint{font:400 10px/1.5 var(--font-data);color:var(--faint);padding:14px 16px 4px;border-top:1px solid var(--rule);margin-top:8px;}

/* board */
.lk-board{position:relative;overflow:hidden;background:var(--bg);cursor:grab;
  background-image:radial-gradient(var(--rule) 1px,transparent 1px);background-size:26px 26px;}
.lk-board.panning{cursor:grabbing;}
.lk-canvas{position:absolute;top:0;left:0;width:4000px;height:3000px;transform-origin:0 0;}
.lk-svg{position:absolute;top:0;left:0;width:4000px;height:3000px;overflow:visible;pointer-events:none;}
.lk-edge{fill:none;stroke:var(--muted);stroke-width:1.4;stroke-dasharray:4 4;opacity:.8;}
.lk-edge.is-hot{stroke:var(--accent);opacity:1;stroke-dasharray:none;}
.lk-edgelabel{font:700 8px/1 var(--font-data);fill:var(--faint);letter-spacing:.04em;text-transform:uppercase;}
.lk-edgelabel-bg{fill:var(--bg);}

/* node card */
.lk-node{position:absolute;width:210px;background:var(--surface);border:1px solid var(--rule);
  cursor:grab;user-select:none;}
.lk-node.dragging{cursor:grabbing;}
.lk-node.is-sel{border:2px solid var(--accent);}
.lk-node .nt{display:flex;align-items:center;gap:6px;background:var(--ink);color:var(--bg);
  font:400 9px/1 var(--font-display);letter-spacing:.09em;padding:5px 9px;text-transform:uppercase;}
.lk-node .nt i{font-size:12px;}
.lk-node .nbody{padding:10px 11px;}
.lk-node .ntitle{font:600 14px/1.2 var(--font-head);color:var(--ink);margin-bottom:8px;}
.lk-field{display:grid;grid-template-columns:auto 1fr;gap:8px;align-items:center;margin-top:5px;}
.lk-field .fl{font:400 8px/1 var(--font-display);letter-spacing:.06em;color:var(--muted);text-transform:uppercase;white-space:nowrap;}
.lk-field .fv{font:400 11px/1.3 var(--font-data);color:var(--ink);background:var(--bg);border:1px solid var(--rule);padding:5px 7px;}
.lk-node .nthumb{height:84px;background:var(--chip);border-bottom:1px solid var(--rule);
  display:flex;align-items:center;justify-content:center;color:var(--faint);
  background-image:repeating-linear-gradient(135deg,transparent,transparent 7px,color-mix(in srgb,var(--rule) 45%,transparent) 7px,color-mix(in srgb,var(--rule) 45%,transparent) 8px);}
.lk-node .nthumb i{font-size:26px;}
.lk-prov{display:inline-flex;align-items:center;gap:4px;font:700 8px/1 var(--font-data);letter-spacing:.04em;
  border:1px solid currentColor;padding:3px 5px;margin-top:8px;}
.lk-prov.pv{color:var(--pv);}.lk-prov.pu{color:var(--pu);}.lk-prov.pr{color:var(--pr);}.lk-prov.pd{color:var(--pd);}

/* type accents — colored top tab + matching ring on hover/select */
.lk-node.t-person  .nt{background:var(--ink);}
.lk-node.t-institution .nt{background:#4f6b2e;}
.lk-node.t-company .nt{background:#355a7c;}
.lk-node.t-address .nt{background:#4f6b2e;}
.lk-node.t-event   .nt{background:var(--accent);}
.lk-node.t-vehicle .nt{background:#936a1c;}
.lk-node.t-comm    .nt{background:#6d4a86;}
.lk-node.t-note    .nt{background:#6b6757;}
.lk-node.t-item    .nt{background:#2d6f6a;}
.lk-node.t-event{border-color:color-mix(in srgb,var(--accent) 55%,var(--rule));}
.lk-connpt{position:absolute;width:9px;height:9px;border-radius:50%;background:var(--bg);border:1px solid var(--accent);}

/* detail panel */
.lk-panel{position:absolute;top:0;right:0;bottom:0;width:300px;background:var(--header);
  border-left:2px solid var(--ink);display:flex;flex-direction:column;transform:translateX(100%);
  transition:transform var(--med,220ms) var(--ease,ease);z-index:6;}
.lk-panel.open{transform:translateX(0);}
.lk-panel-h{display:flex;align-items:center;gap:9px;padding:13px 15px;border-bottom:1px solid var(--rule);}
.lk-panel-h .ptype{font:400 9px/1 var(--font-display);letter-spacing:.08em;color:var(--accent);text-transform:uppercase;
  display:inline-flex;align-items:center;gap:5px;border:1px solid var(--accent);padding:4px 7px;}
.lk-panel-h .pclose{margin-left:auto;background:none;border:1px solid var(--rule);color:var(--ink2);
  width:28px;height:28px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;font-size:15px;}
.lk-panel-h .pclose:hover{border-color:var(--ink);color:var(--ink);}
.lk-panel-b{padding:15px;overflow-y:auto;flex:1;}
.lk-panel .ptitle{font:700 18px/1.15 var(--font-head);color:var(--ink);margin:0 0 12px;}
.lk-panel .psec{font:400 9px/1 var(--font-display);letter-spacing:.1em;color:var(--muted);text-transform:uppercase;
  margin:16px 0 9px;display:block;}
.lk-pthumb{height:130px;background:var(--chip);border:1px solid var(--rule);display:flex;align-items:center;
  justify-content:center;color:var(--faint);margin-bottom:6px;
  background-image:repeating-linear-gradient(135deg,transparent,transparent 8px,color-mix(in srgb,var(--rule) 45%,transparent) 8px,color-mix(in srgb,var(--rule) 45%,transparent) 9px);}
.lk-pthumb i{font-size:30px;}
.lk-pfield{display:flex;flex-direction:column;gap:5px;margin-bottom:11px;}
.lk-pfield label{font:400 9px/1 var(--font-display);letter-spacing:.07em;color:var(--muted);text-transform:uppercase;
  display:flex;align-items:center;justify-content:space-between;}
.lk-pfield label .rm{color:var(--faint);cursor:pointer;font-size:12px;}
.lk-pfield label .rm:hover{color:var(--pd);}
.lk-pfield input{background:var(--surface);border:2px solid var(--ink);padding:9px 11px;
  font:13px/1.2 var(--font-data);color:var(--ink);width:100%;}
.lk-plinks{list-style:none;margin:0;padding:0;}
.lk-plinks li{display:flex;align-items:center;gap:8px;padding:8px 0;border-bottom:1px solid var(--rule);
  font:400 12px/1.3 var(--font-data);color:var(--ink);cursor:pointer;}
.lk-plinks li:hover{color:var(--accent);}
.lk-plinks li i{font-size:14px;color:var(--muted);}
.lk-plinks li .rel{margin-left:auto;font:400 9px/1 var(--font-data);color:var(--faint);text-transform:uppercase;}
.lk-pbtn{display:inline-flex;align-items:center;gap:6px;font:700 11px/1 var(--font-data);
  background:var(--accent);color:var(--bg);border:2px solid var(--accent);padding:9px 13px;cursor:pointer;margin-top:6px;}
.lk-pbtn--ghost{background:transparent;color:var(--ink);border-color:var(--ink);}

/* footer hint bar */
.lk-foot{position:absolute;left:50%;bottom:16px;transform:translateX(-50%);z-index:5;
  display:flex;align-items:center;gap:9px;background:var(--surface);border:1px solid var(--rule);
  padding:9px 14px;font:400 11px/1.4 var(--font-body);color:var(--muted);max-width:90%;}
.lk-foot i{color:var(--accent);font-size:15px;}
.lk-foot b{color:var(--ink);}

/* published (read-only) ribbon for the public side */
.lk-ribbon{position:absolute;top:14px;left:50%;transform:translateX(-50%);z-index:5;
  font-family:var(--font-display);font-size:12px;color:var(--accent);border:2px solid var(--accent);
  padding:5px 11px;letter-spacing:.06em;background:color-mix(in srgb,var(--accent) 10%,var(--surface));}

@media (max-width:760px){
  .lk-palette{width:54px;}
  .lk-obj{justify-content:center;padding:9px;}
  .lk-obj span:not(.ic){display:none;}
  .lk-palette .ph,.lk-hint{display:none;}
  .lk-panel{width:100%;}
}

*:focus-visible{outline:2px solid var(--accent);outline-offset:2px;}
