:root {
    --jj-bg: #f4f7fb;
    --jj-surface: #ffffff;
    --jj-surface-soft: #f7fafc;
    --jj-sidebar: #0f2233;
    --jj-sidebar-hover: #17324a;
    --jj-primary: #123955;
    --jj-accent: #18a7d6;
    --jj-success: #159f64;
    --jj-warning: #d08700;
    --jj-danger: #d64d4d;
    --jj-text: #172b3d;
    --jj-text-muted: #6e7c8b;

    --jj-radius-sm: 10px;
    --jj-radius-md: 14px;
    --jj-radius-lg: 18px;

    --jj-shadow-soft: 0 12px 28px rgba(14, 42, 74, 0.06);
    --jj-shadow-medium: 0 16px 36px rgba(11, 35, 63, 0.09);
    --jj-shadow-elevated: 0 24px 54px rgba(9, 28, 52, 0.15);
}

body {
    background: radial-gradient(circle at 0% 0%, #e7f2f9 0%, #f4f7fb 42%) fixed;
    color: var(--jj-text);
    font-family: 'Inter', sans-serif;
    min-height: 100vh;
}

h1,
h2,
h3,
h4,
h5,
h6,
.jj-heading {
    font-family: 'Sora', sans-serif;
    letter-spacing: -0.02em;
}

.jj-app {
    min-height: 100vh;
}

.jj-sidebar {
    width: 270px;
    background: linear-gradient(175deg, var(--jj-sidebar) 0%, #0b1a2a 100%);
    color: #e5f0f8;
    box-shadow: var(--jj-shadow-elevated);
}

.jj-logo {
    font-family: 'Sora', sans-serif;
    letter-spacing: 0.03em;
    color: #fff;
    font-weight: 700;
}

.jj-nav-link {
    display: flex;
    align-items: center;
    gap: 0.65rem;
    padding: 0.62rem 0.82rem;
    border-radius: 12px;
    color: #ccdeed;
    text-decoration: none;
    transition: 0.2s ease-in-out;
    font-weight: 500;
}

.jj-nav-link:hover,
.jj-nav-link.active {
    background: var(--jj-sidebar-hover);
    color: #ffffff;
}

.jj-main {
    flex: 1;
    min-width: 0;
}

.jj-topbar {
    background: rgba(255, 255, 255, 0.8);
    backdrop-filter: blur(10px);
    border-bottom: 1px solid #deebf5;
    box-shadow: 0 6px 16px rgba(16, 44, 77, 0.04);
}

.jj-panel {
    background: var(--jj-surface);
    border-radius: var(--jj-radius-md);
    box-shadow: var(--jj-shadow-soft);
    border: 1px solid #e8eef4;
}

.jj-stat {
    padding: 1.1rem 1.2rem;
    border-radius: var(--jj-radius-md);
    background: linear-gradient(145deg, #fff 0%, #f8fbfd 100%);
    border: 1px solid #deebf5;
    box-shadow: var(--jj-shadow-soft);
}

.jj-stat .label {
    font-size: 0.78rem;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--jj-text-muted);
}

.jj-stat .value {
    font-family: 'Sora', sans-serif;
    font-size: 1.5rem;
    margin-top: 0.45rem;
    color: var(--jj-primary);
}

.jj-badge {
    font-size: 0.72rem;
    border-radius: 999px;
    padding: 0.28rem 0.58rem;
    font-weight: 600;
}

.jj-badge.active,
.jj-badge.approved,
.jj-badge.online,
.jj-badge.completed {
    background: rgba(21, 159, 100, 0.14);
    color: var(--jj-success);
}

.jj-badge.pending,
.jj-badge.pending_review,
.jj-badge.queued,
.jj-badge.draft {
    background: rgba(208, 135, 0, 0.16);
    color: var(--jj-warning);
}

.jj-badge.rejected,
.jj-badge.failed,
.jj-badge.suspended,
.jj-badge.offline {
    background: rgba(214, 77, 77, 0.14);
    color: var(--jj-danger);
}

.table.jj-table {
    --bs-table-bg: transparent;
    --bs-table-striped-bg: #f8fbfd;
    margin-bottom: 0;
}

.table.jj-table thead th {
    font-size: 0.78rem;
    text-transform: uppercase;
    color: #6f8296;
    font-weight: 600;
    letter-spacing: 0.05em;
    border-bottom-color: #e2edf6;
}

.table.jj-table td {
    border-color: #ebf2f8;
    vertical-align: middle;
}

.form-control,
.form-select {
    border-radius: 11px;
    border-color: #d7e5f0;
    padding: 0.62rem 0.8rem;
}

.form-control:focus,
.form-select:focus {
    border-color: #78c8e4;
    box-shadow: 0 0 0 0.2rem rgba(24, 167, 214, 0.18);
}

.jj-filter-bar {
    padding: 0.9rem;
    border-radius: 12px;
    background: #f9fcff;
    border: 1px solid #e1edf6;
}

.jj-media-frame {
    border-radius: 16px;
    background: linear-gradient(135deg, #072036 0%, #143f5f 55%, #1b688a 100%);
    min-height: 220px;
    color: #fff;
    display: flex;
    align-items: center;
    justify-content: center;
    text-align: center;
}

.jj-player-shell {
    background: #080f16;
    color: #fff;
    width: 100vw;
    height: 100vh;
    overflow: hidden;
}

@media (max-width: 991.98px) {
    .jj-sidebar {
        width: 86px;
    }

    .jj-sidebar .label {
        display: none;
    }
}
