* {
  box-sizing:border-box;
  margin:0;
  padding:0;
}

:root {
  --bg:#0a0714;
  --bg2:#100b1f;
  --card:#150e28;
  --card2:#1b1336;
  --line:#2b1d4a;
  --line2:#3c2a6e;
  --cyan:#b45cff;
  --cyan-soft:rgba(180,92,255,.13);
  --cyan-dim:#8b3dff;
  --green:#3ddc97;
  --amber:#ffb84d;
  --red:#ff4d6d;
  --purple:#a78bfa;
  --text:#efe8ff;
  --muted:#a698cf;
  --muted2:#7a6cab;
  --radius:12px;
  --shadow:0 10px 30px rgba(0,0,0,.5);
  --font:"Cairo","Inter",Tahoma,sans-serif;
  --body-bg:radial-gradient(1300px 700px at 85% -10%,rgba(255,46,99,.1),transparent 60%),radial-gradient(950px 560px at -10% 110%,rgba(180,92,255,.1),transparent 60%),var(--bg);
  --input-bg:#0f0a1e;
  --code-bg:#120c24;
  --captcha-bg:#120c24;
  --sidebar-bg:linear-gradient(180deg,#150b2e,#0a0714);
  --topbar-bg:rgba(10,7,20,.88);
  --overlay:rgba(4,2,10,.6);
  --modal-backdrop:rgba(5,2,12,.75);
  --th-bg:rgba(180,92,255,.06);
  --row-hover:rgba(180,92,255,.05);
  --btn-hover:rgba(180,92,255,.2);
  --solid-fg:#fff;
  --solid-hover:#c87dff;
  --brand-grad:linear-gradient(135deg,#b45cff,#ff2e63);
  --border:#2b1d4a;
  --bg-soft:#100b1f;
  --panel:#150e28;
}

body.light {
  --bg:#f6f2fb;
  --bg2:#efe9f8;
  --card:#fff;
  --card2:#f7f3fd;
  --line:#e4daf3;
  --line2:#d3c6ec;
  --cyan:#9333ea;
  --cyan-soft:rgba(147,51,234,.1);
  --cyan-dim:#7e22ce;
  --green:#109e6b;
  --amber:#b5791a;
  --red:#dc2f45;
  --purple:#7c3aed;
  --text:#1c1230;
  --muted:#5b4d7e;
  --muted2:#8579a8;
  --shadow:0 10px 30px rgba(28,18,48,.12);
  --body-bg:radial-gradient(1300px 700px at 85% -10%,rgba(255,46,99,.08),transparent 60%),radial-gradient(950px 560px at -10% 110%,rgba(147,51,234,.07),transparent 60%),var(--bg);
  --input-bg:#fff;
  --code-bg:#f3edfd;
  --captcha-bg:#f7f3fd;
  --sidebar-bg:linear-gradient(180deg,#fff,#f6f2fb);
  --topbar-bg:hsla(0,0%,100%,.9);
  --overlay:rgba(28,18,48,.35);
  --modal-backdrop:rgba(24,14,42,.45);
  --th-bg:rgba(147,51,234,.06);
  --row-hover:rgba(147,51,234,.05);
  --btn-hover:rgba(147,51,234,.14);
  --solid-fg:#fff;
  --solid-hover:#a855f7;
  --brand-grad:linear-gradient(135deg,#9333ea,#ff2e63);
  --border:#e4daf3;
  --bg-soft:#efe9f8;
  --panel:#fff;
}

html {
  font-size:15px;
}

body {
  background:var(--body-bg);
  color:var(--text);
  font-family:var(--font);
  min-height:100vh;
  -webkit-font-smoothing:antialiased;
}

a {
  color:var(--cyan);
  text-decoration:none;
}

button,input,select,textarea {
  font-family:inherit;
  font-size:.95rem;
}

input,select,textarea {
  border:1px solid var(--line2);
  border-radius:8px;
  outline:none;
  padding:.55rem .7rem;
  transition:border .15s,box-shadow .15s;
}

textarea {
  min-height:80px;
  resize:vertical;
}

label {
  font-size:.85rem;
  margin:.5rem 0 .25rem;
}

select {
  -webkit-appearance:none;
  background-image:linear-gradient(45deg,transparent 50%,currentColor 0),linear-gradient(135deg,currentColor 50%,transparent 0);
  background-position:calc(100% - 16px) calc(50% + 1px),calc(100% - 11px) calc(50% + 1px);
  background-repeat:no-repeat;
  background-size:5px 5px,5px 5px;
  color-scheme:dark;
  padding-inline-end:2rem;
}

select optgroup,select option {
  background-color:#120c24;
  color:#efe8ff;
}

body.light select {
  color-scheme:light;
}

body.light select optgroup,body.light select option {
  background-color:#fff;
  color:#1c1230;
}

::placeholder {
  color:var(--muted2);
}

code {
  background:var(--code-bg);
  border:1px solid var(--line);
  border-radius:6px;
  color:var(--cyan);
  font-family:Consolas,monospace;
  font-size:.85em;
  padding:.05rem .35rem;
}

.hidden {
  display:none!important;
}

.muted {
  color:var(--muted);
}

.dim {
  color:var(--muted2);
}

.small {
  font-size:.82rem;
}

.mono {
  direction:ltr;
  font-family:Consolas,monospace;
}

.row {
  align-items:center;
  display:flex;
  flex-wrap:wrap;
  gap:.6rem;
}

.grow {
  flex:1;
}

.spread {
  justify-content:space-between;
}

.center {
  align-items:center;
  display:flex;
  justify-content:center;
}

.col {
  display:flex;
  flex-direction:column;
  gap:.6rem;
}

.wrap {
  flex-wrap:wrap;
}

.gap1 {
  gap:1rem;
}

.mt1 {
  margin-top:.6rem;
}

.mt2 {
  margin-top:1rem;
}

.mb1 {
  margin-bottom:.6rem;
}

.btn {
  align-items:center;
  background:var(--cyan-soft);
  border:1px solid var(--line2);
  border-radius:8px;
  color:var(--cyan);
  cursor:pointer;
  display:inline-flex;
  gap:.4rem;
  justify-content:center;
  padding:.5rem .9rem;
  transition:background .15s,border-color .15s,transform .05s,box-shadow .15s;
  white-space:nowrap;
  -webkit-tap-highlight-color:transparent;
  touch-action:manipulation;
}

.btn:hover {
  background:var(--btn-hover);
  border-color:var(--cyan-dim);
}

.btn:active {
  box-shadow:0 0 0 3px rgba(167,139,250,.38),0 6px 18px rgba(139,61,255,.35);
  transform:scale(.97);
}

.btn.solid {
  border-color:transparent;
  box-shadow:0 6px 18px rgba(180,92,255,.28);
  color:var(--solid-fg);
  font-weight:700;
}

.btn.solid:hover {
  box-shadow:0 8px 24px rgba(255,46,99,.32);
}

.btn.danger {
  background:rgba(255,77,109,.12);
  border-color:rgba(255,77,109,.3);
  color:var(--red);
}

.btn.danger:hover {
  background:rgba(255,77,109,.22);
}

.btn.warn {
  background:rgba(255,184,77,.12);
  border-color:rgba(255,184,77,.3);
  color:var(--amber);
}

.btn.green {
  background:rgba(61,220,151,.12);
  border-color:rgba(61,220,151,.3);
  color:var(--green);
}

.btn.sm {
  border-radius:7px;
  font-size:.82rem;
  padding:.3rem .6rem;
}

.btn.lg {
  font-size:1rem;
  padding:.7rem 1.4rem;
}

.btn[disabled] {
  cursor:not-allowed;
  opacity:.5;
}

.icon-btn {
  padding:.35rem .5rem;
}

.pill {
  border:1px solid transparent;
  border-radius:999px;
  font-size:.75rem;
  font-weight:600;
  gap:.3rem;
  line-height:1.5;
  padding:.08rem .55rem;
}

.pill.cyan {
  background:var(--cyan-soft);
  border-color:rgba(180,92,255,.35);
  color:var(--cyan);
}

.pill.blue {
  background:rgba(59,130,246,.12);
  border-color:rgba(59,130,246,.35);
}

.pill.green {
  border-color:rgba(61,220,151,.35);
  color:var(--green);
}

.pill.amber {
  border-color:rgba(255,184,77,.35);
  color:var(--amber);
}

.pill.red {
  background:rgba(255,77,109,.12);
  border-color:rgba(255,77,109,.35);
  color:var(--red);
}

.pill.purple {
  border-color:rgba(167,139,250,.35);
  color:var(--purple);
}

.pill.gray {
  border-color:var(--line);
}

.nav-caret {
  flex:none;
  margin-inline-start:auto;
  opacity:.65;
  transition:transform .22s ease,opacity .22s;
}

.nav-group.open .nav-caret {
  opacity:1;
  transform:rotate(90deg);
}

html[dir=rtl] .nav-caret {
  transform:scaleX(-1);
}

html[dir=rtl] .nav-group.open .nav-caret {
  transform:scaleX(-1) rotate(90deg);
}

.nav-group.open .nav-item svg {
  flex:none;
}

.nav-badge {
  background:var(--red);
  border-radius:999px;
  color:#fff;
  font-size:.68rem;
  margin-inline-start:auto;
  padding:0 .4rem;
}

.topbar {
  backdrop-filter:blur(6px);
  background:var(--topbar-bg);
  border-bottom:1px solid var(--line);
  padding:.8rem 1.2rem;
  z-index:40;
}

.topbar,.topbar-left {
  align-items:center;
  display:flex;
}

.topbar-left {
  gap:.9rem;
}

.view-title {
  font-size:1.25rem;
}

.view-sub {
  font-size:.82rem;
}

.user-pill {
  align-items:center;
  display:flex;
  gap:.6rem;
}

.avatar {
  background:var(--brand-grad);
  border-radius:50%;
  box-shadow:0 4px 14px rgba(180,92,255,.3);
  color:var(--solid-fg);
  display:grid;
  font-size:.82rem;
  font-weight:800;
  height:34px;
  place-items:center;
  width:34px;
}

.avatar img {
  border-radius:50%;
  display:block;
  height:100%;
  object-fit:cover;
  width:100%;
}

.search-box {
  width:260px;
}

.search-box input {
  padding:.4rem .7rem;
}

#bellBtn {
  font-size:14px;
  line-height:1;
  padding:.25rem .35rem;
}

#bellBtn .badge {
  font-size:.68rem;
  padding:.05rem .3rem;
}

@keyframes bell-shake {
  0%,to {
    transform:rotate(0deg);
  }
  12% {
    transform:rotate(15deg);
  }
  28% {
    transform:rotate(-12deg);
  }
  44% {
    transform:rotate(9deg);
  }
  60% {
    transform:rotate(-7deg);
  }
  76% {
    transform:rotate(4deg);
  }
  88% {
    transform:rotate(-2deg);
  }
}

#bellBtn.bell-shake {
  animation:bell-shake .55s ease-in-out 4;
}

#bellBtn.bell-shake .badge {
  animation:none;
}

@media (prefers-reduced-motion:reduce) {
  #bellBtn.bell-shake {
    animation:none;
  }
}

#view {
  padding:1.2rem;
}

#view>* {
  animation:pageIn .17s ease both;
}

@keyframes pageIn {
  0% {
    opacity:0;
    transform:translateY(6px);
  }
  to {
    opacity:1;
    transform:none;
  }
}

@media (prefers-reduced-motion:reduce) {
  #view>* {
    animation:none;
  }
}

.login-wrap {
  display:grid;
  min-height:100vh;
  padding:1rem;
  place-items:center;
}

.login-card {
  background:linear-gradient(180deg,var(--card),var(--bg2));
  border:1px solid var(--line2);
  border-radius:16px;
  box-shadow:var(--shadow);
  max-width:410px;
  padding:2rem 1.8rem;
  width:100%;
}

.login-head {
  align-items:center;
  display:flex;
  gap:.9rem;
  margin-bottom:1.4rem;
}

.login-logo {
  background:linear-gradient(135deg,var(--cyan),var(--cyan-dim));
  border-radius:15px;
  box-shadow:0 0 24px rgba(180,92,255,.35);
  color:var(--solid-fg);
  display:grid;
  flex:none;
  height:64px;
  overflow:hidden;
  place-items:center;
  width:64px;
}

.login-logo img {
  display:block;
  height:100%;
  object-fit:cover;
  width:100%;
}

.login-brand {
  font-size:1.5rem;
  font-weight:800;
}

.login-sub {
  color:var(--muted);
  font-size:.82rem;
}

.login-banner {
  border-radius:9px;
  font-size:.85rem;
  margin-bottom:1rem;
  padding:.6rem .8rem;
}

.login-banner.err {
  background:rgba(255,77,109,.12);
  border:1px solid rgba(255,77,109,.3);
  color:var(--red);
}

.login-banner.info {
  background:var(--cyan-soft);
  border:1px solid rgba(180,92,255,.3);
  color:var(--cyan);
}

.captcha-box {
  align-items:center;
  background:var(--captcha-bg);
  border:1px solid var(--line2);
  border-radius:10px;
  display:flex;
  gap:.7rem;
  margin-top:.8rem;
  padding:.6rem .8rem;
}

.captcha-math {
  color:var(--cyan);
  font-size:1.15rem;
  font-weight:800;
  letter-spacing:2px;
  min-width:6ch;
  text-align:center;
}

.captcha-box input {
  flex:1;
  min-width:0;
}

.demo-hint {
  border-top:1px dashed var(--line2);
  margin-top:1.1rem;
  padding-top:1rem;
}

.demo-hint .muted,.foot-links {
  font-size:.8rem;
}

.foot-links {
  color:var(--muted2);
  display:flex;
  justify-content:space-between;
  margin-top:1.1rem;
}

