/* ==========================================================================
   SaschaPapini.it - Modern Elegant Theme (Dual-Mode: Light & Dark)
   ========================================================================== */

:root,
[data-bs-theme="light"] {
    --accent-emerald: #059669;
    --accent-emerald-hover: #047857;
    --accent-emerald-subtle: #ecfdf5;
    --accent-emerald-border: #a7f3d0;
    --accent-glow: none;

    --bg-page: #f8fafc;
    --card-bg: #ffffff;
    --card-subtle-bg: #f1f5f9;
    --card-border: #e2e8f0;
    --card-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.04), 0 1px 2px -1px rgba(0, 0, 0, 0.04);
    --card-hover-border: #10b981;
    --card-hover-shadow: 0 10px 25px -5px rgba(15, 23, 42, 0.08), 0 8px 10px -6px rgba(15, 23, 42, 0.04);

    --text-main: #0f172a;
    --text-muted: #64748b;
    --bio-text-color: #334155;

    --shimmer-1: rgba(0, 0, 0, 0.04);
    --shimmer-2: rgba(5, 150, 105, 0.12);
}

[data-bs-theme="dark"] {
    --accent-emerald: #10b981;
    --accent-emerald-hover: #34d399;
    --accent-emerald-subtle: rgba(16, 185, 129, 0.12);
    --accent-emerald-border: rgba(16, 185, 129, 0.3);
    --accent-glow: 0 0 10px rgba(16, 185, 129, 0.25);

    --bg-page: #0b0f19;
    --card-bg: #111827;
    --card-subtle-bg: #1f2937;
    --card-border: rgba(255, 255, 255, 0.08);
    --card-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.3), 0 2px 4px -2px rgba(0, 0, 0, 0.3);
    --card-hover-border: rgba(16, 185, 129, 0.45);
    --card-hover-shadow: 0 12px 30px -10px rgba(0, 0, 0, 0.6), 0 0 15px rgba(16, 185, 129, 0.15);

    --text-main: #f8fafc;
    --text-muted: #94a3b8;
    --bio-text-color: #cbd5e1;

    --shimmer-1: rgba(255, 255, 255, 0.04);
    --shimmer-2: rgba(16, 185, 129, 0.15);
}

body {
    font-family: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
    min-height: 100vh;
    background-color: var(--bg-page) !important;
    color: var(--text-main);
    transition: background-color 0.2s ease, color 0.2s ease;
}

/* Accent text */
.text-matrix {
    color: var(--accent-emerald) !important;
    text-shadow: var(--accent-glow);
}

.border-matrix {
    border-color: var(--accent-emerald-border) !important;
}

/* Primary Button */
.btn-matrix {
    background-color: var(--accent-emerald);
    color: #ffffff;
    border: 1px solid var(--accent-emerald);
    font-weight: 600;
    transition: all 0.2s ease-in-out;
    box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
}

[data-bs-theme="dark"] .btn-matrix {
    color: #0b140f;
}

.btn-matrix:hover, .btn-matrix:focus {
    background-color: var(--accent-emerald-hover);
    border-color: var(--accent-emerald-hover);
    color: #ffffff;
    box-shadow: 0 4px 12px rgba(5, 150, 105, 0.25);
}

[data-bs-theme="dark"] .btn-matrix:hover, [data-bs-theme="dark"] .btn-matrix:focus {
    color: #000000;
    box-shadow: 0 4px 14px rgba(16, 185, 129, 0.35);
}

/* Outline Button */
.btn-matrix-outline {
    background-color: transparent;
    color: var(--accent-emerald);
    border: 1px solid var(--accent-emerald-border);
    font-weight: 600;
    transition: all 0.2s ease-in-out;
}

.btn-matrix-outline:hover {
    background-color: var(--accent-emerald-subtle);
    color: var(--accent-emerald-hover);
    border-color: var(--accent-emerald);
}

/* Typography */
code, kbd, samp, pre, .font-monospace {
    font-family: 'JetBrains Mono', 'Fira Code', 'Cascadia Code', ui-monospace, monospace !important;
}

.bio-text {
    font-family: 'JetBrains Mono', monospace;
    font-size: 0.95rem;
    line-height: 1.8;
    color: var(--bio-text-color);
}

/* Badges */
.badge-matrix {
    background-color: var(--accent-emerald-subtle);
    color: var(--accent-emerald);
    border: 1px solid var(--accent-emerald-border);
    font-family: 'JetBrains Mono', monospace;
    font-weight: 600;
    letter-spacing: 0.3px;
}

/* Cards & Containers */
.card {
    background-color: var(--card-bg) !important;
    border-color: var(--card-border) !important;
    box-shadow: var(--card-shadow);
    transition: border-color 0.2s ease, box-shadow 0.2s ease;
}

.card:hover {
    border-color: var(--card-hover-border) !important;
    box-shadow: var(--card-hover-shadow) !important;
}

