/* Generated by scripts/build_panel_static_assets.py. Do not edit directly. */
/* source: panel/frontend/css/tokens/primitives.css */
:root {
  --nx-n-0:#ffffff;
  --nx-n-50:#f8fafc;
  --nx-n-100:#f1f5f9;
  --nx-n-200:#e2e8f0;
  --nx-n-300:#cbd5e1;
  --nx-n-400:#94a3b8;
  --nx-n-500:#64748b;
  --nx-n-600:#475569;
  --nx-n-700:#334155;
  --nx-n-800:#1e293b;
  --nx-n-900:#0f172a;
  --nx-n-950:#020617;

  --nx-blue-50:#eff6ff;
  --nx-blue-100:#dbeafe;
  --nx-blue-400:#60a5fa;
  --nx-blue-600:#2563eb;
  --nx-blue-700:#1d4ed8;

  --nx-green-50:#f0fdf4;
  --nx-green-600:#16a34a;
  --nx-amber-50:#fffbeb;
  --nx-amber-600:#d97706;
  --nx-red-50:#fef2f2;
  --nx-red-600:#dc2626;
}
/* source: panel/frontend/css/tokens/semantics.css */
:root {
  --nx-bg:var(--nx-n-50);
  --nx-surface:var(--nx-n-0);
  --nx-surface-muted:var(--nx-n-100);
  --nx-line:var(--nx-n-200);
  --nx-line-strong:var(--nx-n-300);

  --nx-text:var(--nx-n-900);
  --nx-text-2:var(--nx-n-600);
  --nx-text-muted:var(--nx-n-500);
  --nx-text-faint:var(--nx-n-400);

  --nx-brand:var(--nx-blue-600);
  --nx-brand-hover:var(--nx-blue-700);
  --nx-brand-bg:var(--nx-blue-50);
  --nx-brand-on:#ffffff;

  --nx-success:var(--nx-green-600);
  --nx-success-bg:var(--nx-green-50);
  --nx-warning:var(--nx-amber-600);
  --nx-warning-bg:var(--nx-amber-50);
  --nx-danger:var(--nx-red-600);
  --nx-danger-bg:var(--nx-red-50);

  --nx-focus-ring:rgba(37,99,235,.28);
  --nx-selection:rgba(37,99,235,.16);
  --nx-overlay:rgba(15,23,42,.4);
}

:root[data-theme="dark"] {
  --nx-bg:#0a0e17;
  --nx-surface:#131a26;
  --nx-surface-muted:#1a2332;
  --nx-line:#243042;
  --nx-line-strong:#334155;

  --nx-text:#e2e8f0;
  --nx-text-2:#cbd5e1;
  --nx-text-muted:#94a3b8;
  --nx-text-faint:#64748b;

  --nx-brand:#60a5fa;
  --nx-brand-hover:#93c5fd;
  --nx-brand-bg:rgba(96,165,250,.14);
  --nx-brand-on:#0a0e17;

  --nx-success:#4ade80;
  --nx-success-bg:rgba(74,222,128,.10);
  --nx-warning:#fbbf24;
  --nx-warning-bg:rgba(251,191,36,.10);
  --nx-danger:#f87171;
  --nx-danger-bg:rgba(248,113,113,.10);

  --nx-focus-ring:rgba(96,165,250,.40);
  --nx-selection:rgba(96,165,250,.22);
  --nx-overlay:rgba(2,6,23,.66);
}
/* source: panel/frontend/css/tokens/scales.css */
:root {
  --nx-font:-apple-system,BlinkMacSystemFont,"Segoe UI","Inter","PingFang SC","Noto Sans SC","Microsoft YaHei",sans-serif;
  --nx-mono:"SFMono-Regular","JetBrains Mono","Consolas","PingFang SC","Microsoft YaHei",monospace;

  --nx-fs-caption:12px;
  --nx-fs-body:14px;
  --nx-fs-dense:13px;
  --nx-fs-title:16px;
  --nx-fs-page:20px;
  --nx-fs-display:24px;

  --nx-fw-normal:400;
  --nx-fw-medium:500;
  --nx-fw-semibold:600;
  --nx-fw-bold:700;

  --nx-lh-control:1;
  --nx-lh-title:1.3;
  --nx-lh-body:1.5;

  --nx-s-1:4px;
  --nx-s-2:8px;
  --nx-s-3:12px;
  --nx-s-4:16px;
  --nx-s-5:20px;
  --nx-s-6:24px;
  --nx-s-8:32px;
  --nx-s-10:40px;
  --nx-s-12:48px;

  --nx-r-sm:6px;
  --nx-r-md:8px;
  --nx-r-lg:12px;
  --nx-r-pill:999px;

  --nx-e-0:none;
  --nx-e-1:0 1px 2px rgba(15,23,42,.05);
  --nx-e-2:0 4px 12px rgba(15,23,42,.10);
  --nx-e-3:0 20px 48px rgba(15,23,42,.16);

  --nx-z-sticky:10;
  --nx-z-header:20;
  --nx-z-dropdown:30;
  --nx-z-overlay:40;
  --nx-z-modal:50;
  --nx-z-toast:60;

  --nx-border-width:1px;
  --nx-focus-width:3px;
  --nx-e-focus:0 0 0 var(--nx-focus-width) var(--nx-focus-ring);
  --nx-control-md:36px;
  --nx-control-sm:32px;
  --nx-control-xs:28px;
  --nx-field-height:38px;
  --nx-table-cell-compact-y:7px;
  --nx-table-cell-y:9px;
  --nx-opacity-disabled:.5;
  --nx-sidebar-width:232px;
  --nx-nav-indicator-width:2px;
}

