/* DirtyRAG CTFd Theme — dark terminal aesthetic matching the DirtyRAG web UI */

:root {
    --dr-bg: #0a0a0a;
    --dr-bg-card: #111111;
    --dr-bg-input: #1a1a1a;
    --dr-border: #333333;
    --dr-text: #e0e0e0;
    --dr-text-muted: #888888;
    --dr-text-dim: #666666;
    --dr-red: #ff5252;
    --dr-blue: #4fc3f7;
    --dr-orange: #ff9800;
    --dr-green: #4caf50;
    --dr-font: 'Courier New', monospace;
}

/* Global overrides */
body {
    background-color: var(--dr-bg) !important;
    color: var(--dr-text) !important;
    font-family: var(--dr-font) !important;
}

a { color: var(--dr-blue) !important; text-decoration: none !important; }
a:hover { text-decoration: underline !important; }

/* Navbar */
.navbar, .navbar-default, nav.navbar {
    background-color: var(--dr-bg) !important;
    border-bottom: 1px solid var(--dr-border) !important;
    box-shadow: none !important;
}
.navbar-brand, .navbar-brand span {
    color: var(--dr-red) !important;
    font-family: var(--dr-font) !important;
    font-weight: bold !important;
    font-size: 1.5rem !important;
}
.nav-link, .navbar-nav .nav-link {
    color: var(--dr-text-muted) !important;
    font-family: var(--dr-font) !important;
}
.nav-link:hover, .nav-link.active {
    color: var(--dr-text) !important;
}

/* Cards and containers */
.card, .jumbotron, .challenge-card, .modal-content {
    background-color: var(--dr-bg-card) !important;
    border: 1px solid var(--dr-border) !important;
    color: var(--dr-text) !important;
    border-radius: 4px !important;
}
.card-header, .modal-header {
    background-color: var(--dr-bg) !important;
    border-bottom: 1px solid var(--dr-border) !important;
}
.card-body { background-color: var(--dr-bg-card) !important; }

/* Challenge list */
.challenge-button, .challenge-tile {
    background-color: var(--dr-bg-card) !important;
    border: 1px solid var(--dr-border) !important;
    color: var(--dr-text) !important;
    font-family: var(--dr-font) !important;
    transition: border-color 0.2s !important;
}
.challenge-button:hover, .challenge-tile:hover {
    border-color: var(--dr-blue) !important;
}
.challenge-button.solved, .challenge-tile.solved {
    border-color: var(--dr-green) !important;
}
.challenge-name { color: var(--dr-text) !important; font-family: var(--dr-font) !important; }
.challenge-category { color: var(--dr-text-muted) !important; }
.challenge-points { color: var(--dr-orange) !important; }

/* Forms and inputs */
.form-control, input[type="text"], input[type="password"], input[type="email"],
input[type="number"], textarea, select {
    background-color: var(--dr-bg-input) !important;
    border: 1px solid var(--dr-border) !important;
    color: var(--dr-text) !important;
    font-family: var(--dr-font) !important;
    border-radius: 4px !important;
}
.form-control:focus, input:focus {
    border-color: var(--dr-blue) !important;
    box-shadow: none !important;
}

/* Buttons */
.btn, button {
    font-family: var(--dr-font) !important;
    border-radius: 4px !important;
}
.btn-primary, .btn-success {
    background-color: var(--dr-border) !important;
    border: 1px solid #555 !important;
    color: var(--dr-text) !important;
}
.btn-primary:hover, .btn-success:hover {
    background-color: #444 !important;
}
.btn-outline-primary {
    border-color: var(--dr-blue) !important;
    color: var(--dr-blue) !important;
    background: transparent !important;
}
.btn-outline-primary:hover {
    background-color: var(--dr-blue) !important;
    color: var(--dr-bg) !important;
}

/* Scoreboard */
.table, .table-striped, .table-hover {
    color: var(--dr-text) !important;
    font-family: var(--dr-font) !important;
}
.table thead th {
    border-color: var(--dr-border) !important;
    color: var(--dr-text-muted) !important;
}
.table td, .table th {
    border-color: var(--dr-border) !important;
}
.table-striped tbody tr:nth-of-type(odd) {
    background-color: rgba(255, 255, 255, 0.02) !important;
}
.table-hover tbody tr:hover {
    background-color: rgba(79, 195, 247, 0.05) !important;
}

/* Modals */
.modal-backdrop { background-color: rgba(0, 0, 0, 0.8) !important; }
.modal-content {
    background-color: var(--dr-bg-card) !important;
    border: 1px solid var(--dr-border) !important;
}
.modal-header { border-bottom-color: var(--dr-border) !important; }
.modal-footer { border-top-color: var(--dr-border) !important; }
.close, .btn-close { color: var(--dr-text) !important; }

