@font-face {
  font-family: 'ibmmono';
  src: url('../fonts/IBMPlexMono-Medium.ttf');
  font-weight: normal;
  font-style: normal;
}

@view-transition { navigation: auto; }  


@keyframes fadeOut {
  from { opacity: 1;}
  to {opacity: 1;}
}



@keyframes fadeIn {
  from { opacity: 0; }
  to { opacity: 1; }
}

@-webkit-keyframes slide-in-blurred-top {
  0% {
    -webkit-transform: translateY(-1000px) scaleY(2.5) scaleX(0.2);
            transform: translateY(-1000px) scaleY(2.5) scaleX(0.2);
    -webkit-transform-origin: 50% 0%;
            transform-origin: 50% 0%;
    -webkit-filter: blur(40px);
            filter: blur(40px);
    opacity: 0;
  }
  100% {
    -webkit-transform: translateY(0) scaleY(1) scaleX(1);
            transform: translateY(0) scaleY(1) scaleX(1);
    -webkit-transform-origin: 50% 50%;
            transform-origin: 50% 50%;
    -webkit-filter: blur(0);
            filter: blur(0);
    opacity: 1;
  }
}
@keyframes slide-in-blurred-top {
  0% {
    -webkit-transform: translateY(-1000px) scaleY(2.5) scaleX(0.2);
            transform: translateY(-1000px) scaleY(2.5) scaleX(0.2);
    -webkit-transform-origin: 50% 0%;
            transform-origin: 50% 0%;
    -webkit-filter: blur(40px);
            filter: blur(40px);
    opacity: 0;
  }
  100% {
    -webkit-transform: translateY(0) scaleY(1) scaleX(1);
            transform: translateY(0) scaleY(1) scaleX(1);
    -webkit-transform-origin: 50% 50%;
            transform-origin: 50% 50%;
    -webkit-filter: blur(0);
            filter: blur(0);
    opacity: 1;
  }
}


@-webkit-keyframes tracking-in-expand {
  0% {
    letter-spacing: -0.5em;
    opacity: 0;
  }
  40% {
    opacity: 0.6;
  }
  100% {
    opacity: 1;
  }
}

/* ----------------------------------------------
 * Generated by Animista on 2026-2-9 14:19:30
 * Licensed under FreeBSD License.
 * See http://animista.net/license for more info. 
 * w: http://animista.net, t: @cssanimista
 * ---------------------------------------------- */

/**
 * ----------------------------------------
 * animation swing-in-top-fwd
 * ----------------------------------------
 */
@-webkit-keyframes swing-in-top-fwd {
  0% {
    -webkit-transform: rotateX(-100deg);
            transform: rotateX(-100deg);
    -webkit-transform-origin: top;
            transform-origin: top;
    opacity: 0;
  }
  100% {
    -webkit-transform: rotateX(0deg);
            transform: rotateX(0deg);
    -webkit-transform-origin: top;
            transform-origin: top;
    opacity: 1;
  }
}
@keyframes swing-in-top-fwd {
  0% {
    -webkit-transform: rotateX(-100deg);
            transform: rotateX(-100deg);
    -webkit-transform-origin: top;
            transform-origin: top;
    opacity: 0;
  }
  100% {
    -webkit-transform: rotateX(0deg);
            transform: rotateX(0deg);
    -webkit-transform-origin: top;
            transform-origin: top;
    opacity: 1;
  }
}


@keyframes tracking-in-expand {
  0% {
    letter-spacing: -0.5em;
    opacity: 0;
  }
  40% {
    opacity: 0.6;
  }
  100% {
    opacity: 1;
  }
}



@keyframes notifFade {
  0%   { opacity: 0; transform: translateY(-8px); }
  10%  { opacity: 1; transform: translateY(0); }
  85%  { opacity: 1; transform: translateY(0); }
  100% { opacity: 0; transform: translateY(-8px); }
}

@keyframes notifBar {
  from { transform: scaleX(1); }
  to   { transform: scaleX(0); }
}



.notification.fadeOut {


 opacity: 0;



}



.notification {
transition: opacity 0.4s linear;
width: 20vw;
position: absolute;
min-height: 10vh;
z-index: 9999;
top: 2vh;
border-radius: 0.5vw;

 background: linear-gradient(
    135deg,
    rgba(255,255,255,0.05),
    rgba(20,20,30,0.6)
  );
overflow: hidden;
  backdrop-filter: blur(18px);
  -webkit-backdrop-filter: blur(18px);

  border: 1px solid rgba(255,255,255,0.15);
padding: 1vh 1vw;
  box-shadow:
    0 12px 40px rgba(0,0,0,0.6),
    0 0 30px rgba(255,255,255,0.05);

font-family: ibmmono;



  }



