/* SOCFortress dark theme utilities */

:root {
    --soc-bg: #0f1117;
    --soc-card: rgba(30, 34, 46, 0.7);
    --soc-card-solid: #1e222e;
    --soc-border: rgba(168, 85, 247, 0.15);
    --soc-accent: #a855f7;
    --soc-accent-hover: #9333ea;
    --soc-text: #e2e8f0;
    --soc-text-muted: #94a3b8;
    --soc-danger: #ef4444;
    --soc-success: #22c55e;
    --soc-warning: #f59e0b;
}

body {
    background-color: var(--soc-bg);
    color: var(--soc-text);
    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
}

/* Glassmorphism card */
.glass-card {
    background: var(--soc-card);
    backdrop-filter: blur(16px);
    -webkit-backdrop-filter: blur(16px);
    border: 1px solid var(--soc-border);
    border-radius: 0.75rem;
}

/* Form inputs */
.soc-input {
    background: rgba(15, 17, 23, 0.8);
    border: 1px solid var(--soc-border);
    border-radius: 0.5rem;
    color: var(--soc-text);
    padding: 0.5rem 0.75rem;
    width: 100%;
    transition: border-color 0.2s;
}
.soc-input:focus {
    outline: none;
    border-color: var(--soc-accent);
    box-shadow: 0 0 0 2px rgba(168, 85, 247, 0.15);
}

/* Select */
.soc-select {
    background: rgba(15, 17, 23, 0.8);
    border: 1px solid var(--soc-border);
    border-radius: 0.5rem;
    color: var(--soc-text);
    padding: 0.5rem 0.75rem;
    width: 100%;
}
.soc-select:focus {
    outline: none;
    border-color: var(--soc-accent);
}

/* Textarea */
.soc-textarea {
    background: rgba(15, 17, 23, 0.8);
    border: 1px solid var(--soc-border);
    border-radius: 0.5rem;
    color: var(--soc-text);
    padding: 0.5rem 0.75rem;
    width: 100%;
    resize: vertical;
}
.soc-textarea:focus {
    outline: none;
    border-color: var(--soc-accent);
}

/* Buttons */
.btn-primary {
    background: var(--soc-accent);
    color: #0f1117;
    font-weight: 600;
    padding: 0.5rem 1.25rem;
    border-radius: 0.5rem;
    border: none;
    cursor: pointer;
    transition: background 0.2s;
}
.btn-primary:hover {
    background: var(--soc-accent-hover);
}
.btn-primary:disabled {
    opacity: 0.5;
    cursor: not-allowed;
}

.btn-danger {
    background: var(--soc-danger);
    color: white;
    font-weight: 600;
    padding: 0.5rem 1.25rem;
    border-radius: 0.5rem;
    border: none;
    cursor: pointer;
    transition: background 0.2s;
}
.btn-danger:hover {
    background: #dc2626;
}

.btn-ghost {
    background: transparent;
    color: var(--soc-text-muted);
    font-weight: 500;
    padding: 0.5rem 1.25rem;
    border-radius: 0.5rem;
    border: 1px solid var(--soc-border);
    cursor: pointer;
    transition: all 0.2s;
}
.btn-ghost:hover {
    color: var(--soc-text);
    border-color: var(--soc-accent);
}

/* Table */
.soc-table {
    width: 100%;
    border-collapse: collapse;
}
.soc-table th {
    text-align: left;
    padding: 0.75rem 1rem;
    color: var(--soc-text-muted);
    font-weight: 500;
    font-size: 0.75rem;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    border-bottom: 1px solid var(--soc-border);
}
.soc-table td {
    padding: 0.75rem 1rem;
    border-bottom: 1px solid rgba(168, 85, 247, 0.07);
}
.soc-table tbody tr:hover {
    background: rgba(168, 85, 247, 0.05);
}

/* Tabs */
.tab-btn {
    padding: 0.5rem 1rem;
    color: var(--soc-text-muted);
    border-bottom: 2px solid transparent;
    cursor: pointer;
    transition: all 0.2s;
    background: none;
    border-top: none;
    border-left: none;
    border-right: none;
    font-size: 0.875rem;
}
.tab-btn:hover {
    color: var(--soc-text);
}
.tab-btn.active {
    color: var(--soc-accent);
    border-bottom-color: var(--soc-accent);
}

