/* Shared, build-free UI primitives. Every selector is Ultra Wallet scoped. */
.uw-shell,
.uw-shell *,
.uw-shell *::before,
.uw-shell *::after {
    box-sizing: border-box;
}

.uw-shell :where(h1, h2, h3, p, dl, dd, ol, ul, fieldset) {
    margin-block-start: 0;
}

.uw-shell :where(button, input, select, textarea) {
    font: inherit;
}

.uw-shell :where(button, a, input, select, textarea, summary):focus-visible,
.uw-dialog :where(button, input, select, textarea):focus-visible {
    outline: 3px solid var(--uw-color-focus);
    outline-offset: 3px;
    box-shadow: var(--uw-focus-ring);
}

.uw-shell :where(svg),
.uw-dialog :where(svg) {
    display: block;
    inline-size: 1.25rem;
    block-size: 1.25rem;
    fill: currentColor;
}

.uw-sr-only {
    position: absolute !important;
    inline-size: 1px !important;
    block-size: 1px !important;
    padding: 0 !important;
    margin: -1px !important;
    overflow: hidden !important;
    clip: rect(0, 0, 0, 0) !important;
    white-space: nowrap !important;
    border: 0 !important;
}

.uw-live-region:focus {
    position: static !important;
    inline-size: auto !important;
    block-size: auto !important;
    margin: 0 !important;
    clip: auto !important;
}

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

.uw-eyebrow {
    margin-block-end: var(--uw-space-1);
    color: var(--uw-color-brand);
    font-size: var(--uw-text-xs);
    font-weight: 800;
    letter-spacing: 0.08em;
    text-transform: uppercase;
}

.uw-muted {
    color: var(--uw-color-muted);
    font-size: var(--uw-text-sm);
}

.uw-card {
    border: 1px solid var(--uw-color-border);
    border-radius: var(--uw-radius-xl);
    background: var(--uw-color-surface);
    box-shadow: var(--uw-shadow-sm);
    padding: clamp(var(--uw-space-4), 3vw, var(--uw-space-6));
}

.uw-button,
.uw-icon-button,
.uw-copy-button {
    appearance: none;
    border: 1px solid transparent;
    border-radius: var(--uw-radius-md);
    cursor: pointer;
    font-weight: 750;
    text-decoration: none;
    transition: background-color var(--uw-duration-fast) var(--uw-ease), border-color var(--uw-duration-fast) var(--uw-ease), color var(--uw-duration-fast) var(--uw-ease), transform var(--uw-duration-fast) var(--uw-ease);
}

.uw-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: var(--uw-space-2);
    min-block-size: var(--uw-control-size);
    padding-block: var(--uw-space-2);
    padding-inline: var(--uw-space-4);
    line-height: 1.25;
}

.uw-button--primary {
    color: #fff;
    background: var(--uw-color-brand);
    border-color: var(--uw-color-brand);
}

.uw-button--primary:hover {
    color: #fff;
    background: var(--uw-color-brand-strong);
    border-color: var(--uw-color-brand-strong);
}

.uw-button--danger {
    color: #fff;
    background: var(--uw-color-danger);
    border-color: var(--uw-color-danger);
}

.uw-button--danger:hover {
    color: #fff;
    background: #8f1c13;
    border-color: #8f1c13;
}

.uw-button--secondary {
    color: var(--uw-color-brand-strong);
    background: var(--uw-color-surface);
    border-color: var(--uw-color-border-strong);
}

.uw-button--secondary:hover,
.uw-button--quiet:hover {
    color: var(--uw-color-brand-strong);
    background: var(--uw-color-brand-soft);
    border-color: var(--uw-color-brand);
}

.uw-button--quiet {
    color: var(--uw-color-brand);
    background: transparent;
    border-color: transparent;
}

.uw-button:disabled,
.uw-icon-button:disabled,
.uw-copy-button:disabled {
    cursor: not-allowed;
    opacity: 0.52;
}

.uw-icon-button,
.uw-copy-button {
    display: inline-grid;
    place-items: center;
    min-inline-size: var(--uw-control-size);
    min-block-size: var(--uw-control-size);
    padding: var(--uw-space-2);
    color: inherit;
    background: transparent;
}

.uw-icon-button:hover,
.uw-copy-button:hover {
    background: rgba(255, 255, 255, 0.14);
}