.notification h1,
.notification h2{
  margin: 0;                   
  padding: 0;
  line-height: 1.2;
}


.notification h2 {
position: absolute;
padding-left: 2.5vw;

top: 5.3vh;
font-size: 0.9vw;
opacity: 0.6;


}


.notification.success h1 {
padding-top: 1vh;
padding-left: 2.5vw;
font-size: 1.2vw;
color: rgb(4, 255, 0);


}

.notification.failed h1 {
padding-top: 1vh;
padding-left: 2.5vw;
font-size: 1.2vw;
color: rgb(240, 15, 15);


}







.notification svg {
  position: absolute;
  left: 0.3vw;         /* adjust if needed */
  top: 2vh;        /* adjust for vertical alignment */

  width: 1.8vw;
  height: 1.8vw;


  
}

.notification.success svg {
 

  fill: #00ff66;
  
}

.notification.failed svg {
 

  fill: #f00f0f;
  
}

.notification.failed {
box-shadow:
    0 18px 60px rgba(0,0,0,0.55),
    0 0 28px rgba(240, 15, 15, 0.50);

}


.notification.success {
box-shadow:
    0 18px 60px rgba(0,0,0,0.55),
    0 0 28px rgba(0, 255, 140, 0.18);

}



.notification.success::after {
  content: "";
  position: absolute;
  left: 0;
  bottom: 0;

  height: 3px;
  width: 100%;

  background: rgb(4, 255, 0);
  transform-origin: left;
  transform: scaleX(1);

  animation: notifBar 3s linear reverse;
}

.notification.failed::after {
  content: "";
  position: absolute;
  left: 0;
  bottom: 0;

  height: 3px;
  width: 100%;

  background: rgb(240, 15, 15);
  transform-origin: left;
  transform: scaleX(1);

  animation: notifBar 3s linear reverse;
}




.container {
    -webkit-animation: slide-in-blurred-top 1s cubic-bezier(0.230, 1.000, 0.320, 1.000) both;
	        animation: slide-in-blurred-top 1s cubic-bezier(0.230, 1.000, 0.320, 1.000) both;
} 


body {
    font-family: 'ibmmono';
    background-color: rgb(11, 11, 11);
    color: white;
    display: flex;
    
  justify-content: center; 
  align-items: center;     
  height: 100vh;           
  margin: 0;
    
}
 

.container {
    width: 65vw;
    height: 65vh;
           
  
    
  
    background-color: rgba(193, 185, 185, 0.001);
    backdrop-filter: blur(4px);
    display: flex;
    align-items: center; 
    flex-direction: column;
    justify-content: center;
    border: white solid 0.15vw;

}

#logintext {
font-size: 4vh,4vw;

-webkit-animation: tracking-in-expand 0.7s cubic-bezier(0.250, 0.460, 0.450, 0.940) both;
	        animation: tracking-in-expand 0.7s cubic-bezier(0.250, 0.460, 0.450, 0.940) both;
animation-delay: 0.7s;

}



input {
padding-left: 0.5vw;
    -webkit-animation: swing-in-top-fwd 5s cubic-bezier(0.175, 0.885, 0.320, 1.275) both;
	        animation: swing-in-top-fwd 5s cubic-bezier(0.175, 0.885, 0.320, 1.275) both;
border: white solid 2px;
color: white;
background-color: transparent;
font-family: 'ibmmono';
width: 20vw;
height: 8vh;
font-size: 2vw;
transition: scale 0.2s ease-in-out;
margin-bottom: 2vw;

}
input:focus {
  outline: none;
  scale: 1.05;
  
}




#particles-js {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    z-index: -1; 
    background-color: rgb(11, 11, 11);
}


h2 {
  font-size: 1.5vw;
  position: relative;
  top: 7vh;
  margin-bottom: 10vh;
  
}

a {
  text-decoration: none;
  color: rgb(0, 42, 255);
  display: inline-block;
  transform-origin: center;
  transition: transform 0.2s ease-in-out, text-shadow 0.2s ease-in-out;
  will-change: transform;
}

a:hover {
  transform: scale(1.1);
  text-shadow: 0 0 15px #0f39e4;
  z-index: 10;
}



h1 {
  font-size: 2vw
}


button {
  font-family: ibmmono;
  color: white;
  border: white solid 2px;
  background-color: transparent;
  width: 15vw;
  height: 10vh;
  font-size: 2vw;
  transition: transform ease-in-out 0.2s;
}


button:hover {
  cursor: pointer;
  transform: scale(1.1);
}



form {
    display: flex;
    flex-direction: column;  
    align-items: center;     
  }