/* ============================================================
   DocMorph — Pure Dark Monochrome Theme
   Color system:
     Background:        #0b0b0b
     Cards / surfaces:  #1a1a1a
     Borders:           #2a2a2a
     Primary text:      #ffffff
     Secondary text:    #b3b3b3
     Button default:    #2a2a2a  hover: #3a3a3a
   ============================================================ */

/* ── Bootstrap root overrides ── */
:root {
    --dm-bg:          #0b0b0b;
    --dm-surface:     #1a1a1a;
    --dm-border:      #2a2a2a;
    --dm-text:        #ffffff;
    --dm-text-muted:  #b3b3b3;
    --dm-btn:         #2a2a2a;
    --dm-btn-hover:   #3a3a3a;

    --bs-body-bg:          var(--dm-bg);
    --bs-body-color:       var(--dm-text);
    --bs-card-bg:          var(--dm-surface);
    --bs-border-color:     var(--dm-border);
    --bs-secondary-color:  var(--dm-text-muted);
}

/* ── Base ── */
body {
    background-color: var(--dm-bg);
    color: var(--dm-text);
    min-height: 100vh;
    display: flex;
    flex-direction: column;
}

main {
    flex: 1;
}

/* ── Neutralise ALL Bootstrap colour text utilities ── */
.text-primary,
.text-success,
.text-info,
.text-warning,
.text-danger,
.text-purple {
    color: #ffffff !important;
}

.text-secondary {
    color: var(--dm-text-muted) !important;
}

.text-muted {
    color: var(--dm-text-muted) !important;
}

/* ── Navbar ── */
.navbar {
    background-color: var(--dm-surface) !important;
    border-bottom: 1px solid var(--dm-border) !important;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.5);
}

.nav-link {
    color: var(--dm-text-muted) !important;
    transition: color 0.2s ease;
}

.nav-link:hover,
.nav-link:focus {
    color: #ffffff !important;
}

.nav-link.active {
    color: #ffffff !important;
}

.navbar-brand {
    color: #ffffff !important;
}

/* ── Cards ── */
.card {
    background-color: var(--dm-surface);
    border: 1px solid var(--dm-border);
    border-radius: 0.5rem;
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.4);
    transition: transform 0.2s ease, box-shadow 0.2s ease;
}

.card:hover {
    transform: translateY(-2px);
    box-shadow: 0 8px 20px rgba(0, 0, 0, 0.55);
}

.feature-card {
    transition: transform 0.2s ease, box-shadow 0.2s ease;
}

.feature-card:hover {
    transform: translateY(-4px);
    box-shadow: 0 10px 24px rgba(0, 0, 0, 0.6);
}

.card-header {
    background-color: #222222 !important;
    border-bottom: 1px solid var(--dm-border);
    color: #ffffff !important;
}

/* Neutralise any coloured card-header Bootstrap utilities */
.card-header.bg-primary,
.card-header.bg-success,
.card-header.bg-info,
.card-header.bg-warning,
.card-header.bg-danger,
.card-header.bg-secondary {
    background-color: #222222 !important;
    color: #ffffff !important;
}

/* Neutralise coloured card borders */
.border-info,
.border-warning,
.border-purple,
.border-success,
.border-danger,
.border-primary {
    border-color: var(--dm-border) !important;
}

/* ── Buttons ── */
.btn {
    background-color: var(--dm-btn);
    border-color: var(--dm-border);
    color: #ffffff;
    transition: background-color 0.2s ease, border-color 0.2s ease,
                transform 0.2s ease, box-shadow 0.2s ease;
}

.btn:hover,
.btn:focus {
    background-color: var(--dm-btn-hover);
    border-color: #4a4a4a;
    color: #ffffff;
    transform: translateY(-1px);
    box-shadow: 0 4px 10px rgba(0, 0, 0, 0.4);
}

.btn:active {
    transform: translateY(0);
}

/* Override every Bootstrap colour variant → same neutral style */
.btn-primary,
.btn-success,
.btn-info,
.btn-warning,
.btn-danger,
.btn-secondary,
.btn-purple {
    background-color: var(--dm-btn) !important;
    border-color: var(--dm-border) !important;
    color: #ffffff !important;
}

.btn-primary:hover,
.btn-success:hover,
.btn-info:hover,
.btn-warning:hover,
.btn-danger:hover,
.btn-secondary:hover,
.btn-purple:hover {
    background-color: var(--dm-btn-hover) !important;
    border-color: #4a4a4a !important;
    color: #ffffff !important;
}

/* Outline variants */
.btn-outline-primary,
.btn-outline-success,
.btn-outline-info,
.btn-outline-warning,
.btn-outline-danger,
.btn-outline-secondary,
.btn-outline-purple {
    background-color: transparent !important;
    border-color: var(--dm-border) !important;
    color: var(--dm-text-muted) !important;
}

