@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=Poppins:wght@400;500;600;700&display=swap');

*{
margin:0;
padding:0;
box-sizing:border-box;
}

html{
scroll-behavior:smooth;
}

:root{

--bg:#0b1020;
--card:rgba(255,255,255,0.06);
--card-strong:rgba(255,255,255,0.09);

--border:rgba(255,255,255,0.08);

--text:#ffffff;
--muted:#94a3b8;

--blue:#3b82f6;
--blue-hover:#2563eb;

--red:#ef4444;
--green:#10b981;
--orange:#f59e0b;

--shadow:
0 10px 30px rgba(0,0,0,0.35);

--blur:blur(18px);

}

/* ============================================================
GLOBAL
============================================================ */

body{

font-family:'Inter',sans-serif;

background:
radial-gradient(circle at top left,#1e3a8a 0%,transparent 30%),
radial-gradient(circle at bottom right,#312e81 0%,transparent 30%),
linear-gradient(135deg,#050816,#0b1020);

color:var(--text);

min-height:100vh;

overflow-x:hidden;
}

body::before{

content:"";

position:fixed;

width:500px;
height:500px;

background:#2563eb;

filter:blur(140px);

opacity:0.12;

top:-200px;
left:-200px;

z-index:-1;
}

body::after{

content:"";

position:fixed;

width:500px;
height:500px;

background:#7c3aed;

filter:blur(160px);

opacity:0.10;

bottom:-250px;
right:-200px;

z-index:-1;
}

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

button{

border:none;

cursor:pointer;

transition:
transform 0.2s,
background 0.2s,
box-shadow 0.2s;
}

.primary-btn,
.secondary-btn,
.icon-btn{

transition:
transform 0.2s,
background 0.2s,
box-shadow 0.2s;
}

.primary-btn{

width:100%;

padding:18px;

border-radius:18px;

background:linear-gradient(
135deg,
#3b82f6,
#2563eb
);

color:white;

font-size:16px;
font-weight:600;

box-shadow:
0 10px 25px rgba(37,99,235,0.35);
}

.primary-btn:hover{

transform:translateY(-2px);

box-shadow:
0 14px 35px rgba(37,99,235,0.45);
}

.secondary-btn{

padding:14px 18px;

border-radius:16px;

background:rgba(255,255,255,0.07);

border:1px solid rgba(255,255,255,0.08);

color:white;

text-decoration:none;

transition:0.25s;
}

.secondary-btn:hover{

background:rgba(255,255,255,0.12);

transform:translateY(-2px);
}

/* ============================================================
LOGIN
============================================================ */

.login-body{

display:flex;
justify-content:center;
align-items:center;

min-height:100vh;

padding:40px;
}

.login-wrapper{

width:100%;
max-width:1200px;

display:grid;
grid-template-columns:1fr 480px;

gap:50px;
align-items:center;
}

.login-left h1{

font-size:58px;
font-weight:700;
line-height:1.1;

margin-bottom:25px;
}

.login-left p{

font-size:20px;
line-height:1.7;

color:var(--muted);

max-width:700px;
}

.feature-list{

margin-top:45px;

display:flex;
flex-direction:column;
gap:18px;
}

.feature-item{

background:var(--card);

backdrop-filter:var(--blur);

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

padding:18px 22px;

border-radius:20px;

font-size:17px;

box-shadow:var(--shadow);
}

.login-card{

background:var(--card);

backdrop-filter:var(--blur);

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

padding:40px;

border-radius:34px;

box-shadow:var(--shadow);
}

.login-header{

margin-bottom:30px;
}

.login-header h2{

font-size:34px;
margin-bottom:10px;
}

.login-header p{

color:var(--muted);
line-height:1.6;
}

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

input{

width:100%;

padding:18px 20px;

margin-bottom:18px;

border:none;

outline:none;

border-radius:18px;

background:rgba(255,255,255,0.06);

border:1px solid rgba(255,255,255,0.05);

color:white;

font-size:16px;

transition:0.25s;
}

input:focus{

border-color:rgba(59,130,246,0.6);

background:rgba(255,255,255,0.09);

transform:translateY(-1px);
}

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

.app-layout{

display:flex;

min-height:100vh;
}

.sidebar{

width:280px;

padding:30px;

background:rgba(255,255,255,0.04);

backdrop-filter:blur(20px);

border-right:1px solid rgba(255,255,255,0.06);

position:fixed;

top:0;
left:0;
bottom:0;

z-index:1000;
}

.logo{

font-size:24px;
font-weight:700;

margin-bottom:45px;
}

.sidebar-menu{

display:flex;
flex-direction:column;
gap:14px;
}

.sidebar-menu a{

text-decoration:none;

color:var(--muted);

padding:16px 18px;

border-radius:16px;

transition:0.25s;
}

.sidebar-item{

display:flex;

align-items:center;

gap:12px;

cursor:pointer;

font-weight:500;
}

.sidebar-item.active{

background:
linear-gradient(
135deg,
rgba(59,130,246,0.18),
rgba(124,58,237,0.14)
);

color:white !important;

border:1px solid rgba(255,255,255,0.08);

box-shadow:
0 10px 25px rgba(37,99,235,0.22);
}

.sidebar-menu a:hover{

background:rgba(255,255,255,0.06);

color:white;
}

.main{

margin-left:280px;

padding:40px;

width:100%;
}

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

.topbar{

display:flex;
justify-content:space-between;
align-items:center;

margin-bottom:40px;
}

.page-title h1{

font-size:38px;
margin-bottom:8px;
}

.page-title p{

color:var(--muted);
}

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

.card{

background:var(--card);

backdrop-filter:var(--blur);

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

border-radius:28px;

padding:28px;

box-shadow:var(--shadow);
}

.stats-grid{

display:grid;

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

gap:22px;

margin-bottom:35px;
}

.stat-card{

background:var(--card);

backdrop-filter:var(--blur);

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

padding:28px;

border-radius:26px;

box-shadow:var(--shadow);
}

.stat-card h3{

font-size:15px;

font-weight:500;

color:var(--muted);

margin-bottom:15px;
}

.big-number{

font-size:46px;
font-weight:700;
}

/* ============================================================
EVENTS
============================================================ */

.events-grid{

display:grid;

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

gap:24px;
}

.event-card{

background:var(--card);

backdrop-filter:var(--blur);

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

padding:28px;

border-radius:28px;

box-shadow:var(--shadow);

transition:0.3s;
}

.event-card:hover{

transform:translateY(-4px);

background:rgba(255,255,255,0.08);
}

.event-card h2{

margin-bottom:14px;
}

.event-meta{

display:flex;
flex-direction:column;
gap:10px;

margin-bottom:25px;

color:var(--muted);
}

.event-actions{

display:flex;
gap:12px;
flex-wrap:wrap;
}

/* ============================================================
EMPTY STATE
============================================================ */

.empty-state{

padding:80px 30px;

text-align:center;

background:var(--card);

border:1px dashed rgba(255,255,255,0.12);

border-radius:30px;

backdrop-filter:var(--blur);
}

.empty-state h2{

font-size:32px;

margin-bottom:15px;
}

.empty-state p{

color:var(--muted);

max-width:600px;

margin:auto;

line-height:1.7;
}

/* ============================================================
UPLOAD CARDS
============================================================ */

.upload-card{

background:var(--card);

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

border-radius:26px;

padding:25px;

backdrop-filter:var(--blur);

margin-bottom:25px;
}

.track-card{

position:relative;

margin-top:18px;

background:rgba(255,255,255,0.05);

border:1px solid rgba(255,255,255,0.06);

padding:20px;

border-radius:22px;

transition:0.25s;
}

.track-card:hover{

transform:translateY(-2px);

background:rgba(255,255,255,0.07);
}

.track-top{

display:flex;
justify-content:space-between;
align-items:center;

margin-bottom:18px;
}

.track-order{

background:
linear-gradient(
135deg,
#3b82f6,
#2563eb
);

padding:10px 16px;

border-radius:14px;

font-size:14px;
font-weight:600;

box-shadow:
0 8px 18px rgba(37,99,235,0.35);
}

.track-actions{

display:flex;
gap:10px;
}

.icon-btn{

width:42px;
height:42px;

display:flex;
justify-content:center;
align-items:center;

border-radius:14px;

background:rgba(255,255,255,0.06);

border:1px solid rgba(255,255,255,0.06);

color:white;

text-decoration:none;
}

.icon-btn:hover{

background:rgba(255,255,255,0.12);

transform:translateY(-2px);
}

.track-filename{

font-size:16px;
font-weight:600;

margin-bottom:14px;

word-break:break-word;
}

.track-meta{

display:flex;
justify-content:space-between;
align-items:center;

margin-top:15px;
}

.track-duration{

padding:8px 12px;

border-radius:12px;

background:rgba(255,255,255,0.06);

font-size:13px;

color:#dbeafe;
}

/* ============================================================
AUDIO
============================================================ */

audio{

width:100%;

margin-top:12px;

border-radius:18px;

opacity:0.92;
}

/* ============================================================
INFO BOX
============================================================ */

.info-box{

background:
linear-gradient(
135deg,
rgba(37,99,235,0.18),
rgba(124,58,237,0.16)
);

border:1px solid rgba(255,255,255,0.08);

padding:28px;

border-radius:26px;

margin-bottom:30px;

backdrop-filter:blur(20px);
}

.info-box h3{

margin-bottom:15px;
}

.info-box p{

line-height:1.7;

color:#dbeafe;

margin-bottom:10px;
}

/* ============================================================
TOASTS
============================================================ */

.toast-container{

position:fixed;

top:30px;
right:30px;

z-index:9999;

display:flex;
flex-direction:column;

gap:15px;
}

.toast{

min-width:320px;

padding:18px 22px;

border-radius:18px;

backdrop-filter:blur(20px);

border:1px solid rgba(255,255,255,0.08);

box-shadow:0 10px 30px rgba(0,0,0,0.35);

animation:toastIn 0.4s ease;

font-weight:500;
}

.toast.success{
background:rgba(16,185,129,0.15);
}

.toast.error{
background:rgba(239,68,68,0.15);
}

.toast.warning{
background:rgba(245,158,11,0.15);
}

@keyframes toastIn{

from{
opacity:0;
transform:translateY(-20px);
}

to{
opacity:1;
transform:translateY(0);
}

}

/* ============================================================
PLAYBACK PAGE
============================================================ */

.playback-page{

background:
radial-gradient(
circle at top left,
rgba(37,99,235,0.18),
transparent 35%
),

radial-gradient(
circle at bottom right,
rgba(124,58,237,0.16),
transparent 35%
),

#020617;

padding:40px;

min-height:100vh;

font-family:
Inter,
system-ui,
sans-serif;

overflow-x:hidden;

color:white;
}

.playback-page::before{

content:"";

position:fixed;

inset:0;

background-image:
linear-gradient(
rgba(255,255,255,0.025) 1px,
transparent 1px
),

linear-gradient(
90deg,
rgba(255,255,255,0.025) 1px,
transparent 1px
);

background-size:40px 40px;

pointer-events:none;

z-index:-1;
}

.playback-layout{

max-width:1400px;

margin:auto;

position:relative;

z-index:2;
}

.playback-header{

margin-bottom:40px;
}

.playback-header h1{

font-size:54px;

margin-bottom:15px;
}

.playback-header p{

font-size:20px;

color:#94a3b8;
}

.playback-grid{

display:flex;
flex-direction:column;

gap:25px;
}

#nowPlayingPanel{

position:sticky;
top:20px;

z-index:999;

margin-bottom:30px;

background:
linear-gradient(
135deg,
rgba(37,99,235,0.22),
rgba(124,58,237,0.18)
);

backdrop-filter:blur(20px);

border:1px solid rgba(255,255,255,0.08);

padding:35px;

border-radius:34px;

box-shadow:
0 20px 50px rgba(0,0,0,0.35);

overflow:hidden;
}

.playback-controls{

position:relative;

margin-bottom:30px;

background:
linear-gradient(
135deg,
rgba(15,23,42,0.88),
rgba(30,41,59,0.72)
);

backdrop-filter:blur(20px);

border:1px solid rgba(255,255,255,0.08);

padding:20px;

border-radius:24px;

display:flex;
justify-content:center;
gap:20px;
flex-wrap:wrap;
}

.playback-block{

position:relative;

background:
linear-gradient(
180deg,
rgba(255,255,255,0.07),
rgba(255,255,255,0.04)
);

border:1px solid rgba(255,255,255,0.08);

border-radius:34px;

padding:34px;

backdrop-filter:blur(24px);

overflow:hidden;

transition:0.35s;
}

.playback-block::before{

content:"";

position:absolute;

width:300px;
height:300px;

background:#2563eb;

filter:blur(120px);

opacity:0.08;

top:-120px;
right:-120px;

pointer-events:none;
}

.playback-title{

display:flex;
justify-content:space-between;
align-items:center;

margin-bottom:25px;
}

.playback-order{

display:inline-flex;
align-items:center;

font-size:13px;
font-weight:700;

padding:10px 18px;

border-radius:999px;

background:
linear-gradient(
135deg,
#2563eb,
#7c3aed
);

box-shadow:
0 10px 30px rgba(37,99,235,0.35);

letter-spacing:1px;
}

.track-row{

padding:22px;

border-radius:24px;

background:
linear-gradient(
180deg,
rgba(255,255,255,0.06),
rgba(255,255,255,0.035)
);

margin-bottom:18px;

transition:0.28s;

border:1px solid rgba(255,255,255,0.05);

backdrop-filter:blur(12px);
}

.track-row:hover{

transform:translateY(-2px);

background:
linear-gradient(
180deg,
rgba(37,99,235,0.12),
rgba(255,255,255,0.05)
);
}

.track-row h3{

margin-bottom:14px;
}

.blockDuration{

margin-top:14px;

font-size:14px;

color:#cbd5e1;
}

.playback-notes{

margin-top:18px;

padding:16px;

border-radius:18px;

background:rgba(255,255,255,0.05);

font-size:14px;

line-height:1.7;

color:#dbeafe;
}

/* ============================================================
READY STATUS
============================================================ */

.ready-pill{

display:inline-flex;
align-items:center;
gap:10px;

padding:10px 18px;

border-radius:999px;

font-size:14px;
font-weight:600;
}

.ready{

background:rgba(16,185,129,0.18);

color:#6ee7b7;
}

.waiting{

background:rgba(245,158,11,0.18);

color:#fde68a;
}

.missing{

background:rgba(239,68,68,0.18);

color:#fca5a5;
}

/* ============================================================
RESPONSIVE
============================================================ */

@media(max-width:1000px){

.login-wrapper{
grid-template-columns:1fr;
}

.sidebar{
display:none;
}

.main{
margin-left:0;
padding:25px;
}

}

@media(max-width:900px){

.playback-page{
padding:20px;
}

.playback-header h1{
font-size:38px;
}

#currentTrackName{
font-size:30px !important;
}

#bigTimer{
font-size:40px !important;
}

.playback-controls{
flex-direction:column;
}

.playback-controls button{
width:100% !important;
}
}

