:root {
    --purple: #8b5cf6;
    --purple-dark: #6d28d9;
    --purple-soft: rgba(139, 92, 246, .18);
    --bg: #0b1020;
    --card: #121a2e;
    --card-2: #0f172a;
    --border: rgba(255,255,255,.09);
}

body {
    min-height: 100vh;
    background:
        radial-gradient(circle at top left, rgba(139, 92, 246, .23), transparent 32rem),
        radial-gradient(circle at bottom right, rgba(109, 40, 217, .18), transparent 26rem),
        var(--bg);
    color: #e5e7eb;
}

.glass-nav {
    background: rgba(11, 16, 32, .82);
    backdrop-filter: blur(14px);
}

.brand-dot {
    display: inline-block;
    width: .75rem;
    height: .75rem;
    border-radius: 999px;
    background: var(--purple);
    box-shadow: 0 0 28px var(--purple);
    margin-right: .45rem;
}

.hero {
    border: 1px solid var(--border);
    background: linear-gradient(135deg, rgba(18, 26, 46, .95), rgba(15, 23, 42, .75));
    box-shadow: 0 20px 80px rgba(0,0,0,.35);
}

.app-card {
    background: rgba(18, 26, 46, .88);
    border: 1px solid var(--border);
    border-radius: 1.25rem;
}

.fragment-disabled {
    border-color: rgba(148, 163, 184, .22);
    opacity: .88;
}

.document-card {
    transition: transform .18s ease, border-color .18s ease, box-shadow .18s ease;
}

.document-card:hover {
    transform: translateY(-3px);
    border-color: rgba(139, 92, 246, .55);
    box-shadow: 0 18px 60px rgba(0,0,0,.28);
}

.btn-purple {
    --bs-btn-color: #fff;
    --bs-btn-bg: var(--purple);
    --bs-btn-border-color: var(--purple);
    --bs-btn-hover-color: #fff;
    --bs-btn-hover-bg: var(--purple-dark);
    --bs-btn-hover-border-color: var(--purple-dark);
    --bs-btn-active-bg: var(--purple-dark);
    --bs-btn-active-border-color: var(--purple-dark);
}

.text-bg-purple {
    color: #fff !important;
    background: linear-gradient(135deg, var(--purple), var(--purple-dark)) !important;
}

.chip {
    display: inline-flex;
    align-items: center;
    padding: .45rem .75rem;
    background: var(--purple-soft);
    border: 1px solid rgba(139, 92, 246, .24);
    color: #ddd6fe;
    border-radius: 999px;
    font-size: .875rem;
}

.status {
    border-radius: 999px;
    padding: .32rem .58rem;
    font-size: .75rem;
    white-space: nowrap;
}
.status-uploaded { background: rgba(148, 163, 184, .15); color: #cbd5e1; }
.status-processing { background: rgba(59, 130, 246, .18); color: #93c5fd; }
.status-done { background: rgba(34, 197, 94, .16); color: #86efac; }
.status-failed { background: rgba(239, 68, 68, .16); color: #fca5a5; }

.score-line {
    height: .55rem;
    background: rgba(255,255,255,.08);
    border-radius: 999px;
    overflow: hidden;
}
.score-line > div {
    height: 100%;
    background: linear-gradient(90deg, var(--purple), #c084fc);
    border-radius: 999px;
}

.score-card {
    background: rgba(255,255,255,.04);
    border: 1px solid var(--border);
    border-radius: .85rem;
    padding: .75rem .9rem;
}

.empty-state {
    background: rgba(18, 26, 46, .7);
    border: 1px dashed rgba(255,255,255,.16);
}

.text-box {
    min-height: 16rem;
    max-height: 36rem;
    overflow: auto;
    background: rgba(2, 6, 23, .45);
    border: 1px solid var(--border);
    border-radius: 1rem;
    padding: 1rem;
    color: #d1d5db;
}

.text-box-purple {
    border-color: rgba(139, 92, 246, .35);
    background: rgba(139, 92, 246, .08);
}

.form-control, .form-select {
    background-color: rgba(2, 6, 23, .5);
    border-color: rgba(255,255,255,.12);
    color: #f8fafc;
}
.form-control:focus, .form-select:focus {
    border-color: var(--purple);
    box-shadow: 0 0 0 .2rem rgba(139,92,246,.18);
}