.stats {
  display:grid;
  gap:.9rem;
  grid-template-columns:repeat(auto-fit,minmax(170px,1fr));
  margin-bottom:1.2rem;
}

.stat {
  background:linear-gradient(180deg,var(--card),var(--bg2));
  border-radius:var(--radius);
  padding:1rem 1.1rem;
}

.stat:after {
  background:var(--ac,var(--cyan));
  bottom:0;
  content:"";
  inset-inline-start:0;
  opacity:.8;
  position:absolute;
  top:0;
  width:3px;
}

.stat .v {
  font-size:1.5rem;
  margin-top:.25rem;
}

.stat .s {
  font-size:.75rem;
}

.stat .v.green {
  color:var(--green);
}

.stat .v.amber {
  color:var(--amber);
}

.stat .v.red {
  color:var(--red);
}

.stat .v.cyan {
  color:var(--cyan);
}

.stat .v.purple {
  color:var(--purple);
}

.card {
  background:linear-gradient(180deg,var(--card),var(--bg2));
  border-radius:var(--radius);
  margin-bottom:1rem;
  padding:1rem 1.1rem;
}

.card-head {
  gap:.8rem;
  margin-bottom:.9rem;
}

.card-title {
  font-size:1.02rem;
  font-weight:800;
  gap:.5rem;
}

.card-title svg {
  color:var(--cyan);
}

.table-wrap {
  border-radius:10px;
  overflow-x:auto;
}

table {
  font-size:.87rem;
  min-width:640px;
}

td,th {
  border-bottom:1px solid var(--line);
  padding:.55rem .7rem;
  text-align:start;
  vertical-align:middle;
}

th {
  background:var(--th-bg);
  color:var(--muted);
  font-size:.78rem;
  font-weight:600;
  white-space:nowrap;
}

td.num,th.num {
  direction:ltr;
  font-family:Consolas,monospace;
  text-align:end;
}

.check-col {
  width:34px;
}

.check-col input {
  width:auto;
}

.bars {
  align-items:flex-end;
  display:flex;
  gap:.4rem;
  height:120px;
  padding-top:.5rem;
}

.bars .bar {
  background:linear-gradient(180deg,var(--cyan),var(--cyan-dim));
  border-radius:5px 5px 0 0;
  flex:1;
  min-height:2px;
  min-width:14px;
  position:relative;
  transition:height .18s;
}

.bars .bar span {
  color:var(--muted);
  font-size:.66rem;
  position:absolute;
  top:-18px;
  inset-inline:0;
  text-align:center;
}

.bars .axis {
  color:var(--muted2);
  display:flex;
  font-size:.66rem;
  justify-content:space-between;
  margin-top:.2rem;
}

.pager {
  align-items:center;
  display:flex;
  flex-wrap:wrap;
  gap:.5rem;
  margin-top:1rem;
}

.pager .pageinfo {
  color:var(--muted);
  font-size:.8rem;
}

.form-grid {
  gap:.6rem .9rem;
  grid-template-columns:repeat(auto-fill,minmax(200px,1fr));
}

.input-wrap {
  position:relative;
}

.inline-note {
  color:var(--muted2);
  font-size:.78rem;
  margin-top:.2rem;
}

.modal-backdrop {
  backdrop-filter:blur(3px);
  background:var(--modal-backdrop);
  display:grid;
  inset:0;
  overflow-y:auto;
  overscroll-behavior:contain;
  padding:1rem;
  place-items:center;
  position:fixed;
  z-index:200;
}

.modal {
  background:linear-gradient(180deg,var(--card),var(--bg2));
  border:1px solid var(--line2);
  border-radius:16px;
  box-shadow:var(--shadow);
  display:flex;
  flex-direction:column;
  max-height:calc(100vh - 2rem);
  max-width:620px;
  width:100%;
}

@supports (max-height:100dvh) {
  .modal {
    max-height:calc(100dvh - 2rem);
  }
}

.modal-head {
  padding:1rem 1.2rem;
}

.modal-title {
  font-weight:800;
}

.modal-body {
  flex:1 1 auto;
  min-height:0;
  overscroll-behavior:contain;
  padding:1.1rem 1.2rem;
  -webkit-overflow-scrolling:touch;
}

.modal-foot {
  background:var(--card);
  flex-shrink:0;
  gap:.6rem;
  padding:1rem 1.2rem;
}

.dl-search {
  flex:1 1 12rem;
  min-width:0;
}

.dl-search input {
  font-size:.85rem;
  padding:.4rem .6rem;
}

.rdp-list .dl-grp+.dl-grp {
  border-top:1px solid var(--line2);
}

.dl-grp-h {
  align-items:center;
  background:var(--card2);
  border-bottom:1px solid var(--line2);
  color:var(--text);
  display:flex;
  font-size:.78rem;
  font-weight:700;
  gap:.5rem;
  padding:.35rem .75rem;
  position:sticky;
  top:0;
  z-index:2;
}

.dl-grp-n {
  font-variant-numeric:tabular-nums;
  font-weight:500;
  margin-inline-start:auto;
  opacity:.7;
}

.rdp-item.is-on {
  background:var(--cyan-soft);
}

.rdp-foot label.is-on b,.rdp-item.is-on .rdp-name {
  color:var(--cyan);
}

.rdp-foot .dl-fmt {
  align-items:center;
  display:flex;
  gap:.45rem;
  margin-inline-start:auto;
}

.dl-fmt select {
  font-size:.82rem;
  padding:.3rem .5rem;
  width:auto;
}

.modal.wide {
  max-width:880px;
}

@media (max-width:719px) {
  .modal.wide {
    max-height:92vh;
    max-width:100%;
  }
  .rdp-top {
    align-items:stretch;
    flex-direction:column;
  }
  .dl-search {
    flex:1 1 auto;
  }
  .rdp-top .btn {
    flex:1 1 0;
  }
  .rdp-sum {
    margin-inline-start:0;
    text-align:center;
  }
  .rdp-list {
    max-height:42vh;
  }
  .rdp-foot {
    align-items:flex-start;
    flex-direction:column;
  }
  .rdp-foot .dl-fmt {
    margin-inline-start:0;
  }
  .modal-actions {
    flex-wrap:nowrap;
  }
  .modal-actions .btn {
    flex:1 1 0;
    justify-content:center;
  }
}

.toasts {
  bottom:1rem;
  display:flex;
  flex-direction:column;
  gap:.5rem;
  inset-inline-start:1rem;
  position:fixed;
  z-index:300;
}

.toast {
  animation:slideIn .18s ease;
  border:1px solid var(--line2);
  border-inline-start:4px solid var(--cyan);
  border-radius:10px;
  box-shadow:var(--shadow);
  font-size:.87rem;
  gap:.6rem;
  max-width:380px;
  min-width:240px;
  padding:.65rem 1rem;
}

.toast.ok {
  border-inline-start-color:var(--green);
}

.toast.err {
  border-inline-start-color:var(--red);
}

.toast .t-close {
  background:none;
  border:none;
  color:var(--muted);
  cursor:pointer;
  font-size:1rem;
  margin-inline-start:auto;
}

@keyframes slideIn {
  0% {
    opacity:0;
    transform:translateX(30px);
  }
  to {
    opacity:1;
    transform:none;
  }
}

.empty {
  padding:2.2rem 1rem;
}

.empty .big {
  font-size:2rem;
  margin-bottom:.4rem;
  opacity:.5;
}

.spin {
  animation:rot .7s linear infinite;
  border:3px solid var(--line2);
  border-radius:50%;
  border-top-color:var(--cyan);
  display:inline-block;
  height:22px;
  width:22px;
}

@keyframes rot {
  to {
    transform:rotate(1turn);
  }
}

.loading-wrap {
  color:var(--muted);
  display:grid;
  gap:.7rem;
  padding:3rem;
  place-items:center;
}

.tabs {
  border-bottom:1px solid var(--line);
  display:flex;
  flex-wrap:wrap;
  gap:.35rem;
  margin-bottom:1rem;
}

.tab {
  background:none;
  border:1px solid var(--line);
  border-bottom:2px solid transparent;
  border-radius:8px 8px 0 0;
  color:var(--muted);
  cursor:pointer;
  font-size:.88rem;
  font-weight:600;
  padding:.5rem 1rem;
}

.tab:hover {
  color:var(--text);
}

.tab.active {
  background:var(--cyan-soft);
  border-bottom-color:var(--cyan);
  color:var(--cyan);
}

.otp-item {
  align-items:center;
  background:linear-gradient(180deg,var(--card),var(--bg2));
  border:1px solid var(--line);
  border-radius:10px;
  display:flex;
  gap:.8rem;
  margin-bottom:.5rem;
  padding:.6rem .8rem;
}

.otp-item .otp-num {
  font-weight:800;
}

.otp-item .otp-code {
  color:var(--cyan);
  font-family:Consolas,monospace;
  font-size:1.05rem;
  font-weight:800;
  letter-spacing:1px;
}

.otp-item .otp-msg {
  color:var(--muted);
  font-size:.8rem;
  max-width:320px;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}

#installAppBtn {
  background:rgba(61,220,151,.14);
  border-color:rgba(61,220,151,.35);
  color:var(--green);
  font-weight:600;
}

#installAppBtn:hover {
  background:rgba(61,220,151,.25);
  border-color:var(--green);
}

#navToggle {
  display:none;
}

@media (min-width:901px) and (max-width:1280px) {
  #view {
    padding:1rem;
  }
  .stats {
    grid-template-columns:repeat(auto-fit,minmax(150px,1fr));
  }
  .stat .v {
    font-size:1.3rem;
  }
  #view {
    padding-inline:.9rem;
  }
}

@media (max-width:900px) {
  #navToggle {
    display:inline-flex;
  }
  #collapseBtn {
    display:none;
  }
  .sidebar.open ~ .main:before {
    background:var(--overlay);
    content:"";
    inset:0;
    pointer-events:auto;
    position:fixed;
    z-index:140;
  }
  .topbar {
    flex-wrap:wrap;
    padding:.6rem .8rem;
    row-gap:.5rem;
  }
  .topbar-left {
    gap:.6rem;
  }
  .view-title {
    font-size:1.05rem;
  }
  .search-box {
    min-width:0;
    width:min(46vw,220px);
  }
  #view {
    padding:.8rem;
  }
  .user-pill #userName,.user-pill .small {
    max-width:15vw;
    overflow:hidden;
    text-overflow:ellipsis;
    white-space:nowrap;
  }
}

@media (max-width:520px) {
  .stats {
    gap:.6rem;
    grid-template-columns:1fr 1fr;
  }
  .stat {
    padding:.8rem .9rem;
  }
  .stat .v {
    font-size:1.15rem;
  }
  .stat .k {
    font-size:.7rem;
  }
  .card {
    padding:.85rem .9rem;
  }
  .card-head {
    gap:.6rem;
  }
  .row {
    gap:.4rem;
  }
  .topbar {
    padding:.5rem .6rem;
  }
  .topbar .btn,.topbar .pill {
    font-size:.74rem;
    padding:.25rem .5rem;
  }
  .avatar {
    font-size:.74rem;
    height:30px;
    width:30px;
  }
  .search-box input {
    padding:.35rem .55rem;
  }
  .user-pill {
    gap:.4rem;
  }
  #view {
    padding:.6rem;
  }
  .login-card {
    padding:1.4rem 1.1rem;
  }
  .bars {
    gap:.25rem;
    height:90px;
  }
  .bars .bar span {
    display:none;
  }
  .form-grid {
    grid-template-columns:1fr;
  }
  .pager {
    justify-content:center;
  }
  .toast {
    min-width:0;
    width:calc(100vw - 2rem);
  }
  .modal {
    max-width:calc(100vw - 1.2rem);
  }
  .modal-body,.modal-head {
    padding:.9rem 1rem;
  }
  .captcha-box {
    flex-wrap:wrap;
  }
  .captcha-math {
    min-width:100%;
    text-align:center;
  }
  .otp-item {
    align-items:flex-start;
    flex-wrap:wrap;
    gap:.3rem .5rem;
    padding:.6rem;
  }
  .otp-item .grow {
    flex:1 1 auto;
    min-width:0;
  }
  .otp-item .otp-num {
    font-size:.86rem;
  }
  .otp-item .otp-code {
    align-self:center;
    font-size:1rem;
  }
  .otp-item .otp-msg {
    margin-top:.2rem;
    max-width:none;
    white-space:normal;
  }
  .otp-item>.small {
    flex-basis:100%;
    margin-top:.25rem;
    order:1;
  }
  table {
    min-width:460px;
  }
  .toolbar>.btn {
    flex:1 1 auto;
    justify-content:center;
  }
  .toolbar .muted {
    margin-inline-start:0;
    order:10;
    white-space:normal;
    width:100%;
    word-break:break-all;
  }
  pre.code {
    font-size:.72rem;
    padding:.6rem .7rem;
  }
  td code {
    word-break:break-all;
  }
}

@media (max-width:380px) {
  .tabs {
    gap:.2rem;
  }
  .tab {
    font-size:.82rem;
    padding:.4rem .7rem;
  }
  .user-pill .pill {
    display:none;
  }
  .user-pill #userName,.user-pill .small {
    max-width:30vw;
  }
  .editnum,td.num,th.num {
    font-size:.8rem;
  }
}

.user-stats {
  display:grid;
  gap:14px;
  grid-template-columns:repeat(auto-fit,minmax(190px,1fr));
  margin-bottom:22px;
}

.stat-top {
  align-items:center;
  display:flex;
  gap:8px;
}

.stat-icon svg {
  fill:currentColor;
  height:15px;
  width:15px;
}

.stat .label {
  font-size:.78rem;
  letter-spacing:.6px;
  margin-bottom:6px;
}

