/* ===========================================
GTRADES-AXIS™ STUDENT DASHBOARD
PART 1
=========================================== */

*{
margin:0;
padding:0;
box-sizing:border-box;
font-family:"Poppins",sans-serif;
}

html{
scroll-behavior:smooth;
}

body{
background:#f4f7fb;
color:#1b1b1b;
overflow-x:hidden;
}

/* ===========================================
VARIABLES
=========================================== */

:root{

--primary:#005eff;
--primary-dark:#0040b8;

--dark:#0b1220;
--dark2:#161f2d;

--white:#ffffff;

--light:#f4f7fb;

--border:#e4e8ef;

--success:#18b663;

--danger:#e74c3c;

--warning:#f4b400;

--shadow:0 10px 25px rgba(0,0,0,.08);

--radius:18px;

}

/* ===========================================
LAYOUT
=========================================== */

.dashboard{

display:flex;

min-height:100vh;

background:var(--light);

}

/* ===========================================
SIDEBAR
=========================================== */

.sidebar{

width:270px;

background:var(--dark);

color:#fff;

display:flex;

flex-direction:column;

padding:25px;

position:fixed;

left:0;

top:0;

bottom:0;

overflow-y:auto;

box-shadow:5px 0 25px rgba(0,0,0,.15);

z-index:999;

}

/* Logo */

.brand{

display:flex;

align-items:center;

gap:15px;

margin-bottom:40px;

}

.brand img{

width:55px;

height:55px;

object-fit:contain;

border-radius:12px;

background:#fff;

padding:6px;

}

.brand h2{

font-size:22px;

font-weight:700;

color:#fff;

line-height:1.2;

}

.brand span{

color:#3b82f6;

}

/* ===========================================
MENU
=========================================== */

.menu{

list-style:none;

display:flex;

flex-direction:column;

gap:8px;

}

.menu li{

width:100%;

}

.menu li a{

display:flex;

align-items:center;

gap:14px;

padding:15px 18px;

text-decoration:none;

color:#d5d9e2;

border-radius:14px;

transition:.25s;

font-size:15px;

font-weight:500;

}

.menu li a i{

width:22px;

text-align:center;

font-size:18px;

}

.menu li a:hover{

background:#16243c;

color:#fff;

transform:translateX(4px);

}

.menu li.active a{

background:var(--primary);

color:#fff;

box-shadow:0 10px 20px rgba(0,94,255,.35);

}

/* ===========================================
LOGOUT BUTTON
=========================================== */

#logoutBtn{

margin-top:auto;

border:none;

background:#ef4444;

color:#fff;

padding:15px;

border-radius:14px;

cursor:pointer;

font-size:15px;

font-weight:600;

transition:.25s;

display:flex;

align-items:center;

justify-content:center;

gap:10px;

}

#logoutBtn:hover{

background:#dc2626;

transform:translateY(-2px);

}

/* ===========================================
MAIN CONTENT
=========================================== */

.main-content{

margin-left:270px;

width:calc(100% - 270px);

padding:35px;

min-height:100vh;

}

/* ===========================================
TOPBAR
=========================================== */

.topbar{

display:flex;

justify-content:space-between;

align-items:center;

margin-bottom:35px;

flex-wrap:wrap;

gap:20px;

}

.topbar h1{

font-size:34px;

font-weight:700;

color:#111827;

}

.topbar h1 span{

color:var(--primary);

}

.topbar p{

margin-top:8px;

color:#6b7280;

font-size:15px;

}

