/* Native primitives. Keep Bootstrap classes beside ui-* classes while pages migrate. */
.ui-button { align-items:center; border:1px solid transparent; border-radius:calc(var(--radius) - 2px); display:inline-flex; font-size:.875rem; font-weight:500; gap:.5rem; height:2.5rem; justify-content:center; line-height:1; padding:.5rem 1rem; transition:background-color var(--ui-duration-fast),border-color var(--ui-duration-fast),color var(--ui-duration-fast),box-shadow var(--ui-duration-fast); }
.ui-button:disabled,.ui-button[aria-disabled="true"] { opacity:.5; pointer-events:none; }
.ui-button--default { background:hsl(var(--primary)); color:hsl(var(--primary-foreground)); }.ui-button--default:hover { background:hsl(var(--primary) / .9); }
.ui-button--secondary { background:hsl(var(--secondary)); color:hsl(var(--secondary-foreground)); }.ui-button--secondary:hover { background:hsl(var(--secondary) / .8); }
.ui-button--destructive { background:hsl(var(--destructive)); color:hsl(var(--destructive-foreground)); }.ui-button--destructive:hover { background:hsl(var(--destructive) / .9); }
.ui-button--outline { background:hsl(var(--background)); border-color:hsl(var(--input)); color:hsl(var(--foreground)); }.ui-button--outline:hover,.ui-button--ghost:hover { background:hsl(var(--accent)); color:hsl(var(--accent-foreground)); }
.ui-button--ghost,.ui-button--link { background:transparent; color:hsl(var(--foreground)); }.ui-button--link { color:hsl(var(--primary)); height:auto; padding:0; text-decoration:underline; text-underline-offset:4px; }
.ui-button--sm { height:2.25rem; padding:.5rem .75rem; }.ui-button--lg { height:2.75rem; padding:.5rem 2rem; }.ui-button--icon { aspect-ratio:1; padding:.5rem; width:2.5rem; }
.ui-button--loading { pointer-events:none; }.ui-button--loading::before { animation:ui-spin .7s linear infinite; border:2px solid currentColor; border-radius:999px; border-right-color:transparent; content:""; height:1rem; width:1rem; }

.ui-label { color:hsl(var(--foreground)); display:block; font-size:.875rem; font-weight:500; line-height:1; margin-bottom:.5rem; }
.ui-input,.ui-textarea,.ui-select { background:hsl(var(--background)); border:1px solid hsl(var(--input)); border-radius:calc(var(--radius) - 2px); color:hsl(var(--foreground)); font-size:.875rem; line-height:1.25rem; transition:border-color var(--ui-duration-fast),box-shadow var(--ui-duration-fast); width:100%; }
.ui-input,.ui-select { height:2.5rem; padding:.5rem .75rem; }.ui-textarea { min-height:5rem; padding:.5rem .75rem; resize:vertical; }.ui-input::placeholder,.ui-textarea::placeholder { color:hsl(var(--muted-foreground)); opacity:1; }
.ui-input:focus,.ui-textarea:focus,.ui-select:focus { border-color:hsl(var(--ring)); box-shadow:0 0 0 2px hsl(var(--ring) / .2); outline:0; }.ui-input:disabled,.ui-textarea:disabled,.ui-select:disabled { cursor:not-allowed; opacity:.5; }.ui-input[aria-invalid="true"],.ui-textarea[aria-invalid="true"],.ui-select[aria-invalid="true"] { border-color:hsl(var(--destructive)); }
.ui-description { color:hsl(var(--muted-foreground)); font-size:.875rem; line-height:1.25rem; margin-top:.375rem; }.ui-message--error { color:hsl(var(--destructive)); font-size:.875rem; font-weight:500; margin-top:.375rem; }
.ui-input-group { align-items:stretch; display:flex; width:100%; }.ui-input-group > .ui-input { border-radius:calc(var(--radius) - 2px) 0 0 calc(var(--radius) - 2px); }.ui-input-group > .ui-button { border-radius:0 calc(var(--radius) - 2px) calc(var(--radius) - 2px) 0; flex:none; }

