.ui-button{min-inline-size:var(--h-control);block-size:var(--h-control);padding-inline:var(--s-3);border:var(--w-hairline) solid transparent;border-radius:var(--r-sm);background:var(--accent-control);color:var(--accent-text);font:var(--t-md);font-weight:var(--weight-semibold);cursor:pointer;-webkit-user-select:none;user-select:none;flex-shrink:0;justify-content:center;align-items:center;text-decoration:none;display:inline-flex;position:relative}.ui-button__label{justify-content:center;align-items:center;gap:var(--gap-control);display:inline-flex}.ui-button:hover{background:var(--accent-control-hover)}.ui-button[data-variant=secondary]{background:var(--n-3);color:var(--text-primary)}.ui-button[data-variant=secondary]:hover{background:var(--n-4)}.ui-button[data-variant=ghost]{color:var(--text-secondary);background:0 0}.ui-button[data-variant=ghost]:hover{background:var(--n-3);color:var(--text-strong)}.ui-button[data-variant=danger]{background:var(--danger-control);color:var(--accent-text)}.ui-button[data-variant=danger]:hover{background:var(--danger-control-hover)}.ui-button[data-size=compact]{block-size:var(--h-control-compact);min-inline-size:var(--h-control-compact);padding-inline:var(--s-2)}.ui-button[data-size=large]{block-size:var(--h-control-large)}.ui-button[data-size=icon]{inline-size:var(--h-control);padding:0}.ui-button[data-loading] .ui-button__label{visibility:hidden}.ui-button:disabled,.ui-button[aria-disabled=true]{opacity:var(--opacity-disabled);cursor:not-allowed}.ui-button__spinner{place-items:center;display:grid;position:absolute;inset:0}.ui-button__spinner .ui-icon{animation:ui-spinner var(--d-loading) linear infinite}.ui-button:focus-visible,.ui-row:focus-visible{box-shadow:var(--focus-ring);outline:none}.ui-icon{inline-size:var(--size-icon);block-size:var(--size-icon);color:currentColor;flex-shrink:0;display:inline-block}.ui-icon[data-size="20"]{inline-size:var(--size-icon-large);block-size:var(--size-icon-large)}.ui-field{gap:var(--s-1);flex-direction:column;min-inline-size:0;display:flex}.ui-field__label{color:var(--text-secondary);font:var(--t-xs);letter-spacing:var(--tracking-label);text-transform:uppercase}.ui-field__hint{color:var(--text-tertiary);font:var(--t-sm)}.ui-field__error{color:var(--danger-text);font:var(--t-sm)}.ui-input{box-sizing:border-box;inline-size:100%;min-inline-size:0;min-block-size:var(--h-control);padding:var(--s-1) var(--s-2);border:var(--w-hairline) solid var(--hairline);border-radius:var(--r-sm);background:var(--surface-field);color:var(--text-strong);font:var(--t-md)}.ui-input::placeholder{color:var(--text-tertiary)}.ui-input:focus{border-color:var(--accent);box-shadow:var(--focus-ring);outline:none}.ui-input[aria-invalid=true]{border-color:var(--danger)}.ui-input:disabled{opacity:var(--opacity-disabled);cursor:not-allowed}.ui-textarea{min-block-size:var(--h-textarea-min);resize:vertical}.ui-select{cursor:pointer}.ui-select option{background:var(--surface-field);color:var(--text-strong)}.ui-avatar{inline-size:var(--size-avatar-md);block-size:var(--size-avatar-md);border-radius:var(--r-full);vertical-align:middle;flex-shrink:0;display:inline-flex;position:relative}.ui-avatar[data-size="24"]{inline-size:var(--size-avatar-sm);block-size:var(--size-avatar-sm)}.ui-avatar[data-size="40"]{inline-size:var(--size-avatar-lg);block-size:var(--size-avatar-lg)}.ui-avatar__image,.ui-avatar__fallback{border-radius:inherit;block-size:100%;inline-size:100%}.ui-avatar__image{object-fit:cover}.ui-avatar__fallback{background:var(--n-4);color:var(--text-primary);font:var(--t-sm);font-weight:var(--weight-semibold);-webkit-user-select:none;user-select:none;place-items:center;display:grid}.ui-avatar[data-size="24"] .ui-avatar__fallback{font:var(--t-xs)}.ui-avatar__presence{box-sizing:content-box;inline-size:var(--size-presence);block-size:var(--size-presence);border:var(--w-presence-ring) solid var(--avatar-surface,var(--surface-side));border-radius:var(--r-full);background:var(--border-strong);position:absolute;inset-block-end:0;inset-inline-end:0}.ui-avatar__presence[data-presence=online]{background:var(--ok)}.ui-avatar__presence[data-presence=idle]{background:var(--warn)}.ui-avatar__presence[data-presence=dnd]{background:var(--danger)}.ui-avatar__presence[data-presence=streaming]{background:var(--accent)}.ui-badge{min-inline-size:var(--s-4);padding-inline:var(--s-1);border-radius:var(--r-xs);background:var(--n-4);color:var(--text-secondary);font:var(--t-xs);font-weight:var(--weight-semibold);font-variant-numeric:tabular-nums;white-space:nowrap;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.ui-badge[data-variant=mention]{border-radius:var(--r-full);background:var(--accent-control);color:var(--accent-text)}.ui-badge[data-variant=success]{background:var(--ok-soft);color:var(--ok-text)}.ui-badge[data-variant=warning]{background:var(--warn-soft);color:var(--warn-text)}.ui-badge[data-variant=danger]{background:var(--danger-soft);color:var(--danger-text)}.ui-row{align-items:center;gap:var(--s-2);inline-size:100%;min-inline-size:0;block-size:var(--h-row);padding-inline:var(--s-2);border-radius:var(--r-sm);color:var(--text-secondary);text-align:start;font:var(--t-md);cursor:pointer;background:0 0;border:0;display:flex;position:relative}.ui-row:hover{background:var(--n-3)}.ui-row[data-active]{background:var(--surface-active);color:var(--text-strong)}.ui-row[data-unread]{color:var(--text-strong)}.ui-row:disabled{opacity:var(--opacity-disabled);cursor:not-allowed}.ui-row__icon,.ui-row__trailing{flex-shrink:0;align-items:center;display:inline-flex}.ui-row__label{text-overflow:ellipsis;white-space:nowrap;flex:1;min-inline-size:0;overflow:hidden}.ui-row__unread{inline-size:var(--size-unread);block-size:var(--size-unread);border-radius:var(--r-full);background:var(--accent);position:absolute;inset-inline-start:0;transform:translate(-50%)}.ui-row[dir=rtl] .ui-row__unread{transform:translate(50%)}.ui-skeleton{min-block-size:var(--h-skeleton);border-radius:var(--r-xs);background:var(--n-4)}.ui-skeleton[data-pulse]{animation:ui-skeleton-pulse calc(var(--d-loading) * 2) ease-in-out infinite}@keyframes ui-spinner{to{transform:rotate(1turn)}}@keyframes ui-skeleton-pulse{50%{opacity:var(--opacity-skeleton)}}@media (prefers-reduced-motion:reduce){.ui-button__spinner .ui-icon,.ui-skeleton[data-pulse]{animation:none}}
