@import url('modern-master.css');

/* -- 컬러 팔레트 (현대적인 다크 테마로 동기화) -- */
:root {
    --background-color: #030303;
    --background-color2: #050505;
    --background-color3: #0a0a0a;

    --aurora-blue: var(--m-blue);
    --aurora-pink: var(--m-pink);

    --neumo-shadow-dark: rgba(0, 0, 0, 0.5);
    --neumo-shadow-light: rgba(255, 255, 255, 0.05);
    --primary-blue: var(--m-blue);
    --primary-blue-dark: #18116a;

    --text-color-dark: #ffffff;
    --text-color-light: var(--m-dim);
    --border-radius-main: var(--radius-xl);
    --transition-speed: 0.3s ease;

    --glass-bg: rgba(0, 0, 0, 0.65);
    --glass-border: rgba(255, 255, 255, 0.15);
    --glass-blur: 20px;

    --shadow-elev-1: var(--shadow-liquid-out);
    --shadow-neumo-out: var(--shadow-liquid-out);
}

.glass-card,
.card,
.recommendation-app .card,
.recommendation-app .field-option-box,
.recommendation-app .media-option-box,
.recommendation-app .budget-option-box {
    background-color: var(--glass-bg);
    backdrop-filter: blur(var(--glass-blur));
    -webkit-backdrop-filter: blur(var(--glass-blur));
    border: 1px solid var(--glass-border);
    box-shadow: var(--shadow-elev-1);
    color: var(--m-white);
}

/* 고정(또는 반고정) 레이아웃의 글라스 공통 베이스 */
.glass-fixed,
.recommendation-app .result-area-wrapper {
    background-color: rgba(0, 0, 0, 0.8);
    backdrop-filter: blur(var(--glass-blur));
    border-top: 1px solid var(--glass-border);
}


.background-animation {
    position: fixed;
    top: 0;
    left: 0;
    width: 100vw;
    height: 100vh;
    z-index: -1;
    overflow: hidden;
    pointer-events: none
}

.circle {
    position: absolute;
    /* ▼▼▼ [수정] mix-blend-mode 추가로 색상 혼합을 자연스럽게 ▼▼▼ */
    mix-blend-mode: screen;
    /* screen 또는 overlay 추천 */
    border-radius: 100%;
    /* 기본값 */
    filter: blur(var(--aurora-blur));
    opacity: 0.9;
    will-change: transform;
}

.circle.blue {
    width: 80vmax;
    height: 60vmax;
    /* ▼▼▼ [수정] 그라데이션 범위를 50%로 줄여 가장자리를 더 부드럽게 ▼▼▼ */
    background: radial-gradient(circle, var(--aurora-blue) 0%, rgba(0, 34, 255, 0.001) 55%);
    /* ▼▼▼ [추가] 애니메이션에 border-radius 추가 ▼▼▼ */
    animation: aurora-blue-anim 20s ease-in-out infinite alternate;
}

.circle.pink {
    width: 60vmax;
    height: 80vmax;
    /* ▼▼▼ [수정] 그라데이션 범위를 50%로 줄여 가장자리를 더 부드럽게 ▼▼▼ */
    background: radial-gradient(circle, var(--aurora-pink) 0%, rgba(192, 0, 255, 0.001) 55%);
    /* ▼▼▼ [추가] 애니메이션에 border-radius 추가 ▼▼▼ */
    animation: aurora-pink-anim 4.5s ease-in-out infinite alternate;
    animation-delay: 20.5s;
}

@keyframes aurora-blue-anim {
    0% {
        transform: translate(5vw, -10vh) scale(1);
        border-radius: 40% 60% 70% 30% / 40% 50% 60% 50%;
    }

    33% {
        transform: translate(30vw, 30vh) scale(1.2);
        border-radius: 50% 50% 30% 70% / 60% 40% 80% 40%;
    }

    66% {
        transform: translate(-20vw, 70vh) scale(0.9);
        border-radius: 70% 30% 60% 40% / 50% 70% 40% 50%;
    }

    to {
        transform: translate(15vw, 5vh) scale(1.1);
        border-radius: 40% 60% 70% 30% / 40% 50% 60% 50%;
    }
}

@keyframes aurora-pink-anim {
    0% {
        transform: translate(90vw, 80vh) scale(1.1);
        border-radius: 60% 40% 80% 40% / 50% 50% 30% 70%;
    }

    33% {
        transform: translate(40vw, 10vh) scale(1);
        border-radius: 40% 60% 70% 30% / 40% 50% 60% 50%;
    }

    66% {
        transform: translate(70vw, 60vh) scale(1.3);
        border-radius: 50% 50% 30% 70% / 60% 40% 80% 40%;
    }

    to {
        transform: translate(85vw, 75vh) scale(1.1);
        border-radius: 60% 40% 80% 40% / 50% 50% 30% 70%;
    }
}

.main-title {
    font-size: 2.2em;
    font-weight: 700;
    text-align: center;
    margin-bottom: 20px;
    letter-spacing: .05em;
    color: #ffffff !important; /* 선명한 화이트로 통일 */
    background: none !important;
    -webkit-background-clip: unset !important;
    background-clip: unset !important;
    -webkit-text-fill-color: #ffffff !important;
    text-shadow: 0 2px 10px rgba(0, 0, 0, 0.9) !important; /* 단순하고 명확한 그림자 */
}

@keyframes shine-effect {
    0% {
        background-position: 200% center
    }

    to {
        background-position: -200% center
    }
}

/* --- ▼▼▼ 메인 페이지 스타일 (신규/수정) ▼▼▼ --- */
.home-content {
    width: 100%;
    max-width: 1200px; margin: 0 auto;
    display: flex;
    flex-direction: column;
    align-items: center;
    padding: 20px;
    box-sizing: border-box;
}

.typing-container {
    display: flex;
    align-items: baseline;
    justify-content: center;
    flex-wrap: wrap;
    min-height: 4.5em;
    font-size: 1.2em;
    color: var(--text-color-light);
    line-height: 1.6;
    margin-bottom: 40px
}

#typedText {
    border-right: 2px solid transparent
}

#typedText.typing {
    animation: none;
    border-right-color: var(--text-color-dark)
}

#typedText:not(.typing) {
    animation: blinkCursor .75s infinite step-end
}

@keyframes blinkCursor {

    0%,
    to {
        border-color: transparent
    }

    50% {
        border-color: var(--text-color-dark)
    }
}

.static-suffix {
    font-weight: 700;
    color: var(--m-blue); /* 블루 톤 유지 */
}

.intro-statement,
.marketing-highlight-statement {
    text-align: center
}

.intro-statement {
    font-size: 1.1em;
    font-weight: 500;
    color: var(--text-color-light);
    line-height: 1.6;
    margin: 30px 0 25px
}

.marketing-highlight-statement {
    font-size: 1.3em;
    font-weight: 700;
    color: #e0f2ff; /* 연한 블루 화이트 */
    line-height: 1.7;
    margin-bottom: 40px;
    padding: 30px 40px; /* 입체 박스에 맞게 여유 있는 패딩 */
    /* 블랙 배경용 네온 글로우 섀도우 */
    text-shadow: 0 0 15px rgba(255, 255, 255, 0.4), 0 2px 4px rgba(0, 0, 0, 0.9);
    /* 배경, 보더, 섀도우는 .neu-card 클래스에서 담당 */
}

.home-category-grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: 30px;
    margin-top: 60px;
    width: 100%;
}

@media (min-width: 768px) {
    .home-category-grid {
        grid-template-columns: repeat(2, 1fr);
    }
}

@media (min-width: 1200px) {
    .home-category-grid {
        grid-template-columns: repeat(4, 1fr);
    }
}

/* 1. 카테고리 섹션: neu-card 스타일을 기본으로 사용하도록 오버라이드 제거 */
.category-section {
    /* 배경, 보더, 섀도우는 modern-master.css의 .neu-card에서 담당함 */
    display: flex;
    flex-direction: column;
    gap: 15px;
    min-height: 450px;
    /* 애니메이션 속성: transform, filter, opacity를 부드럽게 전환 */
    transition: transform 0.4s cubic-bezier(0.2, 0.8, 0.2, 1),
        filter 0.4s ease,
        opacity 0.4s ease,
        min-height 0.6s cubic-bezier(0.2, 0.8, 0.2, 1);
    will-change: transform, filter, opacity;
    /* 브라우저 렌더링 최적화 */
}

/* 마우스 올렸을 때 커지는 박스 */
.category-section.hover-active {
    transform: scale(1.1);
    /* 1.3배는 너무 크므로 1.1배로 조정 */
    z-index: 10;
    opacity: 1;
    filter: none;
}

/* 마우스 올렸을 때 작아지는 다른 박스들 */
.category-section.hover-inactive {
    transform: scale(0.9);
    /* 0.8배는 너무 작으므로 0.9배로 조정 */
    opacity: 0.6;
    filter: blur(1px);
    /* 흐림 효과로 집중도 향상 */
}

.category-section.is-expanded-parent {
    min-height: 650px;
}

.category-title {
    font-size: 1.6em;
    font-weight: 700;
    color: var(--m-blue); /* 테마 컬러 블루 적용 */
    text-align: center;
    margin-bottom: 15px;
    /* 고대비 블루 글로우 섀도우 */
    text-shadow: 0 0 12px rgba(135, 206, 250, 0.6), 0 2px 3px rgba(0, 0, 0, 1);
}


/* 개별 링크 박스 스타일 (유리 조각 스타일로 고도화) */
.nav-button {
    text-decoration: none;
    color: var(--m-white); /* 텍스트 흰색으로 고정 */
    font-weight: 600;
    padding: 12px 20px;
    border-radius: 12px;
    background: rgba(255, 255, 255, 0.05);
    backdrop-filter: blur(10px);
    border: 1px solid rgba(255, 255, 255, 0.1);
    box-shadow: 0 4px 15px rgba(0, 0, 0, 0.3);
    /* 버튼 텍스트 가독성 향상 */
    text-shadow: 0 2px 4px rgba(0, 0, 0, 0.9);
    cursor: pointer;
    text-align: center;
    /* transform 속성은 유지하되, rotate나 translateZ는 제거 */
    transition: transform 0.4s cubic-bezier(0.2, 0.8, 0.2, 1),
        box-shadow 0.4s ease,
        height 0.6s cubic-bezier(0.2, 0.8, 0.2, 1);
    display: flex;
    align-items: center;
    justify-content: center;
    height: 50px;
    overflow: hidden;
    position: relative;
    /* 툴팁 공통 기준점 */
}