@media(max-width:700px){

.login-left h1{
font-size:42px;
}

.topbar{
flex-direction:column;
align-items:flex-start;
gap:20px;
}

.page-title h1{
font-size:32px;
}

.event-actions{
flex-direction:column;
}
}
/* =========================================
   SCHOOL DASHBOARD FIX
========================================= */
/* =========================================
   SCHOOL DASHBOARD FIX
========================================= */

.main-full{

width:100%;

max-width:1600px;

margin:auto;

padding:40px;
}

.school-card{

display:grid;

grid-template-columns:
minmax(0,1fr)
380px;

gap:35px;

align-items:start;

overflow:hidden;
}

.school-left{

width:100%;

min-width:0;
}

.school-right{

width:100%;

position:sticky;

top:30px;
}

.school-upload-box{

background:
linear-gradient(
180deg,
rgba(255,255,255,0.06),
rgba(255,255,255,0.03)
);

border:1px solid rgba(255,255,255,0.08);

border-radius:28px;

padding:28px;

backdrop-filter:blur(18px);

width:100%;
}

.school-upload-box h3{

font-size:28px;

line-height:1.3;

margin-bottom:14px;
}

.school-upload-box p{

color:#cbd5e1;

line-height:1.7;

margin-bottom:20px;

font-size:15px;
}