.btn-outline-primary:hover,
.btn-outline-success:hover,
.btn-outline-info:hover,
.btn-outline-warning:hover,
.btn-outline-danger:hover,
.btn-outline-secondary:hover,
.btn-outline-purple:hover,
.btn-check:checked + .btn-outline-secondary,
.btn-check:checked + .btn-outline-primary {
    background-color: var(--dm-btn-hover) !important;
    border-color: #4a4a4a !important;
    color: #ffffff !important;
}

/* btn-check (radio/checkbox buttons like tone selector) */
.btn-check:checked + .btn {
    background-color: #3a3a3a !important;
    border-color: #555555 !important;
    color: #ffffff !important;
}

/* ── Alerts ── */
.alert {
    border-radius: 0.5rem;
    border: 1px solid var(--dm-border);
}

.alert-success {
    background-color: #1e1e1e !important;
    border-color: #3a3a3a !important;
    color: #ffffff !important;
}

.alert-danger {
    background-color: #1e1e1e !important;
    border-color: #3a3a3a !important;
    color: #ffffff !important;
}

.alert-info {
    background-color: #1e1e1e !important;
    border-color: #3a3a3a !important;
    color: var(--dm-text-muted) !important;
}

.alert-link {
    color: #ffffff !important;
    text-decoration: underline;
}

/* ── Forms ── */
.form-control,
.form-select {
    background-color: #111111;
    border-color: var(--dm-border);
    color: #ffffff;
    transition: border-color 0.2s ease, box-shadow 0.2s ease;
}

.form-control:focus,
.form-select:focus {
    background-color: #111111;
    border-color: #555555;
    color: #ffffff;
    box-shadow: 0 0 0 0.2rem rgba(255, 255, 255, 0.08);
}

.form-control::placeholder {
    color: #666666;
}

.form-label {
    color: var(--dm-text-muted);
    font-weight: 500;
}

/* ── Drop zone ── */
.drop-zone {
    border: 2px dashed var(--dm-border);
    border-radius: 0.5rem;
    padding: 3rem 1rem;
    text-align: center;
    cursor: pointer;
    transition: border-color 0.2s ease, background-color 0.2s ease, transform 0.2s ease;
    background-color: rgba(26, 26, 26, 0.6);
}

.drop-zone:hover {
    border-color: #555555;
    background-color: rgba(42, 42, 42, 0.4);
}

.drop-zone.dragover {
    border-color: #aaaaaa;
    background-color: rgba(58, 58, 58, 0.3);
    transform: scale(1.01);
}

.drop-zone i {
    color: var(--dm-text-muted);
}

.drop-zone:hover i {
    color: #ffffff;
}

/* ── Progress bar ── */
.progress {
    height: 1.5rem;
    background-color: #1a1a1a;
    border: 1px solid var(--dm-border);
}

.progress-bar {
    background-color: #555555 !important;
}

/* ── Tabs ── */
.nav-tabs {
    border-bottom: 1px solid var(--dm-border);
}

.nav-tabs .nav-link {
    color: var(--dm-text-muted) !important;
    border-color: transparent !important;
    background-color: transparent !important;
    transition: color 0.2s ease, background-color 0.2s ease;
}

.nav-tabs .nav-link:hover {
    color: #ffffff !important;
    border-color: transparent !important;
    background-color: rgba(58, 58, 58, 0.3) !important;
}

.nav-tabs .nav-link.active {
    color: #ffffff !important;
    background-color: var(--dm-btn) !important;
    border-color: var(--dm-border) var(--dm-border) var(--dm-surface) !important;
}

/* ── Footer ── */
footer {
    background-color: var(--dm-surface) !important;
    border-top: 1px solid var(--dm-border) !important;
    color: var(--dm-text-muted) !important;
    margin-top: auto;
}

/* ── File list ── */
#fileList {
    background-color: #111111;
    border: 1px solid var(--dm-border);
    border-radius: 0.5rem;
    padding: 1rem;
    max-height: 200px;
    overflow-y: auto;
}

.file-item {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 0.5rem;
    margin-bottom: 0.5rem;
    background-color: var(--dm-surface);
    border-radius: 0.25rem;
    border: 1px solid var(--dm-border);
    color: var(--dm-text-muted);
}

.file-item:last-child {
    margin-bottom: 0;
}

/* ── Spinner ── */
.spinner-border {
    color: var(--dm-text-muted) !important;
}

/* ── Misc Bootstrap overrides ── */
.bg-dark {
    background-color: var(--dm-surface) !important;
}

.border-secondary {
    border-color: var(--dm-border) !important;
}

.bg-secondary.bg-opacity-10 {
    background-color: rgba(42, 42, 42, 0.5) !important;
}

/* ── Responsive ── */
@media (max-width: 768px) {
    .navbar-nav {
        padding-top: 1rem;
    }

    .drop-zone {
        padding: 2rem 1rem;
    }

    .btn-group.flex-wrap .btn {
        margin-bottom: 0.25rem;
    }
}
