.btn{justify-content:center;align-items:center;gap:var(--spacing-sm);font-family:var(--font-inter),sans-serif;border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-base);-webkit-user-select:none;user-select:none;white-space:nowrap;border:none;font-weight:500;text-decoration:none;display:inline-flex;position:relative;transform:translateY(0)}.btn:hover:not(:disabled){box-shadow:var(--shadow-md);transform:translateY(-1px)}.btn:active:not(:disabled){transition:all var(--transition-fast);transform:translateY(0)}.btn:focus-visible{outline:2px solid var(--color-brand);outline-offset:2px}.btn:disabled{opacity:.5;cursor:not-allowed;box-shadow:none!important;transform:none!important}.btn-loading{cursor:wait}.btn-loading .btn-label{opacity:.7}.btn-sm{min-height:32px;padding:6px 12px;font-size:13px}.btn-md{min-height:40px;padding:10px 20px;font-size:14px}.btn-lg{min-height:48px;padding:12px 24px;font-size:16px;font-weight:600}.btn-primary{background:var(--color-brand);color:#fff;border:1px solid var(--color-brand)}.btn-primary:hover:not(:disabled){background:var(--color-brand-hover);border-color:var(--color-brand-hover);box-shadow:0 4px 12px #4c6ef54d}.btn-secondary{color:var(--color-brand);border:1px solid var(--color-brand);background:0 0}.btn-secondary:hover:not(:disabled){border-color:var(--color-brand-hover);background:#4c6ef514}.btn-ghost{color:var(--color-text-primary);background:0 0;border:1px solid #0000}.btn-ghost:hover:not(:disabled){background:var(--color-surface-hover);box-shadow:none}.btn-danger{background:var(--color-error);color:#fff;border:1px solid var(--color-error)}.btn-danger:hover:not(:disabled){background:#fa5252;border-color:#fa5252;box-shadow:0 4px 12px #ff6b6b4d}.btn-icon{align-items:center;font-size:1.1em;display:inline-flex}.btn-spinner{display:inline-flex;position:absolute;left:12px}.spinner{width:16px;height:16px;animation:.8s linear infinite spin}.spinner-circle{stroke:currentColor;opacity:.3;stroke-dasharray:60;stroke-dashoffset:15px;animation:1.5s ease-in-out infinite spinnerDash}@keyframes spin{to{transform:rotate(360deg)}}@keyframes spinnerDash{0%{stroke-dasharray:1 200;stroke-dashoffset:0}50%{stroke-dasharray:90 200;stroke-dashoffset:-35px}to{stroke-dasharray:90 200;stroke-dashoffset:-125px}}[data-theme=dark] .btn-ghost{color:var(--color-text-primary)}[data-theme=dark] .btn-ghost:hover:not(:disabled){background:var(--color-surface-hover)}[data-theme=dark] .btn-secondary{background:#5c7cfa1a}[data-theme=dark] .btn-secondary:hover:not(:disabled){background:#5c7cfa26}
.skeleton{background-color:var(--color-surface);border-radius:var(--radius-sm);display:block}.skeleton-text{transform-origin:0 55%;border-radius:var(--radius-sm);height:1em;margin-bottom:.5em;transform:scaleY(.6)}.skeleton-text:last-child{margin-bottom:0}.skeleton-circular{border-radius:50%}.skeleton-pulse{animation:1.5s ease-in-out infinite skeleton-pulse}@keyframes skeleton-pulse{0%,to{opacity:1}50%{opacity:.5}}.skeleton-wave{background:linear-gradient(90deg,var(--color-surface)0%,var(--color-surface-hover)40%,var(--color-surface)80%);background-size:200% 100%;animation:1.5s linear infinite skeleton-wave;position:relative;overflow:hidden}@keyframes skeleton-wave{0%{background-position:200% 0}to{background-position:-200% 0}}[data-theme=dark] .skeleton{background-color:var(--color-surface)}[data-theme=dark] .skeleton-wave{background:linear-gradient(90deg,var(--color-surface)0%,var(--color-surface-hover)40%,var(--color-surface)80%);background-size:200% 100%}@media (prefers-reduced-motion:reduce){.skeleton-pulse,.skeleton-wave{animation:none}.skeleton-pulse{opacity:.7}}.skeleton-card{padding:var(--spacing-lg);border-radius:var(--radius-lg);border:1px solid var(--color-border);background:#fff}[data-theme=dark] .skeleton-card{background:var(--color-surface)}
.empty-state{text-align:center;padding:var(--spacing-2xl)var(--spacing-lg);flex-direction:column;justify-content:center;align-items:center;min-height:300px;animation:.3s cubic-bezier(.4,0,.2,1) fadeIn;display:flex}@keyframes fadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.empty-state-icon{margin-bottom:var(--spacing-lg);opacity:.8;font-size:64px;line-height:1;animation:3s ease-in-out infinite floatIcon}@keyframes floatIcon{0%,to{transform:translateY(0)}50%{transform:translateY(-8px)}}.empty-state-title{color:var(--color-text-primary);margin:0 0 var(--spacing-sm)0;font-size:20px;font-weight:600;line-height:1.3}.empty-state-description{color:var(--color-text-secondary);margin:0 0 var(--spacing-lg)0;max-width:400px;font-size:15px;line-height:1.5}.empty-state-action{margin-top:var(--spacing-md)}@media (max-width:768px){.empty-state{padding:var(--spacing-xl)var(--spacing-md);min-height:240px}.empty-state-icon{margin-bottom:var(--spacing-md);font-size:48px}.empty-state-title{font-size:18px}.empty-state-description{font-size:14px}}[data-theme=dark] .empty-state-icon{opacity:.7}
.mobile-drawer-backdrop{-webkit-backdrop-filter:blur(2px);z-index:9998;background:#00000080;animation:.2s cubic-bezier(.4,0,.2,1) fadeIn;position:fixed;inset:0}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.mobile-drawer{background:var(--color-background);z-index:9999;flex-direction:column;width:300px;max-width:85vw;animation:.3s cubic-bezier(.4,0,.2,1) slideInRight;display:flex;position:fixed;top:0;bottom:0;right:0;box-shadow:-4px 0 24px #00000026}@media (min-width:769px){.mobile-drawer{width:320px}}@keyframes slideInRight{0%{transform:translate(100%)}to{transform:translate(0)}}.mobile-drawer-close{top:var(--spacing-md);right:var(--spacing-md);z-index:10;border-radius:var(--radius-md);padding:var(--spacing-xs);color:#fff;background:#0000001a;border:none;justify-content:center;align-items:center;min-width:48px;min-height:48px;transition:background-color .2s;display:flex;position:absolute}.mobile-drawer-close:hover{background:#0003}.mobile-drawer-close:active{background:#0000004d;transform:scale(.95)}@media (max-width:768px){.mobile-drawer-close{top:calc(var(--spacing-md) + env(safe-area-inset-top))}}.mobile-drawer-header{background:linear-gradient(135deg,var(--color-brand)0%,var(--color-brand-hover)100%);padding:var(--spacing-lg);padding-top:calc(var(--spacing-lg) + env(safe-area-inset-top));gap:var(--spacing-md);flex-direction:column;min-height:168px;display:flex}.mobile-drawer-avatar{-webkit-backdrop-filter:blur(8px);color:#fff;background:#ffffff40;border:2px solid #ffffff4d;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:48px;height:48px;font-size:20px;font-weight:600;display:flex}.mobile-drawer-user-info{flex-direction:column;gap:4px;margin-top:auto;display:flex}.mobile-drawer-user-name{color:#fff;font-size:18px;font-weight:600;line-height:1.3}.mobile-drawer-user-email{color:#ffffffe6;text-overflow:ellipsis;white-space:nowrap;font-size:14px;line-height:1.4;overflow:hidden}.mobile-drawer-content{padding:var(--spacing-xs)0;flex:1;overflow-y:auto}.mobile-drawer-section{padding:var(--spacing-xs)0}.mobile-drawer-item{align-items:center;gap:var(--spacing-md);width:100%;padding:var(--spacing-md)var(--spacing-lg);font-size:16px;font-weight:500;font-family:var(--font-inter),sans-serif;color:var(--color-text-primary);text-align:left;background:0 0;border:none;min-height:56px;transition:background-color .2s;display:flex}.mobile-drawer-item:active{background:var(--color-surface)}.mobile-drawer-item.danger{color:var(--color-error)}.mobile-drawer-item.danger:active{background:#ff6b6b14}.mobile-drawer-divider{background:var(--color-border);height:1px;margin:var(--spacing-sm)var(--spacing-lg)}[data-theme=dark] .mobile-drawer{background:var(--color-background);box-shadow:-4px 0 24px #00000080}[data-theme=dark] .mobile-drawer-header{background:linear-gradient(135deg,var(--color-brand)0%,var(--color-brand-hover)100%)}
.app-header{z-index:1000;-webkit-backdrop-filter:blur(12px);transition:all var(--transition-base);background:#fffffff2;border-bottom:1px solid #0000000f;position:sticky;top:0;left:0;right:0;box-shadow:0 1px 3px #0000000a}.header-inner{max-width:1200px;padding:var(--spacing-md)var(--spacing-lg);justify-content:space-between;align-items:center;gap:var(--spacing-lg);margin:0 auto;display:flex}.brand-button{align-items:center;gap:var(--spacing-sm);padding:var(--spacing-xs);border-radius:var(--radius-md);transition:all var(--transition-base);background:0 0;border:none;flex-shrink:0;display:flex}.brand-button:hover{background:var(--color-surface-hover);transform:translateY(-1px)}.brand-button:active{transform:translateY(0)}.brand-icon{font-size:28px;line-height:1}.brand-text{text-align:left;flex-direction:column;align-items:flex-start;display:flex}.brand-text h1{color:var(--color-text-primary);margin:0;font-size:20px;font-weight:600;line-height:1.2}.brand-text span{color:var(--color-text-secondary);font-size:11px;line-height:1}.main-nav{gap:var(--spacing-xs);flex:1;justify-content:center;display:flex}.nav-button{align-items:center;gap:var(--spacing-xs);padding:var(--spacing-sm)var(--spacing-md);border-radius:var(--radius-md);color:var(--color-text-secondary);font-size:14px;font-weight:500;font-family:var(--font-inter),sans-serif;transition:all var(--transition-base);white-space:nowrap;background:0 0;border:1px solid #0000;display:inline-flex}.nav-button:hover{background:var(--color-surface-hover);color:var(--color-text-primary);transform:translateY(-1px)}.nav-button:active{transform:translateY(0)}.nav-button.active{background:var(--color-brand);color:#fff;border-color:var(--color-brand)}.nav-button.active:hover{background:var(--color-brand-hover);border-color:var(--color-brand-hover);box-shadow:0 2px 8px #4c6ef540}.nav-button.ghost{color:var(--color-text-tertiary)}.nav-button.ghost:hover{color:var(--color-error);background:#ff6b6b14}.header-actions{gap:var(--spacing-sm);flex-shrink:0;align-items:center;display:flex}.mobile-menu-toggle{padding:var(--spacing-sm);color:var(--color-text-primary);border-radius:var(--radius-md);transition:all var(--transition-base);background:0 0;border:none;display:flex}.mobile-menu-toggle:hover{background:var(--color-surface-hover)}.mobile-menu-toggle:active{transform:scale(.95)}.mobile-menu-overlay{z-index:9999;animation:fadeIn var(--transition-base);background:#00000080;position:fixed;inset:0}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.mobile-menu{top:60px;right:var(--spacing-md);border-radius:var(--radius-lg);z-index:10000;background:#fff;min-width:240px;animation:.2s cubic-bezier(.4,0,.2,1) slideDown;position:fixed;overflow:hidden;box-shadow:0 8px 24px #00000026}@keyframes slideDown{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.mobile-menu-item{align-items:center;gap:var(--spacing-md);width:100%;padding:var(--spacing-md)var(--spacing-lg);font-size:15px;font-weight:500;font-family:var(--font-inter),sans-serif;color:var(--color-text-primary);text-align:left;transition:all var(--transition-base);background:0 0;border:none;min-height:48px;display:flex}.mobile-menu-item:hover{background:var(--color-surface-hover)}.mobile-menu-item:active{background:var(--color-surface)}.mobile-menu-item.active{background:var(--color-brand-light);color:var(--color-brand)}.mobile-menu-item.danger{color:var(--color-error)}.mobile-menu-item.danger:hover{background:#ff6b6b14}.mobile-menu-divider{background:var(--color-border);height:1px;margin:var(--spacing-xs)0}.mobile-bottom-bar{z-index:1000;-webkit-backdrop-filter:blur(12px);padding:var(--spacing-xs)var(--spacing-md);padding-bottom:max(var(--spacing-xs),env(safe-area-inset-bottom));background:#fffffffa;border-top:1px solid #0000000f;display:none;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -2px 8px #00000014}.bottom-bar-button{padding:var(--spacing-sm);color:var(--color-text-secondary);font-size:11px;font-weight:500;font-family:var(--font-inter),sans-serif;transition:all var(--transition-base);border-radius:var(--radius-md);background:0 0;border:none;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:4px;min-width:56px;min-height:56px;display:flex}.bottom-bar-button:active{background:var(--color-surface);transform:scale(.95)}.bottom-bar-button.active,.bottom-bar-button.active svg{color:var(--color-brand)}.desktop-only{display:flex}.mobile-only{display:none}@media (max-width:768px){.header-inner{padding:var(--spacing-sm)var(--spacing-md)}.brand-text h1{font-size:18px}.brand-text span{font-size:10px}.desktop-nav,.desktop-only{display:none}.mobile-only{display:flex}.mobile-bottom-bar{justify-content:space-around;align-items:center;display:flex}}@media (max-width:480px){.brand-icon{font-size:24px}.brand-text h1{font-size:16px}.bottom-bar-button{font-size:10px}}[data-theme=dark] .app-header{background:#1a1a1af2;border-bottom-color:#ffffff0f;box-shadow:0 1px 3px #0000004d}[data-theme=dark] .brand-button:hover,[data-theme=dark] .nav-button:hover{background:var(--color-surface-hover)}[data-theme=dark] .nav-button.active{background:var(--color-brand);border-color:var(--color-brand)}
.card{background:var(--color-background);border-radius:var(--radius-lg);padding:var(--spacing-lg);transition:all var(--transition-base);animation:.3s cubic-bezier(.4,0,.2,1) fadeIn}@keyframes fadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.card-elevated{box-shadow:var(--shadow-md);border:1px solid var(--color-border)}.card-glass{-webkit-backdrop-filter:blur(12px);background:#fffffff2;border:1px solid #0000000f;box-shadow:0 4px 16px #00000014}[data-theme=dark] .card-glass{background:#2a2a2af2;border-color:#ffffff0f;box-shadow:0 4px 16px #0000004d}