.ui-check,.ui-radio { appearance:none; background:hsl(var(--background)); border:1px solid hsl(var(--input)); display:inline-grid; height:1rem; margin:0 .5rem 0 0; place-content:center; vertical-align:-.125rem; width:1rem; }.ui-check { border-radius:calc(var(--radius) - 4px); }.ui-radio { border-radius:999px; }
.ui-check::before,.ui-radio::before { background:hsl(var(--primary-foreground)); content:""; height:.45rem; transform:scale(0); transition:transform var(--ui-duration-fast); width:.45rem; }.ui-check::before { clip-path:polygon(14% 44%,0 65%,42% 100%,100% 18%,78% 0,39% 62%); }.ui-radio::before { border-radius:999px; }.ui-check:checked,.ui-radio:checked { background:hsl(var(--primary)); border-color:hsl(var(--primary)); }.ui-check:checked::before,.ui-radio:checked::before { transform:scale(1); }
.ui-switch { appearance:none; background:hsl(var(--input)); border:0; border-radius:999px; height:1.25rem; margin:0; position:relative; transition:background-color var(--ui-duration-fast); width:2.25rem; }.ui-switch::after { background:hsl(var(--background)); border-radius:999px; content:""; height:1rem; left:.125rem; position:absolute; top:.125rem; transition:transform var(--ui-duration-fast); width:1rem; }.ui-switch:checked { background:hsl(var(--primary)); }.ui-switch:checked::after { transform:translateX(1rem); }

.ui-card { background:hsl(var(--card)); border:1px solid hsl(var(--border)); border-radius:var(--radius); color:hsl(var(--card-foreground)); }.ui-card-header { display:flex; flex-direction:column; gap:.375rem; padding:1.5rem 1.5rem 0; }.ui-card-title { font-size:1.125rem; font-weight:600; letter-spacing:-.01em; line-height:1; margin:0; }.ui-card-description { color:hsl(var(--muted-foreground)); font-size:.875rem; margin:0; }.ui-card-content { padding:1.5rem; }.ui-card-footer { align-items:center; display:flex; padding:0 1.5rem 1.5rem; }
.ui-badge { align-items:center; border:1px solid transparent; border-radius:calc(var(--radius) - 4px); display:inline-flex; font-size:.75rem; font-weight:600; line-height:1; padding:.25rem .625rem; }.ui-badge--default { background:hsl(var(--primary)); color:hsl(var(--primary-foreground)); }.ui-badge--secondary { background:hsl(var(--secondary)); color:hsl(var(--secondary-foreground)); }.ui-badge--destructive { background:hsl(var(--destructive)); color:hsl(var(--destructive-foreground)); }.ui-badge--outline { background:transparent; border-color:hsl(var(--border)); color:hsl(var(--foreground)); }
.ui-alert { border:1px solid hsl(var(--border)); border-radius:var(--radius); color:hsl(var(--foreground)); padding:1rem; }.ui-alert--destructive { border-color:hsl(var(--destructive) / .5); color:hsl(var(--destructive)); }.ui-separator { background:hsl(var(--border)); border:0; flex:none; height:1px; margin:0; width:100%; }.ui-separator--vertical { height:100%; width:1px; }.ui-skeleton { animation:ui-pulse 2s cubic-bezier(.4,0,.6,1) infinite; background:hsl(var(--muted)); border-radius:calc(var(--radius) - 2px); }.ui-spinner { animation:ui-spin .7s linear infinite; border:2px solid currentColor; border-radius:999px; border-right-color:transparent; height:1rem; width:1rem; }.ui-avatar { align-items:center; background:hsl(var(--muted)); border-radius:999px; color:hsl(var(--muted-foreground)); display:inline-flex; height:2.5rem; justify-content:center; overflow:hidden; width:2.5rem; }.ui-avatar > img { height:100%; object-fit:cover; width:100%; }

