/* DagaSOC: consola HUD oscura. Tokens del diseño aprobado (propuesta de estilo v1). */
:root{
  --void:#05090c;--deep:#0a1418;--panel:#0c1a1f;--panel-2:#102229;--line:#1b3b42;
  --ink:#e6f6f7;--dim:#7fa3a8;--mute:#4d6d73;
  --cyan:#3ef0e0;--cyan-soft:rgba(62,240,224,.14);
  --threat:#ff4d8d;--threat-soft:rgba(255,77,141,.12);
  --amber:#ffd257;--amber-soft:rgba(255,210,87,.08);
  --ok:#3ddc84;--ok-soft:rgba(61,220,132,.12);
  --f-display:"Sora","Segoe UI",system-ui,sans-serif;
  --f-body:"IBM Plex Sans","Segoe UI",system-ui,sans-serif;
  --f-mono:"JetBrains Mono",ui-monospace,"SFMono-Regular",Menlo,Consolas,monospace;
  color-scheme:dark;
}
*{box-sizing:border-box}
html,body{min-height:100%}
body{margin:0;background:var(--void);color:var(--ink);font-family:var(--f-body);font-size:14px;line-height:1.45;
  background-image:radial-gradient(1200px 600px at 80% -10%,rgba(62,240,224,.10),transparent 60%),radial-gradient(900px 500px at -10% 110%,rgba(255,77,141,.06),transparent 60%),linear-gradient(180deg,var(--deep),var(--void) 70%);background-attachment:fixed}
