:root{color-scheme:light;--bg: #f5f6f8;--surface: #ffffff;--surface-alt: #eef0f3;--text: #1a1d23;--muted: #5b6270;--border: #d7dbe0;--primary: #2563eb;--primary-contrast: #ffffff;--success: #16a34a;--danger: #dc2626;--nav-bg: #111827;--nav-text: #ffffff}:root[data-mode=dark]{color-scheme:dark}*{box-sizing:border-box}html,body{margin:0;padding:0}body{font-family:Segoe UI,system-ui,-apple-system,Roboto,Helvetica,Arial,sans-serif;background:var(--bg);color:var(--text);min-height:100vh;transition:background-color .25s ease,color .25s ease}a{color:var(--primary);text-decoration:none}a:hover{text-decoration:underline}h1,h2,h3,h4{font-weight:600;margin:0 0 12px}button{font:inherit;padding:8px 14px;border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:6px;cursor:pointer;transition:background-color .15s ease,border-color .15s ease,color .15s ease}button:hover:not(:disabled){border-color:var(--primary)}button:disabled{opacity:.55;cursor:not-allowed}button.primary{background:var(--primary);border-color:var(--primary);color:var(--primary-contrast)}button.primary:hover:not(:disabled){filter:brightness(1.06)}input,select{font:inherit;padding:9px 12px;border:1px solid var(--border);border-radius:6px;background:var(--surface);color:var(--text);width:100%}input:focus,select:focus{outline:none;border-color:var(--primary)}code{background:var(--surface-alt);color:var(--text);padding:1px 6px;border-radius:4px;font-size:.9em}.page{padding:24px;max-width:1100px;margin:0 auto}.card{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:24px}.form{display:grid;gap:12px}.form-row{display:grid;gap:4px}.form-row span{font-size:.9rem;color:var(--muted)}.table{width:100%;border-collapse:collapse;font-size:14.5px}.table th{text-align:left;font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);background:var(--surface-alt);padding:13px 16px;border-bottom:1px solid var(--border);white-space:nowrap}.table td{padding:14px 16px;border-bottom:1px solid var(--border);vertical-align:middle}.table tbody tr:last-child td{border-bottom:none}.table tbody tr{transition:background .15s ease}.table tbody tr:hover{background:var(--surface-alt)}.msg{font-size:.92rem}.msg.success{color:var(--success)}.msg.error{color:var(--danger)}.msg.warning{color:#b45309}:root[data-mode=dark] .msg.warning{color:#fbbf24}.sample-links{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:8px 0}.muted{color:var(--muted)}.link-list{line-height:1.9}.page-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.chip{margin-right:6px;padding:3px 10px;font-size:.82rem;background:var(--surface);border:1px solid var(--border);color:var(--muted);border-radius:999px}.chip:hover{color:var(--primary);border-color:var(--primary)}.navbar{display:flex;align-items:center;gap:18px;padding:10px 20px;background:var(--nav-bg);color:var(--nav-text)}.navbar .brand{font-weight:700;font-size:1.05rem;color:var(--nav-text)}.navbar .nav-links{display:flex;gap:14px;align-items:center}.navbar .nav-links a{color:var(--nav-text);opacity:.85}.navbar .nav-links a:hover{opacity:1;text-decoration:none}.navbar .spacer{margin-left:auto;display:flex;gap:14px;align-items:center}.navbar button{background:transparent;border:1px solid rgba(255,255,255,.25);color:var(--nav-text)}.navbar button:hover:not(:disabled){border-color:#fff9}.navbar .user-label{color:var(--nav-text);opacity:.8;font-size:.92rem}.theme-switcher{display:flex;align-items:center;gap:8px}.theme-picker{position:relative}.theme-toggle{width:40px;height:40px;border-radius:999px;border:1px solid var(--border);background:transparent;color:inherit;display:grid;place-items:center;padding:0;cursor:pointer;line-height:1;transition:border-color .2s ease,transform .2s ease,background .2s ease}.theme-toggle:hover{border-color:var(--primary);transform:translateY(-1px)}.theme-menu{position:absolute;top:calc(100% + 10px);right:0;min-width:184px;background:var(--surface);border:1px solid var(--border);border-radius:14px;box-shadow:0 12px 32px #00000038;padding:8px;z-index:1100;max-height:360px;overflow-y:auto}.theme-menu .theme-option{display:flex;align-items:center;gap:10px;width:100%;text-align:left;padding:8px 10px;border:none;background:transparent;color:var(--text);border-radius:10px;font-size:13.5px;font-weight:600;cursor:pointer;transition:background .2s ease}.theme-menu .theme-option:hover,.theme-menu .theme-option.selected{background:var(--surface-alt)}.swatch{width:18px;height:18px;border-radius:50%;background:var(--swatch);box-shadow:inset 0 0 0 1px #00000014;flex:none}.theme-menu .theme-option.selected .swatch{box-shadow:0 0 0 2px var(--surface),0 0 0 4px var(--swatch)}.option-name{flex:1}.check{color:var(--primary);font-weight:700}.login-page{min-height:100vh;display:flex;flex-direction:column}.login-topbar{display:flex;justify-content:flex-end;padding:20px 24px}.login-shell{flex:1;width:100%;max-width:1040px;margin:0 auto;padding:8px 24px 64px;display:grid;grid-template-columns:1.15fr 1fr;gap:48px;align-items:center}.login-hero{display:flex;flex-direction:column;gap:16px}.brand-mark{width:54px;height:54px;border-radius:14px;background:var(--primary);color:var(--primary-contrast);display:grid;place-items:center;font-weight:800;font-size:1.15rem;letter-spacing:-.02em}.login-company{font-size:.85rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin:0}.login-title{font-size:clamp(2.4rem,5vw,3.4rem);font-weight:800;line-height:1.05;letter-spacing:-.02em;margin:0;color:var(--text)}.login-title span{color:var(--primary)}.login-tagline{font-size:1.2rem;font-weight:600;color:var(--primary);margin:0}.login-desc{color:var(--muted);font-size:1rem;line-height:1.65;max-width:500px;margin:0}.login-card{box-shadow:0 12px 32px #0000001f}@media (max-width: 760px){.login-shell{grid-template-columns:1fr;gap:28px;padding-top:8px}}.admin-layout{display:grid;grid-template-columns:240px 1fr;min-height:100vh;background:var(--bg)}.admin-layout.collapsed{grid-template-columns:72px 1fr}.admin-sidebar{background:var(--surface);border-right:1px solid var(--border);padding:20px 14px;position:sticky;top:0;height:100vh;display:flex;flex-direction:column;overflow-y:auto}.admin-sidebar .brand{display:flex;align-items:center;gap:10px;padding:4px 8px 20px;border-bottom:1px solid var(--border);margin-bottom:16px;text-decoration:none}.admin-sidebar .brand .brand-mark{width:40px;height:40px;font-size:.95rem}.brand-name{font-weight:800;font-size:1.1rem;color:var(--text)}.side-nav{display:flex;flex-direction:column;gap:3px;flex:1}.side-link{display:flex;align-items:center;gap:12px;padding:11px 13px;border-radius:10px;font-size:14.5px;font-weight:600;color:var(--muted);text-decoration:none}.side-link:hover{background:var(--surface-alt);color:var(--text)}.side-link--active,.side-link--active:hover{background:var(--primary);color:var(--primary-contrast)}.side-foot{border-top:1px solid var(--border);padding-top:14px;margin-top:14px}.side-user{display:flex;align-items:center;gap:10px;padding:8px;margin-bottom:8px}.side-user-meta{min-width:0}.su-name{color:var(--text);font-size:13.5px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.su-role{font-size:11.5px;color:var(--primary);text-transform:capitalize}.side-logout{display:flex;align-items:center;gap:12px;width:100%;padding:11px 13px;border-radius:10px;background:none;border:1px solid var(--border);color:var(--text);font-weight:600;font-size:14.5px;cursor:pointer}.side-logout:hover{background:var(--surface-alt)}.admin-layout.collapsed .side-label,.admin-layout.collapsed .brand-name,.admin-layout.collapsed .side-user-meta{display:none}.admin-layout.collapsed .side-link,.admin-layout.collapsed .side-logout,.admin-layout.collapsed .brand{justify-content:center}.admin-layout.collapsed .admin-sidebar{padding:20px 10px}.admin-layout.collapsed .brand{padding-left:0;padding-right:0}.admin-layout.collapsed .brand .brand-mark{flex:none}.admin-main{min-width:0;display:flex;flex-direction:column}.admin-topbar{position:sticky;top:0;z-index:100;background:var(--surface);border-bottom:1px solid var(--border);padding:12px 24px;display:flex;align-items:center;gap:14px}.admin-topbar h1{font-size:1.25rem;margin:0}.admin-topbar .spacer{margin-left:auto}.admin-content{padding:24px}.avatar{width:40px;height:40px;border-radius:50%;background:var(--primary);color:var(--primary-contrast);display:grid;place-items:center;font-weight:700;font-size:.9rem;flex:none}.avatar--sm{width:34px;height:34px;font-size:.8rem}.admin-collapse-toggle{display:inline-flex;background:none;border:none;color:var(--text);padding:8px;border-radius:8px;cursor:pointer}.admin-collapse-toggle:hover{background:var(--surface-alt)}.admin-mobile-toggle{display:none;background:none;border:none;color:var(--text);padding:8px;cursor:pointer}.admin-sidebar-close{display:none;background:none;border:none;color:var(--text);align-self:flex-end;margin-bottom:8px}.admin-sidebar-backdrop{display:none}.admin-page{max-width:none}.admin-card{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:20px}.card-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.card-head h3{margin:0}.stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}.stat-card{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:20px;display:flex;align-items:center;gap:16px}.stat-card-icon{width:48px;height:48px;border-radius:12px;display:grid;place-items:center;background:var(--surface-alt);color:var(--primary);flex-shrink:0}.stat-card-value{font-weight:800;font-size:1.7rem;color:var(--text);line-height:1;letter-spacing:-.02em}.stat-card-label{font-size:13px;color:var(--muted);margin-top:4px}@media (max-width: 1100px){.stat-grid{grid-template-columns:repeat(2,1fr)}}@media (max-width: 560px){.stat-grid{grid-template-columns:1fr}}@media (max-width: 900px){.admin-layout,.admin-layout.collapsed{grid-template-columns:1fr}.admin-sidebar{position:fixed;z-index:300;left:0;top:0;height:100vh;width:260px;transform:translate(-100%);transition:transform .22s ease}.admin-sidebar.open{transform:translate(0)}.admin-sidebar-backdrop{display:block;position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;z-index:250}.admin-sidebar-close,.admin-mobile-toggle{display:inline-flex}.admin-collapse-toggle{display:none}}.avatar-img{border-radius:50%;object-fit:cover;flex:none;display:block}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:10px 18px;border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:999px;font-weight:700;font-size:.9rem;cursor:pointer;transition:border-color .2s ease,transform .2s ease,background .2s ease}.btn:hover:not(:disabled){border-color:var(--primary);transform:translateY(-1px)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn--primary{background:var(--primary);border-color:var(--primary);color:var(--primary-contrast)}.btn--primary:hover:not(:disabled){filter:brightness(1.06)}.btn--outline{background:transparent;color:var(--text)}.btn--danger{background:var(--danger);border-color:var(--danger);color:#fff}.btn--danger:hover:not(:disabled){filter:brightness(1.05)}.btn--sm{padding:7px 14px;font-size:.82rem}.btn--ghost{background:transparent;border-color:transparent;color:var(--muted)}.btn--ghost:hover:not(:disabled){color:var(--text);background:var(--surface-alt)}.icon-btn{background:none;border:none;width:34px;height:34px;padding:0;border-radius:10px;display:grid;place-items:center;line-height:0;color:var(--muted);cursor:pointer;transition:background .2s ease,color .2s ease}.icon-btn:hover{background:var(--surface-alt);color:var(--text)}.icon-btn--danger{color:var(--danger)}.icon-btn--danger:hover{background:var(--danger);color:#fff}.profile-photo{display:flex;align-items:center;gap:16px;margin-bottom:8px}.profile-photo-actions{display:flex;flex-direction:column;gap:8px}.admin-grid{display:grid;grid-template-columns:380px 1fr;gap:20px;align-items:start}@media (max-width: 900px){.admin-grid{grid-template-columns:1fr}}.table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;border:1px solid var(--border);border-radius:14px;background:var(--surface);box-shadow:0 1px 2px #0000000a,0 4px 12px -4px #0000000f}.table-wrap .table{min-width:880px}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);display:flex;align-items:center;justify-content:center;z-index:3000;padding:20px;animation:fadeIn .15s ease}.modal{background:var(--surface);border:1px solid var(--border);border-radius:16px;width:100%;max-width:440px;max-height:90vh;display:flex;flex-direction:column;box-shadow:0 24px 60px #0000004d;animation:fadeUp .2s ease}.modal-head{display:flex;align-items:center;justify-content:space-between;padding:18px 22px;border-bottom:1px solid var(--border)}.modal-head h3{margin:0}.modal-x{background:none;border:none;color:var(--muted);padding:6px;border-radius:8px;cursor:pointer;display:grid;place-items:center}.modal-x:hover{background:var(--surface-alt);color:var(--text)}.modal-body{padding:22px;overflow-y:auto}.modal-foot{display:flex;justify-content:flex-end;gap:10px;padding:16px 22px;border-top:1px solid var(--border)}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeUp{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}@media (max-width: 640px){.form-grid{grid-template-columns:1fr}}.admin-content>.page{padding:0;margin:0;max-width:none}.table-actions{display:flex;gap:6px}.form>.btn{justify-self:start}.profile-photo-actions{align-items:flex-start}.combobox{position:relative}.combobox-menu{position:absolute;top:100%;left:0;right:0;margin-top:4px;background:var(--surface);border:1px solid var(--border);border-radius:10px;box-shadow:0 12px 32px #00000038;max-height:200px;overflow-y:auto;z-index:60;padding:4px}.combobox-option{display:block;width:100%;text-align:left;padding:8px 12px;border:none;background:none;color:var(--text);cursor:pointer;font-size:.9rem;border-radius:6px}.combobox-option:hover{background:var(--surface-alt)}.smart-search{display:flex;flex-direction:column;gap:10px;margin-bottom:18px}.smart-search__bar{display:flex;gap:10px}.smart-search__field{position:relative;flex:1}.smart-search__field>svg{position:absolute;left:14px;top:50%;transform:translateY(-50%);color:var(--primary);pointer-events:none}.smart-search__field input{padding-left:42px;padding-right:40px;height:46px;font-size:1rem}.smart-search__clear{position:absolute;right:10px;top:50%;transform:translateY(-50%);background:none;border:none;color:var(--muted);cursor:pointer;padding:5px;border-radius:6px;display:grid;place-items:center}.smart-search__clear:hover{background:var(--surface-alt);color:var(--text)}.smart-search__hints{display:flex;align-items:center;gap:6px;flex-wrap:wrap;font-size:13px;color:var(--muted)}.filter-chip{display:inline-flex;align-items:center;gap:5px;padding:3px 11px;border-radius:999px;background:var(--surface-alt);color:var(--text);font-size:12.5px;font-weight:600}.filter-chip b{color:var(--primary);font-weight:700}.slicers{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:16px}.slicers select{appearance:none;-webkit-appearance:none;-moz-appearance:none;width:auto;min-width:160px;max-width:100%;padding-right:34px;cursor:pointer;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%236b7280' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;background-size:14px 14px;transition:border-color .15s ease,background-color .15s ease,box-shadow .15s ease}.slicers select:hover:not(:disabled){border-color:var(--primary)}.slicers select:focus{border-color:var(--primary);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary) 18%,transparent)}.slicers select option{background:var(--surface);color:var(--text)}.export-options{display:flex;flex-direction:column;gap:8px;margin-top:4px}.export-option{display:flex;align-items:center;gap:12px;padding:12px 14px;border:1px solid var(--border);border-radius:10px;background:var(--surface);text-align:left;cursor:pointer;transition:border-color .15s ease,background-color .15s ease}.export-option:hover:not(:disabled){border-color:var(--primary);background:var(--surface-alt)}.export-option-icon{width:34px;height:34px;border-radius:8px;color:#fff;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:15px;flex-shrink:0}.export-option-meta{display:flex;flex-direction:column}.export-option-meta b{font-size:13px}.export-option-meta small{color:var(--muted);font-size:11.5px}.auth-divider{display:flex;align-items:center;gap:12px;margin:18px 0;color:var(--muted);font-size:13px}.auth-divider:before,.auth-divider:after{content:"";flex:1;height:1px;background:var(--border)}.auth-footer{margin-top:16px;text-align:center;font-size:14px}.auth-footer a{color:var(--primary);font-weight:600}.student-hero{margin-bottom:20px}.student-hero h2{font-size:1.6rem;margin:0}.feature-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.feature-card{padding:20px;text-decoration:none;color:var(--text);transition:transform .15s ease,border-color .15s ease}.feature-card:hover{border-color:var(--primary);transform:translateY(-2px);text-decoration:none}.feature-icon{width:44px;height:44px;border-radius:10px;display:grid;place-items:center;background:var(--surface-alt);color:var(--primary);margin-bottom:12px}@media (max-width: 860px){.feature-grid{grid-template-columns:1fr}}@media (max-width: 640px){.admin-topbar{padding:10px 14px;gap:10px}.admin-topbar h1{font-size:1.05rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.admin-content{padding:16px}.smart-search__bar{flex-direction:column}.smart-search__bar .btn{width:100%}.modal-backdrop{padding:10px}.modal{border-radius:12px}.modal-head{padding:14px 16px}.modal-body{padding:16px}.modal-foot{padding:12px 16px}.modal-foot .btn{flex:1}.login-topbar{padding:14px 16px}.login-shell{padding:0 16px 40px;gap:24px}.login-title{font-size:2.2rem}.login-hero{gap:12px}.stat-card{padding:16px}.stat-card-icon{width:40px;height:40px}}@media (max-width: 400px){.admin-topbar .avatar--sm{display:none}}html{-webkit-text-size-adjust:100%;text-size-adjust:100%}body{-webkit-tap-highlight-color:transparent}button,a,select,label,input{touch-action:manipulation}@media (max-width: 640px){.card-head{flex-direction:column;align-items:stretch;gap:10px}.card-head>div{width:100%}.card-head .btn{flex:1;justify-content:center}.admin-card{padding:14px}.btn,input,select{min-height:44px}.icon-btn{width:40px;height:40px}.admin-content{padding-left:14px;padding-right:14px;padding-bottom:calc(16px + env(safe-area-inset-bottom))}.admin-topbar{padding-top:calc(10px + env(safe-area-inset-top));padding-left:calc(14px + env(safe-area-inset-left));padding-right:calc(14px + env(safe-area-inset-right))}.admin-sidebar{padding-top:calc(20px + env(safe-area-inset-top));padding-bottom:calc(20px + env(safe-area-inset-bottom))}.login-shell{padding-top:calc(8px + env(safe-area-inset-top));padding-bottom:calc(40px + env(safe-area-inset-bottom))}}@media (max-width: 480px){.slicers select{width:100%;min-width:0}.slicers .btn{flex:1}.form-row input,.form-row select{font-size:16px}.table-wrap{border-radius:10px}}