:root[data-theme="dark"] {
  --nx-e-1:0 1px 2px rgba(0,0,0,.4);
  --nx-e-2:0 6px 16px rgba(0,0,0,.5);
  --nx-e-3:0 24px 56px rgba(0,0,0,.6);
}
/* source: panel/frontend/css/base/reset.css */
*,
*::before,
*::after {
  box-sizing:border-box;
}

html,
body {
  min-width:0;
  min-height:100%;
}

body {
  margin:0;
}

button,
input,
select,
textarea {
  font:inherit;
}

button,
summary,
[role="button"],
a[href] {
  -webkit-tap-highlight-color:transparent;
}

button:not(:disabled),
summary,
[role="button"]:not([aria-disabled="true"]),
a[href],
label[for] {
  cursor:pointer;
}

a {
  color:var(--nx-brand);
}

a:hover {
  color:var(--nx-brand-hover);
}

fieldset {
  min-width:0;
  margin:0;
  padding:0;
  border:0;
}

summary {
  list-style:none;
}

summary::-webkit-details-marker {
  display:none;
}

img,
svg {
  display:block;
  max-width:100%;
}

table {
  border-collapse:collapse;
  border-spacing:0;
}
/* source: panel/frontend/css/base/theme.css */
body {
  background:var(--nx-bg);
  color:var(--nx-text);
  font-family:var(--nx-font);
  font-size:var(--nx-fs-body);
  font-weight:var(--nx-fw-normal);
  line-height:var(--nx-lh-body);
}

::selection {
  background:var(--nx-selection);
}

.mono,
code,
kbd,
samp,
pre,
.pre {
  font-family:var(--nx-mono);
  font-variant-ligatures:none;
  letter-spacing:0;
}

.muted,
.meta,
.meta-item,
.card-sub,
.section-sub,
.help,
.panel-sub {
  color:var(--nx-text-muted);
}

.text-bad,
.form-error {
  color:var(--nx-danger);
}

.text-ok {
  color:var(--nx-success);
}

.text-warn {
  color:var(--nx-warning);
}

.sr-only {
  position:absolute;
  width:var(--nx-border-width);
  height:var(--nx-border-width);
  padding:0;
  margin:calc(var(--nx-border-width) * -1);
  overflow:hidden;
  clip:rect(0 0 0 0);
  clip-path:inset(50%);
  white-space:nowrap;
  border:0;
}

.is-hidden,
[hidden] {
  display:none;
}

.skip-link {
  position:fixed;
  inset:var(--nx-s-3) auto auto var(--nx-s-3);
  z-index:var(--nx-z-toast);
  padding:var(--nx-s-2) var(--nx-s-3);
  border:var(--nx-border-width) solid var(--nx-brand);
  border-radius:var(--nx-r-sm);
  background:var(--nx-brand);
  color:var(--nx-brand-on);
  box-shadow:var(--nx-e-2);
  text-decoration:none;
  transform:translateY(-200%);
}

.skip-link:focus {
  color:var(--nx-brand-on);
  transform:translateY(0);
}
/* source: panel/frontend/css/base/layout.css */
.nx-flow {
  display:grid;
  gap:var(--nx-s-4);
}

.nx-cluster {
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  gap:var(--nx-s-2);
}

.nx-grid {
  display:grid;
  gap:var(--nx-s-4);
}

.page-shell,
.page-frame {
  position:relative;
}

.page-head,
.dash-page-head {
  min-width:0;
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:var(--nx-s-4);
  padding:0 0 var(--nx-s-4);
  border-bottom:var(--nx-border-width) solid var(--nx-line);
}

.page-title,
.dash-page-title {
  min-width:0;
  display:grid;
  gap:var(--nx-s-1);
}

.h1,
.page-title .h1,
.dash-page-title h1 {
  margin:calc(var(--nx-s-1) * 0);
  color:var(--nx-text);
  font-size:var(--nx-fs-page);
  font-weight:var(--nx-fw-semibold);
  line-height:var(--nx-lh-title);
  letter-spacing:0;
}