body::after{content:"";position:fixed;inset:0;pointer-events:none;z-index:0;background-image:linear-gradient(rgba(62,240,224,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(62,240,224,.035) 1px,transparent 1px);background-size:40px 40px;-webkit-mask-image:radial-gradient(ellipse at 50% 30%,#000 30%,transparent 80%);mask-image:radial-gradient(ellipse at 50% 30%,#000 30%,transparent 80%)}
a{color:var(--cyan)}
h1,h2,h3{font-family:var(--f-display);font-weight:600;margin:0;text-wrap:balance}
h1{font-size:22px}h2{font-size:17px}h3{font-size:15px}
p{margin:0}
.mono{font-family:var(--f-mono)}
.dim{color:var(--dim)}.mute{color:var(--mute)}
.app{position:relative;z-index:1;display:grid;grid-template-columns:232px minmax(0,1fr);min-height:100vh}

/* Menú lateral */
.side{border-right:1px solid var(--line);background:rgba(5,9,12,.6);backdrop-filter:blur(6px);padding:22px 16px;display:flex;flex-direction:column;gap:22px;position:sticky;top:0;height:100vh;overflow-y:auto}
.brand{display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--ink)}
.brand-mark{width:34px;height:34px;border-radius:9px;border:1px solid var(--cyan);display:grid;place-items:center;box-shadow:0 0 14px rgba(62,240,224,.45),inset 0 0 10px rgba(62,240,224,.25)}
.brand-name{font-family:var(--f-display);font-weight:700;font-size:17px}
.brand-name b{color:var(--cyan)}
.nav{display:flex;flex-direction:column;gap:2px}
.nav-h{font-family:var(--f-mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--mute);padding:10px 10px 6px}
.nav a{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:8px;color:var(--dim);text-decoration:none;font-weight:500;border:1px solid transparent}
.nav a:hover{color:var(--ink);background:var(--cyan-soft)}
.nav a.on{color:var(--ink);border-color:rgba(62,240,224,.35);background:linear-gradient(90deg,rgba(62,240,224,.16),transparent);box-shadow:inset 2px 0 0 var(--cyan)}
.nav svg{width:16px;height:16px;flex:none;stroke:currentColor;fill:none;stroke-width:1.7}
.nav .count{margin-left:auto;font-family:var(--f-mono);font-size:11px;color:var(--threat)}
.side-foot{margin-top:auto;font-family:var(--f-mono);font-size:11px;color:var(--mute);line-height:1.7;display:flex;flex-direction:column;gap:8px}
.side-foot form{margin:0}
.linkbtn{background:none;border:0;padding:0;color:var(--dim);font:inherit;cursor:pointer;text-decoration:underline}
.linkbtn:hover{color:var(--ink)}

/* Contenido */
.main{padding-block:22px 40px;padding-left:max(24px,env(safe-area-inset-left,0px));padding-right:max(24px,env(safe-area-inset-right,0px));display:flex;flex-direction:column;gap:20px;min-width:0}
.scan{height:2px;background:linear-gradient(90deg,var(--cyan) 0 14%,var(--line) 14%);border-radius:2px;position:relative;overflow:hidden}
.scan::after{content:"";position:absolute;top:0;left:-20%;width:20%;height:100%;background:linear-gradient(90deg,transparent,var(--cyan),transparent);animation:sweep 4s linear infinite}
@keyframes sweep{to{left:100%}}
.pagehead{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:12px}
.pagehead .sub{color:var(--dim);margin-top:4px}

.chips{display:flex;flex-wrap:wrap;gap:8px}
.chip{display:inline-flex;align-items:center;gap:6px;font-family:var(--f-mono);font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;padding:4px 10px;border-radius:999px;border:1px solid rgba(62,240,224,.45);color:var(--cyan);background:var(--cyan-soft);white-space:nowrap}
.chip.ok{border-color:rgba(61,220,132,.5);color:var(--ok);background:var(--ok-soft)}
.chip.threat{border-color:rgba(255,77,141,.55);color:var(--threat);background:var(--threat-soft)}
.chip.amber{border-color:rgba(255,210,87,.5);color:var(--amber);background:var(--amber-soft)}
.chip.mute{border-color:var(--line);color:var(--dim);background:transparent}
.dot{width:7px;height:7px;border-radius:50%;background:currentColor;box-shadow:0 0 8px currentColor}
.pulse{animation:pulse 1.6s ease-in-out infinite}
@keyframes pulse{50%{opacity:.35}}

/* Tarjeta HUD */
.hud{position:relative;border:1px solid var(--line);background:linear-gradient(180deg,var(--panel-2),var(--panel));border-radius:14px;padding:16px;min-width:0}
.hud::before,.hud::after{content:"";position:absolute;width:14px;height:14px;border-color:var(--cyan);border-style:solid;opacity:.75;pointer-events:none}
.hud::before{top:-1px;left:-1px;border-width:2px 0 0 2px;border-top-left-radius:14px}
.hud::after{bottom:-1px;right:-1px;border-width:0 2px 2px 0;border-bottom-right-radius:14px}
.hud.threat{border-color:rgba(255,77,141,.6);box-shadow:0 0 18px rgba(255,77,141,.14)}
.hud.threat::before,.hud.threat::after{border-color:var(--threat)}
.hud-h{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:14px;flex-wrap:wrap}
.tag{display:inline-flex;align-items:center;gap:7px;font-family:var(--f-mono);font-weight:700;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--cyan);padding:5px 11px;border-radius:999px;border:1px solid rgba(62,240,224,.5);background:var(--cyan-soft)}
.tag svg{width:13px;height:13px;stroke:currentColor;fill:none;stroke-width:2}
.meta{font-family:var(--f-mono);font-size:11px;color:var(--mute)}

.grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:18px}
.c3{grid-column:span 3}.c4{grid-column:span 4}.c5{grid-column:span 5}.c6{grid-column:span 6}.c7{grid-column:span 7}.c8{grid-column:span 8}.c12{grid-column:span 12}

.kpi .l{font-family:var(--f-mono);font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--dim)}
.kpi .v{font-family:var(--f-display);font-weight:700;font-size:34px;line-height:1.1;margin-top:8px;font-variant-numeric:tabular-nums}
.kpi .v small{font-size:16px;color:var(--mute);font-weight:500}
.kpi .n{font-family:var(--f-mono);font-size:11.5px;color:var(--dim);margin-top:6px}
.v.threat{color:var(--threat);text-shadow:0 0 18px rgba(255,77,141,.35)}
.v.amber{color:var(--amber)}
.v.cyan{color:var(--cyan);text-shadow:0 0 18px rgba(62,240,224,.3)}
.v.ok{color:var(--ok)}

