#outline-container {
    width: 100%;
    text-align: left;
    color: #fff;
    line-height: 1.6;
    overflow-x: hidden;
    padding: 3em;
    box-sizing: border-box;
}

#outline-title {
    text-align: center;
}

#outline-title h1 {
    font-size: 3em;
    font-weight: 700;
    color: #f0f0f0;
    letter-spacing: -0.03em;
}

.spacer {
    height: 100vh;
    display: flex;
    justify-content: center;
    align-items: center;
    font-size: 2rem;
}

.reveal-wrapper {
    display: grid; /* Grid 컨테이너 */
    grid-template-columns: 1fr 1fr; /* 2열 레이아웃 */
    grid-template-rows: repeat(2, 1fr); /* ✅ 2개의 행이 동일한 높이를 가지도록 설정 */
    gap: 40px; /* 행과 열 사이의 간격 */
    justify-items: center; /* 그리드 아이템 가로 중앙 정렬 (셀 내에서) */
    align-items: stretch; /* ✅ 그리드 아이템을 세로로 꽉 채우도록 설정 */
    height: auto; /* 내용에 따라 높이 자동 조절 */
    min-height: auto; /* 고정 min-height 불필요 */
    padding: 20px; /* 전체 패딩 */
    padding-bottom: 80px; /* 하단 여백 */
    max-width: 1200px; /* 컨테이너 최대 너비 제한 */
    margin: 0 auto; /* 컨테이너 자체를 중앙 정렬 */
}