.uw-chip {
    display: inline-flex;
    align-items: center;
    gap: var(--uw-space-2);
    inline-size: max-content;
    max-inline-size: 100%;
    min-block-size: 1.75rem;
    border: 1px solid transparent;
    border-radius: var(--uw-radius-pill);
    padding-block: 0.125rem;
    padding-inline: var(--uw-space-3);
    color: var(--uw-color-muted);
    background: var(--uw-color-surface-soft);
    font-size: var(--uw-text-xs);
    font-weight: 750;
}

.uw-chip--active,
.uw-chip--completed,
.uw-chip--success,
.uw-chip--ok,
.uw-chip--settled {
    color: #065f46;
    background: var(--uw-color-positive-soft);
    border-color: #a7e7d0;
}

.uw-chip--pending,
.uw-chip--requested,
.uw-chip--queued,
.uw-chip--processing,
.uw-chip--warning {
    color: #7c3a04;
    background: var(--uw-color-warning-soft);
    border-color: #f1cc8d;
}

.uw-chip--failed,
.uw-chip--rejected,
.uw-chip--critical,
.uw-chip--danger,
.uw-chip--frozen {
    color: #8f1d14;
    background: var(--uw-color-danger-soft);
    border-color: #f3b3ae;
}

.uw-chip--neutral,
.uw-chip--unknown,
.uw-chip--closed,
.uw-chip--reversed {
    color: #3d4758;
    background: #eef1f5;
    border-color: #d5dbe4;
}

.uw-chip--approved {
    color: var(--uw-color-brand-strong);
    background: var(--uw-color-brand-soft);
    border-color: #b8b8ef;
}

.uw-status-dot {
    inline-size: 0.5rem;
    block-size: 0.5rem;
    border-radius: 50%;
    background: currentColor;
}

.uw-field {
    display: grid;
    align-content: start;
    gap: var(--uw-space-2);
    min-inline-size: 0;
}

.uw-field label,
.uw-choice-group legend {
    color: var(--uw-color-text);
    font-size: var(--uw-text-sm);
    font-weight: 750;
}

.uw-field small {
    color: var(--uw-color-muted);
    font-size: var(--uw-text-xs);
}

.uw-field :where(input, select, textarea),
.uw-money-input {
    inline-size: 100%;
    min-block-size: var(--uw-control-size);
    border: 1px solid var(--uw-color-border-strong);
    border-radius: var(--uw-radius-md);
    color: var(--uw-color-text);
    background: var(--uw-color-surface);
}

.uw-field :where(input, select, textarea) {
    margin: 0;
    padding-block: 0.65rem;
    padding-inline: 0.875rem;
    box-shadow: none;
}

.uw-field textarea {
    min-block-size: 6rem;
    resize: vertical;
}

.uw-field :where(input, select, textarea):hover {
    border-color: var(--uw-color-brand);
}

.uw-field :where(input, select, textarea)[aria-invalid="true"] {
    border-color: var(--uw-color-danger);
    background: #fff8f7;
}

.uw-money-input {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: center;
    overflow: hidden;
}

.uw-money-input input {
    border: 0 !important;
    border-radius: 0 !important;
    min-inline-size: 0;
}

.uw-money-input > span {
    align-self: stretch;
    display: grid;
    place-items: center;
    border-inline-start: 1px solid var(--uw-color-border);
    padding-inline: var(--uw-space-3);
    color: var(--uw-color-muted);
    background: var(--uw-color-surface-soft);
    font-size: var(--uw-text-sm);
    font-weight: 750;
}

.uw-filter-bar {
    display: grid;
    grid-template-columns: minmax(12rem, 2fr) repeat(2, minmax(8rem, 1fr)) auto;
    align-items: end;
    gap: var(--uw-space-3);
    margin-block: var(--uw-space-5);
}

.uw-section-heading,
.uw-panel-heading {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--uw-space-4);
}

.uw-section-heading h2,
.uw-section-heading h3,
.uw-panel-heading h2 {
    margin-block-end: 0;
    font-size: var(--uw-text-xl);
    line-height: var(--uw-leading-tight);
}

.uw-state {
    display: grid;
    justify-items: center;
    gap: var(--uw-space-3);
    padding: clamp(var(--uw-space-6), 6vw, var(--uw-space-12));
    text-align: center;
}