.h2,
.card-title,
.section-title,
.panel-title {
  margin:calc(var(--nx-s-1) * 0);
  color:var(--nx-text);
  font-size:var(--nx-fs-title);
  font-weight:var(--nx-fw-semibold);
  line-height:var(--nx-lh-title);
  letter-spacing:0;
}

.page-head .meta,
.dash-page-title p {
  margin:calc(var(--nx-s-1) * 0);
  color:var(--nx-text-muted);
  font-size:var(--nx-fs-caption);
  line-height:var(--nx-lh-body);
}

.page-head .right,
.page-head .action-group,
.dash-page-actions,
.action-group,
.row-end,
.row-end-sm,
.row-end-12,
.justify-end {
  min-width:0;
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  justify-content:flex-end;
  gap:var(--nx-s-2);
}

.card-header,
.page-section-head,
.section-head {
  min-width:0;
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:var(--nx-s-3);
  margin:0 0 var(--nx-s-3);
}

.row {
  min-width:0;
  display:flex;
  flex-wrap:wrap;
  gap:var(--nx-s-3);
}

.row-between {
  justify-content:space-between;
}

.items-center {
  align-items:center;
}

.col {
  min-width:0;
  flex:1 1 0;
}

.right {
  margin-left:auto;
  text-align:right;
}

.wrap {
  flex-wrap:wrap;
  overflow-wrap:anywhere;
}

.full {
  width:100%;
  grid-column:1 / -1;
}

.minw-0 {
  min-width:0;
}

.d-flex {
  display:flex;
}

.m-0 {
  margin:calc(var(--nx-s-1) * 0);
}

.mt-6 {
  margin-top:var(--nx-s-2);
}

.mt-8 {
  margin-top:var(--nx-s-2);
}

.mt-10,
.mt-12 {
  margin-top:var(--nx-s-3);
}

.gap-8 {
  gap:var(--nx-s-2);
}

.gap-10,
.row-gap12 {
  gap:var(--nx-s-3);
}

.ov-anywhere {
  overflow-wrap:anywhere;
}

@media (max-width:720px) {
  .page-head,
  .dash-page-head {
    align-items:stretch;
    flex-direction:column;
    gap:var(--nx-s-3);
  }

  .page-head .right,
  .page-head .action-group,
  .dash-page-actions {
    width:100%;
    justify-content:flex-start;
  }

  .card-header,
  .page-section-head,
  .section-head {
    align-items:stretch;
    flex-direction:column;
  }
}
/* source: panel/frontend/css/components/button.css */
.nx-button,
.btn {
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:var(--nx-s-2);
  height:var(--nx-control-md);
  padding:0 var(--nx-s-4);
  border:var(--nx-border-width) solid var(--nx-line);
  border-radius:var(--nx-r-sm);
  background:var(--nx-surface);
  color:var(--nx-text);
  box-shadow:var(--nx-e-0);
  font-family:var(--nx-font);
  font-size:var(--nx-fs-dense);
  font-weight:var(--nx-fw-semibold);
  line-height:var(--nx-lh-control);
  text-decoration:none;
  white-space:nowrap;
  cursor:pointer;
}

.nx-button--sm,
.btn.sm {
  height:var(--nx-control-sm);
}

.nx-button--xs,
.btn.xs {
  height:var(--nx-control-xs);
  padding:0 var(--nx-s-3);
}

.nx-button--primary,
.btn.primary {
  border-color:var(--nx-brand);
  background:var(--nx-brand);
  color:var(--nx-brand-on);
}

.nx-button--primary:hover,
.btn.primary:hover {
  border-color:var(--nx-brand-hover);
  background:var(--nx-brand-hover);
  color:var(--nx-brand-on);
}

.nx-button--secondary,
.nx-button--ghost,
.btn.secondary,
.btn.ghost {
  border-color:var(--nx-line);
  background:var(--nx-surface);
  color:var(--nx-text);
}

.nx-button--secondary:hover,
.nx-button--ghost:hover,
.btn.secondary:hover,
.btn.ghost:hover {
  border-color:var(--nx-line-strong);
  background:var(--nx-brand-bg);
  color:var(--nx-brand);
}

.nx-button--danger,
.btn.danger,
.btn.bad {
  border-color:var(--nx-danger);
  background:var(--nx-danger);
  color:var(--nx-n-0);
}

.nx-button:focus-visible,
.btn:focus-visible {
  outline:var(--nx-e-0);
  box-shadow:var(--nx-e-focus);
}

.nx-button:disabled,
.nx-button[aria-disabled="true"],
.btn:disabled,
.btn[aria-disabled="true"] {
  opacity:var(--nx-opacity-disabled);
  cursor:not-allowed;
  pointer-events:none;
}

.btn.icon {
  width:var(--nx-control-md);
  min-width:var(--nx-control-md);
  padding:0;
}

.btn.icon.sm {
  width:var(--nx-control-sm);
  min-width:var(--nx-control-sm);
}

.btn.icon.xs {
  width:var(--nx-control-xs);
  min-width:var(--nx-control-xs);
}