/* Box interni delle card */
.p-4.bg-dark-subtle,
.p-3.bg-dark-subtle,
.p-2.bg-dark-subtle {
    background-color: var(--card-subtle-bg) !important;
    border-color: var(--card-border) !important;
}

/* Shimmer / Skeleton Loading */
.placeholder-matrix {
    background: linear-gradient(90deg, var(--shimmer-1) 25%, var(--shimmer-2) 50%, var(--shimmer-1) 75%);
    background-size: 200% 100%;
    animation: matrixShimmer 1.5s infinite ease-in-out;
    border-radius: 4px;
    display: inline-block;
}

@keyframes matrixShimmer {
    0% { background-position: 200% 0; }
    100% { background-position: -200% 0; }
}

/* Theme Toggle Button */
.theme-toggle-btn {
    border-radius: 9999px;
    width: 38px;
    height: 38px;
    padding: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-color: var(--card-border);
    color: var(--text-muted);
    background-color: transparent;
    transition: all 0.2s ease;
}

.theme-toggle-btn:hover {
    color: var(--accent-emerald);
    border-color: var(--accent-emerald);
    background-color: var(--accent-emerald-subtle);
}

/* Navbar Brand */
.navbar-brand {
    font-size: 1.35rem;
    letter-spacing: 0.5px;
}

/* Custom adjustments for light mode tables */
[data-bs-theme="light"] .table {
    --bs-table-bg: transparent;
    --bs-table-striped-bg: rgba(0, 0, 0, 0.02);
    --bs-table-hover-bg: rgba(5, 150, 105, 0.06);
    color: var(--text-main);
    border-color: var(--card-border);
}

[data-bs-theme="dark"] .table {
    --bs-table-bg: transparent;
    --bs-table-hover-bg: rgba(16, 185, 129, 0.1);
    color: var(--text-main);
    border-color: var(--card-border);
}

/* ==========================================================================
   RPKI & Security Status Boxes (Dual-Mode Light & Dark)
   ========================================================================== */

/* Safe / Protected / ROA Valida (Verde) */
[data-bs-theme="light"] .rpki-box-success {
    background-color: #ecfdf5 !important;
    border: 1px solid #a7f3d0 !important;
    color: #064e3b !important;
}

[data-bs-theme="dark"] .rpki-box-success {
    background-color: rgba(16, 185, 129, 0.08) !important;
    border: 1px solid rgba(16, 185, 129, 0.3) !important;
    color: #f8fafc !important;
}

[data-bs-theme="light"] .rpki-subbox-success {
    background-color: #d1fae5 !important;
    border: 1px solid #86efac !important;
    color: #065f46 !important;
}

[data-bs-theme="dark"] .rpki-subbox-success {
    background-color: rgba(16, 185, 129, 0.16) !important;
    border: 1px solid rgba(16, 185, 129, 0.35) !important;
    color: #ecfdf5 !important;
}

.rpki-badge-success {
    background-color: #059669 !important;
    color: #ffffff !important;
}

[data-bs-theme="dark"] .rpki-badge-success {
    background-color: rgba(16, 185, 129, 0.25) !important;
    border: 1px solid rgba(16, 185, 129, 0.5) !important;
    color: #34d399 !important;
}

/* Danger / Pericolo / ROA Assente (Rosso) */
[data-bs-theme="light"] .rpki-box-danger {
    background-color: #fef2f2 !important;
    border: 1px solid #fecaca !important;
    color: #7f1d1d !important;
}

[data-bs-theme="dark"] .rpki-box-danger {
    background-color: rgba(239, 68, 68, 0.08) !important;
    border: 1px solid rgba(239, 68, 68, 0.3) !important;
    color: #f8fafc !important;
}

[data-bs-theme="light"] .rpki-subbox-danger {
    background-color: #fee2e2 !important;
    border: 1px solid #fca5a5 !important;
    color: #991b1b !important;
}

[data-bs-theme="dark"] .rpki-subbox-danger {
    background-color: rgba(239, 68, 68, 0.18) !important;
    border: 1px solid rgba(239, 68, 68, 0.4) !important;
    color: #fee2e2 !important;
}

.rpki-badge-danger {
    background-color: #dc2626 !important;
    color: #ffffff !important;
}

[data-bs-theme="dark"] .rpki-badge-danger {
    background-color: rgba(239, 68, 68, 0.25) !important;
    border: 1px solid rgba(239, 68, 68, 0.5) !important;
    color: #f87171 !important;
}

/* Neutral Subbox (es. prefisso valido nel caso di test vulnerabile) */
[data-bs-theme="light"] .rpki-subbox-neutral {
    background-color: #ffffff !important;
    border: 1px solid #e2e8f0 !important;
    color: #334155 !important;
}

[data-bs-theme="dark"] .rpki-subbox-neutral {
    background-color: rgba(255, 255, 255, 0.05) !important;
    border: 1px solid rgba(255, 255, 255, 0.1) !important;
    color: #cbd5e1 !important;
}

