*{box-sizing:border-box}html,body{height:100%}body{margin:0;font-family:Plus Jakarta Sans,Segoe UI,sans-serif;color:var(--slate-900);background:var(--bg);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}a{color:inherit;text-decoration:none}button,input,select{font-family:inherit}:root{--slate-50: #f8fafc;--slate-100: #f1f5f9;--slate-200: #e2e8f0;--slate-400: #94a3b8;--slate-500: #64748b;--slate-600: #475569;--slate-700: #334155;--slate-800: #1f2937;--slate-900: #0f172a;--emerald-50: #ecfdf5;--emerald-100: #d1fae5;--emerald-500: #10b981;--emerald-600: #059669;--emerald-700: #047857;--brand-rgb: 16, 185, 129;--brand-on: #ffffff;--brand-secondary: #f59e0b;--brand-tertiary: #1565c0;--amber-50: #fffbeb;--amber-100: #fef3c7;--amber-500: #f59e0b;--amber-600: #d97706;--red-50: #fef2f2;--red-100: #fee2e2;--red-500: #ef4444;--red-600: #dc2626;--orange-50: #fff7ed;--orange-500: #f97316;--bg: #eef3f0;--surface: #ffffff;--input-bg: #ffffff;--overlay: rgba(15, 23, 42, .48);--surface-glass: rgba(255, 255, 255, .86);--auth-wash: #f4faf7;--border-soft: rgba(226, 232, 240, .9);--shadow: 0 1px 2px rgba(15, 23, 42, .04), 0 8px 20px rgba(15, 23, 42, .05);--shadow-lg: 0 10px 30px rgba(15, 23, 42, .12);--radius: 16px;--radius-sm: 12px;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-8: 32px}html{color-scheme:light}html[data-theme=dark]{color-scheme:dark;--slate-50: #1a2332;--slate-100: #243044;--slate-200: #334155;--slate-400: #94a3b8;--slate-500: #94a3b8;--slate-600: #cbd5e1;--slate-700: #e2e8f0;--slate-800: #f1f5f9;--slate-900: #f8fafc;--amber-50: #3b2a12;--amber-100: #4a3416;--red-50: #3f1d1d;--red-100: #4c2222;--bg: #0b1220;--surface: #111827;--input-bg: #0f172a;--overlay: rgba(2, 6, 23, .72);--surface-glass: rgba(17, 24, 39, .88);--auth-wash: #0b1220;--border-soft: rgba(51, 65, 85, .9);--shadow: 0 1px 2px rgba(0, 0, 0, .35), 0 8px 20px rgba(0, 0, 0, .28);--shadow-lg: 0 10px 30px rgba(0, 0, 0, .45)}@keyframes fade-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.fade-in{animation:fade-in .3s ease-out forwards}@keyframes topup-pop{0%{transform:scale(.55);opacity:0}55%{transform:scale(1.08);opacity:1}to{transform:scale(1);opacity:1}}@keyframes topup-draw-ring{0%{stroke-dashoffset:70}to{stroke-dashoffset:0}}@keyframes topup-draw-check{0%{stroke-dashoffset:24}to{stroke-dashoffset:0}}@keyframes topup-fade-up{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.topup-success{text-align:center;padding:8px 4px 4px}.topup-success-icon{width:72px;height:72px;margin:0 auto 16px;border-radius:50%;background:var(--emerald-50);color:var(--emerald-600);display:flex;align-items:center;justify-content:center;animation:topup-pop .45s cubic-bezier(.22,1,.36,1) both;box-shadow:0 8px 20px rgba(var(--brand-rgb),.18)}.topup-success-svg{width:40px;height:40px;display:block}.topup-success-ring{stroke-dasharray:70;stroke-dashoffset:70;animation:topup-draw-ring .4s ease-out .1s forwards}.topup-success-check{stroke-dasharray:24;stroke-dashoffset:24;animation:topup-draw-check .35s ease-out .35s forwards}.topup-success-title{font-size:18px;font-weight:800;color:var(--slate-900);letter-spacing:-.02em;margin-bottom:8px;animation:topup-fade-up .35s ease-out .25s both}.topup-success-text{font-size:13px;color:var(--slate-500);line-height:1.45;animation:topup-fade-up .35s ease-out .35s both}.topup-success-amount{margin-top:12px;font-size:26px;font-weight:800;color:var(--emerald-700);letter-spacing:-.03em;animation:topup-fade-up .4s ease-out .45s both}.page{min-height:100vh;display:flex;flex-direction:column}.sidebar{width:268px;background:var(--surface);border-right:1px solid var(--slate-200);height:100vh;position:fixed;left:0;top:0;display:none;flex-direction:column;z-index:40}.sidebar-header{padding:22px 20px 18px;font-weight:800;color:var(--emerald-700);display:flex;align-items:center;gap:var(--space-3);font-size:18px;letter-spacing:-.02em;border-bottom:1px solid var(--slate-100)}.sidebar-brand-text{display:flex;flex-direction:column;min-width:0;gap:2px}.sidebar-brand-name{font-size:16px;font-weight:800;color:var(--emerald-700);letter-spacing:-.03em;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar-brand-tag{font-size:11px;font-weight:600;color:var(--slate-500);letter-spacing:.01em}.container{max-width:96rem;margin:0 auto}.header{height:64px;background:var(--surface);border-bottom:1px solid var(--slate-200);position:sticky;top:0;z-index:30;display:flex;align-items:center;justify-content:space-between;padding:0 24px}.header-title{font-weight:700;color:var(--emerald-600);font-size:20px}.header-user{display:flex;align-items:center;gap:12px}.avatar{width:40px;height:40px;border-radius:50%;border:2px solid var(--emerald-600);object-fit:cover}.sidebar-brand-mark{width:36px;height:36px;border-radius:10px;background:linear-gradient(145deg,var(--emerald-500),var(--emerald-700));color:#fff;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;box-shadow:0 6px 14px rgba(var(--brand-rgb),.28)}.sidebar-brand-logo{height:40px;width:auto;max-width:128px;object-fit:contain;border-radius:10px;flex-shrink:0;display:block;background:var(--surface)}.sidebar-brand-mark svg,.nav-icon svg,.mobile-nav .nav-icon svg{width:18px;height:18px;display:block}.nav{flex:1;padding:0 var(--space-4);margin-top:var(--space-2)}.nav-item{width:100%;text-align:left;padding:12px 14px;border-radius:var(--radius-sm);display:flex;align-items:center;gap:var(--space-3);color:var(--slate-600);background:transparent;border:none;cursor:pointer;font-size:14px;font-weight:500;transition:background .15s ease,color .15s ease;margin-bottom:2px}.nav-icon{width:20px;height:20px;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;opacity:.85}.nav-item:hover{background:var(--slate-50);color:var(--slate-800)}.nav-item.active{background:var(--emerald-50);color:var(--emerald-700);font-weight:700;box-shadow:inset 3px 0 0 var(--emerald-600)}.nav-item.active .nav-icon{opacity:1;color:var(--emerald-700)}.sidebar-footer{padding:var(--space-4);border-top:1px solid var(--slate-100)}.logout{width:100%;text-align:left;padding:12px 14px;color:var(--red-600);border-radius:var(--radius-sm);border:none;background:transparent;cursor:pointer;display:flex;align-items:center;gap:var(--space-3);font-size:14px;font-weight:500}.logout:hover{background:var(--red-50)}.main{padding:var(--space-4);background:radial-gradient(1200px 420px at 10% -10%,rgba(var(--brand-rgb),.12),transparent 55%),radial-gradient(900px 380px at 100% 0%,rgba(15,23,42,.05),transparent 50%),var(--bg);min-height:100vh;flex:1;min-width:0}.main .content{max-width:72rem;margin:0 auto;width:100%}.main .content.content-wide{max-width:88rem}.topbar{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:0 auto 20px;max-width:72rem;width:100%;padding:14px 16px;background:var(--surface-glass);border:1px solid var(--border-soft);border-radius:var(--radius);box-shadow:var(--shadow);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.topbar-brand{display:flex;align-items:center;gap:12px;min-width:0}.topbar-brand-logo{height:36px;width:auto;max-width:88px;object-fit:contain;border-radius:8px;flex-shrink:0;display:block;background:var(--surface)}.topbar-copy{min-width:0}.topbar-kicker{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--emerald-700);margin-bottom:2px}.topbar-title{font-size:18px;font-weight:800;color:var(--slate-900);letter-spacing:-.03em;word-break:break-word;line-height:1.2}.topbar-user{display:flex;align-items:center;gap:12px;flex-shrink:0}.theme-toggle{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid var(--slate-200);background:var(--surface);color:var(--slate-700);border-radius:12px;padding:8px 10px;cursor:pointer;font-weight:700;font-size:12px;flex-shrink:0;box-shadow:none}.theme-toggle:hover{background:var(--slate-50);color:var(--slate-900)}.theme-toggle-icon,.theme-toggle-icon svg{width:18px;height:18px;display:block}.theme-toggle-topbar .theme-toggle-label{display:none}@media (min-width: 768px){.theme-toggle-topbar .theme-toggle-label{display:inline}}.theme-toggle-auth{position:absolute;top:16px;right:16px;z-index:2}.theme-toggle-sidebar{width:100%;justify-content:flex-start;margin-bottom:8px;padding:12px 14px}.topbar-user-meta{display:none;flex-direction:column;align-items:flex-end;gap:1px}.topbar-user-name{font-size:13px;font-weight:700;color:var(--slate-800);max-width:16rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.topbar-user-date{font-size:11px;color:var(--slate-500);text-transform:capitalize}.topbar-avatar{width:40px;height:40px;border-radius:12px;background:linear-gradient(145deg,var(--emerald-500),var(--emerald-700));color:#fff;font-size:13px;font-weight:800;display:inline-flex;align-items:center;justify-content:center;box-shadow:0 6px 14px rgba(var(--brand-rgb),.28)}@media (min-width: 768px){.topbar-title{font-size:20px}.topbar-brand-logo{display:none}.topbar-user-meta{display:flex}}.mobile-nav{position:fixed;bottom:0;left:0;right:0;background:var(--surface-glass);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-top:1px solid var(--slate-200);display:flex;align-items:stretch;gap:4px;padding:8px 6px calc(8px + env(safe-area-inset-bottom));z-index:50;overflow-x:auto}.mobile-nav button{min-width:64px;flex:1;padding:8px 6px;border-radius:var(--radius-sm);border:none;background:transparent;color:var(--slate-500);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px}.mobile-nav .nav-icon{width:22px;height:22px}.mobile-nav .nav-icon svg{width:20px;height:20px}.mobile-nav button small{font-size:10px;font-weight:600;line-height:1.1}.mobile-nav button.active{background:var(--emerald-50);color:var(--emerald-700)}.mobile-nav button.logout-mobile{color:var(--red-600)}.mobile-nav button.logout-mobile:active{background:var(--red-50)}.card{background:var(--surface);padding:var(--space-4);border-radius:var(--radius);box-shadow:var(--shadow);border:1px solid var(--border-soft)}.card-title{font-weight:700;color:var(--slate-900);letter-spacing:-.02em}.stack{display:flex;flex-direction:column;gap:var(--space-6)}.stack-sm,.form-stack{display:flex;flex-direction:column;gap:var(--space-3)}.grid{display:grid;gap:24px}.grid-2{grid-template-columns:1fr}@media (min-width: 768px){.grid-2{grid-template-columns:1fr 1fr}}.input{width:100%;padding:12px 16px;border-radius:12px;border:1px solid var(--slate-200);background:var(--input-bg);color:var(--slate-900);outline:none;transition:box-shadow .2s ease}.input::placeholder{color:var(--slate-400)}.input:focus{border-color:var(--emerald-500);box-shadow:0 0 0 3px rgba(var(--brand-rgb),.18)}.btn{display:inline-block;padding:12px 16px;border-radius:12px;font-weight:700;border:none;cursor:pointer;transition:background .15s ease,box-shadow .15s ease,transform .1s ease}.btn:active{transform:translateY(1px)}.btn-primary{background:var(--emerald-600);color:var(--brand-on);box-shadow:0 8px 16px rgba(var(--brand-rgb),.2)}.btn-primary:hover{background:var(--emerald-700)}.auth-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:var(--space-4);background:radial-gradient(900px 420px at 15% 10%,rgba(var(--brand-rgb),.18),transparent 55%),radial-gradient(700px 360px at 90% 80%,rgba(15,23,42,.06),transparent 50%),linear-gradient(180deg,var(--auth-wash) 0%,var(--bg) 100%);position:relative}.auth-card{max-width:440px;width:100%;padding:36px 28px 32px;border:1px solid var(--border-soft);box-shadow:var(--shadow-lg)}.auth-brand{text-align:center;margin-bottom:var(--space-6)}.auth-brand-title{font-size:24px;font-weight:800;color:var(--slate-900);letter-spacing:-.03em}.auth-brand-subtitle{margin-top:6px;font-size:14px;color:var(--slate-500);line-height:1.45}.auth-logo{width:auto;max-width:220px;height:112px;object-fit:contain;margin:0 auto 18px;display:block;border-radius:16px;background:transparent;border:none;padding:0}.auth-mark{width:96px;height:96px;margin:0 auto 18px;border-radius:22px;background:linear-gradient(145deg,var(--emerald-500),var(--emerald-700));color:#fff;display:flex;align-items:center;justify-content:center;box-shadow:0 12px 28px rgba(var(--brand-rgb),.3)}.auth-mark svg{width:42px;height:42px}.password-field{position:relative}.password-field .input{padding-right:48px}.student-pin-field{display:flex;flex-direction:column;gap:6px}.student-pin-hint{font-size:12px;color:var(--slate-500);line-height:1.35;min-height:16px;transition:color .15s ease}.student-pin-hint.is-error{color:var(--red-600);font-weight:600}.student-pin-shake{animation:student-pin-shake .35s ease}@keyframes student-pin-shake{0%,to{transform:translate(0)}20%{transform:translate(-4px)}40%{transform:translate(4px)}60%{transform:translate(-3px)}80%{transform:translate(3px)}}.password-toggle{position:absolute;right:8px;top:50%;transform:translateY(-50%);width:36px;height:36px;border:none;background:transparent;color:var(--slate-500);border-radius:8px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;padding:0}.password-toggle:hover{color:var(--slate-700);background:var(--slate-50)}.password-toggle svg{width:20px;height:20px;display:block}.password-toggle .icon-eye-off,.password-toggle.is-visible .icon-eye{display:none}.password-toggle.is-visible .icon-eye-off{display:block}.auth-remember{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--slate-600);-webkit-user-select:none;user-select:none;cursor:pointer}.auth-remember input{width:16px;height:16px;accent-color:var(--emerald-600);cursor:pointer}.auth-footer{text-align:center;font-size:13px;color:var(--slate-500)}.btn-primary:disabled{background:var(--slate-200);box-shadow:none;cursor:not-allowed}.btn-secondary{background:var(--emerald-600);color:#fff}.btn-link{color:var(--emerald-600);font-weight:700;font-size:12px;background:transparent;border:none;cursor:pointer}.badge{border-radius:6px;font-size:10px;font-weight:700;padding:2px 6px;text-transform:uppercase}.badge-red{background:var(--red-100);color:var(--red-600)}.badge-amber{background:var(--amber-100);color:var(--amber-600)}.progress{width:100%;height:8px;background:var(--slate-100);border-radius:999px;overflow:hidden}.progress-bar{height:100%;background:var(--emerald-600);transition:width 1s ease}.table{width:100%;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch}table{width:max-content;min-width:100%;border-collapse:collapse;min-width:560px}thead{background:var(--slate-50);color:var(--slate-500);font-size:10px;letter-spacing:.08em;text-transform:uppercase}th{text-align:left;padding:12px 16px;min-width:140px;white-space:nowrap}td{padding:12px 16px;min-width:140px;white-space:nowrap}tbody tr{border-top:1px solid var(--slate-100)}.center{display:flex;align-items:center;justify-content:center}.hidden{display:none}.mt-4{margin-top:16px}.mb-4{margin-bottom:16px}.mb-6{margin-bottom:24px}.gap-2{display:inline-flex;align-items:center;gap:8px}.gap-3{display:inline-flex;align-items:center;gap:12px}.gap-4{display:inline-flex;align-items:center;gap:16px}.text-muted{color:var(--slate-500)}.text-success{color:var(--emerald-700)}.text-warning{color:var(--amber-600)}.text-danger{color:var(--red-600)}.rounded{border-radius:12px}.rounded-full{border-radius:999px}.pill{width:32px;height:32px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.pill svg{width:16px;height:16px;display:block}.pill-emerald{background:var(--emerald-100);color:var(--emerald-600)}.pill-amber{background:var(--amber-100);color:var(--amber-600)}.pill-red{background:var(--red-100);color:var(--red-600)}.pill-orange{background:var(--orange-50);color:var(--orange-500)}.pill-slate{background:var(--slate-100);color:var(--slate-700)}.alert{padding:12px 14px;border-radius:12px;font-size:13px;display:flex;flex-direction:column;gap:2px}.alert-error{background:var(--red-50);color:var(--red-600);border:1px solid var(--red-100)}.alert-title{font-weight:700;font-size:13px}.alert-message{font-size:12px}.page-header{display:flex;align-items:flex-start;justify-content:space-between;flex-wrap:wrap;gap:16px;margin-bottom:20px}.page-header-title{font-size:22px;font-weight:800;color:var(--slate-900);letter-spacing:-.03em}.page-header-subtitle{color:var(--slate-500);font-size:13px;margin-top:4px;line-height:1.45;max-width:42rem}.metric-hero{background:linear-gradient(135deg,rgba(var(--brand-rgb),.96),var(--emerald-700)),var(--emerald-700);color:var(--brand-on);border:none;box-shadow:0 12px 28px rgba(var(--brand-rgb),.28);position:relative;overflow:hidden}.metric-hero:after{content:"";position:absolute;right:-40px;top:-40px;width:160px;height:160px;border-radius:50%;background:#ffffff1a;pointer-events:none}.metric-hero-label{font-size:13px;font-weight:600;opacity:.9;display:flex;align-items:center;gap:10px;margin-bottom:12px}.metric-hero-value{font-size:34px;font-weight:800;letter-spacing:-.04em;line-height:1.1}.metric-hero-hint{margin-top:10px;font-size:12px;opacity:.85}.metric-secondary{display:flex;flex-direction:column;justify-content:center;min-height:100%}.metric-secondary-label{font-size:13px;font-weight:600;color:var(--slate-500);display:flex;align-items:center;gap:10px;margin-bottom:12px}.metric-secondary-value{font-size:28px;font-weight:800;color:var(--slate-900);letter-spacing:-.03em}.metric-secondary-hint{margin-top:8px;font-size:12px;color:var(--slate-500)}.section-card-header{padding-bottom:14px;margin-bottom:4px;border-bottom:1px solid var(--slate-100)}.activity-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 0;border-top:1px solid var(--slate-100)}.activity-row:first-child,.section-card-header+.activity-row,.section-card-header+.list-row{border-top:none}.activity-amount{font-weight:700;font-size:14px;white-space:nowrap}.activity-amount.is-out{color:var(--slate-900)}.activity-amount.is-in{color:var(--emerald-700)}.status-banner{display:flex;align-items:flex-start;gap:14px}.alert-success{background:var(--emerald-50);color:var(--emerald-700);border:1px solid var(--emerald-100)}.profile-status{display:flex;align-items:center;gap:14px;padding:16px 18px}.profile-status-icon{width:44px;height:44px;border-radius:12px;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.profile-status-icon svg{width:22px;height:22px;display:block}.profile-status-body{min-width:0;flex:1}.profile-status-label{font-size:15px;font-weight:800;letter-spacing:-.02em;color:var(--slate-900)}.profile-status-hint{margin-top:2px;font-size:13px;color:var(--slate-500);line-height:1.4}.profile-status-badge{flex-shrink:0}.profile-status-ok{background:linear-gradient(180deg,var(--emerald-50) 0%,var(--surface) 70%);border-color:var(--emerald-100)}.profile-status-ok .profile-status-icon,.profile-status-ok .profile-status-badge{background:var(--emerald-100);color:var(--emerald-700)}.profile-status-warn{background:linear-gradient(180deg,var(--amber-50) 0%,var(--surface) 70%);border-color:var(--amber-100)}.profile-status-warn .profile-status-icon,.profile-status-warn .profile-status-badge{background:var(--amber-100);color:var(--amber-600)}.profile-status-danger{background:linear-gradient(180deg,var(--red-50) 0%,var(--surface) 70%);border-color:var(--red-100)}.profile-status-danger .profile-status-icon,.profile-status-danger .profile-status-badge{background:var(--red-100);color:var(--red-600)}.profile-identity{padding-bottom:18px;margin-bottom:18px;border-bottom:1px solid var(--slate-100);display:flex;align-items:center;gap:14px}.profile-identity-name{font-size:17px;font-weight:800;color:var(--slate-900);letter-spacing:-.02em}.profile-identity-meta{margin-top:2px;font-size:13px;color:var(--slate-500);word-break:break-word}.profile-form{display:grid;grid-template-columns:1fr;gap:14px}@media (min-width: 768px){.profile-form{grid-template-columns:1fr 1fr}.profile-form .field-span-2{grid-column:1 / -1}}.field{display:flex;flex-direction:column;gap:6px}.field-label{font-size:12px;font-weight:600;color:var(--slate-500)}.profile-actions{margin-top:18px;display:flex;justify-content:flex-end}.profile-session{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}.btn-danger-soft{background:var(--red-50);color:var(--red-600);border:1px solid var(--red-100)}.btn-danger-soft:hover{background:var(--red-100)}.btn-danger{background:var(--red-600);color:#fff;box-shadow:0 8px 16px #dc26262e}.btn-danger:hover{background:#b91c1c}.app-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:70;background:var(--overlay);display:flex;align-items:center;justify-content:center;padding:16px;overflow:auto;-webkit-overflow-scrolling:touch}.app-modal{width:100%;margin:auto;background:var(--surface);border-radius:16px;box-shadow:0 18px 40px #0f172a38;display:flex;flex-direction:column;max-height:calc(100vh - 32px);max-height:calc(100dvh - 32px)}.app-modal-sm{max-width:380px}.app-modal-md{max-width:420px}.app-modal-lg{max-width:520px}.app-modal-body{padding:18px 18px 8px;overflow-y:auto;min-height:0;flex:1 1 auto}.app-modal-footer{flex-shrink:0;padding:12px 18px 16px;border-top:1px solid var(--slate-100);background:var(--surface)}.topup-modal-title{font-size:18px;font-weight:800;letter-spacing:-.02em;margin-bottom:4px;color:var(--slate-900)}.topup-modal-subtitle{font-size:13px;margin-bottom:12px}.topup-qr-wrap{display:flex;justify-content:center;margin-bottom:12px}.topup-qr-canvas{border-radius:12px;background:#fff;max-width:100%;height:auto}.topup-modal-copy{margin-bottom:10px}.topup-modal-wait{font-size:13px;margin-bottom:4px}.app-toast{position:fixed;left:50%;bottom:28px;transform:translate(-50%) translateY(12px);z-index:120;display:flex;align-items:flex-start;gap:12px;min-width:280px;max-width:min(420px,calc(100vw - 24px));padding:14px 16px;border-radius:14px;background:var(--surface);border:1px solid var(--slate-200);opacity:0;animation:app-toast-in .25s ease-out forwards}.app-toast-hide{animation:app-toast-out .2s ease-in forwards}.app-toast-icon{width:32px;height:32px;border-radius:10px;display:inline-flex;align-items:center;justify-content:center;font-weight:800;flex-shrink:0}.app-toast-success{border-color:var(--emerald-100)}.app-toast-success .app-toast-icon{background:var(--emerald-50);color:var(--emerald-700)}.app-toast-error{border-color:var(--red-100)}.app-toast-error .app-toast-icon{background:var(--red-50);color:var(--red-600)}.app-toast-title{font-size:14px;font-weight:800;color:var(--slate-900);letter-spacing:-.02em}.app-toast-message{margin-top:2px;font-size:13px;color:var(--slate-500);line-height:1.4}@keyframes app-toast-in{0%{opacity:0;transform:translate(-50%) translateY(16px)}to{opacity:1;transform:translate(-50%) translateY(0)}}@keyframes app-toast-out{0%{opacity:1;transform:translate(-50%) translateY(0)}to{opacity:0;transform:translate(-50%) translateY(12px)}}.confirm-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--overlay);display:flex;align-items:center;justify-content:center;z-index:80;padding:20px;animation:fade-in .2s ease-out}.confirm-modal{width:100%;max-width:400px;background:var(--surface);border-radius:18px;padding:28px 24px 22px;box-shadow:0 18px 40px #0f172a38;text-align:center;animation:topup-pop .35s cubic-bezier(.22,1,.36,1)}.confirm-modal-icon{width:56px;height:56px;margin:0 auto 14px;border-radius:16px;background:var(--red-50);color:var(--red-600);display:flex;align-items:center;justify-content:center}.confirm-modal-icon svg{width:26px;height:26px;display:block}.confirm-modal-icon-success{background:var(--emerald-50);color:var(--emerald-700)}.student-login-created-modal .confirm-modal-text{margin-bottom:16px}.student-login-created-box{background:linear-gradient(180deg,#f3fdf8,#f8fafc);border:1px solid var(--emerald-100);border-radius:12px;padding:12px 14px;margin-bottom:20px;text-align:left}.student-login-created-modal .confirm-modal-actions .btn-block{width:100%}.confirm-modal-title{font-size:20px;font-weight:800;color:var(--slate-900);letter-spacing:-.03em;margin-bottom:8px}.confirm-modal-text{font-size:14px;line-height:1.5;color:var(--slate-500);margin-bottom:22px}.confirm-modal-actions{display:flex;gap:10px}.confirm-modal-actions .btn{flex:1}.tutorial-card{padding:20px;background:var(--surface);box-shadow:var(--shadow);border:1px solid var(--border-soft)}.tutorial-video-wrap{position:relative;width:100%;aspect-ratio:16 / 9;min-height:360px;padding-top:0;border-radius:16px;overflow:hidden;background:#0f172a;box-shadow:var(--shadow-lg)}@supports not (aspect-ratio: 16 / 9){.tutorial-video-wrap{padding-top:56.25%;height:0;min-height:0}}.tutorial-video{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;border:0;display:block}.tutorial-actions{margin-top:16px;display:flex;justify-content:flex-end}.tutorial-placeholder code{font-size:12px;background:var(--slate-100);padding:2px 6px;border-radius:6px}@media (min-width: 1024px){.tutorial-video-wrap{min-height:520px}}@media (max-width: 767px){.tutorial-card{padding:0}.tutorial-video-wrap{min-height:220px;border-radius:12px}.mobile-nav button{min-width:56px;padding:8px 2px}.mobile-nav button small{font-size:9px}}.auth-loading-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;background:var(--overlay);display:flex;align-items:center;justify-content:center;padding:20px;animation:fade-in .18s ease-out}.auth-loading-card{background:var(--surface);border-radius:16px;padding:22px 28px;min-width:180px;box-shadow:0 16px 36px #0f172a33;display:flex;flex-direction:column;align-items:center;gap:12px}.auth-loading-spinner{width:32px;height:32px;border-radius:50%;border:3px solid var(--emerald-100);border-top-color:var(--emerald-600);animation:auth-spin .7s linear infinite}.auth-loading-text{font-size:14px;font-weight:600;color:var(--slate-700)}@keyframes auth-spin{to{transform:rotate(360deg)}}@media (max-width: 480px){.profile-status{align-items:flex-start;flex-wrap:wrap}.profile-status-badge{margin-left:58px}}.btn-outline{background:var(--surface);color:var(--emerald-700);border:1px solid var(--emerald-100)}.btn-outline:hover{background:var(--emerald-50)}.btn-sm{padding:9px 14px;font-size:13px;border-radius:10px}.btn-block{width:100%}.btn:disabled{opacity:.6;cursor:not-allowed}.cards-grid{display:grid;gap:16px;grid-template-columns:1fr}@media (min-width: 640px){.cards-grid{grid-template-columns:repeat(2,1fr)}}@media (min-width: 1200px){.cards-grid{grid-template-columns:repeat(3,1fr)}}.student-card{background:var(--surface);border:1px solid var(--slate-200);border-radius:var(--radius);padding:18px;box-shadow:var(--shadow);display:flex;flex-direction:column;gap:14px;transition:box-shadow .2s ease,transform .2s ease}.student-card:hover{box-shadow:0 4px 12px #0f172a14,0 12px 24px #0f172a0f;transform:translateY(-2px)}.student-card-header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.student-card-identity,.student-summary-main{display:flex;align-items:center;gap:12px;min-width:0}.student-avatar{width:42px;height:42px;border-radius:12px;background:var(--emerald-50);color:var(--emerald-700);font-size:13px;font-weight:800;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;letter-spacing:.02em}.student-avatar-sm{width:36px;height:36px;font-size:12px;border-radius:10px}.student-card-name{font-weight:700;font-size:16px;color:var(--slate-900)}.student-card-grade{color:var(--slate-500);font-size:13px;margin-top:2px}.student-login-box{background:linear-gradient(180deg,#f3fdf8,#f8fafc);border:1px solid var(--emerald-100);border-radius:12px;padding:12px 14px}.student-login-box-empty{background:var(--slate-50);border-color:var(--slate-200)}.student-login-label{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--emerald-700);margin-bottom:8px}.student-login-box-empty .student-login-label{color:var(--slate-500)}.student-login-row{display:flex;align-items:center;justify-content:space-between;gap:10px}.student-login-value{font-family:ui-monospace,Cascadia Code,Segoe UI Mono,Menlo,Consolas,monospace;font-size:18px;font-weight:800;color:var(--slate-900);letter-spacing:.04em;background:transparent;padding:0;word-break:break-all}.student-login-copy{flex-shrink:0;min-width:72px}.student-login-copy.is-copied{background:var(--emerald-50);color:var(--emerald-700);border-color:var(--emerald-100)}.student-card-badges{display:flex;flex-direction:column;gap:6px;align-items:flex-end;flex-shrink:0}.badge-pill{border-radius:999px;font-size:11px;font-weight:700;padding:4px 10px;white-space:nowrap}.badge-pill.badge-emerald{background:var(--emerald-100);color:var(--emerald-700)}.badge-pill.badge-red{background:var(--red-100);color:var(--red-600)}.student-card-stats{display:grid;grid-template-columns:1fr 1fr;gap:12px;padding:14px 0;border-top:1px solid var(--slate-100);border-bottom:1px solid var(--slate-100)}.student-stat-label{color:var(--slate-500);font-size:11px;text-transform:uppercase;letter-spacing:.04em}.student-stat-value{font-weight:700;font-size:16px;color:var(--slate-900);margin-top:2px}.student-card-actions{display:flex;gap:8px}.student-card-actions .btn{flex:1}.student-card-links{display:flex;justify-content:space-between;gap:8px}.list-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 4px;border-top:1px solid var(--slate-100);border-radius:10px;transition:background .15s ease}.list-row:hover{background:var(--slate-50)}.list-row:first-child{border-top:none}.list-row-title{font-weight:600;font-size:14px;color:var(--slate-900)}.list-row-subtitle{color:var(--slate-500);font-size:12px;margin-top:2px}.empty-state{text-align:center;padding:40px 16px;color:var(--slate-500)}.empty-state-icon{width:56px;height:56px;margin:0 auto 12px;border-radius:16px;background:linear-gradient(145deg,var(--emerald-500),var(--emerald-700));color:#fff;display:flex;align-items:center;justify-content:center;box-shadow:0 8px 18px rgba(var(--brand-rgb),.22)}.empty-state-icon svg{width:26px;height:26px}.empty-state-title{font-size:15px;font-weight:800;color:var(--slate-800);letter-spacing:-.02em}.empty-state-text{font-size:13px;line-height:1.45;max-width:28rem;margin:6px auto 0}.empty-state .btn{margin-top:16px}.order-list-row{align-items:flex-start;gap:16px}.order-list-main{min-width:0;flex:1}.order-list-meta{display:flex;flex-direction:column;align-items:flex-end;gap:8px;flex-shrink:0}.order-list-amount{color:var(--slate-900);font-size:14px;white-space:nowrap}@media (max-width: 480px){.order-list-row{flex-direction:column;align-items:stretch}.order-list-meta{flex-direction:row;align-items:center;justify-content:space-between}}.order-row{width:100%;border:none;background:transparent;cursor:pointer;font:inherit;color:inherit;text-align:left}.order-row:hover,.order-row:focus-visible{background:var(--slate-50);outline:none}.badge-pill.badge-amber{background:var(--amber-100);color:var(--amber-600)}.badge-pill.badge-slate{background:var(--slate-100);color:var(--slate-600)}.order-detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.order-items{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.order-item{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:10px 12px;background:var(--slate-50);border-radius:10px}.order-item-main{min-width:0;flex:1}.order-item-name{font-size:14px;font-weight:600;color:var(--slate-800)}.order-item-desc{margin-top:2px;font-size:12px;color:var(--slate-500);line-height:1.4}.order-item-meta{margin-top:4px;font-size:12px;font-weight:700;color:var(--slate-500)}.order-item-price{font-size:14px;font-weight:700;color:var(--slate-700);white-space:nowrap}@media (max-width: 480px){.order-detail-grid{grid-template-columns:1fr}}@media (min-width: 768px){.page{flex-direction:row}.sidebar{display:flex}.main{margin-left:268px;padding:24px 28px 32px}.mobile-nav{display:none}}@media (max-width: 767px){.main{padding-bottom:110px}.topbar{margin-bottom:12px}.card{padding:14px}th,td{min-width:120px;padding:10px 12px}}@media (min-width: 1024px){.main{padding:28px 36px 40px}.card{padding:24px}.metric-hero-value{font-size:40px}}