.nav-button:hover {
    transform: scale(1.1);
    /* 버튼 자체도 살짝 커지는 효과 */
    background-color: linear-gradient(to bottom right, var(--background-color2)50%, var(--background-color3));
    color: #8400ff;
    /* nav-button hover 효과와 중첩될 수 있으니 transform 등은 유지 */
    box-shadow: inset 10px 10px 15px var(#b8daff), -8px -8px 15px var(#000000);
}


.nav-button.expanded {
    transform: scale(1.1);
    width: 100%;
    /* 부모(.category-section) 너비에 꽉 차도록 명시 */

    height: auto;
    min-height: 200px;
    flex-direction: column;
    justify-content: flex-start;
    padding: 25px;
    background: rgba(255, 255, 255, 0.15);
    border: 1px solid rgba(255, 255, 255, 0.4);
}

/* 입력 그룹 간격 유지 */
.input-group {
    margin-bottom: 20px;
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.nav-button-icon,
.nav-button-text-content {
    opacity: 0;
    transition: opacity 0.4s ease-out;
}

.nav-button.expanded .nav-button-icon,
.nav-button.expanded .nav-button-text-content {
    opacity: 1;
}

.nav-button-icon {
    font-size: 2em;
    color: var(--primary-blue-dark);
    margin-bottom: 15px;
    display: block;
}

.nav-button-text-content {

    width: 100%;
}




.nav-button-description {
    font-size: 0.9em;
    color: var(--text-color-light);
    line-height: 1.5;
    white-space: normal;
    /* ??? [가장 중요] 자동 줄바꿈을 강제합니다! ??? */
    text-align: center;
    /* ? [추가] 여러 줄일 경우 보기 좋게 중앙 정렬합니다. */
    word-break: keep-all;
    /* ? [추가] 한글 단어가 잘리지 않게 합니다. */
    margin: 0;
}


.nav-button-title-expanded {
    font-size: 1.2em;
    font-weight: 700;
    margin-bottom: 8px;
    color: #fff;
}

.admin-only-button {
    background: rgba(90, 90, 90, 0.5) !important;
    border-color: rgba(255, 255, 255, 0.1) !important;
}

/* -- 기본 HTML/Body 스타일 (두 앱에 공통 적용) -- */
body {
    font-family: 'GmarketSans', sans-serif;
    /* 배경 이미지와 그라데이션 조합: 로고는 유지, 그라데이션은 원래 색상으로 복원 */
    background-image:
        url('images/majung-logo.png'),
        /* 로고 이미지 (유지) */

        linear-gradient(to bottom right, var(--background-color2)50%, var(--background-color3));
    /* 배경 그라데이션 원래 색상으로 복원 */
    /* 로고 위치: 우측 하단, 그라데이션 위치: 전체 (0 0) */
    /* 그 아래에 깔릴 메인 배경 이미지 */
    background-position:
        right bottom,
        0 0,
        0 0;
    /* 로고 크기: 화면 높이의 50% (너비 자동), 그라데이션 크기: 전체 */
    background-size:
        auto 90vh,
        /* 로고 크기: 높이 90vh, 너비 자동 (보통 이 순서로 사용합니다) */
        cover,
        /* 메인 배경: 화면 전체를 덮도록 cover로 설정하는 것이 일반적입니다. */
        100% 100%;
    background-repeat:
        no-repeat,
        no-repeat,
        no-repeat;
    /* 배경이 스크롤될 때 고정되도록 설정 */
    background-attachment:
        fixed,
        /* 1. 로고는 화면에 고정 */
        scroll,
        /* 2. bg2.jpg는 페이지 스크롤을 따라 움직임 */
        fixed;
    /* 3. 그라데이션은 화면에 고정 */

    display: flex;
    flex-direction: column;
    justify-content: flex-start;
    align-items: center;
    /* 컨텐츠 상단 정렬 및 자식 요소 100% 너비 확보 */
    min-height: 100vh;
    /* 최소 화면 높이 */
    margin: 0;
    padding: 0;
    /* padding은 각 앱의 래퍼에서 관리 */
    box-sizing: border-box;
    /* 패딩, 보더가 너비/높이에 포함되도록 */
    color: var(--text-color-dark);
    /* 기본 텍스트 색상 */
    padding-top: 70px;
    /* 고정 메뉴바 높이만큼 공간 확보 */
}

/* --- 상단 고정 메뉴바 스타일 (새로 추가) --- */
.global-header {
    background-color: var(--glass-bg);
    backdrop-filter: blur(var(--glass-blur));
    box-shadow: var(--shadow-elev-1-soft);
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    z-index: 2000;
    /* 다른 모든 콘텐츠 위에 오도록 */
    padding: 10px 20px;
    box-sizing: border-box;
    display: flex;
    justify-content: center;
    /* 네비게이션을 중앙에 정렬 */
    align-items: center;
}

.main-nav {
    display: flex;
    gap: 20px;
    max-width: 900px;
    /* 본문 내용과 유사하게 최대 너비 설정 */
    width: 100%;
    justify-content: flex-start;
    /* 링크들을 왼쪽에 정렬 */
    flex-wrap: wrap;
    /* NEW: 버튼들이 화면에 맞게 다음 줄로 넘어가도록 함 */
}

.nav-button {
    padding: 10px 20px;
    border-radius: 10px;
    text-decoration: none;
    color: var(--text-color-dark);
    font-weight: 700;
    background-color: var(--background-color);
    box-shadow: 5px 5px 10px var(--neumo-shadow-dark), -5px -5px 10px var(--neumo-shadow-light);
    /* 볼록한 디자인 */
    transition: all var(--transition-speed);
    white-space: nowrap;
    /* 버튼 텍스트 줄바꿈 방지 */
    flex-shrink: 1;
    /* NEW: 공간이 부족하면 버튼 너비를 줄일 수 있도록 함 */
    min-width: 0;
    /* NEW: 너무 작아지지 않도록 최소 너비를 0으로 설정하여 필요 시 최대한 줄어들도록 함 */
    margin: 5px;


}



.nav-button:active,
.nav-button.active {
    /* 'active' 클래스는 현재 페이지를 나타냄 */
    transform: translateY(1px);
    box-shadow: inset 5px 5px 10px var(--selected-neumo-shadow-dark), inset -5px -5px 10px var(--selected-neumo-shadow-light);
    background-color: var(--primary-blue-dark);
    color: white;
}

/* --- 메인 홈 페이지 스타일 (새로 추가) --- */
.home-content {
    text-align: center;
    padding: 40px 20px;
    max-width: 800px;
    width: 100%;
    margin: 50px auto 0;
    /* 메뉴바 아래로 내림 */
}

.home-content h1 {
    font-size: 3em;
    color: var(--primary-blue-dark);
    margin-bottom: 20px;
    letter-spacing: 0.05em;
}

.home-content p {
    font-size: 1.2em;
    color: var(--text-color-light);
    line-height: 1.6;
    margin-bottom: 40px;
}

.home-links {
    display: flex;
    flex-direction: column;
    gap: 20px;
    margin-top: 20px;
    justify-content: center;
    align-items: center;
}

.home-links .nav-button {
    width: 250px;
    text-align: center;
    font-size: 1.2em;
}


/* --- 1. 마케팅 매체 추천 계산기 스타일 (.recommendation-app 스코프) --- */
.recommendation-app {
    width: 100%;
    display: flex;
    flex-direction: column;
    align-items: center;
}

.recommendation-app .main-calculator-wrapper {
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    gap: 80px;
    width: 100%;
    max-width: 1400px;
    /* 전체 래퍼의 최대 너비 */
    padding: 20px;
    box-sizing: border-box;
    padding-bottom: var(--sticky-footer-height);
    /* 푸터 높이만큼 바닥 여백 추가 */
}

.recommendation-app .input-area-wrapper {
    flex: 1;
    min-width: 0;
    /* NEW: 부모가 축소될 때 이 영역도 유연하게 축소될 수 있도록 함 */
    max-width: 800px;
    /* 카드를 포함하는 래퍼의 최대 너비 */
    width: 100%;
}

.recommendation-app .result-area-wrapper {
    position: fixed;
    /* 화면 하단에 고정 */
    bottom: 0;
    left: 0;
    width: 100%;
    height: var(--sticky-footer-height);
    /* height로 고정하여 푸터 높이 관리 */
    padding: 20px 30px;
    /* 내부 여백 */
    border-radius: var(--border-radius-main);

    transition: opacity var(--transition-speed), transform var(--transition-speed), box-shadow var(--transition-speed);
    z-index: 1000;
    display: flex;
    flex-direction: column;
    /* 세로로 항목들 쌓음 */
    justify-content: space-between;
    /* 요소들 간 간격 분배 */
    align-items: center;
    /* 자식 result-content-container를 가운데 정렬 */
    padding: 0;
    /* 내부 result-content-container에서 패딩을 가짐 */
    box-sizing: border-box;
    transition: all var(--transition-speed);
}

.recommendation-app .result-content-container {
    /* 푸터 내 콘텐츠 영역 (최대 너비 800px 중앙 정렬) */
    width: 100%;
    max-width: 800px;
    margin: 0 auto;
    /* 중앙 정렬 */
    display: flex;
    flex-direction: column;
    /* 내부 요소는 세로로 쌓임 */
    justify-content: space-between;
    /* 내부 콘텐츠 (결과카드, 원형, 푸터액션) 사이 공간 분배 */
    align-items: center;
    /* 내부 콘텐츠 가운데 정렬 (result-summary-section, footer-actions-container를 가운데 정렬) */
    height: 100%;
    /* 부모 result-area-wrapper의 높이 상속 */
    box-sizing: border-box;
    /* 패딩이 너비에 포함되도록 */
    position: relative;
    /* PC에서 원형 그래프 absolute 배치의 기준 */
    padding: 5px 20px;
    /* 내부 상하좌우 여백 - 텍스트 겹침 방지를 위해 상하 여백 재조정 */
    min-height: 0;
    /* flex 자식이 줄어들 때 컨테이너 최소 높이가 없도록 */
}

.recommendation-app .result-summary-section {
    /* 결과 텍스트와 원형 그래프를 묶는 컨테이너 */
    width: 100%;
    display: flex;
    flex-direction: column;
    /* 모바일 기본: 세로 정렬 */
    justify-content: flex-start;
    align-items: flex-start;
    /* 자식 요소들을 왼쪽 정렬 (모바일에서는 원형 그래프가 자기 혼자 중앙정렬 됨) */
    flex-grow: 1;
    /* 남은 공간 차지 */
    box-sizing: border-box;
    min-height: 0;
    /* flex 자식이 줄어들 때 컨테이너 최소 높이가 없도록 */
}

.recommendation-app .result-card {
    background-color: rgba(255, 255, 255, 0.01);
    backdrop-filter: blur(var(--glass-blur));
    /* 블러 강도 최대로 */
    box-shadow: none;
    padding: 0;
    border-radius: 0;
    width: 100%;
    /* result-summary-section 내에서 100% */
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: flex-start;
    /* 텍스트는 좌측 정렬 */
    gap: 0px;
    /* 결과 항목들 간 간격은 result-item line-height 및 margin으로 제어 */
    margin: 0;
    text-align: left;
    flex-grow: 1;
    /* 남은 공간 차지 (상단에 위치) */
    min-height: 0;
    /* flex 컨테이너에서 내용이 넘치는 경우 축소를 허용 */
}

.recommendation-app .result-card h2 {
    display: none;
}

.recommendation-app .result-card .icon-wrapper {
    display: none;
}

.recommendation-app .result-item {
    font-size: 0.7em;
    /* 폰트 사이즈 조정 (가독성 유지하며 겹침 방지) */
    line-height: 1.15;
    /* 줄간격 조정 */
    margin-bottom: 0;
    /* 각 아이템의 기본 하단 마진 제거 */
    color: var(--text-color-light);
    font-weight: 500;
    white-space: nowrap;
    /* 텍스트 줄바꿈 방지 */
    min-height: 0;
    /* flex 자식이 줄어들 때 최소 높이 없도록 */
}

.recommendation-app .result-value {
    font-size: 0.8em;
    /* 폰트 사이즈 조정 */
    font-weight: 700;
    color: var(--text-color-dark);
    margin-left: 4px;
    /* 마진 조정 */
}

.recommendation-app .result-item.highlight-total {
    font-size: 1.0em;
    /* 총계 폰트 사이즈 조정 */
    line-height: 1.15;
    font-weight: 700;
    color: var(--primary-blue-dark);
    margin-top: 1px;
    /* 마진 조정 */
    margin-bottom: 1px;
    /* 마진 조정 */
}

.recommendation-app .result-item.highlight-total .result-value.red-text {
    font-size: 1.0em;
    color: var(--alert-red);
}

.recommendation-app .calculator-title {
    font-size: 2.2em;
    font-weight: 700;
    color: var(--text-color-dark);
    text-align: center;
    margin-bottom: 40px;
    letter-spacing: 0.05em;
}

.recommendation-app .hidden {
    display: none !important;
    opacity: 0;
    transform: translateY(20px);
    pointer-events: none;
    transition: opacity var(--transition-speed), transform var(--transition-speed);
}

.recommendation-app .card {
    position: relative;
    padding: 20px 30px;
    /* 내부 여백 */
    border-radius: var(--border-radius-main);

    transition: opacity var(--transition-speed), transform var(--transition-speed), box-shadow var(--transition-speed);
    transition: all var(--transition-speed);
    margin-bottom: 40px;
    /* 각 카드 하단 간격 */
    transition: opacity var(--transition-speed), transform var(--transition-speed), box-shadow var(--transition-speed);
    padding: 60px 30px 40px 30px;
    /* top, right, bottom, left */
    width: 100%;
    /* 카드 너비 */
    max-width: 800px;
    /* 카드의 최대 너비 (input-area-wrapper의 max-width와 동일하게 맞춤) */
    box-sizing: border-box;
    /* 패딩이 너비에 포함되도록 명시적으로 지정 (다른 요소와 충돌 방지) */
    min-width: 0;
    /* NEW: 카드가 내용보다 작아질 수 있도록 최소 너비를 0으로 설정 */

}


.recommendation-app .card:hover {
    transform: translateY(-2px);
    box-shadow:
        -10px -10px 20px var(--neumo-shadow-light),
        10px 10px 20px var(--neumo-shadow-dark);
}

/*
  [최적화]
  @keyframes shake-horizontal와 @keyframes mixture-shake-horizontal는 내용이 100% 동일하여
  shake-horizontal로 통합하고, mixture-app에서 이를 사용하도록 수정했습니다.
*/
@keyframes shake-horizontal {

    0%,
    100% {
        transform: translateX(0);
    }

    10%,
    30%,
    50%,
    70%,
    90% {
        transform: translateX(-3px);
    }

    20%,
    40%,
    60%,
    80% {
        transform: translateX(3px);
    }
}

.recommendation-app .card.shake-card {
    animation: shake-horizontal 0.4s ease-in-out forwards;
    transform-origin: center center;
    box-shadow:
        inset 0 0 10px rgba(255, 0, 0, 0.3),
        -7px -7px 10px var(--neumo-shadow-light),
        7px 7px 10px var(--neumo-shadow-dark);
}

/* "분야를 먼저 선택해주세요!" 메시지 스타일 */
.recommendation-app .please-select-message {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    background-color: var(--background-color);
    border-radius: 10px;
    padding: 15px 25px;
    font-size: 1.1em;
    font-weight: 700;
    color: var(--danger-red);
    /* 경고 색상 (빨간색 계열) */
    z-index: 100;
    /* 카드 내용 위로 오도록 */
    opacity: 0;
    /* 기본적으로 숨김 */
    pointer-events: none;
    /* 메시지가 아래 요소의 클릭을 방해하지 않도록 */
    transition: opacity 0.3s ease-in-out;
    white-space: normal;
    /* 텍스트 줄바꿈 가능하도록 수정 */
    max-width: calc(100% - 40px);
    /* 부모 카드 너비에 맞춰 줄바꿈되도록 여유 공간 확보 */
    text-align: center;
    box-shadow:
        -5px -5px 10px var(--neumo-shadow-light),
        5px 5px 10px var(--neumo-shadow-dark);
    backdrop-filter: blur(2px);
    /* 선택사항: 배경 흐림 효과 */
}

/* 흔들릴 때 메시지 보이게 하기 */
.recommendation-app .card.shake-card .please-select-message {
    opacity: 1;
}

/* 
  [최적화]
  .recommendation-app과 .mixture-app에서 사용된 card-initial-wrapper와 card-initial 클래스는
  내용이 100% 동일하여 아래와 같이 하나로 통합했습니다.
*/
.recommendation-app .card-initial-wrapper,
.mixture-app .card-initial-wrapper {
    position: absolute;
    top: -20px;
    left: 20px;
    z-index: 10;
}

.recommendation-app .card-initial,
.mixture-app .card-initial {
    font-size: 3.5em;
    font-weight: 700;
    line-height: 1;
    color: var(--primary-blue-dark);
    filter: drop-shadow(2px 2px 5px rgba(13, 0, 88, 0.3));
}


/* card-content의 상단 여백 제거 (padding-top이 역할을 대신) */
.recommendation-app .card-content {
    margin-top: 0;

}

/* h2 스타일 */
.recommendation-app .card h2 {
    font-size: 1.2em;
    font-weight: 500;
    color: var(--text-color-dark);
    margin-top: 10px;
    margin-bottom: 15px;
    padding-left: 5px;
}

/* ==================== 공통 아이콘 스타일 (스코프 확장) ==================== */
/* 아이콘 래퍼 */
.icon-wrapper {
    text-align: center;
    margin-bottom: 15px;
}

/* 특정 GIF 아이콘들의 기본 스타일 */
.good-gif,
.marketing-gif,
.work-gif,
.budget-gif,
.list1-gif,
.list2-gif,
.Success-gif {
    display: inline-block;
    width: 80px;
    height: 80px;
    object-fit: contain;
    margin-top: -5px;
    text-align: center;
}

/* 일반적인 아이콘 요소 스타일 (폰트어썸 등, GIF에는 직접적으로 큰 영향 없음) */
.icon {
    font-size: 2.5em;
    color: var(--text-color-light);
    opacity: 0.8;
}

/* ====================================================================== */

/* 옵션 컨테이너들 */
.recommendation-app .field-options-container,
.recommendation-app .media-options-container,
.recommendation-app .budget-options-container {
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
    justify-content: center;
    /* 기본 정렬 */
    gap: 10px;
    margin-top: 20px;
}

/* 예산 옵션 컨테이너는 모바일에서 2줄 정렬을 위해 space-around 사용 */
.recommendation-app .budget-options-container {
    justify-content: space-around;
}


/* 옵션 박스들 - flex 속성 수정 및 너비 재정의 */
.recommendation-app .field-option-box,
.recommendation-app .media-option-box,
.recommendation-app .budget-option-box {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 10px;
    border-radius: 15px;
    cursor: pointer;

    padding: 20px 30px;
    /* 내부 여백 */
    border-radius: var(--border-radius-main);

    transition: opacity var(--transition-speed), transform var(--transition-speed), box-shadow var(--transition-speed);
    flex-grow: 1;
    /* NEW: 공간이 남으면 채우고 */
    flex-shrink: 1;
    /* NEW: 공간이 부족하면 축소하도록 함 */
    flex-basis: calc(50% - 5px);
    /* NEW: 기본 2열 (총 10px의 gap을 고려한 calc) */
    max-width: 150px;
    /* 각 옵션 박스의 최대 너비 제한 */
    height: 90px;
    box-sizing: border-box;
    text-align: center;
    min-width: 0;
    /* NEW: 아이템 자체가 줄어들 수 있도록 최소 너비 0으로 설정 */
}

/* 매체 선택 옵션은 7개이므로 2열이 잘 작동하도록 width 명시 */
.recommendation-app .media-option-box {
    flex-basis: calc(50% - 5px);
}

/* 예산 선택 옵션은 4개이므로 2열이 잘 작동하도록 width 명시 */
.recommendation-app .budget-option-box {
    flex-basis: calc(50% - 5px);
}


.recommendation-app .field-option-box:hover:not(.selected-option),
.recommendation-app .media-option-box:hover:not(.selected-option),
.recommendation-app .budget-option-box:hover:not(.selected-option) {
    transform: translateY(1px);
    box-shadow:
        inset 3px 3px 6px var(--neumo-shadow-dark),
        inset -3px -3px 6px var(--neumo-shadow-light);
    background-color: var(--background-color);
}

.recommendation-app .field-option-box:active:not(.selected-option),
.recommendation-app .media-option-box:active:not(.selected-option),
.recommendation-app .budget-option-box:active:not(.selected-option) {
    transform: translateY(1px);
    box-shadow:
        inset 4px 4px 8px var(--neumo-shadow-dark),
        inset -4px -4px 8px var(--neumo-shadow-light);
    background-color: var(--background-color);
}

.recommendation-app .field-option-box.selected-option,
.recommendation-app .media-option-box.selected-option,
.recommendation-app .budget-option-box.selected-option {
    background-color: var(--primary-blue-dark);
    box-shadow:
        inset 5px 5px 10px var(--selected-neumo-shadow-dark),
        inset -5px -5px 10px var(--selected-neumo-shadow-light);
    transform: translateY(1px);
    color: white;
}

/* 개별 박스 내부 요소 스타일 조정 */
.recommendation-app .field-option-box span,
.recommendation-app .media-option-box span,
.recommendation-app .budget-option-box span {
    font-size: 1.0em;
    font-weight: 500;
    transition: color var(--transition-speed);
    color: var(--text-color-dark);
}

.recommendation-app .field-option-box.selected-option span,
.recommendation-app .media-option-box.selected-option span,
.recommendation-app .budget-option-box.selected-option span {
    color: white;
}

/* ==================== 추천 목록 레이아웃 ==================== */
.recommendation-app .recommendation-list {
    display: flex;
    flex-direction: column;
    /* 모바일: 기본 1열 정렬 */
    flex-wrap: wrap;
    /* NEW: 가로 정렬 시 필요 */
    justify-content: flex-start;
    /* 모바일은 왼쪽 정렬 */
    gap: 15px;
    margin-top: 25px;
    padding-left: 5px;
    padding-right: 5px;
    /* 모바일 화면 좌우 여백 확보 */
    box-sizing: border-box;
    /* 패딩이 너비 계산에 포함되도록 */
}

.recommendation-app .recommended-item {
    background-color: var(--background-color);
    border-radius: 15px;
    box-shadow:
        inset 4px 4px 8px var(--neumo-shadow-dark),
        inset -4px -4px 8px var(--neumo-shadow-light);
    padding: 15px 20px;
    transition: all var(--transition-speed);
    width: 100%;
    /* 모바일: 기본 전체 너비 */
    box-sizing: border-box;
    /* 중요: flex 아이템 너비 계산에 패딩/보더 포함 */
    min-width: 0;
    /* NEW: 항목 자체가 줄어들 수 있도록 최소 너비 0으로 설정 */
}

.recommendation-app .recommended-item:hover {
    box-shadow:
        inset 3px 3px 6px var(--neumo-shadow-dark),
        inset -3px -3px 6px var(--neumo-shadow-light);
    transform: scale(0.99);
}

.recommendation-app .recommended-item-title {
    font-size: 1.1em;
    font-weight: 700;
    color: var(--primary-blue-dark);
    margin-top: 0;
    margin-bottom: 8px;
    line-height: 1.3;
}

.recommendation-app .recommended-item-description {
    font-size: 0.9em;
    font-weight: 400;
    color: var(--text-color-dark);
    margin-top: 0;
    margin-bottom: 0;
    line-height: 1.5;
}

/* ==================== 진행 표시 (원형) ==================== */
/* 모바일 기본: result-summary-section의 흐름 내에서 중앙 정렬 (절대 위치 아님) */
.recommendation-app .circular-progress {
    position: static;
    margin: 1px auto 0;
    width: 30px;
    height: 30px;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    position: relative;
}

.recommendation-app .circular-chart {
    display: block;
    max-width: 100%;
    max-height: 100%;
}

.recommendation-app .circle-bg {
    stroke: var(--neumo-shadow-dark);
    stroke-width: 3.8;
    fill: none;
}

.recommendation-app .circle {
    stroke: var(--primary-blue-dark);
    stroke-width: 2.8;
    fill: none;
    transition: stroke-dasharray 0.7s ease-out;
    transform: rotate(-90deg);
    transform-origin: 50% 50%;
    filter: drop-shadow(0 0 2px rgba(0, 0, 0, 0.2));
}

.recommendation-app .step-count {
    position: absolute;
    /* 원 안으로 중앙 정렬하기 위한 속성 추가 */
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);

    font-weight: 700;
    font-size: 0.9em;
    color: var(--primary-blue-dark);
    filter: drop-shadow(0 0 2px rgba(0, 0, 0, 0.2));
}

/* ==================== 하단 액션 버튼들 및 컨테이너 ==================== */
.recommendation-app .footer-actions-container {
    width: 100%;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    gap: 2px;
    padding-top: 0;
    padding-bottom: 0;
    margin-top: auto;
    box-sizing: border-box;

}

.recommendation-app .disclaimer-text {
    width: 100%;
    text-align: center;
    font-size: 0.6em;
    line-height: 1.05;
    color: var(--text-color-light);
    font-style: italic;
    box-sizing: border-box;
    margin-bottom: 1px;
    padding: 0;
}

.recommendation-app .action-buttons {
    display: flex;
    gap: 4px;
    width: 100%;
    justify-content: center;
    box-sizing: border-box;
}

.recommendation-app .action-button {
    padding: 3px 8px;
    border-radius: 25px;
    background-color: var(--primary-blue-dark);
    box-shadow:
        inset 5px 5px 10px var(--selected-neumo-shadow-dark),
        inset -5px -5px 10px var(--selected-neumo-shadow-light);
    border: none;
    cursor: pointer;
    color: white;
    font-weight: 500;
    font-size: 0.65em;
    transition: all var(--transition-speed);
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 3px;
    white-space: nowrap;
    flex-grow: 1;
    max-width: var(--action-button-width);
    min-width: 0;
    /* NEW: 버튼도 필요하면 축소될 수 있도록 함 */
}

.recommendation-app .action-button:hover {
    box-shadow:
        inset 3px 3px 6px var(--selected-neumo-shadow-dark),
        inset -3px -3px 6px var(--selected-neumo-shadow-light);
    transform: translateY(1px);
}

.recommendation-app .action-button:active {
    box-shadow:
        inset 6px 6px 12px var(--selected-neumo-shadow-dark),
        inset -6px -6px 12px var(--selected-neumo-shadow-light);
    transform: translateY(2px);
}


/* ==================== 반응형 미디어 쿼리 (마케팅 계산기) ==================== */

@media (min-width: 480px) {

    /* NEW: 작은 스마트폰에서도 2열 배치 가능하도록 추가 */
    .recommendation-app .field-option-box,
    .recommendation-app .media-option-box,
    .recommendation-app .budget-option-box {
        flex-basis: calc(50% - 5px);
        /* 2열 유지 */
    }
}


@media (min-width: 600px) {
    .recommendation-app :root {
        --sticky-footer-height: 165px;
        --action-button-width: 150px;
    }

    .recommendation-app .calculator-title {
        font-size: 2.5em;
    }

    .recommendation-app .card-grid {
        gap: 30px;
    }

    .recommendation-app .card h2 {
        font-size: 1.3em;
    }

    .recommendation-app .card-initial {
        font-size: 4em;
    }


    /* 태블릿: 분야/매체는 3열, 예산은 2열 */
    .recommendation-app .field-options-container,
    .recommendation-app .media-options-container {
        gap: 20px;
    }

    .recommendation-app .field-option-box,
    .recommendation-app .media-option-box {
        flex-basis: calc(33.33% - 40px/3);
        /* 3열 배치 (20px gap 고려) */
        min-width: 100px;
        max-width: 160px;
        height: 100px;
    }

    /* 예산 선택 (4개) 태블릿: 2열 유지 */
    .recommendation-app .budget-options-container {
        gap: 20px;
        justify-content: space-around;
    }

    .recommendation-app .budget-option-box {
        flex-basis: calc(50% - 10px);
        /* 2열 유지 (20px gap 고려) */
        max-width: 200px;
        height: 100px;
    }


    .recommendation-app .field-option-box span,
    .recommendation-app .media-option-box span,
    .recommendation-app .budget-option-box span {
        font-size: 1.1em;
    }

    .recommendation-app .result-item {
        font-size: 0.85em;
        line-height: 1.25;
    }

    .recommendation-app .result-value {
        font-size: 0.95em;
    }

    .recommendation-app .result-item.highlight-total {
        font-size: 1.15em;
        line-height: 1.25;
    }

    .recommendation-app .result-item.highlight-total .result-value.red-text {
        font-size: 1.0em;
    }


    .recommendation-app .disclaimer-text {
        font-size: 0.75em;
        line-height: 1.2;
        text-align: center;
        margin-bottom: 0;
    }

    /* result-summary-section 태블릿부터는 가로 배열 */
    .recommendation-app .result-summary-section {
        flex-direction: row;
        justify-content: space-between;
        align-items: center;
        height: 60px;
        flex-shrink: 0;
        flex-grow: 0;
        width: 100%;
    }

    .recommendation-app .result-card {
        flex-grow: 1;
        padding-right: 10px;
        min-height: auto;
        height: 100%;
        justify-content: center;
        gap: 2px;
    }

    /* 원형 진행바 (태블릿 이상: result-summary-section 내에서 정적 위치) */
    .recommendation-app .circular-progress {
        position: static;
        margin: 0;
        flex-shrink: 0;
        width: 45px;
        height: 45px;
    }

    .recommendation-app .step-count {
        font-size: 1.3em;
    }

    /* 하단 푸터 액션 버튼 컨테이너 (태블릿 이상: 가로 배열) */
    .recommendation-app .footer-actions-container {
        flex-direction: row;
        justify-content: space-between;
        align-items: flex-end;
        padding-top: 10px;
        padding-bottom: 10px;
        gap: 15px;
    }

    .recommendation-app .action-buttons {
        width: auto;
        justify-content: flex-end;
    }

    .recommendation-app .action-button {
        flex-grow: 0;
        width: auto;
        padding: 8px 16px;
        font-size: 0.9em;
        gap: 6px;
    }

    /* 추천 목록 2열 정렬 */
    .recommendation-app .recommendation-list {
        flex-direction: row;
        /* 가로 정렬로 변경 */
        flex-wrap: wrap;
        /* 여러 줄로 감싸지도록 허용 */
        justify-content: space-between;
        /* 항목들 사이에 공간을 균등하게 분배 */
        gap: 20px;
        /* 항목 간의 가로/세로 간격 */
        padding-left: 0;
        /* 기존 왼쪽 패딩 제거하여 정확한 너비 계산 */
        padding-right: 0;
        /* 기존 오른쪽 패딩 제거하여 정확한 너비 계산 */
    }

    .recommendation-app .recommended-item {
        flex: 1 1 calc(50% - 10px);
        /* 50%에서 gap 절반(20px/2 = 10px)을 빼서 2열 배치 */
        max-width: calc(50% - 10px);
        /* 항목이 너무 커지지 않도록 최대 너비 제한 */
    }
}

@media (min-width: 992px) {
    .recommendation-app :root {
        --sticky-footer-height: 185px;
        --action-button-width: 160px;
    }

    .recommendation-app body {
        align-items: center;
    }

    .recommendation-app .main-calculator-wrapper {
        flex-direction: row;
        align-items: flex-start;
        justify-content: center;
        padding: 40px 20px;
        min-height: calc(100vh - 80px - var(--sticky-footer-height));
        padding-bottom: 40px;
        gap: 80px;
    }

    .recommendation-app .result-card {
        gap: 8px;
    }

    /* PC: 분야/매체는 3열, 예산은 4열 */
    .recommendation-app .field-options-container,
    .recommendation-app .media-options-container {
        gap: 30px;
    }

    .recommendation-app .field-option-box,
    .recommendation-app .media-option-box {
        flex-basis: 160px;
        /* PC에서는 고정 너비를 주고 flex-grow/shrink로 공간 조절 */
        height: 110px;
    }

    /* PC: 예산은 4열 정렬 */
    .recommendation-app .budget-options-container {
        gap: 30px;
        justify-content: center;
    }

    .recommendation-app .budget-option-box {
        flex-basis: calc(25% - 22.5px);
        /* 4열 (30px gap 고려) */
        max-width: 180px;
        height: 110px;
    }

    .recommendation-app .field-option-box span,
    .recommendation-app .media-option-box span,
    .recommendation-app .budget-option-box span {
        font-size: 1.2em;
    }


    .recommendation-app .calculator-title {
        font-size: 3em;
        margin-bottom: 50px;
    }

    .recommendation-app .card {
        padding: 80px 30px 50px 30px;
        margin-bottom: 60px;
    }

    .recommendation-app .card-initial {
        font-size: 4.5em;
    }

    .recommendation-app .disclaimer-text {
        font-size: 0.85em;
        line-height: 1.3;
    }

    /* 원형 진행바 (PC에서 절대 위치 - 이미지에 맞춤) */
    .recommendation-app .circular-progress {
        position: absolute;
        top: 15px;
        right: 20px;
        width: 50px;
        height: 50px;
        margin: 0;
    }

    .recommendation-app .step-count {
        font-size: 1.5em;
    }

    .recommendation-app .footer-actions-container {
        padding-bottom: 20px;
    }

    .recommendation-app .action-button {
        font-size: 1.0em;
    }

    /* PC에서도 추천 목록 2열 정렬 유지 */
    .recommendation-app .recommendation-list {
        gap: 30px;
        /* PC에서는 좀 더 넓은 간격 */
    }

    .recommendation-app .recommended-item {
        flex: 1 1 calc(50% - 15px);
        /* 50%에서 gap 절반(30px/2 = 15px)을 빼서 2열 유지 */
        max-width: calc(50% - 15px);
    }
}


/* --- 2. 키워드 조합기 스타일 (.mixture-app 스코프) --- */
.mixture-app {
    width: 100%;
    display: flex;
    flex-direction: column;
    align-items: center;
    padding: 20px;
    /* 메인 래퍼 패딩 */
}

/* -- 메인 컨테이너 래퍼 (모든 카드들을 수직으로 담음) -- */
.mixture-app .main-container-wrapper {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 40px;
    width: 100%;
    max-width: 800px;
    /* 추천기 카드 max-width에 맞춰 통일 */
    padding: 0;
    box-sizing: border-box;
}

/* 
  [최적화]
  .mixture-app .main-title와 .media-converter-app .main-title은 내용이 100% 동일하여
  아래와 같이 하나로 통합했습니다.
*/
.mixture-app .main-title,
.media-converter-app .main-title {
    font-size: 2.2em;
    font-weight: 700;
    color: var(--text-color-dark);
    text-align: center;
    margin-bottom: 20px;
    letter-spacing: 0.05em;
}


/* -- 카드 공통 스타일 (오목한 디자인) -- */
.mixture-app .card {
    position: relative;
    border-radius: var(--border-radius-main);
    background-color: rgba(255, 255, 255, 0.2);
    backdrop-filter: blur(5px);
    /* 블러 강도 최대로 */
    box-shadow:
        inset 7px 7px 10px var(--neumo-shadow-dark),
        inset -7px -7px 10px var(--neumo-shadow-light);
    transition: opacity var(--transition-speed), transform var(--transition-speed), box-shadow var(--transition-speed);
    padding: 60px 30px 40px 30px;
    box-sizing: border-box;
    width: 100%;
    max-width: 800px;
    /* 'A' 박스(카드) 폭 통일 */
    min-width: 0;
    /* NEW: 카드가 내용보다 작아질 수 있도록 최소 너비를 0으로 설정 */

    /* 페이지 로드 시 카드 등장 애니메이션 초기 상태 */
    opacity: 0;
    transform: translateY(20px);
}

/* 페이지 로드 시 카드 등장 애니메이션 최종 상태 */
.mixture-app .card.show {
    opacity: 1;
    transform: translateY(0);
}

.mixture-app .card:hover {
    transform: translateY(0);
    box-shadow:
        inset 4px 4px 8px var(--neumo-shadow-dark),
        inset -4px -4px 8px var(--neumo-shadow-light);
}

/* "흔들리는" 카드 경고 메시지 */
.mixture-app .card.shake-card {
    animation: shake-horizontal 0.4s ease-in-out forwards;
    /* 통합된 애니메이션 이름 사용 */
    transform-origin: center center;
    box-shadow:
        inset 0 0 10px rgba(255, 0, 0, 0.3),
        var(--shadow-neumo-in);
}

.mixture-app .please-select-message {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    background-color: rgba(229, 231, 243, 0.9);
    border-radius: 10px;
    padding: 15px 25px;
    font-size: 1.1em;
    font-weight: 700;
    color: var(--danger-red);
    z-index: 100;
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.3s ease-in-out;
    white-space: normal;
    /* 텍스트 줄바꿈 가능하도록 수정 */
    max-width: calc(100% - 40px);
    /* 부모 카드 너비에 맞춰 줄바꿈되도록 여유 공간 확보 */
    text-align: center;
    box-shadow: var(--shadow-elev-1-soft), -5px -5px 10px rgba(255, 255, 255, 0.5);
    backdrop-filter: blur(2px);
}

.mixture-app .card.shake-card .please-select-message {
    opacity: 1;
}

/* -- 카드 제목 A,B,C, Btn (볼록한 디자인) -- */
/* .card-initial-wrapper, .card-initial 은 상단 recommendation-app 부분에서 통합 정의됨 */

.mixture-app .card-content {
    margin-top: 0;
    padding-left: 0;
}

.mixture-app .card-content h2 {
    font-size: 1.2em;
    font-weight: 500;
    color: var(--text-color-dark);
    margin-top: 10px;
    margin-bottom: 15px;
    padding-left: 0;
}

.mixture-app .section-description {
    font-size: 0.9em;
    color: var(--text-color-light);
    margin-bottom: 20px;
    line-height: 1.4;
    text-align: left;
}

/* -- A 박스: 카테고리 입력 영역 (`#categoryInputsContainer`) -- */
.mixture-app .input-sections-container {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 20px;

    margin-bottom: 20px;
    border: none;
    border-radius: 10px;
    padding: 15px;
    background-color: var(--background-color);
    box-shadow: inset 2px 2px 5px var(--neumo-shadow-dark), inset -2px -2px 5px var(--neumo-shadow-light);
    min-width: 0;
    /* NEW: 컨테이너 자체도 축소될 수 있도록 */
}

.mixture-app .input-group {
    flex-grow: 1;
    /* NEW: 공간이 남으면 채우고 */
    flex-shrink: 1;
    /* NEW: 공간이 부족하면 축소하도록 함 */
    flex-basis: 100%;
    /* NEW: 기본은 1열로 시작 (작은 모바일 화면 대응) */
    /* min-width: 280px;  이전 문제의 원인이었던 고정 min-width 삭제됨 */
    display: flex;
    flex-direction: column;
    position: relative;
    box-sizing: border-box;
    margin-bottom: 0;
}

/* 단일 input-group이 있을 때 전체 너비를 사용하도록 */
.mixture-app .input-sections-container:has(> .input-group:only-child) .input-group {
    flex-basis: 100%;
}

.mixture-app .input-group label {
    font-weight: bold;
    margin-bottom: 8px;
    color: var(--text-color-dark);
    font-size: 0.9em;
}

.mixture-app .input-group textarea {
    width: 100%;
    padding: 10px;
    border: none;
    border-radius: 8px;
    font-size: 1rem;
    min-height: 100px;
    resize: vertical;
    transition: all var(--transition-speed);
    background-color: var(--background-color);
    box-shadow: inset 3px 3px 6px var(--neumo-shadow-dark), inset -3px -3px 6px var(--neumo-shadow-light);
    color: var(--text-color-dark);
    box-sizing: border-box;
    min-width: 0;
    /* NEW: 텍스트에어리어 자체도 축소될 수 있도록 함 */
}

.mixture-app .input-group textarea:focus {
    outline: none;
    box-shadow: inset 2px 2px 5px var(--selected-neumo-shadow-dark), inset -2px -2px 5px var(--selected-neumo-shadow-light),
        var(--focus-ring);
}

/* -- 카테고리 'X' 박스 (볼록한 디자인으로 강조) -- */
.mixture-app .remove-category-btn {
    position: absolute;
    top: 5px;
    right: 5px;
    background-color: var(--danger-bg);
    color: white;
    border: none;
    border-radius: 50%;
    width: 25px;
    height: 25px;
    font-size: 0.9rem;
    font-weight: bold;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    transition: background-color var(--transition-speed), box-shadow var(--transition-speed);
    z-index: 1;
    box-shadow: 3px 3px 8px rgba(0, 0, 0, 0.3), -3px -3px 8px rgba(255, 255, 255, 0.9);
}

.mixture-app .remove-category-btn:hover {
    background-color: var(--danger-bg-hover);
    box-shadow: 4px 4px 10px rgba(0, 0, 0, 0.4), -4px -4px 10px rgba(255, 255, 255, 1);
}

.mixture-app .remove-category-btn:disabled {
    background-color: var(--disabled-gray);
    cursor: not-allowed;
    box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.1), -1px -1px 2px rgba(255, 255, 255, 0.3);
    transform: none;
}

