다음의 코드에서 '시작 패턴 파트'나, '종료 패턴 파트' 각각의 중간을 가르는 듯한 찾아보기 버튼이 너무 크거나 뚜렷해서 헷갈리게  되는 것 같아요. 그것을 고쳐 주세요.

==========

import gradio as gr
import re
import tempfile

def extract_html_from_mht(mht_content, choice, start_pattern, end_pattern, occurrence='1'):
    if choice == "<!DOCTYPE html><html":
        pattern = r'<!DOCTYPE html><html.*?</html>'
    elif choice == "<!DOCTYPE html><html lang=":
        pattern = r'<!DOCTYPE html><html lang=".*?".*?</html>'
    elif choice == "Custom":
        if not start_pattern or not end_pattern:
            return ("시작 패턴과 종료 패턴을 모두 입력해주세요.", None)
        start_pattern_escaped = re.escape(start_pattern)
        end_pattern_escaped = re.escape(end_pattern)
        pattern = start_pattern_escaped + r'.*?' + end_pattern_escaped
    else:
        return ("올바르지 않은 선택입니다.", None)

    matches = re.finditer(pattern, mht_content, re.DOTALL)
    matches_list = list(matches)

    if matches_list:
        try:
            index = int(occurrence) - 1
            if index >= 0 and index < len(matches_list):
                html_content = matches_list[index].group(0)
            else:
                return ("올바르지 않은 발생 번호입니다.", None)
        except ValueError:
            return ("발생 번호는 숫자여야 합니다.", None)

        with tempfile.NamedTemporaryFile(delete=False, suffix=".html", mode='w', encoding='utf-8') as temp_file:
            temp_file.write(html_content)
            temp_file_path = temp_file.name

        return (None, temp_file_path)
    else:
        return ("MHT 파일에서 유효한 HTML 내용을 찾을 수 없습니다.", None)

def update_pattern_fields(choice):
    if choice == "Custom":
        return [
            gr.update(visible=True),  # start_pattern_input
            gr.update(visible=True),  # end_pattern_input
            gr.update(visible=True),  # start_occurrence_input
            gr.update(visible=True),  # end_occurrence_input
            gr.update(visible=True),  # start_find_button
            gr.update(visible=True),  # end_find_button
            gr.update(visible=True),  # start_pattern_message
            gr.update(visible=True)   # end_pattern_message
        ]
    else:
        return [
            gr.update(visible=False),  # start_pattern_input
            gr.update(visible=False),  # end_pattern_input
            gr.update(visible=False),  # start_occurrence_input
            gr.update(visible=False),  # end_occurrence_input
            gr.update(visible=False),  # start_find_button
            gr.update(visible=False),  # end_find_button
            gr.update(visible=False),  # start_pattern_message
            gr.update(visible=False)   # end_pattern_message
        ]

def find_start_pattern(mht_content, pattern, occurrence):
    if not pattern:
        return "시작 패턴을 입력해주세요.", None
    matches = list(re.finditer(re.escape(pattern), mht_content))
    if matches:
        total_occurrences = len(matches)
        try:
            index = int(occurrence) - 1
            if index >= 0 and index < total_occurrences:
                match = matches[index]
                start = max(0, match.start() - 50)
                end = min(len(mht_content), match.end() + 50)
                context = mht_content[start:end]
                message = f"시작 패턴의 전체 발생 횟수: {total_occurrences}\n선택된 발생번호 주변 텍스트:\n{context}"
                return message, str(total_occurrences)
            else:
                return "올바르지 않은 발생 번호입니다.", str(total_occurrences)
        except ValueError:
            return "발생 번호는 숫자여야 합니다.", str(len(matches))
    else:
        return "시작 패턴을 MHT 내용에서 찾을 수 없습니다.", "0"

def find_end_pattern(mht_content, pattern, occurrence):
    if not pattern:
        return "종료 패턴을 입력해주세요.", None
    matches = list(re.finditer(re.escape(pattern), mht_content))
    if matches:
        total_occurrences = len(matches)
        try:
            index = int(occurrence) - 1
            if index >= 0 and index < total_occurrences:
                match = matches[index]
                start = max(0, match.start() - 50)
                end = min(len(mht_content), match.end() + 50)
                context = mht_content[start:end]
                message = f"종료 패턴의 전체 발생 횟수: {total_occurrences}\n선택된 발생번호 주변 텍스트:\n{context}"
                return message, str(total_occurrences)
            else:
                return "올바르지 않은 발생 번호입니다.", str(total_occurrences)
        except ValueError:
            return "발생 번호는 숫자여야 합니다.", str(len(matches))
    else:
        return "종료 패턴을 MHT 내용에서 찾을 수 없습니다.", "0"

