/* =========================================================
   PDF Analyzer — Dark UI Refresh + Sticky Footer + Fixes
   ========================================================= */

/* Theme tokens */
:root {
    --bg: #0f1218;
    --bg-2: #121722;
    --panel: #161b24;
    --panel-2: #1b2230;

    --border: #2b3444;
    --muted: #9aa3b2;
    --text: #e5e7eb;

    --primary: #4c8dff;   /* blue */
    --primary-2: #7c5cff; /* purple */
    --primary-3: #33d1ff; /* cyan accent */

    --success: #2bc27a;
    --warning: #f1b547;
    --danger:  #ef5962;
    --info:    #42c2ff;

    --radius: 14px;
    --shadow-md: 0 10px 30px rgba(0,0,0,.28);
    --shadow-lg: 0 16px 40px rgba(0,0,0,.36);
    --ring: 0 0 0 .25rem rgba(76,141,255,.35);
}

/* Sticky footer layout (pairs with base.html body.layout) */
body.layout {
    display: flex;
    min-height: 100vh;
    flex-direction: column;
}
main.flex-grow-1 { flex: 1 0 auto; }
.site-footer { margin-top: auto; }

/* Background */
html, body {
    background:
        radial-gradient(1200px 800px at 10% -10%, rgba(76,141,255,.10), transparent 60%),
        radial-gradient(900px 700px at 110% 10%, rgba(124,92,255,.10), transparent 55%),
        linear-gradient(180deg, var(--bg) 0%, var(--bg-2) 100%);
    color: var(--text);
    min-height: 100%;
}

/* Navbar (glassy) */
.navbar-custom {
    background: rgba(18, 22, 31, 0.6) !important;
    backdrop-filter: saturate(160%) blur(14px);
    -webkit-backdrop-filter: saturate(160%) blur(14px);
    border-bottom: 1px solid rgba(255,255,255,0.06);
    box-shadow: 0 6px 20px rgba(0,0,0,.30);
}
.navbar-custom .navbar-brand {
    font-weight: 700;
    letter-spacing: .3px;
    color: #f0f3ff !important;
}
.navbar-custom .nav-link {
    color: #c7cbe0 !important;
    transition: color .18s ease, transform .18s ease;
    border-radius: 8px;
    padding: .35rem .75rem;
}
.navbar-custom .nav-link:hover,
.navbar-custom .nav-link:focus {
    color: #ffffff !important;
    transform: translateY(-1px);
    background: rgba(255,255,255,0.06);
}

/* Cards */
.card {
    background: linear-gradient(180deg, rgba(255,255,255,0.03), rgba(255,255,255,0.02)) ,
                linear-gradient(0deg, var(--panel), var(--panel));
    border: 1px solid var(--border);
    border-radius: var(--radius);
    box-shadow: var(--shadow-md);
    overflow: hidden;
    transition: box-shadow .25s ease, transform .25s ease, border-color .25s ease;
    animation: fadeUp .3s ease both;
}
.card:hover {
    box-shadow: var(--shadow-lg);
    border-color: rgba(76,141,255,.35);
    transform: translateY(-2px);
}
.card-header {
    background:
        linear-gradient(90deg,
            rgba(76,141,255,.18) 0%,
            rgba(124,92,255,.14) 50%,
            transparent 100%);
    border-bottom: 1px solid var(--border);
    padding: .9rem 1.1rem;
}
.card-header h3,
.card-header h5 { margin: 0; font-weight: 700; letter-spacing: .3px; }

/* Primary “blue” family — unify look across components */
.btn-primary,
.bg-primary,
.text-bg-primary,
.progress-bar,
.nav-pills .nav-link.active,
.pagination .page-item.active .page-link {
    background-image: linear-gradient(135deg, var(--primary) 0%, var(--primary-2) 100%) !important;
    background-color: var(--primary) !important; /* fallback */
    color: #fff !important;
    border-color: rgba(124,92,255,.45) !important;
    box-shadow: 0 6px 20px rgba(76,141,255,.25);
}