/* Filas de hallazgos */
.rows{display:flex;flex-direction:column;gap:8px}
.row{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:12px;align-items:center;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:rgba(4,10,12,.5)}
.sev{display:inline-block;width:9px;height:9px;border-radius:50%;flex:none}
.sev.critical{background:var(--threat);box-shadow:0 0 10px var(--threat)}
.sev.high{background:var(--amber);box-shadow:0 0 8px var(--amber)}
.sev.medium{background:var(--cyan);box-shadow:0 0 8px var(--cyan)}
.sev.low{background:var(--mute)}
.row .t1{font-weight:600;font-size:13px;overflow-wrap:anywhere}
.row .t2{font-family:var(--f-mono);font-size:11px;color:var(--dim);overflow-wrap:anywhere}
.row .when{font-family:var(--f-mono);font-size:11px;color:var(--mute);white-space:nowrap;text-align:right}
.mask{color:var(--amber)}
.empty{padding:22px;border:1px dashed var(--line);border-radius:10px;text-align:center;color:var(--dim)}

/* Tabla */
.tablewrap{overflow-x:auto;border:1px solid var(--line);border-radius:10px}
table{width:100%;border-collapse:collapse;font-size:13px}
th{font-family:var(--f-mono);font-weight:500;font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--dim);text-align:left;padding:10px 12px;border-bottom:1px solid var(--line);white-space:nowrap}
td{padding:10px 12px;border-bottom:1px solid rgba(27,59,66,.6);vertical-align:middle}
tr:last-child td{border-bottom:0}
td.num{font-variant-numeric:tabular-nums;font-family:var(--f-mono)}

/* IPs */
.ipgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:8px}
.ip{border:1px solid var(--line);border-radius:10px;padding:10px;font-family:var(--f-mono);font-size:11.5px;background:rgba(4,10,12,.5);display:flex;flex-direction:column;gap:4px;min-width:0}
.ip b{font-size:12.5px;color:var(--ink);font-weight:500;overflow-wrap:anywhere}
.ip span{color:var(--dim);overflow-wrap:anywhere}
.ip.green{border-color:rgba(61,220,132,.4)}.ip.green b::before{content:"● ";color:var(--ok)}
.ip.yellow{border-color:rgba(255,210,87,.45)}.ip.yellow b::before{content:"● ";color:var(--amber)}
.ip.red{border-color:rgba(255,77,141,.6);box-shadow:0 0 14px rgba(255,77,141,.15)}.ip.red b::before{content:"● ";color:var(--threat)}
.ip.unknown b::before{content:"○ ";color:var(--mute)}
.ip form{margin:0}

