body{font-family:var(--mt-font);background:var(--mt-bg);color:var(--mt-text);}
h1,h2,h3,h4,h5,h6,.btn,.stat-val,.brand{font-family:var(--mt-font-head);}
a{color:var(--mt-primary);transition:color .2s}a:hover{color:#000}
.btn{border-radius:var(--mt-radius);transition:all .3s ease;font-weight:600}
.btn-brand{background:var(--mt-accent);border:1px solid var(--mt-accent);color:var(--mt-accent-text);font-weight:700}
.btn-brand:hover,.btn-brand:focus{background:var(--mt-accent-dark);border-color:var(--mt-accent-dark);color:var(--mt-accent-text);transform:translateY(-2px);box-shadow:0 8px 18px rgba(24,29,56,.18)}
.btn-brand:active{transform:translateY(0)}
.btn-outline-brand{border:1px solid var(--mt-primary);color:var(--mt-primary);background:transparent}
.btn-outline-brand:hover{background:var(--mt-primary);color:var(--mt-accent);transform:translateY(-2px)}
.btn-light:hover{transform:translateY(-1px)}
.form-control,.form-select{border-radius:var(--mt-radius);transition:border-color .25s,box-shadow .25s}
.form-control:focus,.form-select:focus{border-color:var(--mt-accent-dark);box-shadow:0 0 0 .22rem rgba(243,221,0,.35)}
.form-check-input:checked{background-color:var(--mt-primary);border-color:var(--mt-primary)}
.nav-tabs .nav-link{color:var(--mt-text);border-radius:0;font-weight:600;transition:all .25s}
.nav-tabs .nav-link.active{border-color:var(--mt-border) var(--mt-border) #fff;border-top:3px solid var(--mt-accent);color:var(--mt-primary)}
.page-item.active .page-link{background:var(--mt-primary);border-color:var(--mt-primary);color:var(--mt-accent)}
.page-link{color:var(--mt-primary);border-radius:0}
.card{border:1px solid var(--mt-border);border-radius:var(--mt-radius);box-shadow:var(--mt-shadow);background:var(--mt-card);transition:box-shadow .3s,transform .3s}
.card-header{background:#fff;font-weight:700;font-family:var(--mt-font-head);border-bottom:1px solid var(--mt-border);box-shadow:inset 4px 0 0 var(--mt-accent);padding-left:1.1rem}
.modal-content,.toast,.alert,.badge,.dropdown-menu{border-radius:var(--mt-radius)}
.alert{border-left-width:4px}
/* ---- admin shell ---- */
.admin-wrap{display:flex;min-height:100vh}
.sidebar{width:260px;background:linear-gradient(180deg,var(--mt-primary),var(--mt-primary-dark));color:#fff;flex-shrink:0;position:sticky;top:0;height:100vh;overflow-y:auto;transition:margin .3s ease}
.sidebar .brand{padding:20px 22px;font-weight:800;font-size:1.05rem;border-bottom:1px solid rgba(255,255,255,.12);display:flex;gap:10px;align-items:center}
.sidebar .brand i{color:var(--mt-accent);font-size:1.5rem;animation:floaty 3s ease-in-out infinite}
.sidebar a.nav-link{color:rgba(255,255,255,.8);padding:11px 22px;display:flex;gap:12px;align-items:center;border-left:3px solid transparent;transition:all .25s ease;position:relative}
.sidebar a.nav-link i{transition:transform .25s}
.sidebar a.nav-link:hover{background:rgba(255,255,255,.07);color:#fff;padding-left:28px;border-left-color:rgba(243,221,0,.5)}
.sidebar a.nav-link:hover i{transform:scale(1.2)}
.sidebar a.nav-link.active{background:rgba(243,221,0,.13);color:var(--mt-accent);border-left-color:var(--mt-accent);font-weight:700}
.sidebar .nav-label{font-size:.7rem;text-transform:uppercase;letter-spacing:.1em;padding:16px 22px 4px;color:rgba(255,255,255,.4)}
.main{flex:1;min-width:0}
.topbar{background:#fff;border-bottom:3px solid var(--mt-accent);padding:12px 24px;display:flex;align-items:center;gap:14px;position:sticky;top:0;z-index:50;box-shadow:0 2px 12px rgba(24,29,56,.06)}
.content{padding:24px}
.sidebar-collapsed .sidebar{margin-left:-260px}
@media(max-width:991px){.sidebar{position:fixed;z-index:1040;margin-left:-260px}.sidebar-open .sidebar{margin-left:0;box-shadow:8px 0 30px rgba(0,0,0,.35)}.sidebar-open::after{content:"";position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:1030;animation:fadeIn .25s}.content{padding:16px}}
/* ---- stat cards ---- */
.stat-card{padding:18px 20px;display:flex;gap:16px;align-items:center;height:100%;position:relative;overflow:hidden}
.stat-card::after{content:"";position:absolute;left:0;bottom:0;height:3px;width:0;background:var(--mt-accent);transition:width .4s ease}
.stat-card:hover{transform:translateY(-6px);box-shadow:0 16px 34px rgba(24,29,56,.16)}
.stat-card:hover::after{width:100%}
.stat-card:hover .stat-icon{transform:scale(1.12) rotate(-6deg)}
.stat-icon{width:52px;height:52px;border-radius:var(--mt-radius);display:grid;place-items:center;font-size:1.5rem;color:#fff;flex-shrink:0;transition:transform .35s cubic-bezier(.34,1.56,.64,1)}
.stat-val{font-size:1.5rem;font-weight:800;line-height:1.1}
.stat-lbl{color:var(--mt-muted);font-size:.82rem}
.bg-g1{background:linear-gradient(135deg,#181d38,#3a4380)}.bg-g2{background:linear-gradient(135deg,#1e9e5a,#35c47a)}
.bg-g3{background:linear-gradient(135deg,#6f42c1,#9b6bde)}.bg-g4{background:linear-gradient(135deg,#d9534f,#ef7c78)}
.bg-g5{background:linear-gradient(135deg,#F3DD00,#ffee55)}.bg-g5 i{color:var(--mt-primary)}.bg-g6{background:linear-gradient(135deg,#0aa2c0,#4cc9e0)}
table.table-modern th{font-size:.78rem;text-transform:uppercase;letter-spacing:.05em;color:var(--mt-muted);white-space:nowrap;background:var(--mt-light)}
table.table-modern td{vertical-align:middle}
table.table-modern tbody tr{transition:background .2s,box-shadow .2s}
table.table-modern tbody tr:hover{background:var(--mt-light);box-shadow:inset 3px 0 0 var(--mt-accent)}
.avatar{width:42px;height:42px;border-radius:50%;object-fit:cover;border:2px solid var(--mt-border);background:#e9eef5;transition:transform .25s}
tr:hover .avatar{transform:scale(1.12)}
.avatar-lg{width:130px;height:150px;border-radius:var(--mt-radius);object-fit:cover;border:4px solid #fff;box-shadow:var(--mt-shadow)}
.profile-hero{background:linear-gradient(120deg,var(--mt-primary),var(--mt-primary-2));color:#fff;border-radius:var(--mt-radius);padding:24px;border-bottom:4px solid var(--mt-accent);position:relative;overflow:hidden}
.profile-hero::after{content:"";position:absolute;right:-60px;top:-60px;width:200px;height:200px;border-radius:50%;background:rgba(243,221,0,.12);animation:floaty 6s ease-in-out infinite}
.empty-state{text-align:center;padding:40px 10px;color:var(--mt-muted)}
.empty-state i{font-size:2.5rem;display:block;margin-bottom:8px;opacity:.5;animation:floaty 3s ease-in-out infinite}
.toast-container{z-index:2000}
.toast.showing,.toast.show{animation:slideInRight .4s ease}
#pageLoader{position:fixed;inset:0;background:rgba(240,251,252,.75);display:none;place-items:center;z-index:3000}
#pageLoader.show{display:grid}
#pageLoader .spinner-border{color:var(--mt-accent-dark);border-width:.35em}
/* ---- public (student corner / verification) ---- */
.pub-nav{background:#fff;color:var(--mt-primary);padding:12px 0;border-bottom:3px solid var(--mt-accent);box-shadow:0 2px 14px rgba(24,29,56,.07);position:sticky;top:0;z-index:60}
.pub-nav a{color:var(--mt-primary);text-decoration:none;font-weight:700}
.pub-nav a:hover{color:#000}
.pub-nav a.small{position:relative}.pub-nav a.small::after{content:"";position:absolute;left:0;bottom:-3px;height:2px;width:0;background:var(--mt-accent);transition:width .3s}.pub-nav a.small:hover::after{width:100%}
.pub-hero{background:linear-gradient(rgba(24,29,56,.82),rgba(24,29,56,.82)),var(--mt-hero-image) center center/cover no-repeat;color:#fff;padding:46px 0 80px}
.pub-hero h1{display:inline-block;position:relative;padding-bottom:10px;animation:fadeUp .6s both}
.pub-hero h1::after{content:"";position:absolute;left:0;bottom:0;height:4px;width:70px;background:var(--mt-accent);animation:growBar .8s .3s both}
.pub-hero p{animation:fadeUp .6s .12s both}
.pub-card{margin-top:-50px;position:relative}
.pub-footer{background:var(--mt-primary);color:rgba(255,255,255,.8);padding:28px 0;margin-top:48px;font-size:.9rem;border-top:4px solid var(--mt-accent)}
.pub-footer a{color:#fff;text-decoration:none}.pub-footer a:hover{color:var(--mt-accent)}
.social a{display:inline-flex;gap:6px;align-items:center;margin:4px 6px;padding:6px 16px;border:1px solid rgba(255,255,255,.35);border-radius:35px;transition:all .3s}
.social a:hover{background:var(--mt-accent);color:var(--mt-accent-text);border-color:var(--mt-accent);transform:translateY(-3px)}
.verified-banner{background:linear-gradient(120deg,#1e9e5a,#35c47a);color:#fff;border-radius:var(--mt-radius);padding:16px 22px;font-weight:800;letter-spacing:.06em;text-align:center;font-size:1.15rem;animation:popIn .6s cubic-bezier(.34,1.56,.64,1) both}
.verified-banner i{display:inline-block;animation:pulse 1.4s ease-in-out 3}
.kv{display:flex;justify-content:space-between;gap:12px;padding:9px 0;border-bottom:1px dashed var(--mt-border);transition:background .2s,padding .2s}
.kv:hover{background:var(--mt-light);padding-left:6px;padding-right:6px}
.kv span:first-child{color:var(--mt-muted)}
/* ---- login background ---- */
.auth-bg{background:linear-gradient(135deg,var(--mt-primary),var(--mt-primary-2));position:relative;overflow:hidden}
.auth-bg::before,.auth-bg::after{content:"";position:absolute;border-radius:50%;background:rgba(243,221,0,.16);animation:floaty 7s ease-in-out infinite}
.auth-bg::before{width:340px;height:340px;left:-90px;top:-80px}
.auth-bg::after{width:260px;height:260px;right:-60px;bottom:-60px;animation-delay:-3s}
.auth-bg>.container{position:relative;z-index:1}
.auth-bg .card{border-top:4px solid var(--mt-accent);animation:fadeUp .6s both}
/* ---- animations ---- */
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
@keyframes fadeUp{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}
@keyframes slideInRight{from{opacity:0;transform:translateX(30px)}to{opacity:1;transform:none}}
@keyframes popIn{0%{opacity:0;transform:scale(.8)}100%{opacity:1;transform:scale(1)}}
@keyframes growBar{from{width:0}to{width:70px}}
@keyframes floaty{0%,100%{transform:translateY(0)}50%{transform:translateY(-12px)}}
@keyframes pulse{0%,100%{transform:scale(1)}50%{transform:scale(1.25)}}
.content.fade-in{animation:none}
.content>*,.pub-card>.row,.pub-card>.card{animation:fadeUp .5s both}
.content>*:nth-child(2){animation-delay:.07s}.content>*:nth-child(3){animation-delay:.14s}.content>*:nth-child(4){animation-delay:.21s}.content>*:nth-child(5){animation-delay:.28s}.content>*:nth-child(n+6){animation-delay:.34s}
.content .row>[class*=col]{animation:fadeUp .55s both}
.content .row>[class*=col]:nth-child(1){animation-delay:.05s}.content .row>[class*=col]:nth-child(2){animation-delay:.12s}.content .row>[class*=col]:nth-child(3){animation-delay:.19s}
.content .row>[class*=col]:nth-child(4){animation-delay:.26s}.content .row>[class*=col]:nth-child(5){animation-delay:.33s}.content .row>[class*=col]:nth-child(n+6){animation-delay:.4s}
.tab-pane.show{animation:fadeUp .4s both}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}
@media print{.no-print,.sidebar,.topbar,.pub-nav,.pub-footer,.btn{display:none!important}body{background:#fff}.card{box-shadow:none}.content{padding:0}.pub-hero{display:none}.pub-card{margin-top:0}*{animation:none!important}}