.reveal {
    position: relative; /* 내부 요소 기준점 */
    opacity: 0;
    transform: translateY(40px);
    transition: all 0.6s ease-out;
    padding: 40px; /* 기존 패딩 유지 */
    width: 100%; /* 그리드 셀 너비에 맞춤 */
    max-width: 500px; /* 최대 너비 제한 */
    height: 100%; /* ✅ 그리드 셀의 높이에 꽉 채우도록 설정 */
    display: flex; /* 내부 콘텐츠를 유연하게 배치하기 위해 flexbox 사용 */
    flex-direction: column; /* 세로 방향으로 정렬 */
    justify-content: flex-start; /* 콘텐츠 상단 정렬 */
    border-radius: 10px;
    background: linear-gradient(180deg, #2d2f30 0%, #111 100%);
    box-shadow: 0px 20px 24px 0px rgba(20, 22, 23, 0.24);
    box-sizing: border-box;
}

.reveal p {
    margin-bottom: 1em;
    line-height: 1.7;
}

.reveal p:first-child {
    font-size: 1.45em;
    font-weight: bold;
    margin-bottom: 1.2em;
    color: #a0d0ff;
    text-shadow: 0 0 5px rgba(160, 208, 255, 0.5);
}

.reveal ul {
    list-style: none;
    padding: 0;
    margin: 0;
}

.reveal ul li {
    margin-bottom: 0.8em;
    padding-left: 1.5em;
    position: relative;
    line-height: 1.6;
}

.reveal ul li::before {
    content: '•';
    color: #a0d0ff;
    font-size: 1.2em;
    position: absolute;
    left: 0;
    top: 0;
}

/* 각 요소 위치 설정 (Grid 기반 - 겹치지 않고 지그재그 배치) */
.reveal.first {
    grid-column: 1; /* 첫 번째 컬럼 */
    grid-row: 1; /* 첫 번째 행 */
    justify-self: end; /* 셀 내에서 오른쪽 정렬 */
}
.reveal.second {
    grid-column: 2; /* 두 번째 컬럼 */
    grid-row: 1; /* 첫 번째 행 */
    justify-self: start; /* 셀 내에서 왼쪽 정렬 */
}
.reveal.third {
    grid-column: 1; /* 첫 번째 컬럼 */
    grid-row: 2; /* 두 번째 행 */
    justify-self: end; /* 셀 내에서 오른쪽 정렬 */
}
.reveal.fourth {
    grid-column: 2; /* 두 번째 컬럼 */
    grid-row: 2; /* 두 번째 행 */
    justify-self: start; /* 셀 내에서 왼쪽 정렬 */
}

.reveal.fifth {
    grid-column: 1;
    grid-row: 3;
    justify-self: end;
}

.reveal.sixth {
    grid-column: 2;
    grid-row: 3;
    justify-self: start;
}

.reveal.seventh {
    grid-column: 1;
    grid-row: 4;
    justify-self: end;
}

.reveal.eighth {
    grid-column: 2;
    grid-row: 4;
    justify-self: start;
}

.reveal.ninth {
    grid-column: 1;
    grid-row: 5;
    justify-self: end;
}

.reveal.tenth {
    grid-column: 2;
    grid-row: 5;
    justify-self: start;
}

.reveal.active {
    opacity: 1;
    transform: translateY(0);
}

.custom-title {
    display: block;
    font-size: 2.3rem;
    line-height: 1.2;
}

.sub-title {
    font-size: 1.4rem;
    color: #81898F;
}

/* 기능 아이콘 블록 정렬 (여백 균형 있게 조정됨) */
.outline-reveal-core-functions {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 24px; /* 상하좌우 여백 동일하게 */
    margin: 1.5em 0;
}

/* 기능 박스 카드 스타일 */
.outline-reveal-function-box {
    flex: 1 1 180px;
    max-width: 200px;
    background: #1d1f20;
    border-radius: 16px;
    padding: 1.4em;
    text-align: center;
    box-shadow: 0 0 12px rgba(160, 208, 255, 0.12);
    transition: transform 0.3s ease, box-shadow 0.3s ease;
}

.outline-reveal-function-box:hover {
    transform: translateY(-5px);
    box-shadow: 0 0 16px rgba(160, 208, 255, 0.4);
}

/* ✅ 아이콘 */
.outline-reveal-icon {
    font-size: 2rem;
    margin-bottom: 0.5em;
    color: #a0d0ff;
    text-shadow: 0 0 5px rgba(160, 208, 255, 0.3);
}

/* ✅ 기능 이름 */
.outline-reveal-label {
    font-size: 1rem;
    color: #fff;
    font-weight: 600;
    line-height: 1.4;
}
.outline-reveal-label span {
    font-size: 0.9rem;
    color: #888;
}

/* ✅ mark 색상 통일 */
.reveal mark {
    background-color: #305070;
    color: #fff;
    padding: 0.1em 0.3em;
    border-radius: 4px;
}

/* 반응형 테이블 */
.responsive-table {
    width: 100%;
    overflow-x: auto;
    margin-top: 1.5em;
    border-radius: 12px;
    background-color: #1b1b1b;
    box-shadow: 0 0 12px rgba(0, 0, 0, 0.3);
}

.responsive-table table {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.95rem;
    table-layout: fixed; /* ✅ 각 열 비율 고정 */
}

.responsive-table thead {
    background-color: #2d2f30;
}

.responsive-table th,
.responsive-table td {
    padding: 12px 16px;
    text-align: center;
    border-bottom: 1px solid #444;
    color: #fff;
}

.responsive-table th {
    color: #a0d0ff;
    font-weight: 600;
    font-size: 1rem;
}

.responsive-table tbody tr:last-child td {
    border-bottom: none;
}

/* 강조된 셀 */
.shortage-box {
    color: #ff4444;
    font-weight: bold;
    border: 2px solid red;
    padding: 6px 10px;
    border-radius: 6px;
    background-color: rgba(255, 68, 68, 0.1);
}

.summary-row td {
    background-color: #333300;
    color: #ffff88;
    font-weight: bold;
}

.summary-content-text {
    font-size: 1.6rem
}

/* 캡션 */
.table-caption {
    text-align: right;
    padding: 10px;
    font-size: 0.85rem;
    color: #aaa;
    font-style: italic;
}

.outline-reveal-emphasis {
    color: #ff5f5f;
    font-weight: 700;
}

.outline-reveal-red {
    color: #ff4c4c;
    font-weight: bold;
}

.outline-reveal-desc-block {
    font-size: 1rem;
    color: #eee;
    line-height: 1.7;
    margin-top: 1em;
}

.outline-reveal-box {
    margin-top: 1.5em;
    padding: 1.2em;
    border: 1px solid #aaa;
    border-radius: 10px;
    background-color: #1c1c1c;
    color: #ddd;
    line-height: 1.6;
    font-size: 0.95rem;
    text-align: center;
}

.outline-reveal-circle-wrapper {
    margin-top: 2em;
    display: flex;
    justify-content: space-between; /* 한 줄 배치 */
    flex-wrap: nowrap; /* 한 줄 유지 */
    gap: 16px;
}

.outline-reveal-circle {
    flex: 1 1 0;
    max-width: 25%; /* ✅ 4개가 한 줄에 들어오도록 제한 */
    display: flex;
    flex-direction: column;
    align-items: center;
}

.outline-reveal-circle-image {
    width: 80px;
    height: 80px;
    border-radius: 50%;
    background-size: cover;
    background-position: center;
    margin-bottom: 0.5em;
    box-shadow: 0 0 10px rgba(255, 255, 255, 0.1);
}

.outline-reveal-circle-label {
    color: #fff;
    font-weight: 600;
    text-align: center;
    font-size: 0.9rem;
    line-height: 1.3;
}
.outline-reveal-circle-label span {
    color: #888;
    font-size: 0.7rem;
}

.outline-reveal-caption {
    margin-top: 1em;
    font-size: 0.8rem;
    color: #999;
    text-align: center;
    font-style: italic;
}

.circle-wrapper {
    position: relative;
    width: 100%;
    max-width: 600px;
    aspect-ratio: 1 / 1; /* 정사각형 유지 */
    margin: 0 auto;
}

.circle-bg {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: 50%;
    height: 50%;
    display: block;
}

/* 공통 아이콘 박스 */
.edge_box {
    position: absolute;
    width: 14vw;  /* 뷰포트 기준 반응형 */
    max-width: 95px;
    aspect-ratio: 1 / 1;
    transform: translate(-50%, -50%);
}

.edge_box img {
    width: 100%;
    height: 100%;
}

/* 원형 배치: 중심 기준 극좌표 배치 */
.edge_box1 { top: 9%;    left: 50%; }
.edge_box2 { top: 20%;   left: 81%; }
.edge_box3 { top: 50%;   left: 91%; }
.edge_box4 { top: 80%;   left: 81%; }
.edge_box5 { top: 92%;   left: 50%; }
.edge_box6 { top: 80%;   left: 18%; }
.edge_box7 { top: 50%;   left: 9%; }
.edge_box8 { top: 20%;   left: 18%; }


.neon-text {
    color: #fff; /* 기본 텍스트 색상 */
    text-align: center; /* 텍스트 정렬 */
    /* 네온 효과의 핵심: 여러 겹의 그림자 - 빛 번짐 약화 버전 */
    text-shadow:
            0 0 2px #fff,    /* 가장 안쪽의 부드러운 흰색 빛 (더 약하게) */
            0 0 4px #fff,
            0 0 8px #fff,
            0 0 12px rgba(0, 255, 170, 0.6),   /* 네온 색상 1 (투명도 더 높게, 번짐 감소) */
            0 0 20px rgba(0, 255, 170, 0.4),
            0 0 25px rgba(0, 255, 170, 0.3),
            0 0 30px rgba(0, 255, 170, 0.2),
            0 0 35px rgba(0, 255, 170, 0.1); /* 가장 바깥 빛은 거의 투명하게 */

    /* 성능 최적화: 브라우저에 이 속성이 변할 것임을 미리 알림 */
    will-change: text-shadow;

    /* 애니메이션 적용: duration을 약간 늘려 부하 경감 */
    animation: neonGlowSofter 2s ease-in-out infinite alternate; /* 키프레임 이름 변경 */
}



/* 네온 깜빡임 효과 애니메이션 키프레임 - 빛 번짐 약화 버전 */
@keyframes neonGlowSofter { /* 키프레임 이름 변경 */
    from {
        text-shadow:
                0 0 2px #fff,
                0 0 4px #fff,
                0 0 8px #fff,
                0 0 12px rgba(0, 255, 170, 0.6),
                0 0 20px rgba(0, 255, 170, 0.4),
                0 0 25px rgba(0, 255, 170, 0.3),
                0 0 30px rgba(0, 255, 170, 0.2),
                0 0 35px rgba(0, 255, 170, 0.1);
    }
    to {
        /* 그림자 강도를 살짝 줄여 깜빡이는 느낌 표현 */
        text-shadow:
                0 0 1px #fff,
                0 0 2px #fff,
                0 0 4px #fff,
                0 0 6px rgba(0, 255, 170, 0.4), /* to 상태도 더 약하게 */
                0 0 10px rgba(0, 255, 170, 0.2),
                0 0 12.5px rgba(0, 255, 170, 0.15),
                0 0 15px rgba(0, 255, 170, 0.1),
                0 0 17.5px rgba(0, 255, 170, 0); /* 끝에서는 거의 사라지도록 */
    }
}

/* 메인 컨테이너 */
.main-container {
    max-width: 1100px;
    margin: 0 auto;
    padding: 20px;
    background-color: #111; /* 어두운 배경 */
    color: #dcdcdc; /* 밝은 텍스트 */
    line-height: 1.7;
    margin-bottom: 50px;
}

/* 헤더 섹션 */
.main-container .header-section {
    text-align: center;
    margin-bottom: 50px;
}

.main-container .header-section h1 {
    font-size: 2.8rem;
    font-weight: 900;
    color: #64b5f6; /* IBM Blue 계열 밝게 */
    margin-bottom: 10px;
}

.main-container .header-section h2 {
    font-size: 1.5rem;
    font-weight: 700;
    color: #a7a7a7; /* 약간 밝은 회색 */
    margin-top: 0;
}

.main-container .header-section h2 strong {
    color: #90caf9; /* 강조 색상 밝게 */
}

/* 콘텐츠 섹션 */
.main-container .content-section {
    display: flex;
    justify-content: space-around;
    gap: 30px;
    flex-wrap: wrap;
}

/* 카드 스타일 */
.main-container .feature-card {
    background-color: #2c2c2c; /* 더 어두운 카드 배경 */
    border-radius: 15px;
    box-shadow: 0 8px 25px rgba(0, 0, 0, 0.3); /* 더 강한 그림자 */
    flex: 1;
    min-width: 300px;
    max-width: 500px;
    overflow: hidden;
    transition: transform 0.3s ease, box-shadow 0.3s ease;
}

/* 카드 이미지 영역 */
.main-container .card-image-placeholder {
    height: 10px;
    background-color: #424242; /* 어두운 배경 */
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.2rem;
    color: #dcdcdc;
    font-weight: 700;
}

/* 카드별 이미지 색상 구분 */
.main-container .online .card-image-placeholder {
    background: linear-gradient(135deg, #42a5f5, #1e88e5);
    color: #fff;
}

.main-container .offline .card-image-placeholder {
    background: linear-gradient(135deg, #ff7043, #f4511e);
    color: #fff;
}

/* 카드 텍스트 콘텐츠 영역 */
.main-container .card-content {
    padding: 30px;
}

.main-container .card-content .tag {
    font-size: 1rem;
    font-weight: 700;
    color: #fff;
    padding: 5px 15px;
    border-radius: 20px;
    display: inline-block;
    margin-bottom: 15px;
}

.main-container .online .tag {
    background-color: #1e88e5;
}

.main-container .offline .tag {
    background-color: #f4511e;
}

.main-container .card-content h3 {
    font-size: 1.5rem;
    margin-top: 0;
    margin-bottom: 15px;
    font-weight: 900;
    color: #fff;
}

.main-container .card-content .quote {
    font-size: 0.9rem;
    font-weight: 700;
    color: #90caf9; /* 강조 색상 밝게 */
    border-left: 4px solid #90caf9;
    padding-left: 15px;
    margin: 20px 0;
    background-color: #383838; /* 약간 어두운 배경 */
    padding-top: 10px;
    padding-bottom: 10px;
}

.main-container .offline .quote {
    color: #f4511e;
    border-left-color: #f4511e;
    background-color: #424242; /* 더 어두운 배경 */
}

.main-container .card-content p {
    font-size: 1rem;
    color: #a7a7a7;
    text-align: left;
}

/* 사용자가 '움직임 줄이기' 설정을 선호할 때 애니메이션 비활성화 */
@media (prefers-reduced-motion: reduce) {
    .neon-text {
        animation: none; /* 애니메이션 제거 */
        /* 애니메이션 없는 상태의 기본 그림자 - 더 약하게 */
        text-shadow:
                0 0 2px #fff,
                0 0 4px #fff,
                0 0 8px #fff,
                0 0 12px rgba(0, 255, 170, 0.6); /* 고정 상태도 투명도 조절 */
    }
}


/* 모바일에서는 일반 플렉스 정렬로 세로 배치 (기존과 동일하게 작동) */
@media screen and (max-width: 1250px) {
    .custom-title {
         font-size: 2rem;
     }

    .sub-title {
        font-size: 1.3rem;
    }
    .reveal-wrapper {
        position: static;
        display: flex;
        flex-direction: column;
        align-items: center;
        gap: 2rem;
        padding: 2rem;
        height: auto;
        min-height: auto;
        max-width: none;
        margin: 0;
    }

    .reveal {
        position: static;
        width: 90%;
        max-width: 600px;
        margin: 0;
        transform: none;
        height: auto; /* 모바일에서는 높이 자동 조절 */
        /* 내부 flexbox 속성도 초기화 또는 적절히 변경 */
        display: block; /* 또는 flex 유지 */
    }

    .reveal.first,
    .reveal.second,
    .reveal.third,
    .reveal.fourth,
    .reveal.fifth,
    .reveal.sixth,
    .reveal.seventh,
    .reveal.eighth,
    .reveal.ninth,
    .reveal.tenth {
        grid-column: auto;
        grid-row: auto;
        justify-self: auto;
    }

    .reveal p:first-child {
        font-size: 1.3em;
    }
}

/* 더 작은 모바일 화면을 위한 추가 미디어 쿼리 */
@media screen and (max-width: 768px) {
    #outline-container {
        padding: 0;
    }

    #outline-title h1 {
        font-size: 2.2em;
    }

    .reveal {
        padding: 25px;
        width: 95%;
    }

    .reveal p:first-child {
        font-size: 1.2em;
    }

    .custom-title {
        font-size: 1.4rem;
    }

    .sub-title {
        font-size: 1.2rem;
    }

    .responsive-table table {
        font-size: 0.85rem;
        min-width: 100%;
    }

    .responsive-table th,
    .responsive-table td {
        font-size: 0.9rem;
        padding: 10px 12px;
    }

    .outline-reveal-circle-image {
        width: 55px;
        height: 55px;
    }

    .outline-reveal-box {
        font-size: 0.62rem;
    }

    .summary-content-text {
        font-size: 0.95rem
    }

    #main-container h1 {
        font-size: 1.5rem;
    }

    #main-container h2 {
        font-size: 1.3rem;
    }

    #main-container h3 {
        font-size: 0.8rem;
    }

    .main-container .content-section {
        flex-direction: column;
        align-items: center;
    }

    .main-container .feature-card {
        width: 100%;
        max-width: 90%;
    }

    .main-container .card-content .quote {
        font-size: 0.75rem;
    }
}

@media (max-width: 380px) {

    #main-container h1 {
        font-size: 1.3rem;
    }

    #main-container h3 {
        font-size: 0.7rem;
    }

    .reveal.second p:first-child,
    .reveal.eighth p:first-child {
        font-size: 1.2rem;
    }

    .reveal p:first-child {
        font-size: 1.5rem;
    }

    .intro-tabs h1 {
        font-size: 1.5rem;
        margin-top: -8px;
    }

    .intro-glass-text h2 {
        font-size: 1.3rem;
    }

    .summary-title .arrow {
        display: none;
    }

    .summary-content-text {
        display: block;
        font-size: 1.5rem;
    }

    .summary-title .final-price {
        display: block;
    }

    .sixth .outline-reveal-box {
        font-size: 1rem;
    }

    .xs-font {
        font-size: 0.9rem;
    }
    .xxs-font {
        font-size: 0.7rem;
    }

    .main-container .header-section h1 {
        font-size: 2rem;
    }

    .main-container .header-section h2 {
        font-size: 1.2rem;
    }

    .main-container .content-section {
        flex-direction: column;
        align-items: center;
    }

    .main-container .feature-card {
        width: 100%;
        max-width: 90%;
    }
}