.btn.is-loading,
button.is-loading {
  position:relative;
  visibility:hidden;
  pointer-events:none;
}

.btn.is-loading::after,
button.is-loading::after {
  content:"";
  position:absolute;
  width:var(--nx-s-4);
  height:var(--nx-s-4);
  border:var(--nx-border-width) solid currentColor;
  border-right-style:none;
  border-radius:var(--nx-r-pill);
  color:var(--nx-brand-on);
  visibility:visible;
}

@media (pointer:coarse) {
  .btn:not(.xs),
  button.btn:not(.xs),
  .nx-button:not(.nx-button--xs) {
    min-height:var(--nx-control-md);
  }
}
/* source: panel/frontend/css/components/card.css */
.nx-card,
.card,
.page-section-shell {
  display:grid;
  gap:var(--nx-s-3);
  padding:var(--nx-s-4);
  border:var(--nx-border-width) solid var(--nx-line);
  border-radius:var(--nx-r-md);
  background:var(--nx-surface);
  color:var(--nx-text);
  box-shadow:var(--nx-e-1);
}

.nx-card--interactive:hover,
a.card:hover,
button.card:hover,
[role="button"].card:hover {
  border-color:var(--nx-line-strong);
  box-shadow:var(--nx-e-2);
}

.card.compact,
.page-section-shell.compact {
  padding:var(--nx-s-3);
}

.nx-card__header {
  display:grid;
  gap:var(--nx-s-1);
}

.nx-card__title {
  color:var(--nx-text);
  font-size:var(--nx-fs-title);
  font-weight:var(--nx-fw-semibold);
  line-height:var(--nx-lh-title);
}

.nx-card__description {
  color:var(--nx-text-muted);
  font-size:var(--nx-fs-body);
  line-height:var(--nx-lh-body);
}

.nx-card__footer {
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  gap:var(--nx-s-2);
  padding-top:var(--nx-s-1);
}
/* source: panel/frontend/css/components/table.css */
.nx-table-shell,
.table-shell,
.table-wrap {
  overflow-x:auto;
  border:var(--nx-border-width) solid var(--nx-line);
  border-radius:var(--nx-r-md);
  background:var(--nx-surface);
}

.nx-table,
.table {
  width:100%;
  color:var(--nx-text);
  font-size:var(--nx-fs-dense);
  line-height:var(--nx-lh-body);
}

.nx-table th,
.table th {
  padding:var(--nx-table-cell-y) var(--nx-s-3);
  border-bottom:var(--nx-border-width) solid var(--nx-line);
  background:var(--nx-surface-muted);
  color:var(--nx-text-muted);
  font-size:var(--nx-fs-caption);
  font-weight:var(--nx-fw-semibold);
  text-align:left;
}

.nx-table td,
.table td {
  padding:var(--nx-table-cell-y) var(--nx-s-3);
  border-bottom:var(--nx-border-width) solid var(--nx-line);
  text-align:left;
}

.nx-table--compact th,
.nx-table--compact td,
.table.compact th,
.table.compact td {
  padding:var(--nx-table-cell-compact-y) var(--nx-s-2);
}

.nx-table tbody tr:hover,
.table tbody tr:hover {
  background:var(--nx-brand-bg);
}

.nx-table tbody tr:last-child td,
.table tbody tr:last-child td {
  border-bottom:var(--nx-e-0);
}

.nx-table__numeric {
  text-align:right;
}
/* source: panel/frontend/css/components/field.css */
.nx-field {
  display:grid;
  gap:var(--nx-s-1);
}

.nx-field__label,
.label {
  display:inline-flex;
  align-items:center;
  gap:var(--nx-s-1);
  margin:0 0 var(--nx-s-1);
  color:var(--nx-text-muted);
  font-size:var(--nx-fs-caption);
  font-weight:var(--nx-fw-medium);
  line-height:var(--nx-lh-title);
}

.nx-field__control,
body[data-nx-ui] .nx-field :is(input, select, textarea).nx-field__control,
.input,
.select,
.textarea,
input[type="text"],
input[type="number"],
input[type="password"],
input[type="search"],
input[type="url"],
input[type="email"],
input[type="datetime-local"],
select,
textarea {
  width:100%;
  min-width:0;
  height:var(--nx-field-height);
  padding:0 var(--nx-s-3);
  border:var(--nx-border-width) solid var(--nx-line);
  border-radius:var(--nx-r-sm);
  background:var(--nx-surface);
  color:var(--nx-text);
  box-shadow:var(--nx-e-0);
  font-family:var(--nx-font);
  font-size:var(--nx-fs-dense);
  font-weight:var(--nx-fw-normal);
  line-height:var(--nx-lh-control);
}

.nx-field__control::placeholder,
body[data-nx-ui] .nx-field :is(input, textarea).nx-field__control::placeholder,
.input::placeholder,
.textarea::placeholder,
input::placeholder,
textarea::placeholder {
  color:var(--nx-text-faint);
}

