/* NetLog — mismo lenguaje visual que NetWisp: base azul marino y blanco, Source Sans 3 (alternativa libre a Myriad),
   el degradado de la marca solo como acento («hilo de fibra»: dónde estás, foco y línea bajo el título). */
@font-face{font-family:"Source Sans 3";font-weight:400;font-display:swap;src:url(fonts/source-sans-3-latin-400-normal.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+20AC,U+2122,U+2190-2199,U+2212}
@font-face{font-family:"Source Sans 3";font-weight:600;font-display:swap;src:url(fonts/source-sans-3-latin-600-normal.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+20AC,U+2122,U+2190-2199,U+2212}
@font-face{font-family:"Source Sans 3";font-weight:700;font-display:swap;src:url(fonts/source-sans-3-latin-700-normal.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+20AC,U+2122,U+2190-2199,U+2212}
@font-face{font-family:"Source Sans 3";font-weight:400;font-display:swap;src:url(fonts/source-sans-3-latin-ext-400-normal.woff2) format("woff2");unicode-range:U+0100-02AF,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:"Source Sans 3";font-weight:600;font-display:swap;src:url(fonts/source-sans-3-latin-ext-600-normal.woff2) format("woff2");unicode-range:U+0100-02AF,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:"Source Sans 3";font-weight:700;font-display:swap;src:url(fonts/source-sans-3-latin-ext-700-normal.woff2) format("woff2");unicode-range:U+0100-02AF,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:"Poppins NL";font-weight:700;font-display:swap;src:url(fonts/poppins-latin-700-normal.woff2) format("woff2")}

:root{
  /* escala de la marca (la misma de NetWisp) */
  --m950:#001629; --m900:#00213d; --marino:#00315a; --m700:#3c5582; --m500:#717c9d; --m300:#a5afc4; --m100:#e3e8f0; --m50:#f3f5f8;
  --mag:#a02984; --fuc:#e7465c;
  --s-ok:#0e9f8e; --s-aviso:#d98e1c; --s-caida:#c8323c;
  /* variables que usan todas las pantallas */
  --bg:var(--m50); --card:#fff; --text:var(--marino); --muted:var(--m500); --line:var(--m100); --line-2:#eef1f6;
  --brand:var(--marino); --accent:var(--m700); --grad-a:var(--marino); --grad-b:var(--m700);
  --ok:var(--s-ok); --warn:var(--s-aviso); --bad:var(--s-caida); --radius:12px;
  --btn-bg:var(--marino); --btn-tx:#fff; --btn-hover:var(--m700);
  --hilo:linear-gradient(90deg,#00315a 0%,#3c5582 45%,#a02984 100%);
  --hilo-v:linear-gradient(180deg,#a02984,#e7465c);
  --sombra:0 1px 0 rgba(0,49,90,.04),0 1px 3px rgba(0,49,90,.08);
  --flotante:0 12px 40px -8px rgba(0,33,61,.35),0 2px 6px rgba(0,33,61,.12);
  --top:56px; --side:244px; --inf:0px;
  color-scheme:light;
  font-family:"Source Sans 3",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
}
html.dark{
  --bg:var(--m950); --card:var(--m900); --text:var(--m50); --muted:var(--m300); --line:rgba(255,255,255,.10); --line-2:rgba(255,255,255,.05);
  --brand:var(--m100); --accent:var(--m300); --grad-a:var(--m700); --grad-b:var(--m500);
  --btn-bg:var(--m100); --btn-tx:var(--m900); --btn-hover:#fff;
  --hilo:linear-gradient(90deg,#f3f5f8 0%,#a5afc4 45%,#e0569b 100%); --hilo-v:linear-gradient(180deg,#e0569b,#e7465c);
  --ok:#2dd4bf; --warn:#f0b04a; --bad:#fb7185;
  color-scheme:dark;
}
*{box-sizing:border-box}
html{-webkit-tap-highlight-color:transparent}
body{margin:0;background:var(--bg);color:var(--text);font-size:14px;line-height:1.45;-webkit-font-smoothing:antialiased;
  font-feature-settings:"tnum" 1,"lnum" 1}
a{color:var(--accent);text-underline-offset:3px}
:focus-visible{outline:2px solid rgba(160,41,132,.55);outline-offset:2px;border-radius:4px}
::selection{background:rgba(160,41,132,.2)}
*{scrollbar-width:thin;scrollbar-color:rgba(165,175,196,.7) transparent}
::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:rgba(165,175,196,.6);border-radius:999px;border:3px solid transparent;background-clip:content-box}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}

/* ------------------------------------------------------------------ armazón */
.ic{width:18px;height:18px;flex:none;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.nw-top{position:fixed;inset:0 0 auto 0;z-index:40;height:var(--top);display:flex;align-items:center;gap:8px;padding:0 16px;
  background:var(--marino);color:#fff;border-bottom:1px solid rgba(255,255,255,.06)}
html.dark .nw-top{background:#001a31}
.nw-logo{display:flex;align-items:center;gap:9px;text-decoration:none;color:#fff;flex:none;width:212px}
.nw-iso{width:22px;height:22px}
.nw-nombre{font-family:"Poppins NL","Source Sans 3",sans-serif;font-weight:700;font-size:20px;letter-spacing:-.01em;line-height:1}
.nw-areas{display:flex;align-self:stretch}
.nw-areas a{position:relative;display:flex;align-items:center;gap:8px;padding:0 16px;color:var(--m300);text-decoration:none;font-weight:600;font-size:14.5px;transition:color .15s}
.nw-areas a:hover,.nw-areas a.on{color:#fff}
.nw-areas a.on::after{content:"";position:absolute;left:12px;right:12px;bottom:0;height:3px;border-radius:3px 3px 0 0;background:linear-gradient(90deg,var(--mag),var(--fuc))}
.nw-areas .ic{width:16px;height:16px}
.nw-buscar{margin-left:24px;display:flex;align-items:center;gap:8px;height:36px;width:min(384px,30vw);padding:0 12px;border:0;border-radius:8px;
  background:rgba(255,255,255,.08);color:var(--m300);font:inherit;font-size:13px;cursor:pointer;text-align:left;font-weight:400;transition:background .15s,color .15s}
.nw-buscar:hover{background:rgba(255,255,255,.12);color:#fff}
.nw-buscar span{flex:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
kbd{border:1px solid rgba(255,255,255,.15);border-radius:4px;padding:0 6px;font:600 11px/18px "Source Sans 3",sans-serif;color:var(--m300)}
.nw-acc{margin-left:auto;display:flex;align-items:center;gap:4px}
.nw-ib{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;border:0;border-radius:8px;background:transparent;color:var(--m300);cursor:pointer}
.nw-ib:hover{background:rgba(255,255,255,.1);color:#fff}
.nw-ib .i-sol{display:none}html.dark .nw-ib .i-sol{display:inline-flex}html.dark .nw-ib .i-luna{display:none}
.nw-ib span{display:inline-flex}
.nw-cuenta{position:relative}.nw-cuenta summary{list-style:none;cursor:pointer;padding:4px;border-radius:8px}
.nw-cuenta summary::-webkit-details-marker{display:none}.nw-cuenta summary:hover{background:rgba(255,255,255,.1)}
.nw-ini{display:grid;place-items:center;width:28px;height:28px;border-radius:50%;background:rgba(255,255,255,.15);font-size:11px;font-weight:700;color:#fff}
.nw-pop{position:absolute;right:0;top:44px;width:280px;background:var(--card);color:var(--text);border:1px solid var(--line);border-radius:12px;box-shadow:var(--flotante);overflow:hidden;animation:desplegar .18s cubic-bezier(.16,1,.3,1) both}
.nw-pop-h{padding:12px 16px;border-bottom:1px solid var(--line)}.nw-pop-h b{display:block}.nw-pop-h small{color:var(--muted)}
.nw-pop a{display:flex;align-items:center;gap:8px;padding:10px 16px;color:var(--text);text-decoration:none;font-weight:600;font-size:13.5px}
.nw-pop a:hover{background:var(--bg)}.nw-pop a .ic{width:16px;height:16px}

.nw-side{position:fixed;left:0;top:var(--top);bottom:0;z-index:30;width:var(--side);display:flex;flex-direction:column;
  background:var(--card);border-right:1px solid var(--line);transition:width .2s cubic-bezier(.16,1,.3,1)}
html.dark .nw-side{background:var(--m950)}
.nw-side-in{flex:1;overflow-y:auto;padding:12px 10px}
.nw-areas-cajon{display:none}
.nw-sec{margin-bottom:14px}
.nw-sec-t{margin:6px 10px 6px;font-size:11.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);white-space:nowrap;overflow:hidden}
.nw-ent{position:relative;display:flex;align-items:center;gap:10px;height:36px;padding:0 10px;border-radius:8px;color:var(--m700);text-decoration:none;font-weight:600;font-size:14px;white-space:nowrap;transition:background .15s,color .15s}
html.dark .nw-ent{color:var(--m300)}
.nw-ent:hover{background:var(--m50);color:var(--marino)}html.dark .nw-ent:hover{background:rgba(255,255,255,.05);color:#fff}
.nw-ent.on{background:var(--m50);color:var(--marino)}html.dark .nw-ent.on{background:rgba(255,255,255,.08);color:#fff}
.nw-ent.on::before{content:"";position:absolute;left:-10px;top:7px;bottom:7px;width:3px;border-radius:0 3px 3px 0;background:var(--hilo-v)}
.nw-ent-t{flex:1;overflow:hidden;text-overflow:ellipsis}
.nw-side-pie{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 10px;border-top:1px solid var(--line)}
.nw-side-pie .nw-ib{color:var(--muted)}.nw-side-pie .nw-ib:hover{background:var(--bg);color:var(--text)}
.nw-operador{max-height:22px;max-width:120px;opacity:.7}
html.dark .nw-operador{filter:brightness(0) invert(1);opacity:.55}
/* menú contraído */
html.rail{--side:64px}
html.rail .nw-sec-t,html.rail .nw-ent-t,html.rail .nw-operador{display:none}
html.rail .nw-ent{justify-content:center;padding:0}html.rail .nw-ent .hito{position:absolute;top:2px;right:2px;transform:scale(.8)}
html.rail .nw-side-pie{justify-content:center}

/* hitos kilométricos: contadores del menú */
.hito{display:inline-flex;min-width:1.6rem;align-items:center;justify-content:center;border:1px solid var(--line);border-radius:10px 10px 3px 3px;
  background:var(--card);padding:3px 6px 1px;font-weight:700;font-size:11.5px;line-height:1;color:var(--marino);font-style:normal}
html.dark .hito{color:#fff;background:rgba(255,255,255,.1)}
.hito-alerta{border-color:transparent;background:var(--s-caida);color:#fff}html.dark .hito-alerta{background:var(--bad);color:var(--m950)}
.hito[hidden]{display:none}

.nw-main{padding-top:var(--top);padding-left:var(--side);padding-bottom:var(--inf);transition:padding .2s cubic-bezier(.16,1,.3,1);min-height:100vh}
.nw-pag{max-width:1440px;margin:0 auto;padding:24px 32px 40px;animation:entrar .38s cubic-bezier(.16,1,.3,1) backwards}
body:not(:has(.nw-top)) .nw-main{padding:0}

.nw-velo{position:fixed;inset:0;z-index:45;background:rgba(0,22,41,.6);backdrop-filter:blur(3px)}
.nw-solo-tab{display:none}
.nw-inf{display:none}

/* paleta de búsqueda */
.nw-paleta{position:fixed;inset:0;z-index:60;background:rgba(0,22,41,.55);backdrop-filter:blur(3px);display:flex;justify-content:center;align-items:flex-start;padding:12vh 16px 16px;animation:aparecer .15s ease-out both}
.nw-paleta[hidden]{display:none}
.nw-paleta-c{width:min(640px,100%);background:var(--card);border:1px solid var(--line);border-radius:14px;box-shadow:var(--flotante);overflow:hidden}
.nw-paleta-in{display:flex;align-items:center;gap:10px;padding:0 14px;border-bottom:1px solid var(--line);color:var(--muted)}
.nw-paleta-in input{border:0;outline:0;background:transparent;height:52px;font-size:16px;padding:0;color:var(--text)}
.nw-paleta-in input:focus{box-shadow:none}
.nw-paleta-in kbd{color:var(--muted);border-color:var(--line)}
#nw-res{list-style:none;margin:0;padding:6px;max-height:min(420px,60vh);overflow:auto}
#nw-res a{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:8px;color:var(--text);text-decoration:none;font-weight:600}
#nw-res a small{margin-left:auto;color:var(--muted);font-weight:400}
#nw-res a .ic{color:var(--muted)}
#nw-res li[aria-selected="true"] a,#nw-res a:hover{background:var(--bg)}
#nw-res li[aria-selected="true"] a{box-shadow:inset 3px 0 0 var(--mag)}
.nw-vacio{padding:18px;text-align:center;color:var(--muted)}

@keyframes entrar{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
@keyframes aparecer{from{opacity:0}to{opacity:1}}
@keyframes desplegar{from{opacity:0;transform:translateY(-3px)}to{opacity:1;transform:none}}
@keyframes carril{from{transform:scaleX(0)}to{transform:scaleX(1)}}
@keyframes subir{from{transform:translateY(100%)}to{transform:none}}

/* tablet: el menú lateral pasa a cajón */
@media (max-width:1023.98px){
  :root,html.rail{--side:0px}
  .nw-solo-tab{display:inline-flex}
  .nw-logo{width:auto;padding-right:8px}
  .nw-side{width:min(300px,84vw);transform:translateX(-102%);transition:transform .25s cubic-bezier(.16,1,.3,1);z-index:50;top:0;box-shadow:var(--flotante)}
  html.cajon .nw-side{transform:none}
  html.rail .nw-sec-t,html.rail .nw-ent-t,html.rail .nw-operador{display:revert}
  html.rail .nw-ent{justify-content:flex-start;padding:0 10px}
  .nw-side-pie [data-rail]{display:none}
  .nw-areas-cajon{display:grid;grid-auto-flow:column;gap:4px;padding:0 0 10px;margin-bottom:10px;border-bottom:1px solid var(--line)}
  .nw-areas-cajon a{display:flex;flex-direction:column;align-items:center;gap:3px;padding:8px 2px;border-radius:8px;font-size:12px;font-weight:600;color:var(--muted);text-decoration:none}
  .nw-areas-cajon a.on{background:var(--bg);color:var(--text)}
  .nw-buscar{width:auto;flex:1;max-width:420px;margin-left:8px}
  .nw-areas{display:none}
  .nw-pag{padding:20px 20px 32px}
}
/* móvil: barra inferior con los accesos más usados */
@media (max-width:767.98px){
  :root{--inf:calc(60px + env(safe-area-inset-bottom,0px));--top:52px}
  .nw-top{padding:0 8px}
  .nw-top .nw-solo-tab{display:none}
  .nw-buscar kbd,.nw-buscar span{display:none}.nw-buscar{flex:none;width:36px;padding:0;justify-content:center;margin-left:auto}
  .nw-acc{margin-left:0}
  .nw-inf{display:grid;grid-template-columns:repeat(5,1fr);position:fixed;left:0;right:0;bottom:0;z-index:40;height:var(--inf);padding-bottom:env(safe-area-inset-bottom,0px);
    background:var(--card);border-top:1px solid var(--line);box-shadow:0 -4px 20px -12px rgba(0,33,61,.35)}
  .nw-inf a,.nw-inf button{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;border:0;background:none;padding:0;color:var(--muted);text-decoration:none;font:600 11.5px "Source Sans 3",sans-serif}
  .nw-inf a.on{color:var(--text)}.nw-inf a.on::before{content:"";position:absolute;top:0;left:30%;right:30%;height:3px;border-radius:0 0 3px 3px;background:linear-gradient(90deg,var(--mag),var(--fuc))}
  .nw-inf .ic{width:21px;height:21px}
  .nw-inf .hito{position:absolute;top:5px;left:calc(50% + 4px);transform:scale(.85)}
  .nw-pag{padding:16px 14px 24px}
  .nw-paleta{padding-top:8vh}
  .nw-side{top:0}
}

/* ------------------------------------------------------------------ tipografía y contenido */
h1{font-size:28px;font-weight:700;line-height:1.1;letter-spacing:-.005em;color:var(--marino);margin:4px 0 22px;text-wrap:balance}
html.dark h1{color:#fff}
h1::after{content:"";display:block;margin-top:12px;height:3px;width:96px;border-radius:3px;background:var(--hilo);transform-origin:left;animation:carril .7s cubic-bezier(.16,1,.3,1) both}
h2{font-size:17px;font-weight:600;line-height:1.3;margin:0 0 12px;color:var(--marino)}html.dark h2{color:#fff}
h3{color:var(--text)}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:20px;margin-bottom:16px}
.grid{display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(min(170px,45%),1fr))}
.grid>*{min-width:0}
.kpi .v{font-size:28px;font-weight:700;letter-spacing:-.01em;color:var(--marino)}html.dark .kpi .v{color:#fff}
.kpi .l{color:var(--muted);font-size:12px;font-weight:600}
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;margin-bottom:16px}
.kpis .card{margin:0;padding:14px 16px}.kpis b{display:block;font-size:26px;margin-top:2px;letter-spacing:-.01em}.kpis small{color:var(--muted)}
.g2{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(420px,100%),1fr));gap:16px}.g2 .card{margin:0}

/* tablas */
table{width:100%;border-collapse:separate;border-spacing:0;font-size:13.5px}
th,td{text-align:left;padding:9px 12px;border-bottom:1px solid var(--line-2);vertical-align:top}
th{white-space:nowrap;color:var(--muted);font-weight:600;font-size:12px;background:var(--m50);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:1}
html.dark th{background:var(--m900)}
td{white-space:normal;overflow-wrap:break-word;min-width:48px}
tbody tr,table tr{transition:background .12s}
table tr:hover>td{background:rgba(243,245,248,.7)}html.dark table tr:hover>td{background:rgba(255,255,255,.03)}
table tr:last-child>td{border-bottom:0}
td.mono,td .mono,td small.mono{white-space:nowrap}
.tablawrap,.scroll{overflow-x:auto;max-width:100%}
.card>.tablawrap,.card>.scroll{margin:0 -20px;padding:0}
.card>.tablawrap table th:first-child,.card>.scroll table th:first-child,.card>.tablawrap table td:first-child,.card>.scroll table td:first-child{padding-left:20px}
.card>.tablawrap table th:last-child,.card>.scroll table th:last-child,.card>.tablawrap table td:last-child,.card>.scroll table td:last-child{padding-right:20px}
th{cursor:pointer;user-select:none}
th[data-orden="desc"]::after{content:" ▼";font-size:.75em;opacity:.7}
th[data-orden="asc"]::after{content:" ▲";font-size:.75em;opacity:.7}
table.nosort th{cursor:default}

/* formularios */
form.inline{display:inline}
label{display:block;font-size:12px;font-weight:600;color:var(--muted);margin-bottom:4px}
input,select,textarea{font:inherit;font-size:13.5px;height:36px;padding:0 12px;border:1px solid var(--line);border-radius:8px;background:var(--card);color:var(--text);min-width:0;width:100%;
  transition:border-color .15s,box-shadow .15s}
html.dark input,html.dark select,html.dark textarea{background:rgba(255,255,255,.05);border-color:rgba(255,255,255,.15)}
textarea{height:auto;padding:8px 12px}
input[type=checkbox],input[type=radio]{width:auto;height:auto;accent-color:var(--marino)}
input[type=color]{padding:2px;width:44px}
input[type=file]{height:auto;padding:6px}
input::placeholder{color:var(--m300)}
input:focus,select:focus,textarea:focus{outline:none;border-color:rgba(160,41,132,.6);box-shadow:0 0 0 3px rgba(160,41,132,.15)}
select option{background:var(--card);color:var(--text)}
.fields{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));align-items:end}
button,.btn{font:inherit;font-size:13.5px;font-weight:600;border:0;border-radius:8px;height:36px;padding:0 14px;background:var(--btn-bg);color:var(--btn-tx);cursor:pointer;
  text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:8px;white-space:nowrap;transition:background .15s,border-color .15s,transform .1s}
button:hover,.btn:hover{background:var(--btn-hover)}
button:active,.btn:active{transform:translateY(1px)}
button:disabled{opacity:.5;pointer-events:none}
button.sec,.btn.sec{background:var(--card);color:var(--text);border:1px solid var(--line)}
button.sec:hover,.btn.sec:hover{border-color:var(--m300);background:var(--card)}
html.dark button.sec,html.dark .btn.sec{background:rgba(255,255,255,.05);border-color:rgba(255,255,255,.15)}
button.small{height:28px;padding:0 10px;font-size:12px}
button.peligro,.btn.peligro{background:#c22a43;color:#fff}

/* pestañas: chips */
.tabs{display:flex;gap:6px;margin-bottom:16px;flex-wrap:wrap}
.tabs a{display:inline-flex;align-items:center;height:32px;padding:0 14px;border-radius:999px;text-decoration:none;color:var(--m700);border:1px solid var(--line);background:var(--card);font-weight:600;font-size:13px}
html.dark .tabs a{color:var(--m300);background:rgba(255,255,255,.04)}
.tabs a:hover{border-color:var(--m300)}
.tabs a.on{background:var(--marino);color:#fff;border-color:transparent}html.dark .tabs a.on{background:var(--m100);color:var(--m900)}

/* mensajes y etiquetas */
.msg{padding:10px 14px;border-radius:10px;margin-bottom:14px;border:1px solid transparent;font-weight:600}
.msg.err{background:rgba(200,50,60,.08);color:var(--bad);border-color:rgba(200,50,60,.2)}
.msg.ok{background:rgba(14,159,142,.08);color:var(--ok);border-color:rgba(14,159,142,.2)}
.msg.warn{background:rgba(217,142,28,.1);color:var(--warn);border-color:rgba(217,142,28,.25)}
.tag{display:inline-flex;align-items:center;gap:4px;padding:3px 7px;border-radius:6px;font-size:11.5px;font-weight:700;line-height:1;white-space:nowrap;background:var(--m50);color:var(--m700)}
html.dark .tag{background:rgba(255,255,255,.08);color:var(--m300)}
.tag.ok{background:rgba(14,159,142,.12);color:var(--ok)}.tag.bad{background:rgba(200,50,60,.12);color:var(--bad)}.tag.warn{background:rgba(217,142,28,.14);color:var(--warn)}
.muted{color:var(--muted)}
.mono{font-family:"Source Sans 3",system-ui,sans-serif;font-weight:600;font-variant-numeric:tabular-nums}
pre{background:var(--m950);color:var(--m100);padding:14px;border-radius:10px;overflow-x:auto;font:12.5px/1.5 ui-monospace,Consolas,monospace}
code{font:12.5px ui-monospace,Consolas,monospace;background:var(--m50);padding:1px 5px;border-radius:4px}html.dark code{background:rgba(255,255,255,.08)}
a.ipw{color:inherit;text-decoration:underline dotted;text-underline-offset:2px;font-weight:600;font-variant-numeric:tabular-nums}
a.ipw:hover{color:var(--accent);text-decoration:underline}

/* barras y gráficas */
.hbar{height:8px;background:var(--line);border-radius:999px;overflow:hidden;min-width:120px}
.hbar i{display:block;height:100%;border-radius:999px;background:var(--marino)}html.dark .hbar i{background:var(--m300)}
.hbar.warn i{background:var(--warn)}.hbar.bad i{background:var(--bad)}
svg.gr{width:100%;height:auto;display:block;overflow:visible}
.gl{display:flex;flex-wrap:wrap;gap:12px;font-size:12px;color:var(--muted);margin:2px 0 6px}
.gl i,.dl i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:5px;vertical-align:-1px}
.dn{display:flex;align-items:center;gap:18px;flex-wrap:wrap}.dl{display:flex;flex-direction:column;gap:4px;font-size:13px}
table.hb{width:100%;border-collapse:collapse}table.hb td{padding:4px 6px;border:0;font-size:13px}table.hb tr:hover>td{background:none}
table.hb td:first-child{max-width:230px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
table.hb td.v{text-align:right;white-space:nowrap;width:1%}

/* logos de fabricante */
img.marca{height:16px;max-width:22px;vertical-align:-3px;margin-right:6px;object-fit:contain}
.marca-t{display:inline-block;font-size:9px;font-weight:700;letter-spacing:.03em;text-transform:uppercase;padding:1px 5px;border-radius:5px;background:var(--mut,#8a93a6);color:#fff;margin-right:6px;vertical-align:1px}

/* ------------------------------------------------------------------ acceso (portada como NetWisp) */
body:has(.login){background:var(--m950)}
.login-fondo{position:fixed;inset:0;z-index:0;overflow:hidden;background:radial-gradient(1200px 600px at 80% -10%,#0a3b66 0%,transparent 60%),linear-gradient(160deg,#00315a 0%,#001629 70%)}
.login-fondo svg{position:absolute;inset:0;width:100%;height:100%;opacity:.5}
.login-fondo path{fill:none;stroke-width:1.4;stroke-dasharray:1600;stroke-dashoffset:1600;animation:trazar 3.2s cubic-bezier(.16,1,.3,1) forwards}
@keyframes trazar{to{stroke-dashoffset:0}}
.login-marca{position:fixed;top:28px;left:32px;z-index:1;display:flex;align-items:center;gap:10px;color:#fff;text-decoration:none}
.login-marca .nw-iso{width:30px;height:30px}.login-marca .nw-nombre{font-size:26px}
.login-op{position:fixed;right:28px;bottom:24px;z-index:1;max-height:26px;opacity:.75}
.login{position:relative;z-index:1;width:min(400px,calc(100% - 32px));margin:0 auto;padding-top:22vh}
.login .card{padding:28px;border:0;box-shadow:var(--flotante);border-radius:16px}
.login h2{font-size:22px;font-weight:700;margin-bottom:4px}
.login .sub{color:var(--muted);margin:0 0 20px}
.login label{margin-top:12px}
.login button{width:100%;height:40px;margin-top:18px}
@media (max-width:767.98px){.login{padding-top:16vh}.login-marca{top:20px;left:20px}}

/* ------------------------------------------------------------------ informe imprimible */
.report{background:#fff;color:#111;max-width:1100px;margin:auto;padding:30px}
.report .head{display:flex;justify-content:space-between;align-items:center;border-bottom:4px solid;border-image:linear-gradient(90deg,#00315a,#3c5582) 1;padding-bottom:12px;margin-bottom:16px}
.report .head img{height:40px;filter:none}
.report th,.report td{border-bottom:1px solid #ddd;color:#111;background:#fff;position:static}
.report .foot{margin-top:24px;font-size:11px;color:#555}
.report h1::after{display:none}
@media print{
  .noprint,.nw-top,.nw-side,.nw-inf,.nw-velo{display:none!important}
  .nw-main{padding:0!important}.nw-pag{padding:0;animation:none}
  body{background:#fff}.report{padding:0}
}

/* textos largos (URL, comandos) sin desbordar en el móvil */
code{overflow-wrap:anywhere;word-break:break-word}
