.spinner{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-2)}.spinner--xs{width:16px;height:16px}.spinner--sm{width:24px;height:24px}.spinner--md{width:40px;height:40px}.spinner--lg{width:56px;height:56px}.spinner--xl{width:72px;height:72px}.spinner-circular{animation:rotate 2s linear infinite;width:100%;height:100%}.spinner-path{stroke:currentColor;stroke-linecap:round;animation:dash 1.5s ease-in-out infinite}@keyframes rotate{to{transform:rotate(360deg)}}@keyframes dash{0%{stroke-dasharray:1,150;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-35}to{stroke-dasharray:90,150;stroke-dashoffset:-124}}.spinner-dots{display:flex;align-items:center;justify-content:center;gap:var(--space-2)}.spinner-dot{width:25%;height:25%;border-radius:50%;background:currentColor;animation:bounce-dots 1.4s infinite ease-in-out both}.spinner-dot:nth-child(1){animation-delay:-.32s}.spinner-dot:nth-child(2){animation-delay:-.16s}@keyframes bounce-dots{0%,80%,to{transform:scale(0);opacity:.5}40%{transform:scale(1);opacity:1}}.spinner-bars{display:flex;align-items:center;justify-content:center;gap:var(--space-1);height:100%}.spinner-bar{width:15%;height:100%;background:currentColor;border-radius:var(--radius-sm);animation:scale-bars 1.2s infinite ease-in-out}.spinner-bar:nth-child(1){animation-delay:-.9s}.spinner-bar:nth-child(2){animation-delay:-.6s}.spinner-bar:nth-child(3){animation-delay:-.3s}@keyframes scale-bars{0%,40%,to{transform:scaleY(.4)}20%{transform:scaleY(1)}}.spinner-pulse{position:relative;width:100%;height:100%;display:flex;align-items:center;justify-content:center}.spinner-pulse-ring{position:absolute;width:100%;height:100%;border:3px solid currentColor;border-radius:50%;opacity:.6;animation:pulse-ring 1.5s cubic-bezier(.4,0,.2,1) infinite}.spinner-pulse-core{width:60%;height:60%;background:currentColor;border-radius:50%;animation:pulse-core 1.5s cubic-bezier(.4,0,.2,1) infinite}@keyframes pulse-ring{0%{transform:scale(.8);opacity:.8}50%{transform:scale(1.2);opacity:0}to{transform:scale(.8);opacity:0}}@keyframes pulse-core{0%,to{transform:scale(.8);opacity:.7}50%{transform:scale(1);opacity:1}}.spinner-label{font-size:var(--text-sm);color:var(--neutral-600);font-weight:var(--font-medium);margin-top:var(--space-2)}.spinner-wrapper{display:flex;align-items:center;justify-content:center;padding:var(--space-8)}.spinner-wrapper--overlay{position:absolute;top:0;left:0;right:0;bottom:0;background:#ffffffe6;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:1000}.spinner-wrapper--fullscreen{position:fixed;top:0;left:0;right:0;bottom:0;background:#fffffff2;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:9999}.progress-linear{width:100%;display:flex;flex-direction:column;gap:var(--space-2)}.progress-linear-header{display:flex;justify-content:space-between;align-items:center}.progress-linear-label{font-size:var(--text-sm);color:var(--neutral-700);font-weight:var(--font-medium)}.progress-linear-percentage{font-size:var(--text-sm);color:var(--neutral-600);font-weight:var(--font-semibold);font-family:var(--font-secondary)}.progress-linear-track{position:relative;width:100%;border-radius:var(--radius-full);overflow:hidden}.progress-linear--sm .progress-linear-track{height:4px}.progress-linear--md .progress-linear-track{height:8px}.progress-linear--lg .progress-linear-track{height:12px}.progress-linear-bar{height:100%;border-radius:var(--radius-full);transition:width var(--transition-slow) cubic-bezier(.4,0,.2,1);position:relative;overflow:hidden}.progress-linear-bar--indeterminate{width:100%!important;background:none!important}.progress-linear-bar--indeterminate:before{content:"";position:absolute;top:0;left:0;bottom:0;width:50%;background:var(--primary-500);animation:indeterminate 1.5s cubic-bezier(.4,0,.2,1) infinite}@keyframes indeterminate{0%{left:-50%}to{left:100%}}.progress-linear-bar:after{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent 0%,rgba(255,255,255,.4) 50%,transparent 100%);animation:shine 2s infinite}@keyframes shine{0%{left:-100%}to{left:100%}}@media (max-width: 768px){.spinner--lg{width:48px;height:48px}.spinner--xl{width:64px;height:64px}}[data-theme=dark] .spinner-wrapper--overlay{background:#000c}[data-theme=dark] .spinner-wrapper--fullscreen{background:#000000e6}[data-theme=dark] .spinner-label{color:var(--neutral-400)}[data-theme=dark] .progress-linear-label{color:var(--neutral-300)}[data-theme=dark] .progress-linear-percentage{color:var(--neutral-400)}@media (prefers-reduced-motion: reduce){.spinner-circular,.spinner-path,.spinner-dot,.spinner-bar,.spinner-pulse-ring,.spinner-pulse-core,.progress-linear-bar,.progress-linear-bar:after,.progress-linear-bar--indeterminate:before{animation:none}.progress-linear-bar{transition:none}}@media print{.spinner,.spinner-wrapper{display:none}.progress-linear-track{border:1px solid var(--neutral-900)}}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);padding:var(--space-3) var(--space-4);border:none;border-radius:var(--radius-md);font-family:var(--font-primary);font-size:var(--text-base);font-weight:var(--font-semibold);line-height:1.5;text-decoration:none;cursor:pointer;transition:all var(--transition-fast);position:relative;overflow:hidden;white-space:nowrap;-webkit-user-select:none;user-select:none}.btn:focus-visible{outline:2px solid var(--primary-500);outline-offset:2px}.btn--xs{padding:var(--space-1) var(--space-2);font-size:var(--text-xs);gap:var(--space-1)}.btn--sm{padding:var(--space-2) var(--space-3);font-size:var(--text-sm);gap:var(--space-1)}.btn--md{padding:var(--space-3) var(--space-4);font-size:var(--text-base);gap:var(--space-2)}.btn--lg{padding:var(--space-4) var(--space-6);font-size:var(--text-lg);gap:var(--space-2)}.btn--xl{padding:var(--space-5) var(--space-8);font-size:var(--text-xl);gap:var(--space-3)}.btn--primary{background:var(--gradient-primary);color:var(--white);box-shadow:var(--shadow-sm)}.btn--primary:hover:not(:disabled){background:var(--primary-600);box-shadow:var(--shadow-md);transform:translateY(-2px)}.btn--primary:active:not(:disabled){transform:translateY(0);box-shadow:var(--shadow-sm)}.btn--secondary{background:var(--neutral-200);color:var(--neutral-900)}.btn--secondary:hover:not(:disabled){background:var(--neutral-300);transform:translateY(-2px)}.btn--outline{background:transparent;color:var(--primary-500);border:2px solid var(--primary-500)}.btn--outline:hover:not(:disabled){background:var(--primary-50);border-color:var(--primary-600);color:var(--primary-600)}.btn--ghost{background:transparent;color:var(--neutral-700)}.btn--ghost:hover:not(:disabled){background:var(--neutral-100);color:var(--neutral-900)}.btn--danger{background:var(--gradient-error);color:var(--white);box-shadow:var(--shadow-sm)}.btn--danger:hover:not(:disabled){background:var(--red-600);box-shadow:var(--shadow-md);transform:translateY(-2px)}.btn--success{background:var(--gradient-success);color:var(--white);box-shadow:var(--shadow-sm)}.btn--success:hover:not(:disabled){background:var(--green-600);box-shadow:var(--shadow-md);transform:translateY(-2px)}.btn--warning{background:var(--gradient-warning);color:var(--neutral-900);box-shadow:var(--shadow-sm)}.btn--warning:hover:not(:disabled){background:var(--yellow-500);box-shadow:var(--shadow-md);transform:translateY(-2px)}.btn:disabled,.btn--disabled{opacity:.6;cursor:not-allowed;transform:none!important;box-shadow:none!important}.btn--loading{cursor:wait;pointer-events:none}.btn--loading .btn-text{opacity:.7}.btn-icon{display:flex;align-items:center;justify-content:center;flex-shrink:0}.btn-icon svg{width:18px;height:18px}.btn--xs .btn-icon svg{width:14px;height:14px}.btn--sm .btn-icon svg{width:16px;height:16px}.btn--lg .btn-icon svg{width:20px;height:20px}.btn--xl .btn-icon svg{width:24px;height:24px}.btn-spinner{display:flex;align-items:center;justify-content:center;flex-shrink:0;animation:spin 1s linear infinite}.btn-spinner svg{width:16px;height:16px}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.btn--full-width{width:100%;justify-content:center}.btn:before{content:"";position:absolute;top:50%;left:50%;width:0;height:0;border-radius:50%;background:#ffffff80;transform:translate(-50%,-50%);transition:width .6s,height .6s}.btn:active:not(:disabled):before{width:300px;height:300px;transition:0s}.btn-group{display:flex;gap:var(--space-2)}.btn-group .btn{flex:1}.btn-group--attached{gap:0}.btn-group--attached .btn{border-radius:0}.btn-group--attached .btn:first-child{border-top-left-radius:var(--radius-md);border-bottom-left-radius:var(--radius-md)}.btn-group--attached .btn:last-child{border-top-right-radius:var(--radius-md);border-bottom-right-radius:var(--radius-md)}.btn-group--attached .btn:not(:last-child){border-right:1px solid rgba(255,255,255,.2)}@media (max-width: 768px){.btn--lg{padding:var(--space-3) var(--space-5);font-size:var(--text-base)}.btn--xl{padding:var(--space-4) var(--space-6);font-size:var(--text-lg)}}[data-theme=dark] .btn--secondary{background:var(--neutral-800);color:var(--neutral-100)}[data-theme=dark] .btn--secondary:hover:not(:disabled){background:var(--neutral-700)}[data-theme=dark] .btn--ghost{color:var(--neutral-300)}[data-theme=dark] .btn--ghost:hover:not(:disabled){background:var(--neutral-800);color:var(--neutral-100)}[data-theme=dark] .btn--outline{color:var(--primary-400);border-color:var(--primary-400)}[data-theme=dark] .btn--outline:hover:not(:disabled){background:var(--neutral-800);border-color:var(--primary-300);color:var(--primary-300)}@media (prefers-reduced-motion: reduce){.btn,.btn:before,.btn-spinner{animation:none;transition:none}}@media (prefers-contrast: high){.btn{border:2px solid currentColor}}@media print{.btn{border:1px solid var(--neutral-900);background:var(--white)!important;color:var(--neutral-900)!important;box-shadow:none!important}}.badge{display:inline-flex;align-items:center;gap:var(--space-1);padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm);font-family:var(--font-primary);font-size:var(--text-xs);font-weight:var(--font-semibold);line-height:1;white-space:nowrap;-webkit-user-select:none;user-select:none;transition:all var(--transition-fast)}.badge--sm{padding:var(--space-1) var(--space-2);font-size:10px;gap:var(--space-1)}.badge--md{padding:var(--space-1) var(--space-3);font-size:var(--text-xs);gap:var(--space-1)}.badge--lg{padding:var(--space-2) var(--space-3);font-size:var(--text-sm);gap:var(--space-2)}.badge--primary{background:var(--primary-500);color:var(--white)}.badge--primary.badge--outline{background:transparent;color:var(--primary-500);border:1px solid var(--primary-500)}.badge--secondary{background:var(--neutral-700);color:var(--white)}.badge--secondary.badge--outline{background:transparent;color:var(--neutral-700);border:1px solid var(--neutral-700)}.badge--success{background:var(--green-500);color:var(--white)}.badge--success.badge--outline{background:transparent;color:var(--green-700);border:1px solid var(--green-500)}.badge--warning{background:var(--yellow-500);color:var(--neutral-900)}.badge--warning.badge--outline{background:transparent;color:var(--yellow-700);border:1px solid var(--yellow-500)}.badge--danger{background:var(--red-500);color:var(--white)}.badge--danger.badge--outline{background:transparent;color:var(--red-700);border:1px solid var(--red-500)}.badge--info{background:var(--info-500);color:var(--white)}.badge--info.badge--outline{background:transparent;color:var(--info-700);border:1px solid var(--info-500)}.badge--neutral{background:var(--neutral-200);color:var(--neutral-700)}.badge--neutral.badge--outline{background:transparent;color:var(--neutral-700);border:1px solid var(--neutral-400)}.badge--pill{border-radius:var(--radius-full)}.badge--dot{padding-left:var(--space-1)}.badge-dot{width:6px;height:6px;border-radius:50%;background:currentColor;flex-shrink:0}.badge--pulse .badge-dot{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.badge-icon{display:flex;align-items:center;justify-content:center;flex-shrink:0}.badge-icon svg{width:12px;height:12px}.badge--lg .badge-icon svg{width:14px;height:14px}.badge-dismiss{display:flex;align-items:center;justify-content:center;padding:0;margin-left:var(--space-1);background:transparent;border:none;color:currentColor;cursor:pointer;border-radius:var(--radius-sm);transition:all var(--transition-fast);opacity:.7}.badge-dismiss:hover{opacity:1;background:#0000001a}.badge-dismiss svg{width:12px;height:12px}.badge-count-wrapper{position:relative;display:inline-flex}.badge-count{position:absolute;display:flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 6px;border-radius:var(--radius-full);font-size:11px;font-weight:var(--font-bold);line-height:1;box-shadow:0 2px 4px #0003;border:2px solid var(--white);z-index:1}.badge-count--top-right{top:-8px;right:-8px}.badge-count--top-left{top:-8px;left:-8px}.badge-count--bottom-right{bottom:-8px;right:-8px}.badge-count--bottom-left{bottom:-8px;left:-8px}.badge-count-dot{width:8px;height:8px;border-radius:50%;background:currentColor;animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}.badge-group{display:flex;flex-wrap:wrap;gap:var(--space-2)}@media (max-width: 768px){.badge--lg{padding:var(--space-1) var(--space-3);font-size:var(--text-xs)}}[data-theme=dark] .badge--neutral{background:var(--neutral-700);color:var(--neutral-100)}[data-theme=dark] .badge--neutral.badge--outline{border-color:var(--neutral-600);color:var(--neutral-300)}[data-theme=dark] .badge--warning{background:var(--yellow-600);color:var(--white)}[data-theme=dark] .badge-count{border-color:var(--neutral-900)}.badge-dismiss:focus-visible{outline:2px solid currentColor;outline-offset:2px}@media (prefers-reduced-motion: reduce){.badge--pulse .badge-dot,.badge-count-dot{animation:none}}@media (prefers-contrast: high){.badge{border:1px solid currentColor}}@media print{.badge{border:1px solid currentColor;background:var(--white)!important;color:var(--neutral-900)!important}.badge-dismiss{display:none}}.badge{animation:fadeIn var(--transition-fast)}.avatar{position:relative;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;-webkit-user-select:none;user-select:none;overflow:visible}.avatar-content{position:relative;width:100%;height:100%;overflow:hidden;display:flex;align-items:center;justify-content:center}.avatar--xs{width:24px;height:24px}.avatar--sm{width:32px;height:32px}.avatar--md{width:40px;height:40px}.avatar--lg{width:48px;height:48px}.avatar--xl{width:64px;height:64px}.avatar--2xl{width:96px;height:96px}.avatar--circle .avatar-content{border-radius:var(--radius-full)}.avatar--rounded .avatar-content{border-radius:var(--radius-lg)}.avatar--square .avatar-content{border-radius:var(--radius-sm)}.avatar-image{width:100%;height:100%;object-fit:cover}.avatar-placeholder{width:100%;height:100%;display:flex;align-items:center;justify-content:center;background:var(--primary-500);color:var(--white);font-weight:var(--font-bold);transition:all var(--transition-fast)}.avatar-initials{font-size:50%;line-height:1;text-transform:uppercase}.avatar--xs .avatar-initials{font-size:10px}.avatar--sm .avatar-initials{font-size:12px}.avatar--md .avatar-initials{font-size:14px}.avatar--lg .avatar-initials{font-size:16px}.avatar--xl .avatar-initials{font-size:20px}.avatar--2xl .avatar-initials{font-size:32px}.avatar--bordered .avatar-content{border:3px solid var(--white);box-shadow:var(--shadow-md)}.avatar--xs.avatar--bordered .avatar-content,.avatar--sm.avatar--bordered .avatar-content{border-width:2px}.avatar-status{position:absolute;bottom:0;right:0;width:25%;height:25%;min-width:8px;min-height:8px;border-radius:var(--radius-full);border:2px solid var(--white);z-index:1}.avatar--xs .avatar-status,.avatar--sm .avatar-status{border-width:1.5px}.avatar-status--online{background:var(--green-500);animation:pulse-status 2s cubic-bezier(.4,0,.6,1) infinite}.avatar-status--offline{background:var(--neutral-400)}.avatar-status--away{background:var(--yellow-500)}.avatar-status--busy{background:var(--red-500)}@keyframes pulse-status{0%,to{box-shadow:0 0 #4ade80b3}50%{box-shadow:0 0 0 4px #4ade8000}}.avatar--clickable{cursor:pointer;transition:all var(--transition-fast)}.avatar--clickable:hover .avatar-content{transform:scale(1.05)}.avatar--clickable:hover .avatar-placeholder{filter:brightness(1.1)}.avatar--clickable:focus-visible{outline:2px solid var(--primary-500);outline-offset:2px;border-radius:inherit}.avatar-group{display:flex;align-items:center;flex-direction:row-reverse;justify-content:flex-end}.avatar-group .avatar{margin-left:-8px;transition:all var(--transition-fast)}.avatar-group .avatar:first-child{margin-left:0}.avatar-group .avatar:hover{transform:translateY(-4px);z-index:10}.avatar-group .avatar--xs,.avatar-group .avatar--sm{margin-left:-6px}.avatar-group .avatar--lg,.avatar-group .avatar--xl,.avatar-group .avatar--2xl{margin-left:-12px}.avatar--more{cursor:pointer}.avatar--more .avatar-placeholder{background:var(--neutral-300);color:var(--neutral-700)}.avatar--more:hover .avatar-placeholder{background:var(--neutral-400);color:var(--neutral-900)}.avatar--loading .avatar-content{background:linear-gradient(90deg,var(--neutral-200) 0%,var(--neutral-300) 50%,var(--neutral-200) 100%);background-size:200% 100%;animation:shimmer 1.5s infinite}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@media (max-width: 768px){.avatar--xl{width:56px;height:56px}.avatar--2xl{width:72px;height:72px}.avatar-group .avatar{margin-left:-6px}.avatar-group .avatar--xs,.avatar-group .avatar--sm{margin-left:-4px}}[data-theme=dark] .avatar--bordered .avatar-content,[data-theme=dark] .avatar-status{border-color:var(--neutral-900)}[data-theme=dark] .avatar--more .avatar-placeholder{background:var(--neutral-700);color:var(--neutral-200)}[data-theme=dark] .avatar--more:hover .avatar-placeholder{background:var(--neutral-600);color:var(--neutral-100)}@media (prefers-reduced-motion: reduce){.avatar--clickable:hover .avatar-content,.avatar-group .avatar:hover,.avatar-status--online,.avatar--loading .avatar-content{animation:none;transform:none}}@media (prefers-contrast: high){.avatar .avatar-content{border:2px solid currentColor}.avatar-status{border-width:3px}}@media print{.avatar-status{display:none}.avatar .avatar-content{border:1px solid var(--neutral-900)}}.avatar{animation:fadeIn var(--transition-fast)}@keyframes fadeIn{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}
