/* ============================================================================
   KVNMS ICON SET — Lucide (ISC), same icons as KusumaVisionNMS
   ---------------------------------------------------------------------------
   Copied verbatim from @lucide/vue v1.16.0 (node_modules of KusumaVisionNMS)
   so both apps draw the exact same glyphs with the same 24x24 grid, stroke
   width and join style. Rendered inline as <svg class="kv-i">, never as a
   webfont: this is how KvNMS does it too.

   Markup contract used by the PHP side (config/icons.php):

     <svg class="kv-i {extra}" width="24" height="24" viewBox="0 0 24 24"
          fill="none" stroke="currentColor" stroke-width="2"
          stroke-linecap="round" stroke-linejoin="round">...</svg>

   `.kv-i` only sets sizing + flex behaviour. Colour always comes from
   `currentColor`, so an icon inherits whatever colour its container has —
   that is what lets the active menu item recolour its whole row.
   ========================================================================= */

.kv-i {
    display: inline-block;
    vertical-align: middle;
    flex-shrink: 0;
    width: 1em;
    height: 1em;
    overflow: visible;
}

/* Default stroke attrs, for anyone inlining an icon without the full set. */
.kv-i {
    fill: none;
    stroke: currentColor;
    stroke-width: 2;
    stroke-linecap: round;
    stroke-linejoin: round;
}

/* --- Sizes -----------------------------------------------------------------
   Mirrors KvNMS's `h-4 w-4` (16px) in nav and `h-3.5 w-3.5` in the segmented
   theme picker. Expressed in `em` so they track the surrounding font-size,
   which is what makes one rule work in a 0.65rem pill title and a 1.4rem
   modal title without extra classes.
   ------------------------------------------------------------------------- */
.kv-i-xs { width: 0.75em; height: 0.75em; stroke-width: 2.5; }
.kv-i-sm { width: 0.875em; height: 0.875em; }
.kv-i    { width: 1em;    height: 1em;    }
.kv-i-md { width: 1.25em; height: 1.25em; stroke-width: 1.75; }
.kv-i-lg { width: 1.5em;  height: 1.5em;  stroke-width: 1.75; }
.kv-i-xl { width: 2em;    height: 2em;    stroke-width: 1.5; }

/* --- Contextual colouring --------------------------------------------------
   KvNMS reuses one glyph in several roles (BellRing is both the "Alarmas" nav
   item and the notification bell). These helpers keep that reuse legible in
   irmav3 without each call site inventing its own hex.
   ------------------------------------------------------------------------- */
.kv-i-cyan    { color: var(--kv-cyan-500); }
.kv-i-sky     { color: var(--kv-sky-500); }
.kv-i-emerald { color: var(--kv-emerald-500); }
.kv-i-amber   { color: var(--kv-amber-500); }
.kv-i-rose    { color: var(--kv-rose-500); }
.kv-i-red     { color: var(--kv-red-500); }
.kv-i-slate   { color: var(--kv-slate-400); }
.kv-i-muted   { color: var(--kv-slate-500); }

/* A 2px hairline icon disappears at 12px. Thinning the stroke keeps small
   sizes legible — same reason KvNMS's `sm` theme buttons use a 14px box. */
.kv-i-xs, .kv-i-sm { vector-effect: non-scaling-stroke; }