.mixture-app .category-actions {
    display: flex;
    justify-content: center;
    margin-top: 15px;
}

/* 키워드 조합기 일반 버튼 (.action-button) */
.mixture-app .action-button {
    padding: 15px 30px;
    font-size: 1.1em;
    font-weight: 700;
    border: none;
    border-radius: 25px;
    cursor: pointer;
    transition: all var(--transition-speed);
    background-color: var(--background-color);
    /* 기본 배경색: 흰색 (네오모피즘 베이스) */
    color: var(--text-color-dark);
    /* 기본 글자색: 남색 */
    box-shadow: 5px 5px 10px var(--neumo-shadow-dark), -5px -5px 10px var(--neumo-shadow-light);
    /* 볼록한 효과 */
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    flex-shrink: 0;
    white-space: nowrap;
    min-width: 0;
    /* NEW: 버튼도 필요하면 축소될 수 있도록 함 */
}

.mixture-app .action-button:hover {
    transform: translateY(1px);
    box-shadow: inset 3px 3px 6px var(--neumo-shadow-dark), inset -3px -3px 6px var(--neumo-shadow-light);
    /* 오목한 효과 */
    background-color: var(--background-color);
    /* 호버 시 배경색 유지 */
    color: var(--text-color-dark);
    /* 호버 시 글자색 유지 */
}

.mixture-app .action-button:active {
    transform: translateY(1px);
    /* nav-button:active와 동일하게 1px로 이동 거리 조정 */
    box-shadow: inset 5px 5px 10px var(--selected-neumo-shadow-dark), inset -5px -5px 10px var(--selected-neumo-shadow-light);
    /* 클릭 시 배경 색상에 맞는 인셋 효과 */
    background-color: var(--primary-blue-dark);
    /* 클릭 시 배경색 남색으로 변경 */
    color: white;
    /* 클릭 시 글자색 흰색으로 변경 */
}

.mixture-app .action-button:disabled {
    background-color: var(--background-color);
    color: var(--text-color-light);
    box-shadow: inset 2px 2px 5px var(--neumo-shadow-dark), inset -2px -2px 5px var(--neumo-shadow-light);
    transform: none;
    cursor: not-allowed;
}


/* -- B 박스: 조합 순서 선택 영역 (`#orderCheckboxesContainer`) -- */
.mixture-app .order-checkboxes-grid {
    display: flex;
    flex-direction: column;
    gap: 15px;

    max-height: 250px;
    overflow-y: auto;
    padding: 15px;
    border: none;
    border-radius: 10px;
    background-color: var(--background-color);
    box-shadow: inset 2px 2px 5px var(--neumo-shadow-dark), inset -2px -2px 5px var(--neumo-shadow-light);
    min-width: 0;
    /* NEW: 컨테이너 자체도 축소될 수 있도록 */
}

/* 새로운 그룹 제목 (예: "1개 조합") */
.mixture-app .order-group-heading {
    font-size: 1.1em;
    font-weight: 700;
    color: var(--primary-blue-dark);
    text-align: left;
    margin-top: 0;
    margin-bottom: 0;
    flex-shrink: 0;
    padding-left: 5px;
}

/* 첫 번째 그룹 제목의 위쪽 여백은 필요 없음 */
.mixture-app .order-group-heading:first-of-type {
    margin-top: 0;
}

/* 각 조합 갯수별 체크박스를 담는 내부 그리드 컨테이너 */
.mixture-app .order-checkbox-group-inner-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(100px, 1fr));
    /* minmax로 최소 100px을 유지하되 가용 공간에 맞게 줄 바꿈 */
    gap: 8px;
    flex-shrink: 0;
}

.mixture-app .order-checkbox-item {
    display: flex;
    align-items: center;
    gap: 5px;
    font-size: 0.9em;
    background-color: var(--background-color);
    border: none;
    border-radius: 15px;
    cursor: pointer;
    transition: all var(--transition-speed);
    color: var(--text-color-dark);
    padding: 10px;
    box-shadow: inset 3px 3px 6px var(--neumo-shadow-dark), inset -3px -3px 6px var(--neumo-shadow-light);
    flex-grow: 0;
    /* 고정 크기 항목은 flex-grow를 0으로 유지 */
    flex-shrink: 1;
    /* NEW: 필요한 경우 축소되도록 허용 */
    min-width: 0;
    /* NEW: 항목 자체가 줄어들 수 있도록 최소 너비 0으로 설정 */
    text-wrap: nowrap;
    /* 체크박스 텍스트가 줄바꿈되는 것을 방지 (넘치는 텍스트에는 flex-shrink 적용) */
    min-height: 40px;
    /* 적당한 높이 확보 (예: 두 줄 글자를 위한) */
    align-content: center;
    /* NEW: 내용이 한줄로 잘 들어가지 않을 때 수직 정렬 */
}

.mixture-app .order-checkbox-item:hover {
    transform: translateY(0);
    box-shadow: inset 2px 2px 5px var(--neumo-shadow-dark), inset -2px -2px 5px var(--neumo-shadow-light);
}

.mixture-app .order-checkbox-item input[type="checkbox"] {
    display: none;
}

.mixture-app .order-checkbox-item label {
    cursor: pointer;
    position: relative;
    padding-left: 25px;
    font-weight: 500;
    min-width: 0;
    flex-grow: 1;
}

.mixture-app .order-checkbox-item label::before {
    content: '';
    position: absolute;
    left: 0;
    top: 50%;
    transform: translateY(-50%);
    width: 16px;
    height: 16px;
    border-radius: 4px;
    background-color: var(--background-color);
    box-shadow: inset 2px 2px 4px var(--neumo-shadow-dark), inset -2px -2px 4px var(--neumo-shadow-light);
    transition: all var(--transition-speed);
}

.mixture-app .order-checkbox-item input[type="checkbox"]:checked+label::before {
    background-color: var(--primary-blue-dark);
    box-shadow: inset 2px 2px 4px var(--selected-neumo-shadow-dark), inset -2px -2px 4px var(--selected-neumo-shadow-light);
}

.mixture-app .order-checkbox-item input[type="checkbox"]:checked+label::after {
    content: '\2713';
    position: absolute;
    left: 3px;
    top: 50%;
    transform: translateY(-50%);
    font-size: 14px;
    color: white;
}