.nx-field__control:focus,
body[data-nx-ui] .nx-field :is(input, select, textarea).nx-field__control:focus,
.input:focus,
.select:focus,
.textarea:focus,
input:focus,
select:focus,
textarea:focus {
  border-color:var(--nx-brand);
  outline:var(--nx-e-0);
  box-shadow:var(--nx-e-focus);
}

.nx-field__control[aria-invalid="true"],
body[data-nx-ui] .nx-field :is(input, select, textarea).nx-field__control[aria-invalid="true"] {
  border-color:var(--nx-danger);
}

.nx-field__help,
.help {
  margin-top:var(--nx-s-1);
  color:var(--nx-text-muted);
  font-size:var(--nx-fs-caption);
  font-weight:var(--nx-fw-normal);
  line-height:var(--nx-lh-body);
}

textarea,
.textarea {
  min-height:calc(var(--nx-field-height) * 3);
  height:auto;
  padding-block:var(--nx-s-2);
  resize:vertical;
}

.form {
  display:flex;
  flex-direction:column;
  gap:var(--nx-s-3);
}

.form-grid {
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:var(--nx-s-3);
}

.inline-check,
input[type="checkbox"],
input[type="radio"] {
  accent-color:var(--nx-brand);
}

input:disabled,
select:disabled,
textarea:disabled {
  opacity:var(--nx-opacity-disabled);
  cursor:not-allowed;
}

.form-error:not(.is-hidden) {
  padding:var(--nx-s-2) var(--nx-s-3);
  border:var(--nx-border-width) solid var(--nx-danger);
  border-radius:var(--nx-r-sm);
  background:var(--nx-danger-bg);
  color:var(--nx-danger);
  font-size:var(--nx-fs-caption);
  line-height:var(--nx-lh-body);
}

@media (max-width:720px) {
  .form-grid {
    grid-template-columns:minmax(0,1fr);
  }
}
/* source: panel/frontend/css/components/modal.css */
.nx-modal,
.modal {
  position:fixed;
  inset:0;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:var(--nx-s-6);
  background:var(--nx-overlay);
  z-index:var(--nx-z-overlay);
}

.modal.is-hidden {
  display:none;
}

.nx-modal__dialog,
.modal-inner,
.modal-pro {
  position:relative;
  width:min(100%,calc(var(--nx-s-12) * 15));
  max-height:calc(100dvh - var(--nx-s-12));
  overflow:hidden;
  border:var(--nx-border-width) solid var(--nx-line);
  border-radius:var(--nx-r-lg);
  background:var(--nx-surface);
  color:var(--nx-text);
  box-shadow:var(--nx-e-3);
  z-index:var(--nx-z-modal);
}

.nx-modal__header,
.nx-modal__body,
.nx-modal__footer,
.modal-head,
.modal-body,
.modal-foot {
  padding:var(--nx-s-4);
}

.nx-modal__header,
.modal-head,
.modal-inner > .row:first-child {
  display:grid;
  gap:var(--nx-s-1);
  border-bottom:var(--nx-border-width) solid var(--nx-line);
}

.nx-modal__title {
  color:var(--nx-text);
  font-size:var(--nx-fs-title);
  font-weight:var(--nx-fw-semibold);
  line-height:var(--nx-lh-title);
}

.nx-modal__description {
  color:var(--nx-text-muted);
  font-size:var(--nx-fs-body);
  line-height:var(--nx-lh-body);
}

.nx-modal__body {
  color:var(--nx-text-2);
  font-size:var(--nx-fs-body);
  line-height:var(--nx-lh-body);
}

.nx-modal__footer,
.modal-foot,
.modal .row-end,
.modal .row-end-sm,
.modal .row-end-12 {
  display:flex;
  flex-wrap:wrap;
  justify-content:flex-end;
  gap:var(--nx-s-2);
  border-top:var(--nx-border-width) solid var(--nx-line);
}

.modal-body,
.modal-inner > .form,
.modal-inner > form,
.modal-inner > .mt-10,
.modal-inner > .table-wrap {
  min-height:0;
  max-height:calc(100dvh - var(--nx-s-12) - var(--nx-control-md));
  overflow:auto;
  padding:var(--nx-s-4);
  overscroll-behavior:contain;
}

.modal-inner.maxw-520 {
  width:min(100%,calc(var(--nx-s-10) * 13));
}

.modal-inner.maxw-560 {
  width:min(100%,calc(var(--nx-s-10) * 14));
}

.modal-inner.maxw-720 {
  width:min(100%,calc(var(--nx-s-12) * 15));
}

.modal-inner.maxw-960 {
  width:min(100%,calc(var(--nx-s-12) * 20));
}