.ui-scroll-locked { overflow:hidden; }.ui-dialog-backdrop { animation:ui-fade-in var(--ui-duration-base) var(--ui-ease-out); background:hsl(var(--foreground) / .8); inset:0; position:fixed; }.ui-dialog { align-items:center; display:flex; inset:0; justify-content:center; padding:1rem; position:fixed; z-index:1055; }.ui-dialog__content { animation:ui-zoom-in-95 var(--ui-duration-base) var(--ui-ease-out); background:hsl(var(--background)); border:1px solid hsl(var(--border)); border-radius:var(--radius); box-shadow:0 20px 25px -5px hsl(var(--foreground) / .15); color:hsl(var(--foreground)); max-height:calc(100vh - 2rem); max-width:32rem; overflow:auto; position:relative; width:100%; }.ui-dialog[data-state="closed"] .ui-dialog__content { animation:ui-zoom-out-95 var(--ui-duration-fast) ease-in; }.ui-sheet { align-items:stretch; justify-content:flex-end; padding:0; }.ui-sheet .ui-dialog__content { border-radius:var(--radius) 0 0 var(--radius); height:100%; max-height:100vh; max-width:32rem; }.ui-sheet[data-side="left"] { justify-content:flex-start; }.ui-sheet[data-side="top"],.ui-sheet[data-side="bottom"] { align-items:center; }.ui-sheet[data-side="top"] .ui-dialog__content,.ui-sheet[data-side="bottom"] .ui-dialog__content { border-radius:0 0 var(--radius) var(--radius); height:auto; max-width:none; width:100%; }
.ui-dropdown,.ui-popover { animation:ui-zoom-in-95 var(--ui-duration-base) var(--ui-ease-out); background:hsl(var(--popover)); border:1px solid hsl(var(--border)); border-radius:var(--radius); box-shadow:0 10px 15px -3px hsl(var(--foreground) / .12); color:hsl(var(--popover-foreground)); min-width:8rem; padding:.25rem; position:fixed; z-index:1060; }.ui-dropdown [role="menuitem"],.ui-dropdown__item { align-items:center; border-radius:calc(var(--radius) - 3px); color:inherit; cursor:pointer; display:flex; font-size:.875rem; gap:.5rem; min-height:2rem; padding:.375rem .5rem; text-decoration:none; }.ui-dropdown [role="menuitem"]:hover,.ui-dropdown [role="menuitem"]:focus,.ui-dropdown__item:hover,.ui-dropdown__item:focus { background:hsl(var(--accent)); color:hsl(var(--accent-foreground)); outline:0; }.ui-dropdown__separator { background:hsl(var(--border)); height:1px; margin:.25rem -.25rem; }
.ui-tooltip { animation:ui-fade-in var(--ui-duration-fast) var(--ui-ease-out); background:hsl(var(--primary)); border-radius:calc(var(--radius) - 2px); color:hsl(var(--primary-foreground)); font-size:.75rem; max-width:16rem; padding:.375rem .5rem; position:fixed; pointer-events:none; z-index:1070; }
.ui-toast-region { bottom:1rem; display:grid; gap:.5rem; list-style:none; margin:0; padding:0; position:fixed; right:1rem; width:min(24rem,calc(100vw - 2rem)); z-index:1080; }.ui-toast { align-items:flex-start; animation:ui-zoom-in-95 var(--ui-duration-slow) var(--ui-ease-out); background:hsl(var(--background)); border:1px solid hsl(var(--border)); border-radius:var(--radius); box-shadow:0 10px 15px -3px hsl(var(--foreground) / .12); color:hsl(var(--foreground)); display:flex; gap:.75rem; justify-content:space-between; padding:1rem; }.ui-toast[data-state="closed"] { animation:ui-zoom-out-95 var(--ui-duration-fast) ease-in; }.ui-toast--destructive { border-color:hsl(var(--destructive) / .5); }.ui-toast__content { min-width:0; }.ui-toast__title { font-size:.875rem; font-weight:600; margin:0; }.ui-toast__description { color:hsl(var(--muted-foreground)); font-size:.875rem; margin:.25rem 0 0; }.ui-toast__close { background:transparent; border:0; border-radius:calc(var(--radius) - 3px); color:hsl(var(--muted-foreground)); line-height:1; padding:.25rem; }.ui-toast__close:hover { background:hsl(var(--accent)); color:hsl(var(--accent-foreground)); }