.mixture-app .checkbox-controls {
    margin-top: 15px;
    display: flex;
    justify-content: center;
    gap: 10px;
}

/* 키워드 조합기 작은 버튼 (.action-button-small) */
.mixture-app .action-button-small {
    padding: 8px 15px;
    font-size: 0.9rem;
    border: none;
    border-radius: 8px;
    cursor: pointer;
    transition: all var(--transition-speed);
    background-color: var(--background-color);
    /* 기본 배경색: 흰색 (네오모피즘 베이스) */
    color: var(--text-color-dark);
    /* 기본 글자색: 남색 */
    box-shadow: 5px 5px 10px var(--neumo-shadow-dark), -5px -5px 10px var(--neumo-shadow-light);
    /* 볼록한 효과 */
    white-space: nowrap;
    flex-shrink: 1;
    /* NEW: 공간이 부족하면 버튼 너비를 줄일 수 있도록 함 */
    min-width: 0;
    /* NEW: 버튼도 필요하면 축소될 수 있도록 함 */
}

.mixture-app .action-button-small:hover {
    transform: translateY(1px);
    box-shadow: inset 3px 3px 6px var(--neumo-shadow-dark), inset -3px -3px 6px var(--neumo-shadow-light);
    /* 오목한 효과 */
    background-color: var(--background-color);
    /* 호버 시 배경색 유지 */
    color: var(--text-color-dark);
    /* 호버 시 글자색 유지 */
}

.mixture-app .action-button-small:active {
    transform: translateY(1px);
    /* nav-button:active와 동일하게 1px로 이동 거리 조정 */
    box-shadow: inset 4px 4px 8px var(--selected-neumo-shadow-dark), inset -4px -4px 8px var(--selected-neumo-shadow-light);
    /* 클릭 시 배경 색상에 맞는 인셋 효과 */
    background-color: var(--primary-blue-dark);
    /* 클릭 시 배경색 남색으로 변경 */
    color: white;
    /* 클릭 시 글자색 흰색으로 변경 */
}

.mixture-app .action-button-small:disabled {
    background-color: var(--background-color);
    color: var(--text-color-light);
    box-shadow: inset 1px 1px 3px var(--neumo-shadow-dark), inset -1px -1px 3px var(--neumo-shadow-light);
    transform: none;
    cursor: not-allowed;
}



/* -- 버튼 박스 (`.main-controls-card`) -- */
.mixture-app .main-controls-card {
    padding: 30px;
}

.mixture-app .main-controls-card .card-content {
    text-align: center;
}

.mixture-app .main-controls-buttons-container {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 15px;
    width: 100%;
}


/* -- C 박스: 결과 표시 영역 (`.results-display-card`) -- */
.mixture-app .results-output-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
    gap: 10px;
    max-height: 400px;
    overflow-y: auto;
    padding: 15px;
    background-color: var(--background-color);
    border: none;
    border-radius: 10px;
    box-shadow: inset 2px 2px 5px var(--neumo-shadow-dark), inset -2px -2px 5px var(--neumo-shadow-light);
    min-width: 0;
    /* NEW: 컨테이너 자체도 축소될 수 있도록 */
}

.mixture-app .results-output-grid p {
    background-color: var(--background-color);
    border: none;
    padding: 10px 15px;
    border-radius: 10px;
    font-size: 0.95em;
    word-break: break-all;
    margin: 0;
    box-shadow: inset 2px 2px 5px var(--neumo-shadow-dark), inset -2px -2px 5px var(--neumo-shadow-light);
    transition: all var(--transition-speed);
    color: var(--text-color-dark);
    min-width: 0;
    /* NEW: p 태그 내용이 길어져도 축소될 수 있도록 함 */
}

.mixture-app .results-output-grid p:hover {
    transform: translateY(0);
    box-shadow: inset 1px 1px 3px var(--neumo-shadow-dark), inset -1px -1px 3px var(--neumo-shadow-light);
}

.mixture-app .no-results {
    text-align: center;
    color: var(--text-color-light);
    font-style: italic;
    padding: 20px;
    grid-column: 1 / -1;
    box-shadow: none;
}


/* --- 3. 재고 생성기 스타일 (.inventory-app 스코프) --- */
.inventory-app .results-output-list {
    display: flex;
    flex-direction: column;
    gap: 5px;
    max-height: 400px;
    overflow-y: auto;
    padding: 15px;
    background-color: var(--background-color);
    border: none;
    border-radius: 10px;
    box-shadow: inset 2px 2px 5px var(--neumo-shadow-dark), inset -2px -2px 5px var(--neumo-shadow-light);
    min-height: 150px;
    text-align: left;
}

.inventory-app .results-output-list p {
    margin: 0;
    padding: 2px 5px;
    font-size: 0.9em;
    word-break: break-all;
    border-radius: 4px;
    transition: background-color 0.2s;
}

.inventory-app .results-output-list p:hover {
    background-color: rgba(0, 123, 255, 0.1);
}

.inventory-app .results-output-list .no-results {
    text-align: center;
    color: var(--text-color-light);
    font-style: italic;
    padding: 20px;
    box-shadow: none;
    align-self: center;
    margin: auto;
}


/* -- 반응형 웹 디자인 (키워드 조합기) -- */
/* 작은 스마트폰 (예: 480px) 이상에서는 2열 배치 가능하도록 카테고리 입력창 조정 */
@media (min-width: 480px) {
    .mixture-app .input-group {
        flex-basis: calc(50% - 10px);
        /* 2열 배치 (20px gap 고려) */
    }
}

@media (min-width: 600px) {
    .mixture-app .main-title {
        font-size: 2.5em;
    }

    .mixture-app .card h2 {
        font-size: 1.3em;
    }

    .mixture-app .card-initial {
        font-size: 4em;
    }

    .mixture-app .card {
        padding: 80px 40px 50px 40px;
    }

    .mixture-app .input-sections-container {
        gap: 30px;
        padding: 20px;
    }

    /* 태블릿 크기부터는 카테고리 입력창 2열 레이아웃 유지 */
    .mixture-app .input-group {
        flex-basis: calc(50% - 15px);
        /* 2열 (30px gap 고려) */
    }

    .mixture-app .action-button {
        padding: 12px 25px;
        font-size: 1.1em;
    }

    .mixture-app .action-button-small {
        padding: 10px 18px;
        font-size: 1.0em;
    }

    .mixture-app .results-output-grid {
        grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
    }
}

.inspector-app .input-container {
    display: flex;
    flex-direction: column;
    gap: 15px;
    align-items: center;
    margin-bottom: 25px;
}

.inspector-app .input-container input[type="url"] {
    width: 100%;
    padding: 12px 15px;
    border: none;
    border-radius: 8px;
    font-size: 1rem;
    transition: all var(--transition-speed);
    background-color: var(--background-color);
    box-shadow: inset 3px 3px 6px var(--neumo-shadow-dark), inset -3px -3px 6px var(--neumo-shadow-light);
    color: var(--text-color-dark);
    box-sizing: border-box;
}

.inspector-app .input-container input[type="url"]:focus {
    outline: none;
    box-shadow: inset 2px 2px 5px var(--selected-neumo-shadow-dark), inset -2px -2px 5px var(--selected-neumo-shadow-light),
        0 0 0 3px rgba(0, 123, 255, 0.25);
}

.inspector-app .platform-checkboxes-container {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 10px;
    width: 100%;
    margin-bottom: 20px;
}

.inspector-app .platform-checkbox-item input[type="checkbox"] {
    display: none;
}

.inspector-app .platform-checkbox-item label {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 12px;
    border-radius: 12px;
    background-color: var(--background-color);
    box-shadow: 5px 5px 10px var(--neumo-shadow-dark), -5px -5px 10px var(--neumo-shadow-light);
    cursor: pointer;
    transition: all var(--transition-speed);
    font-weight: 500;
}

.inspector-app .platform-checkbox-item label:hover {
    transform: translateY(-2px);
}

.inspector-app .platform-checkbox-item input[type="checkbox"]:checked+label {
    background-color: var(--primary-blue-dark);
    color: white;
    box-shadow: inset 5px 5px 10px var(--selected-neumo-shadow-dark), inset -5px -5px 10px var(--selected-neumo-shadow-light);
    transform: translateY(1px);
}

.inspector-app .platform-checkbox-item label img {
    width: 24px;
    height: 24px;
}

.inspector-app .status-message {
    padding: 20px;
    border-radius: 8px;
    background-color: var(--background-color);
    box-shadow: inset 2px 2px 5px var(--neumo-shadow-dark), inset -2px -2px 5px var(--neumo-shadow-light);
    font-style: italic;
    text-align: center;
    font-weight: 500;
}

.inspector-app .status-message.error {
    color: var(--danger-red);
    font-weight: 700;
}

.inspector-app .status-message.loading::after {
    content: '...';
    animation: dots 1.4s infinite;
    display: inline-block;
}

@keyframes dots {

    0%,
    20% {
        content: '.';
    }

    40% {
        content: '..';
    }

    60%,
    100% {
        content: '...';
    }
}


/* 결과 블록 스타일 */
#resultContainer {
    display: flex;
    flex-direction: column;
    gap: 20px;
}

.result-block {
    border-radius: 15px;
    background-color: var(--background-color);
    box-shadow: 7px 7px 10px var(--neumo-shadow-dark), -7px -7px 10px var(--neumo-shadow-light);
    overflow: hidden;
    transition: all var(--transition-speed);
}

.result-header {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 15px 20px;
    cursor: pointer;
    user-select: none;
    transition: background-color var(--transition-speed);
}

.result-block.found .result-header:hover {
    background-color: var(--border-light);
}

.result-header img {
    width: 32px;
    height: 32px;
}

.result-header h3 {
    margin: 0;
    font-size: 1.2em;
    flex-grow: 1;
}

.result-header .status-found,
.result-header .status-not-found {
    font-weight: 700;
    padding: 5px 10px;
    border-radius: 20px;
    font-size: 0.9em;
}

.result-header .status-found {
    background-color: var(--success-green);
    color: white;
}

.result-header .status-not-found {
    background-color: var(--muted-gray);
    color: white;
}

.code-wrapper {
    max-height: 0;
    opacity: 0;
    overflow: hidden;
    transition: max-height 0.5s ease-in-out, opacity 0.5s ease-in-out, padding 0.5s ease-in-out;
    padding: 0 20px;
}

.result-block.expanded .code-wrapper {
    max-height: 1000px;
    /* 충분히 큰 값 */
    opacity: 1;
    padding: 0 20px 20px 20px;
}

.result-block.not-found .result-header {
    cursor: default;
}


.result-block pre {
    background-color: #2d2d2d;
    color: #f8f8f2;
    padding: 15px;
    border-radius: 8px;
    overflow-x: auto;
    text-align: left;
    box-shadow: inset 3px 3px 8px rgba(0, 0, 0, 0.4);
    margin-top: 0;
    margin-bottom: 10px;
}

.result-block code {
    font-family: 'Courier New', Courier, monospace;
    font-size: 0.85em;
    white-space: pre-wrap;
    word-break: break-all;
}

@media (min-width: 600px) {
    .inspector-app .platform-checkboxes-container {
        grid-template-columns: repeat(4, 1fr);
    }
}

/* style.css 파일의 analyzer-app 관련 스타일을 아래 코드로 대체 */

/* --- 5. 문장 분석기 스타일 (.analyzer-app 스코프) --- */
.analyzer-app .input-group.full-width {
    flex-basis: 100%;
}

.analyzer-app .input-group.half-width {
    flex-basis: 100%;
    /* 모바일에서는 100% */
}

.analyzer-app .input-card .card-content {
    display: flex;
    flex-wrap: wrap;
    gap: 20px;

}

.analyzer-app .input-group {
    flex-grow: 1;
}

.analyzer-app .input-group label {
    display: block;
    margin-bottom: 8px;
    font-weight: 700;
}

.analyzer-app .input-group textarea, 
.analyzer-app .input-group input[type="text"], 
.analyzer-app .input-group input[type="number"], 
.analyzer-app .input-group select {
    /* glass-input 스타일 적용 */
    width: 100%;
    padding: 12px 15px;
    border-radius: 12px;
    border: 1px solid rgba(255, 255, 255, 0.2);
    background: rgba(255, 255, 255, 0.05);
    backdrop-filter: blur(5px);
    color: var(--text-color-dark);
    font-size: 1rem;
    box-sizing: border-box;
    transition: all 0.3s ease;
}

.analyzer-app .input-group textarea:focus, 
.analyzer-app .input-group input[type="text"]:focus, 
.analyzer-app .input-group input[type="number"]:focus, 
.analyzer-app .input-group select:focus {
    outline: none;
    background: rgba(255, 255, 255, 0.1);
    border-color: var(--primary-blue-dark);
}

.analyzer-result-container {
    display: flex;
    flex-direction: column;
    gap: 25px;
}

.analyzer-result-container .result-item {
    padding: 20px;
    border-radius: 12px;
    background-color: var(--background-color);
    box-shadow: inset 3px 3px 6px var(--neumo-shadow-dark), inset -3px -3px 6px var(--neumo-shadow-light);
}

.analyzer-result-container .result-label {
    display: block;
    font-weight: 700;
    font-size: 1.1em;
    margin-bottom: 12px;
    color: var(--primary-blue-dark);
}

.analyzer-result-container .result-value {
    font-size: 1.1em;
    font-weight: 700;
    color: var(--success-green);
}

.analyzer-result-container .result-list {
    display: flex;
    flex-direction: column;
    gap: 10px;
    /* 간격 조정 */
}

.analyzer-result-container .result-list.scrollable {
    max-height: 300px;
    overflow-y: auto;
    padding-right: 10px;
}

.analyzer-result-container .result-list .placeholder {
    font-style: italic;
    color: var(--text-color-light);
    text-align: center;
    padding: 10px 0;
}

/* 글자수 결과 아이템 */
.char-count-item {
    font-size: 1.1em;
    font-weight: 500;
    margin: 0;
}

/* 띄어쓰기/붙여쓰기 결과 아이템 */
.phrase-count-item {
    font-size: 1.1em;
    margin: 0;
}

.phrase-count-item .phrase-emphasis {
    font-weight: bold;
    color: var(--text-color-dark);
}

.phrase-count-item .count-value {
    font-weight: 700;
    color: var(--success-green);
}

.phrase-count-item .count-value.not-found {
    color: var(--muted-gray);
    /* 회색으로 표시 */
    font-style: italic;
}

/* 상위 단어 아이템 */
.top-word-item {
    background: var(--chip-bg);
    padding: 8px 12px;
    border-radius: 8px;
    font-size: 1.1em;
    margin: 0;
}

.top-word-item .top-word {
    font-weight: 700;
    color: var(--text-color-dark);
}

.top-word-item .top-word-count {
    font-weight: 700;
    color: var(--alert-red);
}

/* 전체 빈도수 목록 아이템 */
.frequency-item {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 6px 10px;
    border-bottom: 1px solid var(--border-light);
    margin: 0;
    font-size: 1em;
}

.frequency-item:last-child {
    border-bottom: none;
}

.frequency-item .freq-word {
    font-weight: 500;
    color: var(--text-color-dark);
    word-break: break-all;
    margin-right: 10px;
}

.frequency-item .freq-count {
    font-weight: 700;
    color: var(--primary-blue-dark);
    white-space: nowrap;
}

/* 결과 헤더 (필터 입력창 포함) */
.result-header-flex {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 12px;
}

.filter-input {
    padding: 6px 10px;
    border-radius: 6px;
    border: none;
    background-color: var(--chip-bg);
    box-shadow: inset 2px 2px 4px var(--neumo-shadow-dark), inset -2px -2px 4px var(--neumo-shadow-light);
    width: 120px;
}

@media (min-width: 600px) {
    .analyzer-app .input-group.half-width {
        flex-basis: calc(50% - 10px);
    }
}



/* --- 6. 마케팅 퍼널 시각화 스타일 (.funnel-app 스코프) --- */
.funnel-app {
    width: 100%;
    display: flex;
    flex-direction: column;
    align-items: center;
    padding: 20px;
}

.funnel-app .intro-text {
    font-size: 1.1em;
    color: var(--text-color-dark);
    margin-bottom: 40px;
    line-height: 1.6;
    text-align: center;
    max-width: 700px;
    font-weight: 500;
}


.funnel-stages-container {
    display: flex;
    flex-direction: column;
    /* 세로 정렬 */
    align-items: center;
    gap: 20px;
    /* 카드와 커넥터 간의 간격 */
    width: 100%;
    max-width: 700px;
    /* 전체 컨테이너 최대 너비 */
}

.funnel-app .funnel-stage-card {
    /* 기존 .card 및 .mixture-app .card 스타일을 상속 */
    /* .card, .mixture-app .card의 padding 및 box-shadow를 재정의 */
    padding: 25px 25px 25px 25px;
    /* 모든 패딩을 일관성 있게 조절 */
    margin-bottom: 0;
    /* 퍼널 흐름상 각 카드 사이 마진 불필요 */
    cursor: pointer;
    overflow: hidden;
    /* 확장 시 콘텐츠가 넘치지 않도록 */
}

.funnel-app .funnel-stage-card .card-initial-wrapper {
    /* 카드 이니셜 위치는 유지하되, 컨텐츠와의 정렬 조정 */
    top: 5px;
    /* 초기 'A','B'보다 약간 아래로 조절 */
    left: 20px;
}

.funnel-app .funnel-stage-card .card-initial {
    font-size: 2.8em;
    /* 카드 번호 크기 약간 줄임 */
    color: var(--primary-blue-dark);
}

.funnel-app .funnel-stage-card .card-content {
    display: flex;
    flex-direction: column;
    margin-top: 15px;
    /* 이니셜 '1', '2' 등과의 간격 조정 */
}

.funnel-app .funnel-stage-card .stage-header {
    display: flex;
    align-items: center;
    gap: 15px;
    width: 100%;
}

.funnel-app .funnel-stage-card .icon-wrapper {
    /* 퍼널 카드 헤더 아이콘 */
    flex-shrink: 0;
    margin-bottom: 0;
}

.funnel-app .funnel-stage-card .icon-wrapper img {
    width: 40px;
    /* 아이콘 크기 조절 */
    height: 40px;
    margin-top: 0;
}

.funnel-app .funnel-stage-card .stage-title {
    flex-grow: 1;
    font-size: 1.3em;
    font-weight: 700;
    color: var(--text-color-dark);
    margin: 0;
    /* h2의 기본 마진 제거 */
    white-space: nowrap;
    /* 제목 줄바꿈 방지 */
}

.funnel-app .funnel-stage-card .stage-summary-text {
    font-size: 0.9em;
    color: var(--text-color-light);
    margin: 0;
    /* p태그의 기본 마진 제거 */
    flex-basis: 100%;
    /* 다음 줄로 넘어가도록 */
    padding-left: 55px;
    /* 아이콘 및 제목에 맞춰 들여쓰기 */
    margin-top: 5px;
    /* 요약 텍스트와 제목 간격 */
    white-space: normal;
    /* 요약 텍스트 줄바꿈 허용 */
}


.funnel-app .funnel-stage-card .expand-icon {
    font-size: 1.2em;
    color: var(--text-color-light);
    transition: transform 0.3s ease;
    flex-shrink: 0;
    margin-left: 10px;
}

.funnel-app .funnel-stage-card.expanded .expand-icon {
    transform: rotate(180deg);
}

