824 lines
27 KiB
PHP
824 lines
27 KiB
PHP
@extends('layouts.app')
|
|
|
|
@section('title', 'Student Portal')
|
|
|
|
@section('content')
|
|
|
|
<style>
|
|
:root {
|
|
/* Premium Modern Automotive Palette matched from previous page */
|
|
--primary: #3E51B8; /* Tech Blue */
|
|
--primary-light: #0a67df; /* Vibrant Electric Blue */
|
|
--secondary: #BC1A1A; /* Deep Racing Red */
|
|
--secondary-hover: #822424; /* Dark Burnt Red */
|
|
--accent-dark: #753939; /* Muted Crimson */
|
|
--accent-orange: #e36414; /* Warning/Industrial Orange */
|
|
--accent-yellow: #FFE618; /* High-Visibility Electric Yellow */
|
|
--bg-light: #F8FAFC; /* Soft slate light gray */
|
|
|
|
/* Semantic Adjustments */
|
|
--text-main: #1E293B; /* Slate dark grey */
|
|
--text-muted: #64748B; /* Neutral gray */
|
|
--card-border: rgba(62, 81, 184, 0.1);
|
|
}
|
|
|
|
body {
|
|
font-family: 'Inter', 'Segoe UI', Arial, sans-serif;
|
|
color: var(--text-main);
|
|
}
|
|
|
|
h1, h2, h3, h4, h5, h6 {
|
|
font-family: 'Poppins', 'Segoe UI', Arial, sans-serif;
|
|
}
|
|
|
|
.hero {
|
|
position: relative;
|
|
overflow: hidden;
|
|
color: #fff;
|
|
padding: 76px 0 64px;
|
|
text-align: center;
|
|
min-height: 420px;
|
|
display: flex;
|
|
align-items: center;
|
|
}
|
|
|
|
.hero-slideshow {
|
|
position: absolute;
|
|
inset: 0;
|
|
z-index: 0;
|
|
}
|
|
|
|
.hero-slide {
|
|
position: absolute;
|
|
inset: 0;
|
|
background-position: center;
|
|
background-size: cover;
|
|
opacity: 0;
|
|
transform: scale(1);
|
|
transition: opacity 2s ease-in-out, transform 7s ease-out;
|
|
}
|
|
|
|
.hero-slide.active {
|
|
opacity: 1;
|
|
transform: scale(1.09);
|
|
}
|
|
|
|
.hero-overlay {
|
|
position: absolute;
|
|
inset: 0;
|
|
z-index: 1;
|
|
background: linear-gradient(rgba(214, 218, 238, 0.85), rgba(0, 0, 0, 0.6));
|
|
pointer-events: none;
|
|
}
|
|
|
|
.hero > .container {
|
|
position: relative;
|
|
z-index: 2;
|
|
}
|
|
|
|
.hero-dots {
|
|
position: absolute;
|
|
left: 0;
|
|
right: 0;
|
|
bottom: 18px;
|
|
z-index: 3;
|
|
display: flex;
|
|
justify-content: center;
|
|
gap: 10px;
|
|
}
|
|
|
|
.hero-dot {
|
|
width: 10px;
|
|
height: 10px;
|
|
border-radius: 50%;
|
|
border: 2px solid rgba(255, 255, 255, 0.6);
|
|
background: rgba(255, 255, 255, 0.15);
|
|
padding: 0;
|
|
cursor: pointer;
|
|
transition: all 0.3s ease;
|
|
}
|
|
|
|
.hero-dot:hover {
|
|
background: rgba(255, 255, 255, 0.5);
|
|
}
|
|
|
|
.hero-dot.active {
|
|
background: #FFE618;
|
|
border-color: #FFE618;
|
|
width: 26px;
|
|
border-radius: 999px;
|
|
}
|
|
|
|
.hero h1 {
|
|
font-size: clamp(2rem, 4vw, 3rem);
|
|
}
|
|
|
|
.hero-badge {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: 8px;
|
|
background: rgba(255, 255, 255, 0.16);
|
|
border: 1px solid rgba(255, 255, 255, 0.3);
|
|
backdrop-filter: blur(12px);
|
|
-webkit-backdrop-filter: blur(12px);
|
|
color: #FFE618;
|
|
font-size: 12.5px;
|
|
font-weight: 700;
|
|
letter-spacing: 0.08em;
|
|
text-transform: uppercase;
|
|
padding: 8px 18px;
|
|
border-radius: 999px;
|
|
margin-bottom: 18px;
|
|
}
|
|
|
|
.portal-card {
|
|
position: relative;
|
|
display: flex;
|
|
flex-direction: column;
|
|
border: none;
|
|
border-radius: 20px;
|
|
transition: .4s cubic-bezier(0.165, 0.84, 0.44, 1);
|
|
box-shadow: 0 5px 20px rgba(0,0,0,.04);
|
|
border: 1px solid var(--card-border);
|
|
cursor: pointer;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.portal-card::before {
|
|
content: '';
|
|
position: absolute;
|
|
top: 0;
|
|
left: 0;
|
|
right: 0;
|
|
height: 4px;
|
|
background: linear-gradient(90deg, var(--secondary) 0%, var(--accent-orange) 100%);
|
|
transform: scaleX(0);
|
|
transform-origin: left;
|
|
transition: transform 0.4s ease;
|
|
}
|
|
|
|
.portal-card:hover::before {
|
|
transform: scaleX(1);
|
|
}
|
|
|
|
.portal-card:hover {
|
|
transform: translateY(-8px);
|
|
border-color: #5f3131;
|
|
box-shadow: 0 20px 40px rgba(62, 81, 184, 0.14);
|
|
}
|
|
|
|
.portal-icon {
|
|
position: relative;
|
|
width: 70px;
|
|
height: 70px;
|
|
background: #822a32;
|
|
color: #fcfcfc;
|
|
border-radius: 50%;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
font-size: 28px;
|
|
margin: auto;
|
|
box-shadow: 0 8px 18px rgba(130, 42, 50, 0.25);
|
|
transition: 0.4s ease;
|
|
}
|
|
|
|
.portal-icon::after {
|
|
content: '';
|
|
position: absolute;
|
|
inset: -11px;
|
|
z-index: -1;
|
|
border-radius: 50%;
|
|
background: rgba(130, 42, 50, 0.08);
|
|
transition: background-color 0.4s ease, transform 0.4s ease;
|
|
}
|
|
|
|
.portal-card:hover .portal-icon {
|
|
background: linear-gradient(135deg, var(--secondary) 0%, var(--secondary-hover) 100%);
|
|
transform: scale(1.1);
|
|
box-shadow: 0 8px 20px rgba(188, 26, 26, 0.35);
|
|
color: #ffed8b;
|
|
}
|
|
|
|
.portal-card:hover .portal-icon::after {
|
|
background: rgba(188, 26, 26, 0.14);
|
|
transform: scale(1.08);
|
|
}
|
|
|
|
.portal-access-hint {
|
|
display: inline-flex;
|
|
justify-content: center;
|
|
align-items: center;
|
|
gap: 6px;
|
|
margin-top: auto;
|
|
padding-top: 16px;
|
|
border-top: 1px dashed var(--card-border);
|
|
font-size: 13px;
|
|
font-weight: 700;
|
|
color: var(--secondary);
|
|
opacity: 0.75;
|
|
transition: opacity 0.3s ease, color 0.3s ease;
|
|
}
|
|
|
|
.portal-card:hover .portal-access-hint {
|
|
opacity: 1;
|
|
color: var(--secondary-hover);
|
|
}
|
|
|
|
.portal-access-hint i {
|
|
transition: transform 0.3s ease;
|
|
}
|
|
|
|
.portal-card:hover .portal-access-hint i {
|
|
transform: translateX(3px);
|
|
}
|
|
|
|
.btn-portal {
|
|
background: linear-gradient(135deg, var(--secondary) 0%, var(--secondary-hover) 100%);
|
|
color: #fff;
|
|
padding: 13px 34px;
|
|
border-radius: 999px;
|
|
font-weight: 700;
|
|
border: 2px solid rgba(255, 255, 255, 0.9);
|
|
transition: all 0.3s ease;
|
|
}
|
|
|
|
.btn-portal:hover {
|
|
background: linear-gradient(135deg, var(--secondary) 0%, var(--secondary-hover) 100%);
|
|
color: #fff;
|
|
transform: translateY(-3px);
|
|
box-shadow: 0 10px 24px rgba(188, 26, 26, 0.4);
|
|
}
|
|
|
|
.btn-hero-outline {
|
|
background: rgba(255, 255, 255, 0.12);
|
|
color: #fff;
|
|
border: 2px solid rgba(255, 255, 255, 0.7);
|
|
padding: 13px 34px;
|
|
border-radius: 999px;
|
|
font-weight: 700;
|
|
backdrop-filter: blur(10px);
|
|
-webkit-backdrop-filter: blur(10px);
|
|
transition: all 0.3s ease;
|
|
}
|
|
|
|
.btn-hero-outline:hover {
|
|
background: rgba(255, 255, 255, 0.95);
|
|
color: var(--secondary-hover);
|
|
border-color: #fff;
|
|
transform: translateY(-3px);
|
|
}
|
|
|
|
.btn:hover {
|
|
border-color: rgba(255, 255, 255, 0.98);
|
|
}
|
|
|
|
.hero-quick-stats {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
justify-content: center;
|
|
gap: 12px;
|
|
margin-top: 36px;
|
|
}
|
|
|
|
.hero-quick-stat {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: 8px;
|
|
background: rgba(255, 255, 255, 0.1);
|
|
border: 1px solid rgba(255, 255, 255, 0.2);
|
|
backdrop-filter: blur(10px);
|
|
-webkit-backdrop-filter: blur(10px);
|
|
color: #fff;
|
|
font-size: 13.5px;
|
|
font-weight: 600;
|
|
padding: 9px 18px;
|
|
border-radius: 999px;
|
|
transition: transform 0.3s ease, background-color 0.3s ease;
|
|
}
|
|
|
|
.hero-quick-stat:hover {
|
|
transform: translateY(-3px);
|
|
background: rgba(255, 255, 255, 0.16);
|
|
}
|
|
|
|
.hero-quick-stat i {
|
|
color: #FFE618;
|
|
}
|
|
|
|
.modal-content {
|
|
border: none;
|
|
border-radius: 16px;
|
|
box-shadow: 0 20px 40px rgba(0, 0, 0, 0.15);
|
|
}
|
|
|
|
.modal.fade .modal-dialog {
|
|
transform: scale(0.85);
|
|
transition: transform 0.3s ease-out;
|
|
}
|
|
.modal.show .modal-dialog {
|
|
transform: scale(1);
|
|
}
|
|
|
|
.modal-header {
|
|
background: transparent;
|
|
border-bottom: none;
|
|
padding: 25px 25px 10px;
|
|
}
|
|
|
|
.modal-title {
|
|
color: var(--primary);
|
|
font-weight: 700;
|
|
font-size: 1.35rem;
|
|
}
|
|
|
|
.modal-login-icon {
|
|
width: 64px;
|
|
height: 64px;
|
|
border-radius: 50%;
|
|
background: linear-gradient(135deg, var(--secondary) 0%, var(--secondary-hover) 100%);
|
|
color: #FFE618;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
font-size: 24px;
|
|
box-shadow: 0 10px 24px rgba(188, 26, 26, 0.25);
|
|
}
|
|
|
|
.modal-body {
|
|
padding: 10px 25px 20px;
|
|
}
|
|
|
|
.input-group-text {
|
|
background-color: #f8fafc;
|
|
border-color: #cbd5e1;
|
|
color: #64748b;
|
|
border-top-left-radius: 8px;
|
|
border-bottom-left-radius: 8px;
|
|
}
|
|
|
|
.form-label {
|
|
color: #475569;
|
|
font-weight: 500;
|
|
font-size: 0.9rem;
|
|
}
|
|
|
|
.form-control {
|
|
border: 1px solid #cbd5e1;
|
|
padding: 0.65rem 0.75rem;
|
|
font-size: 0.95rem;
|
|
border-top-right-radius: 8px;
|
|
border-bottom-right-radius: 8px;
|
|
transition: all 0.2s ease;
|
|
}
|
|
|
|
.form-control:focus {
|
|
border-color: var(--primary-light);
|
|
box-shadow: 0 0 0 4px rgba(10, 103, 223, 0.15);
|
|
outline: 0;
|
|
}
|
|
|
|
.input-group:focus-within .input-group-text {
|
|
border-color: var(--primary-light);
|
|
color: var(--primary-light);
|
|
}
|
|
|
|
.modal-footer {
|
|
background: transparent;
|
|
border-top: none;
|
|
padding: 0 25px 30px;
|
|
}
|
|
|
|
.btn-modal-cancel {
|
|
background: transparent;
|
|
border: 1.5px solid #cbd5e1;
|
|
color: #64748b;
|
|
font-weight: 600;
|
|
padding: 10px 0;
|
|
transition: all 0.2s;
|
|
width: 100%;
|
|
border-radius: 8px;
|
|
}
|
|
|
|
.btn-modal-cancel:hover {
|
|
background: #f1f5f9;
|
|
color: #334155;
|
|
border-color: #94a3b8;
|
|
}
|
|
|
|
.btn-modal-login {
|
|
background: var(--primary);
|
|
color: #fff;
|
|
border: none;
|
|
font-weight: 600;
|
|
padding: 10px 0;
|
|
box-shadow: 0 4px 12px rgba(62, 81, 184, 0.2);
|
|
transition: all 0.2s;
|
|
width: 100%;
|
|
border-radius: 8px;
|
|
}
|
|
|
|
.btn-modal-login:hover {
|
|
background: linear-gradient(135deg, var(--secondary) 0%, var(--secondary-hover) 100%);
|
|
color: #fff;
|
|
transform: translateY(-1px);
|
|
box-shadow: 0 6px 15px rgba(188, 26, 26, 0.3);
|
|
}
|
|
|
|
.custom-list-item {
|
|
background: rgba(255, 255, 255, 0.7);
|
|
border: 1px solid rgba(0, 0, 0, 0.05);
|
|
transition: all 0.3s ease;
|
|
}
|
|
|
|
.custom-list-item:hover {
|
|
background: #ffffff;
|
|
transform: translateX(5px);
|
|
box-shadow: 0 5px 15px rgba(0,0,0,0.08);
|
|
}
|
|
|
|
.quick-link-icon {
|
|
width: 48px;
|
|
height: 48px;
|
|
background-color: rgb(108, 55, 55);
|
|
color: #fff;
|
|
}
|
|
|
|
.bg-light {
|
|
background: linear-gradient(rgba(162, 190, 255, 0.49), rgba(237, 235, 255, 0.9)), url('https://images.pexels.com/photos/3807277/pexels-photo-3807277.jpeg?auto=compress&cs=tinysrgb&w=1600');
|
|
background-size: cover;
|
|
background-position: center;
|
|
background-repeat: no-repeat;
|
|
background-attachment: fixed;
|
|
color: white;
|
|
}
|
|
|
|
/* Scroll Animations */
|
|
.animate-item {
|
|
opacity: 0;
|
|
will-change: transform, opacity;
|
|
transition: all 0.8s cubic-bezier(0.25, 1, 0.5, 1);
|
|
}
|
|
|
|
.fade-up-init {
|
|
transform: translateY(30px);
|
|
}
|
|
|
|
.fade-in-init {
|
|
transform: scale(0.98);
|
|
}
|
|
|
|
.slide-right-init {
|
|
transform: translateX(30px);
|
|
}
|
|
|
|
.animate-item.animated {
|
|
opacity: 1;
|
|
transform: translate(0) scale(1);
|
|
}
|
|
</style>
|
|
|
|
<!-- HERO SECTION -->
|
|
@php
|
|
$studentHeroSlides = [
|
|
'https://images.pexels.com/photos/3802510/pexels-photo-3802510.jpeg',
|
|
'https://images.unsplash.com/photo-1517524206127-48bbd363f3d7?auto=format&fit=crop&w=1600&q=80',
|
|
'https://images.unsplash.com/photo-1553440569-bcc63803a83d?auto=format&fit=crop&w=1600&q=80',
|
|
'https://images.unsplash.com/photo-1503376780353-7e6692767b70?auto=format&fit=crop&w=1600&q=80',
|
|
'https://images.unsplash.com/photo-1581093803931-46e730e7622e?auto=format&fit=crop&w=1600&q=80',
|
|
];
|
|
@endphp
|
|
<section class="hero">
|
|
<div class="hero-slideshow" aria-hidden="true">
|
|
@foreach($studentHeroSlides as $index => $slideImage)
|
|
<div class="hero-slide {{ $index === 0 ? 'active' : '' }}" style="background-image: url('{{ $slideImage }}');"></div>
|
|
@endforeach
|
|
</div>
|
|
<div class="hero-overlay" aria-hidden="true"></div>
|
|
<div class="hero-dots" aria-hidden="true">
|
|
@foreach($studentHeroSlides as $index => $slideImage)
|
|
<button type="button" class="hero-dot {{ $index === 0 ? 'active' : '' }}" data-slide-index="{{ $index }}" aria-label="Show slide {{ $index + 1 }}"></button>
|
|
@endforeach
|
|
</div>
|
|
<div class="container" style="padding-top: 46px;">
|
|
<div class="animate-item animated fade-up-init">
|
|
<span class="hero-badge"><i class="fa-solid fa-user-graduate"></i> Your Academic Hub</span>
|
|
<h1 class="fw-bold display-5">Student Portal</h1>
|
|
<p class="mt-3 fs-5" style="max-width: 700px; margin: auto;">
|
|
Access your courses, timetable, assignments, examination results,
|
|
payments and profile from one place.
|
|
</p>
|
|
|
|
<div class="d-flex flex-wrap justify-content-center gap-3 mt-4">
|
|
<button onclick="studentlogin()" class="btn btn-portal shadow">
|
|
<i class="fa-solid fa-right-to-bracket me-2"></i>Student Login
|
|
</button>
|
|
<a href="#student-services" class="btn btn-hero-outline">
|
|
<i class="fa-solid fa-compass me-2"></i>Browse Services
|
|
</a>
|
|
</div>
|
|
|
|
<div class="hero-quick-stats">
|
|
<span class="hero-quick-stat"><i class="fa-solid fa-clock"></i> 24/7 Access</span>
|
|
<span class="hero-quick-stat"><i class="fa-solid fa-shield-halved"></i> Secure Login</span>
|
|
<span class="hero-quick-stat"><i class="fa-solid fa-layer-group"></i> 6 Portal Services</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- SERVICES SECTION -->
|
|
<section id="student-services" class="py-5 overflow-hidden">
|
|
<div class="container">
|
|
<div class="text-center mb-5 animate-item fade-up-init">
|
|
<h2 class="fw-bold">Student Services</h2>
|
|
<p class="text-muted">
|
|
Everything you need during your academic journey.
|
|
</p>
|
|
</div>
|
|
|
|
<div class="row g-4 animate-item fade-in-init">
|
|
<div class="col-md-4">
|
|
<div class="card portal-card h-100 text-center p-4" onclick="studentlogin()">
|
|
<div class="portal-icon">
|
|
<i class="fa-solid fa-book"></i>
|
|
</div>
|
|
<h4 class="mt-4 fw-bold">My Courses</h4>
|
|
<p class="text-muted mb-0">View enrolled courses and learning materials.</p>
|
|
<span class="portal-access-hint">Access Portal <i class="fa-solid fa-arrow-right"></i></span>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="col-md-4">
|
|
<div class="card portal-card h-100 text-center p-4" onclick="studentlogin()">
|
|
<div class="portal-icon">
|
|
<i class="fa-solid fa-calendar-days"></i>
|
|
</div>
|
|
<h4 class="mt-4 fw-bold">Class Timetable</h4>
|
|
<p class="text-muted mb-0">Check your weekly lecture schedule.</p>
|
|
<span class="portal-access-hint">Access Portal <i class="fa-solid fa-arrow-right"></i></span>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="col-md-4">
|
|
<div class="card portal-card h-100 text-center p-4" onclick="studentlogin()">
|
|
<div class="portal-icon">
|
|
<i class="fa-solid fa-file-lines"></i>
|
|
</div>
|
|
<h4 class="mt-4 fw-bold">Assignments</h4>
|
|
<p class="text-muted mb-0">Submit assignments and download resources.</p>
|
|
<span class="portal-access-hint">Access Portal <i class="fa-solid fa-arrow-right"></i></span>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="col-md-4">
|
|
<div class="card portal-card h-100 text-center p-4" onclick="studentlogin()">
|
|
<div class="portal-icon">
|
|
<i class="fa-solid fa-square-poll-vertical"></i>
|
|
</div>
|
|
<h4 class="mt-4 fw-bold">Exam Results</h4>
|
|
<p class="text-muted mb-0">View semester and final examination results.</p>
|
|
<span class="portal-access-hint">Access Portal <i class="fa-solid fa-arrow-right"></i></span>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="col-md-4">
|
|
<div class="card portal-card h-100 text-center p-4" onclick="studentlogin()">
|
|
<div class="portal-icon">
|
|
<i class="fa-solid fa-credit-card"></i>
|
|
</div>
|
|
<h4 class="mt-4 fw-bold">Fee Payments</h4>
|
|
<p class="text-muted mb-0">Pay course fees and download payment receipts.</p>
|
|
<span class="portal-access-hint">Access Portal <i class="fa-solid fa-arrow-right"></i></span>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="col-md-4">
|
|
<div class="card portal-card h-100 text-center p-4" onclick="studentlogin()">
|
|
<div class="portal-icon">
|
|
<i class="fa-solid fa-user"></i>
|
|
</div>
|
|
<h4 class="mt-4 fw-bold">Student Profile</h4>
|
|
<p class="text-muted mb-0">Update your personal information securely.</p>
|
|
<span class="portal-access-hint">Access Portal <i class="fa-solid fa-arrow-right"></i></span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- QUICK LINKS (FIXED WITH FONTAWESOME ICONS & RESPONSIVE LAYOUT) -->
|
|
<section class="py-5 position-relative overflow-hidden"
|
|
style=" background-size: cover; background-position: center; background-repeat: no-repeat; background-attachment: fixed; min-height: 25vh; display: flex; align-items: center;">
|
|
|
|
<div class="container py-4">
|
|
<div class="row justify-content-center">
|
|
<div class="col-12 col-md-8 col-lg-6" style="width:100%">
|
|
|
|
<!-- Main Container Card (White Box with Blur) -->
|
|
<div class="p-4 p-md-5 rounded-4 shadow-lg text-dark"
|
|
style="background: rgba(255, 255, 255, 0.9); backdrop-filter: blur(15px); border: 1px solid rgba(255, 255, 255, 0.5);">
|
|
|
|
<!-- Header Area -->
|
|
<div class="d-flex justify-content-between align-items-center mb-4 pb-2 border-bottom">
|
|
<div>
|
|
<h3 class="fw-bold m-0 text-dark">Quick Links</h3>
|
|
<p class="text-muted small m-0">Access important student portals and resources</p>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Links List Container -->
|
|
<div class="d-flex flex-column gap-3">
|
|
|
|
<!-- Item 1 -->
|
|
<a href="#" class="text-decoration-none text-dark p-3 rounded-3 d-flex align-items-center justify-content-between custom-list-item" onclick="studentlogin()">
|
|
|
|
<div class="d-flex align-items-center gap-3">
|
|
<div class="rounded-circle d-flex align-items-center justify-content-center flex-shrink-0 quick-link-icon">
|
|
<i class="fa-solid fa-calendar-days fs-5"></i>
|
|
</div>
|
|
<div>
|
|
<h6 class="fw-bold mb-0 text-dark">Academic Calendar</h6>
|
|
<small class="text-muted">Schedules & important dates</small>
|
|
</div>
|
|
</div>
|
|
|
|
<span class="btn btn-sm btn-outline-dark rounded-pill px-3 ms-2">Open</span>
|
|
</a>
|
|
|
|
<!-- Item 2 -->
|
|
<a href="#" class="text-decoration-none text-dark p-3 rounded-3 d-flex align-items-center justify-content-between custom-list-item" onclick="studentlogin()">
|
|
|
|
<div class="d-flex align-items-center gap-3">
|
|
<div class="rounded-circle d-flex align-items-center justify-content-center flex-shrink-0 quick-link-icon">
|
|
<i class="fa-solid fa-book-bookmark fs-5"></i>
|
|
</div>
|
|
<div>
|
|
<h6 class="fw-bold mb-0 text-dark">Student Handbook</h6>
|
|
<small class="text-muted">Rules, guidelines & policies</small>
|
|
</div>
|
|
</div>
|
|
|
|
<span class="btn btn-sm btn-outline-dark rounded-pill px-3 ms-2">View</span>
|
|
</a>
|
|
|
|
<!-- Item 3 -->
|
|
<a href="#" class="text-decoration-none text-dark p-3 rounded-3 d-flex align-items-center justify-content-between custom-list-item" onclick="studentlogin()">
|
|
|
|
<div class="d-flex align-items-center gap-3">
|
|
<div class="rounded-circle d-flex align-items-center justify-content-center flex-shrink-0 quick-link-icon">
|
|
<i class="fa-solid fa-file-lines fs-5"></i>
|
|
</div>
|
|
<div>
|
|
<h6 class="fw-bold mb-0 text-dark">Examination Notices</h6>
|
|
<small class="text-muted">Timetables & results</small>
|
|
</div>
|
|
</div>
|
|
|
|
<span class="btn btn-sm btn-outline-dark rounded-pill px-3 ms-2">Check</span>
|
|
</a>
|
|
|
|
<!-- Item 4 -->
|
|
<a href="#" class="text-decoration-none text-dark p-3 rounded-3 d-flex align-items-center justify-content-between custom-list-item" onclick="studentlogin()">
|
|
|
|
<div class="d-flex align-items-center gap-3">
|
|
<div class="rounded-circle d-flex align-items-center justify-content-center flex-shrink-0 quick-link-icon">
|
|
<i class="fa-solid fa-headset fs-5"></i>
|
|
</div>
|
|
<div>
|
|
<h6 class="fw-bold mb-0 text-dark">Contact Support</h6>
|
|
<small class="text-muted">Get help & support</small>
|
|
</div>
|
|
</div>
|
|
|
|
<span class="btn btn-sm btn-outline-dark rounded-pill px-3 ms-2">Help</span>
|
|
</a>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- BOTTOM CTA -->
|
|
<section class="py-5 bg-white">
|
|
<div class="container text-center animate-item fade-up-init">
|
|
<h2 class="fw-bold">Ready to Access Your Student Account?</h2>
|
|
<p class="text-muted fs-5">Log in to manage your academic activities and stay updated.</p>
|
|
<button onclick="studentlogin()" class="btn btn-portal mt-3 shadow">
|
|
<i class="fa-solid fa-right-to-bracket me-2"></i>Student Login
|
|
</button>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- LOGIN MODAL -->
|
|
<div class="modal fade" id="studentLoginModal" tabindex="-1" aria-labelledby="studentLoginModalLabel" aria-hidden="true">
|
|
<div class="modal-dialog modal-dialog-centered">
|
|
<div class="modal-content">
|
|
<div class="modal-header d-flex flex-column align-items-center position-relative">
|
|
<button type="button" class="btn-close position-absolute top-0 end-0 m-3" data-bs-dismiss="modal" aria-label="Close"></button>
|
|
<div class="modal-login-icon">
|
|
<i class="fa-solid fa-lock-open"></i>
|
|
</div>
|
|
<h5 class="modal-title text-center mt-3" id="studentLoginModalLabel">
|
|
Student Portal Login
|
|
</h5>
|
|
<p class="text-muted small text-center mb-0">Enter your credentials to continue</p>
|
|
</div>
|
|
<form action="{{ route('student.login.submit') }}" method="POST" id="studentLoginForm">
|
|
@csrf
|
|
|
|
<div class="modal-body">
|
|
<div class="mb-3">
|
|
<label for="username" class="form-label">Username / Student ID</label>
|
|
<div class="input-group">
|
|
<span class="input-group-text"> <i class="fa-solid fa-user-graduate"></i></span>
|
|
<input type="text" name="username" id="username" class="form-control" placeholder="Enter your student ID" required>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="mb-3">
|
|
<label for="password" class="form-label">Password</label>
|
|
<div class="input-group">
|
|
<span class="input-group-text"><i class="fa-solid fa-key"></i></span>
|
|
<input type="password" name="password" id="password" class="form-control" placeholder="Enter your password" required>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="mb-3">
|
|
<label for="pin" class="form-label">Security PIN</label>
|
|
<div class="input-group">
|
|
<span class="input-group-text"><i class="fa-solid fa-shield-halved"></i></span>
|
|
<input type="password" name="pin" id="pin" class="form-control" maxlength="6" placeholder="Enter 4-6 digit PIN" required>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="modal-footer d-flex gap-2 justify-content-center">
|
|
<button type="button" class="btn btn-modal-cancel" data-bs-dismiss="modal">Cancel</button>
|
|
<button type="submit" class="btn btn-modal-login" style="color: #fff; background-color: #5a212af5; border-color: #007bff;"> Login </button>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<script>
|
|
function studentlogin() {
|
|
var myModal = new bootstrap.Modal(document.getElementById('studentLoginModal'));
|
|
myModal.show();
|
|
}
|
|
|
|
document.addEventListener('DOMContentLoaded', function () {
|
|
// Hero Background Slideshow
|
|
const heroSlides = document.querySelectorAll('.hero-slide');
|
|
const heroDots = document.querySelectorAll('.hero-dot');
|
|
if (heroSlides.length > 1) {
|
|
let activeSlide = 0;
|
|
let slideTimer;
|
|
|
|
const goToSlide = (index) => {
|
|
heroSlides[activeSlide].classList.remove('active');
|
|
heroDots[activeSlide]?.classList.remove('active');
|
|
activeSlide = index;
|
|
heroSlides[activeSlide].classList.add('active');
|
|
heroDots[activeSlide]?.classList.add('active');
|
|
};
|
|
|
|
const startSlideTimer = () => {
|
|
clearInterval(slideTimer);
|
|
slideTimer = setInterval(() => {
|
|
goToSlide((activeSlide + 1) % heroSlides.length);
|
|
}, 5500);
|
|
};
|
|
|
|
heroDots.forEach(dot => {
|
|
dot.addEventListener('click', () => {
|
|
goToSlide(parseInt(dot.dataset.slideIndex, 10));
|
|
startSlideTimer();
|
|
});
|
|
});
|
|
|
|
startSlideTimer();
|
|
}
|
|
|
|
const animatedElements = document.querySelectorAll('.animate-item');
|
|
|
|
const observer = new IntersectionObserver((entries) => {
|
|
entries.forEach(entry => {
|
|
if (entry.isIntersecting) {
|
|
entry.target.classList.add('animated');
|
|
observer.unobserve(entry.target);
|
|
}
|
|
});
|
|
}, {
|
|
threshold: 0.10
|
|
});
|
|
|
|
animatedElements.forEach(el => observer.observe(el));
|
|
});
|
|
</script>
|
|
|
|
@endsection |