:root {
    --bg-body: #0b0e14;
    --bg-sidebar: #111520;
    --bg-card: #151a28;
    --bg-input: #1a2035;
    --accent: #00d4aa;
    --accent-hover: #00f0c0;
    --accent-dim: rgba(0,212,170,.12);
    --text-primary: #e8eaf0;
    --text-secondary: #6b7a99;
    --border: #1e2740;
    --success: #28a745;
    --warning: #ffc107;
    --danger: #dc3545;
    --info: #17a2b8;
    --orange: #fd7e14;
}
*{margin:0;padding:0;box-sizing:border-box;}
body{font-family:'Segoe UI',system-ui,-apple-system,sans-serif;background:var(--bg-body);color:var(--text-primary);min-height:100vh;}
a{color:var(--accent);}
.text-muted{color:#8a95ad!important;}
p.text-muted,span.text-muted,div.text-muted,small.text-muted,td.text-muted{color:#8a95ad!important;}
.form-label{color:var(--text-primary);}
.form-text{color:#8a95ad!important;}
.card-dark-body .text-muted{color:#8a95ad!important;}
.text-secondary{color:#8a95ad!important;}

/* ===== LOGIN ===== */
.login-screen{display:flex;align-items:center;justify-content:center;min-height:100vh;background:linear-gradient(135deg,#0b0e14 0%,#111520 50%,#0b1a1a 100%);}
.login-box{background:var(--bg-card);border:1px solid var(--border);border-radius:16px;padding:40px;width:400px;max-width:90vw;}
.login-logo{text-align:center;margin-bottom:30px;}
.login-logo i{font-size:3rem;color:var(--accent);}
.login-logo h2{color:var(--accent);margin:8px 0 4px;}
.login-logo p{color:var(--text-secondary);font-size:.9rem;}
.login-box .form-control,.login-box .input-group-text{background:var(--bg-input);border-color:var(--border);color:var(--text-primary);}
.login-box .input-group-text{color:var(--text-secondary);}
.text-accent{color:var(--accent)!important;}

/* ===== BUTTONS ===== */
.btn-accent{background:var(--accent);color:#0b0e14;border:none;font-weight:600;}
.btn-accent:hover{background:var(--accent-hover);color:#0b0e14;}

/* ===== APP LAYOUT ===== */
#app{display:flex;min-height:100vh;}

/* ===== SIDEBAR ===== */
#sidebar{width:220px;background:var(--bg-sidebar);border-right:1px solid var(--border);display:flex;flex-direction:column;position:fixed;height:100vh;z-index:10;}
.sidebar-header{padding:20px;display:flex;align-items:center;gap:10px;border-bottom:1px solid var(--border);}
.sidebar-header i{font-size:1.6rem;color:var(--accent);}
.sidebar-header span{font-size:1.1rem;font-weight:700;color:var(--accent);}
#sidebar .nav{flex:1;padding:10px 0;}
#sidebar .nav-link{color:var(--text-secondary);padding:11px 20px;display:flex;align-items:center;gap:12px;border-left:3px solid transparent;transition:.2s;}
#sidebar .nav-link:hover{color:var(--text-primary);background:rgba(255,255,255,.03);}
#sidebar .nav-link.active{color:var(--accent);background:var(--accent-dim);border-left-color:var(--accent);}
#sidebar .nav-link i{font-size:1.1rem;width:22px;text-align:center;}
.sidebar-footer{padding:14px 18px;border-top:1px solid var(--border);display:flex;justify-content:space-between;align-items:center;}
.user-badge{display:flex;align-items:center;gap:8px;color:var(--text-secondary);font-size:.9rem;}
.user-badge i{font-size:1.4rem;}

/* ===== MAIN CONTENT ===== */
#content{flex:1;margin-left:220px;padding:28px 32px;min-height:100vh;}
.page{display:none;}
.page.active{display:block;}
.page-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px;padding-bottom:16px;border-bottom:1px solid var(--border);}
.page-header h2{display:flex;align-items:center;gap:10px;font-size:1.4rem;font-weight:600;}
.page-header h2 i{color:var(--accent);font-size:1.2rem;}

/* ===== QUICK ACTION BAR ===== */
.quick-action-bar{background:var(--bg-card);border:1px solid var(--border);border-radius:12px;padding:20px;}
.quick-action-bar h6{margin-bottom:12px;font-size:.85rem;text-transform:uppercase;letter-spacing:.5px;color:var(--text-secondary);}
.quick-action-bar .form-control{background:var(--bg-input);border-color:var(--border);color:var(--text-primary);height:48px;font-size:1rem;}
.quick-action-bar .form-control::placeholder{color:var(--text-secondary);}
.quick-action-bar .btn{height:48px;padding:0 24px;}

/* ===== STAT CARDS ===== */
.stat-card{background:var(--bg-card);border:1px solid var(--border);border-radius:12px;padding:20px 24px;position:relative;overflow:hidden;transition:transform .2s,border-color .2s;}
.stat-card:hover{transform:translateY(-3px);border-color:var(--accent);}
.stat-number{font-size:2rem;font-weight:700;line-height:1;}
.stat-label{font-size:.8rem;color:var(--text-secondary);margin-top:4px;text-transform:uppercase;letter-spacing:.5px;}
.stat-bg-icon{position:absolute;right:16px;top:50%;transform:translateY(-50%);font-size:3rem;opacity:.08;}
.stat-blue .stat-number{color:#4a9eff;}
.stat-cyan .stat-number{color:#00d4aa;}
.stat-yellow .stat-number{color:#ffc107;}
.stat-red .stat-number{color:#ff4757;}

/* ===== CARDS ===== */
.card-dark{background:var(--bg-card);border:1px solid var(--border);border-radius:12px;overflow:hidden;}
.card-dark.border-accent{border-color:var(--accent);}
.card-dark-header{padding:16px 20px;border-bottom:1px solid var(--border);display:flex;align-items:center;}
.card-dark-header h5{margin:0;font-size:1rem;font-weight:600;display:flex;align-items:center;gap:8px;}
.card-dark-header h5 i{color:var(--accent);}
.card-dark-body{padding:20px;}

/* ===== TABLES ===== */
.table-dark{--bs-table-bg:transparent;--bs-table-border-color:var(--border);margin:0;}
.table-dark th{background:rgba(255,255,255,.05);font-size:.75rem;text-transform:uppercase;letter-spacing:.5px;color:#c0c8d8;padding:12px 16px;font-weight:600;border-bottom:1px solid var(--border);}
.table-dark td{padding:12px 16px;font-size:.9rem;vertical-align:middle;border-color:var(--border);color:var(--text-primary);}
.table-dark td code{color:#00d4aa;background:rgba(0,212,170,.1);padding:2px 7px;border-radius:4px;font-size:.85rem;}
.table-dark td .badge.bg-secondary{background:#2a3350!important;color:#c0c8d8;}
.table-dark td .text-muted{color:#6b7a99!important;}
.table-dark td small.text-muted{color:#8090a8!important;}
.table-dark tbody tr:hover{background:var(--accent-dim)!important;}
.table-dark tbody tr{cursor:pointer;transition:background .15s;}

/* ===== BADGES ===== */
.badge-critical,.sev-critical{background:var(--danger);}
.badge-high,.sev-high{background:var(--orange);}
.badge-medium,.sev-medium{background:var(--warning);color:#222;}
.badge-low,.sev-low{background:var(--success);}
.badge-info,.sev-info{background:var(--info);}
.status-queued{background:#555;}
.status-running{background:var(--info);animation:pulse 1.5s infinite;}
.status-completed{background:var(--success);}
.status-failed{background:var(--danger);}
.status-cancelled{background:var(--warning);color:#222;}
.status-scanning{background:var(--info);animation:pulse 1.5s infinite;}
.status-scanned{background:var(--success);}
.status-pending{background:#555;}
.status-open{background:var(--danger);}
.status-confirmed{background:var(--orange);}
.status-fixed{background:var(--success);}
.status-generating{background:var(--info);animation:pulse 1.5s infinite;}
.status-active{background:var(--success);}
@keyframes pulse{0%,100%{opacity:1;}50%{opacity:.5;}}
.pulse-icon{animation:pulse 1.5s infinite;}

/* ===== SEVERITY BARS ===== */
.severity-bars{display:flex;flex-direction:column;gap:14px;}
.sev-row{display:flex;align-items:center;gap:12px;}
.sev-label{width:70px;font-size:.82rem;color:var(--text-secondary);}
.sev-track{flex:1;height:22px;background:rgba(255,255,255,.06);border-radius:11px;overflow:hidden;}
.sev-fill{height:100%;border-radius:11px;transition:width .6s ease;min-width:0;}
.sev-count{width:36px;text-align:right;font-weight:700;font-size:.9rem;}
.bg-orange{background:var(--orange)!important;}

/* ===== PROGRESS ===== */
.progress-track{height:10px;background:rgba(255,255,255,.08);border-radius:5px;overflow:hidden;}
.progress-fill{height:100%;background:linear-gradient(90deg,var(--accent),var(--accent-hover));border-radius:5px;transition:width .4s ease;}

/* ===== DETAIL ITEMS ===== */
.detail-item{display:flex;flex-direction:column;gap:4px;}
.detail-label{font-size:.75rem;text-transform:uppercase;color:var(--text-secondary);letter-spacing:.5px;}

/* ===== PROJECT CARDS ===== */
.project-card{background:var(--bg-card);border:1px solid var(--border);border-radius:12px;padding:20px;cursor:pointer;transition:all .2s;}
.project-card:hover{border-color:var(--accent);transform:translateY(-4px);box-shadow:0 8px 30px rgba(0,212,170,.08);}
.project-card h5{font-size:1.05rem;margin-bottom:8px;}
.project-card .meta{color:var(--text-secondary);font-size:.85rem;margin-bottom:14px;}
.project-card .pstats{display:flex;gap:16px;font-size:.85rem;}
.project-card .pstats i{color:var(--accent);margin-right:4px;}

/* ===== SCAN RESULT CARDS ===== */
.port-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px;margin-top:12px;}
.port-item{background:var(--bg-input);border:1px solid var(--border);border-radius:8px;padding:14px 16px;font-size:.85rem;display:flex;justify-content:space-between;align-items:center;}
.finding-card{background:var(--bg-input);border:1px solid var(--border);border-radius:10px;padding:16px 18px;margin-bottom:12px;}
.finding-card .finding-header{display:flex;align-items:center;gap:8px;margin-bottom:8px;}
.finding-card .finding-desc{color:#8a95ad;font-size:.84rem;line-height:1.5;margin-bottom:6px;}
.finding-card .finding-evidence{color:var(--accent);font-size:.82rem;margin-bottom:4px;}
.finding-card .finding-fix{color:#9aa5bd;font-size:.82rem;}
.finding-card .finding-actions{margin-top:10px;display:flex;gap:6px;}
.finding-cat-title{font-size:.8rem;text-transform:uppercase;letter-spacing:.5px;color:var(--accent);margin:18px 0 10px;padding-bottom:6px;border-bottom:1px solid var(--border);}
.audit-section{margin-bottom:20px;}
.audit-section h6{margin-bottom:12px;}
.code-preview{background:var(--bg-body);color:var(--text-primary);padding:12px;border-radius:8px;font-size:.75rem;max-height:250px;overflow:auto;font-family:'Consolas',monospace;white-space:pre-wrap;word-break:break-all;border:1px solid var(--border);}
.port-item.port-open{border-left:3px solid var(--success);}
.port-item .port-num{font-weight:700;color:var(--accent);font-family:'Consolas',monospace;}
.port-item .port-svc{color:var(--text-secondary);}

/* ===== REPORT VIEWER ===== */
#reportViewerContent{background:#fff;border-radius:8px;padding:0;max-height:70vh;overflow-y:auto;}
#reportViewerContent iframe{width:100%;height:70vh;border:none;border-radius:8px;}
.report-summary{background:var(--bg-input);border-radius:8px;padding:16px;margin-top:12px;}
.report-summary h6{color:var(--accent);margin-bottom:8px;}

/* ===== QUICK SCAN RESULT ===== */
.quick-result{background:var(--bg-input);border:1px solid var(--border);border-radius:10px;padding:20px;margin-top:12px;}
.quick-result h6{color:var(--accent);margin-bottom:12px;font-size:.9rem;}
.quick-result .result-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid var(--border);}
.quick-result .result-stat{text-align:center;}
.quick-result .result-stat .num{font-size:1.6rem;font-weight:700;}
.quick-result .result-stat .lbl{font-size:.75rem;color:var(--text-secondary);text-transform:uppercase;}

/* ===== SCAN ROW (recent scans) ===== */
.scan-row{display:flex;align-items:center;justify-content:space-between;padding:10px 0;border-bottom:1px solid var(--border);}
.scan-row:last-child{border-bottom:none;}
.scan-row .scan-info{display:flex;align-items:center;gap:12px;}
.scan-row .scan-type{font-size:.8rem;color:var(--accent);font-weight:600;text-transform:uppercase;}
.scan-row .scan-target{font-size:.9rem;}

/* ===== ACTIVE SCAN ITEM ===== */
.active-scan-item{background:var(--bg-input);border:1px solid var(--border);border-radius:8px;padding:14px;margin-bottom:10px;}
.active-scan-item:last-child{margin-bottom:0;}

/* ===== FORMS ===== */
.form-control,.form-select{background:var(--bg-input);border-color:var(--border);color:var(--text-primary);}
.form-control:focus,.form-select:focus{background:var(--bg-input);border-color:var(--accent);color:var(--text-primary);box-shadow:0 0 0 .2rem rgba(0,212,170,.15);}
.form-control::placeholder{color:var(--text-secondary);}
.form-check-input:checked{background-color:var(--accent);border-color:var(--accent);}
.input-group-text{background:var(--bg-card);border-color:var(--border);color:var(--text-secondary);}

/* ===== MODALS ===== */
.modal-content{border:1px solid var(--border);border-radius:12px;}

/* ===== TOAST ===== */
.toast{background:var(--bg-card);border:1px solid var(--border);}
.toast-body{color:var(--text-primary);}

/* ===== SPINNER ===== */
.spinner-dots{display:flex;gap:6px;justify-content:center;padding:20px;}
.spinner-dots span{width:10px;height:10px;background:var(--accent);border-radius:50%;animation:bounce .6s infinite alternate;}
.spinner-dots span:nth-child(2){animation-delay:.2s;}
.spinner-dots span:nth-child(3){animation-delay:.4s;}
@keyframes bounce{to{opacity:.3;transform:translateY(-6px);}}

/* ===== SCROLLBAR ===== */
::-webkit-scrollbar{width:6px;height:6px;}
::-webkit-scrollbar-track{background:var(--bg-body);}
::-webkit-scrollbar-thumb{background:var(--accent);border-radius:3px;}

/* ===== LOADING OVERLAY ===== */
.loading-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(11,14,20,.85);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);z-index:9999;display:flex;align-items:center;justify-content:center;}
.loading-box{background:var(--bg-card);border:1px solid var(--border);border-radius:16px;padding:40px 50px;text-align:center;min-width:400px;max-width:500px;box-shadow:0 20px 60px rgba(0,0,0,.5);}
.loading-box h5{color:var(--text-primary);margin:20px 0 16px;font-size:1.1rem;}
.loading-spinner{width:50px;height:50px;border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin 1s linear infinite;margin:0 auto;}
@keyframes spin{to{transform:rotate(360deg);}}
.loading-steps{text-align:left;margin:16px 0;max-height:200px;overflow-y:auto;}
.loading-step{display:flex;align-items:center;gap:10px;padding:8px 12px;border-radius:6px;margin-bottom:4px;font-size:.85rem;transition:background .2s;}
.loading-step.active{background:var(--accent-dim);color:var(--accent);}
.loading-step.done{color:var(--success);}
.loading-step.done .step-icon{color:var(--success);}
.loading-step.waiting{color:var(--text-secondary);}
.loading-step .step-icon{width:20px;text-align:center;flex-shrink:0;}
.loading-status{color:var(--text-secondary);font-size:.82rem;margin:12px 0 0;}

/* ===== TOOL CARDS ===== */
.tool-card{transition:all .2s;}
.tool-card:hover{border-color:var(--accent);transform:translateY(-3px);box-shadow:0 6px 20px rgba(0,212,170,.08);}
.tool-card .card-dark-header h5 i{margin-right:6px;}

/* ===== RESPONSIVE ===== */
@media(max-width:992px){
    #sidebar{width:60px;}
    #sidebar .nav-link span,.sidebar-header span,.user-badge span{display:none;}
    #sidebar .nav-link{justify-content:center;padding:14px;}
    .sidebar-header{justify-content:center;}
    #content{margin-left:60px;padding:20px;}
}