.stat .value {
  font-size:1.5rem;
  margin-top:.1rem;
}

.stat .value.green {
  color:var(--green);
}

.stat .value.cyan {
  color:var(--cyan);
}

.stat .value.amber {
  color:var(--amber);
}

.stat .value.red {
  color:var(--red);
}

.stat .value.blue,.stat .value.info {
  color:var(--info,var(--cyan));
}

.card.clickable,.stat.clickable {
  cursor:pointer;
}

.card.clickable:hover,.stat.clickable:hover {
  filter:brightness(1.06);
}

.form-row {
  align-items:flex-end;
  display:flex;
  flex-wrap:wrap;
  gap:.7rem .9rem;
}

.form-row .field {
  margin:0;
}

.field .lbl {
  color:var(--muted);
  display:block;
  font-size:12px;
  font-weight:600;
  margin-bottom:5px;
}

.toolbar {
  align-items:center;
  display:flex;
  flex-wrap:wrap;
  gap:.5rem 1rem;
  margin-bottom:.9rem;
}

.toolbar .field {
  margin:0;
  min-width:150px;
}

.toolbar>.btn {
  white-space:nowrap;
}

.toolbar-between {
  justify-content:space-between;
}

.badge {
  align-items:center;
  border:1px solid transparent;
  border-radius:999px;
  display:inline-flex;
  font-size:.72rem;
  font-weight:700;
  line-height:1.55;
  padding:.1rem .55rem;
  white-space:nowrap;
}

.badge.green {
  background:rgba(61,220,151,.12);
  border-color:rgba(61,220,151,.35);
  color:var(--green);
}

.badge.red {
  background:rgba(255,77,109,.12);
  border-color:rgba(255,77,109,.35);
  color:var(--red);
}

.badge.gray {
  background:rgba(166,152,207,.1);
  border-color:var(--line);
  color:var(--muted);
}

.badge.orange {
  background:rgba(255,184,77,.12);
  border-color:rgba(255,184,77,.35);
  color:var(--amber);
}

.badge.blue {
  background:var(--cyan-soft);
  border-color:rgba(180,92,255,.35);
  color:var(--cyan);
}

pre.code {
  background:var(--code-bg);
  border:1px solid var(--line);
  border-radius:10px;
  color:var(--cyan);
  direction:ltr;
  font-family:Consolas,Courier New,monospace;
  font-size:.8rem;
  line-height:1.6;
  margin:.6rem 0 0;
  max-width:100%;
  overflow-x:auto;
  padding:.8rem .9rem;
  text-align:left;
  unicode-bidi:embed;
  white-space:pre-wrap;
  word-break:break-all;
}

.spinner {
  animation:rot .7s linear infinite;
  border:3px solid var(--line2);
  border-radius:50%;
  border-top-color:var(--cyan);
  display:inline-block;
  height:22px;
  width:22px;
}

.modal-actions {
  display:flex;
  flex-wrap:wrap;
  gap:.6rem;
  justify-content:flex-end;
  margin-top:1.1rem;
}

.confirm-body {
  margin:.2rem 0;
}

.rdp {
  display:flex;
  flex-direction:column;
  gap:.55rem;
}

.rdp-top {
  align-items:center;
  background:var(--panel-soft,hsla(0,0%,100%,.03));
  display:flex;
  flex-wrap:wrap;
  gap:.7rem;
  padding:.55rem .7rem;
}

.rdp-list,.rdp-top {
  border:1px solid var(--line2);
  border-radius:10px;
}

.rdp-list {
  max-height:46vh;
  overflow:auto;
}

.rdp-item {
  align-items:center;
  border-bottom:1px solid var(--line2);
  cursor:pointer;
  display:flex;
  gap:.6rem;
  padding:.55rem .75rem;
}

.rdp-item:last-child {
  border-bottom:0;
}

.rdp-item:hover {
  background:hsla(0,0%,100%,.04);
}

.rdp-item input[type=checkbox] {
  accent-color:var(--cyan);
  cursor:pointer;
  flex:0 0 auto;
  height:16px;
  width:16px;
}

.rdp-name {
  flex:1 1 auto;
  min-width:0;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}

.rdp-cnt {
  flex:0 0 auto;
  font-size:.8rem;
  opacity:.7;
}

.rdp-foot {
  flex-wrap:wrap;
  font-size:.88rem;
  gap:.7rem;
}

.rdp-foot,.rdp-foot label {
  align-items:center;
  display:flex;
}

.rdp-foot label {
  cursor:pointer;
  gap:.45rem;
}