.school-track-count{

display:inline-flex;
align-items:center;
gap:10px;

padding:12px 18px;

border-radius:999px;

background:rgba(16,185,129,0.18);

color:#6ee7b7;

font-weight:600;

margin-top:15px;
}

.school-track-list{

margin-top:25px;

display:flex;
flex-direction:column;

gap:15px;

width:100%;
}

.school-track-item{

width:100%;

padding:18px;

border-radius:22px;

background:rgba(255,255,255,0.05);

border:1px solid rgba(255,255,255,0.06);

word-break:break-word;

overflow:hidden;
}

.school-track-item audio{

width:100%;

display:block;

margin-top:14px;
}

.upload-area-fix{

display:flex;
flex-direction:column;

align-items:center;

justify-content:center;

text-align:center;

width:100%;
}

.upload-area-fix input[type="file"]{

width:100%;

margin-top:20px;

margin-bottom:10px;
}

.upload-area-fix button{

margin-top:20px;

width:100%;
}

.upload-icon{

font-size:54px;

margin-bottom:20px;
}

/* FIX TOPBAR INSIDE SCHOOL CARD */

.school-card .topbar{

margin-bottom:20px;

gap:20px;
}

/* FIX TRACK ACTIONS */

.track-actions{

display:flex;

flex-wrap:wrap;

gap:10px;
}

