:root{--primary-50: #eff6ff;--primary-100: #dbeafe;--primary-200: #bfdbfe;--primary-300: #93c5fd;--primary-400: #60a5fa;--primary-500: #3b82f6;--primary-600: #2563eb;--primary-700: #1d4ed8;--primary-800: #1e40af;--primary-900: #1e3a8a;--gray-50: #f8fafc;--gray-100: #f1f5f9;--gray-200: #e2e8f0;--gray-300: #cbd5e1;--gray-400: #94a3b8;--gray-500: #64748b;--gray-600: #475569;--gray-700: #334155;--gray-800: #1e293b;--gray-900: #0f172a;--gray-950: #020617;--success-50: #f0fdf4;--success-500: #22c55e;--success-600: #16a34a;--danger-50: #fef2f2;--danger-500: #ef4444;--danger-600: #dc2626;--warning-50: #fffbeb;--warning-500: #f59e0b;--purple-500: #8b5cf6;--purple-600: #7c3aed;--sidebar-bg: var(--gray-900);--sidebar-width: 260px;--sidebar-collapsed-width: 70px;--topbar-height: 64px;--surface-bg: var(--gray-50);--card-bg: #ffffff;--card-border: var(--gray-200);--font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, .05);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .1), 0 2px 4px -2px rgba(0, 0, 0, .1);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .1), 0 4px 6px -4px rgba(0, 0, 0, .1);--shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, .1), 0 8px 10px -6px rgba(0, 0, 0, .1);--radius-sm: 6px;--radius-md: 10px;--radius-lg: 14px;--radius-xl: 20px;--transition-fast: .15s cubic-bezier(.4, 0, .2, 1);--transition-normal: .25s cubic-bezier(.4, 0, .2, 1);--transition-slow: .35s cubic-bezier(.4, 0, .2, 1)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body{height:100%;font-family:var(--font-family);font-size:15px;line-height:1.6;color:var(--gray-800);background:var(--surface-bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#app{min-height:100%}a{color:var(--primary-600);text-decoration:none}button{font-family:inherit;cursor:pointer;border:none;outline:none}input{font-family:inherit;outline:none}.login-wrapper{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,var(--gray-900) 0%,#1a1a3e 40%,#2d1b69 70%,var(--gray-900) 100%);padding:20px;position:relative;overflow:hidden}.login-wrapper:before{content:"";position:absolute;top:-50%;left:-50%;width:200%;height:200%;background:radial-gradient(circle at 30% 50%,rgba(59,130,246,.08) 0%,transparent 50%),radial-gradient(circle at 70% 30%,rgba(139,92,246,.06) 0%,transparent 50%);animation:loginBgPulse 8s ease-in-out infinite alternate}@keyframes loginBgPulse{0%{transform:translate(0) scale(1)}to{transform:translate(-2%,1%) scale(1.02)}}.login-card{position:relative;width:100%;max-width:420px;background:#ffffff0f;backdrop-filter:blur(24px);-webkit-backdrop-filter:blur(24px);border:1px solid rgba(255,255,255,.1);border-radius:var(--radius-xl);padding:44px 36px;box-shadow:0 25px 50px #0006;animation:loginCardIn .6s cubic-bezier(.16,1,.3,1) both}@keyframes loginCardIn{0%{opacity:0;transform:translateY(30px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}.login-logo{text-align:center;margin-bottom:32px}.login-logo-icon{width:56px;height:56px;background:linear-gradient(135deg,var(--primary-500),var(--purple-600));border-radius:16px;display:inline-flex;align-items:center;justify-content:center;margin-bottom:16px;box-shadow:0 8px 24px #3b82f64d}.login-logo-icon svg{width:28px;height:28px;color:#fff}.login-logo h1{font-size:1.5rem;font-weight:700;color:#fff;letter-spacing:-.02em}.login-logo p{font-size:.875rem;color:#ffffff8c;margin-top:4px}.login-form{display:flex;flex-direction:column;gap:20px}.form-group{display:flex;flex-direction:column;gap:6px}.form-group label{font-size:.8rem;font-weight:600;color:#ffffffb3;text-transform:uppercase;letter-spacing:.05em}.form-group .input-wrapper{position:relative}.form-group .input-icon{position:absolute;left:14px;top:50%;transform:translateY(-50%);color:#ffffff59;pointer-events:none;width:18px;height:18px}.form-group input{width:100%;padding:13px 14px 13px 44px;background:#ffffff12;border:1px solid rgba(255,255,255,.12);border-radius:var(--radius-md);color:#fff;font-size:.95rem;transition:border-color var(--transition-fast),background var(--transition-fast),box-shadow var(--transition-fast)}.form-group input::placeholder{color:#ffffff4d}.form-group input:focus{background:#ffffff1a;border-color:var(--primary-500);box-shadow:0 0 0 3px #3b82f626}.form-helper{font-size:.75rem;color:#fff6;line-height:1.4}.form-helper svg{width:12px;height:12px;vertical-align:-2px;margin-right:2px}.btn-login{width:100%;padding:14px;background:linear-gradient(135deg,var(--primary-600),var(--primary-700));color:#fff;font-size:.95rem;font-weight:600;border-radius:var(--radius-md);transition:all var(--transition-fast);position:relative;overflow:hidden;margin-top:4px}.btn-login:hover:not(:disabled){background:linear-gradient(135deg,var(--primary-500),var(--primary-600));box-shadow:0 6px 20px #3b82f659;transform:translateY(-1px)}.btn-login:active:not(:disabled){transform:translateY(0)}.btn-login:disabled{opacity:.6;cursor:not-allowed}.btn-login .spinner,.btn-spinner{display:inline-block;width:18px;height:18px;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:spin .6s linear infinite;vertical-align:middle;margin-right:8px}@keyframes spin{to{transform:rotate(360deg)}}.login-error{padding:12px 14px;background:#ef44441f;border:1px solid rgba(239,68,68,.25);border-radius:var(--radius-sm);color:#fca5a5;font-size:.85rem;display:none;animation:shakeIn .4s ease}.login-error.visible{display:block}@keyframes shakeIn{0%,to{transform:translate(0)}15%,45%,75%{transform:translate(-4px)}30%,60%{transform:translate(4px)}}.app-shell{display:flex;min-height:100vh}.sidebar-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);z-index:90;opacity:0;visibility:hidden;transition:all var(--transition-normal)}.sidebar-overlay.active{opacity:1;visibility:visible}.sidebar{width:var(--sidebar-width);background:var(--sidebar-bg);display:flex;flex-direction:column;position:fixed;top:0;left:0;bottom:0;z-index:100;transition:transform var(--transition-normal);overflow-y:auto;border-right:1px solid rgba(255,255,255,.06)}.sidebar-header{padding:24px 20px;border-bottom:1px solid rgba(255,255,255,.06);display:flex;align-items:center;gap:12px}.sidebar-logo{width:38px;height:38px;background:linear-gradient(135deg,var(--primary-500),var(--purple-600));border-radius:10px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.sidebar-logo svg{width:20px;height:20px;color:#fff}.sidebar-brand{display:flex;flex-direction:column}.sidebar-brand-name{font-size:1rem;font-weight:700;color:#fff;letter-spacing:-.01em;line-height:1.2}.sidebar-brand-sub{font-size:.7rem;color:var(--gray-500);text-transform:uppercase;letter-spacing:.06em}.sidebar-nav{padding:16px 12px;flex:1;display:flex;flex-direction:column;gap:2px}.nav-label{font-size:.65rem;font-weight:600;color:var(--gray-500);text-transform:uppercase;letter-spacing:.08em;padding:12px 12px 6px}.nav-item{display:flex;align-items:center;gap:12px;padding:11px 14px;border-radius:var(--radius-sm);color:var(--gray-400);font-size:.9rem;font-weight:500;transition:all var(--transition-fast);cursor:pointer;text-decoration:none;position:relative}.nav-item:hover{background:#ffffff0f;color:var(--gray-200)}.nav-item.active{background:#3b82f61f;color:var(--primary-400)}.nav-item.active:before{content:"";position:absolute;left:0;top:50%;transform:translateY(-50%);width:3px;height:20px;background:var(--primary-500);border-radius:0 3px 3px 0}.nav-item svg{width:20px;height:20px;flex-shrink:0;opacity:.8}.nav-item.active svg{opacity:1}.sidebar-footer{padding:16px 12px;border-top:1px solid rgba(255,255,255,.06)}.sidebar-user{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:var(--radius-sm);cursor:pointer;transition:background var(--transition-fast)}.sidebar-user:hover{background:#ffffff0f}.sidebar-user-avatar{width:34px;height:34px;border-radius:50%;background:linear-gradient(135deg,var(--primary-500),var(--purple-600));display:flex;align-items:center;justify-content:center;color:#fff;font-size:.8rem;font-weight:700;flex-shrink:0}.sidebar-user-info{flex:1;min-width:0}.sidebar-user-name{font-size:.85rem;font-weight:600;color:var(--gray-200);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar-user-role{font-size:.7rem;color:var(--gray-500)}.btn-logout{width:100%;margin-top:8px;padding:9px 14px;background:#ef44441a;color:#f87171;font-size:.8rem;font-weight:500;border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center;gap:8px;transition:all var(--transition-fast)}.btn-logout:hover{background:#ef444433}.btn-logout svg{width:16px;height:16px}.main-content{flex:1;margin-left:var(--sidebar-width);min-height:100vh}.topbar{height:var(--topbar-height);background:var(--card-bg);border-bottom:1px solid var(--card-border);display:flex;align-items:center;padding:0 28px;position:sticky;top:0;z-index:50;box-shadow:var(--shadow-sm)}.topbar-left{display:flex;align-items:center;gap:16px}.hamburger{display:none;width:38px;height:38px;align-items:center;justify-content:center;border-radius:var(--radius-sm);background:transparent;color:var(--gray-600);transition:background var(--transition-fast)}.hamburger:hover{background:var(--gray-100)}.hamburger svg{width:22px;height:22px}.topbar-title{font-size:1.15rem;font-weight:700;color:var(--gray-800);letter-spacing:-.01em}.topbar-right{margin-left:auto;display:flex;align-items:center;gap:12px}.page-content{padding:28px}.dashboard-greeting{margin-bottom:28px}.dashboard-greeting h2{font-size:1.5rem;font-weight:700;color:var(--gray-900);letter-spacing:-.02em}.dashboard-greeting p{color:var(--gray-500);font-size:.9rem;margin-top:2px}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:18px;margin-bottom:28px}.stat-card{background:var(--card-bg);border:1px solid var(--card-border);border-radius:var(--radius-lg);padding:22px;transition:all var(--transition-fast);position:relative;overflow:hidden}.stat-card:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}.stat-card:after{content:"";position:absolute;top:0;left:0;right:0;height:3px;border-radius:var(--radius-lg) var(--radius-lg) 0 0}.stat-card.blue:after{background:linear-gradient(90deg,var(--primary-500),var(--primary-400))}.stat-card.green:after{background:linear-gradient(90deg,var(--success-500),#4ade80)}.stat-card.purple:after{background:linear-gradient(90deg,var(--purple-500),#a78bfa)}.stat-card.amber:after{background:linear-gradient(90deg,var(--warning-500),#fbbf24)}.stat-card-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}.stat-card-icon{width:42px;height:42px;border-radius:10px;display:flex;align-items:center;justify-content:center}.stat-card.blue .stat-card-icon{background:var(--primary-50);color:var(--primary-600)}.stat-card.green .stat-card-icon{background:var(--success-50);color:var(--success-600)}.stat-card.purple .stat-card-icon{background:#f5f3ff;color:var(--purple-600)}.stat-card.amber .stat-card-icon{background:var(--warning-50);color:var(--warning-500)}.stat-card-icon svg{width:22px;height:22px}.stat-card-label{font-size:.8rem;font-weight:500;color:var(--gray-500);text-transform:uppercase;letter-spacing:.04em}.stat-card-value{font-size:1.75rem;font-weight:700;color:var(--gray-900);letter-spacing:-.02em;line-height:1.2}.stat-card-sub{font-size:.8rem;color:var(--gray-400);margin-top:4px}.period-tabs{display:flex;gap:4px;margin-bottom:24px;background:var(--gray-100);padding:4px;border-radius:var(--radius-md);width:fit-content}.period-tab{padding:8px 16px;border-radius:var(--radius-sm);font-size:.82rem;font-weight:500;color:var(--gray-500);background:transparent;transition:all var(--transition-fast)}.period-tab:hover{color:var(--gray-700)}.period-tab.active{background:var(--card-bg);color:var(--primary-600);box-shadow:var(--shadow-sm);font-weight:600}.data-section{background:var(--card-bg);border:1px solid var(--card-border);border-radius:var(--radius-lg);overflow:hidden;margin-bottom:24px}.data-section-header{padding:18px 22px;border-bottom:1px solid var(--card-border);display:flex;align-items:center;justify-content:space-between}.data-section-title{font-size:1rem;font-weight:600;color:var(--gray-800)}.data-table{width:100%;border-collapse:collapse}@media(max-width:768px){.data-table thead{display:none}.data-table,.data-table tbody,.data-table tr,.data-table td{display:block;width:100%}.data-table tr{padding:12px;border-bottom:1px solid var(--gray-100);position:relative}.data-table td{text-align:right;font-size:.9rem;position:relative;padding:4px 0 4px 50%}.data-table td:before{content:attr(data-label);position:absolute;left:0;width:50%;padding-left:0;font-weight:600;text-align:left;color:var(--gray-500);font-size:.8rem;text-transform:uppercase}.data-table td:first-child{text-align:left;padding-left:0;font-weight:700;font-size:1rem;color:var(--gray-900);margin-bottom:4px;border-bottom:1px solid var(--gray-50);padding-bottom:8px}.data-table td:first-child:before{display:none}}.data-table th{text-align:left;padding:12px 22px;font-size:.75rem;font-weight:600;color:var(--gray-500);text-transform:uppercase;letter-spacing:.05em;background:var(--gray-50);border-bottom:1px solid var(--card-border)}.data-table td{padding:14px 22px;font-size:.88rem;color:var(--gray-700);border-bottom:1px solid var(--gray-100)}.data-table tr:last-child td{border-bottom:none}.data-table tr:hover td{background:var(--gray-50)}.loading-container{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;color:var(--gray-400);gap:16px}.loading-spinner{width:40px;height:40px;border:3px solid var(--gray-200);border-top-color:var(--primary-500);border-radius:50%;animation:spin .7s linear infinite}.loading-text{font-size:.9rem;color:var(--gray-500)}.empty-state{text-align:center;padding:50px 20px;color:var(--gray-400)}.empty-state svg{width:48px;height:48px;margin-bottom:12px;opacity:.5}.empty-state p{font-size:.9rem}.page-fade-in{animation:pageFadeIn .4s cubic-bezier(.16,1,.3,1) both}@keyframes pageFadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.sidebar-overlay{display:none;position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;z-index:90;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.sidebar-overlay.active{display:block;animation:fadeIn .2s ease}.badge{display:inline-flex;align-items:center;padding:3px 8px;font-size:.72rem;font-weight:600;border-radius:20px}.badge.blue{background:var(--primary-50);color:var(--primary-600)}@media(max-width:768px){.sidebar{transform:translate(-100%)}.sidebar.open{transform:translate(0)}.main-content{margin-left:0}.hamburger{display:flex}.page-content{padding:20px 16px}.stats-grid{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px}.stat-card{padding:16px}.stat-card-value{font-size:1.35rem}.topbar{padding:0 16px}.period-tabs{overflow-x:auto;width:100%}}@media(max-width:480px){.stats-grid{grid-template-columns:1fr}}.search-bar{margin-bottom:24px}.search-input-group{display:flex;align-items:center;background:var(--card-bg);border:1px solid var(--card-border);border-radius:var(--radius-md);overflow:hidden;transition:border-color var(--transition-fast),box-shadow var(--transition-fast)}.search-input-group:focus-within{border-color:var(--primary-500);box-shadow:0 0 0 3px #3b82f61a}.search-icon{width:20px;height:20px;color:var(--gray-400);margin-left:14px;flex-shrink:0}.search-input-group input{flex:1;padding:12px 14px;border:none;background:transparent;font-size:.92rem;color:var(--gray-800)}.search-input-group input::placeholder{color:var(--gray-400)}.btn-search{padding:10px 22px;margin:4px;background:linear-gradient(135deg,var(--primary-600),var(--primary-700));color:#fff;font-size:.85rem;font-weight:600;border-radius:var(--radius-sm);transition:all var(--transition-fast);white-space:nowrap}.btn-search:hover{background:linear-gradient(135deg,var(--primary-500),var(--primary-600));box-shadow:0 4px 12px #3b82f64d}.students-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px;padding:18px 22px}.student-card{background:var(--card-bg);border:1px solid var(--card-border);border-radius:var(--radius-md);padding:18px;transition:all var(--transition-fast)}.student-card:hover{box-shadow:var(--shadow-md);transform:translateY(-2px);border-color:var(--primary-200)}.student-card-top{display:flex;align-items:center;gap:12px;margin-bottom:14px;padding-bottom:14px;border-bottom:1px solid var(--gray-100)}.student-avatar{width:42px;height:42px;border-radius:50%;background:linear-gradient(135deg,var(--primary-500),var(--purple-500));display:flex;align-items:center;justify-content:center;color:#fff;font-size:.85rem;font-weight:700;flex-shrink:0}.student-info{min-width:0}.student-name{font-size:.95rem;font-weight:600;color:var(--gray-800);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.student-number{font-size:.78rem;color:var(--gray-500);font-weight:500}.student-card-details{display:flex;flex-direction:column;gap:8px}.student-detail{display:flex;justify-content:space-between;align-items:center}.detail-label{font-size:.78rem;color:var(--gray-500);font-weight:500}.detail-value{font-size:.85rem;font-weight:600;color:var(--gray-700)}.text-success{color:var(--success-600)!important}.text-danger{color:var(--danger-600)!important}@media(max-width:768px){.students-grid{grid-template-columns:1fr;padding:12px 14px}.search-input-group input{padding:10px 12px}.btn-search{padding:8px 14px}}.student-card-link{text-decoration:none;color:inherit;display:block}.profile-container{max-width:800px;margin:0 auto}.btn-back{display:inline-flex;align-items:center;gap:8px;padding:8px 16px;background:var(--gray-100);color:var(--gray-600);font-size:.85rem;font-weight:500;border-radius:var(--radius-sm);border:1px solid var(--card-border);transition:all var(--transition-fast);margin-bottom:20px;cursor:pointer}.btn-back:hover{background:var(--gray-200);color:var(--gray-800)}.btn-back svg{width:16px;height:16px}.profile-header{display:flex;align-items:flex-start;gap:20px;background:var(--card-bg);border:1px solid var(--card-border);border-radius:var(--radius-lg);padding:28px;margin-bottom:20px}.profile-avatar{width:64px;height:64px;border-radius:50%;background:linear-gradient(135deg,var(--primary-500),var(--purple-500));display:flex;align-items:center;justify-content:center;color:#fff;font-size:1.3rem;font-weight:700;flex-shrink:0}.profile-info{flex:1;min-width:0}.profile-name{font-size:1.4rem;font-weight:700;color:var(--gray-900);letter-spacing:-.01em;margin-bottom:8px}.profile-meta{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}.profile-badge{display:inline-flex;align-items:center;padding:4px 12px;border-radius:20px;font-size:.78rem;font-weight:600;background:var(--gray-100);color:var(--gray-600)}.profile-badge.blue{background:var(--primary-50);color:var(--primary-700)}.profile-badge.green{background:var(--success-50);color:var(--success-600)}.profile-badge.red{background:var(--danger-50);color:var(--danger-600)}.profile-details-row{display:flex;flex-wrap:wrap;gap:20px}.profile-detail{display:inline-flex;align-items:center;gap:6px;font-size:.85rem;color:var(--gray-500)}.profile-detail svg{width:15px;height:15px;opacity:.6}.profile-actions{display:flex;gap:12px;margin-bottom:24px;flex-wrap:wrap}.action-btn{display:inline-flex;align-items:center;gap:8px;padding:12px 24px;border-radius:var(--radius-md);font-size:.88rem;font-weight:600;transition:all var(--transition-fast);border:none;cursor:pointer}.action-btn svg{width:18px;height:18px}.action-btn.purchase{background:linear-gradient(135deg,var(--primary-600),var(--primary-700));color:#fff}.action-btn.purchase:hover{background:linear-gradient(135deg,var(--primary-500),var(--primary-600));box-shadow:0 4px 14px #3b82f64d;transform:translateY(-1px)}.action-btn.issue{background:linear-gradient(135deg,var(--purple-500),var(--purple-600));color:#fff}.action-btn.issue:hover{background:linear-gradient(135deg,#a78bfa,var(--purple-500));box-shadow:0 4px 14px #8b5cf64d;transform:translateY(-1px)}.action-btn.deposit{background:linear-gradient(135deg,var(--success-500),var(--success-600));color:#fff}.action-btn.deposit:hover{background:linear-gradient(135deg,#4ade80,var(--success-500));box-shadow:0 4px 14px #22c55e4d;transform:translateY(-1px)}.profile-tabs{display:flex;gap:0;margin-bottom:20px;background:var(--gray-100);padding:4px;border-radius:var(--radius-md);width:fit-content}.profile-tab{padding:10px 28px;border-radius:var(--radius-sm);font-size:.88rem;font-weight:500;color:var(--gray-500);background:transparent;transition:all var(--transition-fast);cursor:pointer;border:none}.profile-tab:hover{color:var(--gray-700)}.profile-tab.active{background:var(--card-bg);color:var(--primary-600);box-shadow:var(--shadow-sm);font-weight:600}.badge{display:inline-flex;align-items:center;padding:3px 10px;border-radius:20px;font-size:.75rem;font-weight:600}.badge.blue{background:var(--primary-50);color:var(--primary-700)}.badge.green{background:var(--success-50);color:var(--success-600)}.badge.red{background:var(--danger-50);color:var(--danger-600)}.badge.amber{background:var(--warning-50);color:#b45309}@media(max-width:768px){.profile-header{flex-direction:column;align-items:center;text-align:center;padding:20px}.profile-meta,.profile-details-row,.profile-actions{justify-content:center}.action-btn{flex:1;justify-content:center;min-width:120px}}.records-list{display:flex;flex-direction:column;gap:12px}.record-card{background:var(--card-bg);border:1px solid var(--card-border);border-radius:var(--radius-md);padding:16px 20px;transition:border-color var(--transition-fast)}.record-card:hover{border-color:var(--primary-200)}.record-header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px}.record-left{display:flex;align-items:center;gap:8px;flex-wrap:wrap;min-width:0}.record-ref{font-size:.82rem;font-weight:600;color:var(--gray-600);font-family:SF Mono,Fira Code,monospace;letter-spacing:-.01em}.record-amount{font-size:1.1rem;font-weight:700;color:var(--gray-900);white-space:nowrap}.record-student{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:10px}.record-student-name{font-size:.88rem;font-weight:600;color:var(--gray-800)}.record-student-meta{font-size:.78rem;color:var(--gray-500);background:var(--gray-100);padding:2px 8px;border-radius:10px}.record-items{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0}.item-chip{background:#fff;border:1px solid var(--gray-200);border-radius:4px;padding:4px 8px;font-size:.85rem;color:var(--gray-700);font-weight:500;display:inline-flex;align-items:center;gap:6px}.item-sub{color:var(--primary-600);font-size:.75rem;font-weight:600;border-left:1px solid var(--gray-200);padding-left:6px}.item-record-row{display:inline-flex;align-items:center;gap:4px}.item-status-tag{font-size:.7rem;font-weight:600;text-transform:uppercase;padding:2px 6px;border-radius:10px;display:inline-flex;align-items:center;gap:6px}.item-status-tag.issued{background:var(--success-50);color:var(--success-600)}.item-status-tag.pending{background:var(--warning-50);color:var(--warning-500)}.issued-by{font-size:.65rem;color:var(--gray-400);text-transform:none;font-weight:400;font-style:italic}.setting-checkbox-hidden{position:absolute;opacity:0;width:0;height:0}.setting-toggle-wrapper{cursor:pointer}.setting-checkbox-hidden:checked+.setting-toggle .setting-toggle-track{background:var(--primary-600)}.setting-checkbox-hidden:checked+.setting-toggle .setting-toggle-thumb{transform:translate(20px)}.settings-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:20px;margin-bottom:30px}.settings-sections-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(360px,1fr));gap:24px}.btn-save-pronounced{display:inline-flex;align-items:center;justify-content:center;gap:10px;padding:10px 24px;background:var(--gray-100);color:var(--gray-400);border:1px solid var(--gray-200);border-radius:var(--radius-md);font-weight:600;font-size:.9rem;cursor:not-allowed;transition:all .2s cubic-bezier(.4,0,.2,1)}.btn-save-pronounced.active{background:var(--primary-600);color:#fff;border-color:var(--primary-700);cursor:pointer;box-shadow:0 4px 12px #2563eb33}.btn-save-pronounced.active:hover{background:var(--primary-700);box-shadow:0 6px 16px #2563eb4d;transform:translateY(-1px)}.btn-save-pronounced.active:active{transform:translateY(0)}.btn-save-pronounced:disabled{opacity:.7}.btn-spinner{width:16px;height:16px;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:btn-spin .6s linear infinite}@keyframes btn-spin{to{transform:rotate(360deg)}}.alert{padding:12px 16px;border-radius:8px;font-size:.9rem;font-weight:500;animation:slide-down .3s ease-out}.alert-success{background:var(--success-50);color:var(--success-700);border:1px solid var(--success-200)}.alert-error{background:var(--error-50);color:var(--error-700);border:1px solid var(--error-200)}@keyframes slide-down{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.record-card-clickable{cursor:pointer;transition:transform .2s,box-shadow .2s,border-color .2s;position:relative}.record-card-clickable:hover{transform:translateY(-2px);box-shadow:var(--shadow-md);border-color:var(--primary-300)}.record-card-clickable:after{content:"Click to issue items";position:absolute;top:10px;right:10px;background:var(--primary-500);color:#fff;font-size:.65rem;padding:2px 6px;border-radius:4px;opacity:0;transition:opacity .2s;pointer-events:none}.record-card-clickable:hover:after{opacity:1}.record-footer{display:flex;align-items:center;gap:12px;padding-top:8px;border-top:1px solid var(--gray-100)}.record-date{font-size:.78rem;color:var(--gray-500)}.record-by{font-size:.78rem;color:var(--gray-400);font-style:italic}@media(max-width:768px){.record-header{flex-direction:column;align-items:flex-start}.record-amount{font-size:1rem}}.payments-container,.sales-container{max-width:800px;margin:0 auto}.page-header-row{display:flex;align-items:center;gap:12px;margin-bottom:20px}.page-title{font-size:1.25rem;font-weight:700;color:var(--gray-900);margin:0}.pagination{display:flex;align-items:center;justify-content:center;gap:16px;padding:20px 0;margin-top:8px}.pagination-btn{display:inline-flex;align-items:center;gap:6px;padding:8px 16px;background:var(--card-bg);color:var(--gray-700);border:1px solid var(--card-border);border-radius:var(--radius-md);font-size:.85rem;font-weight:500;cursor:pointer;transition:all var(--transition-fast)}.pagination-btn svg{width:16px;height:16px}.pagination-btn:hover:not(:disabled){background:var(--primary-50);border-color:var(--primary-200);color:var(--primary-700)}.pagination-btn:disabled{opacity:.4;cursor:not-allowed}.pagination-info{font-size:.85rem;font-weight:500;color:var(--gray-500);white-space:nowrap}.record-student-link{color:var(--primary-600);text-decoration:none;font-weight:600;transition:color var(--transition-fast)}.record-student-link:hover{color:var(--primary-700);text-decoration:underline}.settings-container{max-width:800px;margin:0 auto}.settings-info-row{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-bottom:24px}.settings-info-card{background:var(--card-bg);border:1px solid var(--card-border);border-radius:var(--radius-md);padding:16px 20px;text-align:center}.settings-info-label{font-size:.75rem;font-weight:600;color:var(--gray-500);text-transform:uppercase;letter-spacing:.5px;margin-bottom:8px}.settings-info-value{font-size:1rem;font-weight:600;color:var(--gray-900);display:flex;align-items:center;justify-content:center;gap:6px;flex-wrap:wrap}.settings-section{background:var(--card-bg);border:1px solid var(--card-border);border-radius:var(--radius-md);margin-bottom:16px;overflow:hidden}.settings-section-header{display:flex;align-items:center;gap:10px;padding:14px 20px;background:var(--gray-50);border-bottom:1px solid var(--card-border)}.settings-section-icon{width:20px;height:20px;color:var(--primary-600);display:flex;align-items:center}.settings-section-icon svg{width:20px;height:20px}.settings-section-title{font-size:.9rem;font-weight:700;color:var(--gray-800);margin:0}.settings-section-body{padding:0}.setting-row{display:flex;align-items:center;justify-content:space-between;padding:14px 20px;border-bottom:1px solid var(--gray-100)}.setting-row:last-child{border-bottom:none}.setting-label{font-size:.88rem;font-weight:500;color:var(--gray-700)}.setting-value{font-size:.88rem;font-weight:500;color:var(--gray-900)}.setting-empty{color:var(--gray-400);font-style:italic;font-weight:400}.setting-toggle{display:flex;align-items:center;gap:10px}.setting-toggle-track{width:40px;height:22px;border-radius:11px;position:relative;transition:background var(--transition-fast)}.setting-toggle.on .setting-toggle-track{background:var(--success-500, #22c55e)}.setting-toggle.off .setting-toggle-track{background:var(--gray-300)}.setting-toggle-thumb{width:16px;height:16px;border-radius:50%;background:#fff;position:absolute;top:3px;transition:left var(--transition-fast);box-shadow:0 1px 3px #00000026}.setting-toggle.on .setting-toggle-thumb{left:21px}.setting-toggle.off .setting-toggle-thumb{left:3px}.setting-toggle-label{font-size:.8rem;font-weight:600;min-width:60px}.setting-toggle.on .setting-toggle-label{color:var(--success-500, #22c55e)}.setting-toggle.off .setting-toggle-label{color:var(--gray-400)}@media(max-width:640px){.settings-info-row{grid-template-columns:1fr}}.catalog-container{max-width:1000px;margin:0 auto}.catalog-table-wrap{background:var(--card-bg);border:1px solid var(--card-border);border-radius:var(--radius-md);overflow-x:auto}.catalog-table{width:100%;border-collapse:collapse}@media(max-width:768px){.catalog-table thead{display:none}.catalog-table,.catalog-table tbody,.catalog-table tr,.catalog-table td{display:block;width:100%}.catalog-table tr{padding:12px;border-bottom:1px solid var(--gray-100);position:relative}.catalog-table td{text-align:right;font-size:.88rem;position:relative;padding:6px 0 6px 45%}.catalog-table td:before{content:attr(data-label);position:absolute;left:0;width:40%;font-weight:600;text-align:left;color:var(--gray-500);font-size:.75rem;text-transform:uppercase}.catalog-cell-index{display:none!important}.catalog-table td.catalog-cell-name{text-align:left;padding-left:0;font-size:1.05rem;border-bottom:1px solid var(--gray-50);margin-bottom:6px;padding-bottom:8px}.catalog-table td.catalog-cell-name:before{display:none}}.catalog-th{text-align:left;padding:12px 16px;font-size:.75rem;font-weight:700;color:var(--gray-500);text-transform:uppercase;letter-spacing:.5px;background:var(--gray-50);border-bottom:1px solid var(--card-border);white-space:nowrap}.catalog-row{transition:background var(--transition-fast)}.catalog-row:hover{background:var(--gray-50)}.catalog-row:not(:last-child) .catalog-cell{border-bottom:1px solid var(--gray-100)}.catalog-cell{padding:12px 16px;font-size:.88rem;color:var(--gray-700);vertical-align:middle}.catalog-cell-index{color:var(--gray-400);font-weight:500;width:40px}.catalog-item-name{font-weight:600;color:var(--gray-900)}.catalog-cell-price{font-weight:700;color:var(--primary-700);white-space:nowrap}.catalog-cell-stock{white-space:nowrap}.catalog-cell-date{white-space:nowrap;color:var(--gray-500);font-size:.82rem}.catalog-cell-by{color:var(--gray-500);font-size:.82rem}.stock-badge{display:inline-flex;align-items:center;font-size:.78rem;font-weight:600;padding:2px 8px;border-radius:10px}.stock-badge.ok{background:#22c55e1f;color:#16a34a}.stock-badge.low{background:#f59e0b1f;color:#d97706}.stock-badge.out{background:#ef44441f;color:#dc2626}.item-detail-container{max-width:720px;margin:0 auto}.item-detail-header{display:flex;align-items:center;gap:16px;margin:20px 0 24px}.item-detail-icon{width:56px;height:56px;min-width:56px;border-radius:var(--radius-md);background:var(--primary-50);color:var(--primary-600);display:flex;align-items:center;justify-content:center}.item-detail-icon svg{width:28px;height:28px}.item-detail-name{font-size:1.35rem;font-weight:800;color:var(--gray-900);margin:0 0 4px}.item-detail-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-bottom:24px}.item-stat-card{background:var(--card-bg);border:1px solid var(--card-border);border-radius:var(--radius-md);padding:16px 20px;display:flex;flex-direction:column;gap:6px}.item-stat-label{font-size:.75rem;font-weight:600;color:var(--gray-400);text-transform:uppercase;letter-spacing:.3px}.item-stat-value{font-size:1.1rem;font-weight:700;color:var(--gray-900)}.item-stat-value.price{color:var(--primary-700)}.item-detail-section{background:var(--card-bg);border:1px solid var(--card-border);border-radius:var(--radius-md);overflow:hidden}.item-detail-section-title{font-size:.82rem;font-weight:700;color:var(--gray-500);text-transform:uppercase;letter-spacing:.5px;padding:14px 20px;background:var(--gray-50);margin:0;border-bottom:1px solid var(--card-border)}.item-detail-grid{padding:0}.item-detail-row{display:flex;justify-content:space-between;padding:12px 20px;border-bottom:1px solid var(--gray-100)}.item-detail-row:last-child{border-bottom:none}.item-detail-label{font-size:.86rem;font-weight:600;color:var(--gray-500)}.item-detail-value{font-size:.86rem;font-weight:500;color:var(--gray-800);text-align:right}.item-detail-value.muted{color:var(--gray-400);font-style:italic}@media(max-width:600px){.item-detail-cards{grid-template-columns:1fr}}.modal-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:#00000080;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;justify-content:center;align-items:center;z-index:1000;animation:fadeIn .2s ease-out}.modal-content{background:#fff;width:92%;max-width:500px;max-height:90vh;border-radius:var(--radius-lg);box-shadow:var(--shadow-xl);display:flex;flex-direction:column;overflow:hidden;animation:slideUp .3s cubic-bezier(.16,1,.3,1)}@media(max-width:480px){.modal-content{width:100%;height:100%;max-height:100vh;border-radius:0}.modal-body,.modal-footer{padding:12px}.product-item{flex-direction:column;align-items:flex-start;gap:10px;padding:16px}.product-checkbox{position:absolute;top:16px;right:16px;width:24px;height:24px}.quantity-control{width:100%;justify-content:space-between;margin-top:8px;padding-top:12px;border-top:1px solid var(--gray-50)}.total-section{flex-direction:column;align-items:flex-start;gap:4px}.total-amount{font-size:1.25rem!important}.login-card{padding:32px 24px;max-width:100%}.login-logo-icon{width:48px;height:48px}.login-logo h1{font-size:1.25rem}.item-detail-header{flex-direction:column;align-items:center;text-align:center;gap:12px}.item-detail-cards{grid-template-columns:1fr;gap:10px}.item-stat-card{padding:12px 16px}}.modal-header{padding:16px 20px;background:#fff;border-bottom:1px solid var(--gray-100);display:flex;align-items:center;justify-content:center;position:relative}.modal-title{font-size:1rem;font-weight:700;color:var(--primary-700);text-transform:uppercase;letter-spacing:.5px}.modal-back-btn{position:absolute;left:16px;background:none;border:none;cursor:pointer;padding:4px;color:var(--gray-600)}.modal-student-banner{background:var(--primary-50);padding:12px 20px;display:flex;align-items:center;justify-content:center;gap:8px;font-size:.82rem;font-weight:600;color:var(--gray-800);border-bottom:1px solid var(--primary-100);text-transform:uppercase}.modal-body{flex:1;overflow-y:auto;padding:16px;background:var(--gray-50)}.product-list{display:flex;flex-direction:column;gap:12px}.product-item{background:#fff;padding:12px 16px;border-radius:12px;display:flex;align-items:center;gap:12px;border:1px solid transparent;transition:all .2s ease;box-shadow:0 1px 2px #00000008}.product-item .dashboard-summary-table .row-total{background:var(--primary-50)!important;border-top:2px solid var(--primary-100)}.product-item .dashboard-summary-table .row-total td{font-weight:700;color:var(--primary-900)}.product-item .summary-count{font-size:1.1rem;font-weight:600;color:var(--gray-900)}.product-item .summary-unit{font-size:.75rem;color:var(--gray-500);margin-left:2px;text-transform:lowercase}.product-item .data-section-subtitle{font-size:.85rem;color:var(--gray-500);margin-top:4px}.product-item .text-center{text-align:center}.product-item .text-right{text-align:right}@media(max-width:768px){.product-item .dashboard-summary-table td[data-label=Period]{background:var(--gray-50);border-bottom:1px solid var(--gray-100)}}.product-item.selected{border-color:var(--primary-200);background:var(--primary-50)}.product-checkbox{width:22px;height:22px;accent-color:var(--primary-600);cursor:pointer;border-radius:6px}.product-info{flex:1}.product-name{font-weight:700;font-size:.9rem;color:var(--gray-900);text-transform:uppercase}.product-price{font-size:.8rem;font-weight:600;color:var(--primary-700)}.quantity-control{display:flex;align-items:center;gap:10px;opacity:.4;cursor:not-allowed;transition:opacity .2s}.quantity-control.active{opacity:1;cursor:default}.qty-btn{width:32px;height:32px;border-radius:50%;border:none;background:var(--gray-200);color:var(--gray-700);font-size:1.2rem;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background .2s}.quantity-control:not(.active) .qty-btn{pointer-events:none}.qty-btn:hover{background:var(--gray-300)}.qty-value{font-weight:700;font-size:1rem;color:var(--gray-900);width:20px;text-align:center}.modal-footer{background:#fff;padding:16px 20px;border-top:1px solid var(--gray-100);display:flex;flex-direction:column;gap:16px}.total-section{background:var(--primary-50);padding:16px;border-radius:12px;text-align:center}.total-label{font-size:.85rem;color:var(--gray-600);margin-bottom:4px}.total-amount{font-size:1.5rem;font-weight:800;color:var(--gray-900)}.payment-options{background:#fff;border:1px solid var(--gray-200);border-radius:12px;padding:14px}.option-row{display:flex;align-items:center;gap:12px}.option-text{display:flex;flex-direction:column}.option-title{font-weight:600;font-size:.9rem;color:var(--gray-900)}.option-desc{font-size:.75rem;color:var(--gray-500)}.modal-actions{display:flex;gap:12px}.btn-close,.btn-confirm{flex:1;padding:14px;border-radius:8px;font-weight:600;font-size:.9rem;text-align:center;cursor:pointer;border:none}.btn-close{background:var(--gray-600);color:#fff}.btn-confirm{background:var(--primary-700);color:#fff}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.modal-error{padding:10px 14px;background:#ef44441a;border:1px solid rgba(239,68,68,.2);border-radius:var(--radius-sm);color:var(--danger-600);font-size:.82rem;margin-bottom:12px;display:none;animation:fadeIn .3s ease}.modal-error.visible{display:block}@keyframes slideUp{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}@media(max-width:1024px){.sidebar{transform:translate(-100%);box-shadow:10px 0 30px #0003}.sidebar.open{transform:translate(0)}.main-content{margin-left:0}.hamburger{display:flex}}@media(max-width:768px){.topbar{padding:0 16px}.page-content{padding:16px}.topbar-right{display:none}.topbar-title{font-size:1rem}.dashboard-greeting h2{font-size:1.25rem}.stats-grid{grid-template-columns:1fr;gap:12px}.period-tabs{width:100%;overflow-x:auto;white-space:nowrap;-webkit-overflow-scrolling:touch;padding:4px 8px}.period-tab{flex-shrink:0}.record-header{flex-direction:column;align-items:flex-start;gap:8px}.record-amount{font-size:1rem;align-self:flex-end;margin-top:-24px}.record-student{flex-direction:column;align-items:flex-start;gap:6px}.record-student-meta{font-size:.72rem}.record-footer{flex-direction:column;align-items:flex-start;gap:4px}.record-by{font-size:.75rem}.profile-header{padding:20px 16px}.profile-avatar{width:64px!important;height:64px!important;font-size:1.25rem!important}.profile-name{font-size:1.25rem!important}.profile-actions{flex-direction:column;width:100%;gap:10px}.action-btn{width:100%!important;justify-content:center}.profile-tabs{width:100%;overflow-x:auto;white-space:nowrap;display:flex;justify-content:flex-start!important;-webkit-overflow-scrolling:touch;padding:4px;margin:0 0 16px!important}.profile-tab{flex-shrink:0}}.record-timeline{display:flex;flex-direction:column;gap:12px;margin:16px 0;padding:12px;background:var(--gray-50);border-radius:var(--radius-md);border:1px solid var(--gray-100)}.timeline-item{display:flex;gap:12px;position:relative}.timeline-item:not(:last-child):after{content:"";position:absolute;left:6px;top:14px;bottom:-16px;width:1px;background:var(--gray-200)}.timeline-dot{width:13px;height:13px;border-radius:50%;background:var(--gray-300);margin-top:4px;flex-shrink:0;z-index:1}.timeline-dot.active{background:var(--primary-500);box-shadow:0 0 0 3px var(--primary-50)}.timeline-dot.green{background:var(--success-500);box-shadow:0 0 0 3px var(--success-50)}.timeline-content{display:flex;flex-direction:column}.timeline-label{font-size:.75rem;font-weight:600;color:var(--gray-500);text-transform:uppercase;letter-spacing:.05em;line-height:1;margin-bottom:2px}.timeline-time{font-size:.85rem;color:var(--gray-800);font-weight:500}.timeline-actor{font-size:.8rem;color:var(--gray-500);margin-top:2px}