.rdp-foot input[type=checkbox] {
  accent-color:var(--green,#35d07f);
  cursor:pointer;
  height:16px;
  width:16px;
}

.rdp-sum {
  font-size:.85rem;
  margin-inline-start:auto;
  opacity:.8;
}

.rdp .btn[disabled] {
  opacity:.45;
  pointer-events:none;
}

.nt-targets {
  flex-wrap:wrap;
  gap:.8rem;
  margin-bottom:.5rem;
}

.nt-all,.nt-targets {
  align-items:center;
  display:flex;
}

.nt-all {
  cursor:pointer;
  gap:.45rem;
}

.nt-all input {
  accent-color:var(--cyan);
  cursor:pointer;
  height:17px;
  width:17px;
}

.nt-list {
  border:1px solid var(--line2);
  border-radius:10px;
  max-height:240px;
  overflow:auto;
}

.nt-item {
  align-items:center;
  border-bottom:1px solid var(--line2);
  cursor:pointer;
  display:flex;
  gap:.6rem;
  padding:.45rem .7rem;
}

.nt-item:last-child {
  border-bottom:0;
}

.nt-item:hover {
  background:hsla(0,0%,100%,.04);
}

.nt-item input[type=checkbox] {
  accent-color:var(--cyan);
  cursor:pointer;
  flex:0 0 auto;
  height:16px;
  width:16px;
}

.nt-name {
  flex:1 1 auto;
  min-width:0;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}

.nt-lang {
  background:rgba(53,208,127,.14);
  border:1px solid rgba(53,208,127,.3);
  border-radius:6px;
  color:#6ee7a8;
  flex:0 0 auto;
  font-size:.72rem;
  font-weight:700;
  padding:.1rem .4rem;
}

.nt-lang.en {
  background:rgba(90,160,255,.14);
  border-color:rgba(90,160,255,.3);
  color:#8ab4ff;
}

.nt-prev {
  color:var(--cyan);
  font-size:.85rem;
  margin-top:.9rem;
}

.uc-wrap {
  flex:1 1 auto;
  max-width:280px;
  min-width:180px;
  position:relative;
  width:220px;
}

.uc-wrap input {
  cursor:text;
  padding:.4rem .7rem;
}

.uc-drop {
  background:var(--card2);
  border:1px solid var(--line2);
  border-radius:10px;
  box-shadow:var(--shadow);
  display:none;
  inset-inline-start:0;
  max-height:240px;
  overflow-y:auto;
  padding:.25rem;
  position:absolute;
  top:calc(100% + 4px);
  width:100%;
  z-index:220;
}

.uc-drop.open {
  display:block;
}

.uc-drop button {
  background:none;
  border:none;
  border-radius:7px;
  color:var(--text);
  cursor:pointer;
  display:block;
  font-family:inherit;
  font-size:.9rem;
  padding:.45rem .6rem;
  text-align:start;
  width:100%;
}

.uc-drop button.sel,.uc-drop button:hover {
  background:var(--cyan-soft);
  color:var(--cyan);
}

.uc-drop .uc-empty {
  color:var(--muted);
  font-size:.85rem;
  padding:.5rem .6rem;
}

.user-btn {
  align-items:center;
  background:none;
  border:0;
  border-radius:10px;
  color:inherit;
  cursor:pointer;
  display:flex;
  font:inherit;
  gap:.55rem;
  padding:.2rem .45rem;
}

.user-btn:hover {
  background:var(--btn-hover);
}

.pop-menu {
  background:var(--card2);
  border:1px solid var(--line2);
  border-radius:12px;
  box-shadow:var(--shadow);
  max-height:62vh;
  min-width:180px;
  overflow-y:auto;
  padding:.3rem;
  position:fixed;
  z-index:400;
}

.pop-item {
  background:none;
  border:0;
  border-radius:8px;
  color:var(--text);
  cursor:pointer;
  display:block;
  font:inherit;
  font-size:.9rem;
  padding:.5rem .75rem;
  text-align:start;
  white-space:nowrap;
  width:100%;
}

.pop-item:hover {
  background:var(--cyan-soft);
  color:var(--cyan);
}

.pop-item.active {
  color:var(--cyan);
  font-weight:700;
}

.pop-search {
  background:var(--input-bg);
  border:1px solid var(--line2);
  border-radius:8px;
  color:var(--text);
  font:inherit;
  font-size:.9rem;
  margin-bottom:.25rem;
  padding:.45rem .7rem;
  width:100%;
}

.pop-search:focus {
  border-color:var(--cyan);
  outline:none;
}

.pop-empty {
  color:var(--muted);
  font-size:.85rem;
  padding:.5rem .75rem;
}

.pop-empty.hidden {
  display:none;
}

.crop-overlay {
  align-items:center;
  background:var(--modal-backdrop,rgba(5,2,12,.8));
  display:flex;
  inset:0;
  justify-content:center;
  position:fixed;
  z-index:500;
}

.crop-box {
  background:var(--card);
  border:1px solid var(--line2);
  border-radius:16px;
  box-shadow:var(--shadow);
  display:flex;
  flex-direction:column;
  gap:.7rem;
  padding:.8rem;
  width:min(92vw,400px);
}

.crop-head {
  align-items:center;
  display:flex;
  justify-content:space-between;
}

.crop-head b {
  font-size:1rem;
}

.crop-stage {
  aspect-ratio:1/1;
  background:#000;
  border-radius:12px;
  cursor:grab;
  overflow:hidden;
  position:relative;
  touch-action:none;
  width:100%;
}

.crop-stage:active {
  cursor:grabbing;
}

.crop-stage img {
  left:50%;
  max-width:none;
  top:50%;
  user-select:none;
  -webkit-user-drag:none;
  transform:translate(-50%,-50%);
}

.crop-frame,.crop-stage img {
  pointer-events:none;
  position:absolute;
}

.crop-frame {
  border:2px solid hsla(0,0%,100%,.85);
  border-radius:8px;
  box-shadow:0 0 0 9999px rgba(0,0,0,.55);
  inset:0;
}

.crop-controls {
  align-items:center;
  display:flex;
  gap:.6rem;
}

.crop-controls .crop-zoom {
  accent-color:var(--cyan);
  cursor:pointer;
  flex:1 1 auto;
}

.crop-actions {
  display:flex;
  gap:.6rem;
  justify-content:flex-end;
}

.user-cell {
  align-items:center;
  display:flex;
  gap:.65rem;
}

.user-cell .avatar {
  flex:none;
  font-size:.9rem;
  height:38px;
  width:38px;
}

.users-table td,.users-table th {
  padding:.65rem .75rem;
}

.users-table td:first-child {
  font-size:.95rem;
}

.users-grid {
  display:grid;
  gap:.9rem;
  grid-template-columns:repeat(4,1fr);
}

@media (max-width:1200px) {
  .users-grid {
    grid-template-columns:repeat(3,1fr);
  }
}

@media (max-width:800px) {
  .users-grid {
    grid-template-columns:repeat(2,1fr);
  }
}

@media (max-width:480px) {
  .users-grid {
    grid-template-columns:1fr;
  }
}

.user-card {
  background:linear-gradient(180deg,var(--card2),var(--card));
  border:1px solid var(--line);
  border-radius:14px;
  display:flex;
  flex-direction:column;
  gap:.65rem;
  padding:1rem;
  transition:border-color .15s,box-shadow .15s;
}

.user-card:hover {
  border-color:rgba(180,92,255,.35);
  box-shadow:0 6px 20px rgba(180,92,255,.12);
}

.uc-top {
  align-items:flex-start;
  display:flex;
  gap:.7rem;
}

.uc-info {
  display:flex;
  flex:1 1 auto;
  flex-direction:column;
  min-width:0;
}

.uc-name {
  font-size:1rem;
  font-weight:700;
  line-height:1.3;
  word-break:break-word;
}

.uc-pills {
  display:flex;
  flex:none;
  flex-wrap:wrap;
  gap:.25rem;
  justify-content:flex-end;
}

.avatar-lg {
  font-size:1.05rem;
  height:44px;
  width:44px;
}

.uc-meta {
  color:var(--muted);
  display:flex;
  flex-wrap:wrap;
  font-size:.8rem;
  gap:.4rem .8rem;
}

.uc-meta span {
  align-items:center;
  display:inline-flex;
  gap:.3rem;
}

.uc-meta svg {
  color:var(--muted2);
}

.uc-footer {
  align-items:center;
  border-top:1px solid var(--line);
  display:flex;
  justify-content:space-between;
  margin-top:auto;
  padding-top:.55rem;
}

html.fs-small {
  font-size:13px;
}

html.fs-normal {
  font-size:15px;
}

html.fs-large {
  font-size:17px;
}

html.fs-xlarge {
  font-size:19px;
}

.font-size-row {
  align-items:center;
  display:flex;
  gap:.6rem;
  margin-top:.5rem;
}

.font-size-row label {
  margin:0;
  min-width:0;
}

.fs-btn {
  background:var(--input-bg);
  border:1px solid var(--line2);
  border-radius:8px;
  color:var(--muted);
  cursor:pointer;
  font:inherit;
  font-size:.85rem;
  padding:.4rem .8rem;
  transition:all .15s;
}

.fs-btn:hover {
  border-color:var(--cyan);
  color:var(--text);
}

.fs-btn.active {
  background:var(--cyan-soft);
  border-color:var(--cyan);
  color:var(--cyan);
  font-weight:700;
}

@media (max-width:640px) {
  .users-grid {
    grid-template-columns:1fr;
  }
  .uc-top {
    flex-wrap:wrap;
  }
  .uc-pills {
    justify-content:flex-start;
    order:3;
    width:100%;
  }
  .uc-meta {
    font-size:.75rem;
  }
  .card-head .row {
    width:100%;
  }
  .card-head .row input,.card-head .row select {
    flex:1 1 auto;
    min-width:0;
    width:auto!important;
  }
  .uc-footer {
    flex-wrap:wrap;
    gap:.4rem;
  }
}

.live-dot {
  animation:livePulse 1.8s ease-in-out infinite;
  background:var(--green);
  height:7px;
  margin-inline-end:.35rem;
  width:7px;
}

.live-dot.amber {
  background:var(--amber);
}

.live-dot.red {
  background:var(--red);
}

.live-badge {
  border:1px solid rgba(61,220,151,.3);
  border-radius:999px;
  color:var(--green);
  font-size:.72rem;
  gap:.35rem;
  letter-spacing:.02em;
  padding:.12rem .6rem;
}

.live-badge .live-dot {
  margin:0;
}

.stat {
  transition:transform .2s,box-shadow .2s;
}

.stat:hover {
  transform:translateY(-2px);
}

.stat .k {
  align-items:center;
  color:var(--muted);
  display:flex;
  font-size:.78rem;
  gap:.4rem;
  margin-bottom:.25rem;
}

.stat .k svg {
  opacity:.7;
}

.stat .v {
  font-size:1.65rem;
  font-weight:800;
  line-height:1.15;
}

.stat .s {
  color:var(--muted2);
  font-size:.72rem;
  margin-top:.15rem;
}

.stat .spark {
  bottom:0;
  inset-inline-end:0;
  opacity:.45;
  pointer-events:none;
  position:absolute;
  width:80px;
}

.stat .trend {
  border-radius:999px;
  font-size:.7rem;
  gap:.2rem;
  margin-inline-start:.35rem;
  padding:.06rem .4rem;
  vertical-align:middle;
}

.stat .trend.up {
  color:var(--green);
}

.stat .trend.down {
  background:rgba(255,77,109,.12);
  color:var(--red);
}

.stat .trend.flat {
  background:rgba(166,152,207,.12);
}

.stat .ring-box {
  inset-inline-end:14px;
  pointer-events:none;
  top:50%;
  transform:translateY(-50%);
}

.stat .ring-box svg {
  display:block;
}

.stat .ring-bg {
  fill:none;
  stroke:var(--line);
  stroke-width:3.5;
}

.stat .ring-fg {
  fill:none;
  stroke-linecap:round;
  stroke-width:3.5;
  transition:stroke-dashoffset 1s ease;
}

.stat.clickable:hover {
  box-shadow:0 0 0 1px var(--cyan),0 8px 25px rgba(180,92,255,.15);
}

.table-wrap table {
  font-size:.85rem;
}

.table-wrap tbody tr {
  transition:background .15s;
}

.table-wrap tbody tr:hover {
  background:var(--row-hover);
}

.table-wrap td {
  padding:.5rem .65rem;
}

.table-wrap th {
  padding:.55rem .65rem;
}

td.clip-sm {
  max-width:200px;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}

.prog {
  background:var(--line);
  height:6px;
  min-width:60px;
}

.prog,.prog-fill {
  border-radius:3px;
}

.prog-fill {
  transition:width .6s ease;
}

.prog-fill.green {
  background:linear-gradient(90deg,var(--green),#2dd4a8);
}

.prog-fill.amber {
  background:linear-gradient(90deg,var(--amber),#ffd080);
}

.prog-fill.red {
  background:linear-gradient(90deg,var(--red),#ff7090);
}

.prog-fill.cyan {
  background:linear-gradient(90deg,var(--cyan),#c87dff);
}

.prog-label {
  font-size:.7rem;
  margin-bottom:.2rem;
}

.qa-grid {
  gap:.7rem;
  grid-template-columns:repeat(auto-fill,minmax(150px,1fr));
  margin-top:.8rem;
}

.qa-card {
  align-items:center;
  background:var(--card2);
  border-radius:10px;
  display:flex;
  flex-direction:column;
  gap:.45rem;
  padding:1rem .6rem;
  transition:all .2s;
}

.qa-card:hover {
  background:var(--cyan-soft);
  box-shadow:0 6px 20px rgba(180,92,255,.12);
  transform:translateY(-2px);
}

.qa-card .qa-icon {
  background:var(--cyan-soft);
  border-radius:10px;
  color:var(--cyan);
  display:grid;
  height:38px;
  place-items:center;
  transition:all .2s;
  width:38px;
}

.qa-card:hover .qa-icon {
  background:var(--cyan);
  color:#fff;
}

.qa-card .qa-label {
  color:var(--text);
  font-size:.78rem;
  font-weight:600;
}

.qa-card .qa-sub {
  color:var(--muted2);
  font-size:.68rem;
}

.feed-item {
  gap:.7rem;
  padding:.6rem 0;
}

.feed-dot {
  background:var(--cyan);
  height:8px;
  margin-top:.45rem;
  width:8px;
}

.feed-dot.green {
  background:var(--green);
}

.feed-dot.red {
  background:var(--red);
}

.feed-dot.amber {
  background:var(--amber);
}

.feed-dot.gray {
  background:var(--muted2);
}

.feed-body {
  flex:1;
  min-width:0;
}

.feed-title {
  font-size:.82rem;
  font-weight:600;
}

.feed-sub {
  color:var(--muted);
  font-size:.72rem;
}

.feed-time {
  color:var(--muted2);
  font-size:.68rem;
  margin-top:.1rem;
  white-space:nowrap;
}

.hero-banner {
  align-items:center;
  background:linear-gradient(135deg,rgba(180,92,255,.15),rgba(255,46,99,.1));
  border:1px solid var(--line2);
  border-radius:14px;
  display:flex;
  flex-wrap:wrap;
  gap:1rem;
  margin-bottom:1rem;
  padding:1.2rem 1.4rem;
}

.hero-banner:before {
  background:radial-gradient(400px 200px at 90% 10%,rgba(180,92,255,.12),transparent);
  inset:0;
}

.hero-banner .hero-icon {
  background:var(--brand-grad);
  border-radius:12px;
  color:#fff;
  display:grid;
  flex-shrink:0;
  font-size:1.3rem;
  height:48px;
  place-items:center;
  width:48px;
}

.hero-banner .hero-text {
  flex:1;
  min-width:200px;
}

.hero-banner .hero-title {
  font-size:1.05rem;
  margin-bottom:.15rem;
}

.hero-banner .hero-sub {
  font-size:.8rem;
}

.hero-banner .hero-stats {
  gap:1.2rem;
}

.hero-banner .hero-stat {
  text-align:center;
}

.hero-banner .hero-stat .hs-v {
  color:var(--cyan);
  font-size:1.2rem;
  font-weight:800;
}

.hero-banner .hero-stat .hs-k {
  color:var(--muted);
  font-size:.68rem;
}

.sec-divider {
  align-items:center;
  display:flex;
  gap:.6rem;
  margin:1.2rem 0 .8rem;
}

.sec-divider:after,.sec-divider:before {
  background:var(--line);
  content:"";
  flex:1;
  height:1px;
}

.sec-divider span {
  color:var(--muted);
  font-size:.78rem;
  font-weight:700;
  white-space:nowrap;
}

.empty {
  align-items:center;
  display:flex;
  flex-direction:column;
  gap:.5rem;
  padding:2.5rem 1rem;
}

.empty .big {
  font-size:2.4rem;
  opacity:.4;
}

.glow-card {
  background:linear-gradient(var(--card),var(--card)) padding-box,var(--brand-grad) border-box;
  border:1px solid transparent;
}

.mono-strong {
  font-family:Consolas,Courier New,monospace;
  letter-spacing:.03em;
}

.wii-card {
  border-top:3px solid var(--cyan);
}

.wii-card .card-title {
  color:var(--cyan);
}

.smpp-hero {
  background:linear-gradient(135deg,#1a0f3a,#2d1560 50%,#1a0f3a);
  border:1px solid #4c1d95;
  border-radius:16px;
  margin-bottom:24px;
  overflow:hidden;
  padding:28px 32px;
  position:relative;
}

.smpp-hero:before {
  background:radial-gradient(circle,rgba(180,92,255,.15) 0,transparent 70%);
  height:300px;
  right:-10%;
  top:-40%;
  width:300px;
}

.smpp-hero:after,.smpp-hero:before {
  content:"";
  pointer-events:none;
  position:absolute;
}

.smpp-hero:after {
  background:radial-gradient(circle,rgba(255,46,99,.1) 0,transparent 70%);
  bottom:-40%;
  height:200px;
  left:-10%;
  width:200px;
}

.smpp-hero-inner {
  align-items:center;
  display:flex;
  flex-wrap:wrap;
  gap:20px;
  justify-content:space-between;
  position:relative;
  z-index:1;
}

.smpp-hero-left h2 {
  color:#fff;
  font-size:22px;
  font-weight:800;
  margin-bottom:6px;
}

.smpp-hero-left p {
  color:#a698cf;
  font-size:13px;
}

.smpp-hero-right {
  align-items:center;
  display:flex;
  gap:12px;
}

.smpp-badge {
  align-items:center;
  backdrop-filter:blur(10px);
  background:hsla(0,0%,100%,.05);
  border:1px solid hsla(0,0%,100%,.1);
  border-radius:12px;
  color:#fff;
  display:inline-flex;
  font-size:13px;
  font-weight:700;
  gap:8px;
  padding:10px 18px;
}

.smpp-badge .dot {
  animation:livePulse 2s ease-in-out infinite;
  border-radius:50%;
  height:10px;
  width:10px;
}

.smpp-badge.on .dot {
  background:#3ddc97;
  box-shadow:0 0 12px #3ddc97;
}

.smpp-badge.off .dot {
  background:#ff4d6d;
  box-shadow:0 0 8px rgba(255,77,109,.5);
}

.smpp-badge .port {
  color:#b45cff;
  font-family:monospace;
  font-size:16px;
  font-weight:800;
}

.smpp-ctrl-grid {
  display:grid;
  gap:20px;
  grid-template-columns:1fr 1fr;
  margin-bottom:24px;
}

@media(max-width:900px) {
  .smpp-ctrl-grid {
    grid-template-columns:1fr;
  }
}

.smpp-ctrl-card {
  background:var(--card);
  border:1px solid var(--line);
  border-radius:16px;
  overflow:hidden;
  padding:24px;
  position:relative;
}

.smpp-ctrl-card.internal {
  border-top:4px solid #3b82f6;
}

.smpp-ctrl-card.external {
  border-top:4px solid #8b5cf6;
}

.smpp-ctrl-head {
  align-items:center;
  display:flex;
  justify-content:space-between;
  margin-bottom:16px;
}

.smpp-ctrl-head h3 {
  color:var(--text);
  font-size:16px;
  font-weight:700;
}

.smpp-ctrl-status {
  align-items:center;
  border-radius:8px;
  display:flex;
  font-size:12px;
  font-weight:700;
  gap:8px;
  padding:6px 14px;
}

.smpp-ctrl-status.running {
  background:rgba(61,220,151,.12);
  border:1px solid rgba(61,220,151,.2);
  color:#3ddc97;
}

.smpp-ctrl-status.stopped {
  background:rgba(255,77,109,.1);
  border:1px solid rgba(255,77,109,.15);
  color:#ff4d6d;
}

.smpp-ctrl-port {
  color:var(--cyan);
  font-family:monospace;
  font-size:28px;
  font-weight:800;
  margin:12px 0;
}

.smpp-ctrl-desc {
  color:var(--muted);
  font-size:12px;
  line-height:1.7;
  margin-bottom:16px;
}

.smpp-ctrl-actions {
  display:flex;
  flex-wrap:wrap;
  gap:8px;
}

.smpp-ctrl-actions .btn {
  border-radius:10px;
  font-weight:700;
  padding:10px 20px;
}

.smpp-start-btn {
  background:linear-gradient(135deg,#3ddc97,#10b981);
  border:none;
  color:#fff;
}

.smpp-start-btn:hover {
  opacity:.9;
  transform:translateY(-1px);
}

.smpp-stop-btn {
  background:linear-gradient(135deg,#ff4d6d,#e11d48);
  border:none;
  color:#fff;
}

.smpp-stop-btn:hover {
  opacity:.9;
  transform:translateY(-1px);
}

.smpp-stats-row {
  display:grid;
  gap:16px;
  grid-template-columns:repeat(auto-fit,minmax(160px,1fr));
  margin-bottom:24px;
}

.smpp-stat {
  background:var(--card);
  border:1px solid var(--line);
  border-radius:12px;
  padding:18px;
  text-align:center;
}

.smpp-stat .val {
  color:var(--cyan);
  font-family:monospace;
  font-size:28px;
  font-weight:800;
}

.smpp-stat .lbl {
  color:var(--muted);
  font-size:11px;
  letter-spacing:.5px;
  margin-top:4px;
  text-transform:uppercase;
}

.smpp-section {
  background:var(--card);
  border:1px solid var(--line);
  border-radius:16px;
  margin-bottom:20px;
  padding:24px;
}

.smpp-section-head {
  align-items:center;
  display:flex;
  flex-wrap:wrap;
  gap:12px;
  justify-content:space-between;
  margin-bottom:18px;
}

.smpp-section-head h3 {
  align-items:center;
  color:var(--text);
  display:flex;
  font-size:16px;
  font-weight:700;
  gap:10px;
}

.smpp-section-head h3 .icon {
  align-items:center;
  border-radius:8px;
  display:flex;
  font-size:16px;
  height:32px;
  justify-content:center;
  width:32px;
}

.smpp-tbl {
  border-collapse:collapse;
  width:100%;
}

.smpp-tbl th {
  background:var(--th-bg);
  color:var(--muted);
  font-size:11px;
  letter-spacing:.5px;
  text-align:right;
  text-transform:uppercase;
}

.smpp-tbl td,.smpp-tbl th {
  border-bottom:1px solid var(--line);
  padding:12px 14px;
}

.smpp-tbl td {
  color:var(--text);
  font-size:13px;
  vertical-align:middle;
}

.smpp-tbl tr:hover td {
  background:var(--row-hover);
}

.smpp-tbl tr:last-child td {
  border-bottom:none;
}

.smpp-conn-grid {
  display:grid;
  gap:16px;
  grid-template-columns:repeat(auto-fit,minmax(200px,1fr));
  margin:16px 0;
}

.smpp-conn-item {
  background:var(--bg2);
  border:1px solid var(--line);
  border-radius:10px;
  padding:14px;
}

.smpp-conn-item label {
  color:var(--muted);
  display:block;
  font-size:10px;
  letter-spacing:.5px;
  margin-bottom:6px;
  text-transform:uppercase;
}

.smpp-conn-item .val {
  color:var(--text);
  font-family:monospace;
  font-size:14px;
  font-weight:600;
  word-break:break-all;
}

.smpp-conn-actions {
  display:flex;
  flex-wrap:wrap;
  gap:8px;
  margin-top:16px;
}

.smpp-conn-actions .btn {
  border-radius:8px;
  font-size:12px;
  padding:8px 16px;
}

.smpp-legend {
  display:grid;
  gap:16px;
  grid-template-columns:1fr 1fr;
  margin-bottom:20px;
}

@media(max-width:700px) {
  .smpp-legend {
    grid-template-columns:1fr;
  }
}

.smpp-legend-card {
  background:var(--bg2);
  border:1px solid var(--line);
  border-radius:12px;
  padding:18px;
}

.smpp-legend-card h4 {
  align-items:center;
  display:flex;
  font-size:14px;
  font-weight:700;
  gap:8px;
  margin-bottom:10px;
}

.smpp-legend-card.internal h4 {
  color:#60a5fa;
}

.smpp-legend-card.external h4 {
  color:#a78bfa;
}

.smpp-legend-card ul {
  list-style:none;
  padding:0;
}

.smpp-legend-card li {
  align-items:flex-start;
  color:var(--muted);
  display:flex;
  font-size:12px;
  gap:8px;
  padding:4px 0;
}

.smpp-legend-card li:before {
  color:var(--cyan);
  content:"�";
  font-weight:800;
  margin-top:1px;
}

.smpp-assign-row {
  display:flex;
  flex-wrap:wrap;
  gap:8px;
  margin-bottom:16px;
}

.smpp-assign-row input {
  background:var(--input-bg);
  border:1px solid var(--line);
  border-radius:8px;
  color:var(--text);
  font-size:13px;
  padding:10px 14px;
}

.smpp-assign-row .btn {
  border-radius:8px;
  font-weight:700;
  padding:10px 20px;
}

.smpp-empty {
  color:var(--muted);
  padding:40px 20px;
  text-align:center;
}

.smpp-empty .icon {
  font-size:48px;
  margin-bottom:12px;
  opacity:.5;
}

.smpp-empty p {
  font-size:13px;
}

.card {
  box-shadow:0 8px 32px rgba(0,0,0,.3),inset 0 1px 0 hsla(0,0%,100%,.03);
  transition:all .3s ease;
}

.card:hover {
  border-color:var(--line2);
  box-shadow:0 12px 40px rgba(0,0,0,.4),inset 0 1px 0 hsla(0,0%,100%,.05);
  transform:translateY(-2px);
}

.card:before {
  background:linear-gradient(90deg,transparent,rgba(180,92,255,.3),transparent);
  transition:opacity .3s;
}

.stat {
  transition:all .35s cubic-bezier(.4,0,.2,1);
}

.stat:hover {
  border-color:var(--cyan);
  box-shadow:0 12px 40px rgba(180,92,255,.15);
  transform:translateY(-4px) scale(1.02);
}

.stat:before {
  background:radial-gradient(circle,rgba(180,92,255,.08) 0,transparent 70%);
  height:120px;
  width:120px;
}

.stat .icon {
  border-radius:12px;
  font-size:22px;
  height:48px;
  margin-bottom:14px;
  width:48px;
}

.stat .value {
  font-size:32px;
  line-height:1.1;
  margin-bottom:4px;
}

.stat .label {
  font-size:11px;
  font-weight:600;
  letter-spacing:.8px;
}

.stat .spark {
  height:32px;
  margin-top:12px;
}

.stat .trend {
  border-radius:6px;
  margin-top:8px;
  padding:3px 10px;
}

.btn:active,button:active {
  transform:translateY(0) scale(.98);
}

.btn.solid {
  border:none;
  box-shadow:0 4px 15px rgba(180,92,255,.3);
}

.btn.solid:hover {
  box-shadow:0 6px 20px rgba(180,92,255,.4);
  filter:brightness(1.1);
}

.btn.ghost:hover {
  border-color:var(--cyan);
}

.btn.green,.btn.warn {
  border:none;
  color:#fff;
}

.btn.md {
  padding:10px 20px;
}

.btn.lg {
  padding:14px 28px;
}

.table-wrap {
  border-radius:12px;
}

table {
  border-collapse:collapse;
}

thead th {
  background:var(--th-bg);
  font-weight:700;
  letter-spacing:.8px;
  z-index:1;
}

tbody td,thead th {
  border-bottom:1px solid var(--line);
  padding:14px 16px;
}

tbody td {
  transition:background .2s;
}

tbody tr {
  transition:all .2s;
}

tbody tr:hover {
  background:var(--row-hover);
}

tbody tr:nth-child(2n) {
  background:rgba(0,0,0,.05);
}

tbody tr:nth-child(2n):hover {
  background:var(--row-hover);
}

.pill.green {
  background:rgba(61,220,151,.12);
  border:1px solid rgba(61,220,151,.2);
}

.pill.red {
  background:rgba(255,77,109,.1);
  border:1px solid rgba(255,77,109,.15);
}

.pill.blue {
  background:rgba(96,165,250,.12);
  border:1px solid rgba(96,165,250,.2);
}

.pill.purple {
  background:rgba(167,139,250,.12);
  border:1px solid rgba(167,139,250,.2);
}

.pill.cyan {
  background:rgba(180,92,255,.12);
  border:1px solid rgba(180,92,255,.2);
}

.pill.amber {
  background:rgba(255,184,77,.12);
  border:1px solid rgba(255,184,77,.2);
}

.pill.gray {
  background:rgba(166,152,207,.1);
  border:1px solid rgba(166,152,207,.15);
}

.row-actions {
  gap:6px;
}

input,select,textarea {
  padding:10px 14px;
  transition:all .25s;
}

input:focus,select:focus,textarea:focus {
  border-color:var(--cyan);
  box-shadow:0 0 0 3px rgba(180,92,255,.15);
}

label {
  font-size:11px;
  letter-spacing:.5px;
}

.form-grid {
  gap:16px;
}

#sidebar {
  -webkit-backdrop-filter:blur(22px) saturate(150%);
  backdrop-filter:blur(22px) saturate(150%);
  background:linear-gradient(165deg,rgba(34,16,66,.78),rgba(10,6,22,.88));
  border:1px solid rgba(180,92,255,.22);
}

body.light #sidebar {
  background:linear-gradient(165deg,rgba(255,255,255,.78),rgba(246,242,251,.62));
  border-color:rgba(180,92,255,.3);
}

#sidebar:before {
  background:linear-gradient(180deg,rgba(180,92,255,.03),transparent 50%);
  bottom:0;
  content:"";
  left:0;
  pointer-events:none;
  position:absolute;
  right:0;
  top:0;
  z-index:0;
}

#sidebar * {
  position:relative;
  z-index:1;
}

.modal {
  box-shadow:0 25px 80px rgba(0,0,0,.5);
  max-width:90vw;
}

.modal-head {
  padding:20px 24px;
}

.modal-body {
  padding:24px;
}

.modal-foot {
  padding:16px 24px;
}

.toast {
  animation:toastIn .3s ease;
  border-radius:12px;
  box-shadow:0 10px 40px rgba(0,0,0,.4);
  gap:12px;
  padding:14px 20px;
}

.toast.ok {
  border-color:rgba(61,220,151,.3);
}

.toast.err {
  border-color:rgba(255,77,109,.3);
}

@keyframes toastIn {
  0% {
    opacity:0;
    transform:translateX(20px) scale(.95);
  }
  to {
    opacity:1;
    transform:translateX(0) scale(1);
  }
}

#topbar {
  backdrop-filter:blur(20px);
  background:var(--topbar-bg);
  border-bottom:1px solid var(--line);
  position:sticky;
  top:0;
  z-index:100;
}

.empty {
  padding:48px 24px;
}

.empty .icon {
  font-size:56px;
  opacity:.4;
}

.prog,.prog-fill {
  border-radius:8px;
}

.prog-fill {
  transition:width .6s cubic-bezier(.4,0,.2,1);
}

.prog-fill:after {
  animation:progShimmer 2s infinite;
}

.feed-item {
  padding:14px 0;
  transition:all .2s;
}

.feed-item:hover {
  background:var(--row-hover);
  border-radius:8px;
  margin:0 -8px;
  padding:14px 8px;
}

.feed-dot.green {
  box-shadow:0 0 8px #3ddc97;
}

.feed-dot.red {
  box-shadow:0 0 8px #ff4d6d;
}

.feed-dot.blue {
  box-shadow:0 0 8px #60a5fa;
}

.feed-dot.purple {
  box-shadow:0 0 8px #a78bfa;
}

.qa-card {
  border-radius:12px;
  padding:20px;
  transition:all .3s cubic-bezier(.4,0,.2,1);
}

.qa-card:hover {
  border-color:var(--cyan);
  box-shadow:0 8px 30px rgba(180,92,255,.12);
  transform:translateY(-3px);
}

.qa-card .icon {
  font-size:32px;
  margin-bottom:10px;
}

.hero-banner {
  background:linear-gradient(135deg,rgba(180,92,255,.12),rgba(255,46,99,.08));
  border:1px solid rgba(180,92,255,.2);
  margin-bottom:24px;
  padding:32px;
}

.hero-banner:before {
  background:radial-gradient(circle,rgba(180,92,255,.08) 0,transparent 70%);
  height:400px;
  top:-50%;
  width:400px;
}

.hero-banner .hero-icon {
  font-size:48px;
  margin-bottom:12px;
}

.hero-banner .hero-title {
  font-size:24px;
}

.hero-banner .hero-sub {
  line-height:1.6;
}

.hero-banner .hero-stats {
  gap:20px;
  margin-top:20px;
}

.hero-banner .hero-stat {
  border:1px solid hsla(0,0%,100%,.05);
  border-radius:12px;
  min-width:120px;
  padding:14px 20px;
}

.hero-banner .hero-stat .val {
  font-size:24px;
}

.hero-banner .hero-stat .lbl {
  letter-spacing:.5px;
  margin-top:4px;
}

.live-badge {
  background:rgba(61,220,151,.1);
  border:1px solid rgba(61,220,151,.2);
  border-radius:8px;
  padding:6px 14px;
}

.glow-card:after {
  background:linear-gradient(135deg,rgba(180,92,255,.2),transparent,rgba(255,46,99,.2));
  transition:opacity .4s;
}

body.light .card {
  box-shadow:0 4px 20px rgba(28,18,48,.08);
}

body.light .stat:hover {
  box-shadow:0 12px 40px rgba(147,51,234,.12);
}

body.light .btn.solid,body.light body.light tbody tr:nth-child(2n) {
  background:rgba(0,0,0,.02);
}

body.light .hero-banner {
  background:linear-gradient(135deg,rgba(147,51,234,.06),rgba(255,46,99,.04));
  border-color:rgba(147,51,234,.15);
}

body.light .hero-banner .hero-stat {
  background:hsla(0,0%,100%,.8);
  border-color:rgba(0,0,0,.06);
}

body,html {
  height:100%;
  overflow-x:hidden;
}

.brand,.nav-group,.topbar {
  backdrop-filter:blur(20px);
  background:rgba(10,7,20,.85);
  border-bottom:1px solid rgba(180,92,255,.1);
  flex-shrink:0;
  gap:1rem;
  justify-content:space-between;
  padding:.7rem 1.5rem;
  position:sticky;
  top:0;
  z-index:100;
}

.view-title {
  color:var(--text);
  font-size:18px;
  font-weight:800;
  line-height:1.2;
}

.view-sub {
  color:var(--muted);
  font-size:11px;
  margin-top:2px;
}

#view {
  animation:fadeUp .3s ease;
  flex:1;
  padding:24px;
}

@media(max-width:900px).table-wrap {
  background:var(--card);
  border:1px solid var(--line);
  border-radius:14px;
  overflow:hidden;
}

table {
  border-collapse:separate;
  border-spacing:0;
  width:100%;
}

thead th {
  background:linear-gradient(180deg,rgba(180,92,255,.08),rgba(180,92,255,.03));
  border-bottom:2px solid rgba(180,92,255,.1);
  color:var(--muted);
  font-size:10px;
  font-weight:800;
  letter-spacing:1px;
  padding:14px 16px;
  position:sticky;
  text-align:right;
  text-transform:uppercase;
  top:0;
  white-space:nowrap;
  z-index:2;
}

tbody td {
  border-bottom:1px solid rgba(180,92,255,.05);
  color:var(--text);
  font-size:13px;
  padding:14px 16px;
  transition:all .2s ease;
  vertical-align:middle;
}

tbody tr {
  position:relative;
  transition:all .25s cubic-bezier(.4,0,.2,1);
}

tbody tr:after {
  background:linear-gradient(90deg,rgba(180,92,255,.06),transparent 50%);
  bottom:0;
  content:"";
  left:0;
  opacity:0;
  pointer-events:none;
  position:absolute;
  right:0;
  top:0;
  transition:opacity .25s;
  z-index:0;
}

tbody tr:hover {
  background:rgba(180,92,255,.04);
  transform:scale(1.002);
}

tbody tr:hover:after {
  opacity:1;
}

tbody tr:hover td {
  border-bottom-color:rgba(180,92,255,.1);
}

tbody tr:nth-child(2n) {
  background:rgba(0,0,0,.08);
}

tbody tr:nth-child(2n):hover {
  background:rgba(180,92,255,.06);
}

tbody tr:last-child td {
  border-bottom:none;
}

tbody tr:first-child td:first-child {
  border-top-left-radius:12px;
}

tbody tr:first-child td:last-child {
  border-top-right-radius:12px;
}

tbody tr:last-child td:first-child {
  border-bottom-left-radius:12px;
}

tbody tr:last-child td:last-child {
  border-bottom-right-radius:12px;
}

.num {
  font-family:SF Mono,Cascadia Code,Consolas,monospace;
  font-size:13px;
  font-variant-numeric:tabular-nums;
  font-weight:600;
}

.mono {
  font-size:12.5px;
}

.mono,.mono-strong {
  font-family:SF Mono,Cascadia Code,Consolas,monospace;
}

.mono-strong {
  color:var(--cyan);
  font-size:14px;
  font-weight:700;
}

.row-actions {
  align-items:center;
  display:flex;
  flex-wrap:wrap;
  gap:5px;
}

.row-actions .btn {
  border-radius:8px;
  font-size:11px;
  font-weight:600;
  padding:5px 10px;
  white-space:nowrap;
}

.row-actions .btn:hover {
  box-shadow:0 2px 8px rgba(0,0,0,.2);
  transform:translateY(-1px);
}

tbody tr:hover .row-actions .btn {
  opacity:1;
}

.row-actions .btn {
  opacity:.7;
  transition:all .2s;
}

.empty {
  color:var(--muted);
  padding:56px 24px;
  text-align:center;
}

.empty .icon {
  display:block;
  font-size:64px;
  margin-bottom:16px;
  opacity:.3;
}

.empty p {
  font-size:14px;
  line-height:1.6;
  margin:0 auto;
  max-width:400px;
}

.empty .sub {
  color:var(--muted2);
  font-size:12px;
  margin-top:8px;
}

.card {
  background:linear-gradient(145deg,var(--card) 0,var(--card2) 100%);
  border:1px solid var(--line);
  border-radius:16px;
  box-shadow:0 4px 24px rgba(0,0,0,.25);
  overflow:hidden;
  position:relative;
  transition:all .35s cubic-bezier(.4,0,.2,1);
}

.card:hover {
  border-color:rgba(180,92,255,.2);
  box-shadow:0 8px 40px rgba(0,0,0,.35),0 0 0 1px rgba(180,92,255,.08);
}

.card:before {
  background:linear-gradient(90deg,transparent,rgba(180,92,255,.4) 50%,transparent);
  content:"";
  height:1px;
  left:0;
  opacity:0;
  position:absolute;
  right:0;
  top:0;
  transition:opacity .4s;
}

.card:hover:before {
  opacity:1;
}

.card-head {
  border-bottom:1px solid var(--line);
  flex-wrap:wrap;
  gap:12px;
  justify-content:space-between;
  padding:18px 22px;
}

.card-head,.card-title {
  align-items:center;
  display:flex;
}

.card-title {
  color:var(--text);
  font-size:15px;
  font-weight:700;
  gap:10px;
}

.card-title .icon-box {
  align-items:center;
  background:rgba(180,92,255,.1);
  border:1px solid rgba(180,92,255,.12);
  border-radius:10px;
  display:flex;
  font-size:16px;
  height:36px;
  justify-content:center;
  width:36px;
}

.card-body,.stat {
  padding:22px;
}

.stat {
  background:linear-gradient(145deg,var(--card) 0,var(--card2) 100%);
  border:1px solid var(--line);
  border-radius:16px;
  overflow:hidden;
  position:relative;
  transition:all .4s cubic-bezier(.4,0,.2,1);
}

.stat:hover {
  border-color:rgba(180,92,255,.3);
  box-shadow:0 16px 48px rgba(180,92,255,.12),0 0 0 1px rgba(180,92,255,.1);
  transform:translateY(-6px) scale(1.02);
}

.stat:before {
  background:radial-gradient(circle,rgba(180,92,255,.1) 0,transparent 70%);
  content:"";
  height:140px;
  opacity:.5;
  pointer-events:none;
  position:absolute;
  right:0;
  top:0;
  transition:opacity .4s;
  width:140px;
}

.stat:hover:before {
  opacity:1;
}

.stat .icon {
  align-items:center;
  background:rgba(180,92,255,.1);
  border:1px solid rgba(180,92,255,.15);
  border-radius:14px;
  display:flex;
  font-size:24px;
  height:52px;
  justify-content:center;
  margin-bottom:16px;
  transition:all .3s;
  width:52px;
}

.stat:hover .icon {
  background:rgba(180,92,255,.15);
  transform:scale(1.1);
}

.stat .value {
  color:var(--text);
  font-size:36px;
  font-variant-numeric:tabular-nums;
  font-weight:800;
  line-height:1;
  margin-bottom:6px;
}

.stat .label {
  color:var(--muted);
  font-size:10px;
  font-weight:700;
  letter-spacing:1px;
  text-transform:uppercase;
}

.stat .spark {
  height:36px;
  margin-top:14px;
  opacity:.8;
  transition:opacity .3s;
}

.stat:hover .spark {
  opacity:1;
}

.stat .trend {
  align-items:center;
  border-radius:8px;
  display:inline-flex;
  font-size:11px;
  font-weight:700;
  gap:4px;
  margin-top:10px;
  padding:4px 10px;
  transition:all .2s;
}

.stat .trend:hover {
  transform:scale(1.05);
}

.stat .trend.up {
  background:rgba(61,220,151,.12);
  border:1px solid rgba(61,220,151,.15);
  color:#3ddc97;
}

.stat .trend.down {
  background:rgba(255,77,109,.1);
  border:1px solid rgba(255,77,109,.12);
  color:#ff4d6d;
}

.stat .trend.flat {
  background:rgba(166,152,207,.1);
  border:1px solid rgba(166,152,207,.12);
  color:var(--muted);
}

.stat .ring-box {
  left:18px;
  position:absolute;
  top:18px;
}

.stat .ring-box svg {
  transform:rotate(-90deg);
}

.stat .ring-box .ring-bg {
  stroke:rgba(180,92,255,.1);
}

.stat .ring-box .ring-fg {
  stroke:var(--cyan);
  stroke-linecap:round;
  transition:stroke-dashoffset 1s cubic-bezier(.4,0,.2,1);
}

.stat .ring-box .ring-text {
  fill:var(--text);
  font-size:16px;
  font-weight:800;
  transform:rotate(90deg);
  transform-origin:center;
}

.stats-grid {
  display:grid;
  gap:18px;
  grid-template-columns:repeat(auto-fit,minmax(200px,1fr));
  margin-bottom:24px;
}

.sec-divider {
  background:linear-gradient(90deg,transparent,rgba(180,92,255,.15),transparent);
  height:1px;
  margin:28px 0;
}

.glow-card {
  position:relative;
}

.glow-card:after {
  background:linear-gradient(135deg,rgba(180,92,255,.15),transparent 40%,transparent 60%,rgba(255,46,99,.15));
  border-radius:inherit;
  content:"";
  inset:-1px;
  opacity:0;
  pointer-events:none;
  position:absolute;
  transition:opacity .5s;
  z-index:-1;
}

.glow-card:hover:after {
  opacity:1;
}

.btn,button {
  border:none;
  border-radius:10px;
  cursor:pointer;
  font-family:inherit;
  font-size:13px;
  font-weight:600;
  overflow:hidden;
  position:relative;
  transition:all .25s cubic-bezier(.4,0,.2,1);
}

.btn:hover,button:hover {
  transform:translateY(-1px);
}

.btn:active,button:active {
  transform:translateY(0) scale(.97);
}

button:disabled {
  cursor:not-allowed;
  opacity:.5;
  transform:none!important;
}

.btn.solid {
  background:var(--brand-grad);
  box-shadow:0 4px 18px rgba(180,92,255,.25);
  color:#fff;
}

.btn.solid:hover {
  box-shadow:0 6px 28px rgba(180,92,255,.4);
  filter:brightness(1.08);
}

.btn.solid:after {
  background:linear-gradient(90deg,transparent,hsla(0,0%,100%,.15),transparent);
  content:"";
  height:100%;
  left:-100%;
  position:absolute;
  top:0;
  transition:left .5s;
  width:100%;
}

.btn.solid:hover:after {
  left:100%;
}

.btn.ghost {
  background:transparent;
  border:1px solid var(--line);
  color:var(--muted);
}

.btn.ghost:hover {
  background:rgba(180,92,255,.05);
  border-color:rgba(180,92,255,.3);
  color:var(--cyan);
}

.btn.warn {
  background:linear-gradient(135deg,#ff4d6d,#e11d48);
  box-shadow:0 4px 15px rgba(255,77,109,.2);
  color:#fff;
}

.btn.warn:hover {
  box-shadow:0 6px 24px rgba(255,77,109,.35);
}

.btn.green {
  background:linear-gradient(135deg,#3ddc97,#10b981);
  box-shadow:0 4px 15px rgba(61,220,151,.2);
  color:#fff;
}

.btn.green:hover {
  box-shadow:0 6px 24px rgba(61,220,151,.35);
}

.btn.blue {
  background:linear-gradient(135deg,#60a5fa,#3b82f6);
  box-shadow:0 4px 15px rgba(96,165,250,.2);
  color:#fff;
}

.btn.blue:hover {
  box-shadow:0 6px 24px rgba(96,165,250,.35);
}

.btn.sm {
  border-radius:8px;
  font-size:12px;
  padding:7px 14px;
}

.btn.md {
  font-size:13px;
  padding:10px 22px;
}

.btn.lg {
  border-radius:12px;
  font-size:15px;
  padding:14px 32px;
}

.icon-btn {
  align-items:center;
  border-radius:10px;
  display:inline-flex;
  height:36px;
  justify-content:center;
  padding:8px;
  width:36px;
}

.form-grid {
  display:grid;
  gap:18px;
  grid-template-columns:repeat(auto-fit,minmax(220px,1fr));
}

.form-grid .full {
  grid-column:1/-1;
}

input,select,textarea {
  background:var(--input-bg);
  border:1px solid var(--line);
  border-radius:10px;
  box-sizing:border-box;
  color:var(--text);
  font-family:inherit;
  font-size:13px;
  padding:11px 16px;
  transition:all .25s cubic-bezier(.4,0,.2,1);
  width:100%;
}

input:focus,select:focus,textarea:focus {
  background:var(--card2);
  border-color:rgba(180,92,255,.4);
  box-shadow:0 0 0 3px rgba(180,92,255,.12);
  outline:none;
}

input:hover:not(:focus),select:hover:not(:focus),textarea:hover:not(:focus) {
  border-color:rgba(180,92,255,.2);
}

input::placeholder,textarea::placeholder {
  color:var(--muted2);
}

label {
  color:var(--muted);
  display:block;
  font-size:10px;
  font-weight:700;
  letter-spacing:.8px;
  margin-bottom:6px;
  text-transform:uppercase;
}

select {
  appearance:none;
  cursor:pointer;
}

.modal {
  animation:modalIn .3s cubic-bezier(.4,0,.2,1);
  background:var(--card);
  border:1px solid var(--line);
  border-radius:20px;
  box-shadow:0 32px 80px rgba(0,0,0,.5),0 0 0 1px rgba(180,92,255,.1);
  max-height:90vh;
  max-width:92vw;
  overflow:hidden;
}

@keyframes modalIn {
  0% {
    opacity:0;
    transform:translateY(20px) scale(.96);
  }
  to {
    opacity:1;
    transform:translateY(0) scale(1);
  }
}

.modal-head {
  align-items:center;
  background:linear-gradient(180deg,rgba(180,92,255,.04),transparent);
  border-bottom:1px solid var(--line);
  display:flex;
  justify-content:space-between;
  padding:22px 26px;
}

.modal-title {
  color:var(--text);
  font-size:16px;
  font-weight:700;
}

.modal-body {
  max-height:60vh;
  overflow-y:auto;
  padding:26px;
}

.modal-foot {
  background:rgba(0,0,0,.1);
  border-top:1px solid var(--line);
  display:flex;
  gap:10px;
  justify-content:flex-end;
  padding:18px 26px;
}

body.light .modal-foot {
  background:rgba(0,0,0,.02);
}

.modal-backdrop {
  backdrop-filter:blur(8px);
  background:rgba(4,2,10,.7);
}

.pill {
  align-items:center;
  border-radius:8px;
  display:inline-flex;
  font-size:11px;
  font-weight:700;
  gap:6px;
  letter-spacing:.3px;
  padding:5px 12px;
  transition:all .2s;
  white-space:nowrap;
}

.pill.green {
  background:rgba(61,220,151,.1);
  border:1px solid rgba(61,220,255,.15);
  color:#3ddc97;
}

.pill.red {
  background:rgba(255,77,109,.08);
  border:1px solid rgba(255,77,109,.12);
  color:#ff4d6d;
}

.pill.blue {
  background:rgba(96,165,250,.1);
  border:1px solid rgba(96,165,250,.15);
  color:#60a5fa;
}

.pill.purple {
  background:rgba(167,139,250,.1);
  border:1px solid rgba(167,139,250,.15);
  color:#a78bfa;
}

.pill.cyan {
  background:rgba(180,92,255,.1);
  border:1px solid rgba(180,92,255,.15);
  color:#b45cff;
}

.pill.amber {
  background:rgba(255,184,77,.1);
  border:1px solid rgba(255,184,77,.15);
  color:#ffb84d;
}

.pill.gray {
  background:rgba(166,152,207,.08);
  border:1px solid rgba(166,152,207,.1);
  color:var(--muted);
}

.pill.red.pulse {
  animation:pillPulse 2s ease-in-out infinite;
}

@keyframes pillPulse {
  0%,to {
    opacity:1;
  }
  50% {
    opacity:.6;
  }
}

.toast {
  align-items:center;
  animation:toastSlide .35s cubic-bezier(.4,0,.2,1);
  backdrop-filter:blur(20px);
  background:var(--card);
  border:1px solid var(--line);
  border-radius:14px;
  box-shadow:0 12px 40px rgba(0,0,0,.4),0 0 0 1px rgba(180,92,255,.08);
  display:flex;
  font-size:13px;
  font-weight:600;
  gap:14px;
  max-width:400px;
  padding:16px 22px;
}

@keyframes toastSlide {
  0% {
    opacity:0;
    transform:translateX(30px) scale(.9);
  }
  to {
    opacity:1;
    transform:translateX(0) scale(1);
  }
}

.toast.ok {
  background:linear-gradient(135deg,var(--card) 0,rgba(61,220,151,.05) 100%);
  border-color:rgba(61,220,151,.25);
}

.toast.err {
  background:linear-gradient(135deg,var(--card) 0,rgba(255,77,109,.05) 100%);
  border-color:rgba(255,77,109,.25);
}

.toast .toast-icon {
  flex-shrink:0;
  font-size:20px;
}

.toast .toast-msg {
  flex:1;
}

.toast .toast-close {
  background:none;
  border:none;
  border-radius:6px;
  color:var(--muted);
  cursor:pointer;
  padding:4px;
  transition:all .2s;
}

.toast .toast-close:hover {
  background:hsla(0,0%,100%,.05);
  color:var(--text);
}

.prog {
  background:var(--bg2);
  border:1px solid var(--line);
  border-radius:8px;
  height:8px;
  overflow:hidden;
}

.prog,.prog-fill {
  position:relative;
}

.prog-fill {
  border-radius:8px;
  height:100%;
  min-width:2px;
  transition:width .8s cubic-bezier(.4,0,.2,1);
}

.prog-fill.green {
  background:linear-gradient(90deg,#10b981,#3ddc97);
}

.prog-fill.amber {
  background:linear-gradient(90deg,#d97706,#ffb84d);
}

.prog-fill.red {
  background:linear-gradient(90deg,#e11d48,#ff4d6d);
}

.prog-fill.cyan {
  background:linear-gradient(90deg,#7c3aed,#b45cff);
}

.prog-fill:after {
  animation:progShimmer 2.5s infinite;
  background:linear-gradient(90deg,transparent,hsla(0,0%,100%,.2),transparent);
  bottom:0;
  content:"";
  left:0;
  position:absolute;
  right:0;
  top:0;
}

@keyframes progShimmer {
  0% {
    transform:translateX(-100%);
  }
  to {
    transform:translateX(100%);
  }
}

.prog-label {
  color:var(--muted);
  display:flex;
  font-size:10px;
  font-weight:600;
  justify-content:space-between;
  margin-top:4px;
}

.feed {
  display:flex;
  flex-direction:column;
  gap:0;
}

.feed-item {
  align-items:flex-start;
  border-bottom:1px solid var(--line);
  display:flex;
  gap:14px;
  padding:16px 0;
  position:relative;
  transition:all .25s;
}

.feed-item:hover {
  background:rgba(180,92,255,.03);
  border-radius:10px;
  margin:0 -12px;
  padding:16px 12px;
}

.feed-item:last-child {
  border-bottom:none;
}

.feed-dot {
  border-radius:50%;
  flex-shrink:0;
  height:10px;
  margin-top:6px;
  transition:transform .2s;
  width:10px;
}

.feed-item:hover .feed-dot {
  transform:scale(1.3);
}

.feed-dot.green {
  background:#3ddc97;
  box-shadow:0 0 10px rgba(61,220,151,.5);
}

.feed-dot.red {
  background:#ff4d6d;
  box-shadow:0 0 10px rgba(255,77,109,.5);
}

.feed-dot.blue {
  background:#60a5fa;
  box-shadow:0 0 10px rgba(96,165,250,.5);
}

.feed-dot.purple {
  background:#a78bfa;
  box-shadow:0 0 10px rgba(167,139,250,.5);
}

.feed-dot.amber {
  background:#ffb84d;
  box-shadow:0 0 10px rgba(255,184,77,.5);
}

.feed-item .feed-content {
  flex:1;
  min-width:0;
}

.feed-item .title {
  color:var(--text);
  font-size:13px;
  font-weight:600;
  line-height:1.4;
  margin-bottom:3px;
}

.feed-item .sub {
  color:var(--muted);
  font-size:11px;
  line-height:1.4;
}

.feed-item .time {
  color:var(--muted2);
  flex-shrink:0;
  font-size:10px;
  margin-left:auto;
  padding-top:2px;
  white-space:nowrap;
}

.qa-grid {
  display:grid;
  gap:14px;
  grid-template-columns:repeat(auto-fill,minmax(180px,1fr));
}

.qa-card {
  background:var(--bg2);
  border:1px solid var(--line);
  border-radius:14px;
  cursor:pointer;
  display:block;
  overflow:hidden;
  padding:22px;
  position:relative;
  text-align:center;
  text-decoration:none;
  transition:all .35s cubic-bezier(.4,0,.2,1);
}

.qa-card:hover {
  border-color:rgba(180,92,255,.3);
  box-shadow:0 12px 40px rgba(180,92,255,.1);
  transform:translateY(-4px);
}

.qa-card:before {
  background:var(--brand-grad);
  content:"";
  height:2px;
  left:0;
  opacity:0;
  position:absolute;
  right:0;
  top:0;
  transition:opacity .3s;
}

.qa-card:hover:before {
  opacity:1;
}

.qa-card .icon {
  display:block;
  font-size:36px;
  margin-bottom:12px;
  transition:transform .3s;
}

.qa-card:hover .icon {
  transform:scale(1.15);
}

.qa-card .label {
  color:var(--text);
  font-size:13px;
  font-weight:700;
  margin-bottom:4px;
}

.qa-card .sub {
  color:var(--muted);
  font-size:11px;
}

.hero-banner {
  background:linear-gradient(135deg,rgba(180,92,255,.1),rgba(255,46,99,.06));
  border:1px solid rgba(180,92,255,.15);
  border-radius:20px;
  margin-bottom:28px;
  overflow:hidden;
  padding:36px;
  position:relative;
}

.hero-banner:before {
  background:radial-gradient(circle,rgba(180,92,255,.06) 0,transparent 70%);
  height:500px;
  right:-20%;
  top:-60%;
  width:500px;
}

.hero-banner:after,.hero-banner:before {
  content:"";
  pointer-events:none;
  position:absolute;
}

.hero-banner:after {
  background:radial-gradient(circle,rgba(255,46,99,.04) 0,transparent 70%);
  bottom:-40%;
  height:300px;
  left:-10%;
  width:300px;
}

.hero-banner .hero-icon {
  display:block;
  font-size:52px;
  margin-bottom:14px;
}

.hero-banner .hero-title {
  color:var(--text);
  font-size:26px;
  font-weight:800;
  margin-bottom:8px;
}

.hero-banner .hero-sub {
  color:var(--muted);
  font-size:14px;
  line-height:1.7;
  max-width:600px;
}

.hero-banner .hero-stats {
  display:flex;
  flex-wrap:wrap;
  gap:16px;
  margin-top:24px;
}

.hero-banner .hero-stat {
  background:rgba(0,0,0,.2);
  border:1px solid hsla(0,0%,100%,.04);
  border-radius:14px;
  min-width:130px;
  padding:16px 22px;
  transition:all .3s;
}

body.light .hero-banner .hero-stat {
  background:hsla(0,0%,100%,.7);
  border-color:rgba(0,0,0,.04);
}

.hero-banner .hero-stat:hover {
  border-color:rgba(180,92,255,.2);
  transform:translateY(-2px);
}

.hero-banner .hero-stat .val {
  color:var(--cyan);
  font-family:monospace;
  font-size:28px;
  font-weight:800;
  line-height:1;
}

.hero-banner .hero-stat .lbl {
  color:var(--muted);
  font-size:10px;
  font-weight:700;
  letter-spacing:.8px;
  margin-top:6px;
  text-transform:uppercase;
}

.live-badge {
  align-items:center;
  background:rgba(61,220,151,.08);
  border:1px solid rgba(61,220,151,.15);
  border-radius:10px;
  color:#3ddc97;
  display:inline-flex;
  font-size:11px;
  font-weight:700;
  gap:8px;
  padding:7px 16px;
}

.live-badge:before {
  animation:livePulse 2s ease-in-out infinite;
  background:#3ddc97;
  border-radius:50%;
  box-shadow:0 0 8px rgba(61,220,151,.5);
  content:"";
  height:8px;
  width:8px;
}

@keyframes livePulse {
  0%,to {
    opacity:1;
    transform:scale(1);
  }
  50% {
    opacity:.4;
    transform:scale(1.4);
  }
}

.live-dot {
  animation:livePulse 2s ease-in-out infinite;
  background:#3ddc97;
  border-radius:50%;
  box-shadow:0 0 8px rgba(61,220,151,.5);
  display:inline-block;
  height:8px;
  width:8px;
}

.trend-chart {
  background:var(--bg2);
  border:1px solid var(--line);
  border-radius:12px;
  overflow:hidden;
  padding:16px;
}

.donut-chart {
  align-items:center;
  display:flex;
  gap:20px;
  justify-content:center;
  padding:16px;
}

.donut-legend {
  display:flex;
  flex-direction:column;
  gap:8px;
}

.donut-legend-item {
  align-items:center;
  color:var(--muted);
  display:flex;
  font-size:12px;
  gap:8px;
}

.donut-legend-dot {
  border-radius:3px;
  flex-shrink:0;
  height:10px;
  width:10px;
}

.sidebar:before {
  background:radial-gradient(ellipse at top,rgba(180,92,255,.06) 0,transparent 60%);
  bottom:0;
  content:"";
  left:0;
  pointer-events:none;
  position:absolute;
  right:0;
  top:0;
  z-index:0;
}

.nav-item.active:before {
  background:#fff;
  border-radius:4px;
  content:"";
  height:20px;
  opacity:.8;
  position:absolute;
  right:-4px;
  top:50%;
  transform:translateY(-50%);
  width:4px;
}

.topbar {
  backdrop-filter:blur(20px)!important;
  background:rgba(10,7,20,.85)!important;
  border-bottom:1px solid rgba(180,92,255,.1)!important;
  flex-shrink:0!important;
  gap:1rem!important;
  justify-content:space-between!important;
  padding:.7rem 1.5rem!important;
  position:sticky!important;
  top:0!important;
  z-index:100!important;
}

.view-title {
  color:var(--text)!important;
  font-size:18px!important;
  font-weight:800!important;
  line-height:1.2!important;
}

.view-sub {
  color:var(--muted)!important;
  font-size:11px!important;
  margin-top:2px!important;
}

#view {
  animation:fadeUp .3s ease!important;
  flex:1!important;
  padding:24px!important;
}

@keyframes fadeUp {
  0% {
    opacity:0;
    transform:translateY(10px);
  }
  to {
    opacity:1;
    transform:translateY(0);
  }
}

.nav-item span {
  line-height:1.4!important;
}

.nav-group-label,.nav-item span {
  white-space:nowrap!important;
  overflow:hidden!important;
  text-overflow:ellipsis!important;
  word-break:normal!important;
}

#nav::-webkit-scrollbar-track,.brand,.brand small,.brand-mark {
  background:transparent;
}

.nav-group.open .nav-item.active:before {
  background:#fff!important;
  border-radius:3px!important;
  content:"";
  height:18px!important;
  opacity:.7!important;
  position:absolute;
  right:-3px!important;
  top:50%!important;
  transform:translateY(-50%)!important;
  width:3px!important;
}

@media(max-width:900px) {
  .layout {
    display:flex;
    min-height:100vh;
  }
}

/* ===== SIDEBAR FIX v18 (glass: rounded floating purple/black panel) ===== */
.layout {
  display:flex;
  min-height:100vh;
  min-height:100dvh;
}

.sidebar {
  position:fixed;
  top:10px;
  bottom:10px;
  right:10px;
  width:280px;
  height:auto;
  overflow:hidden;
  z-index:200;
  display:flex;
  flex-direction:column;
  flex-shrink:0;
  border-radius:24px;
  background:linear-gradient(165deg,rgba(34,16,66,.78),rgba(10,6,22,.88));
  backdrop-filter:blur(22px) saturate(150%);
  -webkit-backdrop-filter:blur(22px) saturate(150%);
  border:1px solid rgba(180,92,255,.22);
  box-shadow:0 24px 60px rgba(0,0,0,.5),inset 0 1px 0 rgba(255,255,255,.07);
  transition:transform .25s ease,width .22s ease;
  transform:none;
  will-change:transform;
}

body.light .sidebar {
  background:linear-gradient(165deg,rgba(255,255,255,.78),rgba(246,242,251,.62));
  border-color:rgba(180,92,255,.3);
}

.sidebar::-webkit-scrollbar {
  width:0;
  height:0;
}

.sidebar-head {
  padding:1rem 1rem .9rem;
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:10px;
  border-bottom:1px solid rgba(180,92,255,.14);
  flex-shrink:0;
  min-height:74px;
  background:rgba(10,6,22,.35);
  position:sticky;
  top:0;
  z-index:2;
}

body.light .sidebar-head {
  background:rgba(255,255,255,.4);
  border-bottom-color:rgba(180,92,255,.2);
}

.brand {
  display:flex;
  align-items:center;
  gap:10px;
  min-width:0;
  flex:1;
}

.brand-mark {
  width:46px;
  height:46px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  flex-shrink:0;
  border-radius:14px;
  background:rgba(180,92,255,.14);
  border:1px solid rgba(180,92,255,.22);
  overflow:hidden;
}

.brand-mark img {
  width:46px;
  height:46px;
  object-fit:contain;
  border-radius:14px;
  display:block;
}

.brand-text {
  display:flex;
  flex-direction:column;
  min-width:0;
  line-height:1.2;
}

.brand-name {
  font-size:1.15rem;
  font-weight:800;
  color:#fff;
  letter-spacing:-.2px;
  white-space:nowrap;
}

.brand small {
  font-size:.7rem;
  color:var(--muted2);
  text-transform:uppercase;
  letter-spacing:1.4px;
  font-weight:700;
  white-space:nowrap;
}

#collapseBtn {
  flex-shrink:0;
  width:30px;
  height:30px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  border-radius:8px;
  font-size:16px;
}

#nav {
  flex:1;
  min-height:0;
  overflow-y:auto;
  overflow-x:hidden;
  padding:.7rem .7rem 1.5rem;
  scrollbar-width:thin;
  scrollbar-color:rgba(180,92,255,.25) transparent;
  overscroll-behavior:contain;
}

#nav::-webkit-scrollbar {
  width:5px;
}

#nav::-webkit-scrollbar-track {
  background:transparent;
}

#nav::-webkit-scrollbar-thumb {
  background:rgba(180,92,255,.22);
  border-radius:99px;
}

.nav-group {
  margin-bottom:.55rem;
  background:rgba(255,255,255,.04);
  border:1px solid rgba(180,92,255,.14);
  border-radius:16px;
  padding:5px;
  backdrop-filter:blur(8px);
  -webkit-backdrop-filter:blur(8px);
}

body.light .nav-group {
  background:rgba(255,255,255,.5);
  border-color:rgba(180,92,255,.2);
}

.nav-group-btn {
  width:100%;
  display:flex;
  align-items:center;
  gap:.7rem;
  padding:.72rem .8rem;
  border:none;
  background:transparent;
  color:var(--muted2);
  font-size:.8rem;
  font-weight:800;
  text-transform:uppercase;
  letter-spacing:.7px;
  cursor:pointer;
  border-radius:12px;
  transition:background .18s,color .18s;
  font-family:inherit;
  position:relative;
  text-align:start;
}

.nav-group-btn:hover {
  color:var(--text);
  background:rgba(180,92,255,.1);
}

.nav-group-icon {
  width:28px;
  height:28px;
  border-radius:10px;
  display:flex;
  align-items:center;
  justify-content:center;
  background:rgba(180,92,255,.14);
  border:1px solid rgba(180,92,255,.18);
  flex-shrink:0;
  color:var(--cyan);
}

.nav-group-label {
  flex:1;
  text-align:start;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
  min-width:0;
}

.nav-group.open .nav-group-btn {
  color:var(--cyan);
  background:rgba(180,92,255,.12);
}

.nav-group.open .nav-group-icon {
  background:rgba(180,92,255,.24);
  border-color:rgba(180,92,255,.35);
}

.nav-group-body {
  display:grid;
  grid-template-rows:0fr;
  transition:grid-template-rows .28s cubic-bezier(.4,0,.2,1);
}

.nav-group.open .nav-group-body {
  grid-template-rows:1fr;
}

.nav-group-list {
  display:flex;
  flex-direction:column;
  gap:2px;
  overflow:hidden;
  min-height:0;
}

.nav-group.open .nav-group-list {
  padding:4px 0 8px;
}

.nav-item {
  border-radius:13px;
  padding:.68rem .85rem;
  margin:0 3px;
  font-size:.95rem;
  font-weight:600;
  color:var(--muted);
  transition:background .15s,color .15s,border-color .15s,box-shadow .2s;
  display:flex;
  align-items:center;
  gap:.7rem;
  cursor:pointer;
  background:rgba(255,255,255,.04);
  border:1px solid rgba(255,255,255,.06);
  position:relative;
  overflow:hidden;
  white-space:nowrap;
  line-height:1.4;
  min-width:0;
}

body.light .nav-item {
  background:rgba(255,255,255,.55);
  border-color:rgba(180,92,255,.1);
}

.nav-item>span {
  flex:1;
  min-width:0;
  overflow:hidden;
  text-overflow:ellipsis;
  text-align:start;
}

.nav-item svg {
  flex-shrink:0;
}

.nav-item:hover {
  background:rgba(180,92,255,.14);
  color:var(--text);
  border-color:rgba(180,92,255,.3);
}

.nav-item.active {
  background:linear-gradient(135deg,rgba(180,92,255,.45),rgba(255,46,99,.22));
  color:#fff;
  border-color:rgba(180,92,255,.55);
  box-shadow:0 6px 20px rgba(180,92,255,.3),inset 0 1px 0 rgba(255,255,255,.16);
}

.main {
  flex:1;
  margin-right:300px;
  margin-left:0;
  min-width:0;
  display:flex;
  flex-direction:column;
  min-height:100vh;
  min-height:100dvh;
  max-width:calc(100% - 300px);
}

.topbar {
  position:sticky;
  top:0;
  z-index:100;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  flex-wrap:wrap;
  padding:.8rem 1.2rem;
  background:var(--topbar-bg);
  border-bottom:1px solid var(--line);
}

.topbar-left {
  display:flex;
  align-items:center;
  gap:.8rem;
  min-width:0;
  flex:1;
}

.topbar .row {
  display:flex;
  align-items:center;
  gap:.5rem;
  flex-wrap:wrap;
}

.view-title {
  font-size:1.15rem;
  font-weight:800;
  white-space:nowrap;
}

.view-sub {
  font-size:.8rem;
  color:var(--muted);
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
  max-width:40vw;
}

#view {
  padding:1.2rem;
  max-width:1600px;
  width:100%;
  margin-inline:auto;
  min-width:0;
}

/* desktop collapsed mode */
@media(min-width:901px) {
  #navToggle {
    display:none;
  }
  body.sidebar-collapsed .sidebar {
    width:84px;
  }
  body.sidebar-collapsed .main {
    margin-right:104px;
    max-width:calc(100% - 104px);
  }
  body.sidebar-collapsed .brand-text,body.sidebar-collapsed .nav-group-label,body.sidebar-collapsed .nav-caret,body.sidebar-collapsed .nav-item>span {
    display:none;
  }
  body.sidebar-collapsed .sidebar-head {
    justify-content:center;
    padding:16px 8px;
  }
  body.sidebar-collapsed .nav-group-btn {
    justify-content:center;
    padding:.7rem .4rem;
  }
  body.sidebar-collapsed .nav-item {
    justify-content:center;
    padding:.7rem .4rem;
    margin:0 2px;
  }
  body.sidebar-collapsed #collapseBtn {
    display:none;
  }
  /* Collapsed rail: the head (logo) is already centred by the rule above and
     becomes the single re-open control (wired in panel.ts). */
  body.sidebar-collapsed .sidebar-head .brand {
    cursor:pointer;
    justify-content:center;
    flex:0 0 auto;
  }
  body.sidebar-collapsed .sidebar-head .brand-mark {
    width:44px;
    height:44px;
    transition:transform .16s ease,box-shadow .16s ease;
  }
  body.sidebar-collapsed .sidebar-head .brand:hover .brand-mark {
    transform:scale(1.06);
    box-shadow:0 0 0 3px rgba(180,92,255,.28);
  }
}