/* FIX AUDIO OVERFLOW */

audio{

max-width:100%;
}

/* RESPONSIVE */

@media(max-width:1200px){

.school-card{

grid-template-columns:1fr;
}

.school-right{

position:relative;

top:0;
}

}

@media(max-width:700px){

.main-full{

padding:20px;
}

.school-upload-box{

padding:22px;
}

.school-upload-box h3{

font-size:22px;
}

.track-top{

flex-direction:column;

align-items:flex-start;

gap:15px;
}

.track-meta{

flex-direction:column;

align-items:flex-start;

gap:12px;
}

}

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

.global-footer{

position:fixed;

left:0;
right:0;
bottom:18px;

display:flex;
justify-content:center;
align-items:center;

pointer-events:none;

z-index:5;

color:#94a3b8;

font-size:14px;

opacity:0.9;
}
/* ============================================================
PLAYBACK LAYOUT FIX
============================================================ */

#nowPlayingPanel{

display:flex;
justify-content:space-between;
align-items:flex-start;
gap:40px;

flex-wrap:wrap;

padding:30px !important;
}

.now-playing-left{

flex:1;
min-width:320px;
}

.now-playing-right{

display:flex;
flex-direction:column;
align-items:flex-end;
justify-content:flex-start;

min-width:260px;
}

