.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:none;border-radius:8px;font-weight:500;text-decoration:none;cursor:pointer;transition:all .2s ease;position:relative;overflow:hidden;font-family:inherit;line-height:1;white-space:nowrap}.btn:focus{outline:none;box-shadow:0 0 0 3px #3b82f64d}.btn:focus:not(:focus-visible){box-shadow:none}.btn:focus-visible{box-shadow:0 0 0 3px #3b82f64d}.btn--small{padding:8px 16px;font-size:.875rem;min-height:36px}.btn--medium{padding:12px 24px;font-size:1rem;min-height:44px}.btn--large{padding:16px 32px;font-size:1.125rem;min-height:52px}.btn--primary{background:#3b82f6;color:#fff}.btn--primary:hover:not(:disabled){background:#2563eb;transform:translateY(-1px);box-shadow:0 4px 12px #3b82f64d}.btn--primary:active:not(:disabled){transform:translateY(0);box-shadow:0 2px 8px #3b82f64d}.btn--secondary{background:#6b7280;color:#fff}.btn--secondary:hover:not(:disabled){background:#4b5563;transform:translateY(-1px);box-shadow:0 4px 12px #6b72804d}.btn--secondary:active:not(:disabled){transform:translateY(0);box-shadow:0 2px 8px #6b72804d}.btn--outline{background:transparent;color:#3b82f6;border:2px solid #3b82f6}.btn--outline:hover:not(:disabled){background:#3b82f6;color:#fff;transform:translateY(-1px);box-shadow:0 4px 12px #3b82f633}.btn--outline:active:not(:disabled){transform:translateY(0);box-shadow:0 2px 8px #3b82f633}.btn--ghost{background:transparent;color:#6b7280}.btn--ghost:hover:not(:disabled){background:#f3f4f6;color:#374151;transform:translateY(-1px)}.btn--ghost:active:not(:disabled){transform:translateY(0);background:#e5e7eb}.btn--disabled,.btn:disabled{opacity:.6;cursor:not-allowed;transform:none!important;box-shadow:none!important}.btn--loading{cursor:wait;pointer-events:none}.btn--full-width{width:100%}.btn__content{display:flex;align-items:center;justify-content:center}.btn__icon{display:flex;align-items:center;justify-content:center;flex-shrink:0}.btn__icon--left{margin-right:4px}.btn__icon--right{margin-left:4px}.btn__icon svg{width:1em;height:1em}.btn__spinner{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);display:flex;align-items:center;justify-content:center}.btn__spinner-icon{width:20px;height:20px;animation:btn-spin 1s linear infinite}.btn__spinner-circle{stroke:currentColor;stroke-linecap:round;stroke-dasharray:31.416;stroke-dashoffset:31.416;animation:btn-dash 2s ease-in-out infinite}.btn--loading .btn__content,.btn--loading .btn__icon{opacity:0}@keyframes btn-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes btn-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}}.app.dark .btn--ghost{color:#9ca3af}.app.dark .btn--ghost:hover:not(:disabled){background:#374151;color:#f3f4f6}.app.dark .btn--ghost:active:not(:disabled){background:#4b5563}.app.dark .btn--outline{color:#60a5fa;border-color:#60a5fa}.app.dark .btn--outline:hover:not(:disabled){background:#60a5fa;color:#1e293b}@media (max-width: 768px){.btn--large{padding:14px 28px;font-size:1rem;min-height:48px}.btn--medium{padding:10px 20px;font-size:.875rem;min-height:40px}.btn--small{padding:6px 12px;font-size:.8125rem;min-height:32px}}@media (prefers-reduced-motion: reduce){.btn{transition:none}.btn:hover:not(:disabled){transform:none}.btn:active:not(:disabled){transform:none}.btn__spinner-icon{animation:none}.btn__spinner-circle{animation:none;stroke-dasharray:none;stroke-dashoffset:0}}.card{background:#fff;border-radius:12px;transition:all .2s ease;position:relative;overflow:hidden}.card:focus{outline:none;box-shadow:0 0 0 3px #3b82f64d}.card:focus:not(:focus-visible){box-shadow:none}.card:focus-visible{box-shadow:0 0 0 3px #3b82f64d}.card--default{background:#fff;box-shadow:0 1px 3px #0000001a,0 1px 2px #0000000f}.card--elevated{background:#fff;box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -1px #0000000f}.card--outlined{background:#fff;border:1px solid #e5e7eb;box-shadow:none}.card--ghost{background:transparent;box-shadow:none}.card--padding-none{padding:0}.card--padding-small{padding:16px}.card--padding-medium{padding:24px}.card--padding-large{padding:32px}.card--hover:hover{transform:translateY(-2px);box-shadow:0 10px 25px -3px #0000001a,0 4px 6px -2px #0000000d}.card--clickable{cursor:pointer;border:none;text-align:left;font-family:inherit;font-size:inherit;color:inherit}.card--clickable:hover{transform:translateY(-2px);box-shadow:0 10px 25px -3px #0000001a,0 4px 6px -2px #0000000d}.card--clickable:active{transform:translateY(-1px);box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -1px #0000000f}.app.dark .card--default,.app.dark .card--elevated{background:#1e293b;box-shadow:0 4px 6px -1px #0000004d,0 2px 4px -1px #0003}.app.dark .card--outlined{background:#1e293b;border-color:#334155}.app.dark .card--hover:hover,.app.dark .card--clickable:hover{box-shadow:0 10px 25px -3px #0006,0 4px 6px -2px #0000004d}.app.dark .card--clickable:active{box-shadow:0 4px 6px -1px #0000004d,0 2px 4px -1px #0003}@media (prefers-reduced-motion: reduce){.card{transition:none}.card--hover:hover,.card--clickable:hover,.card--clickable:active{transform:none}}@media (max-width: 768px){.card--padding-large{padding:24px}.card--padding-medium{padding:20px}.card--padding-small{padding:12px}}.skeleton{background:#e5e7eb;border-radius:4px;position:relative;overflow:hidden}.skeleton--text{height:1em;margin-bottom:.5em;border-radius:4px}.skeleton--rectangular{border-radius:8px}.skeleton--circular{border-radius:50%}.skeleton--pulse{animation:skeleton-pulse 1.5s ease-in-out infinite}.skeleton--wave:before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.4),transparent);animation:skeleton-wave 1.5s ease-in-out infinite}.skeleton-text{width:100%}.skeleton-text__line{margin-bottom:8px}.skeleton-text__line:last-child{margin-bottom:0}.skeleton-card{background:#fff;border-radius:12px;overflow:hidden;box-shadow:0 1px 3px #0000001a,0 1px 2px #0000000f}.skeleton-card__image{width:100%;border-radius:0}.skeleton-card__content{padding:24px}.skeleton-card__title{margin-bottom:16px}.skeleton-card__description{margin-bottom:20px}.skeleton-card__tags{display:flex;gap:8px;flex-wrap:wrap}.skeleton-card__tags .skeleton{border-radius:16px}@keyframes skeleton-pulse{0%{opacity:1}50%{opacity:.5}to{opacity:1}}@keyframes skeleton-wave{0%{left:-100%}to{left:100%}}.app.dark .skeleton{background:#374151}.app.dark .skeleton--wave:before{background:linear-gradient(90deg,transparent,rgba(255,255,255,.1),transparent)}.app.dark .skeleton-card{background:#1e293b;box-shadow:0 4px 6px -1px #0000004d,0 2px 4px -1px #0003}@media (prefers-reduced-motion: reduce){.skeleton--pulse,.skeleton--wave:before{animation:none}.skeleton{opacity:.7}}@media (max-width: 768px){.skeleton-card__content{padding:20px}.skeleton-card__image{height:160px}}.loading{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px}.loading--small{gap:8px}.loading--medium{gap:12px}.loading--large{gap:16px}.loading__text{color:#6b7280;font-size:.875rem;font-weight:500}.loading--small .loading__text{font-size:.75rem}.loading--large .loading__text{font-size:1rem}.loading__spinner{display:flex;align-items:center;justify-content:center}.loading__spinner-icon{width:32px;height:32px;animation:loading-spin 1s linear infinite}.loading--small .loading__spinner-icon{width:20px;height:20px}.loading--large .loading__spinner-icon{width:48px;height:48px}.loading__spinner-circle{stroke:#3b82f6;stroke-linecap:round;stroke-dasharray:31.416;stroke-dashoffset:31.416;animation:loading-dash 2s ease-in-out infinite}.loading__dots{display:flex;gap:4px;align-items:center}.loading__dot{width:8px;height:8px;background:#3b82f6;border-radius:50%;animation:loading-dots 1.4s ease-in-out infinite both}.loading--small .loading__dot{width:6px;height:6px}.loading--large .loading__dot{width:12px;height:12px}.loading__dot:nth-child(1){animation-delay:-.32s}.loading__dot:nth-child(2){animation-delay:-.16s}.loading__dot:nth-child(3){animation-delay:0}.loading__pulse{position:relative;display:flex;align-items:center;justify-content:center}.loading__pulse-circle{width:32px;height:32px;background:#3b82f6;border-radius:50%;animation:loading-pulse 2s ease-in-out infinite}.loading--small .loading__pulse-circle{width:20px;height:20px}.loading--large .loading__pulse-circle{width:48px;height:48px}@keyframes loading-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes loading-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}}@keyframes loading-dots{0%,80%,to{transform:scale(0);opacity:.5}40%{transform:scale(1);opacity:1}}@keyframes loading-pulse{0%{transform:scale(0);opacity:1}to{transform:scale(1);opacity:0}}.app.dark .loading__text{color:#9ca3af}.app.dark .loading__spinner-circle{stroke:#60a5fa}.app.dark .loading__dot,.app.dark .loading__pulse-circle{background:#60a5fa}@media (prefers-reduced-motion: reduce){.loading__spinner-icon,.loading__spinner-circle,.loading__dot,.loading__pulse-circle{animation:none}.loading__spinner-circle{stroke-dasharray:none;stroke-dashoffset:0}.loading__dot,.loading__pulse-circle{opacity:.7;transform:none}}