with gr.Blocks() as block:
    gr.Markdown("""
    <h4>이 앱은 기본적으로는 MHT 내용에서 추출할 HTML 태그 패턴을 선택할 수 있도록 도와줍니다.</h4>
    <p>기본 패턴이 아닌 다른 것을 원한다면(— 다른 문서도 가능할 수 있음), 'Custom'을 선택하고 시작 및 종료 패턴을 직접 입력할 수 있습니다.</p>
    <p>HTML 태그와 포함된 내용 등이 복잡한 경우, 정확한 추출을 위해 고유하고 구별되는 시작 및 종료 패턴을 제공해야 합니다.</p>
    """)
    
    mht_input = gr.Textbox(label="MHT 내용을 여기에 붙여넣기", lines=20, placeholder="MHT 파일의 내용을 여기에 붙여넣으세요")
    
    choice_dropdown = gr.Dropdown(
        label="HTML 시작 태그 선택", 
        choices=["<!DOCTYPE html><html", "<!DOCTYPE html><html lang=","Custom"], 
        value="<!DOCTYPE html><html"
    )

    # 구분선 추가
    gr.Markdown("<hr>")
    
    # 시작 패턴 파트
    gr.Markdown("<strong>시작 패턴 파트</strong>")
    
    # 사용자 지정 시작 및 종료 패턴 입력 창과 추가 컴포넌트들
    start_pattern_input = gr.Textbox(label="사용자 지정 시작 패턴", visible=False)
    start_occurrence_input = gr.Textbox(label="시작 패턴 발생 번호", value="1", visible=False)
    start_find_button = gr.Button("찾아보기", visible=False)
    start_pattern_message = gr.Textbox(label="시작 패턴 찾기 결과", interactive=False, visible=False)

    # 종료 패턴 파트
    gr.Markdown("<strong>종료 패턴 파트</strong>")
    
    end_pattern_input = gr.Textbox(label="사용자 지정 종료 패턴", visible=False)
    end_occurrence_input = gr.Textbox(label="종료 패턴 발생 번호", value="1", visible=False)
    end_find_button = gr.Button("찾아보기", visible=False)
    end_pattern_message = gr.Textbox(label="종료 패턴 찾기 결과", interactive=False, visible=False)

    # 추출 패턴 결정
    gr.Markdown("<strong>추출 패턴 결정</strong>")
    
    occurrence_input = gr.Textbox(label="추출할 발생 번호 입력 (숫자): 같은 것이 여럿 있을 때 ?번째", value="1")
    
    convert_button = gr.Button("MHT에서 HTML 추출")
    error_output = gr.Textbox(label="에러 메시지", interactive=False)
    download_output = gr.File(label="HTML 파일 다운로드")

    # 사용자의 선택에 따라 사용자 지정 패턴 필드의 가시성 업데이트
    choice_dropdown.change(
        fn=update_pattern_fields, 
        inputs=choice_dropdown, 
        outputs=[
            start_pattern_input, 
            end_pattern_input, 
            start_occurrence_input,
            end_occurrence_input,
            start_find_button,
            end_find_button,
            start_pattern_message,
            end_pattern_message
        ]
    )

    # 시작 패턴 찾기 버튼 클릭 이벤트 정의
    start_find_button.click(
        fn=find_start_pattern,
        inputs=[mht_input, start_pattern_input, start_occurrence_input],
        outputs=[start_pattern_message, start_occurrence_input]
    )

    # 종료 패턴 찾기 버튼 클릭 이벤트 정의
    end_find_button.click(
        fn=find_end_pattern,
        inputs=[mht_input, end_pattern_input, end_occurrence_input],
        outputs=[end_pattern_message, end_occurrence_input]
    )

    # 구분선 추가
    gr.Markdown("<hr>")

    # 버튼 클릭 이벤트 정의
    convert_button.click(
        fn=extract_html_from_mht, 
        inputs=[mht_input, choice_dropdown, start_pattern_input, end_pattern_input, occurrence_input], 
        outputs=[error_output, download_output]
    )

block.launch()