/* Modal nav tabs (Challenge / Solves / Submissions) */
.nav-tabs { border-bottom-color: var(--dr-border) !important; }
.nav-tabs .nav-link {
    color: var(--dr-text-muted) !important;
    border-color: transparent !important;
}
.nav-tabs .nav-link:hover {
    color: var(--dr-text) !important;
    border-color: var(--dr-border) !important;
}
.nav-tabs .nav-link.active {
    color: var(--dr-text) !important;
    background-color: var(--dr-bg-card) !important;
    border-color: var(--dr-border) var(--dr-border) var(--dr-bg-card) !important;
}

/* Headings */
h1, h2, h3, h4, h5, h6, .h1, .h2, .h3, .h4, .h5, .h6 {
    color: #fff !important;
    font-family: var(--dr-font) !important;
}

/* Challenge modal / detail — DirtyRAG plugin specific */
.dirtyrag-challenge { padding: 1rem 0; }
.dirtyrag-launch { margin-bottom: 1.5rem; text-align: center; }
.dirtyrag-btn {
    display: inline-block;
    padding: 0.8rem 2rem;
    background-color: var(--dr-red) !important;
    color: #fff !important;
    font-size: 1.1rem;
    font-weight: bold;
    border-radius: 4px;
    text-decoration: none !important;
    font-family: var(--dr-font);
    transition: background-color 0.2s;
}
.dirtyrag-btn:hover {
    background-color: #e04545 !important;
    text-decoration: none !important;
}
.dirtyrag-hint {
    color: var(--dr-text-muted);
    font-size: 0.85rem;
    margin-top: 0.5rem;
}
.dirtyrag-submit { margin-top: 1rem; }
.dirtyrag-input-row {
    display: flex;
    gap: 0.5rem;
}
.dirtyrag-flag-input {
    flex: 1;
    padding: 0.6rem !important;
    background: var(--dr-bg-input) !important;
    border: 1px solid var(--dr-border) !important;
    color: var(--dr-text) !important;
    font-family: var(--dr-font) !important;
    border-radius: 4px !important;
}
.dirtyrag-submit-btn {
    padding: 0.6rem 1.5rem !important;
    background: var(--dr-border) !important;
    border: 1px solid #555 !important;
    color: var(--dr-text) !important;
    font-family: var(--dr-font) !important;
}
.dirtyrag-submit-btn:hover { background: #444 !important; }
.dirtyrag-response { margin-top: 0.5rem; }
.dirtyrag-correct { color: var(--dr-green); font-weight: bold; }
.dirtyrag-incorrect { color: var(--dr-red); }
.dirtyrag-checking { color: var(--dr-text-muted); font-style: italic; }
.dirtyrag-ratelimit { color: var(--dr-orange); }
.dirtyrag-solved { color: var(--dr-green); }

/* Badges and tags */
.badge { font-family: var(--dr-font) !important; }
.badge-primary { background-color: var(--dr-blue) !important; }
.badge-success { background-color: var(--dr-green) !important; }
.badge-warning { background-color: var(--dr-orange) !important; }
.badge-danger { background-color: var(--dr-red) !important; }

/* Footer */
footer, .footer {
    background-color: var(--dr-bg) !important;
    border-top: 1px solid var(--dr-border) !important;
    color: var(--dr-text-dim) !important;
}

/* Alerts */
.alert { font-family: var(--dr-font) !important; border-radius: 4px !important; }
.alert-success { background-color: rgba(76, 175, 80, 0.1) !important; border-color: var(--dr-green) !important; color: var(--dr-green) !important; }
.alert-danger { background-color: rgba(255, 82, 82, 0.1) !important; border-color: var(--dr-red) !important; color: var(--dr-red) !important; }
.alert-warning { background-color: rgba(255, 152, 0, 0.1) !important; border-color: var(--dr-orange) !important; color: var(--dr-orange) !important; }

/* Pagination */
.page-link {
    background-color: var(--dr-bg-card) !important;
    border-color: var(--dr-border) !important;
    color: var(--dr-text) !important;
}
.page-item.active .page-link {
    background-color: var(--dr-blue) !important;
    border-color: var(--dr-blue) !important;
}

/* Scrollbar */
::-webkit-scrollbar { width: 8px; }
::-webkit-scrollbar-track { background: var(--dr-bg); }
::-webkit-scrollbar-thumb { background: var(--dr-border); border-radius: 4px; }
::-webkit-scrollbar-thumb:hover { background: #555; }

/* Misc overrides for CTFd core */
.container, .container-fluid { background-color: transparent !important; }
.main-content { background-color: var(--dr-bg) !important; }
hr { border-color: var(--dr-border) !important; }
code { background-color: var(--dr-bg-input) !important; color: var(--dr-blue) !important; padding: 0.1rem 0.3rem; border-radius: 2px; }
pre { background-color: var(--dr-bg-input) !important; border: 1px solid var(--dr-border) !important; color: var(--dr-text) !important; }
