.w3s-form {
  --w3s-form-bg: #0d0d0d;
  --w3s-form-primary: #39d091;
  --w3s-form-secondary: #a855f7;
  --w3s-form-text: #e5e5e5;
  --w3s-form-font: "Fira Code", Consolas, "Courier New", Courier, monospace;
  --w3s-form-glitch-duration: 0.5s;

  display: flex;
  justify-content: center;
  align-items: center;
  font-family: var(--w3s-form-font);
  background-color: #050505;
}

.w3s-form__card {
  background-color: var(--w3s-form-bg);
  width: 100%;
  max-width: 380px;
  border: 1px solid rgba(0, 242, 234, 0.2);
  box-shadow:
    0 0 20px rgba(0, 242, 234, 0.1),
    inset 0 0 10px rgba(0, 0, 0, 0.5);
  overflow: hidden;
  margin: 1rem;
}

.w3s-form__card--disintegrating {
  animation: w3s-form-disintegrate 0.5s ease-out forwards;
}

@keyframes w3s-form-disintegrate {
  0% {
    opacity: 1;
    transform: translateY(0) scale(1);
    filter: blur(0);
  }
  100% {
    opacity: 0;
    transform: translateY(-16px) scale(1.05);
    filter: blur(10px);
  }
}

.w3s-form__header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  background-color: rgba(0, 0, 0, 0.3);
  padding: 0.5em 1em;
  border-bottom: 1px solid rgba(0, 242, 234, 0.2);
}

.w3s-form__title {
  color: var(--w3s-form-primary);
  font-size: var(--fs-small);
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  display: flex;
  align-items: center;
  gap: 0.5em;
}

.w3s-form__title svg {
  width: 1.2em;
  height: 1.2em;
  stroke: var(--w3s-form-primary);
}

.w3s-form__dots span {
  display: inline-block;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background-color: #333;
  margin-left: 5px;
}

.w3s-form__body {
  padding: 1.5rem;
}

.w3s-form__group {
  position: relative;
  margin-bottom: 1.5rem;
}

.w3s-form__error {
  display: block;
  font-size: var(--fs-small);
  color: #ff6767;
  margin-top: 0.5rem;
  min-height: 1.25em;
  opacity: 0;
  transition: opacity 0.2s ease;
}

.w3s-form__error--visible {
  opacity: 1;
}

.w3s-form__label {
  position: absolute;
  top: 0.75em;
  left: 0;
  font-size: var(--fs-body);
  color: var(--w3s-form-primary);
  opacity: 0.6;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  pointer-events: none;
  transition: all 0.3s ease;
}

.w3s-form__input {
  width: 100%;
  background: transparent;
  border: none;
  border-bottom: 2px solid rgba(0, 242, 234, 0.3);
  padding: 0.75em 0;
  font-size: var(--fs-body);
  color: var(--w3s-form-text);
  font-family: inherit;
  outline: none;
  transition: border-color 0.3s ease;
}

.w3s-form__input:focus {
  border-color: var(--w3s-form-primary);
}

.w3s-form__input:focus + .w3s-form__label,
.w3s-form__input:not(:placeholder-shown) + .w3s-form__label {
  top: -1.2em;
  font-size: var(--fs-small);
  opacity: 1;
}

.w3s-form__input:focus + .w3s-form__label::before,
.w3s-form__input:focus + .w3s-form__label::after {
  content: attr(data-text);
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-color: var(--w3s-form-bg);
}

.w3s-form__input:focus + .w3s-form__label::before {
  color: var(--w3s-form-secondary);
  animation: w3s-form-glitch var(--w3s-form-glitch-duration)
    cubic-bezier(0.25, 0.46, 0.45, 0.94) both;
}

.w3s-form__input:focus + .w3s-form__label::after {
  color: var(--w3s-form-primary);
  animation: w3s-form-glitch var(--w3s-form-glitch-duration)
    cubic-bezier(0.25, 0.46, 0.45, 0.94) reverse both;
}

@keyframes w3s-form-glitch {
  0% {
    transform: translate(0);
    clip-path: inset(0 0 0 0);
  }
  20% {
    transform: translate(-5px, 3px);
    clip-path: inset(50% 0 20% 0);
  }
  40% {
    transform: translate(3px, -2px);
    clip-path: inset(20% 0 60% 0);
  }
  60% {
    transform: translate(-4px, 2px);
    clip-path: inset(80% 0 5% 0);
  }
  80% {
    transform: translate(4px, -3px);
    clip-path: inset(30% 0 45% 0);
  }
  100% {
    transform: translate(0);
    clip-path: inset(0 0 0 0);
  }
}

.w3s-form__submit {
  width: 100%;
  padding: 0.8em;
  margin-top: 1rem;
  background-color: transparent;
  border: 2px solid var(--w3s-form-primary);
  color: var(--w3s-form-primary);
  font-family: inherit;
  font-size: 1rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.2em;
  cursor: pointer;
  position: relative;
  transition: all 0.3s;
  overflow: hidden;
}

.w3s-form__submit:hover,
.w3s-form__submit:focus {
  background-color: var(--w3s-form-primary);
  color: var(--w3s-form-bg);
  box-shadow: 0 0 25px var(--w3s-form-primary);
  outline: none;
}

.w3s-form__submit:active {
  transform: scale(0.97);
}

.w3s-form__submit-label {
  position: relative;
  z-index: 1;
  transition: opacity 0.2s ease;
}

.w3s-form__submit:hover .w3s-form__submit-label {
  opacity: 0;
}

.w3s-form__submit::before,
.w3s-form__submit::after {
  content: attr(data-text);
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  opacity: 0;
  background-color: var(--w3s-form-primary);
  transition: opacity 0.2s ease;
}

.w3s-form__submit:hover::before,
.w3s-form__submit:focus::before {
  opacity: 1;
  color: var(--w3s-form-secondary);
  animation: w3s-form-glitch var(--w3s-form-glitch-duration)
    cubic-bezier(0.25, 0.46, 0.45, 0.94) both;
}

.w3s-form__submit:hover::after,
.w3s-form__submit:focus::after {
  opacity: 1;
  color: var(--w3s-form-bg);
  animation: w3s-form-glitch var(--w3s-form-glitch-duration)
    cubic-bezier(0.25, 0.46, 0.45, 0.94) reverse both;
}

.w3s-form__success {
  display: none;
}

.w3s-form__success--visible {
  display: block;
}

@media (prefers-reduced-motion: reduce) {
  .w3s-form__input:focus + .w3s-form__label::before,
  .w3s-form__input:focus + .w3s-form__label::after,
  .w3s-form__submit:hover::before,
  .w3s-form__submit:focus::before,
  .w3s-form__submit:hover::after,
  .w3s-form__submit:focus::after {
    animation: none;
    opacity: 0;
  }

  .w3s-form__submit:hover .w3s-form__submit-label {
    opacity: 1;
  }
}