/* 상세 내용 영역 */
.funnel-app .funnel-stage-card .stage-details-content {
    max-height: 0;
    overflow: hidden;
    transition: max-height 0.5s ease-out, opacity 0.4s ease-out;
    /* max-height, opacity 애니메이션 */
    opacity: 0;
    /* 초기 숨김 상태 */
    padding-top: 0;
    /* 기본적으로 숨김 */
}

.funnel-app .funnel-stage-card.expanded .stage-details-content {
    opacity: 1;
    max-height: 1000px;
    /* 충분히 큰 값으로 설정하여 내용 전체가 보이도록 */
    padding-top: 20px;
    /* 확장 시 상단 여백 추가 */
}

.funnel-app .funnel-stage-card .stage-details-description p {
    font-size: 0.95em;
    line-height: 1.6;
    color: var(--text-color-dark);
    margin-bottom: 10px;
    text-align: left;
    /* 텍스트 정렬 */
}

.funnel-app .funnel-stage-card .stage-details-description p:last-child {
    margin-bottom: 0;
}

.funnel-app .funnel-stage-card .stage-details-description b {
    color: var(--primary-blue-dark);
    font-weight: 700;
}

.funnel-app .funnel-stage-card .stage-details-description p.outcome {
    color: var(--success-green);
    /* 성과 강조 */
    font-weight: 600;
}

/* 퍼널 커넥터 (단계 사이 화살표) */
.funnel-connector {
    color: var(--text-color-light);
    font-size: 2.5em;
    /* 화살표 크기 */
    text-align: center;
    margin: 0;
    /* 위아래 카드와의 간격 조절 */
    height: 30px;
    /* 화살표 높이 확보 */
    display: flex;
    align-items: center;
    justify-content: center;
    opacity: 0;
    /* 초기 숨김 */
    transform: translateY(-20px);
    /* 애니메이션을 위한 초기 위치 */
    transition: opacity 0.4s ease, transform 0.4s ease;
}

/* 로드 시 애니메이션 */
.funnel-app .funnel-stage-card.hidden {
    opacity: 0;
    transform: translateY(20px);
}

.funnel-app .funnel-stage-card.show {
    opacity: 1;
    transform: translateY(0);
    transition: opacity 0.5s ease-out, transform 0.5s ease-out;
}


/* --- 반응형 웹 디자인 (.funnel-app) --- */
@media (min-width: 600px) {
    .funnel-app .main-title {
        font-size: 2.5em;
    }

    .funnel-app .funnel-stage-card {
        padding: 30px 40px 30px 40px;
    }

    .funnel-app .funnel-stage-card .card-initial {
        font-size: 3.2em;
    }

    .funnel-app .funnel-stage-card .icon-wrapper img {
        width: 50px;
        height: 50px;
    }

    .funnel-app .funnel-stage-card .stage-title {
        font-size: 1.5em;
    }

    .funnel-app .funnel-stage-card .stage-summary-text {
        padding-left: 65px;
        font-size: 1.0em;
    }

    .funnel-app .funnel-stage-card .stage-details-description p {
        font-size: 1.0em;
    }

    .funnel-connector {
        font-size: 3.5em;
        height: 40px;
    }

    .funnel-app .intro-text {
        font-size: 1.2em;
    }

    /* 태블릿/PC에서 stage-header 아이콘과 텍스트가 더 유연하게 정렬되도록 */
    .funnel-app .funnel-stage-card .stage-header {
        flex-wrap: wrap;
        /* 제목과 요약 텍스트가 줄바꿈되도록 */
    }

    .funnel-app .funnel-stage-card .stage-title {
        flex-basis: auto;
        /* 줄바꿈되었을 때 필요한 공간만큼만 차지 */
        flex-grow: 1;
        /* 여전히 확장 가능 */
    }

    .funnel-app .funnel-stage-card .expand-icon {
        margin-left: auto;
        /* 아이콘을 오른쪽 끝으로 */
    }

}

@media (min-width: 992px) {
    .funnel-app .main-title {
        font-size: 3em;
        margin-bottom: 50px;
    }

    .funnel-app .intro-text {
        font-size: 1.3em;
    }

    .funnel-stages-container {
        gap: 30px;
        /* PC에서는 간격 더 넓게 */
        max-width: 800px;
        /* 전체 컨테이너 너비 늘림 */
    }

    .funnel-app .funnel-stage-card {
        padding: 40px 50px 40px 50px;
        /* PC 패딩 더 크게 */
    }

    .funnel-app .funnel-stage-card .card-initial {
        font-size: 3.5em;
    }

    .funnel-app .funnel-stage-card .icon-wrapper img {
        width: 60px;
        height: 60px;
    }

    .funnel-app .funnel-stage-card .stage-title {
        font-size: 1.6em;
    }

    .funnel-app .funnel-stage-card .stage-summary-text {
        padding-left: 75px;
        font-size: 1.1em;
    }

    .funnel-app .funnel-stage-card .stage-details-description p {
        font-size: 1.05em;
    }

    .funnel-connector {
        font-size: 4em;
        height: 50px;
    }

}


/* --- 타이핑 효과를 위한 스타일 추가 --- */
.home-content .typing-container {
    display: flex;
    /* 또는 inline-flex */
    align-items: baseline;
    /* 커서가 텍스트 베이스라인에 맞춰지도록 */
    justify-content: center;
    flex-wrap: wrap;
    /* 공간이 부족하면 텍스트와 접미사가 줄바꿈되도록 */
    gap: 0px;
    /* 텍스트와 접미사 사이에 직접적인 간격 없음 */
    min-height: 4.5em;
    /* 대략 3줄 텍스트가 들어갈 정도의 최소 높이 확보 */
    font-size: 1.2em;
    /* home-content p의 폰트 사이즈 유지 */
    color: var(--text-color-light);
    /* home-content p의 텍스트 색상 유지 */
    line-height: 1.6;
    /* home-content p의 줄 간격 유지 */
    margin-bottom: 40px;
    /* 기존 home-content p의 하단 마진 유지 */
}

#typedText {
    /* 초기 투명한 보더 (커서 자리) */
    border-right: 2px solid transparent;
    transition: border-color 0.2s ease-in-out;
    /* 부드러운 전환을 위해 추가 */
}

/* .typing 클래스 (스크립트에서 타이핑/지우기 중일 때 적용) */
#typedText.typing {
    animation: none;
    /* 타이핑 중에는 기본 blinkCursor 애니메이션 끔 */
    border-right-color: var(--text-color-dark);
    /* 타이핑 중에는 커서 보이게 */
}

/* 타이핑이 끝났거나 시작 전일 때의 커서 애니메이션 */
#typedText:not(.typing) {
    animation: blinkCursor 0.75s infinite step-end;
}

@keyframes blinkCursor {

    from,
    to {
        border-color: transparent;
    }

    50% {
        border-color: var(--text-color-dark);
    }
}

.static-suffix {
    font-weight: 700;
    /* 어디없나? 강조 */
    color: var(--primary-blue-dark);
    /* 홈 H1과 같은 색상으로 일관성 */
}

/* --- 타이핑 효과를 위한 스타일 끝 --- */

/* --- NEW: 홈 페이지 인트로 문구 스타일 개선 --- */
.home-content .intro-statement {
    font-size: 1.1em;
    /* 기존보다 약간 작거나 동일, 차분한 느낌 */
    font-weight: 500;
    /* Medium 폰트 두께 */
    color: var(--text-color-light);
    /* 기존 밝은 회색 유지 */
    line-height: 1.6;
    margin-top: 30px;
    /* 타이핑 효과와의 간격 확보 */
    margin-bottom: 25px;
    /* 강조 문구와의 간격 확보 */
    text-align: center;
    /* 중앙 정렬 유지 */
}

.home-content .marketing-highlight-statement {
    font-size: 1.3em;
    /* 눈에 띄게 큰 글씨 */
    font-weight: 700;
    /* Bold 폰트 두께로 강조 */
    color: var(--primary-blue-dark);
    /* 메인 강조 색상 (남색) */
    line-height: 1.7;
    margin-top: 25px;
    /* 인트로 문구와의 간격 확보 */
    margin-bottom: 40px;
    /* 하단 링크와의 간격 확보 */
    padding: 20px 30px;
    /* 내부 여백 */
    border-radius: var(--border-radius-main);
    background-color: rgba(255, 255, 255, 0.2);
    backdrop-filter: blur(5px);
    /* 블러 강도 최대로 */
    box-shadow:
        7px 7px 10px var(--neumo-shadow-dark),
        -7px -7px 10px var(--neumo-shadow-light);
    transition: opacity var(--transition-speed), transform var(--transition-speed), box-shadow var(--transition-speed);
    text-align: center;
    /* 중앙 정렬 유지 */
    transition: all var(--transition-speed);
    /* 부드러운 전환 효과 */
}

/* 호버 효과 (선택 사항) */
.home-content .marketing-highlight-statement:hover {
    transform: translateY(0);
    /* 움직임 없음 */
    box-shadow:
        inset 3px 3px 6px var(--neumo-shadow-dark),
        /* 호버 시 그림자 살짝 변경 */
        inset -3px -3px 6px var(--neumo-shadow-light);
}





/* --- 7. 지역 선택기 스타일 (.location-selector-app 스코프) --- */
/* mixture-app 클래스를 함께 사용하므로, .location-selector-app 고유 스타일만 정의 */
.location-selector-app .section-description {
    margin-bottom: 25px;
    /* 설명 텍스트 하단 간격 조정 */
    text-align: center;
    /* 설명 텍스트 가운데 정렬 */
}

.mobile-break {
    display: none;
    /* 기본적으로는 숨김 */
}

@media (max-width: 600px) {

    /* 모바일 화면에서만 보이기 */
    .mobile-break {
        display: block;
    }
}

/* 박스 간 마진 (수정됨: B박스도 마진 가지도록) */
.location-selector-app .card {
    margin-bottom: 40px;
}


/* 지역 목록 컨테이너 (그리드 -> 플렉스 변경) */
.location-selector-app .regions-grid {
    display: flex;
    /* flexbox 사용 */
    flex-wrap: wrap;
    /* 내용이 넘치면 다음 줄로 */
    justify-content: center;
    /* 가운데 정렬 */
    align-items: center;
    /* 항목 높이를 통일 (가장 높은 항목에 맞춤) */
    gap: 10px;
    /* 항목 간 간격 */
    margin-bottom: 0;
    padding: 15px;
    background-color: var(--background-color);
    box-shadow: inset 2px 2px 5px var(--neumo-shadow-dark), inset -2px -2px 5px var(--neumo-shadow-light);
    border-radius: 10px;
    min-width: 0;
    max-height: 450px;
    /* 스크롤바가 생길 수 있도록 최대 높이 설정 */
    overflow-y: auto;
    /* 내용이 넘치면 세로 스크롤바 생성 */
    padding-right: 5px;
    /* 스크롤바 고려하여 패딩 조정 */
}

/* === 개별 지역 항목 (모든 박스에 공통 적용) === */
.location-selector-app .region-item {
    display: flex;
    align-items: center;
    /* 가로 중앙 정렬 */
    justify-content: center;
    /* 세로 중앙 정렬 */
    padding: 8px 10px;
    /* 패딩 조정 */
    border-radius: 15px;
    cursor: pointer;
    background-color: var(--background-color);
    box-shadow:
        5px 5px 10px var(--neumo-shadow-dark),
        -5px -5px 10px var(--neumo-shadow-light);
    /* 볼록한 디자인 */
    transition: all var(--transition-speed);
    color: var(--text-color-dark);
    font-weight: 500;
    text-align: center;

    flex-grow: 1;
    flex-shrink: 1;
    flex-basis: calc(20% - 8px);
    /* 5열 기준 (10px gap 가정) */
    min-height: 60px;
    /* 최소 높이 설정 (텍스트가 두 줄 되어도 박스 밖으로 안 나가도록) */
    max-width: 140px;
    /* PC에서도 너무 커지지 않게 제한 */
    word-break: break-word;
    /* 긴 단어 강제 줄바꿈 */
    white-space: normal;
    /* 줄바꿈 허용 */
    font-size: 0.95em;
    /* 기본 폰트 크기 설정 */
    box-sizing: border-box;
    /* 패딩이 너비/높이에 포함되도록 */
}

/* 각 타입별 텍스트 스타일 */
.location-selector-app .primary-region-item {
    font-weight: 700;
    font-size: 1.05em;
    /* 시/도는 조금 더 크게 */
    color: var(--primary-blue-dark);
}

.location-selector-app .city_gu-region-item {
    font-size: 1.0em;
    font-weight: 600;
    color: var(--text-color-dark);
}

/* 호버/액티브 효과 */
.location-selector-app .region-item:hover:not(.selected) {
    transform: translateY(1px);
    box-shadow:
        inset 3px 3px 6px var(--neumo-shadow-dark),
        inset -3px -3px 6px var(--neumo-shadow-light);
    background-color: var(--background-color);
}

.location-selector-app .region-item:active:not(.selected) {
    transform: translateY(1px);
    box-shadow:
        inset 4px 4px 8px var(--neumo-shadow-dark),
        inset -4px -4px 8px var(--neumo-shadow-light);
    background-color: var(--background-color);
}

/* --- 선택된 상태 스타일 (finalSelectedRegions에 있는 경우) --- */
.location-selector-app .region-item.selected {
    /* 완벽하게 모든 하위 동까지 선택된 경우 */
    box-shadow: inset 5px 5px 10px var(--selected-neumo-shadow-dark), inset -5px -5px 10px var(--selected-neumo-shadow-light);
    background-color: var(--primary-blue-dark);
    /* 배경색 진한 파랑 */
    color: white;
    /* 텍스트 흰색 */
    transform: translateY(1px);
}

.location-selector-app .region-item.partially-selected {
    /* 일부만 선택된 경우 */

    box-shadow: 0px 0px 8px rgba(76, 79, 255, 0.4);
    /* 은은한 파란색 외부 그림자 추가 */
    background-color: #f0f2fb;
    /* 약간 밝은 배경 */
    color: var(--primary-blue-dark);
    /* 강조 파랑색 */
}

/* 선택된 지역 출력 그리드 (C 박스 아래) - 변경 없음 */
.location-selector-app .selected-regions-output-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(100px, 1fr));
    gap: 10px;
    max-height: 250px;
    overflow-y: auto;
    padding: 15px;
    background-color: var(--background-color);
    box-shadow: inset 2px 2px 5px var(--neumo-shadow-dark), inset -2px -2px 5px var(--neumo-shadow-light);
    border-radius: 10px;
    min-width: 0;
}

.location-selector-app .selected-regions-output-grid p {
    background-color: var(--background-color);
    padding: 8px 12px;
    border-radius: 8px;
    font-size: 0.9em;
    word-break: break-all;
    margin: 0;
    box-shadow: inset 2px 2px 5px var(--neumo-shadow-dark), inset -2px -2px 5px var(--neumo-shadow-light);
    color: var(--text-color-dark);
    text-align: center;
}

.location-selector-app .selected-regions-output-grid p:hover {
    transform: translateY(0);
    box-shadow: inset 1px 1px 3px var(--neumo-shadow-dark), inset -1px -1px 3px var(--neumo-shadow-light);
}

.location-selector-app .selected-regions-output-grid .no-results {
    grid-column: 1 / -1;
}


/* 반응형 웹 디자인 */
@media (min-width: 480px) {
    .location-selector-app .region-item {
        flex-basis: calc(20% - 8px);
        max-width: 140px;
        font-size: 1.0em;
        min-height: 65px;
    }

    .location-selector-app .primary-region-item {
        font-size: 1.1em;
    }

    .location-selector-app .city_gu-region-item {
        font-size: 1.05em;
    }

    .location-selector-app .selected-regions-output-grid {
        grid-template-columns: repeat(auto-fill, minmax(110px, 1fr));
        font-size: 0.95em;
    }

    .location-selector-app .regions-grid {
        max-height: 500px;
        gap: 10px;
    }
}

@media (min-width: 600px) {
    .location-selector-app .region-item {
        flex-basis: calc(20% - 12px);
        max-width: 160px;
        font-size: 1.05em;
        min-height: 75px;
    }

    .location-selector-app .primary-region-item {
        font-size: 1.15em;
    }

    .location-selector-app .city_gu-region-item {
        font-size: 1.1em;
    }

    .location-selector-app .selected-regions-output-grid {
        grid-template-columns: repeat(auto-fill, minmax(130px, 1fr));
        font-size: 1.0em;
    }

    .location-selector-app .regions-grid {
        gap: 15px;
        max-height: 550px;
    }
}

@media (min-width: 992px) {
    .location-selector-app .region-item {
        flex-basis: calc(16.66% - 16.66px);
        /* 6열 */
        max-width: 170px;
        font-size: 1.1em;
        min-height: 85px;
    }

    .location-selector-app .primary-region-item {
        font-size: 1.25em;
    }

    .location-selector-app .city_gu-region-item {
        font-size: 1.15em;
    }

    .location-selector-app .selected-regions-output-grid {
        grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
        font-size: 1.05em;
    }

    .location-selector-app .regions-grid {
        gap: 20px;
        max-height: 600px;
    }
}

/* --- New: A 박스 활성화된 시/도 강조 스타일 --- */
.location-selector-app .region-item.active-primary-selection {
    box-shadow: inset 4px 4px 8px var(--selected-neumo-shadow-dark), inset -4px -4px 8px var(--selected-neumo-shadow-light);
    background-color: var(--primary-blue-dark);
    /* 강조 배경색 */
    color: white !important;
    /* 텍스트 색상 */
    border: 2px solid var(--primary-blue-dark);
    /* 진한 테두리 */
}

.location-selector-app .region-item.active-primary-selection:hover {
    transform: translateY(1px);
    /* 액티브 시 동일 */
}

/* A박스 선택 아이템 내 active-primary-selection이 finalSelectedRegions의 active와 겹칠 경우 처리 */
.location-selector-app .region-item.active-primary-selection.selected {
    box-shadow: inset 6px 6px 12px var(--selected-neumo-shadow-dark), inset -6px -6px 12px var(--selected-neumo-shadow-light);
    border-color: white;
    /* 완전히 선택되었을 때는 테두리 흰색 */
}

/* B 박스 버튼 숨김 처리 (기존 .hidden 클래스와 동일 기능) */
.main-controls-buttons-container .hidden {
    display: none !important;
}

/* ... 기존 style.css 내용 ... */

/* --- 8. 글쓰기 프롬프트 생성기 스타일 (.prompt-generator-app 스코프) --- */
/* .mixture-app 스타일을 대부분 재활용하므로, 특화된 부분만 추가하거나 수정합니다. */

/*
  [최적화]
  여러 프롬프트 생성기 앱의 .input-sections-container 스타일이 동일하여
  아래와 같이 하나로 통합했습니다.
*/
.prompt-generator-app .input-sections-container,
.youtube-prompt-app .input-sections-container,
.reverse-scenario-prompt-app .input-sections-container {
    display: flex;
    flex-direction: column;
    /* 입력 필드를 세로로 쌓음 */
    gap: 20px;
    /* 각 입력 그룹 간 간격 */
    margin-bottom: 20px;
    /* 카테고리 추가 버튼 영역과의 간격 */
}

