/* v1.21.0 UI extensions: modal, KB, profile, tabs */

.modal{
  position:fixed;
  inset:0;
  z-index:99999;
  display:none;
}
.modal.open{display:block;}
.modal-backdrop{
  position:absolute;
  inset:0;
  background:rgba(0,0,0,0.45);
  backdrop-filter:blur(4px);
}
.modal-dialog{
  position:relative;
  max-width:560px;
  margin:10vh auto;
  padding:16px;
  border-radius:14px;
}
@media(max-width:720px){
  .modal-dialog{max-width:none;margin:6vh 12px;}
}
.modal-head{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:12px;
  margin-bottom:12px;
}
.modal-title{font-weight:700;font-size:18px;}
.iconbtn{
  width:34px;height:34px;
  border-radius:10px;
  border:1px solid rgba(255,255,255,0.18);
  background:rgba(255,255,255,0.10);
  color:inherit;
  cursor:pointer;
}

.glass{
  background:rgba(255,255,255,0.10);
  border:1px solid rgba(255,255,255,0.18);
  box-shadow:0 20px 60px rgba(0,0,0,0.25);
  backdrop-filter:blur(14px);
}

.tabbar{
  display:flex;
  gap:10px;
  margin-bottom:12px;
  flex-wrap:wrap;
}
.tab{
  padding:8px 12px;
  border-radius:999px;
  border:1px solid rgba(255,255,255,0.18);
  background:rgba(255,255,255,0.08);
  cursor:pointer;
  text-decoration:none;
  color:inherit;
  font-size:14px;
}
.tab.active{
  background:rgba(255,255,255,0.18);
  border-color:rgba(255,255,255,0.30);
}

.pillbar{display:flex;flex-wrap:wrap;gap:10px;}
.pill{
  padding:6px 10px;
  border-radius:999px;
  border:1px solid rgba(255,255,255,0.18);
  background:rgba(255,255,255,0.08);
  text-decoration:none;
  color:inherit;
  font-size:13px;
}
.pill.active{background:rgba(255,255,255,0.18);border-color:rgba(255,255,255,0.30);}

.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;}
@media(max-width:720px){
  .grid3{grid-template-columns:1fr;}
}
.grid2{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;}
@media(max-width:720px){
  .grid2{grid-template-columns:1fr;}
}

.form .field{display:flex;flex-direction:column;gap:6px;margin-bottom:10px;}
.form .label{font-size:13px;opacity:0.85;}
.form input,.form select,.form textarea{
  padding:10px 12px;
  border-radius:12px;
  border:1px solid rgba(255,255,255,0.18);
  background:rgba(255,255,255,0.08);
  color:inherit;
}
.form textarea{resize:vertical;}

.searchbar{display:flex;gap:10px;align-items:center;}
.searchbar .input{flex:1;min-width:0;}

.kb-list{display:flex;flex-direction:column;gap:10px;}
.kb-item{
  display:block;
  padding:12px;
  border-radius:14px;
  border:1px solid rgba(255,255,255,0.14);
  background:rgba(255,255,255,0.06);
  text-decoration:none;
  color:inherit;
}
.kb-item:hover{background:rgba(255,255,255,0.10);}
.kb-title{font-weight:700;margin-bottom:4px;}
.kb-content h1,.kb-content h2,.kb-content h3{margin-top:18px;}
.kb-content pre{
  padding:12px;
  border-radius:12px;
  border:1px solid rgba(255,255,255,0.14);
  background:rgba(0,0,0,0.25);
  overflow:auto;
}
.kb-content code{
  padding:2px 6px;
  border-radius:8px;
  background:rgba(0,0,0,0.22);
}

.notice{
  padding:12px;
  border-radius:14px;
  border:1px solid rgba(255,255,255,0.18);
  background:rgba(255,255,255,0.08);
}
.notice.danger{border-color:rgba(255,88,88,0.40);background:rgba(255,88,88,0.10);}

.table-wrap{overflow:auto;}
.table{width:100%;border-collapse:collapse;}
.table th,.table td{padding:10px;border-bottom:1px solid rgba(255,255,255,0.12);text-align:left;vertical-align:top;}

.row{display:flex;align-items:center;}
.row-between{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;}

.card.soft{background:rgba(255,255,255,0.06);}
.hr{border:none;border-top:1px solid rgba(255,255,255,0.12);margin:14px 0;}

.toast{
  position:fixed;
  left:50%;
  bottom:22px;
  transform:translateX(-50%);
  display:flex;
  flex-direction:column;
  gap:8px;
  z-index:100000;
  max-width:calc(100vw - 24px);
}
.toast .t{
  padding:10px 14px;
  border-radius:999px;
  border:1px solid rgba(255,255,255,0.18);
  background:rgba(0,0,0,0.65);
  color:#fff;
  font-size:14px;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}

.muted{opacity:0.72;}
.small{font-size:13px;}

.btn.primary{background:rgba(255,255,255,0.18);border-color:rgba(255,255,255,0.28);}
.btn.danger{border-color:rgba(255,88,88,0.40);}



/* v1.21.4 hotfix: Fix native <select> dropdown option text color (Windows/Chrome) */
.form select{
  /* Force light popup UI so black option text remains readable */
  color-scheme: light;
}
.form select option,
.form select optgroup{
  color:#111 !important;
  background:#fff;
}