@media (max-width:720px) {
  .nx-modal,
  .modal {
    align-items:flex-end;
    padding:0;
  }

  .nx-modal__dialog,
  .modal-inner,
  .modal-pro {
    width:100%;
    max-width:none;
    max-height:calc(100dvh - var(--nx-s-3));
    border-radius:var(--nx-r-lg) var(--nx-r-lg) 0 0;
    border-bottom:0;
  }

  .modal .row-end,
  .modal .row-end-sm,
  .modal .row-end-12 {
    display:grid;
    grid-template-columns:minmax(0,1fr);
  }
}
/* source: panel/frontend/css/components/badge.css */
.nx-badge,
.pill,
.badge {
  display:inline-flex;
  align-items:center;
  gap:var(--nx-s-1);
  padding:var(--nx-s-1) var(--nx-s-2);
  border-radius:var(--nx-r-pill);
  font-size:var(--nx-fs-caption);
  font-weight:var(--nx-fw-semibold);
  line-height:var(--nx-lh-control);
  white-space:nowrap;
}

.nx-badge--neutral,
.pill {
  background:var(--nx-surface-muted);
  color:var(--nx-text-2);
}

.nx-badge--success,
.pill.ok,
.pill.success {
  background:var(--nx-success-bg);
  color:var(--nx-success);
}

.nx-badge--warning,
.pill.warn {
  background:var(--nx-warning-bg);
  color:var(--nx-warning);
}

.nx-badge--danger,
.pill.bad,
.pill.danger {
  background:var(--nx-danger-bg);
  color:var(--nx-danger);
}
/* source: panel/frontend/css/components/empty-state.css */
.nx-empty-state,
.empty-state {
  display:grid;
  gap:var(--nx-s-2);
  padding:var(--nx-s-6);
  border:var(--nx-border-width) solid var(--nx-line);
  border-radius:var(--nx-r-md);
  background:var(--nx-surface);
  color:var(--nx-text);
  box-shadow:var(--nx-e-0);
  text-align:left;
}

.nx-empty-state__title,
.empty-state-title {
  color:var(--nx-text);
  font-size:var(--nx-fs-title);
  font-weight:var(--nx-fw-semibold);
  line-height:var(--nx-lh-title);
}

.nx-empty-state__description,
.empty-state-sub {
  color:var(--nx-text-muted);
  font-size:var(--nx-fs-body);
  line-height:var(--nx-lh-body);
}

.nx-empty-state__actions,
.empty-state-actions {
  display:flex;
  flex-wrap:wrap;
  gap:var(--nx-s-2);
  padding-top:var(--nx-s-1);
}

.empty-state.compact {
  padding:var(--nx-s-4);
}
/* source: panel/frontend/css/components/toast.css */
.nx-toast,
.toast {
  position:fixed;
  right:var(--nx-s-4);
  bottom:calc(var(--nx-s-4) + env(safe-area-inset-bottom));
  display:grid;
  gap:var(--nx-s-1);
  max-width:calc(100vw - var(--nx-s-8));
  padding:var(--nx-s-3) var(--nx-s-4);
  border:var(--nx-border-width) solid var(--nx-line);
  border-radius:var(--nx-r-md);
  background:var(--nx-surface);
  color:var(--nx-text);
  box-shadow:var(--nx-e-2);
  z-index:var(--nx-z-toast);
}

.nx-toast--success,
.toast.success {
  border-color:var(--nx-success);
}

.nx-toast__title {
  color:var(--nx-text);
  font-size:var(--nx-fs-dense);
  font-weight:var(--nx-fw-semibold);
  line-height:var(--nx-lh-title);
}

.nx-toast--success .nx-toast__title {
  color:var(--nx-success);
}

.nx-toast__message {
  color:var(--nx-text-muted);
  font-size:var(--nx-fs-caption);
  line-height:var(--nx-lh-body);
}

.toast.error,
.toast.bad {
  border-color:var(--nx-danger);
}

.flash {
  padding:var(--nx-s-2) var(--nx-s-3);
  border:var(--nx-border-width) solid var(--nx-brand);
  border-radius:var(--nx-r-md);
  background:var(--nx-brand-bg);
  color:var(--nx-brand);
  font-size:var(--nx-fs-dense);
  line-height:var(--nx-lh-body);
}

.flash.bad,
.flash.error {
  border-color:var(--nx-danger);
  background:var(--nx-danger-bg);
  color:var(--nx-danger);
}
/* source: panel/frontend/css/components/tabs.css */
.nx-tabs {
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  gap:var(--nx-s-1);
  padding-bottom:var(--nx-s-2);
  border-bottom:var(--nx-border-width) solid var(--nx-line);
}

.nx-tab,
.tab,
.chip {
  display:inline-flex;
  align-items:center;
  justify-content:center;
  height:var(--nx-control-sm);
  padding:var(--nx-s-1) var(--nx-s-3);
  border:var(--nx-border-width) solid var(--nx-line);
  border-radius:var(--nx-r-sm);
  background:var(--nx-surface);
  color:var(--nx-text-muted);
  font-family:var(--nx-font);
  font-size:var(--nx-fs-dense);
  font-weight:var(--nx-fw-semibold);
  line-height:var(--nx-lh-control);
  cursor:pointer;
}