/*
  [최적화]
  여러 프롬프트 생성기 앱의 .input-group label 스타일이 동일하여
  아래와 같이 하나로 통합했습니다.
*/
.prompt-generator-app .input-group label,
.youtube-prompt-app .input-group label,
.reverse-scenario-prompt-app .input-group label,
.naver-blog-prompt-app .input-group label {
    display: block;
    /* 레이블이 input 위에 오도록 */
    margin-bottom: 8px;
    font-weight: 700;
    color: var(--text-color-dark);
}


.prompt-generator-app .input-group input[type="text"] {
    width: 100%;
    padding: 12px 15px;
    border-radius: 8px;
    border: none;
    font-size: 1rem;
    background-color: var(--background-color);
    box-shadow: inset 3px 3px 6px var(--neumo-shadow-dark), inset -3px -3px 6px var(--neumo-shadow-light);
    color: var(--text-color-dark);
    box-sizing: border-box;
}

.prompt-generator-app .input-group input[type="text"]:focus {
    outline: none;
    box-shadow: inset 2px 2px 5px var(--selected-neumo-shadow-dark), inset -2px -2px 5px var(--selected-neumo-shadow-light),
        0 0 0 3px rgba(0, 123, 255, 0.25);
}

/*
  [최적화]
  모든 프롬프트 생성기 앱의 결과 출력창(textarea) 스타일이 동일하여
  아래와 같이 하나의 그룹으로 통합했습니다.
*/
.prompt-generator-app .results-display-card textarea,
.youtube-prompt-app .results-display-card textarea,
.reverse-scenario-prompt-app .results-display-card textarea,
.naver-blog-prompt-app .results-display-card textarea,
.video-prompt-maker-app .results-display-card textarea#resultPrompt {
    width: 100%;
    padding: 15px;
    border-radius: 10px;
    border: none;
    font-size: 0.9em;
    /* 프롬프트 텍스트 크기 조절 */
    line-height: 1.5;
    /* 가독성 향상 */
    background-color: var(--background-color);
    box-shadow: inset 3px 3px 6px var(--neumo-shadow-dark), inset -3px -3px 6px var(--neumo-shadow-light);
    color: var(--text-color-dark);
    box-sizing: border-box;
    resize: vertical;
    /* 세로 크기 조절만 허용 */
    min-height: 200px;
    /* 최소 높이 */
    font-family: 'GmarketSans', sans-serif;
    /* 본문 폰트 적용 */
}

/*
  [최적화]
  모든 프롬프트 생성기 앱의 결과 출력창 포커스 스타일이 동일하여
  아래와 같이 하나의 그룹으로 통합했습니다.
*/
.prompt-generator-app .results-display-card textarea:focus,
.youtube-prompt-app .results-display-card textarea:focus,
.reverse-scenario-prompt-app .results-display-card textarea:focus,
.naver-blog-prompt-app .results-display-card textarea:focus,
.video-prompt-maker-app .results-display-card textarea#resultPrompt:focus {
    outline: none;
    box-shadow: inset 2px 2px 5px var(--selected-neumo-shadow-dark), inset -2px -2px 5px var(--selected-neumo-shadow-light),
        0 0 0 3px rgba(0, 123, 255, 0.25);
}

/* ... 기존 style.css 내용 ... */

/* --- 9. 유튜브 대본 프롬프트 생성기 스타일 (.youtube-prompt-app 스코프) --- */
/* .prompt-generator-app 및 .mixture-app 스타일을 대부분 재활용합니다. */

.youtube-prompt-app .input-sections-container {
    gap: 20px;
    /* 입력 그룹 간의 간격 증가 */
}

.youtube-prompt-app .input-group input[type="url"],
/* type="url"로 변경 */
.youtube-prompt-app .input-group textarea#textInputForYoutube {
    /* 새로운 textarea에 대한 ID 선택자 */
    width: 100%;
    padding: 12px 15px;
    border-radius: 8px;
    border: none;
    font-size: 1rem;
    background-color: var(--background-color);
    box-shadow: inset 3px 3px 6px var(--neumo-shadow-dark), inset -3px -3px 6px var(--neumo-shadow-light);
    color: var(--text-color-dark);
    box-sizing: border-box;
    font-family: 'GmarketSans', sans-serif;
    /* 다른 입력 필드와 폰트 통일 */
}

.youtube-prompt-app .input-group textarea#textInputForYoutube {
    resize: vertical;
    /* 세로 크기 조절만 허용 */
    min-height: 80px;
    /* 기본 최소 높이 (rows="5"에 맞춤) */
}


.youtube-prompt-app .input-group input[type="url"]:focus,
.youtube-prompt-app .input-group textarea#textInputForYoutube:focus {
    outline: none;
    box-shadow: inset 2px 2px 5px var(--selected-neumo-shadow-dark), inset -2px -2px 5px var(--selected-neumo-shadow-light),
        0 0 0 3px rgba(0, 123, 255, 0.25);
}

/* 결과 출력 textarea 스타일은 상단에서 통합 정의됨 */


/* --- 10. 반전 시나리오 프롬프트 생성기 스타일 (.reverse-scenario-prompt-app 스코프) --- */
/* .youtube-prompt-app, .prompt-generator-app, .mixture-app 스타일을 대부분 재활용합니다. */

.reverse-scenario-prompt-app .input-group input[type="text"] {
    /* 주제어 입력용 */
    width: 100%;
    padding: 12px 15px;
    border-radius: 8px;
    border: none;
    font-size: 1rem;
    background-color: var(--background-color);
    box-shadow: inset 3px 3px 6px var(--neumo-shadow-dark), inset -3px -3px 6px var(--neumo-shadow-light);
    color: var(--text-color-dark);
    box-sizing: border-box;
}

.reverse-scenario-prompt-app .input-group input[type="text"]:focus {
    outline: none;
    box-shadow: inset 2px 2px 5px var(--selected-neumo-shadow-dark), inset -2px -2px 5px var(--selected-neumo-shadow-light),
        0 0 0 3px rgba(0, 123, 255, 0.25);
}

/* 결과 출력 textarea 스타일은 상단에서 통합 정의됨 */


/* --- 11. 블로그 글쓰기 프롬프트 앱 스타일 (.naver-blog-prompt-app 스코프) --- */
/* .youtube-prompt-app, .prompt-generator-app, .mixture-app 스타일을 대부분 재활용합니다. */

.naver-blog-prompt-app .input-sections-container {
    display: flex;
    flex-direction: column;
    gap: 18px;
    /* 입력 그룹 간의 간격 약간 조정 */
    margin-bottom: 20px;
}

.naver-blog-prompt-app .input-group input[type="url"],
.naver-blog-prompt-app .input-group input[type="text"],
.naver-blog-prompt-app .input-group textarea {
    width: 100%;
    padding: 12px 15px;
    border-radius: 8px;
    border: none;
    font-size: 1rem;
    background-color: var(--background-color);
    box-shadow: inset 3px 3px 6px var(--neumo-shadow-dark), inset -3px -3px 6px var(--neumo-shadow-light);
    color: var(--text-color-dark);
    box-sizing: border-box;
    font-family: 'GmarketSans', sans-serif;
}

.naver-blog-prompt-app .input-group textarea#sourceTextInput {
    /* ID로 특정 textarea 지정 */
    resize: vertical;
    min-height: 80px;
}

.naver-blog-prompt-app .input-group input[type="url"]:focus,
.naver-blog-prompt-app .input-group input[type="text"]:focus,
.naver-blog-prompt-app .input-group textarea:focus {
    outline: none;
    box-shadow: inset 2px 2px 5px var(--selected-neumo-shadow-dark), inset -2px -2px 5px var(--selected-neumo-shadow-light),
        0 0 0 3px rgba(0, 123, 255, 0.25);
}

/* 결과 출력 textarea 스타일은 상단에서 통합 정의됨 */

/* --- 홈 페이지 카테고리 링크 그리드 (신규 추가) --- */
.home-category-grid {
    display: flex;
    flex-wrap: wrap;
    gap: 20px;
    /* 카테고리 섹션 간의 간격 (모바일 기준) */
    margin-top: 60px;
    /* 타이핑 효과 아래 문구와의 간격 */
    justify-content: center;
}

/*
  [최적화]
  .category-section이 두 부분으로 나뉘어 선언되어 있어 하나의 블록으로 병합했습니다.
  나중에 선언된 스타일 값을 우선으로 적용했습니다.
*/
.category-section {
    flex: 1 1 100%;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 15px;
    padding: 20px 30px;
    border-radius: var(--border-radius-main);
    background-color: rgba(255, 255, 255, 0.2);
    backdrop-filter: blur(5px);
    box-shadow: inset 7px 7px 10px var(--neumo-shadow-dark), inset -7px -7px 10px var(--neumo-shadow-light);
    transition: opacity var(--transition-speed), transform var(--transition-speed), box-shadow var(--transition-speed), filter 0.4s ease, min-height 0.6s cubic-bezier(0.2, 0.8, 0.2, 1);
    min-width: 260px;
    min-height: 320px;
    /* 데스크탑 기준 높이로 설정 */
    box-sizing: border-box;
    margin: 15px;
    will-change: transform, filter, opacity;
}

.category-title {
    font-size: 1.4em;
    /* 제목 크기 */
    font-weight: 700;
    color: var(--primary-blue-dark);
    margin-bottom: 8px;
    /* 버튼들과의 간격 */
    text-align: center;
    width: 100%;
}

/* 카테고리 섹션 내의 nav-button 스타일 */
.category-section .nav-button {
    width: 100%;
    /* 섹션 내부에서 꽉 차게 */
    max-width: 280px;
    /* 버튼 최대 너비 제한 */
    text-align: center;
    font-size: 1.05em;
    /* 기존 홈 버튼보다 약간 작게 */
    padding: 10px 15px;
    /* 패딩 조정 */
    /* 기존 .nav-button의 볼록한 스타일 상속 */
}

/* 관리자 전용 버튼 스타일 (노란색 배경) */
.admin-only-button {
    background-color: var(--admin-btn-bg) !important;
    /* 부드러운 노란색, important로 우선순위 */
    color: #ffffff !important;
    /* 어두운 노란색 계열 텍스트 */
    /* box-shadow는 .nav-button 것을 유지하면서 배경/글자색만 변경 */
}

.admin-only-button:hover {
    background-color: var(--admin-btn-hover-bg) !important;
    color: #ffffff !important;
    /* nav-button hover 효과와 중첩될 수 있으니 transform 등은 유지 */
    transform: translateY(-2px);
    box-shadow: 8px 8px 15px var(--neumo-shadow-dark), -8px -8px 15px var(--neumo-shadow-light) !important;
}

.admin-only-button:active,
.admin-only-button.active {
    background-color: var(--admin-btn-active-bg) !important;
    color: var(--admin-btn-active-text) !important;
    transform: translateY(1px);
    box-shadow: inset 5px 5px 10px var(--selected-neumo-shadow-dark), inset -5px -5px 10px var(--selected-neumo-shadow-light) !important;
}

.ai-only-button {
    background-color: var(--ai-btn-bg) !important;
    color: #6f00ff !important;
}

.ai-only-button:hover {
    background-color: var(--ai-btn-hover-bg) !important;
    color: #ffffff !important;
    transform: translateY(-2px);
    box-shadow: 8px 8px 15px var(--neumo-shadow-dark), -8px -8px 15px var(--neumo-shadow-light) !important;
}

.ai-only-button:active,
.ai-only-button.active {
    background-color: var(--ai-btn-active-bg) !important;
    color: var(--ai-btn-active-text) !important;
    transform: translateY(1px);
    box-shadow: inset 5px 5px 10px var(--selected-neumo-shadow-dark), inset -5px -5px 10px var(--selected-neumo-shadow-light) !important;
}















/* 큰 화면에서의 그리드 레이아웃 */
@media (min-width: 768px) {

    /* 태블릿 */
    .home-category-grid {
        gap: 25px;
        /* 섹션 간 간격 약간 넓게 */
    }

    .category-section {
        flex: 1 1 calc(50% - 12.5px);
        /* 2열, gap 고려 */
        max-width: calc(50% - 12.5px);
    }
}

@media (min-width: 1024px) {

    /* 데스크탑, 이미지와 유사한 레이아웃 */
    .home-category-grid {
        gap: 20px;
        /* 데스크탑에서 gap 약간 줄임 (4개가 한 줄에 잘 들어가도록) */
        flex-wrap: nowrap;
        /* ADDED: 자식 요소들이 줄바꿈되지 않도록 설정 */
    }

    .category-section {
        flex: 1 1 calc(25% - 15px);
        /* 4개의 아이템이 한 줄에 들어가도록. gap (20px) 고려하여 너비 설정 */
        max-width: calc(25% - 15px);
        /* 최대 너비도 동일하게 설정 */
        justify-content: flex-start;
        /* 내부 아이템들을 위에서부터 정렬 */
    }

    .category-title {
        display: flex;
        flex-direction: column;
        align-items: center;
        justify-content: center;
    }

    .category-section .nav-button {
        font-size: 1.1em;
    }
}

.category-icon {
    width: 100px;
    /* 아이콘 너비 (조금 키우는 것을 추천) */
    height: 100px;
    /* 아이콘 높이 */
    margin-bottom: 8px;
    /* 아이콘과 텍스트 사이의 간격 */
}




@media (min-width: 768px) {
    .main-nav {
        gap: 20px;
        /* 태블릿 이상에서 간격 복원 */
        overflow-x: visible;
        /* 가로 스크롤 불필요 */
        padding-bottom: 0;
    }



}


@media (min-width: 768px) {
    .nav-button {
        padding: 10px 20px;
        /* 태블릿 이상에서 패딩 복원 */
        font-size: 1em;
        /* 폰트 크기 복원 */
    }
}

/* --- SEO 분석 결과 메시지에 대한 스타일 추가 --- */

/* 누락된 단어가 있을 때 (빨간색) */
.seo-content .missing-words {
    color: var(--danger-red);
    /* 빨간색 계열 */
    font-weight: bold;
}

/* 모든 단어가 포함되었을 때 (녹색) */
.seo-content .all-present {
    color: #5cb85c;
    /* 녹색 계열 */
    font-weight: bold;
}

/* 제목 단어 표시 부분 (기존에 설정되어 있다면 그대로 유지, 필요시 색상 일치 시키세요) */
.seo-content .phrase-emphasis {
    color: #0275d8;
    /* 파란색 계열 */
    font-weight: bold;
}

/* 회수 표시 부분 */
.seo-content .count-value {
    color: #337ab7;
    /* 진한 파란색 계열 */
    font-weight: bold;
}

/* 개별 SEO 결과 항목의 하단 마진 조정 (필요시) */
.seo-content p {
    margin-bottom: 8px;
    /* 각 문장 간 간격 */
}


/* --- AI 반자동화 및 사람의 손길 강조 섹션 스타일 --- */
.ai-automation-section {
    margin-top: 30px;
    /* 기존 섹션과의 간격 */
    margin-bottom: 40px;
    /* 다음 섹션과의 간격 */
    display: flex;
    justify-content: center;
    /* 가운데 정렬 */
    perspective: 1000px;
    /* 3D 변환을 위한 원근감 설정 (깊이감 표현용) */
}

.ai-automation-box {
    /* 1. 배경 및 테두리 (기존의 네오모피즘 베이스 유지) */
    background: var(--background-color);
    /* 기본 배경색 */
    border: 1px solid rgba(255, 255, 255, 0.3);
    /* 약간의 밝은 테두리 */
    border-radius: 15px;
    /* 더 둥근 모서리 */
    padding: 20px 30px;
    /* 내부 여백 */
    border-radius: var(--border-radius-main);
    background-color: rgba(255, 255, 255, 0.2);
    backdrop-filter: blur(5px);
    /* 블러 강도 최대로 */
    box-shadow:
        7px 7px 10px var(--neumo-shadow-dark),
        -7px -7px 10px var(--neumo-shadow-light);
    transition: opacity var(--transition-speed), transform var(--transition-speed), box-shadow var(--transition-speed);

    /* 3. 너비, 정렬 및 레이아웃 */
    width: 100%;
    max-width: 768px;
    /* 콘텐츠 너비 제한 */
    text-align: center;
    /* 내부 텍스트 가운데 정렬 */

    /* 4. 트랜지션 및 3D 변환 관련 */
    transition: transform 0.4s cubic-bezier(0.25, 0.8, 0.25, 1), box-shadow 0.4s cubic-bezier(0.25, 0.8, 0.25, 1);
    /* 부드러운 전환 효과 */
    transform-style: preserve-3d;
    /* 자식 요소의 3D 변환을 유지 */
}

.ai-automation-box:hover {
    /* 호버 시 입체감 강화: 살짝 위로 띄우고 Z축으로 나오게 함 */
    transform: translateY(-8px) translateZ(20px);
    /* 호버 시 그림자 강조 */
    box-shadow:
        10px 10px 20px rgba(55, 0, 255, 0.18),
        /* 더 크고 진한 그림자 */
        -10px -10px 20px rgba(255, 255, 255, 0.6),
        inset 5px 5px 20px rgba(55, 0, 255, 0.18),
        /* 내부 그림자도 강화 */
        inset -5px -5px 20px rgba(55, 0, 255, 0.18);
}

/* AI 아이콘 스타일 */
.ai-icon {
    font-size: 56px;
    /* 아이콘 크기 증가 */
    color: var(--primary-blue-dark);
    /* 마케팅 중심의 강조색 */
    margin-bottom: 25px;
    /* 아이콘에 은은한 빛 효과 추가 */
    text-shadow: 0 0 15px rgba(0, 54, 112, 0.5),
        /* 주 강조색의 빛 효과 */
        0 0 5px rgba(0, 77, 157, 0.7);
    /* 더 작은 범위의 빛 효과 */
}

/* 제목 스타일 */
.ai-automation-box h3 {
    font-size: 26px;
    /* 제목 글자 크기 증가 */
    color: var(--text-color-dark);
    /* 기본 텍스트 색상 */
    margin-bottom: 18px;
    line-height: 1.5;
    font-weight: 700;
    /* 굵은 글씨 */
}

/* 본문 문단 스타일 */
.ai-automation-box p {
    font-size: 16.5px;
    /* 본문 글자 크기 살짝 조정 */
    color: var(--text-color-light);
    /* 보조 텍스트 색상 */
    line-height: 1.8;
    margin-bottom: 12px;
}

.ai-automation-box p:last-child {
    margin-bottom: 0;
    /* 마지막 문단의 하단 여백 제거 */
}

/* 반응형 조정: 모바일에서는 3D 효과를 최소화하고 그림자를 단순화 */
@media (max-width: 768px) {
    .ai-automation-box {
        padding: 25px;
        max-width: 90%;
        /* 작은 화면에서는 너비 비율 조정 */

        /* 모바일에서는 3D 변환 효과 제거 */
        transform: none;
        perspective: none;
        /* 부모의 perspective도 제거 */

        /* 모바일에서는 그림자를 단순화하여 과한 느낌 방지 */
        box-shadow: 0 5px 15px rgba(0, 0, 0, 0.1);
        /* 기본 그림자 */
    }

    .ai-automation-box:hover {
        transform: none;
        /* 모바일에서는 호버 효과 제거 */
        box-shadow: 0 8px 20px rgba(0, 0, 0, 0.15);
        /* 호버 시 그림자만 약간 강화 */
    }

    .ai-icon {
        font-size: 48px;
        text-shadow: none;
        /* 모바일에서는 텍스트 그림자 제거 */
    }

    .ai-automation-box h3 {
        font-size: 22px;
    }

    .ai-automation-box p {
        font-size: 15px;
    }
}