.uw-state > :where(p, span) {
    max-inline-size: 38rem;
    color: var(--uw-color-muted);
}

.uw-state__icon {
    display: grid;
    place-items: center;
    inline-size: 4rem;
    block-size: 4rem;
    border-radius: var(--uw-radius-xl);
    color: var(--uw-color-brand);
    background: var(--uw-color-brand-soft);
}

.uw-state__icon svg {
    inline-size: 2rem;
    block-size: 2rem;
}

.uw-state__icon--success {
    color: var(--uw-color-positive);
    background: var(--uw-color-positive-soft);
}

.uw-state--compact {
    justify-items: start;
    padding: var(--uw-space-5);
    border: 1px dashed var(--uw-color-border-strong);
    border-radius: var(--uw-radius-lg);
    text-align: start;
}

.uw-state--compact .uw-state__icon {
    inline-size: 3rem;
    block-size: 3rem;
}

.uw-banner {
    display: grid;
    grid-template-columns: auto 1fr;
    gap: var(--uw-space-2) var(--uw-space-3);
    margin-block: var(--uw-space-4);
    border: 1px solid;
    border-radius: var(--uw-radius-md);
    padding: var(--uw-space-4);
}

.uw-banner strong {
    grid-column: 1 / -1;
}

.uw-banner--warning {
    color: #713706;
    background: var(--uw-color-warning-soft);
    border-color: #e7b765;
}

.uw-banner--info {
    color: #075079;
    background: var(--uw-color-info-soft);
    border-color: #7dd3fc;
}

.uw-dialog {
    inline-size: min(42rem, calc(100% - 1.5rem));
    max-inline-size: none;
    max-block-size: min(50rem, calc(100dvh - 1.5rem));
    margin: auto;
    padding: 0;
    border: 0;
    border-radius: var(--uw-radius-xl);
    color: var(--uw-color-text);
    background: transparent;
    box-shadow: var(--uw-shadow-lg);
    overflow: hidden;
}

.uw-dialog::backdrop {
    background: var(--uw-color-overlay);
    backdrop-filter: blur(3px);
}

.uw-dialog__surface {
    max-block-size: inherit;
    overflow: auto;
    overscroll-behavior: contain;
    background: var(--uw-color-surface);
}

.uw-dialog__header {
    position: relative;
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: var(--uw-space-4);
    padding: var(--uw-space-6);
    border-block-end: 1px solid var(--uw-color-border);
}

.uw-dialog__header h2,
.uw-dialog__header h3 {
    margin-block-end: var(--uw-space-1);
    font-size: var(--uw-text-xl);
}

.uw-dialog__header p:last-child {
    margin-block-end: 0;
    color: var(--uw-color-muted);
}

.uw-dialog__header .uw-icon-button:hover {
    color: var(--uw-color-brand);
    background: var(--uw-color-brand-soft);
}

.uw-command-form,
.uw-dialog > .uw-dialog__surface > form {
    padding: var(--uw-space-6);
}

.uw-stepper {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    list-style: none;
    margin: 0;
    padding-block: var(--uw-space-4);
    padding-inline: var(--uw-space-6);
    border-block-end: 1px solid var(--uw-color-border);
    background: var(--uw-color-surface-soft);
}

.uw-stepper li {
    position: relative;
    display: grid;
    justify-items: center;
    gap: var(--uw-space-1);
    color: var(--uw-color-muted);
    font-size: var(--uw-text-xs);
    font-weight: 700;
    text-align: center;
}

.uw-stepper li:not(:last-child)::after {
    content: "";
    position: absolute;
    z-index: 0;
    inset-block-start: 0.875rem;
    inset-inline-start: calc(50% + 1.2rem);
    inline-size: calc(100% - 2.4rem);
    block-size: 2px;
    background: var(--uw-color-border);
}

.uw-stepper li span {
    z-index: 1;
    display: grid;
    place-items: center;
    inline-size: 1.75rem;
    block-size: 1.75rem;
    border: 2px solid var(--uw-color-border-strong);
    border-radius: 50%;
    background: var(--uw-color-surface);
}

.uw-stepper li[aria-current="step"],
.uw-stepper li.is-complete {
    color: var(--uw-color-brand-strong);
}

.uw-stepper li[aria-current="step"] span,
.uw-stepper li.is-complete span {
    color: #fff;
    border-color: var(--uw-color-brand);
    background: var(--uw-color-brand);
}