/* mobile drawer */
@media(max-width:900px) {
  .sidebar {
    top:0;
    bottom:0;
    right:0;
    width:min(330px,88vw);
    border-radius:0;
    transform:translateX(100%);
    box-shadow:-20px 0 60px rgba(0,0,0,.5);
    background:linear-gradient(165deg,rgba(34,16,66,.94),rgba(10,6,22,.97));
  }
  body.light .sidebar {
    background:linear-gradient(165deg,rgba(255,255,255,.96),rgba(246,242,251,.94));
  }
  html[dir="ltr"] .sidebar {
    transform:translateX(-100%);
    right:auto;
    left:0;
  }
  .sidebar.open,body.nav-open .sidebar,
  html[dir="ltr"] .sidebar.open,html[dir="ltr"] body.nav-open .sidebar {
    transform:translateX(0);
  }
  .main {
    margin-right:0;
    max-width:100%;
  }
  #navToggle {
    display:inline-flex;
  }
  .view-sub {
    display:none;
  }
  #view {
    padding:.9rem;
  }
  .topbar {
    padding:.65rem .8rem;
  }
}

/* visual fixes: hero / stats / cards */
.hero-banner {
  display:flex;
  align-items:center;
  gap:14px;
  flex-wrap:wrap;
  border:1px solid rgba(180,92,255,.15);
  border-radius:16px;
  padding:20px 22px;
  margin-bottom:1rem;
  background:linear-gradient(135deg,rgba(180,92,255,.12),rgba(255,46,99,.07));
  overflow:hidden;
}

