@import"https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@300;400;500;600;700;800&display=swap";@tailwind base;@tailwind components;@tailwind utilities;:root{--primary: #4361ee;--primary-dark: #3a0ca3;--accent: #f72585;--success: #06d6a0;--warning: #ffd166;--danger: #ef233c;--bg: #f8f9fe;--surface: #ffffff;--border: #e8ecff;--text: #0f0e17;--text-muted: #6b7280;--sidebar-width: 260px}*{box-sizing:border-box}body{font-family:Plus Jakarta Sans,sans-serif;background:var(--bg);color:var(--text);margin:0;-webkit-font-smoothing:antialiased}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#d1d5ef;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#a0a8d4}.card{background:var(--surface);border-radius:16px;border:1px solid var(--border);padding:24px}.badge{display:inline-flex;align-items:center;gap:4px;padding:3px 10px;border-radius:20px;font-size:12px;font-weight:600;text-transform:capitalize}.badge-paid{background:#d1fae5;color:#065f46}.badge-pending{background:#fef3c7;color:#92400e}.badge-overdue{background:#fee2e2;color:#991b1b}.badge-partial{background:#dbeafe;color:#1e40af}.badge-active{background:#d1fae5;color:#065f46}.badge-inactive{background:#f3f4f6;color:#374151}.badge-waived{background:#f0fdf4;color:#166534}.auth-bg{background:linear-gradient(135deg,#0f0e17,#1a0661 40%,#3a0ca3);min-height:100vh;position:relative;overflow:hidden}.auth-bg:before{content:"";position:absolute;width:600px;height:600px;border-radius:50%;background:radial-gradient(circle,rgba(247,37,133,.15) 0%,transparent 70%);top:-200px;right:-200px;animation:pulse-slow 6s ease-in-out infinite}.auth-bg:after{content:"";position:absolute;width:400px;height:400px;border-radius:50%;background:radial-gradient(circle,rgba(67,97,238,.2) 0%,transparent 70%);bottom:-100px;left:-100px;animation:pulse-slow 8s ease-in-out infinite reverse}@keyframes pulse-slow{0%,to{transform:scale(1);opacity:.8}50%{transform:scale(1.1);opacity:1}}.sidebar{width:var(--sidebar-width);height:100vh;background:linear-gradient(180deg,#0f0e17,#1a0661);position:fixed;left:0;top:0;overflow-y:auto;z-index:50;transition:transform .3s ease}.sidebar-link{display:flex;align-items:center;gap:10px;padding:11px 20px;border-radius:10px;color:#ffffffa6;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s;text-decoration:none;margin:2px 12px}.sidebar-link:hover{background:#ffffff14;color:#fff}.sidebar-link.active{background:linear-gradient(135deg,#4361ee99,#3a0ca366);color:#fff;box-shadow:0 4px 15px #4361ee4d}.main-content{margin-left:var(--sidebar-width);min-height:100vh;padding:0}@media (max-width: 768px){.sidebar{transform:translate(-100%)}.sidebar.open{transform:translate(0)}.main-content{margin-left:0}}.stat-card{background:#fff;border-radius:16px;padding:20px 24px;border:1px solid var(--border);transition:all .2s;position:relative;overflow:hidden}.stat-card:hover{transform:translateY(-2px);box-shadow:0 8px 30px #4361ee1a}.stat-card .icon-wrap{width:48px;height:48px;border-radius:12px;display:flex;align-items:center;justify-content:center}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse}thead th{padding:12px 16px;text-align:left;font-size:12px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;background:#f8f9fe;border-bottom:1px solid var(--border)}tbody td{padding:14px 16px;font-size:14px;border-bottom:1px solid #f0f2ff;vertical-align:middle}tbody tr:hover{background:#f8f9fe}tbody tr:last-child td{border-bottom:none}.btn{display:inline-flex;align-items:center;gap:6px;padding:9px 18px;border-radius:10px;font-size:14px;font-weight:600;cursor:pointer;border:none;transition:all .2s;text-decoration:none;white-space:nowrap}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:linear-gradient(135deg,#4361ee,#3a0ca3);color:#fff}.btn-primary:hover:not(:disabled){box-shadow:0 4px 15px #4361ee66;transform:translateY(-1px)}.btn-danger{background:#fee2e2;color:#991b1b}.btn-danger:hover{background:#fecaca}.btn-ghost{background:transparent;color:var(--text-muted);border:1px solid var(--border)}.btn-ghost:hover{background:#f0f2ff;color:var(--primary)}.btn-success{background:#d1fae5;color:#065f46}.btn-success:hover{background:#a7f3d0}.btn-sm{padding:6px 12px;font-size:12px;border-radius:8px}.form-group{display:flex;flex-direction:column;gap:6px}.form-label{font-size:13px;font-weight:600;color:var(--text)}.form-input{padding:10px 14px;border:1.5px solid var(--border);border-radius:10px;font-size:14px;font-family:inherit;outline:none;transition:all .2s;background:#fff;color:var(--text)}.form-input:focus{border-color:var(--primary);box-shadow:0 0 0 3px #4361ee1a}.form-select{padding:10px 14px;border:1.5px solid var(--border);border-radius:10px;font-size:14px;font-family:inherit;outline:none;background:#fff;cursor:pointer}.form-select:focus{border-color:var(--primary);box-shadow:0 0 0 3px #4361ee1a}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f0e1799;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:100;display:flex;align-items:center;justify-content:center;padding:16px;animation:fadeIn .15s ease}.modal{background:#fff;border-radius:20px;padding:28px;width:100%;max-width:560px;max-height:90vh;overflow-y:auto;animation:slideUp .2s ease;box-shadow:0 25px 60px #0003}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.page-header{padding:24px 32px 0;display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}.page-title{font-size:22px;font-weight:800;color:var(--text);margin:0}.page-subtitle{font-size:14px;color:var(--text-muted);margin:4px 0 0}.skeleton{background:linear-gradient(90deg,#f0f2ff 25%,#e8ecff,#f0f2ff 75%);background-size:200% 100%;animation:shimmer 1.5s infinite;border-radius:8px}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.progress-bar{height:6px;border-radius:3px;background:#e8ecff;overflow:hidden}.progress-fill{height:100%;border-radius:3px;transition:width .5s ease}