.nx-tab:hover,
.tab:hover,
.chip:hover {
  border-color:var(--nx-line-strong);
  background:var(--nx-brand-bg);
  color:var(--nx-brand);
}

.nx-tab[aria-selected="true"],
.tab.active,
.tab[aria-selected="true"],
.chip.active,
.chip[aria-pressed="true"] {
  border-color:var(--nx-brand);
  background:var(--nx-brand-bg);
  color:var(--nx-brand);
}

.nx-tab:focus-visible,
.tab:focus-visible,
.chip:focus-visible {
  outline:var(--nx-e-0);
  box-shadow:var(--nx-e-focus);
}
/* source: panel/frontend/css/components/menu.css */
.menu {
  position:relative;
}

.menu-pop {
  min-width:calc(var(--nx-s-12) * 4);
  max-width:calc(100vw - var(--nx-s-6));
  max-height:calc(100dvh - var(--nx-s-12));
  padding:var(--nx-s-2);
  overflow:auto;
  border:var(--nx-border-width) solid var(--nx-line);
  border-radius:var(--nx-r-md);
  background:var(--nx-surface);
  color:var(--nx-text);
  box-shadow:var(--nx-e-2);
  z-index:var(--nx-z-dropdown);
}

.menu-item {
  width:100%;
  min-height:var(--nx-control-sm);
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:var(--nx-s-2);
  padding:0 var(--nx-s-2);
  border:var(--nx-border-width) solid var(--nx-surface);
  border-radius:var(--nx-r-sm);
  background:var(--nx-surface);
  color:var(--nx-text-2);
  font-family:var(--nx-font);
  font-size:var(--nx-fs-dense);
  line-height:var(--nx-lh-control);
  text-align:left;
  text-decoration:none;
}

.menu-item:hover,
.menu-item.active {
  border-color:var(--nx-line);
  background:var(--nx-brand-bg);
  color:var(--nx-brand);
}

.menu-item.danger {
  color:var(--nx-danger);
}

.menu-sep {
  height:var(--nx-border-width);
  margin:var(--nx-s-1);
  background:var(--nx-line);
}

.menu-portal {
  position:fixed;
  inset:0;
  z-index:var(--nx-z-dropdown);
  pointer-events:none;
}

.menu-portal > .menu-pop {
  pointer-events:auto;
}
/* source: panel/frontend/css/components/icons.css */
.icon-bars,
.icon-search,
.icon-x,
.icon-edit,
.icon-external,
.icon-chevron,
.icon-zap,
.icon-more,
.icon-copy,
.icon-note,
.icon-lock,
.icon-play,
.icon-pause,
.icon-trash,
.icon-fullscreen,
.icon-link,
.icon-download,
.icon-plus,
.icon-cloud,
.icon-refresh,
.icon-upload,
.icon-shield,
.icon-filter,
.icon-tool,
.icon-home,
.icon-arrow-left,
.icon-star,
.theme-toggle-ico::before {
  display:inline-block;
  width:var(--nx-s-4);
  height:var(--nx-s-4);
  flex:0 0 auto;
  background:currentColor;
  -webkit-mask-image:var(--nx-icon-mask);
  mask-image:var(--nx-icon-mask);
  -webkit-mask-repeat:no-repeat;
  mask-repeat:no-repeat;
  -webkit-mask-position:center;
  mask-position:center;
  -webkit-mask-size:100% 100%;
  mask-size:100% 100%;
}

.icon-bars {
  --nx-icon-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round'%3E%3Cpath d='M4 6h16M4 12h16M4 18h16'/%3E%3C/svg%3E");
}

.icon-search {
  --nx-icon-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='m20 20-3.5-3.5'/%3E%3C/svg%3E");
}

.icon-x {
  --nx-icon-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round'%3E%3Cpath d='M6 6l12 12M18 6 6 18'/%3E%3C/svg%3E");
}

.icon-edit {
  --nx-icon-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 20h9'/%3E%3Cpath d='M16.5 3.5a2.1 2.1 0 0 1 3 3L8 18l-4 1 1-4 11.5-11.5z'/%3E%3C/svg%3E");
}

.icon-external {
  --nx-icon-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M15 3h6v6'/%3E%3Cpath d='M10 14 21 3'/%3E%3Cpath d='M21 14v5a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5'/%3E%3C/svg%3E");
}

.icon-chevron {
  --nx-icon-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
}

.icon-zap {
  --nx-icon-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M13 2 4 14h7l-1 8 9-12h-7l1-8z'/%3E%3C/svg%3E");
}

.icon-more {
  --nx-icon-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'%3E%3Ccircle cx='5' cy='12' r='2'/%3E%3Ccircle cx='12' cy='12' r='2'/%3E%3Ccircle cx='19' cy='12' r='2'/%3E%3C/svg%3E");
}