.uw-step-panel {
    display: grid;
    gap: var(--uw-space-5);
}

.uw-dialog__footer {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    flex-wrap: wrap;
    gap: var(--uw-space-3);
    margin-block-start: var(--uw-space-6);
    padding-block-start: var(--uw-space-5);
    border-block-start: 1px solid var(--uw-color-border);
}

.uw-form-error {
    margin-block-end: var(--uw-space-4);
    border-inline-start: 4px solid var(--uw-color-danger);
    border-radius: var(--uw-radius-sm);
    padding: var(--uw-space-3) var(--uw-space-4);
    color: #7f1d1d;
    background: var(--uw-color-danger-soft);
}

.uw-review-card {
    border: 1px solid var(--uw-color-border);
    border-radius: var(--uw-radius-lg);
    padding: var(--uw-space-4);
    background: var(--uw-color-surface-soft);
}

.uw-review-card > p {
    color: var(--uw-color-muted);
}

.uw-review-card dl,
dl.uw-review-card {
    display: grid;
    gap: var(--uw-space-3);
    margin-block-end: 0;
}

.uw-review-card dl > div,
dl.uw-review-card > div {
    display: flex;
    justify-content: space-between;
    gap: var(--uw-space-4);
    padding-block-end: var(--uw-space-2);
    border-block-end: 1px solid var(--uw-color-border);
}

.uw-review-card dl > div:last-child,
dl.uw-review-card > div:last-child {
    padding-block-end: 0;
    border-block-end: 0;
}

.uw-review-card dt {
    color: var(--uw-color-muted);
}

.uw-review-card dd {
    margin: 0;
    font-weight: 750;
    overflow-wrap: anywhere;
}

.uw-check,
.uw-choice-group label {
    display: flex;
    align-items: flex-start;
    gap: var(--uw-space-3);
    cursor: pointer;
}

.uw-check input,
.uw-choice-group input {
    flex: 0 0 auto;
    inline-size: 1.25rem;
    block-size: 1.25rem;
    margin-block-start: 0.2rem;
    accent-color: var(--uw-color-brand);
}

.uw-choice-group {
    display: grid;
    gap: var(--uw-space-3);
    margin: 0;
    border: 0;
    padding: 0;
}

.uw-choice-group label {
    border: 1px solid var(--uw-color-border);
    border-radius: var(--uw-radius-md);
    padding: var(--uw-space-4);
}

.uw-choice-group label:has(input:checked) {
    border-color: var(--uw-color-brand);
    background: var(--uw-color-brand-soft);
}

.uw-choice-group span {
    display: grid;
    gap: var(--uw-space-1);
}

.uw-choice-group small {
    color: var(--uw-color-muted);
}

.uw-spinner {
    inline-size: 1.15rem;
    block-size: 1.15rem;
    border: 2px solid currentColor;
    border-inline-end-color: transparent;
    border-radius: 50%;
    animation: uw-spin 700ms linear infinite;
}

@keyframes uw-spin {
    to { transform: rotate(360deg); }
}

.uw-skeleton-list {
    display: grid;
    gap: var(--uw-space-3);
    padding-block: var(--uw-space-3);
}

.uw-skeleton-list span {
    display: block;
    block-size: 4.5rem;
    border-radius: var(--uw-radius-md);
    background: linear-gradient(100deg, #eef1f5 20%, #f8fafc 40%, #eef1f5 60%);
    background-size: 200% 100%;
    animation: uw-skeleton 1.2s ease-in-out infinite;
}

@keyframes uw-skeleton {
    to { background-position: -200% 0; }
}

.uw-toast-region {
    position: fixed;
    z-index: 1000000;
    inset-block-start: max(1rem, env(safe-area-inset-top));
    inset-inline-end: max(1rem, env(safe-area-inset-right));
    display: grid;
    gap: var(--uw-space-2);
    inline-size: min(24rem, calc(100vw - 2rem));
    pointer-events: none;
}

.uw-toast {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr) auto;
    align-items: center;
    gap: var(--uw-space-3);
    border: 1px solid var(--uw-color-border-strong);
    border-inline-start: 5px solid var(--uw-color-brand);
    border-radius: var(--uw-radius-md);
    padding: var(--uw-space-3);
    color: var(--uw-color-text);
    background: var(--uw-color-surface);
    box-shadow: var(--uw-shadow-md);
    pointer-events: auto;
}