@media (max-width: 480px) {
    .ai-automation-box {
        padding: 20px;
    }

    .ai-icon {
        font-size: 40px;
    }

    .ai-automation-box h3 {
        font-size: 20px;
    }
}




/* --- NEW: 홈 페이지의 마케팅 서비스 링크 섹션 스타일 --- */
.marketing-services-section {
    margin-top: 70px;
    /* 헤더와의 간격 */
    margin-bottom: 40px;
    /* 푸터나 다른 요소와의 간격 */
    width: 100%;
    display: flex;
    flex-direction: column;
    align-items: center;
    /* 섹션 내부 내용을 중앙 정렬 */
    padding: 0 20px;
    /* 좌우 패딩 */
    box-sizing: border-box;
    /* 패딩이 너비에 포함되도록 */
}

.marketing-services-section .section-title {
    font-size: 2.2em;
    /* 섹션 제목 크기 */
    font-weight: 700;
    color: var(--text-color-dark);
    margin-bottom: 15px;
    letter-spacing: 0.05em;
    text-align: center;
}

.marketing-services-section .section-description {
    font-size: 1.1em;
    /* 설명 텍스트 크기 */
    color: var(--text-color-light);
    /* 보조 텍스트 색상 */
    line-height: 1.7;
    margin-bottom: 40px;
    /* 섹션 설명 아래 간격 */
    text-align: center;
    max-width: 700px;
    /* 설명 너비 제한 */
}

.services-category-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
    /* 각 카테고리 박스의 최소 너비 260px */
    gap: 25px;
    /* 카테고리 박스들 사이 간격 */
    width: 100%;
    max-width: 1200px; margin: 0 auto;
    /* 그리드 영역 최대 너비 */
    justify-content: center;
    /* 중앙 정렬 */
}

.service-category {
    background-color: var(--background-color);
    /* 카테고리 박스 배경 */
    border-radius: var(--border-radius-main);
    /* 둥근 모서리 */
    padding: 25px;
    /* 내부 여백 */
    box-shadow:
        7px 7px 10px var(--neumo-shadow-dark),
        -7px -7px 10px var(--neumo-shadow-light);
    /* 네오모피즘 볼록 효과 */
    display: flex;
    flex-direction: column;
    /* 항목들을 세로로 정렬 */
    align-items: center;
    /* 내용을 중앙 정렬 */
    min-height: 300px;
    /* 각 카테고리 박스의 최소 높이 */
    transition: transform 0.3s ease, box-shadow 0.3s ease;
}

.service-category:hover {
    transform: translateY(-5px);
    box-shadow: 10px 10px 15px var(--neumo-shadow-dark), -10px -10px 15px var(--neumo-shadow-light);
    /* 호버 시 그림자 강조 */
}

.service-category h3 {
    font-size: 1.5em;
    /* 섹션 제목 크기 */
    color: var(--primary-blue-dark);
    /* 메인 강조 색상 */
    font-weight: 700;
    margin-bottom: 15px;
    /* 제목과 링크 사이 간격 */
    text-align: center;
    width: 100%;
    /* 너비를 꽉 채움 */
    display: flex;
    /* 아이콘과 텍스트 같이 배치 */
    align-items: center;
    justify-content: center;
    /* 아이콘 및 텍스트 중앙 정렬 */
    gap: 10px;
    /* 아이콘과 텍스트 간 간격 */
}

.service-category h3 i {
    /* 서비스 섹션 내 아이콘 스타일 */
    color: var(--primary-blue-dark);
    /* 아이콘 색상 */
    font-size: 0.8em;
    /* 아이콘 크기 텍스트 대비 조정 */
}

.service-category .nav-button {
    width: 100%;
    /* 컨테이너에 맞춤 */
    max-width: 250px;
    /* 버튼 최대 너비 */
    text-align: center;
    font-size: 1.05em;
    /* 폰트 크기 */
    padding: 12px 18px;
    /* 버튼 패딩 */
    margin-top: 10px;
    /* 각 링크 사이 간격 */
    background-color: var(--background-color);
    /* 기존 버튼 스타일 상속 */
    color: var(--text-color-dark);
    box-shadow:
        5px 5px 10px var(--neumo-shadow-dark),
        -5px -5px 10px var(--neumo-shadow-light);
}

.service-category .nav-button:hover {
    transform: translateY(-1px);
    box-shadow: inset 3px 3px 6px var(--neumo-shadow-dark), inset -3px -3px 6px var(--neumo-shadow-light);
}

/* .nav-button.active 스타일은 유지되어야 함 */

/* 관리자 전용 버튼 스타일 */
.service-category .admin-only-button {
    background-color: var(--disabled-gray) !important;
    /* 기본 회색 (다른 예시: #d8d8d8) */
    color: white !important;
    border: none;
    /* 기본 보더 제거 */
}

.service-category .admin-only-button:hover {
    background-color: #707070 !important;
    /* 호버 시 더 어두운 회색 */
    box-shadow: inset 3px 3px 6px var(--neumo-shadow-dark), inset -3px -3px 6px var(--neumo-shadow-light);
    /* 기존 호버 효과 적용 */
    transform: translateY(-1px);
}

/* 반응형: 더 작은 화면에서는 카테고리 박스 하나씩 보이도록 조정 */
@media (max-width: 768px) {
    .services-category-grid {
        grid-template-columns: 1fr;
        /* 한 컬럼 */
        gap: 20px;
    }

    .service-category {
        max-width: 100%;
        /* 모바일에서 너비 100% */
        flex: none;
        /* flex 속성 제거 */
    }

    .service-category .nav-button {
        max-width: 200px;
        /* 모바일에서 버튼 너비 줄임 */
    }
}

/* (optional) 다른 스타일들을 `style.css`에 잘 통합하는 것이 중요합니다. */


/* style.css 파일 하단에 추가 */
/* style.css 파일 하단에 추가하세요. */

/* --- 마우스 호버 시 설명 툴팁 스타일 --- */
/* 중복된 .nav-button 정의 통합: 위 블록에 포함됨 */

/* --- 마우스 호버 시 설명 툴팁 스타일 (수정된 버전) --- */
.nav-button .tooltip {
    position: absolute;
    bottom: 100%;
    left: 50%;
    transform: translateX(-50%) translateY(10px);
    /* === 핵심 수정 사항 (여기부터) === */
    /* 1. 자동 줄 바꿈 허용 */
    white-space: normal;
    /* 2. 내용에 따라 너비가 정해지되, 최대 너비를 지정하여 줄 바꿈 유도 */
    width: max-content;
    /* 내용이 짧으면 너비도 작게 */
    max-width: 280px;
    /* 툴팁이 이 너비보다 커지면 줄 바꿈 시작 (값 조절 가능) */
    /* 3. 가독성을 위한 정렬 및 줄 바꿈 규칙 (선택 사항) */
    text-align: center;
    /* 텍스트를 가운데 정렬하여 보기 좋게 */
    word-break: keep-all;
    /* 한글 단어가 잘리지 않도록 단어 단위로 줄 바꿈 */
    /* === (여기까지) === */
    background-color: rgba(196, 190, 255, 0.5);
    color: #180070;
    font-size: 0.85em;
    font-weight: 500;
    padding: 8px 12px;
    border-radius: 6px;
    z-index: 10;
    opacity: 0;
    visibility: hidden;
    transition: opacity 0.3s ease, visibility 0.3s ease, transform 0.3s ease;
    pointer-events: none;
}

/* 링크에 호버 시 툴팁 보이게 하기 */
.nav-button:hover .tooltip,
.nav-button:active .tooltip,
/* .active 클래스일 때도 보이도록 추가 */
.nav-button.active .tooltip {
    /* 현재 페이지를 나타내는 .active 클래스일 때도 보이도록 추가 */
    opacity: 1;
    visibility: visible;
    transform: translateX(-50%) translateY(0);
    /* 위치를 다시 조정하여 보이게 함 */
}

/* 툴팁 화살표 스타일 (선택 사항) */
.tooltip::after {
    content: '';
    position: absolute;
    top: 100%;
    /* 툴팁 바로 아래 */
    left: 50%;
    margin-left: -5px;
    /* 삼각형 너비의 절반 */
    border-width: 5px;
    border-style: solid;
    border-color: rgba(76, 0, 253, 0.8) transparent transparent transparent;
    /* 위쪽만 색상 적용 */
}



/* 확장된 버튼 안의 아이콘(PNG) 크기 조절 */
.nav-button.expanded .nav-button-icon {
    width: 50px;
    /* 원하는 가로 크기 (기존의 절반 예시) */
    height: 50px;
    /* 원하는 세로 크기 (기존의 절반 예시) */
    object-fit: contain;
    /* 이미지 비율을 유지하면서 크기 조절 */
}


/* style.css 파일 하단에 추가하세요. */
/* --- 코드 분석기 - 결과 항목 스타일 --- */
.code-analyzer-app .analysis-result-container {
    display: flex;
    flex-direction: column;
    gap: 20px;
}

.code-analyzer-app .analysis-result-container .result-item {
    border-radius: 12px;
    padding: 15px 20px;
    background-color: var(--background-color);
    box-shadow: inset 3px 3px 6px var(--neumo-shadow-dark), inset -3px -3px 6px var(--neumo-shadow-light);
    transition: all var(--transition-speed);
    display: flex;
    flex-direction: column;
    gap: 8px;
}

/* 결과 성공 시 (값이 있을 때) */
.code-analyzer-app .analysis-result-container .result-item.success .result-value {
    color: var(--success-green);
    /* 연두색 계열 */
    font-weight: 700;
}

/* 결과 실패 시 (값이 없을 때) */
.code-analyzer-app .analysis-result-container .result-item.error .result-value {
    color: var(--danger-red);
    /* 빨간색 계열 */
    font-weight: 700;
}

.code-analyzer-app .result-item.error .placeholder {
    /* 오류 메시지도 빨간색 */
    color: var(--danger-red);
}

.code-analyzer-app .result-label {
    font-weight: 700;
    font-size: 1.05em;
    color: var(--primary-blue-dark);
}

.code-analyzer-app .result-value {
    font-size: 1.05em;
}

/* 제목, 설명 등 권장사항 문구 포함 시 스타일 */
.code-analyzer-app .result-item:has(.result-label > strong) .result-value {
    font-size: 1em;
    font-weight: 400;
    word-break: break-word;
    line-height: 1.5;
}

.code-analyzer-app .recommendation-text {
    /* 추천 문구 스타일 */
    font-size: 0.85em;
    color: var(--muted-gray);
    margin-left: 8px;
    font-weight: 500;
}

/* 목록 (ul) 관련 스타일 */
.code-analyzer-app .item-list {
    list-style: none;
    padding-left: 0;
    margin-top: 10px;
}

.code-analyzer-app .item-content {
    margin-bottom: 5px;
    word-break: break-all;
    /* 내용이 길면 줄바꿈 */
}

/* 플레이스홀더 텍스트 스타일 */
.code-analyzer-app .placeholder {
    font-style: italic;
    color: var(--text-color-light);
    text-align: center;
    padding: 15px 0;
}


/* style.css 파일의 가장 마지막 부분에 다음 스타일을 추가하세요. */

/* --- index.html 페이지 하단 고정 액션 버튼 스타일 --- */
.footer-actions-container-index {
    position: fixed;
    /* 화면 하단에 고정 */
    bottom: 0;
    left: 0;
    width: 100%;
    height: 80px;
    /* 버튼들을 담을 충분한 높이 */
    background-color: rgba(255, 255, 255, 0.2);
    /* 반투명 배경 */
    backdrop-filter: blur(5px);
    /* 블러 효과 */
    display: flex;
    justify-content: center;
    /* 버튼들을 중앙에 배치 */
    align-items: center;
    /* 버튼들을 수직 중앙에 배치 */
    padding: 0 20px;
    /* 좌우 패딩 */
    box-sizing: border-box;
    z-index: 1001;
    /* 다른 콘텐츠 위에 오도록 */
    box-shadow: 0px -5px 15px rgba(0, 0, 0, 0.05);
    /* 위쪽에 미세한 그림자 */
}

/* 버튼들을 감싸는 래퍼 (가로 정렬 및 반응형 조정을 위해 추가) */
.button-wrapper {
    display: flex;
    /* 가로 배치 */
    justify-content: center;
    /* 기본적으로 중앙 정렬 */
    align-items: center;
    /* 세로 중앙 정렬 */
    gap: 15px;
    /* 버튼들 사이 간격 */
    width: 100%;
    /* 부모 컨테이너에 맞춤 */
    max-width: 800px;
    /* 최대 너비 제한 (콘텐츠 너비에 맞춰 조절) */
}

/* index.html 페이지의 액션 버튼 공통 스타일 */
.action-button {
    padding: 12px 25px;
    /* 버튼 내부 패딩 */
    border-radius: 25px;
    /* 매우 둥근 모서리 */
    font-size: 1em;
    /* 폰트 크기 */
    font-weight: 700;
    /* 굵은 글씨 */
    border: none;
    /* 테두리 없음 */
    cursor: pointer;
    transition: all var(--transition-speed);
    /* 부드러운 전환 효과 */
    display: flex;
    align-items: center;
    /* 아이콘과 텍스트 수직 중앙 정렬 */
    justify-content: center;
    /* 버튼 내용 중앙 정렬 */
    gap: 8px;
    /* 아이콘과 텍스트 사이 간격 */
    color: rgb(74, 87, 209);
    /* 글자 색상 */

    /* 버튼 너비를 50%로 설정하고 flex 아이템의 속성을 지정합니다. */
    flex: 0 0 calc(50% - 7.5px);
    /* flex-grow: 0, flex-shrink: 0, flex-basis: calc(50% - gap/2) */
    /* gap이 15px이므로 15px/2 = 7.5px */
    max-width: calc(50% - 7.5px);
    /* 최대 너비도 50%로 제한 */
    box-sizing: border-box;
    /* 패딩이 너비에 포함되도록 */
    min-width: 0;
    /* 화면이 좁아져도 버튼 너비가 줄어들 수 있도록 함 */
}

/* 실시간 콜센터 버튼 스타일 */
.call-button {
    background-color: rgba(186, 151, 250, 0.2);
    backdrop-filter: blur(5px);
    /* 블러 강도 최대로 */
    box-shadow:
        7px 7px 10px var(--neumo-shadow-dark),
        -7px -7px 10px var(--neumo-shadow-light);
    transition: opacity var(--transition-speed), transform var(--transition-speed), box-shadow var(--transition-speed);
}

.call-button:hover {

    color: rgb(255, 255, 255);
    /* 글자 색상 */
    background-color: #003874;
    /* 약간 더 진한 색상 */
    box-shadow: inset 3px 3px 6px rgba(0, 37, 75, 0.3), inset -3px -3px 6px rgba(0, 77, 157, 0.3);
    /* 인셋 그림자 */
    transform: translateY(1px);
}

.call-button:active {
    transform: translateY(2px);
    box-shadow: inset 5px 5px 10px rgba(0, 37, 75, 0.3), inset -5px -5px 10px rgba(0, 77, 157, 0.3);
}

/* 카카오톡 상담 버튼 스타일 */
.consult-button {
    background-color: rgba(186, 151, 250, 0.2);
    backdrop-filter: blur(5px);
    /* 블러 강도 최대로 */
    box-shadow:
        7px 7px 10px var(--neumo-shadow-dark),
        -7px -7px 10px var(--neumo-shadow-light);
    transition: opacity var(--transition-speed), transform var(--transition-speed), box-shadow var(--transition-speed);
}

.consult-button:hover {
    background-color: #ffd248;
    /* 호버 시 약간 더 진한 노란색 */
    color: rgb(0, 63, 134);
    /* 글자 색상 */
    box-shadow: inset 3px 3px 6px rgba(255, 218, 106, 0.3), inset -3px -3px 6px rgba(255, 255, 255, 0.5);
    transform: translateY(1px);
}

.consult-button:active {
    transform: translateY(2px);
    box-shadow: inset 5px 5px 10px rgba(255, 218, 106, 0.3), inset -5px -5px 10px rgba(255, 255, 255, 0.5);
}

/* 아이콘 스타일 (Font Awesome 사용 시) */
.action-button .fas {
    font-size: 1.1em;
    /* 아이콘 크기 */
}

/* --- 모바일 환경에서 버튼 레이아웃 변경 --- */
@media (max-width: 600px) {
    .footer-actions-container-index {
        height: 120px;
        /* 모바일에서는 높이를 늘려 두 버튼이 세로로 쌓일 공간 확보 */
        padding: 10px 20px;
        /* 패딩 조정 */
    }

    .button-wrapper {
        flex-direction: column;
        /* 모바일에서는 버튼을 세로로 쌓음 */
        gap: 10px;
        /* 버튼 사이 간격 줄임 */
        width: 100%;
        /* 부모 너비 100% 차지 */
        align-items: center;
        /* 세로로 쌓을 때는 너비 100%를 차지하도록 변경 */
    }

    .action-button {
        width: 100%;
        /* 모바일에서는 버튼이 부모 너비를 꽉 채우도록 */
        max-width: none;
        /* 최대 너비 제한 해제 */
        flex: none;
        /* flex 속성을 해제하여 width: 100%가 제대로 작동하게 함 */
        padding: 10px 20px;
        /* 버튼 패딩 줄임 */
        font-size: 0.9em;
        /* 폰트 크기 줄임 */
    }

    .action-button .fas {
        font-size: 1em;
        /* 아이콘 크기 상대적으로 유지 */
    }
}


/* index.html 페이지의 액션 버튼 공통 스타일 종료*/


/* --- 9. 미디어 변환기 스타일 (.media-converter-app 스코프) --- */
.media-converter-app {
    width: 100%;
    display: flex;
    flex-direction: column;
    align-items: center;
    padding: 20px;
}

.media-converter-app .main-container-wrapper {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 40px;
    width: 100%;
    max-width: 800px;
    padding: 0;
    box-sizing: border-box;
}

.media-converter-app .card {
    /* .mixture-app .card 재활용 */
    margin-bottom: 0;
    /* 퍼널 앱과 달리 페이지에 하나의 카드 덩어리이므로 하단 마진은 wrapper에서 관리 */
}

/* 파일 업로드 영역 */
.media-converter-app .file-upload-area {
    margin-top: 20px;
    margin-bottom: 20px;
    border: none;
    border-radius: 10px;
    padding: 15px;
    background-color: var(--background-color);
    box-shadow: inset 2px 2px 5px var(--neumo-shadow-dark), inset -2px -2px 5px var(--neumo-shadow-light);
    width: 100%;
    box-sizing: border-box;
}

.media-converter-app .drop-zone {
    border: 3px dashed var(--primary-blue);
    /* 기본적으로 파란색 점선 테두리 */
    border-radius: 12px;
    padding: 40px;
    text-align: center;
    color: var(--primary-blue);
    cursor: pointer;
    transition: border-color var(--transition-speed), background-color var(--transition-speed);
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    font-size: 1.1em;
    font-weight: 700;
}

.media-converter-app .drop-zone i {
    font-size: 3em;
    margin-bottom: 15px;
    opacity: 0.8;
}

/* 파일을 드래그했을 때 효과 */
.media-converter-app .drop-zone.drag-over {
    border-color: var(--primary-blue-dark);
    /* 드래그 오버 시 더 진한 파란색 */
    background-color: rgba(0, 56, 116, 0.1);
    /* 약간의 파란 배경 */
    color: var(--primary-blue-dark);
}

