/* cx-design v1.5.1 */
.cx-dialog[hidden] { display: none; }
.cx-dialog { position: fixed; inset: 0; z-index: var(--cx-z-dialog); display: grid; place-items: center; padding: var(--cx-gutter); }
.cx-dialog__backdrop { position: absolute; inset: 0; background: var(--cx-overlay); animation: cx-dlg-fade var(--cx-dur) var(--cx-ease); }
.cx-dialog__box {
  position: relative; width: min(100%, 420px); box-sizing: border-box;
  padding: var(--cx-sp-6); border-radius: var(--cx-r-lg);
  background: var(--cx-surface); color: var(--cx-text); box-shadow: var(--cx-shadow-lg);
  font-family: var(--cx-font-sans);
  animation: cx-dlg-pop var(--cx-dur) var(--cx-ease);
}
.cx-dialog__title { margin: 0 0 var(--cx-sp-2); font-size: var(--cx-fs-lg); font-weight: var(--cx-fw-bold); line-height: var(--cx-lh-tight); }
.cx-dialog__title[hidden] { display: none; }
.cx-dialog__msg { margin: 0; font-size: var(--cx-fs-md); line-height: var(--cx-lh-base); white-space: pre-line; word-break: keep-all; overflow-wrap: anywhere; }
.cx-dialog__field { margin-top: var(--cx-sp-4); }
.cx-dialog__field[hidden] { display: none; }
.cx-dialog__input {
  width: 100%; box-sizing: border-box; min-height: var(--cx-control-h); padding: var(--cx-sp-2) var(--cx-sp-3);
  font: inherit; font-size: var(--cx-fs-md); color: var(--cx-text); background: var(--cx-surface);
  border: var(--cx-border-w) solid var(--cx-border-strong); border-radius: var(--cx-r-md);
}
.cx-dialog__input:focus { outline: none; border-color: var(--cx-primary); box-shadow: 0 0 0 4px var(--cx-focus-ring); }
.cx-dialog__field.is-invalid .cx-dialog__input { border-color: var(--cx-danger); }
.cx-dialog__hint, .cx-dialog__error { margin: var(--cx-sp-1) 0 0; font-size: var(--cx-fs-sm); }
.cx-dialog__hint { color: var(--cx-text-2); }
.cx-dialog__error { color: var(--cx-danger); }
.cx-dialog__hint[hidden], .cx-dialog__error[hidden] { display: none; }

.cx-dialog__foot { display: flex; justify-content: flex-end; gap: var(--cx-sp-2); margin-top: var(--cx-sp-6); }
.cx-dialog__btn {
  min-width: 88px; min-height: var(--cx-control-h); padding: 0 var(--cx-sp-5);
  border: var(--cx-border-w) solid transparent; border-radius: var(--cx-r-md);
  font: inherit; font-weight: var(--cx-fw-semibold); cursor: pointer;
}
.cx-dialog__btn[hidden] { display: none; }
.cx-dialog__btn--ok { background: var(--cx-primary); color: var(--cx-on-primary); }
.cx-dialog__btn--ok:hover { background: var(--cx-primary-hover); }
.cx-dialog__btn--cancel { background: var(--cx-surface-2); color: var(--cx-text); border-color: var(--cx-border); }
.cx-dialog__btn--cancel:hover { background: var(--cx-border); }
.cx-dialog.is-danger .cx-dialog__btn--ok { background: var(--cx-danger); color: var(--cx-on-danger); }
.cx-dialog.is-danger .cx-dialog__btn--ok:hover { filter: brightness(.92); }

@media (max-width: 575.98px) {
  .cx-dialog__foot .cx-dialog__btn { flex: 1; }
}

html.cx-dialog-open, html.cx-dialog-open body { overflow: hidden; }

.cx-toasts {
  position: fixed; z-index: var(--cx-z-toast); left: var(--cx-gutter); right: var(--cx-gutter); bottom: var(--cx-gutter);
  display: flex; flex-direction: column; align-items: center; gap: var(--cx-sp-2); pointer-events: none;
}
@media (min-width: 768px) { .cx-toasts { left: auto; align-items: flex-end; } }
.cx-toast-item {
  pointer-events: auto; max-width: 400px; padding: var(--cx-sp-3) var(--cx-sp-4);
  border-radius: var(--cx-r-md); box-shadow: var(--cx-shadow-md);
  background: var(--cx-text); color: var(--cx-surface);
  font-family: var(--cx-font-sans); font-size: var(--cx-fs-sm); white-space: pre-line;
  border-left: 4px solid transparent;
  animation: cx-dlg-pop var(--cx-dur) var(--cx-ease);
  transition: opacity var(--cx-dur) var(--cx-ease);
}
.cx-toast-item.is-success { border-left-color: var(--cx-success); }
.cx-toast-item.is-danger  { border-left-color: var(--cx-danger); }
.cx-toast-item.is-warning { border-left-color: var(--cx-warning); }
.cx-toast-item.is-info    { border-left-color: var(--cx-info); }
.cx-toast-item.is-leaving { opacity: 0; }

.cx-busy[hidden] { display: none; }
.cx-busy { position: fixed; inset: 0; z-index: calc(var(--cx-z-dialog) - 1); display: grid; place-items: center; background: var(--cx-overlay); animation: cx-dlg-fade var(--cx-dur) var(--cx-ease); cursor: progress; }
.cx-busy__card { min-width: 240px; padding: var(--cx-sp-6) var(--cx-sp-8); border-radius: var(--cx-r-lg); background: var(--cx-surface); box-shadow: var(--cx-shadow-lg); text-align: center; font-family: var(--cx-font-sans); }
.cx-busy__msg { margin: 0 0 var(--cx-sp-3); font-size: var(--cx-fs-md); font-weight: var(--cx-fw-semibold); color: var(--cx-text); font-variant-numeric: tabular-nums; }

.cx-busy__bar { height: 4px; border-radius: 2px; overflow: hidden; background: var(--cx-surface-2); }
.cx-busy__fill { width: 35%; height: 100%; border-radius: inherit; background: var(--cx-primary); animation: cx-busy-run 1s linear infinite; }
@keyframes cx-busy-run { from { transform: translateX(-110%); } to { transform: translateX(300%); } }

@keyframes cx-dlg-fade { from { opacity: 0; } }
@keyframes cx-dlg-pop  { from { opacity: 0; transform: translateY(8px) scale(.98); } }
