:root {
    --bg:      #080c14;
    --bg2:     #0c1220;
    --bg3:     #111827;
    --card:    #141e2e;
    --card2:   #1a2540;
    --border:  #1f2e47;
    --border2: #263552;
    --accent:  #00d4ff;
    --accent2: #0099cc;
    --green:   #00ff88;
    --yellow:  #ffcc00;
    --orange:  #ff8800;
    --red:     #ff3355;
    --purple:  #aa88ff;
    --text:    #dde8ff;
    --text2:   #7a8faa;
    --text3:   #3d5070;
    --font:    'Inter', sans-serif;
    --mono:    'JetBrains Mono', monospace;
    --r:       12px;
    --header-h: 70px;
    --tabbar-h: 48px;
    --sidebar-w: 180px;
}

*, *::before, *::after { margin:0; padding:0; box-sizing:border-box; }
html { scroll-behavior: smooth; }
body {
    background: var(--bg) url('/static/bg_circuit.png') center/cover no-repeat fixed;
    color:var(--text); font-family:var(--font); line-height:1.6; overflow-x:hidden; min-height:100vh;
}

/* Dark overlay over the image */
body::before {
    content:''; position:fixed; inset:0; z-index:0;
    background: rgba(4,6,18,0.82);
    pointer-events:none;
}

#circuit-bg {
    position:fixed; top:0; left:0; width:100%; height:100%;
    z-index:1; pointer-events:none; opacity:0.35;
}

/* All UI above bg and canvas */
.header       { z-index:200 !important; }
.tab-bar      { z-index:100 !important; }
.tab-content  { position:relative; z-index:10; }

/* ── HEADER ─────────────────────────────────────────── */
.header {
    position:fixed; top:0; left:0; right:0; z-index:200;
    height:var(--header-h);
    background:rgba(8,12,20,0.95);
    backdrop-filter:blur(16px);
    border-bottom:1px solid var(--border);
}
.header-inner {
    margin-left:var(--sidebar-w); max-width:1400px; padding:0 24px;
    height:100%; display:flex; align-items:center; justify-content:space-between;
}
.logo { display:flex; align-items:center; gap:14px; cursor:pointer; }
.logo-img { width:50px; height:56px; display:block; filter:drop-shadow(0 0 12px rgba(0,212,255,0.7)); flex-shrink:0; }

.logo-brand { display:flex; flex-direction:column; gap:1px; }

.logo-name { display:flex; align-items:baseline; line-height:1; }