/* Badge / pill */
.badge {
    display: inline-block;
    padding: 0.125rem 0.5rem;
    border-radius: 9999px;
    font-size: 0.75rem;
    font-weight: 600;
}
/* User roles */
.badge-admin { background: rgba(239,68,68,0.15); color: #ef4444; }
.badge-compliance_manager { background: rgba(168,85,247,0.15); color: #a855f7; }
.badge-auditor { background: rgba(59,130,246,0.15); color: #3b82f6; }
.badge-risk_owner { background: rgba(249,115,22,0.15); color: #f97316; }
.badge-read_only { background: rgba(148,163,184,0.15); color: #94a3b8; }
/* Audit statuses */
.badge-planned { background: rgba(148,163,184,0.15); color: #94a3b8; }
.badge-in_progress { background: rgba(245,158,11,0.15); color: #f59e0b; }
.badge-completed { background: rgba(34,197,94,0.15); color: #22c55e; }
.badge-cancelled { background: rgba(239,68,68,0.15); color: #ef4444; }
/* Risk statuses */
.badge-open { background: rgba(239,68,68,0.15); color: #ef4444; }
.badge-in_treatment { background: rgba(245,158,11,0.15); color: #f59e0b; }
.badge-accepted { background: rgba(148,163,184,0.15); color: #94a3b8; }
.badge-closed { background: rgba(34,197,94,0.15); color: #22c55e; }
/* Severity */
.badge-critical { background: rgba(239,68,68,0.15); color: #ef4444; }
.badge-high { background: rgba(249,115,22,0.15); color: #f97316; }
.badge-medium { background: rgba(234,179,8,0.15); color: #eab308; }
.badge-low { background: rgba(168,85,247,0.15); color: #a855f7; }
.badge-informational { background: rgba(100,116,139,0.15); color: #64748b; }
/* Control status */
.badge-implemented { background: rgba(34,197,94,0.15); color: #22c55e; }
.badge-partial { background: rgba(245,158,11,0.15); color: #f59e0b; }
.badge-not_implemented { background: rgba(239,68,68,0.15); color: #ef4444; }
.badge-not_applicable { background: rgba(100,116,139,0.15); color: #64748b; }
/* Policy statuses */
.badge-draft { background: rgba(148,163,184,0.15); color: #94a3b8; }
.badge-review { background: rgba(245,158,11,0.15); color: #f59e0b; }
.badge-approved { background: rgba(34,197,94,0.15); color: #22c55e; }
.badge-retired { background: rgba(100,116,139,0.15); color: #64748b; }
/* Framework types */
.badge-iso27001 { background: rgba(59,130,246,0.15); color: #3b82f6; }
.badge-soc2 { background: rgba(168,85,247,0.15); color: #a855f7; }
.badge-custom { background: rgba(148,163,184,0.15); color: #94a3b8; }
/* Finding types */
.badge-non_conformity { background: rgba(239,68,68,0.15); color: #ef4444; }
.badge-observation { background: rgba(245,158,11,0.15); color: #f59e0b; }
.badge-opportunity { background: rgba(34,197,94,0.15); color: #22c55e; }
/* Vendor status */
.badge-active       { background: rgba(34,197,94,0.15);  color: #22c55e; }
.badge-inactive     { background: rgba(100,116,139,0.15); color: #64748b; }
.badge-under_review { background: rgba(245,158,11,0.15);  color: #f59e0b; }
.badge-terminated   { background: rgba(239,68,68,0.15);   color: #ef4444; }
/* Vendor category */
.badge-supplier     { background: rgba(59,130,246,0.15);  color: #3b82f6; }
.badge-processor    { background: rgba(168,85,247,0.15);  color: #a855f7; }
.badge-sub-processor { background: rgba(236,72,153,0.15); color: #ec4899; }
.badge-partner      { background: rgba(20,184,166,0.15);  color: #14b8a6; }
.badge-cloud        { background: rgba(99,102,241,0.15);  color: #6366f1; }
.badge-saas         { background: rgba(245,158,11,0.15);  color: #f59e0b; }
.badge-infra        { background: rgba(148,163,184,0.15); color: #94a3b8; }
.badge-other        { background: rgba(100,116,139,0.15); color: #64748b; }
/* Risk heat */
.risk-critical { color: #ef4444; font-weight: 700; }
.risk-high    { color: #f97316; font-weight: 700; }
.risk-medium  { color: #eab308; font-weight: 600; }
.risk-low     { color: #22c55e; }
/* Progress bar */
.progress-bar-track { background: rgba(168,85,247,0.1); border-radius: 9999px; height: 6px; overflow: hidden; }
.progress-bar-fill  { height: 100%; border-radius: 9999px; background: var(--soc-accent); transition: width 0.4s ease; }

/* Flash messages */
.flash-success {
    background: rgba(34,197,94,0.1);
    border: 1px solid rgba(34,197,94,0.3);
    color: #22c55e;
    padding: 0.75rem 1rem;
    border-radius: 0.5rem;
    margin-bottom: 1rem;
}
.flash-error {
    background: rgba(239,68,68,0.1);
    border: 1px solid rgba(239,68,68,0.3);
    color: #ef4444;
    padding: 0.75rem 1rem;
    border-radius: 0.5rem;
    margin-bottom: 1rem;
}

/* Notification bell */
.notif-badge {
    position: absolute;
    top: 2px;
    right: 2px;
    min-width: 16px;
    height: 16px;
    padding: 0 4px;
    border-radius: 9999px;
    background: var(--soc-danger);
    color: #fff;
    font-size: 0.625rem;
    font-weight: 700;
    line-height: 16px;
    text-align: center;
}

.notif-dropdown {
    position: absolute;
    right: 0;
    top: 100%;
    margin-top: 0.5rem;
    width: 22rem;
    background: var(--soc-card-solid);
    border: 1px solid var(--soc-border);
    border-radius: 0.75rem;
    box-shadow: 0 20px 40px rgba(0,0,0,0.4);
    z-index: 50;
    overflow: hidden;
}

.notif-dot {
    display: inline-block;
    width: 6px;
    height: 6px;
    border-radius: 50%;
    flex-shrink: 0;
}

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