#currentTrackName{

font-size:64px !important;
line-height:1.05;

word-break:break-word;

margin-top:15px;
}

#bigTimer{

font-size:92px !important;
line-height:1;
}

.playback-controls{

display:flex;
justify-content:center;
align-items:center;
gap:18px;
flex-wrap:wrap;

padding:24px !important;
}

.playback-controls button{

min-width:220px;
max-width:280px;

flex:1;
}

.playback-title{

display:flex;
justify-content:space-between;
align-items:center;

gap:20px;

flex-wrap:wrap;
}

.playback-order{

white-space:nowrap;
}

.playback-block{

overflow:hidden;
}

.track-row{

overflow:hidden;
}

.track-row h3{

word-break:break-word;
}

/* ============================================================
PLAYBACK RESPONSIVE
============================================================ */

@media(max-width:1200px){

#currentTrackName{

font-size:48px !important;
}

#bigTimer{

font-size:72px !important;
}

}

@media(max-width:900px){

#nowPlayingPanel{

flex-direction:column;
}

.now-playing-right{

align-items:flex-start;
}

#currentTrackName{

font-size:36px !important;
}

#bigTimer{

font-size:54px !important;
}

.playback-controls{

flex-direction:column;
}

.playback-controls button{

width:100%;
max-width:100%;
}

}

@media(max-width:600px){

#currentTrackName{

font-size:28px !important;
}

#bigTimer{

font-size:42px !important;
}

.playback-header h1{

font-size:42px !important;
}

}

/* ============================================================
NOW PLAYING MINI MODE
============================================================ */

.now-playing-panel{

transition:
all 0.35s ease;
}

.now-playing-panel.compact{

padding:18px !important;

border-radius:22px !important;
}

.now-playing-panel.compact #currentTrackName{

font-size:24px !important;

margin-bottom:10px !important;
}

.now-playing-panel.compact #bigTimer{

font-size:34px !important;
}

.now-playing-panel.compact #currentTrackMeta{

font-size:14px !important;
}

.now-playing-panel.compact #nextTrackInfo{

font-size:13px !important;
}

.now-playing-panel.compact .now-playing-right{

gap:8px !important;
}