.icon-copy {
  --nx-icon-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='8' y='8' width='12' height='12' rx='2'/%3E%3Cpath d='M16 8V6a2 2 0 0 0-2-2H6a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h2'/%3E%3C/svg%3E");
}

.icon-note {
  --nx-icon-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 4h10l6 6v10a2 2 0 0 1-2 2H4V4z'/%3E%3Cpath d='M14 4v6h6M8 14h8M8 18h5'/%3E%3C/svg%3E");
}

.icon-lock {
  --nx-icon-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='4' y='10' width='16' height='11' rx='2'/%3E%3Cpath d='M8 10V7a4 4 0 0 1 8 0v3'/%3E%3C/svg%3E");
}

.icon-play {
  --nx-icon-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'%3E%3Cpath d='M8 5v14l11-7z'/%3E%3C/svg%3E");
}

.icon-pause {
  --nx-icon-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'%3E%3Cpath d='M7 5h4v14H7zM13 5h4v14h-4z'/%3E%3C/svg%3E");
}

.icon-trash {
  --nx-icon-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 6h18M8 6V4h8v2M6 6l1 15h10l1-15M10 10v7M14 10v7'/%3E%3C/svg%3E");
}

.icon-fullscreen {
  --nx-icon-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M8 3H3v5M16 3h5v5M8 21H3v-5M16 21h5v-5'/%3E%3C/svg%3E");
}

.icon-link {
  --nx-icon-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M10 13a5 5 0 0 0 7.07 0l2-2a5 5 0 0 0-7.07-7.07l-1.15 1.15'/%3E%3Cpath d='M14 11a5 5 0 0 0-7.07 0l-2 2A5 5 0 0 0 12 20.07l1.15-1.15'/%3E%3C/svg%3E");
}

.icon-download {
  --nx-icon-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 3v12M7 10l5 5 5-5M5 21h14'/%3E%3C/svg%3E");
}

.icon-plus {
  --nx-icon-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round'%3E%3Cpath d='M12 5v14M5 12h14'/%3E%3C/svg%3E");
}

.icon-cloud {
  --nx-icon-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M17.5 19H8a5 5 0 1 1 1.1-9.88A6.5 6.5 0 0 1 21 12.5 3.5 3.5 0 0 1 17.5 19z'/%3E%3Cpath d='M12 12v5M9.5 14.5 12 12l2.5 2.5'/%3E%3C/svg%3E");
}

.icon-refresh {
  --nx-icon-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 11a8 8 0 0 0-14.4-4.8L4 8'/%3E%3Cpath d='M4 4v4h4'/%3E%3Cpath d='M4 13a8 8 0 0 0 14.4 4.8L20 16'/%3E%3Cpath d='M20 20v-4h-4'/%3E%3C/svg%3E");
}

.icon-upload {
  --nx-icon-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 21V9'/%3E%3Cpath d='m7 14 5-5 5 5'/%3E%3Cpath d='M5 3h14'/%3E%3C/svg%3E");
}

.icon-shield {
  --nx-icon-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 3 20 6v5c0 5-3.3 8.6-8 10-4.7-1.4-8-5-8-10V6l8-3z'/%3E%3Cpath d='M12 8v5M12 16h.01'/%3E%3C/svg%3E");
}

.icon-filter {
  --nx-icon-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 6h16M7 12h10M10 18h4'/%3E%3C/svg%3E");
}

.icon-tool {
  --nx-icon-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14.7 6.3a4 4 0 0 0-5 5L4 17v3h3l5.7-5.7a4 4 0 0 0 5-5l-2.4 2.4-3-3 2.4-2.4z'/%3E%3C/svg%3E");
}

.icon-home {
  --nx-icon-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 11 12 3l9 8'/%3E%3Cpath d='M5 10v10h14V10'/%3E%3Cpath d='M9 20v-6h6v6'/%3E%3C/svg%3E");
}

.icon-arrow-left {
  --nx-icon-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M19 12H5M12 19l-7-7 7-7'/%3E%3C/svg%3E");
}

.icon-star {
  --nx-icon-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m12 2.5 2.9 6 6.6.9-4.8 4.7 1.2 6.6L12 17.6l-5.9 3.1 1.2-6.6-4.8-4.7 6.6-.9L12 2.5z'/%3E%3C/svg%3E");
}

.theme-toggle-ico::before {
  content:"";
  --nx-icon-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='4'/%3E%3Cpath d='M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M4.93 19.07l1.41-1.41M17.66 6.34l1.41-1.41'/%3E%3C/svg%3E");
}

.theme-toggle-ico[data-icon="moon"]::before {
  --nx-icon-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20.99 12.46A9 9 0 1 1 11.54 3.01 7 7 0 0 0 20.99 12.46z'/%3E%3C/svg%3E");
}
