@charset "UTF-8";:root{--color-primary: #0d6efd;--color-primary-dark: #0a58ca;--color-secondary: #6c757d;--color-muhammadiyah: #1e3a5f;--color-muhammadiyah-light: #2563a8;--color-accent: #f59e0b;--color-excellent: #16a34a;--color-good: #2563eb;--color-fair: #d97706;--color-poor: #dc2626;--color-bg: #f0f4f8;--color-surface: #ffffff;--color-border: #e2e8f0;--color-text-primary: #1e293b;--color-text-secondary: #64748b;--color-text-muted: #94a3b8;--sidebar-width: 260px;--sidebar-bg: var(--color-muhammadiyah);--sidebar-text: #e2e8f0;--sidebar-active-bg: rgba(255,255,255,.12);--sidebar-hover-bg: rgba(255,255,255,.08);--topbar-height: 64px;--font-family: "Inter", -apple-system, BlinkMacSystemFont, sans-serif;--font-size-base: 14px;--font-size-sm: 12px;--font-size-lg: 16px;--font-size-xl: 20px;--font-size-2xl: 24px;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-8: 32px;--radius-sm: 6px;--radius: 10px;--radius-lg: 16px;--shadow-sm: 0 1px 3px rgba(0,0,0,.08);--shadow: 0 4px 12px rgba(0,0,0,.08);--shadow-lg: 0 8px 24px rgba(0,0,0,.12)}*,*:before,*:after{box-sizing:border-box}html,body{height:100%;margin:0;padding:0;font-family:var(--font-family);font-size:var(--font-size-base);color:var(--color-text-primary);background:var(--color-bg);-webkit-font-smoothing:antialiased}.app-shell{display:flex;height:100vh;overflow:hidden}.main-content{flex:1;display:flex;flex-direction:column;margin-left:var(--sidebar-width);overflow:hidden}.page-content{flex:1;overflow-y:auto;padding:var(--space-6);margin-top:var(--topbar-height)}.card{background:var(--color-surface);border-radius:var(--radius);box-shadow:var(--shadow-sm);border:1px solid var(--color-border);overflow:hidden}.card-header{padding:var(--space-4) var(--space-6);border-bottom:1px solid var(--color-border);display:flex;align-items:center;justify-content:space-between;font-weight:600;font-size:var(--font-size-lg);color:var(--color-text-primary)}.card-body{padding:var(--space-6)}.kpi-card{background:var(--color-surface);border-radius:var(--radius);padding:var(--space-5);border:1px solid var(--color-border);box-shadow:var(--shadow-sm);position:relative;overflow:hidden;transition:transform .2s,box-shadow .2s}.kpi-card:hover{transform:translateY(-2px);box-shadow:var(--shadow)}.kpi-card .kpi-icon{width:48px;height:48px;border-radius:var(--radius);display:flex;align-items:center;justify-content:center;font-size:20px;margin-bottom:var(--space-3)}.kpi-card .kpi-value{font-size:28px;font-weight:700;line-height:1;margin-bottom:var(--space-1)}.kpi-card .kpi-label{font-size:var(--font-size-sm);color:var(--color-text-secondary);font-weight:500}.kpi-card .kpi-trend{display:flex;align-items:center;gap:4px;font-size:var(--font-size-sm);margin-top:var(--space-2)}.kpi-card .kpi-trend.up{color:var(--color-excellent)}.kpi-card .kpi-trend.down{color:var(--color-poor)}.kpi-card .kpi-trend.stable{color:var(--color-text-muted)}.bg-blue{background:#eff6ff}.bg-blue .kpi-icon{background:#dbeafe;color:#2563eb}.bg-blue .kpi-value{color:#1d4ed8}.bg-green{background:#f0fdf4}.bg-green .kpi-icon{background:#dcfce7;color:#16a34a}.bg-green .kpi-value{color:#15803d}.bg-amber{background:#fffbeb}.bg-amber .kpi-icon{background:#fef3c7;color:#d97706}.bg-amber .kpi-value{color:#b45309}.bg-red{background:#fef2f2}.bg-red .kpi-icon{background:#fee2e2;color:#dc2626}.bg-red .kpi-value{color:#b91c1c}.bg-purple{background:#faf5ff}.bg-purple .kpi-icon{background:#ede9fe;color:#7c3aed}.bg-purple .kpi-value{color:#6d28d9}.bg-teal{background:#f0fdfa}.bg-teal .kpi-icon{background:#ccfbf1;color:#0d9488}.bg-teal .kpi-value{color:#0f766e}.bg-indigo{background:#eef2ff}.bg-indigo .kpi-icon{background:#e0e7ff;color:#4338ca}.bg-indigo .kpi-value{color:#3730a3}.bg-emerald{background:#ecfdf5}.bg-emerald .kpi-icon{background:#d1fae5;color:#059669}.bg-emerald .kpi-value{color:#047857}.table-container{overflow-x:auto;border-radius:var(--radius);border:1px solid var(--color-border)}table{width:100%;border-collapse:collapse;font-size:var(--font-size-base)}table thead{background:#f8fafc}table thead th{padding:12px 16px;text-align:left;font-weight:600;color:var(--color-text-secondary);font-size:var(--font-size-sm);text-transform:uppercase;letter-spacing:.5px;border-bottom:2px solid var(--color-border);white-space:nowrap}table tbody tr{transition:background .15s;border-bottom:1px solid var(--color-border)}table tbody tr:last-child{border-bottom:none}table tbody tr:hover{background:#f8fafc}table tbody tr td{padding:12px 16px;color:var(--color-text-primary);vertical-align:middle}.badge{display:inline-flex;align-items:center;padding:3px 10px;border-radius:999px;font-size:12px;font-weight:600;line-height:1.5}.badge.badge-success{background:#dcfce7;color:#15803d}.badge.badge-info{background:#dbeafe;color:#1d4ed8}.badge.badge-warning{background:#fef3c7;color:#b45309}.badge.badge-danger{background:#fee2e2;color:#b91c1c}.badge.badge-secondary{background:#f1f5f9;color:#475569}.badge.badge-purple{background:#ede9fe;color:#6d28d9}.grade-unggul{background:#dcfce7;color:#15803d}.grade-baik-sekali{background:#dbeafe;color:#1d4ed8}.grade-baik{background:#fef3c7;color:#b45309}.grade-c{background:#fee2e2;color:#b91c1c}.grade-belum{background:#f1f5f9;color:#64748b}.form-group{margin-bottom:var(--space-4)}.form-group label{display:block;font-size:var(--font-size-sm);font-weight:600;color:var(--color-text-secondary);margin-bottom:var(--space-1);text-transform:uppercase;letter-spacing:.4px}.form-group input,.form-group select,.form-group textarea{width:100%;padding:10px 14px;border:1px solid var(--color-border);border-radius:var(--radius-sm);font-size:var(--font-size-base);font-family:var(--font-family);color:var(--color-text-primary);background:var(--color-surface);transition:border-color .15s,box-shadow .15s;outline:none}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px #0d6efd1f}.form-group input::placeholder,.form-group select::placeholder,.form-group textarea::placeholder{color:var(--color-text-muted)}.form-group textarea{resize:vertical;min-height:80px}.btn{display:inline-flex;align-items:center;gap:var(--space-2);padding:9px 18px;border-radius:var(--radius-sm);font-size:var(--font-size-base);font-weight:600;cursor:pointer;border:1px solid transparent;transition:all .15s;text-decoration:none;white-space:nowrap}.btn:disabled{opacity:.6;cursor:not-allowed}.btn.btn-sm{padding:6px 12px;font-size:var(--font-size-sm)}.btn.btn-lg{padding:12px 24px;font-size:var(--font-size-lg)}.btn.btn-primary{background:var(--color-primary);color:#fff;border-color:var(--color-primary)}.btn.btn-primary:hover:not(:disabled){background:var(--color-primary-dark);border-color:var(--color-primary-dark)}.btn.btn-secondary{background:var(--color-surface);color:var(--color-text-primary);border-color:var(--color-border)}.btn.btn-secondary:hover:not(:disabled){background:#f8fafc}.btn.btn-success{background:#16a34a;color:#fff;border-color:#16a34a}.btn.btn-success:hover:not(:disabled){background:#15803d}.btn.btn-danger{background:#dc2626;color:#fff;border-color:#dc2626}.btn.btn-danger:hover:not(:disabled){background:#b91c1c}.btn.btn-outline-primary{background:transparent;color:var(--color-primary);border-color:var(--color-primary)}.btn.btn-outline-primary:hover:not(:disabled){background:var(--color-primary);color:#fff}.btn.btn-muhammadiyah{background:var(--color-muhammadiyah);color:#fff}.btn.btn-muhammadiyah:hover:not(:disabled){background:var(--color-muhammadiyah-light)}.progress{background:#e2e8f0;border-radius:999px;overflow:hidden;height:8px}.progress .progress-bar{height:100%;border-radius:999px;transition:width .6s ease;background:var(--color-primary)}.progress .progress-bar.progress-excellent{background:var(--color-excellent)}.progress .progress-bar.progress-good{background:#2563eb}.progress .progress-bar.progress-warning{background:var(--color-fair)}.progress .progress-bar.progress-danger{background:var(--color-poor)}.page-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-6)}.page-header h1{margin:0;font-size:var(--font-size-2xl);font-weight:700}.page-header .page-subtitle{margin:4px 0 0;font-size:var(--font-size-sm);color:var(--color-text-secondary)}.grid{display:grid;gap:var(--space-4)}.grid-2{grid-template-columns:repeat(2,1fr)}.grid-3{grid-template-columns:repeat(3,1fr)}.grid-4{grid-template-columns:repeat(4,1fr)}.flex{display:flex}.flex-1{flex:1}.items-center{align-items:center}.justify-between{justify-content:space-between}.gap-2{gap:var(--space-2)}.gap-4{gap:var(--space-4)}.text-right{text-align:right}.text-center{text-align:center}.text-sm{font-size:var(--font-size-sm)}.text-muted{color:var(--color-text-secondary)}.fw-600{font-weight:600}.fw-700{font-weight:700}.mt-4{margin-top:var(--space-4)}.mt-6{margin-top:var(--space-6)}.mb-4{margin-bottom:var(--space-4)}.mb-6{margin-bottom:var(--space-6)}.alert{padding:var(--space-3) var(--space-4);border-radius:var(--radius-sm);display:flex;align-items:flex-start;gap:var(--space-3);font-size:var(--font-size-sm)}.alert.alert-warning{background:#fffbeb;border:1px solid #fbbf24;color:#92400e}.alert.alert-danger{background:#fef2f2;border:1px solid #fca5a5;color:#991b1b}.alert.alert-info{background:#eff6ff;border:1px solid #93c5fd;color:#1e40af}.loading-spinner{display:flex;align-items:center;justify-content:center;padding:var(--space-8);color:var(--color-text-muted)}.loading-spinner i{animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@media (max-width: 1024px){.main-content{margin-left:0}.page-content{padding:var(--space-4)}.card-header{padding:var(--space-3) var(--space-4);font-size:15px}.card-body{padding:var(--space-4)}.page-header{flex-direction:column;align-items:flex-start;gap:var(--space-3);margin-bottom:var(--space-4)}.page-header h1{font-size:18px}}@media (max-width: 768px){.grid-4,.grid-3{grid-template-columns:repeat(2,1fr)}.grid-2{grid-template-columns:1fr}.page-content{padding:var(--space-3)}.table-container,.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}.kpi-card{padding:var(--space-4)}.kpi-card .kpi-value{font-size:22px}.btn-block-mobile{width:100%;justify-content:center}}@media (max-width: 480px){.grid-4,.grid-3,.grid-2{grid-template-columns:1fr}.page-content{padding:12px}}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}
