﻿/* =====================================================
   JVK MIS UI STANDARD
   Central UI tokens and reusable components
   ===================================================== */

:root {
    --jvk-primary: #2563eb;
    --jvk-primary-soft: #eff6ff;
    --jvk-success: #16a34a;
    --jvk-success-soft: #ecfdf5;
    --jvk-warning: #f59e0b;
    --jvk-warning-soft: #fffbeb;
    --jvk-danger: #dc2626;
    --jvk-danger-soft: #fef2f2;
    --jvk-info: #0891b2;
    --jvk-info-soft: #ecfeff;
    --jvk-text-main: #0f172a;
    --jvk-text-muted: #64748b;
    --jvk-border: #e5e7eb;
    --jvk-bg-page: #f8fafc;
    --jvk-bg-card: #ffffff;
    --jvk-radius-sm: 8px;
    --jvk-radius-md: 12px;
    --jvk-radius-lg: 18px;
    --jvk-radius-pill: 999px;
    --jvk-shadow-sm: 0 2px 8px rgba(15, 23, 42, 0.06);
    --jvk-shadow-md: 0 10px 28px rgba(15, 23, 42, 0.08);
    --jvk-font-base: 'Prompt', sans-serif;
    --jvk-font-size-xs: 0.78rem;
    --jvk-font-size-sm: 0.86rem;
    --jvk-font-size-md: 0.95rem;
    --jvk-font-size-lg: 1.15rem;
    --jvk-font-size-xl: 1.45rem;
}

/* ---------- Page ---------- */
.jvk-page {
    color: var(--jvk-text-main);
}

.jvk-page-title {
    font-size: var(--jvk-font-size-xl);
    font-weight: 700;
    color: var(--jvk-text-main);
    margin-bottom: 0.25rem;
}

.jvk-page-subtitle {
    font-size: var(--jvk-font-size-sm);
    color: var(--jvk-text-muted);
}

/* ---------- Card ---------- */
.jvk-card {
    background: var(--jvk-bg-card);
    border: 1px solid var(--jvk-border);
    border-radius: var(--jvk-radius-lg);
    box-shadow: var(--jvk-shadow-sm);
}

.jvk-card-body {
    padding: 1rem;
}

.jvk-card-title {
    font-size: var(--jvk-font-size-md);
    font-weight: 700;
    color: var(--jvk-text-main);
}

.jvk-card-note {
    font-size: var(--jvk-font-size-xs);
    color: var(--jvk-text-muted);
}

/* ---------- KPI ---------- */
.jvk-kpi-card {
    background: var(--jvk-bg-card);
    border: 1px solid var(--jvk-border);
    border-radius: var(--jvk-radius-lg);
    padding: 1rem;
    box-shadow: var(--jvk-shadow-sm);
}

.jvk-kpi-label {
    font-size: var(--jvk-font-size-xs);
    color: var(--jvk-text-muted);
    margin-bottom: 0.35rem;
}

.jvk-kpi-value {
    font-size: 1.65rem;
    font-weight: 800;
    line-height: 1.15;
    color: var(--jvk-text-main);
}

.jvk-kpi-desc {
    font-size: var(--jvk-font-size-xs);
    color: var(--jvk-text-muted);
    margin-top: 0.35rem;
}

/* ---------- Buttons ---------- */
.jvk-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.4rem;
    border-radius: var(--jvk-radius-md);
    font-size: var(--jvk-font-size-sm);
    font-weight: 600;
    padding: 0.45rem 0.85rem;
    border: 1px solid transparent;
    cursor: pointer;
    transition: all 0.15s ease;
    text-decoration: none !important;
}

.jvk-btn-primary {
    background: var(--jvk-primary);
    border-color: var(--jvk-primary);
    color: #ffffff !important;
}

    .jvk-btn-primary:hover {
        filter: brightness(0.95);
    }

.jvk-btn-light {
    background: #ffffff;
    border-color: var(--jvk-border);
    color: var(--jvk-text-main) !important;
}

    .jvk-btn-light:hover {
        background: #f8fafc;
    }

.jvk-btn-danger {
    background: var(--jvk-danger);
    border-color: var(--jvk-danger);
    color: #ffffff !important;
}

/* ---------- Badge ---------- */
.jvk-badge {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    border-radius: var(--jvk-radius-pill);
    padding: 0.22rem 0.6rem;
    font-size: var(--jvk-font-size-xs);
    font-weight: 700;
    line-height: 1.2;
}

.jvk-badge-success {
    color: var(--jvk-success);
    background: var(--jvk-success-soft);
}

.jvk-badge-warning {
    color: #b45309;
    background: var(--jvk-warning-soft);
}

.jvk-badge-danger {
    color: var(--jvk-danger);
    background: var(--jvk-danger-soft);
}

.jvk-badge-info {
    color: var(--jvk-info);
    background: var(--jvk-info-soft);
}

.jvk-badge-muted {
    color: var(--jvk-text-muted);
    background: #f1f5f9;
}

/* ---------- Table ---------- */
.jvk-table-wrap {
    border: 1px solid var(--jvk-border);
    border-radius: var(--jvk-radius-lg);
    background: #ffffff;
    overflow: hidden;
}

.jvk-table {
    width: 100%;
    margin-bottom: 0;
    font-size: var(--jvk-font-size-sm);
}

    .jvk-table thead th {
        background: #f8fafc;
        color: var(--jvk-text-muted);
        font-weight: 700;
        border-bottom: 1px solid var(--jvk-border);
        white-space: nowrap;
    }

    .jvk-table tbody td {
        color: var(--jvk-text-main);
        vertical-align: middle;
    }

/* ---------- Filter ---------- */
.jvk-filter-panel {
    background: #ffffff;
    border: 1px solid var(--jvk-border);
    border-radius: var(--jvk-radius-lg);
    padding: 1rem;
    box-shadow: var(--jvk-shadow-sm);
}

.jvk-filter-label {
    font-size: var(--jvk-font-size-xs);
    font-weight: 700;
    color: var(--jvk-text-muted);
    margin-bottom: 0.25rem;
}

/* ---------- Utilities ---------- */
.jvk-text-muted {
    color: var(--jvk-text-muted) !important;
}

.jvk-text-main {
    color: var(--jvk-text-main) !important;
}

.jvk-soft-success {
    background: var(--jvk-success-soft);
}

.jvk-soft-warning {
    background: var(--jvk-warning-soft);
}

.jvk-soft-danger {
    background: var(--jvk-danger-soft);
}

.jvk-soft-info {
    background: var(--jvk-info-soft);
}
