/* =========================
   BASE
========================= */

.jp-tool-wrapper{
  max-width:920px;
  margin:auto;
}
.jp-tool-wrapper p br {display:none;}
.jp-kb-open-btn{
  padding:10px 15px;
  border:none;
  border-radius:12px;
  background:#111827;
  color:#fff;
  cursor:pointer;
  margin:18px 0;
  transition:.2s;
}

.jp-kb-open-btn:hover{
  opacity:.92;
}

.jp-kb-container{
  background:#fff;
  border:1px solid #e5e7eb;
  border-radius:22px;
  padding:16px;
  box-shadow:
  0 8px 25px rgba(0,0,0,.05);
}

/* =========================
   HEADER
========================= */

.jp-kb-header{
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:12px;
  margin-bottom:16px;
}

.jp-kb-header span{
  font-size:18px;
  font-weight:700;
}

.jp-kb-mode-switch{
  display:flex;
  gap:8px;
}

.jp-mode{
  border:none;
  background:#111827;
  color:#fff;
  padding:8px 14px;
  border-radius:10px;
  cursor:pointer;
  transition:.2s;
}

.jp-mode.active{
  background:#2B6CB0;
}

/* =========================
   TEXTAREA
========================= */

.jpKeyboardOutput{
  width:100%;
  min-height:130px;
  border:1px solid #d1d5db;
  border-radius:16px;
  padding:16px;
  font-size:24px;
  resize:vertical;
  background:#f9fafb;
  margin-bottom:16px;
}

/* =========================
   ACTIONS
========================= */

.jp-kb-actions{
  display:flex;
  gap:8px;
  margin-bottom:18px;
}

.jp-kb-actions button{
  position:relative;
  overflow:hidden;

  border:none;
  background:#111827;
  color:#fff;

  padding:9px 13px;

  border-radius:10px;

  cursor:pointer;

  transition:
  transform .12s,
  background .2s;
}

.jp-kb-actions button:hover{
  background:#1f2937;
}

.jp-kb-actions button:active{
  transform:scale(.96);
}

/* =========================
   COPY SUCCESS
========================= */

.jp-copy-success{
  animation:copyPulse .4s ease;
  background:#16a34a !important;
}

@keyframes copyPulse{

  0%{
    transform:scale(1);
  }

  50%{
    transform:scale(1.06);
  }

  100%{
    transform:scale(1);
  }

}

/* =========================
   TOAST
========================= */

.jp-toast{
  position:fixed;

  left:50%;
  bottom:25px;

  transform:translateX(-50%);

  background:#111827;
  color:#fff;

  padding:12px 18px;

  border-radius:14px;

  z-index:999999;

  opacity:0;
  visibility:hidden;

  transition:
  opacity .25s,
  transform .25s;
}

.jp-toast.show{
  opacity:1;
  visibility:visible;
  transform:
  translateX(-50%)
  translateY(-6px);
}

/* =========================
   KEYBOARD
========================= */

.jp-kb-layout{
  display:grid;
  grid-template-columns:
  repeat(auto-fit,minmax(52px,1fr));

  gap:8px;
}

.jp-key{
  border:none;

  background:#edf2f7;

  color:#111827;

  height:50px;

  border-radius:12px;

  cursor:pointer;

  font-size:21px;
  font-weight:600;

  transition:
  background .15s,
  transform .1s;

  box-shadow:
  inset 0 -2px 0 rgba(0,0,0,.04),
  0 2px 6px rgba(0,0,0,.04);
}

.jp-key:hover{
  background:#dbe7f3;
}

.jp-key:active{
  transform:scale(.96);
}

/* =========================
   MODAL
========================= */

.jp-kb-modal{
  position:fixed;
  inset:0;
  display:none;
  z-index:99999;
}

.jp-kb-modal.active{
  display:block;
}

.jp-kb-overlay{
  position:absolute;
  inset:0;
  background:rgba(0,0,0,.55);
}

.jp-kb-modal-content{
  position:absolute;

  left:50%;
  top:50%;

  transform:translate(-50%,-50%);

  width:95%;
  max-width:920px;

  max-height:90vh;

  overflow:auto;

  background:#fff;

  border-radius:24px;

  padding:20px;
}

#jpKbClose{
  position:absolute;

  right:15px;
  top:15px;

  width:36px;
  height:36px;

  border:none;
  border-radius:50%;

  background:#111827;
  color:#fff;

  cursor:pointer;
}

/* =========================
   MOBILE
========================= */

@media(max-width:768px){

  .jp-kb-header{
    flex-direction:column;
    align-items:flex-start;
  }

  .jp-kb-layout{
    grid-template-columns:
    repeat(5,1fr);
  }

  .jp-key{
    height:46px;
    font-size:18px;
  }

  .jp-kb-modal-content{
    left:0;
    right:0;
    bottom:0;
    top:auto;

    transform:none;

    width:100%;
    max-width:none;

    border-radius:22px 22px 0 0;
  }

}
/* SPECIAL KEYS */

.jp-special-key{
  border:none;

  background:#dbeafe;

  color:#1e3a8a;

  height:50px;

  border-radius:12px;

  cursor:pointer;

  font-size:22px;
  font-weight:700;

  transition:.15s;

  box-shadow:
  inset 0 -2px 0 rgba(0,0,0,.04),
  0 2px 6px rgba(0,0,0,.04);
}

.jp-special-key:hover{
  background:#bfdbfe;
}

.jp-special-key:active{
  transform:scale(.96);
}

@media(max-width:768px){

  .jp-special-key{
    height:46px;
    font-size:20px;
  }

}
/* YŌON KEYS */

.jp-special-key[data-yoon]{
  background:#ede9fe;
  color:#5b21b6;
}

.jp-special-key[data-yoon]:hover{
  background:#ddd6fe;
}
/* INLINE SPECIAL KEYS */

.jp-inline-special{

  background:#e0e7ff !important;

  color:#312e81 !important;

  font-weight:700;

}

.jp-inline-special:hover{

  background:#c7d2fe !important;

}

/* MOBILE ACTION WRAP */

@media(max-width:768px){

  .jp-kb-actions{

    flex-wrap:wrap;

  }

}