.hero-stats {
  display:flex;
  gap:10px;
  flex-wrap:wrap;
  margin-inline-start:auto;
}

.hero-stat {
  min-width:86px;
  text-align:center;
  background:rgba(0,0,0,.25);
  border:1px solid rgba(180,92,255,.12);
  border-radius:12px;
  padding:8px 14px;
}

.stats {
  display:grid;
  gap:.8rem;
  grid-template-columns:repeat(auto-fit,minmax(160px,1fr));
  margin-bottom:1.1rem;
}

.stat {
  min-width:0;
}

.stat .v {
  font-size:1.35rem;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}

.card {
  min-width:0;
}

.table-wrap {
  overflow-x:auto;
  max-width:100%;
}

table {
  min-width:620px;
}

.qa-card {
  min-width:0;
}

@media(max-width:640px) {
  .hero-banner {
    padding:16px;
  }
  .hero-stats {
    width:100%;
    margin-inline-start:0;
    display:grid;
    grid-template-columns:repeat(3,1fr);
  }
  .hero-stat {
    min-width:0;
    padding:8px 6px;
  }
  .stats {
    grid-template-columns:repeat(2,1fr);
  }
  .topbar .row {
    width:100%;
    justify-content:flex-start;
  }
}

@media(prefers-reduced-motion:reduce) {
  .sidebar,.nav-group-body,.nav-caret {
    transition:none;
  }
}

