/* =========================================================
   GITL INDIA PVT. LTD. — School ERP
   3D Animated Login Page · WebForms · VS2012 · .NET 4.5
   ========================================================= */
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%;font-family:'Poppins',Segoe UI,Arial,sans-serif;overflow:hidden}
body{
    background:linear-gradient(135deg,#1e3c72 0%,#2a5298 30%,#6a11cb 65%,#2575fc 100%);
    background-size:400% 400%;
    animation:gradientShift 18s ease infinite;
    position:relative;
}
@keyframes gradientShift{
    0%{background-position:0% 50%}
    50%{background-position:100% 50%}
    100%{background-position:0% 50%}
}

/* ===================== Animated school-themed scene ===================== */
.scene{position:absolute;inset:0;overflow:hidden;perspective:1400px;z-index:0;pointer-events:none}

.float-item{
    position:absolute;
    width:70px;height:70px;
    filter:drop-shadow(0 8px 18px rgba(0,0,0,.35));
    opacity:.95;
    transform-style:preserve-3d;
    animation:floatY 9s ease-in-out infinite, spinY 14s linear infinite;
}
.sch-svg{width:100%;height:100%;display:block}

/* per-icon position, size and timing offsets */
.it1 {top: 8%; left: 6%;  width:80px;height:80px; animation-delay:-0.5s,-1s}
.it2 {top: 15%; right: 8%; width:65px;height:65px; animation-delay:-2s,-3s}
.it3 {top: 70%; left: 10%; width:85px;height:85px; animation-delay:-1s,-4s}
.it4 {top: 78%; right: 12%; width:70px;height:70px; animation-delay:-3s,-2s}
.it5 {top: 40%; left: 4%;  width:55px;height:55px; animation-delay:-4s,-5s}
.it6 {top: 35%; right: 5%; width:90px;height:90px; animation-delay:-5s,-1.5s; opacity:.7}
.it7 {top: 88%; left: 45%; width:65px;height:65px; animation-delay:-2.5s,-3.5s}
.it8 {top: 5%; left: 48%;  width:75px;height:75px; animation-delay:-6s,-2s; opacity:.85}
.it9 {top: 55%; right: 3%; width:70px;height:70px; animation-delay:-1.5s,-4.5s}
.it10{top: 25%; left: 38%; width:60px;height:60px; animation-delay:-3.5s,-5s; opacity:.85}

@keyframes floatY{
    0%,100%{transform:translateY(0) translateX(0) rotate(-6deg)}
    50%    {transform:translateY(-28px) translateX(14px) rotate(6deg)}
}
@keyframes spinY{
    0%  {transform:rotateY(0deg)}
    100%{transform:rotateY(360deg)}
}
/* combine both via nested animation by using one keyframe that mixes movement+rotateY */
.float-item{
    animation:floatBob 9s ease-in-out infinite;
}
@keyframes floatBob{
    0%   {transform:translateY(0)    rotateY(0deg)   rotateZ(-6deg)}
    25%  {transform:translateY(-18px) rotateY(90deg)  rotateZ(2deg)}
    50%  {transform:translateY(-28px) rotateY(180deg) rotateZ(6deg)}
    75%  {transform:translateY(-12px) rotateY(270deg) rotateZ(-2deg)}
    100% {transform:translateY(0)    rotateY(360deg) rotateZ(-6deg)}
}

/* soft glowing orbs behind icons */
.orb{
    position:absolute;border-radius:50%;
    background:radial-gradient(circle at 30% 30%,rgba(255,255,255,.45),rgba(255,255,255,.04) 65%);
    filter:blur(2px);
    animation:orbDrift 14s ease-in-out infinite;
}
.o1{width:300px;height:300px;top:-80px;left:-80px;opacity:.35}
.o2{width:220px;height:220px;bottom:-60px;right:-40px;opacity:.3;animation-delay:-5s}
.o3{width:160px;height:160px;top:55%;left:60%;opacity:.25;animation-delay:-8s}
@keyframes orbDrift{
    0%,100%{transform:translate(0,0) scale(1)}
    50%    {transform:translate(30px,-40px) scale(1.1)}
}

/* ===================== Login card ===================== */
.login-wrap{
    position:relative;z-index:2;
    width:100%;height:100vh;
    display:flex;align-items:center;justify-content:center;
    padding:20px;
}
.login-card{
    width:100%;max-width:960px;
    border-radius:22px;
    background:rgba(255,255,255,.10);
    backdrop-filter:blur(18px) saturate(140%);
    -webkit-backdrop-filter:blur(18px) saturate(140%);
    border:1px solid rgba(255,255,255,.22);
    box-shadow:0 25px 60px rgba(0,0,0,.45);
    transform-style:preserve-3d;
    animation:cardIn .9s cubic-bezier(.2,.9,.3,1.2) both;
    transition:transform .5s ease;
}
@keyframes cardIn{
    0%  {opacity:0;transform:translateY(40px) rotateX(15deg) scale(.92)}
    100%{opacity:1;transform:translateY(0)    rotateX(0)     scale(1)}
}
.login-card:hover{transform:rotateX(2deg) rotateY(-2deg)}
.card-inner{display:flex;min-height:540px;border-radius:22px;overflow:hidden}

/* ===================== Left brand panel ===================== */
.brand-panel{
    flex:1.05;padding:36px 34px;color:#fff;
    background:linear-gradient(160deg,rgba(106,17,203,.92),rgba(37,117,252,.92));
    display:flex;flex-direction:column;justify-content:space-between;
    position:relative;overflow:hidden;
}
.brand-panel::before{
    content:"";position:absolute;width:340px;height:340px;border-radius:50%;
    background:radial-gradient(circle,rgba(255,255,255,.22),transparent 70%);
    top:-120px;right:-120px;animation:pulse 6s ease-in-out infinite;
}
@keyframes pulse{0%,100%{transform:scale(1)}50%{transform:scale(1.15)}}

.brand-top{display:flex;align-items:center;gap:14px;position:relative;z-index:1}
.brand-logo{
    width:60px;height:60px;border-radius:14px;
    background:#fff;padding:6px;object-fit:contain;
    box-shadow:0 10px 25px rgba(0,0,0,.35);
    animation:bob 4.5s ease-in-out infinite;
}
@keyframes bob{0%,100%{transform:translateY(0)}50%{transform:translateY(-6px)}}
.brand-text h1{
    font-size:24px;font-weight:700;letter-spacing:.5px;line-height:1;
}
.brand-text h1 span{color:#ffd86b}
.brand-text small{font-size:11px;letter-spacing:3px;opacity:.85;font-weight:300}

.brand-mid{margin-top:34px;position:relative;z-index:1}
.brand-mid h2{font-size:28px;font-weight:600;line-height:1.2}
.brand-mid h2 .grad{
    background:linear-gradient(90deg,#ffd86b,#ff9c6b);
    -webkit-background-clip:text;background-clip:text;
    -webkit-text-fill-color:transparent;color:transparent;
}
.tagline{margin-top:10px;opacity:.9;font-weight:300;font-size:13.5px;line-height:1.55}

.feature-list{list-style:none;margin-top:24px;display:flex;flex-direction:column;gap:11px}
.feature-list li{display:flex;align-items:center;font-size:13.5px;opacity:.95}
.dot{width:8px;height:8px;border-radius:50%;background:#ffd86b;margin-right:12px;box-shadow:0 0 12px #ffd86b}

.brand-foot{font-size:11.5px;opacity:.75;margin-top:24px;position:relative;z-index:1}

/* ===================== Right form panel ===================== */
.form-panel{
    flex:1;padding:46px 44px;background:rgba(255,255,255,.96);
    display:flex;flex-direction:column;justify-content:center;
}
.form-panel h2{font-size:28px;color:#1e2a4a;font-weight:600}
.sub{color:#6b7280;font-size:13px;margin:6px 0 24px}

.field{margin-bottom:16px}
.field label{display:block;font-size:13px;color:#374151;font-weight:500;margin-bottom:6px}
.input-wrap{
    position:relative;display:flex;align-items:center;
    background:#f3f5fb;border:1px solid #e3e7f1;border-radius:12px;
    transition:all .25s ease;
}
.input-wrap:focus-within{
    background:#fff;border-color:#6a11cb;
    box-shadow:0 0 0 4px rgba(106,17,203,.12);
    transform:translateY(-1px);
}
.icn{width:20px;height:20px;fill:#8a93a6;margin:0 10px 0 14px;flex-shrink:0}
.input-wrap input[type=text],
.input-wrap input[type=password]{
    flex:1;border:none;background:transparent;outline:none;
    padding:13px 10px 13px 0;font-size:14px;color:#1e2a4a;font-family:inherit;
}

/* eye toggle button */
.toggle-eye{
    background:transparent;border:none;cursor:pointer;
    padding:0 14px;display:flex;align-items:center;justify-content:center;
    height:46px;color:#8a93a6;transition:color .2s ease,transform .2s ease;
}
.toggle-eye:hover{color:#6a11cb;transform:scale(1.1)}
.toggle-eye:focus{outline:none}
.eye-svg{width:20px;height:20px;fill:currentColor;display:inline-block}

.vmsg{display:block;color:#e02b3a;font-size:12px;margin-top:5px}

.row-between{display:flex;justify-content:space-between;align-items:center;margin:6px 0 22px;font-size:13px}
.chk{display:flex;align-items:center;color:#4b5563;cursor:pointer}
.chk input{margin-right:6px;accent-color:#6a11cb}
.forgot{color:#6a11cb;text-decoration:none;font-weight:500}
.forgot:hover{text-decoration:underline}

.btn-login{
    width:100%;border:none;cursor:pointer;color:#fff;
    padding:14px;font-size:14px;font-weight:600;letter-spacing:1.2px;
    border-radius:12px;
    background:linear-gradient(135deg,#6a11cb 0%,#2575fc 100%);
    background-size:200% auto;
    box-shadow:0 10px 25px rgba(106,17,203,.45);
    transition:all .35s ease;
}
.btn-login:hover{
    background-position:right center;
    transform:translateY(-2px) rotateX(6deg);
    box-shadow:0 16px 30px rgba(37,117,252,.55);
}
.btn-login:active{transform:translateY(0) scale(.98)}

.divider{
    text-align:center;margin:22px 0 14px;position:relative;color:#9aa3b5;font-size:12px;
}
.divider::before,.divider::after{
    content:"";position:absolute;top:50%;width:42%;height:1px;background:#e3e7f1;
}
.divider::before{left:0}.divider::after{right:0}
.divider span{background:transparent;padding:0 10px}

.extras{text-align:center;font-size:13px;color:#4b5563}
.extras a{color:#6a11cb;font-weight:500;text-decoration:none}
.extras a:hover{text-decoration:underline}

.alert-error{
    background:#fff0f1;border:1px solid #ffd0d4;color:#b8232f;
    padding:10px 14px;border-radius:10px;font-size:13px;margin-bottom:16px;
    animation:shake .4s ease;
}
@keyframes shake{
    0%,100%{transform:translateX(0)}
    25%{transform:translateX(-6px)}
    75%{transform:translateX(6px)}
}

/* ===================== Responsive ===================== */
@media (max-width:820px){
    .card-inner{flex-direction:column}
    .brand-panel{padding:28px}
    .form-panel{padding:32px 26px}
    .feature-list{display:none}
    .float-item{width:50px!important;height:50px!important}
    html,body{overflow:auto}
}