/* 숨겨진 파일 입력 필드 */
.media-converter-app .drop-zone input[type="file"] {
    position: absolute;
    width: 100%;
    height: 100%;
    top: 0;
    left: 0;
    opacity: 0;
    cursor: pointer;
    z-index: 1;
    /* 드래그 제스처를 위해 영역 전체에 걸치게 함 */
}

/* 변환 결과 목록 */
.media-converter-app .conversion-results-list {
    margin-top: 20px;
    padding: 15px;
    background-color: var(--background-color);
    box-shadow: inset 2px 2px 5px var(--neumo-shadow-dark), inset -2px -2px 5px var(--neumo-shadow-light);
    border-radius: 10px;
    max-height: 500px;
    /* 스크롤을 위해 최대 높이 지정 */
    overflow-y: auto;
    /* 내용이 넘칠 경우 스크롤 */
    min-width: 0;
}

.media-converter-app .conversion-results-list .result-item {
    display: flex;
    flex-wrap: wrap;
    /* 내용이 길 경우 줄바꿈 */
    justify-content: space-between;
    /* 항목을 양쪽 끝으로 정렬 */
    align-items: center;
    /* 세로 중앙 정렬 */
    padding: 12px 15px;
    margin-bottom: 8px;
    /* 각 항목 사이 간격 */
    background-color: var(--background-color);
    /* 아이템 배경 */
    box-shadow: inset 3px 3px 6px var(--neumo-shadow-dark), inset -3px -3px 6px var(--neumo-shadow-light);
    /* 네오모피즘 효과 */
    border-radius: 8px;
    font-size: 0.95em;
    color: var(--text-color-dark);
    transition: all var(--transition-speed);
    width: 100%;
    /* 컨테이너에 꽉 차게 */
    box-sizing: border-box;
}

.media-converter-app .conversion-results-list .result-item:last-child {
    margin-bottom: 0;
}

.media-converter-app .conversion-results-list .result-item .file-info {
    flex-grow: 1;
    /* 파일 이름, 용량 등이 차지하는 공간을 늘림 */
    margin-right: 15px;
    /* 버튼과의 간격 */
    word-break: break-all;
    /* 너무 길면 자동으로 줄바꿈 */
}

.media-converter-app .conversion-results-list .result-item .file-name {
    font-weight: 700;
    margin-bottom: 5px;
    /* 파일 이름과 용량 사이 간격 */
    display: block;
    /* 새로운 줄로 표시 */
}

.media-converter-app .conversion-results-list .result-item .file-sizes {
    font-size: 0.9em;
    color: var(--text-color-light);
}

.media-converter-app .conversion-results-list .result-item .convert-btn {
    /* 변환 후 버튼 */
    flex-shrink: 0;
    /* 버튼 너비가 줄어들지 않도록 */
    margin-left: 10px;
    padding: 8px 12px;
    border-radius: 8px;
    border: none;
    background-color: var(--primary-blue);
    color: white;
    font-weight: 700;
    cursor: pointer;
    transition: all var(--transition-speed);
}

.media-converter-app .conversion-results-list .result-item .convert-btn:hover {
    background-color: var(--primary-blue-dark);
    transform: translateY(-1px);
    box-shadow: 3px 3px 6px rgba(0, 0, 0, 0.2);
}

.media-converter-app .conversion-results-list .result-item .convert-btn.processing {
    background-color: #aaa;
    cursor: not-allowed;
    transform: none;
    box-shadow: none;
}

/* 파일 변환 상태에 따른 메시지 */
.media-converter-app .conversion-status {
    font-size: 0.9em;
    color: var(--text-color-light);
    font-style: italic;
    white-space: nowrap;
    margin-left: 10px;
}

.media-converter-app .conversion-status.success {
    color: var(--success-green);
    /* 성공 시 녹색 */
    font-weight: 500;
}

.media-converter-app .conversion-status.error {
    color: var(--danger-red);
    /* 오류 시 빨간색 */
    font-weight: 700;
}

/* 진행 바 */
.media-converter-app .progress-bar-container {
    width: 100%;
    background-color: var(--background-color);
    border-radius: 8px;
    overflow: hidden;
    height: 8px;
    margin-top: 5px;
    /* 아래 파일 정보와의 간격 */
}

.media-converter-app .progress-bar {
    height: 100%;
    background-color: var(--primary-blue);
    width: 0%;
    /* 초기 상태 */
    transition: width 0.2s ease-in-out;
}

/* 다운로드 링크 스타일 */
.media-converter-app .download-link {
    display: inline-block;
    /* 또는 block으로 필요한 경우 */
    color: var(--primary-blue);
    text-decoration: underline;
    font-weight: 500;
    cursor: pointer;
}

.media-converter-app .download-link:hover {
    color: var(--primary-blue-dark);
}


/* 반응형 조정: 파일 결과 목록의 경우 */
@media (max-width: 768px) {
    .media-converter-app .drop-zone {
        padding: 30px;
    }

    .media-converter-app .conversion-results-list .result-item {
        flex-direction: column;
        /* 작은 화면에서는 열 방향으로 정렬 */
        align-items: flex-start;
        /* 왼쪽 정렬 */
        margin-bottom: 12px;
    }

    .media-converter-app .conversion-results-list .result-item .file-info {
        margin-right: 0;
        width: 100%;
        /* 부모 너비에 맞춤 */
        margin-bottom: 10px;
    }

    .media-converter-app .conversion-results-list .result-item .file-name {
        margin-bottom: 5px;
        /* 파일 이름과 용량 간 간격 */
    }

    .media-converter-app .conversion-results-list .result-item .file-sizes {
        font-size: 0.85em;
    }

    .media-converter-app .conversion-results-list .result-item .convert-btn {
        margin-left: 0;
        width: 100%;
        /* 버튼도 너비를 꽉 채우도록 */
        text-align: center;
    }
}

/* --- 10. 미디어 변환기 스크립트 --- */
/* .media-converter-app .main-title (이 클래스만 적용하면 style.css에 추가 필요 없음) */

/* 나머지 CSS는 style.css에 .mixture-app 등의 기존 규칙들이 적용됩니다. */

/* --- 12. 간편 제안서 만들기 스타일 (세로 배치 수정 버전) --- */
.proposal-generator-app .proposal-flex-container {
    display: flex;
    flex-direction: column;
    /* 항상 세로(수직) 정렬을 유지합니다. */
    gap: 40px;
    width: 100%;
    align-items: center;
    /* 카드들을 중앙 정렬합니다. */
}

.proposal-generator-app .card {
    width: 100%;
    max-width: 800px;
    /* 카드의 최대 너비를 지정하여 너무 넓어지지 않게 합니다. */
    margin-bottom: 0;
}

/* A. 입력 및 선택 카드 */


.proposal-generator-app .input-selection-card .subsection-title {
    font-size: 1.2em;
    font-weight: 700;
    color: var(--primary-blue-dark);
    margin-top: 30px;
    margin-bottom: 15px;
    padding-bottom: 5px;
    border-bottom: 2px solid var(--background-color2);
}

.proposal-generator-app .services-grid-container {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
    gap: 15px;
}

.proposal-generator-app .service-option-box {
    padding: 15px;
    border-radius: 12px;
    background-color: var(--background-color);
    box-shadow: 5px 5px 10px var(--neumo-shadow-dark), -5px -5px 10px var(--neumo-shadow-light);
    cursor: pointer;
    transition: all var(--transition-speed);
    text-align: center;
}

.proposal-generator-app .service-option-box:hover {
    transform: translateY(-2px);
}

.proposal-generator-app .service-option-box.selected {
    background-color: var(--primary-blue-dark);
    color: white;
    box-shadow: inset 5px 5px 10px var(--selected-neumo-shadow-dark), inset -5px -5px 10px var(--selected-neumo-shadow-light);
    transform: translateY(1px);
}

.proposal-generator-app .service-option-box .service-name {
    font-weight: 700;
    display: block;
    margin-bottom: 8px;
    font-size: 1.05em;
}

.proposal-generator-app .service-option-box.selected .service-name {
    color: white;
}

.proposal-generator-app .service-option-box .service-price {
    font-size: 0.9em;
    color: var(--text-color-light);
}

.proposal-generator-app .service-option-box.selected .service-price {
    color: #e0e0e0;
}

/* B. 결과 카드 */


.proposal-generator-app .proposal-output-area {
    padding: 20px;
    border-radius: 12px;
    background-color: var(--background-color);
    box-shadow: inset 3px 3px 6px var(--neumo-shadow-dark), inset -3px -3px 6px var(--neumo-shadow-light);
    margin-bottom: 30px;
}

.proposal-generator-app .proposal-main-title {
    font-size: 1.5em;
    font-weight: 700;
    text-align: center;
    color: var(--primary-blue-dark);
    margin-bottom: 10px;
}

.proposal-generator-app .proposal-intro-text {
    font-size: 1em;
    color: var(--text-color-dark);
    text-align: center;
    line-height: 1.6;
    margin-bottom: 25px;
}

.proposal-generator-app .proposal-services-list .proposal-service-item {
    margin-bottom: 20px;
}

.proposal-generator-app .proposal-services-list h4 {
    font-size: 1.2em;
    font-weight: 700;
    color: var(--text-color-dark);
    margin-bottom: 8px;
}

.proposal-generator-app .proposal-services-list p {
    font-size: 0.95em;
    line-height: 1.6;
    color: var(--text-color-light);
    margin: 0;
}

/* 견적서 테이블 */
.proposal-generator-app .quotation-output-area {
    margin-top: 20px;
}

.proposal-generator-app .quotation-table-wrapper {
    overflow-x: auto;
}

.proposal-generator-app #quotationTable {
    width: 100%;
    border-collapse: collapse;
    margin-top: 15px;
}

.proposal-generator-app #quotationTable th,
.proposal-generator-app #quotationTable td {
    padding: 12px 15px;
    border-bottom: 1px solid var(--border-light);
    text-align: left;
}

.proposal-generator-app #quotationTable th {
    background-color: var(--chip-bg);
    font-weight: 700;
}

.proposal-generator-app #quotationTable td:last-child {
    text-align: center;
    font-weight: 500;
}

.proposal-generator-app #quotationTable tfoot td {
    font-weight: 700;
    font-size: 1.1em;
    color: var(--primary-blue-dark);
    border-bottom: none;
}

.proposal-generator-app #quotationTable tfoot td:last-child {
    color: var(--alert-red);
}

.proposal-generator-app .vat-notice {
    text-align: center;
    font-size: 0.8em;
    color: var(--text-color-light);
    margin-top: 8px;
    font-style: italic;
}




/* --- AI 영상 프롬프트 생성기: 결과창을 '입력창'과 동일한 디자인으로 변경 --- */
/* 결과창 textarea 스타일은 상단 프롬프트 생성기 섹션에서 통합 정의되었습니다. */


/* --- 스크롤바 디자인 (밝은 테마에 맞게 수정) --- */
.video-prompt-maker-app .results-display-card textarea#resultPrompt::-webkit-scrollbar {
    width: 10px;
}

.video-prompt-maker-app .results-display-card textarea#resultPrompt::-webkit-scrollbar-track {
    background: var(--background-color);
    /* 배경색과 동일하게 */
    border-radius: 10px;
}

.video-prompt-maker-app .results-display-card textarea#resultPrompt::-webkit-scrollbar-thumb {
    background-color: #b3bada;
    /* 어두운 그림자 색상으로 핸들 */
    border-radius: 10px;
    border: 2px solid var(--background-color);
    /* 트랙과 분리되는 느낌을 위한 테두리 */
}

.video-prompt-maker-app .results-display-card textarea#resultPrompt::-webkit-scrollbar-thumb:hover {
    background-color: #9a9dd1;
}



/* H1 제목에 빛나는 텍스트 애니메이션 효과 추가 */
.funnel-app .main-title,
.analyzer-app .main-title,
.code-app .main-title,
.image-prompt-maker-app .main-title,
.inventory-app .main-title,
.location-selector-app .main-title,
.naver-blog-prompt-app .main-title,
.prompt-generator-app .main-title,
.proposal-generator-app .main-title,
.recommendation-app .main-title,
.reverse-scenario-prompt-app .main-title,
.shape-image-prompt-maker-app .main-title,
.shorts-prompt-app .main-title,
.topic-prompt-app .main-title,
.video-prompt-maker-app .main-title,
.youtube-prompt-app .main-title {
    /* 1. 배경 그라데이션을 텍스트 모양으로 잘라냅니다. */
    background-clip: text;
    -webkit-background-clip: text;
    /* 웹킷 브라우저(크롬, 사파리 등) 호환성을 위함 */

    /* 2. 텍스트의 실제 색상은 투명하게 만들어 배경이 보이도록 합니다. */
    color: transparent;

    /* 3. 배경에 그라데이션 이미지를 적용합니다. */
    background-image: linear-gradient(90deg,
            /* 그라데이션 방향: 왼쪽에서 오른쪽으로 */
            var(--selected-neumo-shadow-dark),
            /* 시작 색상 (#00254B) */
            var(--selected-neumo-shadow-m),
            /* 빛나는 색상 (#004D9D) */
            var(--selected-neumo-shadow-dark)
            /* 다시 시작 색상으로 돌아옴 */
        );

    /* 4. 배경 이미지의 크기를 2배로 늘려 움직일 공간을 확보합니다. */
    background-size: 200% auto;

    /* 5. 'shine-effect' 애니메이션을 3초 주기로 무한 반복시킵니다. */
    animation: shine-effect 8s linear infinite;
}


@keyframes shadow-effect {

    /* 시작 시점: 그림자가 오른쪽 더 먼 곳(250%)에 위치 */
    0% {
        /* background-position의 두 번째 값이 두 번째 배경(그림자)에 해당합니다. */
        background-position: 200% center, 250% center;
    }

    /* 종료 시점: 그림자가 왼쪽 더 먼 곳(-150%)으로 이동 완료 */
    100% {
        background-position: -200% center, -150% center;
    }
}


/* --- 모든 페이지 하단 고정 푸터 겹침 방지 --- */
.home-content,
.recommendation-app,
.mixture-app,
.inventory-app,
.analyzer-app,
.funnel-app,
.location-selector-app,
.prompt-generator-app,
.youtube-prompt-app,
.reverse-scenario-prompt-app,
.naver-blog-prompt-app,
.word-finder-app,
.media-converter-app,
.proposal-generator-app,
.video-prompt-maker-app,
.shape-image-prompt-maker-app,
.shorts-prompt-app,
.topic-prompt-app,
.code-analyzer-app,
.inspector-app {
    padding-bottom: 140px;
    /* 모바일 푸터 높이(120px) + 여유 공간 20px */
}

/* 데스크탑 화면 (601px 이상)에서는 푸터 높이가 다르므로 여백 조정 */
@media (min-width: 601px) {

    .home-content,
    .recommendation-app,
    .mixture-app,
    .inventory-app,
    .analyzer-app,
    .funnel-app,
    .location-selector-app,
    .prompt-generator-app,
    .youtube-prompt-app,
    .reverse-scenario-prompt-app,
    .naver-blog-prompt-app,
    .word-finder-app,
    .media-converter-app,
    .proposal-generator-app,
    .video-prompt-maker-app,
    .shape-image-prompt-maker-app,
    .shorts-prompt-app,
    .topic-prompt-app,
    .code-analyzer-app,
    .inspector-app {
        padding-bottom: 100px;
        /* 데스크탑 푸터 높이(80px) + 여유 공간 20px */
    }
}


/* --- 12. 쇼핑몰 손익분기 계산기 스타일 (.shopping-mall-app 스코프) --- */
/* mixture-app, proposal-generator-app의 스타일을 일부 재활용합니다. */

.shopping-mall-app .subsection-title {
    font-size: 1.2em;
    font-weight: 700;
    color: var(--primary-blue-dark);
    margin-top: 30px;
    margin-bottom: 15px;
    padding-bottom: 5px;
    border-bottom: 2px solid var(--background-color2);
}

.shopping-mall-app .services-grid-container {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
    gap: 15px;
}

/* 플랫폼 선택 박스 기본 스타일 */
.shopping-mall-app .service-option-box {
    padding: 15px;
    border-radius: 12px;
    background-color: var(--background-color);
    box-shadow: 5px 5px 10px var(--neumo-shadow-dark), -5px -5px 10px var(--neumo-shadow-light);
    cursor: pointer;
    transition: all var(--transition-speed);
    text-align: center;
}

.shopping-mall-app .service-option-box:hover {
    transform: translateY(-2px);
}

/* 플랫폼 선택 시 적용될 스타일 (가장 중요한 부분) */
.shopping-mall-app .service-option-box.selected {
    background-color: var(--primary-blue-dark);
    color: white;
    box-shadow: inset 5px 5px 10px var(--selected-neumo-shadow-dark), inset -5px -5px 10px var(--selected-neumo-shadow-light);
    transform: translateY(1px);
}

.shopping-mall-app .service-option-box .service-name {
    font-weight: 700;
    font-size: 1.05em;
}

.shopping-mall-app .service-option-box.selected .service-name {
    color: white;
}

/* 결과창 스타일 */
.shopping-mall-app .analyzer-result-container {
    display: flex;
    flex-direction: column;
    gap: 15px;
}

.shopping-mall-app .result-item {
    padding: 15px 20px;
    border-radius: 12px;
    background-color: var(--background-color);
    box-shadow: inset 3px 3px 6px var(--neumo-shadow-dark), inset -3px -3px 6px var(--neumo-shadow-light);
    display: flex;
    justify-content: space-between;
    align-items: center;
}

.shopping-mall-app .result-label {
    font-weight: 700;
    font-size: 1.05em;
    color: var(--primary-blue-dark);
}

.shopping-mall-app .result-value {
    font-size: 1.1em;
    font-weight: 700;
}

.shopping-mall-app .result-item.success .result-value {
    color: var(--success-green);
    /* 성공/흑자 */
}

.shopping-mall-app .result-item.error .result-value {
    color: var(--danger-red);
    /* 오류/적자 */
}

/* --- 쇼핑몰 계산기: 계산 과정 설명 스타일 --- */
.shopping-mall-app .result-item>div {
    display: flex;
    flex-direction: column;
}

.shopping-mall-app .calculation-breakdown {
    display: block;
    font-size: 0.75em;
    color: var(--text-color-light);
    font-style: italic;
    margin-top: 5px;
}
/* ??? ???? ?????? ?¿? ??? (Bootstrap ????? ??u) */
#footer .row {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    margin-right: -15px;
    margin-left: -15px;
}

#footer .footer-contact,
#footer .footer-links {
    flex: 0 0 100%;
    max-width: 100%;
    box-sizing: border-box;
    padding-right: 15px;
    padding-left: 15px;
}

/* PC ??? ??????? 50%?? ?¿? ???? */
@media (min-width: 768px) {
    #footer .footer-contact,
    #footer .footer-links {
        flex: 0 0 50%;
        max-width: 50%;
    }
}

/* ??? ??????? ???? ???? ???? (?ζ??? ????? ??????) */
#footer {
    padding-top: 40px !important;
    padding-bottom: 40px !important;
}

/* Designed by majung ???? ???? ???? */
#footer .footer-bottom {
    flex: 0 0 100%;
    max-width: 100%;
    box-sizing: border-box;
    padding-right: 15px;
    padding-left: 15px;
    text-align: center;
    margin-top: 20px;
}