/* Formularios */
.form{display:flex;flex-direction:column;gap:14px}
.field{display:flex;flex-direction:column;gap:6px;min-width:0}
.field label{font-family:var(--f-mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--dim)}
.field .help{font-size:12px;color:var(--mute)}
.input,select.input,textarea.input{width:100%;background:#071013;border:1px solid var(--line);border-radius:10px;padding:10px 12px;color:var(--ink);font:inherit;font-size:14px}
textarea.input{font-family:var(--f-mono);font-size:12px;min-height:90px}
.input:focus{outline:none;border-color:var(--cyan);box-shadow:0 0 0 3px var(--cyan-soft)}
.inline{display:flex;flex-wrap:wrap;gap:10px;align-items:flex-end}
.inline .field{flex:1 1 200px}
.error{color:var(--threat);font-size:12px}
.filters{display:flex;gap:10px;flex-wrap:wrap}
.access{margin-top:6px}
.access summary{cursor:pointer;color:var(--amber);font-family:var(--f-mono);font-size:11.5px}
.access ul{margin:8px 0 6px;padding-left:16px;display:flex;flex-direction:column;gap:4px;color:var(--ink);font-size:12.5px}
.access .mono{color:var(--dim);font-size:11.5px;overflow-wrap:anywhere}
.userrow{display:block}
.userrow>summary{display:grid;grid-template-columns:auto minmax(0,1fr);gap:12px;align-items:center;cursor:pointer;list-style:none}
.userrow>summary::-webkit-details-marker{display:none}
.userrow[open]{border-color:rgba(62,240,224,.45)}
.check{display:flex;gap:10px;align-items:flex-start;flex-wrap:nowrap;cursor:pointer}
.check input{margin-top:4px;flex:none;accent-color:var(--cyan)}
.filters .field{flex:0 0 170px}
.radio{display:flex;gap:8px;flex-wrap:wrap}
.radio label{display:inline-flex;align-items:center;gap:6px;padding:7px 12px;border:1px solid var(--line);border-radius:999px;cursor:pointer;font-family:var(--f-mono);font-size:11.5px;text-transform:none;letter-spacing:0;color:var(--dim)}
.radio input{accent-color:var(--cyan)}
.radio label:has(input:checked){border-color:var(--cyan);color:var(--cyan);background:var(--cyan-soft)}

.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;font-family:var(--f-mono);font-weight:700;font-size:12px;letter-spacing:.08em;text-transform:uppercase;padding:10px 16px;border-radius:10px;cursor:pointer;border:1px solid var(--cyan);color:var(--cyan);background:var(--cyan-soft);text-decoration:none;white-space:nowrap}
.btn:hover{box-shadow:0 0 16px rgba(62,240,224,.3)}
.btn.ok{border-color:var(--ok);color:var(--ok);background:var(--ok-soft)}
.btn.danger{border-color:rgba(255,77,141,.6);color:var(--threat);background:var(--threat-soft)}
.btn.ghost{border-color:var(--line);color:var(--dim);background:transparent}
.btn.ghost:hover{box-shadow:none;color:var(--ink);border-color:var(--mute)}
.btn.sm{padding:6px 10px;font-size:10.5px}
.btn:focus-visible,.input:focus-visible,.nav a:focus-visible,.linkbtn:focus-visible{outline:2px solid var(--cyan);outline-offset:2px}

.flash{border:1px solid var(--ok);background:var(--ok-soft);color:var(--ink);border-radius:10px;padding:10px 14px}
.flash.err{border-color:var(--threat);background:var(--threat-soft)}
.notice{border:1px solid rgba(255,210,87,.5);background:var(--amber-soft);border-radius:12px;padding:14px 16px;display:flex;flex-wrap:wrap;gap:12px;align-items:center;justify-content:space-between}
.notice p{color:var(--ink)}
.code{font-family:var(--f-mono);font-size:12.5px;background:#040a0c;border:1px solid var(--line);border-radius:8px;padding:8px 10px;overflow-wrap:anywhere;user-select:all}

/* Pantallas de ingreso */
.auth{position:relative;z-index:1;min-height:100vh;display:grid;place-items:center;padding-block:32px;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px))}
.auth .hud{width:100%;max-width:440px;padding:28px}
.auth h1{margin-top:18px}
.auth .sub{color:var(--dim);margin-top:6px;margin-bottom:20px}

@media (max-width:1180px){.c3{grid-column:span 6}.c4,.c5,.c6,.c7,.c8{grid-column:span 12}}
@media (max-width:860px){
  .app{grid-template-columns:minmax(0,1fr)}
  .side{position:static;height:auto;flex-direction:row;flex-wrap:wrap;align-items:center;padding:14px max(16px,env(safe-area-inset-left,0px));gap:12px;border-right:0;border-bottom:1px solid var(--line)}
  .nav{flex-direction:row;overflow-x:auto;width:100%;gap:4px}
  .nav-h{display:none}
  .nav a{white-space:nowrap}
  .side-foot{margin-top:0;flex-direction:row;flex-wrap:wrap;gap:12px}
  .main{padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px))}
}
@media (max-width:520px){.c3{grid-column:span 12}.row{grid-template-columns:auto minmax(0,1fr)}.row .when{grid-column:2;text-align:left}}
@media (prefers-reduced-motion:reduce){*{animation:none!important}}