.logo-hacker {
    font-size:26px; font-weight:800; letter-spacing:1px;
    font-style:italic;
    background: linear-gradient(135deg, #6644cc 0%, #8855ee 50%, #5533aa 100%);
    -webkit-background-clip:text; -webkit-text-fill-color:transparent; background-clip:text;
}
.logo-out {
    font-size:26px; font-weight:800; letter-spacing:1px;
    font-style:italic;
    background: linear-gradient(135deg, #00eeff 0%, #00d4ff 50%, #00aacc 100%);
    -webkit-background-clip:text; -webkit-text-fill-color:transparent; background-clip:text;
    filter: drop-shadow(0 0 8px rgba(0,220,255,0.8));
}
.logo-tagline {
    font-size:9px; font-weight:500; letter-spacing:1.5px;
    color:#7a8faa; text-transform:uppercase; margin-top:1px;
    white-space:nowrap;
}
.logo-by {
    font-size:9px; letter-spacing:1px; color:#3d5070; margin-top:1px;
}
.logo-domain {
    color:var(--accent); font-weight:600;
}
.logo-ver { font-size:10px; font-weight:600; color:var(--text3); background:var(--card); border:1px solid var(--border); padding:2px 6px; border-radius:4px; font-family:var(--mono); }
.accent { color:var(--accent); }

.header-right { display:flex; align-items:center; gap:16px; }
.ip-badge {
    display:flex; align-items:center; gap:7px;
    background:var(--card); border:1px solid var(--border);
    padding:6px 14px; border-radius:8px; font-family:var(--mono);
}
.ip-dot { width:7px; height:7px; border-radius:50%; background:var(--green); box-shadow:0 0 6px var(--green); animation:pulse-dot 2s infinite; }
@keyframes pulse-dot { 0%,100%{box-shadow:0 0 4px var(--green)} 50%{box-shadow:0 0 10px var(--green),0 0 20px rgba(0,255,136,.3)} }
.ip-badge-label { font-size:11px; color:var(--text3); }
.ip-badge-val { font-size:13px; color:var(--accent); font-weight:700; }

.os-badge, .av-badge {
    display:flex; align-items:center; gap:7px;
    background:var(--card); border:1px solid var(--border);
    padding:6px 14px; border-radius:8px; font-family:var(--mono);
    font-size:12px; color:var(--text2); white-space:nowrap;
}

.btn-download-top {
    background:var(--green); color:#000;
    padding:7px 16px; border-radius:8px;
    font-size:13px; font-weight:700; text-decoration:none;
    transition:all .2s; white-space:nowrap;
}
.btn-download-top:hover { background:#00ee77; transform:translateY(-1px); }
.btn-coming-soon {
    background:var(--card) !important; color:var(--text3) !important;
    border:1px solid var(--border); cursor:default;
    opacity:0.7; pointer-events:none;
}

/* ── SIDEBAR LOGO ────────────────────────────────────── */
.sidebar-logo {
    display:flex; flex-direction:row; align-items:center; gap:10px;
    padding:16px 14px;
    border-bottom:1px solid var(--border);
    flex-shrink:0;
}
.sidebar-logo .logo-img  { width:38px; height:43px; }
.sidebar-logo .logo-text { font-size:16px; }
.sidebar-logo .logo-ver  { font-size:10px; }

/* ── TAB BAR (sidebar izquierda) ─────────────────────── */
.tab-bar {
    position:fixed; top:var(--header-h); left:0; bottom:0; z-index:100;
    width:var(--sidebar-w);
    background:rgba(10,14,22,0.97);
    backdrop-filter:blur(12px);
    border-right:1px solid var(--border);
    display:flex; flex-direction:column;
}
.tab-bar-inner {
    flex:1; overflow-y:auto; overflow-x:hidden; scroll-behavior:smooth;
    display:flex; flex-direction:column; gap:2px;
    padding:8px 6px;
    scrollbar-width:none;
}
.tab-bar-inner::-webkit-scrollbar { display:none; }

/* Fade gradient al final */
.tab-bar::after {
    content:''; position:absolute; left:0; right:0; bottom:36px; height:40px;
    background:linear-gradient(to bottom, transparent, rgba(10,14,22,0.97));
    pointer-events:none; z-index:1;
}

/* Flechas de scroll (arriba/abajo) */
.tab-arrow {
    flex-shrink:0; width:100%; height:30px;
    background:rgba(10,14,22,0.97); border:none; border-top:1px solid var(--border);
    color:var(--text2); font-size:16px; cursor:pointer;
    display:flex; align-items:center; justify-content:center;
    transition:color .2s, background .2s; z-index:2;
}
.tab-arrow:hover { color:var(--accent); background:rgba(0,212,255,.05); }
.tab-arrow-left  { border-top:none; border-bottom:1px solid var(--border); }
.tab-arrow.hidden { opacity:0; pointer-events:none; }
.tab {
    display:flex; align-items:center; gap:9px;
    padding:10px 12px; width:100%;
    background:transparent; border:none; border-left:2px solid transparent;
    color:var(--text2); font-size:13px; font-weight:500; font-family:var(--font);
    cursor:pointer; white-space:nowrap; transition:all .2s;
    border-radius:6px; text-align:left;
}
.tab:hover { color:var(--text); background:rgba(255,255,255,.04); }
.tab.active { color:var(--accent); border-left-color:var(--accent); background:rgba(0,212,255,.07); }
.tab-icon { font-size:15px; flex-shrink:0; }

/* ── MAIN CONTENT ────────────────────────────────────── */
.tab-content {
    margin-left:var(--sidebar-w);
    padding: calc(var(--header-h) + 32px) 24px 48px;
}
.tab-panel { display:none; animation:fadePanel .25s ease; max-width:1200px; margin-left:auto; margin-right:auto; }
.tab-panel.active { display:block; }
@keyframes fadePanel { from{opacity:0;transform:translateY(8px)} to{opacity:1;transform:translateY(0)} }

/* ── PANEL HEADER ────────────────────────────────────── */
.panel-header { margin-bottom:32px; }
.panel-header h2 { font-size:26px; font-weight:700; letter-spacing:-.5px; margin-bottom:6px; }
.panel-header p { color:var(--text2); font-size:15px; }

/* ── BUTTONS ─────────────────────────────────────────── */
.btn-primary {
    background:var(--accent); color:var(--bg);
    border:none; padding:11px 24px; border-radius:10px;
    font-size:14px; font-weight:700; cursor:pointer; font-family:var(--font);
    transition:all .2s; white-space:nowrap;
}
.btn-primary:hover { background:#00bbee; transform:translateY(-1px); }
.btn-primary:active { transform:translateY(0); }
.btn-primary:disabled { opacity:.4; cursor:not-allowed; transform:none; }

/* ── INPUT ROW ───────────────────────────────────────── */
.tool-card-wrap {
    background:var(--card); border:1px solid var(--border);
    border-radius:var(--r); padding:24px; margin-bottom:24px;
}
.input-row { display:flex; gap:10px; }
.input-field {
    flex:1; background:var(--bg3); border:1px solid var(--border2);
    color:var(--text); font-family:var(--font); font-size:14px;
    padding:11px 16px; border-radius:10px; outline:none; transition:border-color .2s;
}
.input-field:focus { border-color:var(--accent); }
.input-field::placeholder { color:var(--text3); }
.input-note { margin-top:10px; font-size:12px; color:var(--text3); }
.privacy-note {
    font-size:13px; color:var(--text2);
    background:rgba(0,212,255,.06); border:1px solid rgba(0,212,255,.15);
    padding:10px 14px; border-radius:8px;
}

/* ── LOADING ─────────────────────────────────────────── */
.loading-panel { text-align:center; padding:48px; color:var(--text2); }
.loading-panel p { margin-top:16px; font-size:14px; }
.cyber-loader { display:flex; justify-content:center; gap:6px; }
.cl-bar {
    width:4px; height:32px; background:var(--accent); border-radius:2px;
    animation:cl-bounce .8s ease-in-out infinite;
    opacity:.7;
}
.cl-bar:nth-child(2) { animation-delay:.15s; }
.cl-bar:nth-child(3) { animation-delay:.3s; }
@keyframes cl-bounce { 0%,100%{transform:scaleY(.4);opacity:.4} 50%{transform:scaleY(1);opacity:1} }

.progress-bar { width:280px; height:3px; background:var(--border); border-radius:2px; margin:16px auto 0; overflow:hidden; }
.progress-fill { height:100%; background:var(--accent); border-radius:2px; animation:prog 6s ease-in-out forwards; }
@keyframes prog { 0%{width:5%} 30%{width:45%} 70%{width:78%} 95%{width:93%} }

.hidden { display:none !important; }
.error-banner {
    background:rgba(255,51,85,.08); border:1px solid rgba(255,51,85,.25);
    color:var(--red); padding:14px 18px; border-radius:10px;
    font-size:13px; margin-bottom:16px;
}

/* ── SUB TABS ────────────────────────────────────────── */
.sub-tabs { display:flex; gap:4px; margin-bottom:24px; background:var(--card); border:1px solid var(--border); border-radius:10px; padding:4px; width:fit-content; }
.sub-tab {
    padding:8px 20px; border-radius:8px; border:none; background:transparent;
    color:var(--text2); font-size:13px; font-weight:500; font-family:var(--font);
    cursor:pointer; transition:all .2s;
}
.sub-tab.active { background:var(--accent); color:var(--bg); font-weight:700; }
.sub-panel { display:none; }
.sub-panel.active { display:block; animation:fadePanel .2s ease; }

/* ── BADGES ──────────────────────────────────────────── */
.badge {
    font-size:11px; font-weight:700; letter-spacing:.5px;
    padding:3px 10px; border-radius:6px; text-transform:uppercase; white-space:nowrap;
}
.badge-BAJO    { background:rgba(0,255,136,.12); color:var(--green);  border:1px solid rgba(0,255,136,.2); }
.badge-MEDIO   { background:rgba(255,204,0,.12);  color:var(--yellow); border:1px solid rgba(255,204,0,.2); }
.badge-ALTO    { background:rgba(255,136,0,.12);  color:var(--orange); border:1px solid rgba(255,136,0,.2); }
.badge-CRITICO { background:rgba(255,51,85,.12);  color:var(--red);    border:1px solid rgba(255,51,85,.2); }

/* ─────────────────────────────────────────────────────── */
/* DASHBOARD                                               */
/* ─────────────────────────────────────────────────────── */
.hero-logo-wrap { display:flex; align-items:center; gap:20px; }
.hero-logo-icon { width:64px; height:72px; flex-shrink:0; filter:drop-shadow(0 0 12px rgba(0,192,255,0.5)); }

.panel-hero {
    display:flex; align-items:center; justify-content:space-between; gap:24px;
    background:linear-gradient(135deg, var(--card) 0%, #0d1a30 100%);
    border:1px solid var(--border); border-radius:var(--r);
    padding:32px 36px; margin-bottom:32px;
    position:relative; overflow:hidden;
}
.panel-hero::before {
    content:''; position:absolute; top:-40px; right:-40px;
    width:200px; height:200px; border-radius:50%;
    background:radial-gradient(circle, rgba(0,212,255,.08) 0%, transparent 70%);
}
.panel-hero-text h1 { font-size:28px; font-weight:700; letter-spacing:-.5px; margin-bottom:8px; }
.panel-hero-text p  { color:var(--text2); font-size:15px; }

.btn-scan-all {
    background:linear-gradient(135deg, var(--accent), #0088cc);
    color:#000; border:none; padding:14px 28px; border-radius:12px;
    font-size:15px; font-weight:700; cursor:pointer; font-family:var(--font);
    transition:all .25s; white-space:nowrap; flex-shrink:0;
    box-shadow:0 4px 20px rgba(0,212,255,.25);
}
.btn-scan-all:hover { transform:translateY(-2px); box-shadow:0 8px 28px rgba(0,212,255,.35); }

.dashboard-grid { display:grid; grid-template-columns:220px 1fr; gap:20px; margin-bottom:32px; }

.dash-score-card {
    background:var(--card); border:1px solid var(--border);
    border-radius:var(--r); padding:28px 20px; text-align:center;
}
.dash-score-ring { position:relative; width:130px; height:130px; margin:0 auto 16px; }
.score-svg { width:100%; height:100%; transform:rotate(-90deg); }
.score-bg-circle   { fill:none; stroke:var(--border2); stroke-width:8; }
.score-fill-circle { fill:none; stroke:var(--accent); stroke-width:8; stroke-linecap:round; transition:stroke-dashoffset 1.2s ease, stroke .5s; }
.dash-score-num {
    position:absolute; inset:0; display:flex; align-items:center; justify-content:center;
    font-size:34px; font-weight:700; font-family:var(--mono); color:var(--text);
}
.dash-score-label { font-size:14px; font-weight:600; color:var(--text); }
.dash-score-sub { font-size:12px; color:var(--text3); margin-top:4px; }

.dash-checks-grid { display:flex; flex-direction:column; gap:12px; }
.dash-checks-row  { display:grid; grid-template-columns:repeat(3,1fr); gap:12px; }
.dash-check {
    background:var(--card); border:1px solid var(--border);
    border-radius:var(--r); padding:20px; cursor:pointer;
    display:flex; flex-direction:column; gap:6px;
    transition:border-color .2s, transform .2s;
}
.dash-check:hover { border-color:var(--border2); transform:translateY(-2px); }
.dchk-icon { font-size:24px; }
.dchk-name { font-size:14px; font-weight:600; color:var(--text2); }

/* IP card grande en dashboard */
.dash-ip-card {
    background:var(--card); border:1px solid var(--border);
    border-radius:var(--r); padding:20px; cursor:pointer;
    transition:border-color .2s, transform .2s;
    display:flex; flex-direction:column; gap:6px;
}
.dash-ip-card:hover { border-color:var(--accent); transform:translateY(-2px); }
.dic-header { display:flex; align-items:center; gap:8px; }
.dic-label  { font-size:11px; font-weight:600; color:var(--text2); text-transform:uppercase; letter-spacing:.4px; flex:1; }
.dic-ip     { font-size:22px; font-weight:700; font-family:var(--mono); color:var(--accent); }
.dic-meta   { font-size:13px; color:var(--text); }
.dic-coords { font-size:11px; color:var(--text2); font-family:var(--mono); }
.dchk-status { font-size:13px; font-weight:700; font-family:var(--mono); }
.dchk-status.pending { color:var(--text3); }
.dchk-status.ok      { color:var(--green); }
.dchk-status.warn    { color:var(--yellow); }
.dchk-status.danger  { color:var(--red); }

/* ── DASHBOARD LIVE CARDS ─────────────────────────────── */
.dash-live-grid {
    display:grid; grid-template-columns:repeat(4, 1fr);
    gap:14px; margin-top:24px;
}
.dash-live-card {
    background:var(--card); border:1px solid var(--border); border-radius:var(--r);
    padding:18px 16px; cursor:pointer; transition:border-color .2s, transform .15s;
    display:flex; flex-direction:column; gap:10px; min-height:110px;
    overflow:hidden;
}
.dash-live-card:hover { border-color:var(--border2); transform:translateY(-2px); }
.dlc-header { display:flex; align-items:center; gap:6px; overflow:hidden; margin-bottom:2px; }
.dlc-icon { font-size:15px; flex-shrink:0; }
.dlc-title {
    font-size:11px; font-weight:600; color:var(--text2);
    text-transform:uppercase; letter-spacing:.4px;
    white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
    flex:1; min-width:0;
}
.dlc-badge {
    font-size:10px; font-weight:700; font-family:var(--mono);
    padding:2px 6px; border-radius:4px; display:none;
    white-space:nowrap; align-self:flex-start; margin-top:2px;
}
.dlc-badge.ok      { display:inline; background:rgba(0,255,136,.12); color:var(--green); }
.dlc-badge.warn    { display:inline; background:rgba(255,204,0,.12);  color:var(--yellow); }
.dlc-badge.danger  { display:inline; background:rgba(255,51,85,.12);  color:var(--red); }
.dlc-badge.demo    { display:inline; background:rgba(100,120,255,.15); color:#8899ff; }
.dchk-status.demo  { color:#8899ff; }

/* ─── WEB MODE: APP REQUIRED BANNER ───────────────────────────── */
.web-lock-banner {
    position:relative; z-index:10;
    background:linear-gradient(135deg,rgba(0,180,255,.07),rgba(100,80,255,.10));
    border:1px solid rgba(0,180,255,.25);
    border-radius:var(--r);
    padding:28px 24px;
    margin-bottom:18px;
    text-align:center;
    backdrop-filter:blur(4px);
}
.web-lock-inner { display:flex; flex-direction:column; align-items:center; gap:10px; }
.web-lock-icon  { font-size:36px; }
.web-lock-title { font-size:16px; font-weight:700; color:var(--text); }
.web-lock-desc  { font-size:13px; color:var(--text2); max-width:480px; line-height:1.6; }
.web-lock-desc strong { color:var(--accent); }
.web-lock-btn {
    display:inline-flex; align-items:center; gap:8px;
    margin-top:6px;
    padding:12px 28px;
    background:linear-gradient(90deg,#0099cc,#6644ff);
    color:#fff; font-weight:700; font-size:14px;
    border-radius:8px; text-decoration:none;
    transition:opacity .2s, transform .2s;
    box-shadow:0 4px 20px rgba(0,180,255,.3);
}
.web-lock-btn:hover { opacity:.88; transform:translateY(-1px); }
.web-lock-free {
    background:rgba(255,255,255,.2); border-radius:4px;
    padding:1px 7px; font-size:11px;
}
.web-lock-hint { font-size:11px; color:var(--text3); }
.web-lock-demo-tag {
    background:rgba(255,160,0,.15); color:#ffaa33;
    border:1px solid rgba(255,160,0,.3);
    border-radius:20px; padding:3px 12px;
    font-size:11px; font-weight:700; font-family:var(--mono);
    letter-spacing:.05em;
}
.dlc-main {
    font-size:clamp(18px, 2.2vw, 26px); font-weight:700; font-family:var(--mono);
    color:var(--text); line-height:1.1;
    white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
}
.dlc-sub      { font-size:11px; color:var(--text2); line-height:1.4; }
.dlc-main-ip  { font-size:clamp(13px, 1.4vw, 17px) !important; letter-spacing:.5px; }

.dash-tips { background:var(--card); border:1px solid var(--border); border-radius:var(--r); padding:28px; }
.dash-tips h3 { font-size:16px; font-weight:700; margin-bottom:20px; }
.tips-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(260px,1fr)); gap:14px; }
.tip-card {
    display:flex; gap:14px; align-items:flex-start;
    background:var(--bg3); border:1px solid var(--border);
    border-radius:10px; padding:14px 16px;
    transition:border-color .2s;
}
.tip-card:hover { border-color:var(--border2); }
.tip-num { font-family:var(--mono); font-size:11px; color:var(--accent); opacity:.5; flex-shrink:0; padding-top:2px; }
.tip-card p { font-size:13px; color:var(--text2); }

/* ─────────────────────────────────────────────────────── */
/* SCAN RESULTS — PORTS                                    */
/* ─────────────────────────────────────────────────────── */
.isp-warn-banner {
    width:100%; background:rgba(255,204,0,.07);
    border:1px solid rgba(255,204,0,.2); border-radius:10px;
    padding:10px 16px; font-size:12px; color:var(--yellow);
    margin-bottom:4px;
}

.scan-target-banner {
    width:100%; background:rgba(0,212,255,.07);
    border:1px solid rgba(0,212,255,.2); border-radius:10px;
    padding:10px 16px; font-size:13px; color:var(--text2);
    font-family:var(--mono); margin-bottom:4px;
}
.scan-target-banner strong { color:var(--accent); }
.results-summary { display:flex; gap:12px; margin-bottom:20px; flex-wrap:wrap; }
.summary-card {
    flex:1; min-width:130px;
    background:var(--card); border:1px solid var(--border);
    border-radius:var(--r); padding:18px; text-align:center;
}
.summary-card .num { font-size:32px; font-weight:700; font-family:var(--mono); }
.summary-card .lbl { font-size:11px; color:var(--text2); margin-top:4px; text-transform:uppercase; letter-spacing:.5px; }

.ports-grid { display:flex; flex-direction:column; gap:10px; }
.port-card {
    background:var(--card); border:1px solid var(--border);
    border-left:4px solid var(--border);
    border-radius:var(--r); padding:18px 22px;
    display:flex; align-items:flex-start; gap:18px;
    transition:border-color .2s;
}
.port-card.riesgo-BAJO    { border-left-color:var(--green); }
.port-card.riesgo-MEDIO   { border-left-color:var(--yellow); }
.port-card.riesgo-ALTO    { border-left-color:var(--orange); }
.port-card.riesgo-CRITICO { border-left-color:var(--red); background:rgba(255,51,85,.03); }
.port-num { font-family:var(--mono); font-size:20px; font-weight:700; color:var(--accent); min-width:54px; text-align:center; padding-top:2px; }
.port-info { flex:1; }
.port-name-row { display:flex; align-items:center; gap:10px; margin-bottom:5px; }
.port-name { font-size:15px; font-weight:600; }
.port-desc { font-size:13px; color:var(--text2); margin-bottom:8px; }
.port-consejo { font-size:12px; background:rgba(0,212,255,.05); border:1px solid rgba(0,212,255,.12); padding:8px 12px; border-radius:8px; }
.port-consejo::before { content:"💡 "; }

/* ─────────────────────────────────────────────────────── */
/* IP INFO                                                 */
/* ─────────────────────────────────────────────────────── */
.ip-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(210px,1fr)); gap:14px; margin-top:28px; }
.ip-card { background:var(--card); border:1px solid var(--border); border-radius:var(--r); padding:18px; }
.ic-label { font-size:11px; color:var(--text3); text-transform:uppercase; letter-spacing:.8px; margin-bottom:6px; }
.ic-value { font-size:17px; font-weight:600; font-family:var(--mono); }
.ic-value.warn { color:var(--orange); }
.ic-value.ok   { color:var(--green); }

.ip-map { margin-top:20px; height:300px; border-radius:var(--r); overflow:hidden; border:1px solid var(--border); }
.ip-map .leaflet-tile-pane { filter:invert(1) hue-rotate(180deg) brightness(.82); }

/* ─────────────────────────────────────────────────────── */
/* CYBER TERMINAL — LOCAL IPS                             */
/* ─────────────────────────────────────────────────────── */
.cyber-terminal {
    background:#040810; border:1px solid rgba(0,212,255,.2);
    border-radius:14px; overflow:hidden; font-family:var(--mono);
    box-shadow:0 0 40px rgba(0,212,255,.05), inset 0 0 60px rgba(0,0,0,.4);
}
.terminal-bar { background:#08111e; border-bottom:1px solid rgba(0,212,255,.12); padding:10px 18px; display:flex; align-items:center; gap:10px; }
.terminal-dots { display:flex; gap:6px; }
.terminal-dots span { width:10px; height:10px; border-radius:50%; }
.terminal-dots span:nth-child(1){ background:#ff5f57; }
.terminal-dots span:nth-child(2){ background:#febc2e; }
.terminal-dots span:nth-child(3){ background:#28c840; }
.terminal-title { flex:1; text-align:center; font-size:11px; color:rgba(0,212,255,.4); letter-spacing:2px; text-transform:uppercase; }
.terminal-body { padding:22px; }
.terminal-scan-line { font-size:12px; color:rgba(0,212,255,.35); margin-bottom:18px; letter-spacing:.8px; line-height:1.8; }
.terminal-scan-line span { color:var(--accent); animation:blink 1s step-end infinite; }
@keyframes blink { 50%{opacity:0} }

.iface-grid { display:flex; flex-direction:column; gap:0; }
.iface-row {
    border-bottom:1px solid rgba(0,212,255,.07);
    padding:16px 0; display:grid;
    grid-template-columns:28px 1fr auto; align-items:start; gap:14px;
    animation:fadeInRow .35s ease both;
}
.iface-row:last-child { border-bottom:none; }
.iface-row:hover { background:rgba(0,212,255,.025); }
@keyframes fadeInRow { from{opacity:0;transform:translateX(-6px)} to{opacity:1;transform:none} }

.iface-status-dot { width:9px; height:9px; border-radius:50%; margin-top:4px; justify-self:center; flex-shrink:0; }
.iface-status-dot.online  { background:var(--green); box-shadow:0 0 7px var(--green); animation:pulse-dot 2s infinite; }
.iface-status-dot.offline { background:var(--text3); }

.iface-name-row { display:flex; align-items:center; gap:10px; margin-bottom:6px; }
.iface-badge {
    font-size:9px; font-weight:700; letter-spacing:.5px;
    padding:2px 7px; border-radius:4px; text-transform:uppercase;
}
.iface-badge.wifi      { background:rgba(0,212,255,.1);   color:var(--accent); border:1px solid rgba(0,212,255,.2); }
.iface-badge.ethernet  { background:rgba(0,255,136,.1);   color:var(--green);  border:1px solid rgba(0,255,136,.2); }
.iface-badge.vpn       { background:rgba(255,204,0,.1);   color:var(--yellow); border:1px solid rgba(255,204,0,.2); }
.iface-badge.bluetooth { background:rgba(170,136,255,.1); color:var(--purple); border:1px solid rgba(170,136,255,.2); }
.iface-badge.loopback  { background:rgba(255,136,0,.1);   color:var(--orange); border:1px solid rgba(255,136,0,.2); }
.iface-badge.otro      { background:rgba(128,128,128,.1); color:var(--text3);  border:1px solid rgba(128,128,128,.15); }

.iface-name    { font-size:13px; color:var(--text); font-weight:600; }
.iface-mac-row { font-size:11px; color:rgba(0,212,255,.3); margin-bottom:8px; letter-spacing:.4px; }
.iface-mac-row strong { color:rgba(0,212,255,.55); }
.iface-ips { display:flex; flex-wrap:wrap; gap:7px; }
.ip-chip {
    display:inline-flex; align-items:center; gap:6px;
    background:rgba(0,212,255,.05); border:1px solid rgba(0,212,255,.18);
    border-radius:6px; padding:4px 11px; transition:all .2s;
}
.ip-chip:hover { background:rgba(0,212,255,.1); border-color:rgba(0,212,255,.4); }
.ip-chip.v6 { border-color:rgba(170,136,255,.22); background:rgba(170,136,255,.05); }
.ip-ver { font-size:9px; font-weight:700; color:var(--accent); opacity:.65; }
.ip-chip.v6 .ip-ver { color:var(--purple); }
.ip-addr { font-size:13px; color:#c8f0ff; font-weight:500; }
.iface-offline-msg { font-size:12px; color:var(--text3); font-style:italic; }
.iface-right { font-size:11px; color:var(--text3); white-space:nowrap; padding-top:3px; }
.status-txt.online  { color:var(--green); }
.status-txt.offline { color:var(--text3); }

.terminal-footer {
    border-top:1px solid rgba(0,212,255,.08); padding:10px 22px;
    font-size:11px; color:rgba(0,212,255,.25);
    display:flex; justify-content:space-between;
    background:rgba(0,212,255,.015);
}
.terminal-footer .tf-ok { color:rgba(0,255,136,.45); }

/* ─────────────────────────────────────────────────────── */
/* NETWORK DEVICES                                         */
/* ─────────────────────────────────────────────────────── */
.net-terminal { background:#040810; border:1px solid rgba(0,255,136,.18); border-radius:14px; overflow:hidden; font-family:var(--mono); }
.net-terminal .terminal-bar { border-bottom-color:rgba(0,255,136,.1); }
.net-terminal .terminal-title { color:rgba(0,255,136,.4); }
.device-dot { width:8px; height:8px; border-radius:50%; background:var(--green); box-shadow:0 0 6px var(--green); flex-shrink:0; }

.net-devices-list { display:flex; flex-direction:column; gap:0; }
.net-device-row {
    display:grid; grid-template-columns:36px 1fr 16px;
    align-items:center; gap:14px;
    padding:14px 0; border-bottom:1px solid rgba(0,255,136,.07);
    animation:fadeInRow .35s ease both;
    transition:background .15s;
}
.net-device-row:last-child { border-bottom:none; }
.net-device-row:hover { background:rgba(0,255,136,.03); }

.nd-icon { font-size:22px; text-align:center; }
.nd-dot-wrap { display:flex; justify-content:center; }

.nd-ip-row { display:flex; align-items:center; gap:8px; margin-bottom:3px; }
.nd-ip { font-size:14px; font-weight:700; color:var(--green); font-family:var(--mono); }

.nd-tipo-badge {
    font-size:9px; font-weight:700; letter-spacing:.5px;
    padding:2px 7px; border-radius:4px; text-transform:uppercase;
}
.nd-router     { background:rgba(255,204,0,.12);   color:var(--yellow); border:1px solid rgba(255,204,0,.2); }
.nd-pc         { background:rgba(0,212,255,.1);    color:var(--accent); border:1px solid rgba(0,212,255,.2); }
.nd-movil      { background:rgba(170,136,255,.1);  color:var(--purple); border:1px solid rgba(170,136,255,.2); }
.nd-apple      { background:rgba(200,200,200,.1);  color:#ccc;          border:1px solid rgba(200,200,200,.2); }
.nd-tv         { background:rgba(0,255,136,.1);    color:var(--green);  border:1px solid rgba(0,255,136,.2); }
.nd-iot        { background:rgba(255,136,0,.1);    color:var(--orange); border:1px solid rgba(255,136,0,.2); }
.nd-virtual    { background:rgba(0,212,255,.07);   color:var(--accent); border:1px solid rgba(0,212,255,.15); }
.nd-red        { background:rgba(255,51,85,.1);    color:var(--red);    border:1px solid rgba(255,51,85,.2); }
.nd-raspberry  { background:rgba(255,51,85,.1);    color:#ff6680;       border:1px solid rgba(255,51,85,.2); }
.nd-camara     { background:rgba(255,204,0,.1);    color:var(--yellow);  border:1px solid rgba(255,204,0,.2); }
.nd-impresora  { background:rgba(128,128,128,.1);  color:var(--text2);   border:1px solid rgba(128,128,128,.2); }
.nd-consola    { background:rgba(0,255,136,.1);    color:var(--green);   border:1px solid rgba(0,255,136,.2); }
.nd-desconocido{ background:rgba(128,128,128,.08); color:var(--text3);  border:1px solid rgba(128,128,128,.15); }

.nd-hostname { font-size:12px; color:var(--text2); margin-bottom:2px; }
.nd-vendor   { font-size:11px; color:rgba(0,255,136,.45); }
.nd-mac      { font-size:10px; color:var(--text3); font-family:var(--mono); margin-top:2px; letter-spacing:.3px; }

/* ─────────────────────────────────────────────────────── */
/* PASSWORDS                                               */
/* ─────────────────────────────────────────────────────── */
.pwd-input-wrap { flex:1; position:relative; }
.pwd-input-wrap .input-field { width:100%; padding-right:44px; }
.btn-eye { position:absolute; right:12px; top:50%; transform:translateY(-50%); background:none; border:none; cursor:pointer; font-size:16px; color:var(--text2); transition:color .2s; }
.btn-eye:hover { color:var(--text); }

.pwd-strength-bar { height:4px; background:var(--border); border-radius:2px; margin-top:10px; overflow:hidden; }
.psb-fill { height:100%; border-radius:2px; transition:width .6s ease, background .4s; }
.pwd-strength-label { font-size:12px; margin-top:6px; font-weight:600; font-family:var(--mono); }

.pwd-result { background:var(--card); border:1px solid var(--border); border-radius:var(--r); padding:24px; margin-top:20px; }
.pwd-result-header { display:flex; align-items:center; gap:16px; margin-bottom:20px; }
.pwd-status-icon { font-size:40px; }
.pwd-result-title { font-size:20px; font-weight:700; }
.pwd-result-sub   { font-size:13px; color:var(--text2); margin-top:3px; }
.pwd-checks-grid  { display:grid; grid-template-columns:repeat(auto-fit,minmax(200px,1fr)); gap:8px; }
.pwd-check-item   { display:flex; align-items:center; gap:8px; font-size:13px; color:var(--text2); padding:8px 12px; background:var(--bg3); border:1px solid var(--border); border-radius:8px; }

.gen-options { display:flex; flex-direction:column; gap:14px; }
.gen-opt-row { display:flex; align-items:center; justify-content:space-between; gap:16px; font-size:14px; color:var(--text2); }
.gen-opt-row input[type=range] { flex:1; accent-color:var(--accent); }
.gen-checkboxes { display:flex; gap:16px; flex-wrap:wrap; }
.gen-check { display:flex; align-items:center; gap:7px; font-size:13px; color:var(--text2); cursor:pointer; }
.gen-check input { accent-color:var(--accent); width:15px; height:15px; }

.gen-result-card { background:var(--card); border:1px solid var(--border); border-radius:var(--r); padding:24px; margin-top:20px; }
.gen-pwd-display {
    font-family:var(--mono); font-size:20px; font-weight:700;
    color:var(--accent); letter-spacing:2px; word-break:break-all;
    background:var(--bg3); border:1px solid var(--border);
    padding:16px 20px; border-radius:10px; margin-bottom:14px;
    display:flex; align-items:center; justify-content:space-between; gap:12px;
}
.btn-copy { background:var(--card2); border:1px solid var(--border); color:var(--text2); padding:6px 14px; border-radius:8px; font-size:12px; cursor:pointer; transition:all .2s; }
.btn-copy:hover { border-color:var(--accent); color:var(--accent); }
.btn-copy.copied { border-color:var(--green); color:var(--green); }

/* ─────────────────────────────────────────────────────── */
/* LINK / IP REPUTATION                                    */
/* ─────────────────────────────────────────────────────── */
.threat-result { background:var(--card); border:1px solid var(--border); border-radius:var(--r); padding:24px; margin-top:20px; }
.threat-header { display:flex; align-items:flex-start; gap:18px; margin-bottom:20px; }
.threat-circle {
    width:72px; height:72px; border-radius:50%; flex-shrink:0;
    display:flex; align-items:center; justify-content:center;
    font-size:24px; font-weight:700; font-family:var(--mono); border:3px solid;
}
.threat-circle.BAJO    { border-color:var(--green);  color:var(--green);  background:rgba(0,255,136,.08); }
.threat-circle.MEDIO   { border-color:var(--yellow); color:var(--yellow); background:rgba(255,204,0,.08); }
.threat-circle.ALTO    { border-color:var(--orange); color:var(--orange); background:rgba(255,136,0,.08); }
.threat-circle.CRITICO { border-color:var(--red);    color:var(--red);    background:rgba(255,51,85,.08); }
.threat-title  { font-size:20px; font-weight:700; margin-bottom:4px; }
.threat-url    { font-size:12px; color:var(--text3); font-family:var(--mono); }

.alertas-list { list-style:none; display:flex; flex-direction:column; gap:7px; }
.alerta-item  { padding:9px 13px; border-radius:8px; font-size:13px; background:rgba(255,136,0,.07); border:1px solid rgba(255,136,0,.18); color:var(--orange); }
.alerta-item::before { content:"⚠️  "; }
.alerta-ok    { background:rgba(0,255,136,.07) !important; border-color:rgba(0,255,136,.18) !important; color:var(--green) !important; }
.alerta-ok::before { content:"✅  " !important; }

.rep-score-bar { display:flex; align-items:center; gap:16px; margin-bottom:20px; }
.rep-score-num { font-size:44px; font-weight:700; font-family:var(--mono); }
.rep-bar-wrap  { flex:1; }
.rep-bar-label { font-size:12px; color:var(--text2); margin-bottom:7px; }
.rep-bar-bg    { height:7px; background:var(--border); border-radius:4px; overflow:hidden; }
.rep-bar-fill  { height:100%; border-radius:4px; transition:width 1s ease; }

/* ─────────────────────────────────────────────────────── */
/* HEADERS + SSL                                           */
/* ─────────────────────────────────────────────────────── */
.headers-result { background:var(--card); border:1px solid var(--border); border-radius:var(--r); padding:24px; margin-top:20px; }
.score-header { display:flex; align-items:center; gap:16px; margin-bottom:24px; }
.score-big { font-size:48px; font-weight:700; font-family:var(--mono); }
.score-info { flex:1; }
.score-info-label { font-size:13px; color:var(--text2); margin-bottom:8px; }
.score-bar-bg  { height:7px; background:var(--border); border-radius:4px; overflow:hidden; }
.score-bar-fill{ height:100%; border-radius:4px; transition:width 1s ease; }
.checks-list { display:flex; flex-direction:column; gap:8px; }
.check-item  { display:flex; align-items:flex-start; gap:12px; background:var(--bg3); border:1px solid var(--border); border-radius:10px; padding:12px 16px; }
.ci-icon { font-size:16px; flex-shrink:0; margin-top:1px; }
.ci-name  { font-size:13px; font-weight:600; font-family:var(--mono); }
.ci-desc  { font-size:12px; color:var(--text2); margin-top:2px; }
.ci-val   { font-size:11px; color:var(--text3); margin-top:3px; font-family:var(--mono); }

.ssl-result { background:var(--card); border:1px solid var(--border); border-radius:var(--r); padding:24px; margin-top:20px; }
.ssl-header { display:flex; align-items:center; gap:16px; margin-bottom:20px; }
.ssl-icon { font-size:40px; }
.ssl-title { font-size:20px; font-weight:700; }
.ssl-sub   { font-size:13px; color:var(--text2); margin-top:3px; }
.ssl-grid  { display:grid; grid-template-columns:repeat(auto-fit,minmax(200px,1fr)); gap:12px; }
.ssl-item  { background:var(--bg3); border:1px solid var(--border); border-radius:10px; padding:14px; }
.ssl-item-label { font-size:11px; color:var(--text3); text-transform:uppercase; letter-spacing:.8px; margin-bottom:5px; }
.ssl-item-val   { font-size:14px; font-weight:600; font-family:var(--mono); }
.ssl-item-val.danger { color:var(--red); }
.ssl-item-val.warn   { color:var(--orange); }
.ssl-item-val.ok     { color:var(--green); }
.ssl-domains { margin-top:14px; }
.ssl-domains-label { font-size:12px; color:var(--text3); margin-bottom:8px; }
.ssl-domain-chips   { display:flex; flex-wrap:wrap; gap:7px; }
.ssl-domain-chip    { font-size:12px; font-family:var(--mono); background:var(--bg3); border:1px solid var(--border); padding:3px 10px; border-radius:6px; color:var(--text2); }

/* ─────────────────────────────────────────────────────── */
/* PDF BUTTON                                              */
/* ─────────────────────────────────────────────────────── */
.btn-pdf {
    background:transparent; color:var(--text2);
    border:1px solid var(--border); padding:8px 18px; border-radius:8px;
    font-size:12px; font-weight:600; cursor:pointer; font-family:var(--font);
    transition:all .2s;
}
.btn-pdf:hover { border-color:var(--accent); color:var(--accent); }

/* CHANGE MONITOR */
.change-monitor {
    background:var(--card); border:1px solid var(--border);
    border-radius:var(--r); padding:24px; margin-bottom:24px;
}
.change-monitor h3 { font-size:15px; font-weight:700; margin-bottom:14px; }
.change-item {
    display:flex; align-items:center; gap:10px;
    padding:8px 12px; border-radius:8px; font-size:13px; margin-bottom:6px;
}
.change-item.severo { background:rgba(255,51,85,.08); border:1px solid rgba(255,51,85,.2); color:var(--red); }
.change-item.ok     { background:rgba(0,255,136,.08); border:1px solid rgba(0,255,136,.2); color:var(--green); }

/* ─────────────────────────────────────────────────────── */
/* EMAIL BREACH                                            */
/* ─────────────────────────────────────────────────────── */
.breach-result { background:var(--card); border:1px solid var(--border); border-radius:var(--r); padding:24px; margin-top:20px; }
.breach-header { display:flex; align-items:center; gap:16px; margin-bottom:20px; }
.breach-icon { font-size:44px; }
.breach-title { font-size:20px; font-weight:700; }
.breach-sub   { font-size:13px; color:var(--text2); margin-top:4px; }
.breach-list  { display:flex; flex-direction:column; gap:10px; }
.breach-item  {
    background:var(--bg3); border:1px solid var(--border);
    border-left:3px solid var(--red); border-radius:10px; padding:14px 18px;
}
.breach-item-header { display:flex; align-items:center; gap:10px; margin-bottom:6px; }
.breach-name   { font-size:14px; font-weight:700; }
.breach-date   { font-size:11px; color:var(--text3); font-family:var(--mono); }
.breach-count  { font-size:11px; color:var(--orange); margin-left:auto; }
.breach-data   { display:flex; flex-wrap:wrap; gap:6px; margin-top:8px; }
.breach-tag    { font-size:11px; background:rgba(255,51,85,.1); border:1px solid rgba(255,51,85,.2); color:var(--red); padding:2px 8px; border-radius:4px; }

/* ─────────────────────────────────────────────────────── */
/* WIFI                                                    */
/* ─────────────────────────────────────────────────────── */
.wifi-grid { display:flex; flex-direction:column; gap:10px; margin-top:20px; }
.wifi-card {
    background:var(--card); border:1px solid var(--border);
    border-radius:var(--r); padding:18px 22px;
    display:flex; align-items:flex-start; gap:16px;
    border-left:4px solid var(--border);
}
.wifi-card.riesgo-BAJO    { border-left-color:var(--green); }
.wifi-card.riesgo-MEDIO   { border-left-color:var(--yellow); }
.wifi-card.riesgo-CRITICO { border-left-color:var(--red); background:rgba(255,51,85,.03); }
.wifi-signal { font-size:22px; flex-shrink:0; }
.wifi-ssid   { font-size:16px; font-weight:700; margin-bottom:4px; }
.wifi-meta   { font-size:12px; color:var(--text2); display:flex; gap:12px; flex-wrap:wrap; margin-bottom:8px; }
.wifi-warn   { font-size:12px; color:var(--orange); background:rgba(255,136,0,.07); border:1px solid rgba(255,136,0,.15); padding:6px 10px; border-radius:6px; }

/* ─────────────────────────────────────────────────────── */
/* ROUTER                                                  */
/* ─────────────────────────────────────────────────────── */
.router-result { background:var(--card); border:1px solid var(--border); border-radius:var(--r); padding:24px; margin-top:20px; }
.router-score-row { display:flex; align-items:center; gap:16px; margin-bottom:24px; }
.router-score-num { font-size:48px; font-weight:700; font-family:var(--mono); }
.router-checks { display:flex; flex-direction:column; gap:8px; }
.router-check {
    display:flex; align-items:flex-start; gap:12px;
    background:var(--bg3); border:1px solid var(--border);
    border-radius:10px; padding:12px 16px;
}
.rc-icon  { font-size:18px; flex-shrink:0; }
.rc-name  { font-size:14px; font-weight:600; }
.rc-info  { font-size:12px; color:var(--text2); margin-top:2px; }
.rc-tip   { font-size:12px; color:var(--yellow); margin-top:4px; }

/* ─────────────────────────────────────────────────────── */
/* DNS                                                     */
/* ─────────────────────────────────────────────────────── */
.dns-result { background:var(--card); border:1px solid var(--border); border-radius:var(--r); padding:24px; margin-top:20px; }
.dns-leak-alert {
    background:rgba(255,51,85,.08); border:1px solid rgba(255,51,85,.2);
    border-radius:10px; padding:14px 18px; margin-bottom:20px;
    font-size:14px; color:var(--red);
}
.dns-ok-alert {
    background:rgba(0,255,136,.08); border:1px solid rgba(0,255,136,.2);
    border-radius:10px; padding:14px 18px; margin-bottom:20px;
    font-size:14px; color:var(--green);
}
.dns-servers { display:flex; flex-direction:column; gap:10px; }
.dns-server-card {
    background:var(--bg3); border:1px solid var(--border);
    border-radius:10px; padding:14px 18px;
    display:flex; align-items:center; gap:16px;
}
.dns-server-ip    { font-family:var(--mono); font-size:15px; font-weight:700; color:var(--accent); min-width:130px; }
.dns-server-name  { font-size:14px; font-weight:600; }
.dns-server-priv  { font-size:11px; margin-top:2px; }
.dns-privacy-alta { color:var(--green); }
.dns-privacy-media{ color:var(--yellow); }
.dns-privacy-baja { color:var(--orange); }
.dns-type-badge   { font-size:10px; font-weight:700; padding:2px 8px; border-radius:4px; text-transform:uppercase; margin-left:auto; }
.dns-type-publico { background:rgba(0,212,255,.1); color:var(--accent); border:1px solid rgba(0,212,255,.2); }
.dns-type-isp     { background:rgba(255,136,0,.1);  color:var(--orange); border:1px solid rgba(255,136,0,.2); }
.dns-type-local   { background:rgba(128,128,128,.1);color:var(--text3);  border:1px solid rgba(128,128,128,.2); }

/* ─────────────────────────────────────────────────────── */
/* PHISHING SIMULATOR                                      */
/* ─────────────────────────────────────────────────────── */
.phishing-intro { margin-bottom:24px; }
.phishing-intro h3 { font-size:20px; font-weight:700; margin-bottom:6px; }
.phishing-intro p  { color:var(--text2); font-size:14px; }
.phishing-examples { display:flex; flex-direction:column; gap:20px; }
.phishing-email {
    background:var(--card); border:1px solid var(--border);
    border-radius:var(--r); overflow:hidden;
}
.pe-header {
    background:#1a1a2e; padding:14px 20px;
    border-bottom:1px solid var(--border);
}
.pe-badge { display:inline-block; background:rgba(255,51,85,.15); border:1px solid rgba(255,51,85,.3); color:var(--red); font-size:10px; font-weight:700; padding:2px 8px; border-radius:4px; text-transform:uppercase; letter-spacing:1px; margin-bottom:8px; }
.pe-from    { font-size:13px; color:var(--text2); margin-bottom:3px; }
.pe-from span { color:var(--red); }
.pe-subject { font-size:15px; font-weight:700; }
.pe-body    { padding:20px; font-size:13px; color:var(--text2); line-height:1.8; position:relative; }
.pe-clue {
    display:inline; background:rgba(255,204,0,.15);
    border-bottom:2px solid var(--yellow); cursor:pointer;
    position:relative; transition:background .2s;
}
.pe-clue:hover { background:rgba(255,204,0,.3); }
.pe-clue .clue-tip {
    display:none; position:absolute; bottom:calc(100% + 6px); left:50%; transform:translateX(-50%);
    background:#1a2035; border:1px solid var(--yellow); color:var(--yellow);
    font-size:11px; padding:6px 10px; border-radius:6px; white-space:nowrap;
    z-index:10; pointer-events:none; box-shadow:0 4px 12px rgba(0,0,0,.4);
}
.pe-clue:hover .clue-tip { display:block; }
.pe-clues-count { font-size:12px; color:var(--text3); margin-top:12px; border-top:1px solid var(--border); padding-top:12px; }

/* ─────────────────────────────────────────────────────── */
/* DESCARGA                                                */
/* ─────────────────────────────────────────────────────── */
.vs-grid {
    display:flex; gap:0; border:1px solid var(--border);
    border-radius:var(--r); overflow:hidden; margin-bottom:28px;
}
.vs-col { flex:1; padding:28px; background:var(--card); }
.vs-col.vs-app { background:var(--card2); border-left:1px solid var(--border); }
.vs-divider {
    display:flex; align-items:center; justify-content:center;
    width:44px; flex-shrink:0; background:var(--bg3);
    color:var(--text3); font-size:12px; font-weight:700; letter-spacing:1px;
    border-left:1px solid var(--border); border-right:1px solid var(--border);
}
.vs-col-title { font-size:15px; font-weight:700; margin-bottom:16px; }
.vs-col.vs-app .vs-col-title { color:var(--accent); }
.vs-list { list-style:none; display:flex; flex-direction:column; gap:9px; }
.vs-list li { font-size:13px; color:var(--text2); display:flex; align-items:center; gap:8px; }
.vs-list li.ok::before    { content:"✅"; }
.vs-list li.no::before    { content:"❌"; }
.vs-list li.ok-hl::before { content:"⚡"; }
.vs-list li.ok-hl { color:var(--green); font-weight:600; }

.download-hero {
    background:var(--card); border:1px solid var(--border);
    border-radius:var(--r); padding:28px;
    display:flex; align-items:center; justify-content:space-between; gap:20px;
    margin-bottom:24px; flex-wrap:wrap;
}
.dh-info h3 { font-size:18px; font-weight:700; margin-bottom:7px; }
.dh-info p  { font-size:13px; color:var(--text2); margin-bottom:12px; }
.tag-row { display:flex; gap:7px; flex-wrap:wrap; }
.tag { font-size:11px; font-weight:600; background:rgba(0,212,255,.08); border:1px solid rgba(0,212,255,.2); color:var(--accent); padding:3px 10px; border-radius:5px; }
.btn-dl {
    background:var(--green); color:#000; padding:14px 28px; border-radius:12px;
    font-size:14px; font-weight:700; text-decoration:none;
    transition:all .2s; white-space:nowrap; display:inline-block;
}
.btn-dl:hover { background:#00ee77; transform:translateY(-2px); }
.btn-dl-soon {
    background:var(--card) !important; color:var(--text3) !important;
    border:2px dashed var(--border); cursor:default;
    pointer-events:none; opacity:0.8;
}

.install-box { background:var(--card); border:1px solid var(--border); border-radius:var(--r); padding:28px; }
.install-box h3 { font-size:16px; font-weight:700; margin-bottom:20px; }
.install-steps { display:flex; flex-direction:column; gap:12px; }
.step { display:flex; align-items:flex-start; gap:14px; }
.step-n { width:28px; height:28px; border-radius:50%; background:var(--accent); color:var(--bg); display:flex; align-items:center; justify-content:center; font-size:13px; font-weight:700; flex-shrink:0; }
.step p { font-size:14px; color:var(--text2); padding-top:3px; }
.step code { background:var(--card2); border:1px solid var(--border); color:var(--accent); padding:2px 7px; border-radius:4px; font-family:var(--mono); font-size:12px; }

/* ─────────────────────────────────────────────────────── */
/* FOOTER                                                  */
/* ─────────────────────────────────────────────────────── */
.footer { border-top:1px solid var(--border); padding:16px 24px; background:rgba(8,12,20,0.75); position:relative; z-index:10; }
.footer-inner { color:var(--text2); }
.footer-inner { max-width:1200px; margin:0 auto; display:flex; align-items:center; gap:12px; flex-wrap:wrap; font-size:12px; color:var(--text3); }
.footer-sep { opacity:.3; }
.footer-warn { color:rgba(255,204,0,.5); }

/* ── INTEGRIDAD ──────────────────────────────────────── */
.integ-summary {
    display:grid; grid-template-columns:repeat(auto-fit,minmax(160px,1fr));
    gap:12px; margin-bottom:24px;
}
.integ-sum-card {
    background:var(--card); border:1px solid var(--border); border-radius:var(--r);
    padding:16px; text-align:center; cursor:pointer; transition:border-color .2s;
}
.integ-sum-card:hover { border-color:var(--border2); }
.integ-sum-card.danger { border-color:var(--red); background:rgba(255,51,85,.06); }
.integ-sum-card.warn   { border-color:var(--yellow); background:rgba(255,204,0,.05); }
.integ-sum-card .isc-num  { font-size:32px; font-weight:700; font-family:var(--mono); }
.integ-sum-card .isc-label{ font-size:11px; color:var(--text2); margin-top:4px; text-transform:uppercase; letter-spacing:.4px; }
.integ-sum-card.danger .isc-num { color:var(--red); }
.integ-sum-card.warn   .isc-num { color:var(--yellow); }
.integ-sum-card.ok     .isc-num { color:var(--green); }

.integ-table { width:100%; border-collapse:collapse; font-size:13px; }
.integ-table th {
    text-align:left; padding:10px 12px; font-size:11px; font-weight:600;
    color:var(--text3); text-transform:uppercase; letter-spacing:.4px;
    border-bottom:1px solid var(--border); background:var(--bg2);
}
.integ-table td { padding:10px 12px; border-bottom:1px solid rgba(31,46,71,.5); vertical-align:top; }
.integ-table tr:hover td { background:rgba(255,255,255,.02); }
.integ-table tr:last-child td { border-bottom:none; }
.integ-table .badge-riesgo {
    font-size:10px; font-weight:700; font-family:var(--mono);
    padding:2px 7px; border-radius:4px; white-space:nowrap;
}
.integ-table .badge-riesgo.CRITICO { background:rgba(255,51,85,.15);  color:var(--red); }
.integ-table .badge-riesgo.ALTO    { background:rgba(255,136,0,.15);  color:var(--orange); }
.integ-table .badge-riesgo.MEDIO   { background:rgba(255,204,0,.12);  color:var(--yellow); }
.integ-table .badge-riesgo.BAJO    { background:rgba(0,255,136,.08);  color:var(--green); }

.integ-wrap { background:var(--card); border:1px solid var(--border); border-radius:var(--r); overflow:hidden; }
.integ-path { font-size:11px; color:var(--text2); font-family:var(--mono); margin-top:3px; word-break:break-all; }

.exposure-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(280px,1fr)); gap:16px; }
.exposure-card {
    background:var(--card); border:1px solid var(--border); border-radius:var(--r);
    padding:20px;
}
.exposure-card h4 { font-size:14px; font-weight:600; margin-bottom:12px; display:flex; align-items:center; gap:8px; }
.exposure-card .exp-status { font-size:13px; font-weight:700; }
.exposure-card .exp-ok     { color:var(--green); }
.exposure-card .exp-danger { color:var(--red); }
.exposure-card .exp-warn   { color:var(--yellow); }
.exposure-card ul { list-style:none; font-size:12px; color:var(--text2); margin-top:8px; }
.exposure-card ul li { padding:3px 0; border-bottom:1px solid var(--border); }
.exposure-card ul li:last-child { border:none; }

/* ── DASHBOARD SECTION LABELS ────────────────────────── */
.dash-section-label {
    font-size:11px; font-weight:700; color:var(--text3);
    text-transform:uppercase; letter-spacing:1px;
    padding:4px 0 10px; margin-top:28px;
    border-bottom:1px solid var(--border); margin-bottom:14px;
}

/* ── TOOL CARDS ───────────────────────────────────────── */
.dash-tools-grid {
    display:grid; grid-template-columns:repeat(3,1fr); gap:14px;
}
.dash-tool-card {
    background:var(--card); border:1px solid var(--border); border-radius:var(--r);
    padding:18px 20px; cursor:pointer; transition:border-color .2s, transform .15s;
    display:flex; align-items:center; gap:16px;
}
.dash-tool-card:hover { border-color:var(--accent); transform:translateY(-2px); }
.dtc-icon  { font-size:28px; flex-shrink:0; }
.dtc-body  { flex:1; min-width:0; }
.dtc-title { font-size:14px; font-weight:700; color:var(--text); margin-bottom:3px; }
.dtc-desc  { font-size:11px; color:var(--text2); line-height:1.4; margin-bottom:6px; }
.dtc-result{ font-size:12px; color:var(--accent); font-family:var(--mono); }
.dtc-arrow { font-size:20px; color:var(--text3); flex-shrink:0; }

/* ── SPEED TEST ──────────────────────────────────────── */
.speed-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:16px; margin-top:20px; }
.speed-card {
    background:var(--card); border:1px solid var(--border); border-radius:var(--r);
    padding:28px 20px; text-align:center;
}
.speed-icon  { font-size:28px; margin-bottom:10px; }
.speed-val   { font-size:42px; font-weight:700; font-family:var(--mono); color:var(--accent); line-height:1; }
.speed-label { font-size:12px; color:var(--text2); margin-top:6px; text-transform:uppercase; letter-spacing:.4px; }
.speed-server-row {
    display:flex; align-items:center; justify-content:space-between;
    padding:10px 14px; background:var(--card); border:1px solid var(--border);
    border-radius:8px; margin-bottom:6px; font-size:13px;
}
.speed-server-name { color:var(--text2); }
.speed-server-ping { font-family:var(--mono); font-weight:700; }
.ping-ok   { color:var(--green); }
.ping-warn { color:var(--yellow); }
.ping-bad  { color:var(--red); }

/* ── PRIVACY TEST ─────────────────────────────────────── */
.privacy-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(260px,1fr)); gap:14px; margin-top:20px; }
.privacy-item {
    background:var(--card); border:1px solid var(--border); border-radius:10px;
    padding:16px; display:flex; flex-direction:column; gap:6px;
}
.privacy-item-title { font-size:11px; font-weight:600; color:var(--text2); text-transform:uppercase; letter-spacing:.4px; }
.privacy-item-val   { font-size:14px; font-weight:600; color:var(--text); font-family:var(--mono); word-break:break-all; }
.privacy-item.risk  { border-color:var(--red); background:rgba(255,51,85,.05); }
.privacy-item.warn  { border-color:var(--yellow); background:rgba(255,204,0,.04); }
.privacy-item.ok    { border-color:rgba(0,255,136,.2); }
.privacy-score-bar  { background:var(--card); border:1px solid var(--border); border-radius:var(--r); padding:24px; margin-bottom:20px; text-align:center; }
.privacy-score-num  { font-size:56px; font-weight:700; font-family:var(--mono); }
.privacy-score-lbl  { font-size:14px; color:var(--text2); margin-top:4px; }

/* ── DARK WEB ─────────────────────────────────────────── */
.dw-form { display:flex; flex-direction:column; gap:10px; margin-top:4px; }
.dw-label {
    display:flex; align-items:center; gap:10px;
    background:var(--bg3); border:1px solid var(--border); border-radius:8px;
    padding:12px 16px; cursor:pointer; transition:border-color .2s; font-size:14px;
}
.dw-label:hover { border-color:var(--border2); }
.dw-label input { accent-color:var(--accent); width:16px; height:16px; flex-shrink:0; }
.dw-price { margin-left:auto; font-family:var(--mono); font-size:13px; color:var(--accent); font-weight:700; }
.dw-result-card {
    background:var(--card); border:2px solid var(--accent); border-radius:var(--r);
    padding:32px; text-align:center; margin-top:20px;
}
.dw-total      { font-size:64px; font-weight:700; font-family:var(--mono); color:var(--red); }
.dw-total-lbl  { font-size:14px; color:var(--text2); margin-top:6px; }
.dw-breakdown  { display:flex; flex-wrap:wrap; gap:8px; justify-content:center; margin-top:20px; }
.dw-tag        { background:rgba(255,51,85,.12); color:var(--red); border:1px solid rgba(255,51,85,.3); padding:4px 12px; border-radius:20px; font-size:12px; font-family:var(--mono); }

/* ── SHARE BUTTON ─────────────────────────────────────── */
.btn-share {
    background:transparent; color:var(--accent);
    border:1px solid var(--accent); padding:7px 16px; border-radius:8px;
    font-size:13px; font-weight:600; cursor:pointer; transition:all .2s;
}
.btn-share:hover { background:rgba(0,212,255,.1); }

/* ── CVE ──────────────────────────────────────────────── */
.cve-card {
    background:var(--card); border-left:3px solid var(--red); border-radius:8px;
    padding:16px 18px; margin-bottom:10px;
}
.cve-card.MEDIUM { border-left-color:var(--yellow); }
.cve-card.LOW    { border-left-color:var(--green); }
.cve-id     { font-family:var(--mono); font-size:12px; color:var(--accent); font-weight:700; }
.cve-title  { font-size:14px; font-weight:600; margin:4px 0; }
.cve-desc   { font-size:12px; color:var(--text2); line-height:1.5; }
.cve-meta   { display:flex; gap:12px; margin-top:8px; font-size:11px; color:var(--text3); }
.cve-score  { font-weight:700; font-family:var(--mono); }
.cve-score.CRITICAL { color:var(--red); }
.cve-score.HIGH     { color:var(--orange); }
.cve-score.MEDIUM   { color:var(--yellow); }
.cve-score.LOW      { color:var(--green); }

/* ─────────────────────────────────────────────────────── */
/* RESPONSIVE                                              */
/* ─────────────────────────────────────────────────────── */
@media(max-width:768px){
    :root { --sidebar-w: 52px; }
    .tab-label { display:none; }
    .tab { padding:10px; justify-content:center; }
    .dashboard-grid { grid-template-columns:1fr; }
    .panel-hero { flex-direction:column; text-align:center; }
    .input-row { flex-direction:column; }
    .btn-primary { width:100%; }
    .vs-grid { flex-direction:column; }
    .vs-divider { width:100%; height:36px; border:none; border-top:1px solid var(--border); border-bottom:1px solid var(--border); }
    .vs-col.vs-app { border-left:none; border-top:1px solid var(--border); }
    .download-hero { flex-direction:column; text-align:center; }
    .btn-dl { width:100%; text-align:center; }
    .header-right .ip-badge { display:none; }
}

/* ─────────────────────────────────────────────────────── */
/* PDF BUTTON                                              */
/* ─────────────────────────────────────────────────────── */
.btn-pdf {
    background:transparent; border:1px solid rgba(0,212,255,.3);
    color:var(--text2); padding:8px 16px; border-radius:8px;
    font-size:12px; font-weight:500; cursor:pointer; font-family:var(--font);
    transition:all .2s; white-space:nowrap;
}
.btn-pdf:hover { border-color:var(--accent); color:var(--accent); }
.btn-pdf:disabled { opacity:.4; cursor:not-allowed; }

/* ─────────────────────────────────────────────────────── */
/* EMAIL BREACH                                            */
/* ─────────────────────────────────────────────────────── */
.breach-safe {
    display:flex; align-items:center; gap:20px;
    background:rgba(0,255,136,.07); border:1px solid rgba(0,255,136,.2);
    border-radius:var(--r); padding:28px; margin-top:20px;
}
.breach-safe-icon { font-size:40px; }
.breach-safe-title { font-size:20px; font-weight:700; color:var(--green); margin-bottom:4px; }
.breach-safe-sub   { font-size:13px; color:var(--text2); }

.breach-header {
    display:flex; align-items:center; gap:16px;
    background:rgba(255,51,85,.07); border:1px solid rgba(255,51,85,.2);
    border-radius:var(--r); padding:20px; margin-top:20px; margin-bottom:20px;
}
.breach-icon  { font-size:36px; }
.breach-title { font-size:20px; font-weight:700; color:var(--red); margin-bottom:4px; }
.breach-sub   { font-size:13px; color:var(--text2); }

.breach-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(300px,1fr)); gap:14px; }
.breach-card {
    background:var(--card); border:1px solid var(--border);
    border-left:3px solid var(--red); border-radius:var(--r); padding:18px;
    transition:border-color .2s;
}
.breach-card:hover { border-color:rgba(255,51,85,.5); }
.breach-card-header { display:flex; align-items:center; justify-content:space-between; margin-bottom:8px; }
.breach-domain { font-size:16px; font-weight:700; font-family:var(--mono); color:var(--text); }
.breach-date   { font-size:11px; color:var(--text3); }
.breach-name   { font-size:13px; color:var(--text2); margin-bottom:6px; }
.breach-desc   { font-size:12px; color:var(--text3); margin-bottom:10px; line-height:1.5; }
.breach-data   { display:flex; flex-wrap:wrap; gap:5px; margin-bottom:8px; }
.breach-tag    { font-size:11px; background:rgba(255,51,85,.1); border:1px solid rgba(255,51,85,.2); color:var(--red); padding:2px 8px; border-radius:4px; }
.breach-count  { font-size:11px; color:var(--text3); }

/* ─────────────────────────────────────────────────────── */
/* WIFI SCANNER                                            */
/* ─────────────────────────────────────────────────────── */
.wifi-list { display:flex; flex-direction:column; gap:0; }
.wifi-row {
    display:grid; grid-template-columns:56px 1fr;
    gap:16px; align-items:center; padding:14px 0;
    border-bottom:1px solid rgba(0,212,255,.07);
    animation:fadeInRow .35s ease both;
}
.wifi-row:last-child { border-bottom:none; }
.wifi-row:hover { background:rgba(0,212,255,.02); }

.wifi-signal-wrap { display:flex; flex-direction:column; align-items:center; gap:4px; }
.wifi-signal-bars { display:flex; align-items:flex-end; gap:2px; height:20px; }
.wsb { width:5px; border-radius:1px; background:var(--border); }
.wsb:nth-child(1) { height:5px; }
.wsb:nth-child(2) { height:9px; }
.wsb:nth-child(3) { height:14px; }
.wsb:nth-child(4) { height:20px; }
.wsb.active { background:var(--accent); }
.wifi-sig-pct { font-size:10px; color:var(--text3); font-family:var(--mono); }

.wifi-name-row { display:flex; align-items:center; gap:10px; margin-bottom:4px; }
.wifi-ssid { font-size:15px; font-weight:600; color:var(--text); }
.wifi-meta { display:flex; gap:14px; font-size:12px; color:var(--text3); margin-bottom:5px; flex-wrap:wrap; }
.wifi-mac  { font-family:var(--mono); }
.wifi-advice { font-size:12px; color:var(--text2); }

/* ─────────────────────────────────────────────────────── */
/* ROUTER CHECK                                            */
/* ─────────────────────────────────────────────────────── */
.router-result { margin-top:20px; background:var(--card); border:1px solid var(--border); border-radius:var(--r); padding:24px; }
.router-check {
    display:flex; gap:14px; align-items:flex-start;
    padding:12px 16px; border-radius:10px; margin-bottom:8px;
    background:var(--bg3); border:1px solid var(--border);
}
.rcheck-danger { border-color:rgba(255,51,85,.3) !important; background:rgba(255,51,85,.05) !important; }
.rcheck-warn   { border-color:rgba(255,204,0,.25) !important; background:rgba(255,204,0,.04) !important; }
.rc-icon  { font-size:18px; flex-shrink:0; }
.rc-name  { font-size:14px; font-weight:600; margin-bottom:3px; }
.rc-info  { font-size:12px; color:var(--text2); }
.rc-consejo { font-size:12px; color:var(--yellow); margin-top:5px; }
.rcheck-danger .rc-consejo { color:var(--red); }

/* ─────────────────────────────────────────────────────── */
/* DNS & VPN                                               */
/* ─────────────────────────────────────────────────────── */
.dns-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(200px,1fr)); gap:12px; margin-bottom:24px; }
.dns-server-card { background:var(--card); border:1px solid var(--border); border-radius:10px; padding:16px; }
.dns-ip   { font-size:17px; font-weight:700; font-family:var(--mono); color:var(--accent); margin-bottom:4px; }
.dns-name { font-size:13px; color:var(--text2); margin-bottom:4px; }
.dns-priv { font-size:11px; color:var(--text3); }

.dns-leak-warn {
    display:flex; gap:16px; align-items:flex-start;
    background:rgba(255,204,0,.07); border:1px solid rgba(255,204,0,.25);
    border-radius:var(--r); padding:18px; margin-bottom:20px;
}
.dlw-icon  { font-size:28px; flex-shrink:0; }
.dlw-title { font-size:16px; font-weight:700; color:var(--yellow); margin-bottom:5px; }
.dlw-sub   { font-size:13px; color:var(--text2); margin-bottom:8px; }
.dlw-fix   { font-size:12px; color:var(--text2); }

.dns-tips { background:var(--card); border:1px solid var(--border); border-radius:var(--r); padding:20px; margin-top:20px; }
.dns-tips h3 { font-size:15px; font-weight:600; margin-bottom:14px; }
.dns-rec-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(180px,1fr)); gap:12px; }
.dns-rec { background:var(--bg3); border:1px solid var(--border); border-radius:10px; padding:14px; }
.dr-name { font-size:14px; font-weight:700; margin-bottom:2px; }
.dr-ip   { font-size:13px; font-family:var(--mono); color:var(--accent); margin-bottom:6px; }
.dr-desc { font-size:12px; color:var(--text3); }

/* ─────────────────────────────────────────────────────── */
/* PHISHING SIMULATOR                                      */
/* ─────────────────────────────────────────────────────── */
.phishing-intro { margin-bottom:24px; }
.phishing-intro h3 { font-size:18px; font-weight:700; margin-bottom:6px; }
.phishing-intro p  { font-size:14px; color:var(--text2); }

.phishing-examples { display:grid; grid-template-columns:repeat(auto-fill,minmax(440px,1fr)); gap:20px; }
.phishing-card { background:var(--card); border:1px solid var(--border); border-radius:var(--r); overflow:hidden; }
.phishing-card-header { display:flex; align-items:center; gap:10px; padding:14px 18px; background:var(--card2); border-bottom:1px solid var(--border); }
.phishing-tipo { font-size:13px; font-weight:600; color:var(--text2); }

.phishing-email { padding:18px; background:var(--bg3); border-bottom:1px solid var(--border); }
.pe-field { display:flex; gap:8px; margin-bottom:6px; font-size:13px; }
.pe-label { color:var(--text3); min-width:50px; flex-shrink:0; }
.pe-val   { color:var(--text); }
.pe-suspicious { color:var(--orange); font-family:var(--mono); font-size:12px; }
.pe-body  { font-size:13px; color:var(--text2); line-height:1.7; margin-top:12px; padding-top:12px; border-top:1px solid var(--border); }

.phishing-signals { padding:16px 18px; }
.ps-title { font-size:12px; color:var(--text3); margin-bottom:10px; text-transform:uppercase; letter-spacing:.5px; }
.ps-tags  { display:flex; flex-direction:column; gap:6px; }
.ps-tag {
    font-size:12px; cursor:pointer;
    background:rgba(255,136,0,.08); border:1px solid rgba(255,136,0,.2);
    color:var(--orange); padding:7px 12px; border-radius:8px;
    transition:all .2s;
}
.ps-tag:hover { background:rgba(255,136,0,.15); border-color:rgba(255,136,0,.4); }
.ps-explain {
    font-size:12px; color:var(--text2); line-height:1.6;
    background:rgba(0,212,255,.05); border:1px solid rgba(0,212,255,.15);
    padding:10px 14px; border-radius:8px; margin-top:2px; margin-bottom:4px;
    animation:fadePanel .2s ease;
}

/* ─────────────────────────────────────────────────────── */
/* PROCESOS                                                */
/* ─────────────────────────────────────────────────────── */
.proc-section-title { font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.8px;color:var(--text3);margin-bottom:8px;padding:4px 0; }
.proc-section-title.danger { color:var(--red); }
.proc-table { display:flex;flex-direction:column;gap:0; }
.proc-header,.proc-row { display:grid;grid-template-columns:1fr 70px 90px;gap:8px;padding:6px 0;border-bottom:1px solid rgba(0,212,255,.05);font-size:12px;font-family:var(--mono); }
.proc-header { color:var(--text3);font-size:10px;text-transform:uppercase;letter-spacing:.8px; }
.proc-row:hover { background:rgba(0,212,255,.02); }
.proc-danger { background:rgba(255,51,85,.06) !important;border-radius:6px;margin-bottom:4px;padding:8px 6px !important;border:1px solid rgba(255,51,85,.2) !important; }
.proc-danger .proc-name { color:var(--red);font-weight:700; }
.proc-name { color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap; }
.proc-pid  { color:var(--text3); }
.proc-mem  { color:var(--text2);text-align:right; }

/* ─────────────────────────────────────────────────────── */
/* CÁMARA Y MICRÓFONO                                      */
/* ─────────────────────────────────────────────────────── */
.cam-grid { display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:20px; }
.cam-section { background:var(--card);border:1px solid var(--border);border-radius:var(--r);padding:20px; }
.cam-section-title { font-size:15px;font-weight:700;margin-bottom:14px; }
.cam-app-row { display:flex;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid var(--border); }
.cam-app-row:last-child { border-bottom:none; }
.cam-icon  { font-size:20px; }
.cam-name  { font-size:13px;font-weight:600; }
.cam-last  { font-size:11px;color:var(--text3);margin-top:2px; }
.cam-empty { font-size:13px;color:var(--green); }
.cam-tip   { margin-top:16px;font-size:12px;color:var(--text2);background:var(--card);border:1px solid var(--border);border-radius:8px;padding:12px 16px; }
@media(max-width:640px){ .cam-grid{grid-template-columns:1fr;} }

/* ─────────────────────────────────────────────────────── */
/* ACTUALIZACIONES                                         */
/* ─────────────────────────────────────────────────────── */
.upd-result { margin-top:20px;background:var(--card);border:1px solid var(--border);border-radius:var(--r);padding:24px; }
.upd-score  { display:flex;align-items:center;gap:20px;margin-bottom:16px; }
.upd-num    { font-size:56px;font-weight:700;font-family:var(--mono); }
.upd-label  { font-size:17px;font-weight:600; }
.upd-list   { display:flex;flex-direction:column;gap:6px; }
.upd-item   { display:flex;align-items:center;gap:10px;font-size:12px;padding:7px 12px;background:var(--bg3);border:1px solid var(--border);border-radius:7px; }
.upd-sev    { font-weight:700;min-width:70px;font-size:11px; }
.upd-title  { color:var(--text2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap; }
.upd-action { margin-top:14px;padding:12px 16px;background:rgba(255,204,0,.07);border:1px solid rgba(255,204,0,.2);border-radius:8px;font-size:13px;color:var(--yellow); }

/* ─────────────────────────────────────────────────────── */
/* CONEXIONES ACTIVAS                                      */
/* ─────────────────────────────────────────────────────── */
.conn-list { display:flex;flex-direction:column;gap:0; }
.conn-row  { display:grid;grid-template-columns:160px 1fr 1fr 70px auto;gap:10px;align-items:center;
             padding:10px 0;border-bottom:1px solid rgba(0,212,255,.06);font-size:12px;font-family:var(--mono);
             animation:fadeInRow .3s ease both; }
.conn-row:last-child { border-bottom:none; }
.conn-row:hover { background:rgba(0,212,255,.02); }
.conn-suspicious { background:rgba(255,51,85,.05) !important;border-radius:6px;padding:8px 4px !important;
                   border:1px solid rgba(255,51,85,.15) !important;margin-bottom:3px; }
.conn-ip   { color:var(--accent);font-weight:600; }
.conn-port { color:var(--text3);font-size:11px; }
.conn-geo  { color:var(--text2); }
.conn-isp  { color:var(--text3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap; }
.conn-pid  { color:var(--text3); }
.conn-warn { font-size:10px;color:var(--orange);background:rgba(255,136,0,.1);padding:2px 7px;border-radius:4px; }

/* TRAFFIC MAP */
.traffic-map { height:400px;border-radius:var(--r);overflow:hidden;border:1px solid var(--border);margin-top:20px; }
.traffic-map .leaflet-tile-pane { filter:invert(1) hue-rotate(180deg) brightness(.82); }

/* ─────────────────────────────────────────────────────── */
/* SIMULADOR FUERZA BRUTA                                  */
/* ─────────────────────────────────────────────────────── */
.bf-input-row { display:flex;gap:10px; }
.bf-charset { font-size:12px;color:var(--text3);margin-top:10px;font-family:var(--mono); }
.bf-result  { background:var(--card);border:1px solid var(--border);border-radius:var(--r);padding:24px;margin-top:20px; }
.bf-summary { text-align:center;margin-bottom:24px;padding-bottom:20px;border-bottom:1px solid var(--border); }
.bf-pwd-display { font-size:24px;color:var(--text3);letter-spacing:3px;margin-bottom:8px; }
.bf-strength-label { font-size:22px;font-weight:700;margin-bottom:4px; }
.bf-length  { font-size:12px;color:var(--text3); }
.bf-attacks { display:flex;flex-direction:column;gap:8px; }
.bf-attack-row { display:grid;grid-template-columns:180px 1fr 1fr;gap:12px;align-items:center;
                 padding:12px 16px;background:var(--bg3);border:1px solid var(--border);border-radius:10px; }
.bf-danger { border-color:rgba(255,51,85,.3) !important;background:rgba(255,51,85,.04) !important; }
.bf-attack-name { font-size:13px;font-weight:600; }
.bf-attack-desc { font-size:11px;color:var(--text3); }
.bf-attack-time { font-size:13px;font-weight:700;font-family:var(--mono);text-align:right; }
.bf-tip { margin-top:16px;font-size:12px;color:var(--text2);padding:10px 14px;background:rgba(0,212,255,.05);border:1px solid rgba(0,212,255,.15);border-radius:8px; }

/* ─────────────────────────────────────────────────────── */
/* CABECERAS EMAIL                                          */
/* ─────────────────────────────────────────────────────── */
.headers-textarea { width:100%;min-height:160px;background:var(--bg3);border:1px solid var(--border2);
                    color:var(--text);font-family:var(--mono);font-size:11px;padding:12px 14px;
                    border-radius:10px;outline:none;resize:vertical;transition:border-color .2s; }
.headers-textarea:focus { border-color:var(--accent); }
.eh-result  { background:var(--card);border:1px solid var(--border);border-radius:var(--r);padding:24px;margin-top:20px; }
.eh-fields  { display:flex;flex-direction:column;gap:6px;margin-bottom:16px;padding-bottom:16px;border-bottom:1px solid var(--border); }
.eh-field   { display:flex;gap:10px;font-size:13px; }
.eh-label   { color:var(--text3);min-width:90px;flex-shrink:0; }
.eh-val     { color:var(--text);font-family:var(--mono);font-size:12px;word-break:break-all; }
.eh-auth    { display:flex;gap:12px;margin-bottom:16px;flex-wrap:wrap; }
.eh-auth-item { background:var(--bg3);border:1px solid var(--border);border-radius:8px;padding:8px 14px;font-size:12px; }
.eh-servers { display:flex;flex-direction:column;gap:6px; }
.eh-server  { display:flex;align-items:center;gap:10px;font-size:12px;padding:7px 12px;background:var(--bg3);border:1px solid var(--border);border-radius:7px; }
.eh-hop     { width:20px;height:20px;border-radius:50%;background:var(--accent);color:var(--bg);display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:700;flex-shrink:0; }
.eh-server-ip   { color:var(--accent);font-family:var(--mono);font-weight:600;min-width:120px; }
.eh-server-line { color:var(--text3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1; }

/* ─────────────────────────────────────────────────────── */
/* EVIL TWIN                                               */
/* ─────────────────────────────────────────────────────── */
.et-card    { background:rgba(255,51,85,.05);border:1px solid rgba(255,51,85,.25);border-radius:var(--r);padding:20px; }
.et-header  { display:flex;align-items:center;gap:12px;margin-bottom:10px; }
.et-ssid    { font-size:16px;font-weight:700;font-family:var(--mono);color:var(--text); }
.et-warning { font-size:13px;color:var(--text2);margin-bottom:12px; }
.et-nets    { display:flex;flex-direction:column;gap:6px;margin-bottom:12px; }
.et-net     { display:flex;gap:10px;font-size:12px;font-family:var(--mono);padding:6px 10px;background:var(--card);border-radius:6px; }
.et-bssid   { color:var(--accent); }
.et-sec     { color:var(--yellow); }
.et-advice  { font-size:12px;color:var(--orange);padding:10px 14px;background:rgba(255,136,0,.07);border:1px solid rgba(255,136,0,.2);border-radius:8px; }

/* Change monitor */
.change-monitor {
    background:rgba(255,204,0,.07); border:1px solid rgba(255,204,0,.25);
    border-radius:var(--r); padding:18px; margin-bottom:20px;
}
.change-monitor h3 { font-size:14px; font-weight:600; margin-bottom:10px; color:var(--yellow); }
.change-item { font-size:13px; color:var(--text2); padding:6px 0; border-bottom:1px solid rgba(255,255,255,.05); }
.change-item:last-child { border-bottom:none; }


/* ─── DOWNLOAD HERO BANNER v2 ───────────────────────────────── */
#download-hero-banner {
    position: relative; overflow: hidden;
    display: flex; gap: 40px; align-items: flex-start;
    background: linear-gradient(135deg, #060d1a 0%, #0b1830 50%, #070f1e 100%);
    border: 1px solid rgba(0,212,255,.2);
    border-radius: 16px;
    padding: 36px 40px;
    margin-bottom: 28px;
    box-shadow: 0 0 80px rgba(0,150,255,.07), 0 20px 60px rgba(0,0,0,.4);
}
.dlh-bg-glow {
    position:absolute; border-radius:50%; pointer-events:none; filter:blur(60px);
}
.dlh-glow1 { width:400px;height:400px; top:-100px; right:5%;
    background:radial-gradient(circle,rgba(0,180,255,.10) 0%,transparent 70%); }
.dlh-glow2 { width:300px;height:300px; bottom:-80px; left:10%;
    background:radial-gradient(circle,rgba(100,60,255,.08) 0%,transparent 70%); }

/* LEFT */
.dlh-left  { flex:1; min-width:0; display:flex; flex-direction:column; gap:18px; }
.dlh-right { flex-shrink:0; width:300px; display:flex; flex-direction:column; gap:16px; }

.dlh-eyebrow {
    display:flex; align-items:center; gap:8px;
    font-size:11px; font-weight:700; font-family:var(--mono);
    color:var(--accent); letter-spacing:.1em;
}
.dlh-eyebrow-dot {
    width:8px;height:8px;border-radius:50%;
    background:var(--accent);
    box-shadow:0 0 8px var(--accent);
    animation: pulse-dot 2s infinite;
}
@keyframes pulse-dot {
    0%,100%{box-shadow:0 0 6px var(--accent);}
    50%{box-shadow:0 0 16px var(--accent), 0 0 30px rgba(0,212,255,.3);}
}
.dlh-headline {
    font-size:clamp(22px,2.8vw,32px); font-weight:900;
    color:var(--text); line-height:1.2; margin:0;
}
.dlh-hl {
    background:linear-gradient(90deg,#00d4ff,#7755ff);
    -webkit-background-clip:text; -webkit-text-fill-color:transparent;
    background-clip:text;
}
.dlh-copy { font-size:14px; color:var(--text2); line-height:1.7; }
.dlh-copy strong { color:var(--text); }

.dlh-checks { display:flex; flex-direction:column; gap:8px; }
.dlh-check  { display:flex; align-items:center; gap:10px; font-size:13px; color:var(--text2); }
.dlh-chk    { color:var(--green); font-weight:700; font-size:14px; flex-shrink:0; }

.dlh-social { display:flex; align-items:center; gap:10px; margin-top:4px; }
.dlh-avatars { display:flex; }
.dlh-avatars span { font-size:18px; margin-right:-4px; filter:grayscale(.3); }
.dlh-social-text { font-size:12px; color:var(--text2); }

/* RIGHT — App mockup card */
.dlh-card {
    background:rgba(10,18,35,.9); border:1px solid rgba(0,212,255,.15);
    border-radius:12px; overflow:hidden;
}
.dlh-card-header {
    display:flex; align-items:center; gap:6px;
    background:rgba(0,0,0,.3); padding:10px 14px;
    border-bottom:1px solid rgba(255,255,255,.05);
}
.dlh-card-dot { width:10px;height:10px;border-radius:50%; }
.dlh-card-dot.ok { background:#00ff88; } .dlh-card-dot.warn { background:#ffcc00; } .dlh-card-dot.danger { background:#ff3355; }
.dlh-card-title { font-size:11px; color:var(--text3); font-family:var(--mono); margin-left:4px; }

.dlh-card-score { display:flex; align-items:center; justify-content:center; padding:16px 0 8px; }
.dlh-ring-svg   { width:72px;height:72px; transform:rotate(-90deg); }
.dlh-ring-center{ position:absolute; display:flex;flex-direction:column;align-items:center; }
.dlh-card-score { position:relative; }
.dlh-ring-num   { font-size:22px;font-weight:900;color:var(--green);font-family:var(--mono); line-height:1; }
.dlh-ring-lbl   { font-size:10px;color:var(--green);font-family:var(--mono); }

.dlh-card-rows  { padding:4px 14px 10px; display:flex;flex-direction:column;gap:5px; }
.dlh-row { display:flex;align-items:center;gap:8px;font-size:11.5px;font-family:var(--mono); }
.dlh-row.ok     { color:var(--green); }
.dlh-row.warn   { color:var(--yellow); }
.dlh-row.danger { color:var(--red); }
.dlh-row-icon   { font-size:12px;width:14px;flex-shrink:0; }
.dlh-card-foot  { text-align:center;font-size:10px;color:var(--text3);
    padding:8px;border-top:1px solid rgba(255,255,255,.04); }

/* Price box */
.dlh-price-box {
    background:linear-gradient(135deg,rgba(0,100,180,.15),rgba(80,40,200,.12));
    border:1px solid rgba(0,180,255,.25); border-radius:12px; padding:18px;
    display:flex;flex-direction:column;gap:10px;
}
.dlh-price-top  { display:flex;align-items:center;justify-content:space-between; }
.dlh-price-old  { font-size:12px;color:var(--text3);text-decoration:line-through; }
.dlh-price-badge{
    background:rgba(255,100,0,.2);color:#ff8844;
    border:1px solid rgba(255,100,0,.3); border-radius:4px;
    font-size:10px;font-weight:700;font-family:var(--mono);padding:2px 8px;
}
.dlh-price-main {
    font-size:52px;font-weight:900;color:var(--text);line-height:1;
    font-family:var(--mono);
}
.dlh-price-dec  { font-size:28px; }
.dlh-price-note { font-size:11px;color:var(--text2); }

.dlh-cta {
    display:flex;align-items:center;gap:12px;
    background:linear-gradient(90deg,#0088cc,#5522ee);
    color:#fff;text-decoration:none;
    padding:14px 18px;border-radius:10px;
    box-shadow:0 6px 30px rgba(0,150,255,.4);
    transition:transform .18s,box-shadow .18s;
    position:relative;overflow:hidden;
}
.dlh-cta::before {
    content:'';position:absolute;top:0;left:-100%;width:100%;height:100%;
    background:linear-gradient(90deg,transparent,rgba(255,255,255,.1),transparent);
    animation:shine 2.5s infinite;
}
@keyframes shine { to { left:200%; } }
.dlh-cta:hover  { transform:translateY(-2px);box-shadow:0 10px 40px rgba(0,150,255,.55); }
.dlh-cta > span { font-size:22px; }
.dlh-cta-main   { font-size:15px;font-weight:800; }
.dlh-cta-sub    { font-size:11px;opacity:.8;margin-top:2px; }

.dlh-trust {
    display:flex;gap:8px;flex-wrap:wrap;justify-content:center;
}
.dlh-trust span {
    font-size:10px;color:var(--text3);
    background:rgba(255,255,255,.04);border-radius:4px;padding:3px 8px;
}

@media(max-width:800px){
    #download-hero-banner{flex-direction:column;padding:24px 20px;}
    .dlh-right{width:100%;}
}


.dlhero-price {
    background: rgba(255,255,255,.15);
    border-radius: 4px; padding: 1px 8px;
    font-size: 17px; font-weight: 900;
}

/* Badge EJEMPLO en tarjetas demo */
.demo-badge {
    display: inline-block;
    background: rgba(255,160,0,.15); color: #ffaa33;
    border: 1px solid rgba(255,160,0,.3);
    border-radius: 4px; padding: 1px 7px;
    font-size: 10px; font-weight: 700; font-family: var(--mono);
    margin-left: 6px; vertical-align: middle;
}