.uw-toast--success { border-inline-start-color: var(--uw-color-positive); }
.uw-toast--error { border-inline-start-color: var(--uw-color-danger); }
.uw-toast__message { overflow-wrap: anywhere; }

.uw-toast__close {
    display: grid;
    place-items: center;
    inline-size: 2.75rem;
    block-size: 2.75rem;
    border: 0;
    border-radius: var(--uw-radius-sm);
    color: var(--uw-color-muted);
    background: transparent;
    cursor: pointer;
}

.uw-cursor-nav {
    display: flex;
    justify-content: space-between;
    gap: var(--uw-space-3);
    margin-block-start: var(--uw-space-5);
}

.uw-reference {
    display: block;
    max-inline-size: 100%;
    border-radius: var(--uw-radius-sm);
    padding: var(--uw-space-2) var(--uw-space-3);
    color: var(--uw-color-brand-strong);
    background: var(--uw-color-brand-soft);
    font-family: var(--uw-font-mono);
    overflow-wrap: anywhere;
}

@media (max-width: 48rem) {
    .uw-filter-bar {
        grid-template-columns: 1fr 1fr;
    }

    .uw-filter-bar .uw-field--search {
        grid-column: 1 / -1;
    }

    .uw-filter-bar > .uw-button {
        inline-size: 100%;
    }
}

@media (max-width: 30rem) {
    .uw-filter-bar {
        grid-template-columns: 1fr;
    }

    .uw-filter-bar .uw-field--search {
        grid-column: auto;
    }

    .uw-section-heading,
    .uw-panel-heading,
    .uw-dialog__header {
        align-items: stretch;
        flex-direction: column;
    }

    .uw-dialog__header > .uw-icon-button {
        position: absolute;
        inset-block-start: var(--uw-space-3);
        inset-inline-end: var(--uw-space-3);
    }

    .uw-dialog__header,
    .uw-command-form,
    .uw-dialog > .uw-dialog__surface > form {
        padding: var(--uw-space-4);
    }

    .uw-stepper {
        padding-inline: var(--uw-space-4);
    }

    .uw-dialog__footer .uw-button {
        flex: 1 1 100%;
    }
}

@media (forced-colors: active) {
    .uw-button,
    .uw-icon-button,
    .uw-copy-button,
    .uw-chip,
    .uw-card,
    .uw-dialog,
    .uw-field :where(input, select, textarea) {
        forced-color-adjust: auto;
        border: 1px solid CanvasText;
    }

    .uw-status-dot,
    .uw-health-card__indicator {
        background: CanvasText !important;
    }
}
.uw-license-lock {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    align-items: start;
    gap: var(--uw-space-5);
    border: 1px solid color-mix(in srgb, var(--uw-color-warning) 38%, var(--uw-color-border));
    border-radius: var(--uw-radius-lg);
    padding: clamp(var(--uw-space-5), 4vw, var(--uw-space-8));
    background: linear-gradient(135deg, color-mix(in srgb, var(--uw-color-warning) 9%, white), var(--uw-color-surface));
    box-shadow: var(--uw-shadow-sm);
}

.uw-license-lock__icon {
    display: grid;
    place-items: center;
    inline-size: 3.5rem;
    block-size: 3.5rem;
    border-radius: 50%;
    color: var(--uw-color-warning);
    background: var(--uw-color-surface);
    box-shadow: var(--uw-shadow-sm);
    font-size: 1.5rem;
}

.uw-license-lock h2,
.uw-license-lock h3 {
    margin-block: 0 var(--uw-space-2);
}

.uw-license-lock p {
    max-inline-size: 58rem;
    color: var(--uw-color-muted);
}

.uw-license-lock__features {
    display: flex;
    flex-wrap: wrap;
    gap: var(--uw-space-2);
    margin-block: var(--uw-space-4);
}

.uw-license-lock__features span {
    border: 1px solid var(--uw-color-border);
    border-radius: 999px;
    padding: var(--uw-space-1) var(--uw-space-3);
    color: var(--uw-color-text);
    background: var(--uw-color-surface);
    font-size: var(--uw-text-sm);
    font-weight: 700;
}

@media (max-width: 36rem) {
    .uw-license-lock { grid-template-columns: minmax(0, 1fr); }
}
