.xf-ui .xf-muted{color:var(--xf-muted)}.xf-ui .xf-row{display:flex;align-items:center;flex-wrap:wrap;gap:var(--xf-space-3)}.xf-ui .xf-stack{display:grid;gap:var(--xf-space-4)}.xf-ui .xf-button{display:inline-flex;justify-content:center;align-items:center;gap:8px;min-height:44px;max-width:100%;padding:10px 17px;border:1px solid var(--xf-line);border-radius:999px;background:var(--xf-bg);color:var(--xf-text);font-weight:600;line-height:1.5;cursor:pointer;text-decoration:none;transition:background var(--xf-fast) var(--xf-ease),border-color var(--xf-fast) var(--xf-ease);overflow-wrap:anywhere}.xf-ui .xf-button:hover:not(:disabled){background:var(--xf-surface);border-color:var(--xf-control-line)}.xf-ui .xf-button--primary{background:var(--xf-accent);border-color:var(--xf-accent);color:var(--xf-on-accent)}.xf-ui .xf-button--primary:hover:not(:disabled){background:var(--xf-accent-hover);border-color:var(--xf-accent-hover)}.xf-ui .xf-button--ghost{background:transparent;border-color:transparent;color:var(--xf-accent)}.xf-ui .xf-button--danger{color:var(--xf-danger);background:var(--xf-danger-soft);border-color:var(--xf-danger)}.xf-ui .xf-button--danger:hover:not(:disabled){background:var(--xf-danger-soft);border-color:var(--xf-danger);box-shadow:inset 0 0 0 1px var(--xf-danger)}.xf-ui .xf-button:disabled{background:var(--xf-disabled-bg);color:var(--xf-disabled-text);border-color:var(--xf-line);cursor:not-allowed}.xf-ui .xf-field{display:grid;gap:8px;min-width:0}.xf-ui .xf-field label{font-weight:600}.xf-ui .xf-field p{font-size:12px}.xf-ui .xf-control{width:100%;min-width:0;min-height:44px;padding:10px 12px;border:1px solid var(--xf-control-line);border-radius:12px;background:var(--xf-paper,var(--xf-bg));color:var(--xf-text);font-size:16px;line-height:1.5}.xf-ui .xf-control::-moz-placeholder{color:var(--xf-muted);opacity:1}.xf-ui .xf-control::placeholder{color:var(--xf-muted);opacity:1}.xf-ui textarea.xf-control{min-height:112px;resize:vertical}.xf-ui .xf-control[aria-invalid=true]{border-color:var(--xf-danger)}.xf-ui .xf-field-error{color:var(--xf-danger)}.xf-ui .xf-control:disabled{color:var(--xf-disabled-text);background:var(--xf-disabled-bg);cursor:not-allowed}.xf-ui .xf-badge{display:inline-flex;align-items:center;padding:3px 9px;font-size:12px;line-height:1.6;font-weight:600;border-radius:var(--xf-radius-sm);overflow-wrap:anywhere}.xf-ui .xf-tone--neutral{color:var(--xf-muted);background:var(--xf-surface)}.xf-ui .xf-tone--accent{color:var(--xf-accent);background:var(--xf-accent-soft)}.xf-ui .xf-tone--success{color:var(--xf-success);background:var(--xf-success-soft)}.xf-ui .xf-tone--warning{color:var(--xf-warning);background:var(--xf-warning-soft)}.xf-ui .xf-tone--danger{color:var(--xf-danger);background:var(--xf-danger-soft)}.xf-ui .xf-card{padding:var(--xf-space-6);min-width:0;border:1px solid var(--xf-line);border-radius:var(--xf-radius-lg);background:var(--xf-paper,var(--xf-bg))}.xf-ui .xf-card h3{font-size:18px;font-weight:600}.xf-ui .xf-tablist{display:flex;gap:4px;overflow-x:auto;border-bottom:1px solid var(--xf-line);padding:3px}.xf-ui .xf-tablist button{min-height:44px;padding:10px 14px;flex:0 0 auto;background:transparent;border:0;border-bottom:2px solid transparent;color:var(--xf-muted);cursor:pointer}.xf-ui .xf-tablist button[aria-selected=true]{border-bottom-color:var(--xf-accent);color:var(--xf-accent);font-weight:600}.xf-ui .xf-tablist button:disabled{color:var(--xf-disabled-text);cursor:not-allowed}.xf-ui .xf-tabpanel{padding-top:20px}.xf-ui .xf-tabpanel[hidden]{display:none}.xf-ui .xf-empty{display:flex;flex-direction:column;align-items:center;text-align:center;gap:12px;padding:32px 20px}.xf-ui .xf-empty p{max-width:340px}.xf-ui .xf-empty-icon{color:var(--xf-muted);margin-bottom:4px}.xf-ui .xf-loading{display:grid;gap:16px;padding:24px;color:var(--xf-muted)}.xf-ui .xf-skeleton{width:100%;height:14px;background:var(--xf-line);border-radius:4px}.xf-ui .xf-skeleton--short{width:65%}.xf-ui .xf-spin{animation:xf-spin 1s linear infinite;flex-shrink:0}@keyframes xf-spin{to{transform:rotate(1turn)}}.xf-ui .xf-notice{display:flex;align-items:flex-start;gap:10px;border-radius:var(--xf-radius-md);padding:16px;font-size:14px}.xf-ui .xf-notice>svg{margin-top:3px;flex-shrink:0}.xf-ui .xf-notice>div{min-width:0}.xf-ui .xf-notice-body{margin-top:4px;overflow-wrap:anywhere}.xf-ui .xf-notice-action{margin-top:12px}.xf-ui.xf-dialog{width:min(480px,calc(100vw - 32px));max-height:calc(100dvh - 32px);margin:auto;padding:24px;border:1px solid var(--xf-line);border-radius:20px;box-shadow:var(--xf-shadow);overflow:auto;overscroll-behavior:contain}.xf-ui.xf-dialog::backdrop{background:#1a1a1aa6}.xf-ui.xf-dialog[open]{display:flex;flex-direction:column}.xf-ui .xf-dialog-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.xf-ui .xf-dialog-header h2{font-size:20px;line-height:1.5;font-weight:600;padding-top:6px}.xf-ui .xf-dialog-header .xf-button{padding:10px;flex-shrink:0}.xf-ui .xf-dialog-content{margin-top:16px;color:var(--xf-muted);overflow-wrap:anywhere;overflow-y:auto;min-height:0;overscroll-behavior:contain}.xf-ui .xf-dialog-actions,.xf-ui .xf-dialog-header{flex-shrink:0}.xf-ui .xf-dialog-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:12px;margin-top:24px}.xf-ui .xf-toast-region{position:fixed;z-index:110;bottom:max(24px,env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);width:-moz-max-content;width:max-content;max-width:calc(100vw - 32px)}.xf-ui .xf-toast{display:flex;align-items:center;gap:16px;border:1px solid;border-radius:var(--xf-radius-md);box-shadow:var(--xf-shadow);padding:8px 8px 8px 16px}.xf-ui .xf-toast span{overflow-wrap:anywhere;min-width:0}.xf-ui .xf-toast-copy{display:grid;gap:2px}.xf-ui .xf-toast-countdown{font-size:12px;font-variant-numeric:tabular-nums}.xf-ui .xf-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.xf-ui .xf-toast .xf-button{flex-shrink:0;color:inherit;padding:10px}@media (prefers-reduced-motion:reduce){.xf-ui .xf-spin{animation:none}.xf-ui .xf-button{transition:none}}