.btn { display: inline-flex; align-items: center; justify-content: center; gap: 8px; font-family: var(--font-button); font-size: var(--font-size-body); font-weight: var(--font-weight-semibold); border: none; border-radius: var(--radius-sm); cursor: pointer; transition: all var(--transition-fast); text-decoration: none; line-height: 1; } .btn:disabled { opacity: 0.5; cursor: not-allowed; } .btn--primary { background: var(--color-primary); color: var(--color-text-white); } .btn--primary:hover:not(:disabled) { background: var(--color-primary-hover); } .btn--secondary { background: transparent; color: var(--color-primary); border: 1px solid var(--color-primary); } .btn--secondary:hover:not(:disabled) { background: var(--color-light-green); } .btn--ghost { background: transparent; color: var(--color-text-black); border: 1px solid var(--color-stroke); } .btn--ghost:hover:not(:disabled) { background: var(--color-bg-gray); } .btn--danger { background: var(--color-red); color: var(--color-text-white); } .btn--sm { padding: 8px 16px; font-size: var(--font-size-small); } .btn--md { padding: 12px 24px; } .btn--lg { padding: 16px 32px; } .btn--full { width: 100%; } .form-input { width: 100%; padding: 12px 16px; font-family: var(--font-body); font-size: var(--font-size-body); color: var(--color-text-black); background: var(--color-bg-gray); border: 1px solid transparent; border-radius: var(--radius-sm); outline: none; transition: all var(--transition-fast); } .form-input::placeholder { color: var(--color-text-gray); } .form-input:focus { border-color: var(--color-primary); background: var(--color-white); } .form-input--error { border-color: var(--color-red); background: var(--color-bg-error); } .form-label { display: block; font-family: var(--font-body); font-size: var(--font-size-small); font-weight: var(--font-weight-medium); color: var(--color-text-black); margin-bottom: 6px; } .form-error { font-family: var(--font-body); font-size: var(--font-size-caption); color: var(--color-red); margin-top: 4px; } .form-select { width: 100%; padding: 12px 16px; font-family: var(--font-body); font-size: var(--font-size-body); color: var(--color-text-black); background: var(--color-bg-gray) url("data:image/svg+xml,%3Csvg width='12' height='8' viewBox='0 0 12 8' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 1.5L6 6.5L11 1.5' stroke='%23333333' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") no-repeat right 16px center; border: 1px solid transparent; border-radius: var(--radius-sm); outline: none; appearance: none; transition: all var(--transition-fast); } .form-select:focus { border-color: var(--color-primary); background-color: var(--color-white); } .card { background: var(--color-white); border: 1px solid var(--color-stroke); border-radius: var(--radius-md); overflow: hidden; transition: box-shadow var(--transition-normal); } .card:hover { box-shadow: var(--shadow-md); } .tag { display: inline-flex; align-items: center; padding: 4px 12px; font-family: var(--font-body); font-size: var(--font-size-caption); font-weight: var(--font-weight-medium); color: var(--color-primary); background: var(--color-light-green); border-radius: 20px; } .badge { display: inline-flex; align-items: center; justify-content: center; min-width: 20px; height: 20px; padding: 0 6px; font-family: var(--font-body); font-size: 10px; font-weight: var(--font-weight-bold); color: var(--color-text-white); background: var(--color-red); border-radius: 10px; } .avatar { width: 40px; height: 40px; border-radius: var(--radius-full); object-fit: cover; background: var(--color-bg-gray); } .avatar--sm { width: 32px; height: 32px; } .avatar--lg { width: 64px; height: 64px; } .skeleton { background: linear-gradient(90deg, var(--color-bg-gray) 25%, #e8e8e8 50%, var(--color-bg-gray) 75%); background-size: 200% 100%; animation: skeleton-loading 1.5s infinite; border-radius: var(--radius-sm); } @keyframes skeleton-loading { 0% { background-position: 200% 0; } 100% { background-position: -200% 0; } } .container { max-width: var(--container-max); margin: 0 auto; padding: 0 var(--container-padding); width: 100%; } .section { padding: 60px 0; } @media (max-width: 744px) { .section { padding: 32px 0; } }