.member-badge{

background:linear-gradient(135deg,#005eff,#4f8dff);

color:#fff;

padding:12px 22px;

border-radius:50px;

font-weight:600;

box-shadow:var(--shadow);

white-space:nowrap;

}
/* ===========================================
STATS GRID
=========================================== */

.stats-grid{

display:grid;

grid-template-columns:repeat(auto-fit,minmax(220px,1fr));

gap:25px;

margin-bottom:35px;

}

.stat-card{

background:#fff;

border-radius:18px;

padding:25px;

display:flex;

align-items:center;

gap:20px;

box-shadow:var(--shadow);

transition:.25s;

border:1px solid var(--border);

}

.stat-card:hover{

transform:translateY(-5px);

}

.stat-icon{

width:65px;

height:65px;

border-radius:16px;

display:flex;

align-items:center;

justify-content:center;

background:linear-gradient(135deg,#005eff,#3d7cff);

color:#fff;

font-size:26px;

flex-shrink:0;

}

.stat-card h2{

font-size:30px;

font-weight:700;

color:#111827;

}

.stat-card p{

margin-top:5px;

color:#6b7280;

font-size:14px;

}

/* ===========================================
QUICK ACCESS
=========================================== */

.quick-links{

display:grid;

grid-template-columns:repeat(auto-fit,minmax(260px,1fr));

gap:25px;

margin-bottom:35px;

}

.quick-card{

background:#fff;

border-radius:18px;

padding:28px;

box-shadow:var(--shadow);

transition:.3s;

border:1px solid var(--border);

display:flex;

flex-direction:column;

}

.quick-card:hover{

transform:translateY(-6px);

}

.quick-icon{

width:65px;

height:65px;

background:linear-gradient(135deg,#005eff,#4f8dff);

color:#fff;

display:flex;

align-items:center;

justify-content:center;

font-size:26px;

border-radius:16px;

margin-bottom:20px;

}

.quick-card h3{

font-size:20px;

font-weight:700;

margin-bottom:10px;

color:#111827;

}

.quick-card p{

font-size:14px;

color:#6b7280;

line-height:1.6;

margin-bottom:25px;

}

.quick-card a{

margin-top:auto;

display:inline-flex;

align-items:center;

justify-content:center;

padding:12px 18px;

border-radius:12px;

background:#005eff;

color:#fff;

text-decoration:none;

font-weight:600;

transition:.25s;

}

.quick-card a:hover{

background:#0040b8;

}

/* ===========================================
LATEST SECTION
=========================================== */

.latest-grid{

display:grid;

grid-template-columns:2fr 1fr;

gap:25px;

}

.latest-card{

background:#fff;

border-radius:18px;

padding:25px;

box-shadow:var(--shadow);

border:1px solid var(--border);

min-height:420px;

}

.card-header{

display:flex;

justify-content:space-between;

align-items:center;

margin-bottom:25px;

}

.card-header h2{

font-size:22px;

display:flex;

align-items:center;

gap:10px;

color:#111827;

}

.card-header a{

text-decoration:none;

color:#005eff;

font-weight:600;

}

.card-header a:hover{

text-decoration:underline;

}

/* ===========================================
LOADING
=========================================== */

.loading-card{

display:flex;

align-items:center;

justify-content:center;

height:250px;

color:#6b7280;

font-size:16px;

gap:12px;

}

/* ===========================================
RESOURCE CARD
=========================================== */

.resource-item{

display:flex;

justify-content:space-between;

align-items:center;

padding:18px;

border:1px solid var(--border);

border-radius:14px;

margin-bottom:15px;

transition:.25s;

}

.resource-item:hover{

background:#f8fbff;

}

.resource-left h3{

font-size:17px;

margin-bottom:6px;

}

.resource-left p{

font-size:14px;

color:#6b7280;

}

.resource-download{

background:#005eff;

color:#fff;

padding:10px 18px;

border-radius:10px;

text-decoration:none;

font-weight:600;

transition:.25s;

}

.resource-download:hover{

background:#0040b8;

}
/* ===========================================
ANNOUNCEMENTS
=========================================== */

.announcement{

padding:18px;

margin-bottom:18px;

border-left:5px solid var(--primary);

background:#f8fbff;

border-radius:12px;

transition:.25s;

}

.announcement:hover{

transform:translateX(5px);

}

.announcement h4{

font-size:17px;

margin-bottom:8px;

color:#111827;

}

.announcement p{

font-size:14px;

color:#6b7280;

line-height:1.6;

}

/* ===========================================
FOOTER
=========================================== */

.dashboard-footer{

margin-top:40px;

padding:20px 0;

display:flex;

justify-content:space-between;

align-items:center;

flex-wrap:wrap;

gap:15px;

color:#6b7280;

font-size:14px;

border-top:1px solid var(--border);

}

.footer-right{

font-weight:600;

color:var(--primary);

}

/* ===========================================
BUTTONS
=========================================== */

button{

font-family:"Poppins",sans-serif;

}

.btn{

display:inline-flex;

align-items:center;

justify-content:center;

gap:10px;

padding:12px 20px;

border:none;

border-radius:12px;

cursor:pointer;

font-weight:600;

transition:.25s;

text-decoration:none;

}

.btn-primary{

background:var(--primary);

color:#fff;

}

.btn-primary:hover{

background:var(--primary-dark);

}

.btn-danger{

background:var(--danger);

color:#fff;

}

.btn-danger:hover{

opacity:.9;

}

/* ===========================================
INPUTS
=========================================== */

input,
textarea,
select{

width:100%;

padding:14px 16px;

border:1px solid var(--border);

border-radius:12px;

font-size:15px;

outline:none;

transition:.25s;

background:#fff;

}

input:focus,
textarea:focus,
select:focus{

border-color:var(--primary);

box-shadow:0 0 0 3px rgba(0,94,255,.15);

}

/* ===========================================
TABLES
=========================================== */

table{

width:100%;

border-collapse:collapse;

background:#fff;

border-radius:18px;

overflow:hidden;

}

th{

background:var(--primary);

color:#fff;

padding:16px;

text-align:left;

font-weight:600;

}

td{

padding:16px;

border-bottom:1px solid var(--border);

}

tr:hover{

background:#f8fbff;

}

/* ===========================================
SCROLLBAR
=========================================== */

::-webkit-scrollbar{

width:10px;

height:10px;

}

::-webkit-scrollbar-track{

background:#edf2f7;

}

::-webkit-scrollbar-thumb{

background:#005eff;

border-radius:20px;

}

::-webkit-scrollbar-thumb:hover{

background:#0040b8;

}

/* ===========================================
ANIMATIONS
=========================================== */

@keyframes fadeUp{

from{

opacity:0;

transform:translateY(20px);

}

to{

opacity:1;

transform:translateY(0);

}

}

.stat-card,
.quick-card,
.latest-card{

animation:fadeUp .45s ease;

}

/* ===========================================
UTILITY
=========================================== */

.text-center{

text-align:center;

}

.hidden{

display:none;

}

.mt-20{

margin-top:20px;

}

.mb-20{

margin-bottom:20px;

}

.w-100{

width:100%;

}
/* ===========================================
RESPONSIVE DESIGN
PART 4
=========================================== */

/* ===========================
Large Laptops
=========================== */

@media(max-width:1400px){

.stats-grid{

grid-template-columns:repeat(2,1fr);

}

.quick-links{

grid-template-columns:repeat(2,1fr);

}

.latest-grid{

grid-template-columns:1fr;

}

}

/* ===========================
Laptops
=========================== */

@media(max-width:1100px){

.sidebar{

width:240px;

}

.main-content{

margin-left:240px;

width:calc(100% - 240px);

padding:25px;

}

.topbar h1{

font-size:28px;

}

}

/* ===========================
Tablets
=========================== */

@media(max-width:900px){

.dashboard{

flex-direction:column;

}

.sidebar{

position:fixed;

left:-280px;

top:0;

bottom:0;

width:260px;

transition:.3s;

}

.sidebar.active{

left:0;

}

.main-content{

margin-left:0;

width:100%;

padding:20px;

}

.topbar{

flex-direction:column;

align-items:flex-start;

}

.stats-grid{

grid-template-columns:1fr 1fr;

}

.quick-links{

grid-template-columns:1fr;

}

.latest-grid{

grid-template-columns:1fr;

}

}

/* ===========================
Phones
=========================== */

@media(max-width:768px){

.brand h2{

font-size:18px;

}

.topbar h1{

font-size:24px;

}

.member-badge{

font-size:13px;

padding:10px 18px;

}

.stats-grid{

grid-template-columns:1fr;

gap:18px;

}

.quick-links{

grid-template-columns:1fr;

gap:18px;

}

.stat-card{

padding:18px;

}

.quick-card{

padding:22px;

}

.latest-card{

padding:18px;

}

.card-header{

flex-direction:column;

align-items:flex-start;

gap:10px;

}

.dashboard-footer{

flex-direction:column;

text-align:center;

}

}

/* ===========================
Small Phones
=========================== */

@media(max-width:480px){

.main-content{

padding:15px;

}

.topbar h1{

font-size:22px;

}

.topbar p{

font-size:13px;

}

.brand img{

width:45px;

height:45px;

}

.brand h2{

font-size:17px;

}

.stat-icon{

width:55px;

height:55px;

font-size:22px;

}

.quick-icon{

width:55px;

height:55px;

font-size:22px;

}

.stat-card h2{

font-size:24px;

}

.quick-card h3{

font-size:18px;

}

.latest-card h2{

font-size:20px;

}

.resource-item{

flex-direction:column;

align-items:flex-start;

gap:15px;

}

.resource-download{

width:100%;

text-align:center;

}

#logoutBtn{

padding:14px;

font-size:14px;

}

}

/* ===========================
Ultra Small Devices
=========================== */

@media(max-width:360px){

.topbar h1{

font-size:20px;

}

.stat-card{

padding:15px;

}

.quick-card{

padding:18px;

}

.latest-card{

padding:15px;

}

.brand{

gap:10px;

}

.brand img{

width:40px;

height:40px;

}

.brand h2{

font-size:15px;

}

}

/* ===========================
Mobile Menu Button
=========================== */

.mobile-toggle{

display:none;

position:fixed;

top:18px;

left:18px;

width:48px;

height:48px;

border:none;

border-radius:12px;

background:#005eff;

color:#fff;

font-size:20px;

cursor:pointer;

z-index:9999;

box-shadow:0 8px 20px rgba(0,0,0,.25);

}

@media(max-width:900px){

.mobile-toggle{

display:flex;

align-items:center;

justify-content:center;

}

}

/* ===========================
Smooth Animations
=========================== */

.sidebar,
.stat-card,
.quick-card,
.latest-card,
.resource-item{

transition:all .25s ease;

}
/* ==========================================================
GTRADES-AXIS™
PREMIUM LOCK SYSTEM
========================================================== */

.member-badge{

padding:10px 18px;

border-radius:30px;

font-weight:600;

font-size:14px;

color:#fff;

}

.member-badge.free{

background:#374151;

}

.member-badge.premium{

background:linear-gradient(135deg,#d4af37,#ffd700);

color:#111;

}

.member-badge.admin{

background:linear-gradient(135deg,#2563eb,#1d9bf0);

}

/* ==========================================================
LOCKED CARDS
========================================================== */

.quick-card{

position:relative;

overflow:hidden;

transition:.35s;

}

.quick-card.locked{

opacity:.85;

}

.quick-card.locked::after{

content:"";

position:absolute;

top:0;

left:0;

width:100%;

height:100%;

background:rgba(0,0,0,.35);

backdrop-filter:blur(2px);

pointer-events:none;

}

.lock-badge{

position:absolute;

top:15px;

right:15px;

background:#facc15;

color:#111;

padding:8px 14px;

border-radius:30px;

font-size:12px;

font-weight:700;

z-index:10;

box-shadow:0 5px 15px rgba(0,0,0,.35);

}

.lock-badge i{

margin-right:6px;

}

.quick-card.locked:hover{

transform:translateY(-6px);

}

/* ==========================================================
PREMIUM POPUP
========================================================== */

.premium-popup{

position:fixed;

top:0;

left:0;

width:100%;

height:100%;

background:rgba(0,0,0,.82);

display:flex;

justify-content:center;

align-items:center;

padding:20px;

z-index:99999;

backdrop-filter:blur(8px);

}

.premium-box{

width:100%;

max-width:520px;

background:#111827;

border-radius:22px;

padding:40px;

text-align:center;

border:1px solid rgba(255,255,255,.08);

animation:popup .3s ease;

}

@keyframes popup{

from{

opacity:0;

transform:scale(.9);

}

to{

opacity:1;

transform:scale(1);

}

}

.premium-icon{

font-size:60px;

margin-bottom:20px;

}

.premium-box h2{

font-size:30px;

margin-bottom:15px;

}

.premium-box p{

color:#d1d5db;

margin-bottom:20px;

line-height:1.7;

}

.premium-box ul{

list-style:none;

margin:25px 0;

padding:0;

}

.premium-box li{

padding:10px 0;

border-bottom:1px solid rgba(255,255,255,.05);

}

.premium-actions{

display:flex;

gap:15px;

margin-top:30px;

}

.premium-actions a,

.premium-actions button{

flex:1;

padding:14px;

border:none;

border-radius:12px;

cursor:pointer;

font-size:15px;

font-weight:600;

text-decoration:none;

transition:.3s;

}

.upgrade-btn{

background:#1d9bf0;

color:#fff;

}

#closePremium{

background:#374151;

color:#fff;

}

.premium-actions a:hover,

.premium-actions button:hover{

transform:translateY(-3px);

}
/* ==========================================================
LOCKED RESOURCE
========================================================== */

.locked-resource{

opacity:.85;

position:relative;

}

.locked-resource::after{

content:"";

position:absolute;

left:0;

top:0;

width:100%;

height:100%;

background:rgba(0,0,0,.18);

pointer-events:none;

}

.premium-label{

display:inline-block;

margin-top:8px;

padding:5px 12px;

background:#facc15;

color:#111;

font-size:12px;

font-weight:700;

border-radius:30px;

}

.locked-download{

background:#374151;

color:#fff;

border:none;

padding:12px 18px;

border-radius:10px;

cursor:pointer;

font-weight:600;

transition:.3s;

}

.locked-download:hover{

background:#1d9bf0;

}