@import "https://fonts.googleapis.com/css2?family=Outfit:wght@300;400;500;600;700;800&family=Plus+Jakarta+Sans:wght@300;400;500;600;700;800&display=swap";:root{--font-primary:"Outfit", "Plus Jakarta Sans", system-ui, sans-serif;--bg-main:#0a0b10;--bg-card:#121420a6;--bg-input:#1e203280;--border-card:#ffffff14;--border-glow:#8b5cf659;--color-primary:#8b5cf6;--color-primary-glow:#8b5cf680;--color-secondary:#3b82f6;--color-accent:#10b981;--color-danger:#ef4444;--text-primary:#f3f4f6;--text-secondary:#9ca3af;--text-muted:#6b7280;--shadow-sm:0 2px 8px #0000004d;--shadow-md:0 8px 30px #0006;--shadow-lg:0 16px 40px #00000080;--shadow-glow:0 0 25px #8b5cf633;--radius-sm:8px;--radius-md:16px;--radius-lg:24px;--radius-full:9999px;--transition-fast:.2s ease;--transition-normal:.3s cubic-bezier(.4, 0, .2, 1)}*{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font-primary);background-color:var(--bg-main);color:var(--text-primary);background-image:radial-gradient(at 0 0,#6366f11f 0,#0000 50%),radial-gradient(at 100% 0,#8b5cf626 0,#0000 50%),radial-gradient(at 50% 100%,#3b82f614 0,#0000 50%);background-attachment:fixed;min-height:100vh;overflow-x:hidden}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--bg-main)}::-webkit-scrollbar-thumb{border-radius:var(--radius-full);background:#ffffff1a}::-webkit-scrollbar-thumb:hover{background:var(--color-primary-glow)}.app-container{flex-direction:column;min-height:100vh;display:flex}.main-content{flex-grow:1;width:100%;max-width:1200px;margin:0 auto;padding:2rem 1.5rem}.navbar{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--border-card);z-index:100;background:#0a0b10b3;justify-content:space-between;align-items:center;padding:1.25rem 2rem;display:flex;position:sticky;top:0}.nav-brand{background:linear-gradient(135deg, var(--text-primary) 30%, var(--color-primary) 100%);-webkit-text-fill-color:transparent;cursor:pointer;-webkit-background-clip:text;align-items:center;gap:.5rem;font-size:1.5rem;font-weight:800;display:flex}.nav-links{gap:1rem;display:flex}.btn{font-family:var(--font-primary);border-radius:var(--radius-md);cursor:pointer;transition:var(--transition-fast);border:1px solid #0000;justify-content:center;align-items:center;gap:.5rem;padding:.65rem 1.25rem;font-size:.95rem;font-weight:600;text-decoration:none;display:inline-flex}.btn-primary{background:linear-gradient(135deg, var(--color-primary) 0%, #7c3aed 100%);color:#fff;box-shadow:0 4px 14px #7c3aed4d}.btn-primary:hover{box-shadow:0 6px 20px #7c3aed80, var(--shadow-glow);transform:translateY(-2px)}.btn-secondary{color:var(--text-primary);border-color:var(--border-card);background:#ffffff0d}.btn-secondary:hover{background:#ffffff1a;border-color:#fff3}.btn-danger{color:var(--color-danger);background:#ef44441a;border-color:#ef444433}.btn-danger:hover{background:var(--color-danger);color:#fff;box-shadow:0 4px 14px #ef44444d}.glass-card{background:var(--bg-card);-webkit-backdrop-filter:blur(20px);border:1px solid var(--border-card);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);transition:var(--transition-normal);padding:2rem}.glass-card:hover{box-shadow:var(--shadow-lg), 0 0 40px #8b5cf60d;border-color:#8b5cf633}.form-group{flex-direction:column;gap:.5rem;margin-bottom:1.5rem;display:flex}.form-label{color:var(--text-secondary);font-size:.9rem;font-weight:500}.form-input,.form-select{background:var(--bg-input);border:1px solid var(--border-card);border-radius:var(--radius-md);width:100%;color:var(--text-primary);font-family:var(--font-primary);transition:var(--transition-fast);outline:none;padding:.8rem 1.2rem;font-size:1rem}.form-input:focus,.form-select:focus{border-color:var(--color-primary);background:#1e2032b3;box-shadow:0 0 0 3px #8b5cf640}.search-container{max-width:600px;margin:2rem auto;position:relative}.search-input-wrapper{position:relative}.search-input{border:2px solid var(--border-card);border-radius:var(--radius-full);width:100%;color:var(--text-primary);font-family:var(--font-primary);transition:var(--transition-normal);box-shadow:var(--shadow-md);background:#121420cc;outline:none;padding:1.1rem 1.5rem 1.1rem 3.5rem;font-size:1.15rem;font-weight:500}.search-input:focus{border-color:var(--color-primary);box-shadow:var(--shadow-lg), 0 0 30px #8b5cf633}.search-icon{color:var(--text-muted);pointer-events:none;width:1.5rem;height:1.5rem;position:absolute;top:50%;left:1.3rem;transform:translateY(-50%)}.suggestions-box{-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border:1px solid var(--border-card);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);z-index:50;background:#0f111cf2;max-height:250px;padding:.5rem;position:absolute;top:calc(100% + 8px);left:0;right:0;overflow-y:auto}.suggestion-item{border-radius:var(--radius-sm);cursor:pointer;transition:var(--transition-fast);justify-content:space-between;align-items:center;padding:.75rem 1rem;display:flex}.suggestion-item:hover{background:#8b5cf626}.suggestion-item .student-name{color:var(--text-primary);font-weight:600}.suggestion-item .student-nisn{color:var(--text-secondary);border-radius:var(--radius-full);background:#ffffff14;padding:.15rem .5rem;font-size:.85rem}.table-wrapper{border-radius:var(--radius-md);border:1px solid var(--border-card);background:#0f111c66;overflow-x:auto}.data-table{border-collapse:collapse;text-align:left;width:100%}.data-table th{text-transform:uppercase;letter-spacing:.05em;color:var(--text-secondary);border-bottom:1px solid var(--border-card);background:#121420e6;padding:1rem 1.25rem;font-size:.85rem;font-weight:600}.data-table td{border-bottom:1px solid var(--border-card);color:var(--text-primary);padding:1rem 1.25rem;font-size:.95rem}.data-table tr:last-child td{border-bottom:none}.data-table tr:hover td{background:#ffffff05}.badge{border-radius:var(--radius-full);text-transform:uppercase;padding:.25rem .65rem;font-size:.75rem;font-weight:600;display:inline-flex}.badge-rapor{color:#60a5fa;background:#3b82f626}.badge-sertifikat{color:#a78bfa;background:#8b5cf626}.badge-surat{color:#34d399;background:#10b98126}.badge-umum{color:var(--text-secondary);background:#ffffff1a}.tabs{border-bottom:1px solid var(--border-card);gap:.5rem;margin-bottom:2rem;padding-bottom:.5rem;display:flex}.tab-btn{color:var(--text-secondary);font-family:var(--font-primary);cursor:pointer;border-radius:var(--radius-md);transition:var(--transition-fast);background:0 0;border:none;padding:.75rem 1.25rem;font-size:1rem;font-weight:600}.tab-btn:hover{color:var(--text-primary);background:#ffffff0a}.tab-btn.active{color:var(--color-primary);background:#8b5cf61a}.dashboard-grid{grid-template-columns:1fr;gap:2rem;display:grid}@media (width>=768px){.dashboard-grid{grid-template-columns:1fr 2fr}.grid-2col{grid-template-columns:1fr 1fr;gap:1.5rem;display:grid}}.drop-zone{border-radius:var(--radius-md);text-align:center;cursor:pointer;transition:var(--transition-normal);background:#1214204d;border:2px dashed #8b5cf64d;flex-direction:column;align-items:center;gap:.75rem;padding:3rem 2rem;display:flex}.drop-zone:hover,.drop-zone.active{border-color:var(--color-primary);background:#8b5cf60d}.drop-zone-icon{width:3rem;height:3rem;color:var(--color-primary)}.footer{text-align:center;border-top:1px solid var(--border-card);color:var(--text-muted);padding:2rem;font-size:.9rem}.alert{border-radius:var(--radius-md);align-items:center;gap:.75rem;margin-bottom:1.5rem;padding:1rem 1.25rem;font-size:.95rem;font-weight:500;display:flex}.alert-success{color:#34d399;background:#10b9811f;border:1px solid #10b98133}.alert-error{color:#f87171;background:#ef44441f;border:1px solid #ef444433}.hero{text-align:center;padding:3rem 1rem 1.5rem}.hero h1{letter-spacing:-.025em;background:linear-gradient(to right, #fff 40%, var(--color-primary) 100%);-webkit-text-fill-color:transparent;-webkit-background-clip:text;margin-bottom:1rem;font-size:2.75rem;font-weight:800}.hero p{color:var(--text-secondary);max-width:600px;margin:0 auto;font-size:1.15rem}.student-profile{flex-direction:column;gap:1.5rem;margin-top:2rem;display:flex}.profile-header{border-bottom:1px solid var(--border-card);justify-content:space-between;align-items:flex-start;padding-bottom:1.5rem;display:flex}.profile-title h2{font-size:1.75rem;font-weight:700}.profile-meta{color:var(--text-secondary);gap:1rem;margin-top:.5rem;font-size:.95rem;display:flex}.file-grid{grid-template-columns:1fr;gap:1rem;display:grid}@media (width>=768px){.file-grid{grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}}.file-card{border:1px solid var(--border-card);border-radius:var(--radius-md);transition:var(--transition-fast);background:#ffffff05;flex-direction:column;justify-content:space-between;gap:1.25rem;padding:1.25rem;display:flex}.file-card:hover{background:#ffffff0a;border-color:#8b5cf640;transform:translateY(-2px)}.file-info{align-items:flex-start;gap:1rem;display:flex}.file-icon-wrapper{border-radius:var(--radius-md);color:var(--color-primary);background:#8b5cf61a;justify-content:center;align-items:center;padding:.75rem;display:flex}.file-details{flex-direction:column;gap:.25rem;min-width:0;display:flex}.file-name{white-space:nowrap;text-overflow:ellipsis;font-size:1rem;font-weight:600;overflow:hidden}.file-meta-info{color:var(--text-muted);font-size:.8rem}.toggle-container{border-radius:var(--radius-md);border:1px solid var(--border-card);background:#ffffff0d;width:100%;margin-bottom:1.5rem;padding:.25rem;display:inline-flex}.toggle-btn{color:var(--text-secondary);font-family:var(--font-primary);cursor:pointer;border-radius:calc(var(--radius-md) - 4px);transition:var(--transition-fast);text-align:center;background:0 0;border:none;flex:1;padding:.5rem;font-size:.95rem;font-weight:600}.toggle-btn:hover{color:var(--text-primary)}.toggle-btn.active{background:var(--color-primary);color:#fff;box-shadow:var(--shadow-sm)}.bulk-textarea{resize:vertical;min-height:150px;font-family:monospace;font-size:.9rem;line-height:1.5}.bulk-instruction-card{border-left:3px solid var(--color-primary);border-radius:0 var(--radius-md) var(--radius-md) 0;color:var(--text-secondary);background:#ffffff05;margin-bottom:1.5rem;padding:1rem;font-size:.85rem}.bulk-instruction-card ul{flex-direction:column;gap:.2rem;margin-top:.25rem;margin-left:1.25rem;display:flex}.bulk-file-row{border-bottom:1px solid var(--border-card);grid-template-columns:1.5fr 1fr 1fr .8fr auto;align-items:center;gap:1rem;padding:1rem;display:grid}@media (width<=768px){.bulk-file-row{grid-template-columns:1fr;gap:.5rem;padding:1.25rem 1rem}}.bulk-status-badge{border-radius:var(--radius-full);text-align:center;justify-content:center;padding:.25rem .6rem;font-size:.75rem;font-weight:600;display:inline-flex}.status-waiting{color:var(--text-secondary);background:#ffffff1a}.status-uploading{color:#60a5fa;background:#3b82f626;animation:1.5s infinite pulse}.status-success{color:#34d399;background:#10b98126}.status-error{color:#f87171;background:#ef444426}.matching-status{margin-top:.25rem;font-size:.8rem;display:block}.matching-status.matched{color:#34d399}.matching-status.unmatched{color:#fbbf24}.progress-bar-container{border-radius:var(--radius-full);background:#ffffff0d;width:100%;height:6px;margin-top:.5rem;overflow:hidden}.progress-bar-fill{background:linear-gradient(90deg, var(--color-primary), var(--color-secondary));height:100%;transition:width .3s}@keyframes pulse{0%,to{opacity:1}50%{opacity:.6}}.confirm-overlay{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:1000;background:#0a0b10bf;justify-content:center;align-items:center;animation:.2s fadeIn;display:flex;position:fixed;inset:0}.confirm-modal{background:var(--bg-card);-webkit-backdrop-filter:blur(20px);border:1px solid var(--border-card);border-radius:var(--radius-lg);width:90%;max-width:480px;box-shadow:var(--shadow-lg), 0 0 50px #8b5cf61a;padding:2rem;animation:.25s cubic-bezier(.34,1.56,.64,1) scaleUp}.confirm-header{margin-bottom:1rem}.confirm-title{color:var(--text-primary);align-items:center;gap:.5rem;font-size:1.35rem;font-weight:700;display:flex}.confirm-title.destructive{color:#f87171}.confirm-body{color:var(--text-secondary);margin-bottom:2rem;font-size:.95rem;line-height:1.6}.confirm-actions{justify-content:flex-end;gap:.75rem;display:flex}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes scaleUp{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}