/* Buttons */
.btn {
    border-radius: 10px;
    border: 1px solid transparent;
    transition: transform .12s ease, box-shadow .2s ease, filter .2s ease, background .2s ease;
}
.btn:active { transform: translateY(1px) scale(.99); }
.btn-primary:hover,
.btn-primary:focus {
    filter: brightness(1.05);
    box-shadow: 0 10px 28px rgba(76,141,255,.35);
}

/* Download buttons — style any link that hits /downloads */
a.btn[href*="/downloads"] {
    border-radius: 999px;
    padding: .45rem .85rem;
    font-weight: 600;
    letter-spacing: .1px;
    background-image: linear-gradient(135deg, var(--primary) 0%, var(--primary-2) 100%);
    color: #fff !important;
    border: 1px solid rgba(124,92,255,.45);
    box-shadow: 0 6px 20px rgba(76,141,255,.22);
}
a.btn[href*="/downloads"]:hover,
a.btn[href*="/downloads"]:focus {
    filter: brightness(1.06);
    box-shadow: 0 10px 28px rgba(76,141,255,.32);
}
a.btn[href*="/downloads"].btn-sm { padding: .35rem .7rem; font-size: .85rem; }

/* Forms */
.form-label { color: #cfd6e7; font-weight: 600; }
.form-control, .form-select {
    color: #e9ecff;
    background: linear-gradient(180deg, rgba(255,255,255,.03), rgba(255,255,255,.02)),
                var(--panel-2);
    border: 1px solid var(--border);
    border-radius: 10px;
    padding: .65rem .9rem;
}
.form-control::placeholder { color: #9aa3b2; }
.form-control:focus, .form-select:focus {
    color: #ffffff;
    background-color: var(--panel-2);
    border-color: rgba(76,141,255,.55);
    box-shadow: var(--ring);
}

/* File input — uniform look and button */
input[type="file"].form-control {
    color: #cfd6e7;
    background: linear-gradient(180deg, rgba(255,255,255,.05), rgba(255,255,255,.02)),
                var(--panel-2);
    border: 1px solid var(--border);
    border-radius: 12px;
    padding: .5rem .6rem;
    height: auto;
}

/* Style the OS file button (Chromium/WebKit + Firefox) */
input[type="file"].form-control::-webkit-file-upload-button,
input[type="file"].form-control::file-selector-button {
    margin-right: .8rem;
    padding: .55rem .9rem;
    border: 1px solid rgba(124,92,255,.35);
    border-radius: 10px;
    background-image: linear-gradient(135deg, var(--primary) 0%, var(--primary-2) 100%);
    color: #fff;
    font-weight: 700;
    letter-spacing: .2px;
    cursor: pointer;
    box-shadow: 0 6px 18px rgba(76,141,255,.22);
}
.form-control.form-control-lg::-webkit-file-upload-button,
.form-control.form-control-lg::file-selector-button {
    padding: .7rem 1rem;
}
input[type="file"].form-control:hover::file-selector-button,
input[type="file"].form-control:focus::file-selector-button,
input[type="file"].form-control:hover::-webkit-file-upload-button,
input[type="file"].form-control:focus::-webkit-file-upload-button {
    filter: brightness(1.06);
    box-shadow: 0 10px 28px rgba(76,141,255,.32);
}
input[type="file"].form-control:focus {
    border-color: rgba(76,141,255,.55);
    box-shadow: var(--ring);
}

/* Alerts */
.alert { border-radius: 12px; border: 1px solid var(--border); color: #f7f9ff; }
.alert-success { background: linear-gradient(180deg, rgba(43,194,122,.15), rgba(43,194,122,.10)); border-color: rgba(43,194,122,.35); }
.alert-danger  { background: linear-gradient(180deg, rgba(239,89,98,.16), rgba(239,89,98,.10)); border-color: rgba(239,89,98,.45); }
.alert-warning { background: linear-gradient(180deg, rgba(241,181,71,.16), rgba(241,181,71,.10)); border-color: rgba(241,181,71,.45); }

/* Tables */
.table {
    --bs-table-color: var(--text);
    --bs-table-bg: rgba(255,255,255,.02);
    --bs-table-border-color: var(--border);
    border: 1px solid var(--border);
    border-radius: 12px;
    overflow: hidden;
}
.table thead th {
    background: linear-gradient(180deg, rgba(76,141,255,.18), rgba(76,141,255,.10));
    color: #f2f4ff;
    font-weight: 700;
    border-bottom: 1px solid var(--border);
}
.table-striped > tbody > tr:nth-of-type(odd) { --bs-table-accent-bg: rgba(255,255,255,.03); }
.table-hover tbody tr:hover { background: rgba(76,141,255,.08); }

/* Modal */
.modal-content {
    background: linear-gradient(180deg, rgba(255,255,255,.03), rgba(255,255,255,.02)),
                var(--panel);
    border: 1px solid var(--border);
    border-radius: 14px;
    box-shadow: var(--shadow-lg);
}
.modal-header { border-bottom: 1px solid var(--border); background: linear-gradient(90deg, rgba(76,141,255,.15), transparent); }

/* Footer */
.site-footer {
    background: linear-gradient(180deg, rgba(255,255,255,.02), rgba(255,255,255,.01));
    border-top: 1px solid var(--border);
}

/* Utilities */
.section-title {
    font-weight: 800;
    letter-spacing: .3px;
    background: linear-gradient(90deg, #ffffff 0%, #c6d4ff 100%);
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
}
@keyframes fadeUp { 0% { opacity: 0; transform: translateY(6px);} 100% { opacity: 1; transform: translateY(0);} }

/* Scrollbar (webkit) */
*::-webkit-scrollbar { height: 10px; width: 10px; }
*::-webkit-scrollbar-track { background: transparent; }
*::-webkit-scrollbar-thumb {
    background: linear-gradient(180deg, rgba(124,92,255,.6), rgba(76,141,255,.6));
    border-radius: 10px;
    border: 2px solid rgba(0,0,0,.15);
}
*::-webkit-scrollbar-thumb:hover { filter: brightness(1.05); }

/* Page-specific niceties */
#uploadForm .btn, #settingsForm .btn { margin-top: .25rem; }
#uploadButton { font-weight: 700; letter-spacing: .2px; }

/* Code/JSON blocks */
pre, code {
    background: rgba(0,0,0,.35) !important;
    border-radius: 10px !important;
    border: 1px solid var(--border) !important;
    color: #eaf1ff !important;
}

/* Links */
a { color: var(--primary-3); }
a:hover { color: #92e7ff; }

/* Improve close button visibility on dark */
.btn-close { filter: invert(1) grayscale(100%); opacity: .75; }
.btn-close:hover { opacity: 1; }

/* Download buttons styling (match gradient) */
a.btn[href*="/downloads"],
a.btn[href*="/api/download_converted"] {
    border-radius: 999px;
    padding: .45rem .85rem;
    font-weight: 600;
    letter-spacing: .1px;
    background-image: linear-gradient(135deg, var(--primary) 0%, var(--primary-2) 100%);
    color: #fff !important;
    border: 1px solid rgba(124,92,255,.45);
    box-shadow: 0 6px 20px rgba(76,141,255,.22);
}
a.btn[href*="/downloads"]:hover,
a.btn[href*="/api/download_converted"]:hover,
a.btn[href*="/downloads"]:focus,
a.btn[href*="/api/download_converted"]:focus {
    filter: brightness(1.06);
    box-shadow: 0 10px 28px rgba(76,141,255,.32);
}
a.btn[href*="/downloads"].btn-sm,
a.btn[href*="/api/download_converted"].btn-sm { padding: .35rem .7rem; font-size: .85rem; }