/* ------------------------------------------------------------------ */
/* SMPP Hub — 10-tab panel (RTL, purple glass)                        */
/* ------------------------------------------------------------------ */
.smpp-tabs {
  background:linear-gradient(135deg,#160b30,#241046);
  border:1px solid #3b1d78;
  border-radius:14px;
  display:flex;
  gap:6px;
  margin-bottom:20px;
  overflow-x:auto;
  padding:8px;
  scrollbar-width:thin;
}

.smpp-tabs::-webkit-scrollbar {
  height:6px;
}

.smpp-tabs::-webkit-scrollbar-thumb {
  background:#4c1d95;
  border-radius:3px;
}

.smpp-tab {
  align-items:center;
  background:transparent;
  border:1px solid transparent;
  border-radius:11px;
  color:#a698cf;
  cursor:pointer;
  display:inline-flex;
  flex:0 0 auto;
  font-family:inherit;
  font-size:13px;
  font-weight:600;
  gap:7px;
  padding:9px 16px;
  transition:background .18s,color .18s,border-color .18s,transform .18s;
  white-space:nowrap;
}

.smpp-tab .ti {
  font-size:15px;
  line-height:1;
}

.smpp-tab:hover {
  background:hsla(0,0%,100%,.05);
  color:#e9e3ff;
}

.smpp-tab.active {
  background:linear-gradient(135deg,#7c3aed,#a855f7);
  border-color:#a855f7;
  box-shadow:0 4px 16px rgba(124,58,237,.4);
  color:#fff;
}

.smpp-tab-panel {
  display:none;
}

.smpp-tab-panel.active {
  display:block;
  animation:smppFade .22s ease;
}

@keyframes smppFade {
  from {
    opacity:0;
    transform:translateY(4px);
  }

  to {
    opacity:1;
    transform:none;
  }
}

.smpp-tbl .num.amber {
  color:#f59e0b;
  font-weight:700;
}

.smpp-log {
  background:#0d0620;
  border:1px solid #2d1560;
  border-radius:10px;
  font-family:monospace;
  font-size:12px;
  max-height:420px;
  overflow:auto;
  padding:10px 12px;
}

.smpp-log-line {
  border-bottom:1px solid hsla(0,0%,100%,.05);
  color:#cbbcf5;
  display:flex;
  flex-wrap:wrap;
  gap:10px;
  padding:5px 0;
}

.smpp-log-line:last-child {
  border-bottom:none;
}

.smpp-log-line .t {
  color:#6b5a9e;
}

.smpp-log-line .u {
  color:#3ddc97;
}

.smpp-log-line .a {
  color:#b45cff;
  font-weight:700;
}

.smpp-log-line .m {
  color:#a698cf;
}

@media(max-width:700px) {
  .smpp-tab {
    font-size:12px;
    padding:8px 12px;
  }

  .smpp-tab .tl {
    display:none;
  }

  .smpp-tab .ti {
    font-size:18px;
  }
}
