/* Reusable UI components */
.card{
  background: linear-gradient(180deg, rgba(255,255,255,.08), rgba(255,255,255,.04));
  border:1px solid var(--stroke);
  border-radius: var(--radius);
  box-shadow: var(--shadow);
  overflow:hidden;
}
.pill{
  display:inline-flex; align-items:center; gap:8px;
  padding:10px 12px;
  border-radius:999px;
  border:1px solid var(--stroke);
  background: rgba(255,255,255,.06);
  backdrop-filter: blur(10px);
  box-shadow: 0 18px 45px rgba(0,0,0,.22);
  font-size:12px;
  color:var(--muted);
  white-space:nowrap;
}
.dot9{width:9px;height:9px;border-radius:50%}
.dot9.ok{background:var(--ok); box-shadow:0 0 0 4px rgba(34,197,94,.16)}
.dot9.bad{background:var(--danger); box-shadow:0 0 0 4px rgba(239,68,68,.16)}
.dot9.warn{background:var(--warn); box-shadow:0 0 0 4px rgba(245,158,11,.16)}

.metric{
  display:flex; align-items:center; justify-content:space-between; gap:14px;
  padding:16px 16px;
  border-radius: 18px;
  border:1px solid var(--stroke);
  background: rgba(0,0,0,.18);
}
.metric h2{ margin:0; font-size:14px; color:var(--muted); font-weight:600 }
.metric .val{
  font-size:30px; font-weight:800; letter-spacing:-.03em;
  line-height:1;
}
.sub{ margin-top:6px; font-size:12px; color:var(--muted); }

.ring{
  width:64px; height:64px; border-radius:50%;
  display:grid; place-items:center;
  background: conic-gradient(from 220deg, var(--accent1), var(--accent2));
  position:relative;
  box-shadow: 0 18px 45px rgba(124,58,237,.18);
}
.ring::before{
  content:"";
  position:absolute; inset:6px;
  background: rgba(8,10,18,.92);
  border-radius:50%;
  border:1px solid rgba(255,255,255,.10);
}
.ring span{ position:relative; font-size:12px; color:var(--muted); font-weight:700; }

.row{
  display:flex; justify-content:space-between; gap:10px;
  padding:12px 14px;
  border-radius:16px;
  border:1px solid var(--stroke);
  background: rgba(0,0,0,.18);
  color:var(--muted);
  font-size:12px;
}
.row b{color:var(--text); font-weight:700}

.btn{
  width:100%;
  padding:14px 16px;
  border:0;
  border-radius:16px;
  color:white;
  font-weight:700;
  letter-spacing:.02em;
  cursor:pointer;
  background: linear-gradient(90deg, var(--accent1), var(--accent2));
  box-shadow: 0 18px 45px rgba(124,58,237,.25);
}
.input{
  width:100%;
  padding:14px 14px;
  border-radius:16px;
  border:1px solid var(--stroke);
  background: rgba(0,0,0,.18);
  color: var(--text);
  outline:none;
  transition:.2s;
}
input:focus{
  border-color: rgba(124,58,237,.55);
  box-shadow: 0 0 0 4px rgba(124,58,237,.18);
}

/* Form controls (match select style) */
input[type="text"],
input[type="email"],
input[type="password"],
input[type="number"],
input[type="url"],
input[type="search"],
input[type="tel"],
textarea{
  width:100%;
  padding:14px 14px;
  border-radius:16px;
  border:1px solid var(--stroke);
  background: rgba(0,0,0,.18);
  color: var(--text);
  outline:none;
  transition:.2s;
}
input[type="text"]:focus,
input[type="email"]:focus,
input[type="password"]:focus,
input[type="number"]:focus,
input[type="url"]:focus,
input[type="search"]:focus,
input[type="tel"]:focus,
textarea:focus{
  border-color: rgba(124,58,237,.55);
  box-shadow: 0 0 0 4px rgba(124,58,237,.18);
}

select{
  width:100%;
  padding:14px 14px;
  border-radius:16px;
  border:1px solid var(--stroke);
  background: rgba(0,0,0,.18);
  color: var(--text);
  outline:none;
  transition:.2s;
  appearance:none;
}
select:focus{
  border-color: rgba(124,58,237,.6);
  box-shadow: 0 0 0 3px rgba(124,58,237,.18);
}




.actions{
  display:flex;
  justify-content:flex-end;
  gap:10px;
  flex-wrap:wrap;
}
.btn.inline{ width:auto; display:inline-flex; align-items:center; justify-content:center; }
.btn.sm{ padding:10px 14px; border-radius:14px; font-size:14px; }
@media (max-width: 700px){
  .actions{ justify-content:stretch; }
  .btn.inline{ width:100%; }
}

.tbl td{ word-break:break-word; }


/* Mail/Rules form helpers */
.row > div{ flex:1; min-width:0; }
.row label{ display:block; margin-bottom:6px; }
.tableWrap{ overflow:auto; }
.table{ width:100%; }
.table td, .table th{ word-break:break-word; }
